From 5044e953df6e6bc058f8c6bf2eb9e81e4889a9b1 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Tue, 14 Apr 2026 22:29:29 +0000 Subject: [PATCH 001/327] Tests: Rename some oEmbed test classes as per the naming conventions. Follow-up to [37708], [37892], [62224], [62227]. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62234 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/oembed/WpEmbed.php | 2 +- tests/phpunit/tests/oembed/wpOembed.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/phpunit/tests/oembed/WpEmbed.php b/tests/phpunit/tests/oembed/WpEmbed.php index 4c77e904399db..42d9c9e0f4ed9 100644 --- a/tests/phpunit/tests/oembed/WpEmbed.php +++ b/tests/phpunit/tests/oembed/WpEmbed.php @@ -5,7 +5,7 @@ * * @coversDefaultClass WP_Embed */ -class Tests_WP_Embed extends WP_UnitTestCase { +class Tests_oEmbed_WpEmbed extends WP_UnitTestCase { /** * @var WP_Embed */ diff --git a/tests/phpunit/tests/oembed/wpOembed.php b/tests/phpunit/tests/oembed/wpOembed.php index 288d1742d373e..bc10c2a10a7eb 100644 --- a/tests/phpunit/tests/oembed/wpOembed.php +++ b/tests/phpunit/tests/oembed/wpOembed.php @@ -5,7 +5,7 @@ * * @coversDefaultClass WP_oEmbed */ -class Tests_WP_oEmbed extends WP_UnitTestCase { +class Tests_oEmbed_wpOembed extends WP_UnitTestCase { /** * @var WP_oEmbed */ From bf4c17409433cc14a37aa0ad7bf10982a4b8ebe6 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Wed, 15 Apr 2026 22:27:45 +0000 Subject: [PATCH 002/327] Tests: Add missing `@covers` tags for some multisite tests. Follow-up to [62213], [62218], [62222]. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62237 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/multisite/getBlogDetails.php | 2 ++ tests/phpunit/tests/multisite/updateBlogDetails.php | 2 ++ tests/phpunit/tests/multisite/updateBlogStatus.php | 2 ++ 3 files changed, 6 insertions(+) diff --git a/tests/phpunit/tests/multisite/getBlogDetails.php b/tests/phpunit/tests/multisite/getBlogDetails.php index 5a374d43dc69a..19a8520c2c887 100644 --- a/tests/phpunit/tests/multisite/getBlogDetails.php +++ b/tests/phpunit/tests/multisite/getBlogDetails.php @@ -5,6 +5,8 @@ * @group ms-required * @group ms-site * @group multisite + * + * @covers ::get_blog_details */ class Tests_Multisite_GetBlogDetails extends WP_UnitTestCase { diff --git a/tests/phpunit/tests/multisite/updateBlogDetails.php b/tests/phpunit/tests/multisite/updateBlogDetails.php index 8800e66818684..62c0f7b355cd7 100644 --- a/tests/phpunit/tests/multisite/updateBlogDetails.php +++ b/tests/phpunit/tests/multisite/updateBlogDetails.php @@ -4,6 +4,8 @@ * @group ms-required * @group ms-site * @group multisite + * + * @covers ::update_blog_details */ class Tests_Multisite_UpdateBlogDetails extends WP_UnitTestCase { diff --git a/tests/phpunit/tests/multisite/updateBlogStatus.php b/tests/phpunit/tests/multisite/updateBlogStatus.php index 069eddd984abb..20cd90307fd34 100644 --- a/tests/phpunit/tests/multisite/updateBlogStatus.php +++ b/tests/phpunit/tests/multisite/updateBlogStatus.php @@ -4,6 +4,8 @@ * @group ms-required * @group ms-site * @group multisite + * + * @covers ::update_blog_status */ class Tests_Multisite_UpdateBlogStatus extends WP_UnitTestCase { From 42388b5720be7aaa3e79b653cc46c92a3d5c75b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= Date: Thu, 16 Apr 2026 07:22:23 +0000 Subject: [PATCH 003/327] Abilities API: Catch exceptions thrown by ability callbacks and return WP_Error. Wraps `invoke_callback()` in a try/catch so that exceptions thrown by execute or permission callbacks are converted to a `WP_Error` with the `ability_callback_exception` code instead of propagating as uncaught throwables. Developed in: https://github.com/WordPress/wordpress-develop/pull/11544 Props priyankagusani, jamesgiroux, jeffpaul, dkotter, adamsilverstein, justlevine, jorbin, pavanpatil1. Fixes #65058. git-svn-id: https://develop.svn.wordpress.org/trunk@62238 602fd350-edb4-49c9-b593-d223f7449a82 --- .../abilities-api/class-wp-ability.php | 16 ++++++- .../phpunit/tests/abilities-api/wpAbility.php | 48 +++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/abilities-api/class-wp-ability.php b/src/wp-includes/abilities-api/class-wp-ability.php index 967f1641156b0..cc01cc274c143 100644 --- a/src/wp-includes/abilities-api/class-wp-ability.php +++ b/src/wp-includes/abilities-api/class-wp-ability.php @@ -502,7 +502,7 @@ public function validate_input( $input = null ) { * * @param callable $callback The callable to invoke. * @param mixed $input Optional. The input data for the ability. Default `null`. - * @return mixed The result of the callable execution. + * @return mixed The result of the callable execution, or a `WP_Error` if the callback threw. */ protected function invoke_callback( callable $callback, $input = null ) { $args = array(); @@ -510,7 +510,19 @@ protected function invoke_callback( callable $callback, $input = null ) { $args[] = $input; } - return $callback( ...$args ); + try { + return $callback( ...$args ); + } catch ( Throwable $e ) { + return new WP_Error( + 'ability_callback_exception', + sprintf( + /* translators: 1: Ability name, 2: Exception message. */ + __( 'Ability "%1$s" callback threw an exception: %2$s' ), + esc_html( $this->name ), + esc_html( $e->getMessage() ) + ) + ); + } } /** diff --git a/tests/phpunit/tests/abilities-api/wpAbility.php b/tests/phpunit/tests/abilities-api/wpAbility.php index 73a5fbf17a9ef..aea2c09624929 100644 --- a/tests/phpunit/tests/abilities-api/wpAbility.php +++ b/tests/phpunit/tests/abilities-api/wpAbility.php @@ -497,6 +497,54 @@ public function test_execute_no_input() { $this->assertSame( 42, $ability->execute() ); } + /** + * Tests that an exception thrown by the execute callback is converted to a WP_Error + * instead of being propagated as an uncaught throwable. + * + * @ticket 65058 + */ + public function test_execute_catches_callback_exception() { + $args = array_merge( + self::$test_ability_properties, + array( + 'execute_callback' => static function (): int { + throw new RuntimeException( 'boom' ); + }, + ) + ); + + $ability = new WP_Ability( self::$test_ability_name, $args ); + $result = $ability->execute(); + + $this->assertWPError( $result, 'Ability::execute() should return WP_Error when the callback throws.' ); + $this->assertSame( 'ability_callback_exception', $result->get_error_code() ); + $this->assertStringContainsString( 'boom', $result->get_error_message() ); + } + + /** + * Tests that an exception thrown by the permission callback is converted to a WP_Error + * instead of being propagated as an uncaught throwable. + * + * @ticket 65058 + */ + public function test_check_permissions_catches_callback_exception() { + $args = array_merge( + self::$test_ability_properties, + array( + 'permission_callback' => static function (): bool { + throw new RuntimeException( 'permission exploded' ); + }, + ) + ); + + $ability = new WP_Ability( self::$test_ability_name, $args ); + $result = $ability->check_permissions(); + + $this->assertWPError( $result, 'Ability::check_permissions() should return WP_Error when the callback throws.' ); + $this->assertSame( 'ability_callback_exception', $result->get_error_code() ); + $this->assertStringContainsString( 'permission exploded', $result->get_error_message() ); + } + /** * Tests that before_execute_ability action is fired with correct parameters. * From 9f8a3b1e1893f85fabc17b0d2b6d96e6bdb92208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= Date: Thu, 16 Apr 2026 07:37:31 +0000 Subject: [PATCH 004/327] AI: Prevent `wp_supports_ai` filter from overriding the `WP_AI_SUPPORT` constant. When `WP_AI_SUPPORT` is explicitly set to `false`, `wp_supports_ai()` now returns early before the filter runs. This ensures the site owner's explicit preference to disable AI cannot be overridden by a plugin via the `wp_supports_ai` filter. The filter default is now always `true`, since the constant check happens beforehand. Developed in: https://github.com/WordPress/wordpress-develop/pull/11295 Follow-up to [62067]. Props justlevine, westonruter, gziolo, mindctrl, adamsilverstein, johnjamesjacoby, ahortin, nilambar, ozgursar, audrasjb, jeffpaul. Fixes #64706. git-svn-id: https://develop.svn.wordpress.org/trunk@62239 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/ai-client.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/ai-client.php b/src/wp-includes/ai-client.php index 818e1dbaedcde..4fc20166fb8bb 100644 --- a/src/wp-includes/ai-client.php +++ b/src/wp-includes/ai-client.php @@ -17,20 +17,22 @@ * @return bool Whether AI features are supported. */ function wp_supports_ai(): bool { - $is_enabled = defined( 'WP_AI_SUPPORT' ) ? WP_AI_SUPPORT : true; + // Return early if AI is disabled by the current environment. + if ( defined( 'WP_AI_SUPPORT' ) && ! WP_AI_SUPPORT ) { + return false; + } /** - * Filters whether the current request should use AI. + * Filters whether the current request can use AI. * * This allows plugins and 3rd-party code to disable AI features on a per-request basis, or to even override explicit * preferences defined by the site owner. * * @since 7.0.0 * - * @param bool $is_enabled Whether the current request should use AI. Default to WP_AI_SUPPORT constant, or true if - * the constant is not defined. + * @param bool $is_enabled Whether AI is available. Default to true. */ - return (bool) apply_filters( 'wp_supports_ai', $is_enabled ); + return (bool) apply_filters( 'wp_supports_ai', true ); } /** From bccb9c1143d15fd00da54059269aa2cc3dbd1665 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Thu, 16 Apr 2026 18:42:53 +0000 Subject: [PATCH 005/327] Tests: Remove `external-http` group from a `get_theme_feature_list()` test. This particular test checks the list of theme features hardcoded into Core and does not perform an external API request. Follow-up to [39906]. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62243 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/admin/includesTheme.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/phpunit/tests/admin/includesTheme.php b/tests/phpunit/tests/admin/includesTheme.php index ed90cf9514ae5..446c048bcf18e 100644 --- a/tests/phpunit/tests/admin/includesTheme.php +++ b/tests/phpunit/tests/admin/includesTheme.php @@ -241,7 +241,6 @@ public function test_get_theme_featured_list_api() { * * Differences in the structure can also trigger failure by causing PHP notices/warnings. * - * @group external-http * @ticket 28121 */ public function test_get_theme_featured_list_hardcoded() { From 7f836430e47c74df312cdf4af45ad32a7021b41e Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Fri, 17 Apr 2026 19:50:27 +0000 Subject: [PATCH 006/327] Tests: Add missing `@covers` tags for some rewrite tests. Props sagardeshmukh. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62244 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/rewrite/addRewriteEndpoint.php | 2 ++ tests/phpunit/tests/rewrite/addRewriteRule.php | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tests/phpunit/tests/rewrite/addRewriteEndpoint.php b/tests/phpunit/tests/rewrite/addRewriteEndpoint.php index 7b3ada5febe7d..6527f32929917 100644 --- a/tests/phpunit/tests/rewrite/addRewriteEndpoint.php +++ b/tests/phpunit/tests/rewrite/addRewriteEndpoint.php @@ -2,6 +2,8 @@ /** * @group rewrite + * + * @covers ::add_rewrite_endpoint */ class Tests_Rewrite_AddRewriteEndpoint extends WP_UnitTestCase { private $qvs; diff --git a/tests/phpunit/tests/rewrite/addRewriteRule.php b/tests/phpunit/tests/rewrite/addRewriteRule.php index 02efc7bd0aa37..d667f58ceafa9 100644 --- a/tests/phpunit/tests/rewrite/addRewriteRule.php +++ b/tests/phpunit/tests/rewrite/addRewriteRule.php @@ -2,6 +2,8 @@ /** * @group rewrite + * + * @covers ::add_rewrite_rule */ class Tests_Rewrite_AddRewriteRule extends WP_UnitTestCase { From c31e5ef785567be46f3be35e4bf323836db8dfcb Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sat, 18 Apr 2026 16:45:54 +0000 Subject: [PATCH 007/327] Tests: Use a data provider in a `WP_Block_Type_Registry` test for invalid block names. Includes adding missing `@covers` tags. Follow-up to [43742], [51491]. Props sagardeshmukh. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62245 602fd350-edb4-49c9-b593-d223f7449a82 --- .../tests/blocks/wpBlockTypeRegistry.php | 70 +++++++++---------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/tests/phpunit/tests/blocks/wpBlockTypeRegistry.php b/tests/phpunit/tests/blocks/wpBlockTypeRegistry.php index c97bdc95d43a1..97f35f2e8ac7a 100644 --- a/tests/phpunit/tests/blocks/wpBlockTypeRegistry.php +++ b/tests/phpunit/tests/blocks/wpBlockTypeRegistry.php @@ -7,6 +7,8 @@ * @since 5.0.0 * * @group blocks + * + * @coversDefaultClass WP_Block_Type_Registry */ class Tests_Blocks_wpBlockTypeRegistry extends WP_UnitTestCase { @@ -41,57 +43,42 @@ public function tear_down() { } /** - * Should reject numbers + * Should reject invalid block names. * * @ticket 45097 * - * @expectedIncorrectUsage WP_Block_Type_Registry::register - */ - public function test_invalid_non_string_names() { - $result = $this->registry->register( 1, array() ); - $this->assertFalse( $result ); - } - - /** - * Should reject blocks without a namespace + * @covers ::register * - * @ticket 45097 + * @dataProvider data_invalid_block_names * * @expectedIncorrectUsage WP_Block_Type_Registry::register */ - public function test_invalid_names_without_namespace() { - $result = $this->registry->register( 'paragraph', array() ); + public function test_invalid_block_names( $name ) { + $result = $this->registry->register( $name, array() ); $this->assertFalse( $result ); } /** - * Should reject blocks with invalid characters - * - * @ticket 45097 + * Data provider for test_invalid_block_names(). * - * @expectedIncorrectUsage WP_Block_Type_Registry::register + * @return array */ - public function test_invalid_characters() { - $result = $this->registry->register( 'still/_doing_it_wrong', array() ); - $this->assertFalse( $result ); + public function data_invalid_block_names(): array { + return array( + 'non-string name' => array( 1 ), + 'no namespace' => array( 'paragraph' ), + 'invalid characters' => array( 'still/_doing_it_wrong' ), + 'uppercase characters' => array( 'Core/Paragraph' ), + ); } /** - * Should reject blocks with uppercase characters + * Should accept valid block names. * * @ticket 45097 * - * @expectedIncorrectUsage WP_Block_Type_Registry::register - */ - public function test_uppercase_characters() { - $result = $this->registry->register( 'Core/Paragraph', array() ); - $this->assertFalse( $result ); - } - - /** - * Should accept valid block names - * - * @ticket 45097 + * @covers ::register + * @covers ::get_registered */ public function test_register_block_type() { $name = 'core/paragraph'; @@ -106,10 +93,12 @@ public function test_register_block_type() { } /** - * Should fail to re-register the same block + * Should fail to re-register the same block. * * @ticket 45097 * + * @covers ::register + * * @expectedIncorrectUsage WP_Block_Type_Registry::register */ public function test_register_block_type_twice() { @@ -125,9 +114,11 @@ public function test_register_block_type_twice() { } /** - * Should accept a WP_Block_Type instance + * Should accept a WP_Block_Type instance. * * @ticket 45097 + * + * @covers ::register */ public function test_register_block_type_instance() { $block_type = new WP_Fake_Block_Type( 'core/fake' ); @@ -137,10 +128,12 @@ public function test_register_block_type_instance() { } /** - * Unregistering should fail if a block is not registered + * Unregistering should fail if a block is not registered. * * @ticket 45097 * + * @covers ::unregister + * * @expectedIncorrectUsage WP_Block_Type_Registry::unregister */ public function test_unregister_not_registered_block() { @@ -149,9 +142,12 @@ public function test_unregister_not_registered_block() { } /** - * Should unregister existing blocks + * Should unregister existing blocks. * * @ticket 45097 + * + * @covers ::unregister + * @covers ::is_registered */ public function test_unregister_block_type() { $name = 'core/paragraph'; @@ -168,6 +164,8 @@ public function test_unregister_block_type() { /** * @ticket 45097 + * + * @covers ::get_all_registered */ public function test_get_all_registered() { $names = array( 'core/paragraph', 'core/image', 'core/blockquote' ); From 047ef806c329a11ba6357f1a650f04f3703e3a44 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sun, 19 Apr 2026 22:24:22 +0000 Subject: [PATCH 008/327] Tests: Add missing `@covers` tags for some rewrite tests. Follow-up to [36181], [62244]. Props sagardeshmukh. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62246 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/rewrite/permastructs.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/phpunit/tests/rewrite/permastructs.php b/tests/phpunit/tests/rewrite/permastructs.php index 4e2bc0594b216..ce98e06a68bb3 100644 --- a/tests/phpunit/tests/rewrite/permastructs.php +++ b/tests/phpunit/tests/rewrite/permastructs.php @@ -2,6 +2,9 @@ /** * @group rewrite + * + * @covers ::add_permastruct + * @covers ::remove_permastruct */ class Tests_Rewrite_Permastructs extends WP_UnitTestCase { From 67094eec602b813723a5f96c66c6169cf559477b Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Mon, 20 Apr 2026 23:11:32 +0000 Subject: [PATCH 009/327] Tests: Use `assertSame()` in `get_adjacent_post()` tests. This ensures that not only the return values match the expected results, but also that their type is the same. Going forward, stricter type checking by using `assertSame()` should generally be preferred to `assertEquals()` where appropriate, to make the tests more reliable. Follow-up to [60733], [61066]. Props sagardeshmukh. See #64324. git-svn-id: https://develop.svn.wordpress.org/trunk@62247 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/link/getAdjacentPost.php | 34 ++++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tests/phpunit/tests/link/getAdjacentPost.php b/tests/phpunit/tests/link/getAdjacentPost.php index 7fdd06ec75ead..e10ff82c099dc 100644 --- a/tests/phpunit/tests/link/getAdjacentPost.php +++ b/tests/phpunit/tests/link/getAdjacentPost.php @@ -477,14 +477,14 @@ public function test_get_adjacent_post_term_array_processing_order() { // Should find post_one (previous post that shares term1). $this->assertInstanceOf( WP_Post::class, $result ); - $this->assertEquals( $post1_id, $result->ID ); + $this->assertSame( $post1_id, $result->ID ); // Test next post. $result = get_adjacent_post( true, array( $term2_id ), false, 'wptests_tax' ); // Should find post_three (next post that shares term1). $this->assertInstanceOf( WP_Post::class, $result ); - $this->assertEquals( $post3_id, $result->ID ); + $this->assertSame( $post3_id, $result->ID ); } /** @@ -614,12 +614,12 @@ public function test_get_adjacent_post_with_identical_dates() { // Previous post should be the 2nd post (lower ID, same date). $previous = get_adjacent_post( false, '', true ); $this->assertInstanceOf( 'WP_Post', $previous ); - $this->assertEquals( $post_ids[1], $previous->ID ); + $this->assertSame( $post_ids[1], $previous->ID ); // Next post should be the 4th post (higher ID, same date). $next = get_adjacent_post( false, '', false ); $this->assertInstanceOf( 'WP_Post', $next ); - $this->assertEquals( $post_ids[3], $next->ID ); + $this->assertSame( $post_ids[3], $next->ID ); } /** @@ -661,12 +661,12 @@ public function test_get_adjacent_post_mixed_dates_with_identical_groups() { // Previous should be the early post (different date). $previous = get_adjacent_post( false, '', true ); $this->assertInstanceOf( 'WP_Post', $previous ); - $this->assertEquals( $post_early, $previous->ID ); + $this->assertSame( $post_early, $previous->ID ); // Next should be the second identical post (same date, higher ID). $next = get_adjacent_post( false, '', false ); $this->assertInstanceOf( 'WP_Post', $next ); - $this->assertEquals( $post_ids[1], $next->ID ); + $this->assertSame( $post_ids[1], $next->ID ); // Test from middle identical post. $this->go_to( get_permalink( $post_ids[1] ) ); @@ -674,12 +674,12 @@ public function test_get_adjacent_post_mixed_dates_with_identical_groups() { // Previous should be the first identical post (same date, lower ID). $previous = get_adjacent_post( false, '', true ); $this->assertInstanceOf( 'WP_Post', $previous ); - $this->assertEquals( $post_ids[0], $previous->ID ); + $this->assertSame( $post_ids[0], $previous->ID ); // Next should be the third identical post (same date, higher ID). $next = get_adjacent_post( false, '', false ); $this->assertInstanceOf( 'WP_Post', $next ); - $this->assertEquals( $post_ids[2], $next->ID ); + $this->assertSame( $post_ids[2], $next->ID ); // Test from last identical post. $this->go_to( get_permalink( $post_ids[2] ) ); @@ -687,12 +687,12 @@ public function test_get_adjacent_post_mixed_dates_with_identical_groups() { // Previous should be the second identical post (same date, lower ID). $previous = get_adjacent_post( false, '', true ); $this->assertInstanceOf( 'WP_Post', $previous ); - $this->assertEquals( $post_ids[1], $previous->ID ); + $this->assertSame( $post_ids[1], $previous->ID ); // Next should be the late post (different date). $next = get_adjacent_post( false, '', false ); $this->assertInstanceOf( 'WP_Post', $next ); - $this->assertEquals( $post_late, $next->ID ); + $this->assertSame( $post_late, $next->ID ); } /** @@ -719,26 +719,26 @@ public function test_get_adjacent_post_navigation_through_identical_dates() { // From post 1, next should be post 2. $next = get_adjacent_post( false, '', false ); - $this->assertEquals( $post_ids[1], $next->ID ); + $this->assertSame( $post_ids[1], $next->ID ); // From post 2, previous should be post 1, next should be post 3. $this->go_to( get_permalink( $post_ids[1] ) ); $previous = get_adjacent_post( false, '', true ); - $this->assertEquals( $post_ids[0], $previous->ID ); + $this->assertSame( $post_ids[0], $previous->ID ); $next = get_adjacent_post( false, '', false ); - $this->assertEquals( $post_ids[2], $next->ID ); + $this->assertSame( $post_ids[2], $next->ID ); // From post 3, previous should be post 2, next should be post 4. $this->go_to( get_permalink( $post_ids[2] ) ); $previous = get_adjacent_post( false, '', true ); - $this->assertEquals( $post_ids[1], $previous->ID ); + $this->assertSame( $post_ids[1], $previous->ID ); $next = get_adjacent_post( false, '', false ); - $this->assertEquals( $post_ids[3], $next->ID ); + $this->assertSame( $post_ids[3], $next->ID ); // From post 4, previous should be post 3. $this->go_to( get_permalink( $post_ids[3] ) ); $previous = get_adjacent_post( false, '', true ); - $this->assertEquals( $post_ids[2], $previous->ID ); + $this->assertSame( $post_ids[2], $previous->ID ); } /** @@ -777,6 +777,6 @@ public function test_get_adjacent_post_identical_dates_with_category() { $next = get_adjacent_post( true, '', false, 'category' ); $this->assertInstanceOf( 'WP_Post', $next ); - $this->assertEquals( $post_ids[3], $next->ID ); // Post 4 (in category) + $this->assertSame( $post_ids[3], $next->ID ); // Post 4 (in category) } } From fc65d677c90f8799dd66c7e949c0495b1924cba0 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Tue, 21 Apr 2026 12:33:43 +0000 Subject: [PATCH 010/327] Tests: Use `assertSame()` in `WP_AI_Client_Prompt_Builder` tests. This ensures that not only the return values match the expected results, but also that their type is the same. Going forward, stricter type checking by using `assertSame()` should generally be preferred to `assertEquals()` where appropriate, to make the tests more reliable. Follow-up to [61700]. Props sagardeshmukh. See #64324. git-svn-id: https://develop.svn.wordpress.org/trunk@62248 602fd350-edb4-49c9-b593-d223f7449a82 --- .../ai-client/wpAiClientPromptBuilder.php | 156 +++++++++--------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php b/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php index 3630b0bab403a..3a781ccc73751 100644 --- a/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php +++ b/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php @@ -188,7 +188,7 @@ public function test_constructor_sets_default_request_timeout() { $request_options = $this->get_wrapped_prompt_builder_property_value( $builder, 'requestOptions' ); $this->assertInstanceOf( RequestOptions::class, $request_options ); - $this->assertEquals( 30, $request_options->getTimeout() ); + $this->assertSame( 30.0, $request_options->getTimeout() ); } /** @@ -210,7 +210,7 @@ static function () { $request_options = $this->get_wrapped_prompt_builder_property_value( $builder, 'requestOptions' ); $this->assertInstanceOf( RequestOptions::class, $request_options ); - $this->assertEquals( 45, $request_options->getTimeout() ); + $this->assertSame( 45.0, $request_options->getTimeout() ); } /** @@ -401,7 +401,7 @@ public function test_constructor_with_string_prompt() { $this->assertCount( 1, $messages ); $this->assertInstanceOf( Message::class, $messages[0] ); - $this->assertEquals( 'Hello, world!', $messages[0]->getParts()[0]->getText() ); + $this->assertSame( 'Hello, world!', $messages[0]->getParts()[0]->getText() ); } /** @@ -418,7 +418,7 @@ public function test_constructor_with_message_part_prompt() { $this->assertCount( 1, $messages ); $this->assertInstanceOf( Message::class, $messages[0] ); - $this->assertEquals( 'Test message', $messages[0]->getParts()[0]->getText() ); + $this->assertSame( 'Test message', $messages[0]->getParts()[0]->getText() ); } /** @@ -479,7 +479,7 @@ public function test_constructor_with_message_array_shape() { $this->assertCount( 1, $messages ); $this->assertInstanceOf( Message::class, $messages[0] ); - $this->assertEquals( 'Hello from array', $messages[0]->getParts()[0]->getText() ); + $this->assertSame( 'Hello from array', $messages[0]->getParts()[0]->getText() ); } /** @@ -497,7 +497,7 @@ public function test_with_text() { $messages = $this->get_wrapped_prompt_builder_property_value( $builder, 'messages' ); $this->assertCount( 1, $messages ); - $this->assertEquals( 'Some text', $messages[0]->getParts()[0]->getText() ); + $this->assertSame( 'Some text', $messages[0]->getParts()[0]->getText() ); } /** @@ -515,8 +515,8 @@ public function test_with_text_appends_to_existing_user_message() { $this->assertCount( 1, $messages ); $parts = $messages[0]->getParts(); $this->assertCount( 2, $parts ); - $this->assertEquals( 'Initial text', $parts[0]->getText() ); - $this->assertEquals( ' Additional text', $parts[1]->getText() ); + $this->assertSame( 'Initial text', $parts[0]->getText() ); + $this->assertSame( ' Additional text', $parts[1]->getText() ); } /** @@ -537,8 +537,8 @@ public function test_with_inline_file() { $this->assertCount( 1, $messages ); $file = $messages[0]->getParts()[0]->getFile(); $this->assertInstanceOf( File::class, $file ); - $this->assertEquals( 'data:image/png;base64,' . $base64, $file->getDataUri() ); - $this->assertEquals( 'image/png', $file->getMimeType() ); + $this->assertSame( 'data:image/png;base64,' . $base64, $file->getDataUri() ); + $this->assertSame( 'image/png', $file->getMimeType() ); } /** @@ -558,8 +558,8 @@ public function test_with_remote_file() { $this->assertCount( 1, $messages ); $file = $messages[0]->getParts()[0]->getFile(); $this->assertInstanceOf( File::class, $file ); - $this->assertEquals( 'https://example.com/image.jpg', $file->getUrl() ); - $this->assertEquals( 'image/jpeg', $file->getMimeType() ); + $this->assertSame( 'https://example.com/image.jpg', $file->getUrl() ); + $this->assertSame( 'image/jpeg', $file->getMimeType() ); } /** @@ -580,7 +580,7 @@ public function test_with_inline_file_data_uri() { $this->assertCount( 1, $messages ); $file = $messages[0]->getParts()[0]->getFile(); $this->assertInstanceOf( File::class, $file ); - $this->assertEquals( 'image/jpeg', $file->getMimeType() ); + $this->assertSame( 'image/jpeg', $file->getMimeType() ); } /** @@ -600,8 +600,8 @@ public function test_with_remote_file_without_mime_type() { $this->assertCount( 1, $messages ); $file = $messages[0]->getParts()[0]->getFile(); $this->assertInstanceOf( File::class, $file ); - $this->assertEquals( 'https://example.com/audio.mp3', $file->getUrl() ); - $this->assertEquals( 'audio/mpeg', $file->getMimeType() ); + $this->assertSame( 'https://example.com/audio.mp3', $file->getUrl() ); + $this->assertSame( 'audio/mpeg', $file->getMimeType() ); } /** @@ -644,9 +644,9 @@ public function test_with_message_parts() { $this->assertCount( 1, $messages ); $parts = $messages[0]->getParts(); $this->assertCount( 3, $parts ); - $this->assertEquals( 'Part 1', $parts[0]->getText() ); - $this->assertEquals( 'Part 2', $parts[1]->getText() ); - $this->assertEquals( 'Part 3', $parts[2]->getText() ); + $this->assertSame( 'Part 1', $parts[0]->getText() ); + $this->assertSame( 'Part 2', $parts[1]->getText() ); + $this->assertSame( 'Part 3', $parts[2]->getText() ); } /** @@ -670,9 +670,9 @@ public function test_with_history() { $messages = $this->get_wrapped_prompt_builder_property_value( $builder, 'messages' ); $this->assertCount( 3, $messages ); - $this->assertEquals( 'User 1', $messages[0]->getParts()[0]->getText() ); - $this->assertEquals( 'Model 1', $messages[1]->getParts()[0]->getText() ); - $this->assertEquals( 'User 2', $messages[2]->getParts()[0]->getText() ); + $this->assertSame( 'User 1', $messages[0]->getParts()[0]->getText() ); + $this->assertSame( 'Model 1', $messages[1]->getParts()[0]->getText() ); + $this->assertSame( 'User 2', $messages[2]->getParts()[0]->getText() ); } /** @@ -710,9 +710,9 @@ public function test_constructor_with_string_parts_list() { $this->assertInstanceOf( Message::class, $messages[0] ); $parts = $messages[0]->getParts(); $this->assertCount( 3, $parts ); - $this->assertEquals( 'Part 1', $parts[0]->getText() ); - $this->assertEquals( 'Part 2', $parts[1]->getText() ); - $this->assertEquals( 'Part 3', $parts[2]->getText() ); + $this->assertSame( 'Part 1', $parts[0]->getText() ); + $this->assertSame( 'Part 2', $parts[1]->getText() ); + $this->assertSame( 'Part 3', $parts[2]->getText() ); } /** @@ -735,9 +735,9 @@ public function test_constructor_with_mixed_parts_list() { $this->assertCount( 1, $messages ); $parts = $messages[0]->getParts(); $this->assertCount( 3, $parts ); - $this->assertEquals( 'String part', $parts[0]->getText() ); - $this->assertEquals( 'Part 1', $parts[1]->getText() ); - $this->assertEquals( 'Part 2', $parts[2]->getText() ); + $this->assertSame( 'String part', $parts[0]->getText() ); + $this->assertSame( 'Part 1', $parts[1]->getText() ); + $this->assertSame( 'Part 2', $parts[2]->getText() ); } /** @@ -775,13 +775,13 @@ public function test_method_chaining() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 'Be helpful', $config->getSystemInstruction() ); - $this->assertEquals( 500, $config->getMaxTokens() ); - $this->assertEquals( 0.8, $config->getTemperature() ); - $this->assertEquals( 0.95, $config->getTopP() ); - $this->assertEquals( 50, $config->getTopK() ); - $this->assertEquals( 2, $config->getCandidateCount() ); - $this->assertEquals( 'application/json', $config->getOutputMimeType() ); + $this->assertSame( 'Be helpful', $config->getSystemInstruction() ); + $this->assertSame( 500, $config->getMaxTokens() ); + $this->assertSame( 0.8, $config->getTemperature() ); + $this->assertSame( 0.95, $config->getTopP() ); + $this->assertSame( 50, $config->getTopK() ); + $this->assertSame( 2, $config->getCandidateCount() ); + $this->assertSame( 'application/json', $config->getOutputMimeType() ); } /** @@ -1001,11 +1001,11 @@ public function test_using_model_config() { /** @var ModelConfig $merged_config */ $merged_config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 'Builder instruction', $merged_config->getSystemInstruction() ); - $this->assertEquals( 500, $merged_config->getMaxTokens() ); - $this->assertEquals( 0.5, $merged_config->getTemperature() ); - $this->assertEquals( 0.9, $merged_config->getTopP() ); - $this->assertEquals( 40, $merged_config->getTopK() ); + $this->assertSame( 'Builder instruction', $merged_config->getSystemInstruction() ); + $this->assertSame( 500, $merged_config->getMaxTokens() ); + $this->assertSame( 0.5, $merged_config->getTemperature() ); + $this->assertSame( 0.9, $merged_config->getTopP() ); + $this->assertSame( 40, $merged_config->getTopK() ); } /** @@ -1028,22 +1028,22 @@ public function test_using_model_config_with_custom_options() { $this->assertArrayHasKey( 'stopSequences', $custom_options ); $this->assertIsArray( $custom_options['stopSequences'] ); - $this->assertEquals( array( 'CONFIG_STOP' ), $custom_options['stopSequences'] ); + $this->assertSame( array( 'CONFIG_STOP' ), $custom_options['stopSequences'] ); $this->assertArrayHasKey( 'otherOption', $custom_options ); - $this->assertEquals( 'value', $custom_options['otherOption'] ); + $this->assertSame( 'value', $custom_options['otherOption'] ); $builder->using_stop_sequences( 'STOP' ); /** @var ModelConfig $merged_config */ $merged_config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( array( 'STOP' ), $merged_config->getStopSequences() ); + $this->assertSame( array( 'STOP' ), $merged_config->getStopSequences() ); $custom_options = $merged_config->getCustomOptions(); $this->assertArrayHasKey( 'stopSequences', $custom_options ); - $this->assertEquals( array( 'CONFIG_STOP' ), $custom_options['stopSequences'] ); + $this->assertSame( array( 'CONFIG_STOP' ), $custom_options['stopSequences'] ); $this->assertArrayHasKey( 'otherOption', $custom_options ); - $this->assertEquals( 'value', $custom_options['otherOption'] ); + $this->assertSame( 'value', $custom_options['otherOption'] ); } /** @@ -1058,7 +1058,7 @@ public function test_using_provider() { $this->assertSame( $builder, $result ); $actual_provider = $this->get_wrapped_prompt_builder_property_value( $builder, 'providerIdOrClassName' ); - $this->assertEquals( 'test-provider', $actual_provider ); + $this->assertSame( 'test-provider', $actual_provider ); } /** @@ -1075,7 +1075,7 @@ public function test_using_system_instruction() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 'You are a helpful assistant.', $config->getSystemInstruction() ); + $this->assertSame( 'You are a helpful assistant.', $config->getSystemInstruction() ); } /** @@ -1092,7 +1092,7 @@ public function test_using_max_tokens() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 1000, $config->getMaxTokens() ); + $this->assertSame( 1000, $config->getMaxTokens() ); } /** @@ -1109,7 +1109,7 @@ public function test_using_temperature() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 0.7, $config->getTemperature() ); + $this->assertSame( 0.7, $config->getTemperature() ); } /** @@ -1126,7 +1126,7 @@ public function test_using_top_p() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 0.9, $config->getTopP() ); + $this->assertSame( 0.9, $config->getTopP() ); } /** @@ -1143,7 +1143,7 @@ public function test_using_top_k() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 40, $config->getTopK() ); + $this->assertSame( 40, $config->getTopK() ); } /** @@ -1160,7 +1160,7 @@ public function test_using_stop_sequences() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( array( 'STOP', 'END', '###' ), $config->getStopSequences() ); + $this->assertSame( array( 'STOP', 'END', '###' ), $config->getStopSequences() ); } /** @@ -1177,7 +1177,7 @@ public function test_using_candidate_count() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 3, $config->getCandidateCount() ); + $this->assertSame( 3, $config->getCandidateCount() ); } /** @@ -1194,7 +1194,7 @@ public function test_using_output_mime() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 'application/json', $config->getOutputMimeType() ); + $this->assertSame( 'application/json', $config->getOutputMimeType() ); } /** @@ -1218,7 +1218,7 @@ public function test_using_output_schema() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( $schema, $config->getOutputSchema() ); + $this->assertSame( $schema, $config->getOutputSchema() ); } /** @@ -1258,7 +1258,7 @@ public function test_as_json_response() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 'application/json', $config->getOutputMimeType() ); + $this->assertSame( 'application/json', $config->getOutputMimeType() ); } /** @@ -1276,8 +1276,8 @@ public function test_as_json_response_with_schema() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 'application/json', $config->getOutputMimeType() ); - $this->assertEquals( $schema, $config->getOutputSchema() ); + $this->assertSame( 'application/json', $config->getOutputMimeType() ); + $this->assertSame( $schema, $config->getOutputSchema() ); } /** @@ -1824,14 +1824,14 @@ public function test_generate_texts() { $texts = $builder->generate_texts( 3 ); $this->assertCount( 3, $texts ); - $this->assertEquals( 'Text 1', $texts[0] ); - $this->assertEquals( 'Text 2', $texts[1] ); - $this->assertEquals( 'Text 3', $texts[2] ); + $this->assertSame( 'Text 1', $texts[0] ); + $this->assertSame( 'Text 2', $texts[1] ); + $this->assertSame( 'Text 3', $texts[2] ); /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 3, $config->getCandidateCount() ); + $this->assertSame( 3, $config->getCandidateCount() ); } /** @@ -2255,7 +2255,7 @@ public function test_as_output_media_aspect_ratio() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( '16:9', $config->getOutputMediaAspectRatio() ); + $this->assertSame( '16:9', $config->getOutputMediaAspectRatio() ); } /** @@ -2272,7 +2272,7 @@ public function test_as_output_speech_voice() { /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 'alloy', $config->getOutputSpeechVoice() ); + $this->assertSame( 'alloy', $config->getOutputSpeechVoice() ); } /** @@ -2290,8 +2290,8 @@ public function test_using_ability_with_string() { $this->assertNotNull( $declarations ); $this->assertCount( 1, $declarations ); - $this->assertEquals( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); - $this->assertEquals( 'A simple test ability with no parameters.', $declarations[0]->getDescription() ); + $this->assertSame( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); + $this->assertSame( 'A simple test ability with no parameters.', $declarations[0]->getDescription() ); } /** @@ -2311,8 +2311,8 @@ public function test_using_ability_with_wp_ability_object() { $this->assertNotNull( $declarations ); $this->assertCount( 1, $declarations ); - $this->assertEquals( 'wpab__wpaiclienttests__with-params', $declarations[0]->getName() ); - $this->assertEquals( 'A test ability that accepts parameters.', $declarations[0]->getDescription() ); + $this->assertSame( 'wpab__wpaiclienttests__with-params', $declarations[0]->getName() ); + $this->assertSame( 'A test ability that accepts parameters.', $declarations[0]->getDescription() ); $params = $declarations[0]->getParameters(); $this->assertNotNull( $params ); @@ -2339,9 +2339,9 @@ public function test_using_ability_with_multiple_abilities() { $this->assertNotNull( $declarations ); $this->assertCount( 3, $declarations ); - $this->assertEquals( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); - $this->assertEquals( 'wpab__wpaiclienttests__with-params', $declarations[1]->getName() ); - $this->assertEquals( 'wpab__wpaiclienttests__returns-error', $declarations[2]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__with-params', $declarations[1]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__returns-error', $declarations[2]->getName() ); } /** @@ -2367,8 +2367,8 @@ public function test_using_ability_skips_nonexistent_abilities() { $this->assertNotNull( $declarations ); $this->assertCount( 2, $declarations ); - $this->assertEquals( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); - $this->assertEquals( 'wpab__wpaiclienttests__with-params', $declarations[1]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__with-params', $declarations[1]->getName() ); } /** @@ -2407,8 +2407,8 @@ public function test_using_ability_with_mixed_types() { $this->assertNotNull( $declarations ); $this->assertCount( 2, $declarations ); - $this->assertEquals( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); - $this->assertEquals( 'wpab__wpaiclienttests__with-params', $declarations[1]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__with-params', $declarations[1]->getName() ); } /** @@ -2426,7 +2426,7 @@ public function test_using_ability_with_hyphenated_name() { $this->assertNotNull( $declarations ); $this->assertCount( 1, $declarations ); - $this->assertEquals( 'wpab__wpaiclienttests__hyphen-test', $declarations[0]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__hyphen-test', $declarations[0]->getName() ); } /** @@ -2448,13 +2448,13 @@ public function test_using_ability_method_chaining() { $this->assertNotNull( $declarations ); $this->assertCount( 1, $declarations ); - $this->assertEquals( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); + $this->assertSame( 'wpab__wpaiclienttests__simple', $declarations[0]->getName() ); /** @var ModelConfig $config */ $config = $this->get_wrapped_prompt_builder_property_value( $builder, 'modelConfig' ); - $this->assertEquals( 'You are a helpful assistant', $config->getSystemInstruction() ); - $this->assertEquals( 500, $config->getMaxTokens() ); + $this->assertSame( 'You are a helpful assistant', $config->getSystemInstruction() ); + $this->assertSame( 500, $config->getMaxTokens() ); } /** From 4440667d806019cbe9b9e67fad6836b0d74cce6d Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Tue, 21 Apr 2026 14:03:56 +0000 Subject: [PATCH 011/327] Tests: Print invalid UTF-8 as ASCII to fix hosts test reporting failures. When serializing test output into XML, invalid UTF-8 bytes lead to a failure to load those test results when they are read. This patch adds code to remap those invalid bytes in an ASCII-readable form, whereas the invalid bytes are separated by parentheses and encoded in their hex form. This ensures that a proper XML file is generated from the testing results. Developed in: https://github.com/WordPress/wordpress-develop/pull/11620 Discussed in: https://core.trac.wordpress.org/ticket/31992 Reported in: https://github.com/WordPress/phpunit-test-runner/pull/310 Follow-up to: [62225]. Props agulbra, amykamala, codexdemon, dmsnell, mywp459, rolle. See #31992. git-svn-id: https://develop.svn.wordpress.org/trunk@62249 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/formatting/isEmail.php | 55 +++++++++++++- .../tests/formatting/sanitizeEmail.php | 73 +++++++++++++++++-- 2 files changed, 122 insertions(+), 6 deletions(-) diff --git a/tests/phpunit/tests/formatting/isEmail.php b/tests/phpunit/tests/formatting/isEmail.php index d79647885ceba..b793af2c4a70d 100644 --- a/tests/phpunit/tests/formatting/isEmail.php +++ b/tests/phpunit/tests/formatting/isEmail.php @@ -122,7 +122,60 @@ public static function data_invalid_email_provider() { ); foreach ( $invalid_emails as $email ) { - yield $email => array( $email ); + yield self::invalid_utf8_as_ascii( $email ) => array( $email ); + } + } + + /** + * Transforms invalid byte sequences in UTF-8 into representations of + * each byte value, according to the maximal subpart rule. + * + * Example: + * + * // For valid UTF-8 the output is the input. + * 'test' === invalid_utf8_as_ascii( 'test' ); + * + * // Invalid bytes are represented with their hex value. + * 'a(0x80)b' === invalid_utf8_as_ascii( "a\x80b" ); + * + * // Invalid byte sequences form maximal subparts. + * '(0xC2)(0xEF 0xBF)' === invalid_utf8_as_ascii( "\xC2\xEF\xBF" ); + * + * @param string $text + * @return string + */ + private static function invalid_utf8_as_ascii( string $text ): string { + $output = ''; + $at = 0; + $was_at = 0; + $end = strlen( $text ); + $invalid_bytes = 0; + + while ( $at < $end ) { + if ( 0 === _wp_scan_utf8( $text, $at, $invalid_bytes ) && 0 === $invalid_bytes ) { + break; + } + + if ( $at > $was_at ) { + $output .= substr( $text, $was_at, $at - $was_at ); + } + + if ( $invalid_bytes > 0 ) { + $output .= '('; + + for ( $i = 0; $i < $invalid_bytes; $i++ ) { + $space = $i > 0 ? ' ' : ''; + $as_hex = bin2hex( $text[ $at + $i ] ); + $output .= "{$space}0x{$as_hex}"; + } + + $output .= ')'; + } + + $at += $invalid_bytes; + $was_at = $at; } + + return $output; } } diff --git a/tests/phpunit/tests/formatting/sanitizeEmail.php b/tests/phpunit/tests/formatting/sanitizeEmail.php index 6ca396f42dc26..5490374d0a5e7 100644 --- a/tests/phpunit/tests/formatting/sanitizeEmail.php +++ b/tests/phpunit/tests/formatting/sanitizeEmail.php @@ -17,11 +17,21 @@ class Tests_Formatting_SanitizeEmail extends WP_UnitTestCase { * @param string $expected The expected sanitized email address. */ public function test_returns_stripped_email_address( $address, $expected ) { - $this->assertSame( - $expected, - sanitize_email( $address ), - 'Should have produced the known sanitized form of the email.' - ); + $sanitized = sanitize_email( $address ); + + if ( $expected === $sanitized ) { + $this->assertSame( + $expected, + $sanitized, + 'Should have produced the known sanitized form of the email.' + ); + } else { + $this->assertSame( + $expected, + self::invalid_utf8_as_ascii( $sanitized ), + 'Should have produced the known sanitized form of the email.' + ); + } } /** @@ -39,4 +49,57 @@ public function data_sanitized_email_pairs() { 'all subdomains invalid utf8' => array( "abc@\x80.org", '' ), ); } + + /** + * Transforms invalid byte sequences in UTF-8 into representations of + * each byte value, according to the maximal subpart rule. + * + * Example: + * + * // For valid UTF-8 the output is the input. + * 'test' === invalid_utf8_as_ascii( 'test' ); + * + * // Invalid bytes are represented with their hex value. + * 'a(0x80)b' === invalid_utf8_as_ascii( "a\x80b" ); + * + * // Invalid byte sequences form maximal subparts. + * '(0xC2)(0xEF 0xBF)' === invalid_utf8_as_ascii( "\xC2\xEF\xBF" ); + * + * @param string $text + * @return string + */ + private static function invalid_utf8_as_ascii( string $text ): string { + $output = ''; + $at = 0; + $was_at = 0; + $end = strlen( $text ); + $invalid_bytes = 0; + + while ( $at < $end ) { + if ( 0 === _wp_scan_utf8( $text, $at, $invalid_bytes ) && 0 === $invalid_bytes ) { + break; + } + + if ( $at > $was_at ) { + $output .= substr( $text, $was_at, $at - $was_at ); + } + + if ( $invalid_bytes > 0 ) { + $output .= '('; + + for ( $i = 0; $i < $invalid_bytes; $i++ ) { + $space = $i > 0 ? ' ' : ''; + $as_hex = bin2hex( $text[ $at + $i ] ); + $output .= "{$space}0x{$as_hex}"; + } + + $output .= ')'; + } + + $at += $invalid_bytes; + $was_at = $at; + } + + return $output; + } } From ee81e2fc68f63b6c539e755ba7d28c8bf3e2f4cd Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 21 Apr 2026 16:48:42 +0000 Subject: [PATCH 012/327] Build/Test Tools: Add more workflow file linting with Zizmor. This change introduces Zizmor, which is a tool for linting GitHub Actions workflow files for security weaknesses. This compliments the existing Actionlint scanning. For more information about Actionlint and Zizmor, see the GitHub Actions Workflow Standards page in the developer handbook: https://developer.wordpress.org/coding-standards/wordpress-coding-standards/github-actions/ Some issues in workflow files that are reported by Zizmor will be addressed in follow-up commits. Props johnbillion, desrosj. See #64227 git-svn-id: https://develop.svn.wordpress.org/trunk@62250 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/reusable-workflow-lint.yml | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/.github/workflows/reusable-workflow-lint.yml b/.github/workflows/reusable-workflow-lint.yml index 3a538a8a99690..db70672745b0c 100644 --- a/.github/workflows/reusable-workflow-lint.yml +++ b/.github/workflows/reusable-workflow-lint.yml @@ -32,3 +32,42 @@ jobs: uses: docker://rhysd/actionlint@sha256:887a259a5a534f3c4f36cb02dca341673c6089431057242cdc931e9f133147e9 # v1.7.7 with: args: "-color -verbose" + + # Runs the Zizmor GitHub Action workflow file linter. + # + # See https://github.com/zizmorcore/zizmor + # + # This helps guard against supply chain attacks, unpinned dependencies, excessive permissions, + # dangerous triggers, credential leaks, and sophisticated security vulnerabilities. + # + # Performs the following steps: + # - Checks out the repository. + # - Installs and configures uv. + # - Runs a zizmor scan. + # - Uploads the SARIF file to GitHub. + zizmor: + name: Zizmor + runs-on: ubuntu-24.04 + permissions: + security-events: write + actions: read + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Install the latest version of uv + uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0 + + - name: Run zizmor + run: uvx zizmor@1.24.1 --persona=regular --format=sarif --strict-collection . > results.sarif + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload SARIF file + uses: github/codeql-action/upload-sarif@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 + with: + sarif_file: results.sarif + category: zizmor From 8808211a8cdfb1dc3864a691445cc89ae0fa17f5 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 21 Apr 2026 16:56:34 +0000 Subject: [PATCH 013/327] Build/Test Tools: Address some issues in GitHub Actions workflow files as reported by Zizmor. This removes unnecessarily broad inheritance of secrets, replaces some GitHub Actions expressions with environment variables, removes git credential persistence, and adds documentation to the readme. See #64227 git-svn-id: https://develop.svn.wordpress.org/trunk@62251 602fd350-edb4-49c9-b593-d223f7449a82 --- .../workflows/commit-built-file-changes.yml | 5 ++-- .github/workflows/install-testing.yml | 1 - .../workflows/local-docker-environment.yml | 1 - .github/workflows/phpunit-tests.yml | 20 +++++++++++---- .../workflows/reusable-check-built-files.yml | 1 + .../reusable-cleanup-pull-requests.yml | 25 ++++++++----------- README.md | 23 +++++++++++++++++ 7 files changed, 52 insertions(+), 24 deletions(-) diff --git a/.github/workflows/commit-built-file-changes.yml b/.github/workflows/commit-built-file-changes.yml index f93cd4bd662ec..b6ba9935ba675 100644 --- a/.github/workflows/commit-built-file-changes.yml +++ b/.github/workflows/commit-built-file-changes.yml @@ -131,11 +131,12 @@ jobs: path: 'pr-repo' show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} token: ${{ env.ACCESS_TOKEN }} + persist-credentials: true - name: Apply patch if: ${{ steps.artifact-check.outputs.exists == 'true' }} working-directory: 'pr-repo' - run: git apply ${{ github.workspace }}/changes.diff + run: git apply "$GITHUB_WORKSPACE/changes.diff" - name: Display changes to versioned files if: ${{ steps.artifact-check.outputs.exists == 'true' }} @@ -149,7 +150,7 @@ jobs: GH_APP_ID: ${{ secrets.GH_PR_BUILT_FILES_APP_ID }} run: | git config user.name "wordpress-develop-pr-bot[bot]" - git config user.email ${{ env.GH_APP_ID }}+wordpress-develop-pr-bot[bot]@users.noreply.github.com + git config user.email "${GH_APP_ID}+wordpress-develop-pr-bot[bot]@users.noreply.github.com" - name: Stage changes if: ${{ steps.artifact-check.outputs.exists == 'true' }} diff --git a/.github/workflows/install-testing.yml b/.github/workflows/install-testing.yml index f15d6e4830268..f042853ca1bc5 100644 --- a/.github/workflows/install-testing.yml +++ b/.github/workflows/install-testing.yml @@ -49,7 +49,6 @@ jobs: uses: ./.github/workflows/reusable-support-json-reader-v1.yml permissions: contents: read - secrets: inherit if: ${{ github.repository == 'WordPress/wordpress-develop' }} with: wp-version: ${{ inputs.wp-version }} diff --git a/.github/workflows/local-docker-environment.yml b/.github/workflows/local-docker-environment.yml index c9dbae312595a..d42bba623ec64 100644 --- a/.github/workflows/local-docker-environment.yml +++ b/.github/workflows/local-docker-environment.yml @@ -79,7 +79,6 @@ jobs: uses: ./.github/workflows/reusable-support-json-reader-v1.yml permissions: contents: read - secrets: inherit if: ${{ github.repository == 'WordPress/wordpress-develop' }} with: wp-version: ${{ github.event_name == 'pull_request' && github.base_ref || github.ref_name }} diff --git a/.github/workflows/phpunit-tests.yml b/.github/workflows/phpunit-tests.yml index de36d5a505187..85604b1182db7 100644 --- a/.github/workflows/phpunit-tests.yml +++ b/.github/workflows/phpunit-tests.yml @@ -66,7 +66,9 @@ jobs: uses: ./.github/workflows/reusable-phpunit-tests-v3.yml permissions: contents: read - secrets: inherit + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + WPT_REPORT_API_KEY: ${{ secrets.WPT_REPORT_API_KEY }} if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' ) }} strategy: fail-fast: false @@ -143,7 +145,9 @@ jobs: uses: ./.github/workflows/reusable-phpunit-tests-v3.yml permissions: contents: read - secrets: inherit + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + WPT_REPORT_API_KEY: ${{ secrets.WPT_REPORT_API_KEY }} if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' ) }} strategy: fail-fast: false @@ -195,7 +199,9 @@ jobs: uses: ./.github/workflows/reusable-phpunit-tests-v3.yml permissions: contents: read - secrets: inherit + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + WPT_REPORT_API_KEY: ${{ secrets.WPT_REPORT_API_KEY }} if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' ) }} strategy: fail-fast: false @@ -238,7 +244,9 @@ jobs: uses: ./.github/workflows/reusable-phpunit-tests-v3.yml permissions: contents: read - secrets: inherit + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + WPT_REPORT_API_KEY: ${{ secrets.WPT_REPORT_API_KEY }} if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' ) }} strategy: fail-fast: false @@ -267,7 +275,9 @@ jobs: uses: ./.github/workflows/reusable-phpunit-tests-v3.yml permissions: contents: read - secrets: inherit + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + WPT_REPORT_API_KEY: ${{ secrets.WPT_REPORT_API_KEY }} if: ${{ ! startsWith( github.repository, 'WordPress/' ) && github.event_name == 'pull_request' }} strategy: fail-fast: false diff --git a/.github/workflows/reusable-check-built-files.yml b/.github/workflows/reusable-check-built-files.yml index 11d97639a30fc..8951f26547733 100644 --- a/.github/workflows/reusable-check-built-files.yml +++ b/.github/workflows/reusable-check-built-files.yml @@ -40,6 +40,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} + persist-credentials: false - name: Set up Node.js uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 diff --git a/.github/workflows/reusable-cleanup-pull-requests.yml b/.github/workflows/reusable-cleanup-pull-requests.yml index 9dae63cb213d3..cdce56001d16b 100644 --- a/.github/workflows/reusable-cleanup-pull-requests.yml +++ b/.github/workflows/reusable-cleanup-pull-requests.yml @@ -19,7 +19,7 @@ jobs: # - Parse fixed ticket numbers from the commit message. # - Parse the SVN revision from the commit message. # - Searches for pull requests referencing any fixed tickets. - # - Leaves a comment on each PR before closing. +# - Comments on pull requests referencing any fixed tickets before closing. close-prs: name: Find and close PRs runs-on: ubuntu-24.04 @@ -43,13 +43,17 @@ jobs: COMMIT_MESSAGE="$(echo "$COMMIT_MSG_RAW" | sed -n '$p')" echo "svn_revision_number=$(echo "$COMMIT_MESSAGE" | sed -n 's/.*git-svn-id: https:\/\/develop.svn.wordpress.org\/[^@]*@\([0-9]*\) .*/\1/p')" >> "$GITHUB_OUTPUT" - - name: Find pull requests - id: linked-prs + - name: Find, comment on, and close pull requests if: ${{ steps.trac-tickets.outputs.fixed_list != '' && steps.git-svn-id.outputs.svn_revision_number != '' }} uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + env: + FIXED_LIST: ${{ steps.trac-tickets.outputs.fixed_list }} + SVN_REVISION_NUMBER: ${{ steps.git-svn-id.outputs.svn_revision_number }} with: script: | - const fixedList = "${{ steps.trac-tickets.outputs.fixed_list }}".split(' ').filter(Boolean); + const fixedList = process.env.FIXED_LIST.split(' ').filter(Boolean); + const svnRevisionNumber = process.env.SVN_REVISION_NUMBER; + const githubSha = process.env.GITHUB_SHA; let prNumbers = []; for (const ticket of fixedList) { @@ -86,19 +90,10 @@ jobs: prNumbers.push(...matchingPRs); } - return prNumbers; - - - name: Comment and close pull requests - if: ${{ steps.trac-tickets.outputs.fixed_list != '' && steps.git-svn-id.outputs.svn_revision_number != '' }} - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 - with: - script: | - const prNumbers = ${{ steps.linked-prs.outputs.result }}; - const commentBody = `A commit was made that fixes the Trac ticket referenced in the description of this pull request. - SVN changeset: [${{ steps.git-svn-id.outputs.svn_revision_number }}](https://core.trac.wordpress.org/changeset/${{ steps.git-svn-id.outputs.svn_revision_number }}) - GitHub commit: https://github.com/WordPress/wordpress-develop/commit/${{ github.sha }} + SVN changeset: [${svnRevisionNumber}](https://core.trac.wordpress.org/changeset/${svnRevisionNumber}) + GitHub commit: https://github.com/WordPress/wordpress-develop/commit/${githubSha} This PR will be closed, but please confirm the accuracy of this and reopen if there is more work to be done.`; diff --git a/README.md b/README.md index 4c27999495f55..5201a5180c1da 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,29 @@ npm run test:php -- --filter npm run test:php -- --group ``` +#### To lint the workflow files + +GitHub Actions workflows operate in a privileged software supply chain environment, therefore all workflow files must adhere to a high degree of quality and security standards. + +All YAML workflow files within the `.github/workflows` directory are statically scanned when modified using [Actionlint](https://github.com/rhysd/actionlint) and [Zizmor](https://github.com/zizmorcore/zizmor). It's recommended that you install both of these tools locally using a package manager to run prior to submitting changes to workflow files. + +- [Actionlint installations instructions](https://github.com/rhysd/actionlint/blob/main/docs/install.md) +- [Zizmor installation instructions](https://docs.zizmor.sh/installation/) + +To run Actionlint: + +``` +actionlint +``` + +To run Zizmor for all workflow files (note the trailing period): + +``` +zizmor . +``` + +**Note:** A workflow run failure will not occur when issues are detected by Zizmor. Instead, the generated report is submitted to GitHub Code Scanning and surfaced through a status check. Some locally reported issues may be ignored based on the repository's configured Code Scanning settings. + #### Generating a code coverage report PHP code coverage reports are [generated daily](https://github.com/WordPress/wordpress-develop/actions/workflows/test-coverage.yml) and [submitted to Codecov.io](https://app.codecov.io/gh/WordPress/wordpress-develop). From 63111549722acebfc3a147a470e642d6dec5c1b1 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 21 Apr 2026 16:58:30 +0000 Subject: [PATCH 014/327] Build/Test Tools: Update Actionlint to the latest version. See #64227 git-svn-id: https://develop.svn.wordpress.org/trunk@62252 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/reusable-workflow-lint.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/reusable-workflow-lint.yml b/.github/workflows/reusable-workflow-lint.yml index db70672745b0c..13fcde47f5731 100644 --- a/.github/workflows/reusable-workflow-lint.yml +++ b/.github/workflows/reusable-workflow-lint.yml @@ -7,12 +7,10 @@ permissions: {} jobs: # Runs the actionlint GitHub Action workflow file linter. # + # See https://github.com/rhysd/actionlint. + # # This helps guard against common mistakes including strong type checking for expressions (${{ }}), security checks, # `run:` script checking, glob syntax validation, and more. - # - # Performs the following steps: - # - Checks out the repository. - # - Runs actionlint. actionlint: name: Run actionlint runs-on: ubuntu-24.04 @@ -26,10 +24,8 @@ jobs: persist-credentials: false show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} - # actionlint is static checker for GitHub Actions workflow files. - # See https://github.com/rhysd/actionlint. - name: Run actionlint - uses: docker://rhysd/actionlint@sha256:887a259a5a534f3c4f36cb02dca341673c6089431057242cdc931e9f133147e9 # v1.7.7 + uses: docker://rhysd/actionlint@sha256:5457037ba91acd225478edac3d4b32e45cf6c10291e0dabbfd2491c63129afe1 # v1.7.11 with: args: "-color -verbose" From 6ad323312d4b0406240b459343b20dd3fb69cb4d Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 21 Apr 2026 17:24:23 +0000 Subject: [PATCH 015/327] Build/Test Tools: Remove unnecessary use of GitHub Actions expressions for values that resolve to "true" or "false" strings. See #64227 git-svn-id: https://develop.svn.wordpress.org/trunk@62253 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/end-to-end-tests.yml | 2 +- .github/workflows/phpunit-tests.yml | 4 ++-- .github/workflows/reusable-coding-standards-javascript.yml | 2 +- .github/workflows/reusable-performance-test-v2.yml | 2 +- .github/workflows/reusable-performance.yml | 2 +- .github/workflows/reusable-phpunit-tests-v1.yml | 4 ++-- .github/workflows/reusable-phpunit-tests-v2.yml | 2 +- .github/workflows/reusable-phpunit-tests-v3.yml | 2 +- .github/workflows/reusable-test-core-build-process.yml | 2 +- .github/workflows/reusable-test-gutenberg-build-process.yml | 2 +- .../workflows/reusable-test-local-docker-environment-v1.yml | 2 +- .github/workflows/test-coverage.yml | 4 ++-- 12 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/end-to-end-tests.yml b/.github/workflows/end-to-end-tests.yml index b397a2241947e..4375091546dd7 100644 --- a/.github/workflows/end-to-end-tests.yml +++ b/.github/workflows/end-to-end-tests.yml @@ -53,7 +53,7 @@ permissions: {} env: LOCAL_DIR: build - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true jobs: # Runs the end-to-end test suite. diff --git a/.github/workflows/phpunit-tests.yml b/.github/workflows/phpunit-tests.yml index 85604b1182db7..74dfc220c04a6 100644 --- a/.github/workflows/phpunit-tests.yml +++ b/.github/workflows/phpunit-tests.yml @@ -181,7 +181,7 @@ jobs: multisite: ${{ matrix.multisite }} memcached: ${{ matrix.memcached }} phpunit-config: ${{ matrix.multisite && 'tests/phpunit/multisite.xml' || 'phpunit.xml.dist' }} - report: ${{ false }} + report: false # # Creates PHPUnit test jobs to test MariaDB and MySQL innovation releases. @@ -229,7 +229,7 @@ jobs: multisite: ${{ matrix.multisite }} memcached: ${{ matrix.memcached }} phpunit-config: ${{ matrix.multisite && 'tests/phpunit/multisite.xml' || 'phpunit.xml.dist' }} - report: ${{ false }} + report: false # # Runs the HTML API test group. diff --git a/.github/workflows/reusable-coding-standards-javascript.yml b/.github/workflows/reusable-coding-standards-javascript.yml index 5c9a0c1ec0d03..6d776aabf1e27 100644 --- a/.github/workflows/reusable-coding-standards-javascript.yml +++ b/.github/workflows/reusable-coding-standards-javascript.yml @@ -7,7 +7,7 @@ on: workflow_call: env: - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true # Disable permissions for all available scopes by default. # Any needed permissions should be configured at the job level. diff --git a/.github/workflows/reusable-performance-test-v2.yml b/.github/workflows/reusable-performance-test-v2.yml index f572060e26d63..691e79c39508a 100644 --- a/.github/workflows/reusable-performance-test-v2.yml +++ b/.github/workflows/reusable-performance-test-v2.yml @@ -49,7 +49,7 @@ on: required: false env: - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true # Prevent wp-scripts from downloading extra Playwright browsers, # since Chromium will be installed in its dedicated step already. diff --git a/.github/workflows/reusable-performance.yml b/.github/workflows/reusable-performance.yml index 923b472f609c6..3ebe31ff8e38f 100644 --- a/.github/workflows/reusable-performance.yml +++ b/.github/workflows/reusable-performance.yml @@ -37,7 +37,7 @@ on: required: false env: - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true # Prevent wp-scripts from downloading extra Playwright browsers, # since Chromium will be installed in its dedicated step already. diff --git a/.github/workflows/reusable-phpunit-tests-v1.yml b/.github/workflows/reusable-phpunit-tests-v1.yml index bcb0451d7134b..b55e9f58fcf17 100644 --- a/.github/workflows/reusable-phpunit-tests-v1.yml +++ b/.github/workflows/reusable-phpunit-tests-v1.yml @@ -50,13 +50,13 @@ on: type: boolean default: false env: - COMPOSER_INSTALL: ${{ false }} + COMPOSER_INSTALL: false LOCAL_PHP: ${{ inputs.php }}-fpm LOCAL_PHPUNIT: ${{ inputs.phpunit && inputs.phpunit || inputs.php }}-fpm LOCAL_PHP_MEMCACHED: ${{ inputs.memcached }} PHPUNIT_CONFIG: ${{ inputs.phpunit-config }} PHPUNIT_SCRIPT: php - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true SLOW_TESTS: 'external-http,media' # Disable permissions for all available scopes by default. diff --git a/.github/workflows/reusable-phpunit-tests-v2.yml b/.github/workflows/reusable-phpunit-tests-v2.yml index 4e7b6716ebef1..36d5927976505 100644 --- a/.github/workflows/reusable-phpunit-tests-v2.yml +++ b/.github/workflows/reusable-phpunit-tests-v2.yml @@ -58,7 +58,7 @@ env: LOCAL_PHP: ${{ inputs.php }}-fpm LOCAL_PHP_MEMCACHED: ${{ inputs.memcached }} PHPUNIT_CONFIG: ${{ inputs.phpunit-config }} - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true # Controls which npm script to use for running PHPUnit tests. Options ar `php` and `php-composer`. PHPUNIT_SCRIPT: php SLOW_TESTS: 'external-http,media' diff --git a/.github/workflows/reusable-phpunit-tests-v3.yml b/.github/workflows/reusable-phpunit-tests-v3.yml index da0372f8538be..c720bb99df174 100644 --- a/.github/workflows/reusable-phpunit-tests-v3.yml +++ b/.github/workflows/reusable-phpunit-tests-v3.yml @@ -89,7 +89,7 @@ env: LOCAL_PHP_MEMCACHED: ${{ inputs.memcached }} LOCAL_WP_TESTS_DOMAIN: ${{ inputs.tests-domain }} PHPUNIT_CONFIG: ${{ inputs.phpunit-config }} - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true # Disable permissions for all available scopes by default. # Any needed permissions should be configured at the job level. diff --git a/.github/workflows/reusable-test-core-build-process.yml b/.github/workflows/reusable-test-core-build-process.yml index fbb6a08b15820..8d4ab718ee6de 100644 --- a/.github/workflows/reusable-test-core-build-process.yml +++ b/.github/workflows/reusable-test-core-build-process.yml @@ -38,7 +38,7 @@ on: default: false env: - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true NODE_OPTIONS: --max-old-space-size=4096 # Disable permissions for all available scopes by default. diff --git a/.github/workflows/reusable-test-gutenberg-build-process.yml b/.github/workflows/reusable-test-gutenberg-build-process.yml index 6fff07a842bf2..772b8ee577d7f 100644 --- a/.github/workflows/reusable-test-gutenberg-build-process.yml +++ b/.github/workflows/reusable-test-gutenberg-build-process.yml @@ -19,7 +19,7 @@ on: env: GUTENBERG_DIRECTORY: ${{ inputs.directory == 'build' && 'build' || 'src' }}/wp-content/plugins/gutenberg - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true NODE_OPTIONS: '--max-old-space-size=8192' # Disable permissions for all available scopes by default. diff --git a/.github/workflows/reusable-test-local-docker-environment-v1.yml b/.github/workflows/reusable-test-local-docker-environment-v1.yml index 9aa0fb124a22e..ff257624b8349 100644 --- a/.github/workflows/reusable-test-local-docker-environment-v1.yml +++ b/.github/workflows/reusable-test-local-docker-environment-v1.yml @@ -45,7 +45,7 @@ env: LOCAL_DB_VERSION: ${{ inputs.db-version }} LOCAL_PHP_MEMCACHED: ${{ inputs.memcached }} LOCAL_WP_TESTS_DOMAIN: ${{ inputs.tests-domain }} - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + PUPPETEER_SKIP_DOWNLOAD: true # Disable permissions for all available scopes by default. # Any needed permissions should be configured at the job level. diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index deb190eba9e9b..f2b0afce3256f 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -40,8 +40,8 @@ permissions: {} env: LOCAL_PHP_XDEBUG: true LOCAL_PHP_XDEBUG_MODE: 'coverage' - LOCAL_PHP_MEMCACHED: ${{ false }} - PUPPETEER_SKIP_DOWNLOAD: ${{ true }} + LOCAL_PHP_MEMCACHED: false + PUPPETEER_SKIP_DOWNLOAD: true jobs: # From c9bdbe0800db6302993ff63b820f280d70a12fa2 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 21 Apr 2026 17:43:18 +0000 Subject: [PATCH 016/327] Build/Test Tools: Use the exact tag name in version number comments that trail pinned actions. None of these actions use `v`-prefixed tag names. See #64227 git-svn-id: https://develop.svn.wordpress.org/trunk@62254 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/install-testing.yml | 2 +- .github/workflows/reusable-check-built-files.yml | 2 +- .github/workflows/reusable-coding-standards-php.yml | 4 ++-- .github/workflows/reusable-php-compatibility.yml | 4 ++-- .github/workflows/reusable-phpstan-static-analysis-v1.yml | 4 ++-- .github/workflows/reusable-phpunit-tests-v3.yml | 4 ++-- .github/workflows/reusable-test-core-build-process.yml | 2 +- .../workflows/reusable-test-local-docker-environment-v1.yml | 4 ++-- .github/workflows/reusable-upgrade-testing.yml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/install-testing.yml b/.github/workflows/install-testing.yml index f042853ca1bc5..8da6a84f1caeb 100644 --- a/.github/workflows/install-testing.yml +++ b/.github/workflows/install-testing.yml @@ -117,7 +117,7 @@ jobs: steps: - name: Set up PHP ${{ matrix.php }} - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 + uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0 with: php-version: '${{ matrix.php }}' coverage: none diff --git a/.github/workflows/reusable-check-built-files.yml b/.github/workflows/reusable-check-built-files.yml index 8951f26547733..290161c485324 100644 --- a/.github/workflows/reusable-check-built-files.yml +++ b/.github/workflows/reusable-check-built-files.yml @@ -57,7 +57,7 @@ jobs: # Since Composer dependencies are installed using `composer update` and no lock file is in version control, # passing a custom cache suffix ensures that the cache is flushed at least once per week. - name: Install Composer dependencies - uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # v4.0.0 + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: custom-cache-suffix: ${{ steps.get-date.outputs.date }} diff --git a/.github/workflows/reusable-coding-standards-php.yml b/.github/workflows/reusable-coding-standards-php.yml index 1213ccb6baa6f..99683e0850d64 100644 --- a/.github/workflows/reusable-coding-standards-php.yml +++ b/.github/workflows/reusable-coding-standards-php.yml @@ -52,7 +52,7 @@ jobs: persist-credentials: false - name: Set up PHP - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 + uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0 with: php-version: ${{ inputs.php-version }} coverage: none @@ -75,7 +75,7 @@ jobs: # Since Composer dependencies are installed using `composer update` and no lock file is in version control, # passing a custom cache suffix ensures that the cache is flushed at least once per week. - name: Install Composer dependencies - uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # v4.0.0 + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: custom-cache-suffix: ${{ steps.get-date.outputs.date }} diff --git a/.github/workflows/reusable-php-compatibility.yml b/.github/workflows/reusable-php-compatibility.yml index fee371fbdf7a0..a00c952bae6d1 100644 --- a/.github/workflows/reusable-php-compatibility.yml +++ b/.github/workflows/reusable-php-compatibility.yml @@ -46,7 +46,7 @@ jobs: persist-credentials: false - name: Set up PHP - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 + uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0 with: php-version: ${{ inputs.php-version }} coverage: none @@ -71,7 +71,7 @@ jobs: # Since Composer dependencies are installed using `composer update` and no lock file is in version control, # passing a custom cache suffix ensures that the cache is flushed at least once per week. - name: Install Composer dependencies - uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # v4.0.0 + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: custom-cache-suffix: ${{ steps.get-date.outputs.date }} diff --git a/.github/workflows/reusable-phpstan-static-analysis-v1.yml b/.github/workflows/reusable-phpstan-static-analysis-v1.yml index bbf1b78589a8c..d1ac9f9799792 100644 --- a/.github/workflows/reusable-phpstan-static-analysis-v1.yml +++ b/.github/workflows/reusable-phpstan-static-analysis-v1.yml @@ -52,7 +52,7 @@ jobs: cache: npm - name: Set up PHP - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 + uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0 with: php-version: ${{ inputs.php-version }} coverage: none @@ -73,7 +73,7 @@ jobs: # Since Composer dependencies are installed using `composer update` and no lock file is in version control, # passing a custom cache suffix ensures that the cache is flushed at least once per week. - name: Install Composer dependencies - uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # v4.0.0 + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: custom-cache-suffix: ${{ steps.get-date.outputs.date }} diff --git a/.github/workflows/reusable-phpunit-tests-v3.yml b/.github/workflows/reusable-phpunit-tests-v3.yml index c720bb99df174..793fac8adfc4f 100644 --- a/.github/workflows/reusable-phpunit-tests-v3.yml +++ b/.github/workflows/reusable-phpunit-tests-v3.yml @@ -150,7 +150,7 @@ jobs: # dependency versions are installed and cached. ## - name: Set up PHP - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 + uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0 with: php-version: '${{ inputs.php }}' coverage: none @@ -158,7 +158,7 @@ jobs: # Since Composer dependencies are installed using `composer update` and no lock file is in version control, # passing a custom cache suffix ensures that the cache is flushed at least once per week. - name: Install Composer dependencies - uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # v4.0.0 + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F") diff --git a/.github/workflows/reusable-test-core-build-process.yml b/.github/workflows/reusable-test-core-build-process.yml index 8d4ab718ee6de..b5c40eb040e64 100644 --- a/.github/workflows/reusable-test-core-build-process.yml +++ b/.github/workflows/reusable-test-core-build-process.yml @@ -86,7 +86,7 @@ jobs: # passing a custom cache suffix ensures that the cache is flushed at least once per week. - name: Install Composer dependencies if: ${{ inputs.test-certificates }} - uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # v4.0.0 + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: custom-cache-suffix: ${{ steps.get-date.outputs.date }} diff --git a/.github/workflows/reusable-test-local-docker-environment-v1.yml b/.github/workflows/reusable-test-local-docker-environment-v1.yml index ff257624b8349..370b88c6c0231 100644 --- a/.github/workflows/reusable-test-local-docker-environment-v1.yml +++ b/.github/workflows/reusable-test-local-docker-environment-v1.yml @@ -105,7 +105,7 @@ jobs: # dependency versions are installed and cached. ## - name: Set up PHP - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 + uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0 with: php-version: '${{ inputs.php }}' coverage: none @@ -113,7 +113,7 @@ jobs: # Since Composer dependencies are installed using `composer update` and no lock file is in version control, # passing a custom cache suffix ensures that the cache is flushed at least once per week. - name: Install Composer dependencies - uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # v4.0.0 + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F") diff --git a/.github/workflows/reusable-upgrade-testing.yml b/.github/workflows/reusable-upgrade-testing.yml index 60d5523a9e3b6..372b6ae0c3e60 100644 --- a/.github/workflows/reusable-upgrade-testing.yml +++ b/.github/workflows/reusable-upgrade-testing.yml @@ -78,7 +78,7 @@ jobs: steps: - name: Set up PHP ${{ inputs.php }} - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 + uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0 with: php-version: '${{ inputs.php }}' coverage: none From 17017058962ca25ad57ab52e3cc43490cb4bf7d5 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Wed, 22 Apr 2026 18:13:47 +0000 Subject: [PATCH 017/327] AI: Validate filtered default request timeout in `WP_AI_Client_Prompt_Builder`. This checks that the return value of the `wp_ai_client_default_request_timeout` filter is a non-negative number before passing it to `RequestOptions`. If the filtered value is invalid, it is discarded in favor of the original default of `30.0` and a `_doing_it_wrong()` notice is issued. Without this check, a fatal error would ensue from the exception thrown in `\WordPress\AiClient\Providers\Http\DTO\RequestOptions::validateTimeout()`. The following static analysis issues are addressed: * Use `float` instead of `int` for the `wp_ai_client_default_request_timeout` filter parameter. * Add missing PHP imports for `Message` and `MessagePart` in the PHPDoc for `wp_ai_client_prompt()`. * Add PHP return type hints for `wp_ai_client_prompt()` and `WP_AI_Client_Cache::getMultiple()`. * Use native property type hints in `WP_AI_Client_HTTP_Client`. Developed in https://github.com/WordPress/wordpress-develop/pull/11596 Props westonruter, justlevine, flixos90, khushdoms, darshitrajyaguru97, adrmf25, jarodortegaaraya, tusharaddweb, gaurangsondagar. Fixes #65094. git-svn-id: https://develop.svn.wordpress.org/trunk@62255 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/ai-client.php | 4 +- .../adapters/class-wp-ai-client-cache.php | 2 +- .../class-wp-ai-client-http-client.php | 6 +- .../class-wp-ai-client-prompt-builder.php | 19 ++++- .../ai-client/wpAiClientPromptBuilder.php | 72 +++++++++++++++++-- 5 files changed, 90 insertions(+), 13 deletions(-) diff --git a/src/wp-includes/ai-client.php b/src/wp-includes/ai-client.php index 4fc20166fb8bb..b38c7b721416d 100644 --- a/src/wp-includes/ai-client.php +++ b/src/wp-includes/ai-client.php @@ -8,6 +8,8 @@ */ use WordPress\AiClient\AiClient; +use WordPress\AiClient\Messages\DTO\Message; +use WordPress\AiClient\Messages\DTO\MessagePart; /** * Returns whether AI features are supported in the current environment. @@ -55,6 +57,6 @@ function wp_supports_ai(): bool { * conversations. Default null. * @return WP_AI_Client_Prompt_Builder The prompt builder instance. */ -function wp_ai_client_prompt( $prompt = null ) { +function wp_ai_client_prompt( $prompt = null ): WP_AI_Client_Prompt_Builder { return new WP_AI_Client_Prompt_Builder( AiClient::defaultRegistry(), $prompt ); } diff --git a/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php b/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php index 18d85eee6c9e6..45504897485f7 100644 --- a/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php +++ b/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php @@ -104,7 +104,7 @@ public function clear(): bool { * @param mixed $default_value Default value to return for keys that do not exist. * @return array A list of key => value pairs. */ - public function getMultiple( $keys, $default_value = null ) { + public function getMultiple( $keys, $default_value = null ): array { /** * Keys array. * diff --git a/src/wp-includes/ai-client/adapters/class-wp-ai-client-http-client.php b/src/wp-includes/ai-client/adapters/class-wp-ai-client-http-client.php index f1827db0e437c..f6c6dea441d1c 100644 --- a/src/wp-includes/ai-client/adapters/class-wp-ai-client-http-client.php +++ b/src/wp-includes/ai-client/adapters/class-wp-ai-client-http-client.php @@ -32,17 +32,15 @@ class WP_AI_Client_HTTP_Client implements ClientInterface, ClientWithOptionsInte * Response factory instance. * * @since 7.0.0 - * @var ResponseFactoryInterface */ - private $response_factory; + private ResponseFactoryInterface $response_factory; /** * Stream factory instance. * * @since 7.0.0 - * @var StreamFactoryInterface */ - private $stream_factory; + private StreamFactoryInterface $stream_factory; /** * Constructor. diff --git a/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php b/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php index d1f2271bd47d3..da7858dd76555 100644 --- a/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php +++ b/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php @@ -190,14 +190,29 @@ public function __construct( ProviderRegistry $registry, $prompt = null ) { $this->error = $this->exception_to_wp_error( $e ); } + $default_timeout = 30.0; + /** * Filters the default request timeout in seconds for AI Client HTTP requests. * * @since 7.0.0 * - * @param int $default_timeout The default timeout in seconds. + * @param float $default_timeout The default timeout in seconds. */ - $default_timeout = (int) apply_filters( 'wp_ai_client_default_request_timeout', 30 ); + $filtered_default_timeout = apply_filters( 'wp_ai_client_default_request_timeout', $default_timeout ); + if ( is_numeric( $filtered_default_timeout ) && (float) $filtered_default_timeout >= 0.0 ) { + $default_timeout = (float) $filtered_default_timeout; + } else { + _doing_it_wrong( + __METHOD__, + sprintf( + /* translators: %s: wp_ai_client_default_request_timeout */ + __( 'The %s filter must return a non-negative number.' ), + 'wp_ai_client_default_request_timeout' + ), + '7.0.0' + ); + } $this->builder->usingRequestOptions( RequestOptions::fromArray( diff --git a/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php b/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php index 3a781ccc73751..e758a6868aa42 100644 --- a/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php +++ b/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php @@ -192,15 +192,64 @@ public function test_constructor_sets_default_request_timeout() { } /** - * Test that the constructor allows overriding the default request timeout. + * Test that the constructor allows overriding the default request timeout with a valid value. * * @ticket 64591 + * @ticket 65094 + * + * @dataProvider data_valid_request_timeout_overrides + * + * @param mixed $input The timeout value returned by the filter. + * @param float $expected The expected timeout stored on the request options. + */ + public function test_constructor_allows_overriding_request_timeout_with_valid_timeout( $input, float $expected ) { + add_filter( + 'wp_ai_client_default_request_timeout', + static function () use ( $input ) { + return $input; + } + ); + + $builder = new WP_AI_Client_Prompt_Builder( AiClient::defaultRegistry() ); + + /** @var RequestOptions $request_options */ + $request_options = $this->get_wrapped_prompt_builder_property_value( $builder, 'requestOptions' ); + + $this->assertInstanceOf( RequestOptions::class, $request_options ); + $this->assertSame( $expected, $request_options->getTimeout() ); + } + + /** + * Data provider for {@see self::test_constructor_allows_overriding_request_timeout_with_valid_timeout()}. + * + * @return array */ - public function test_constructor_allows_overriding_request_timeout() { + public function data_valid_request_timeout_overrides(): array { + return array( + 'float' => array( 45.5, 45.5 ), + 'integer' => array( 67, 67.0 ), + 'string' => array( '20', 20.0 ), + 'infinity' => array( INF, INF ), + 'zero' => array( 0.0, 0.0 ), + ); + } + + /** + * Test that the constructor disallows overriding the default request timeout with an invalid value. + * + * @ticket 65094 + * + * @dataProvider data_invalid_request_timeouts + * + * @expectedIncorrectUsage WP_AI_Client_Prompt_Builder::__construct + * + * @param mixed $timeout The invalid timeout value returned by the filter. + */ + public function test_constructor_disallows_overriding_with_invalid_request_timeout( $timeout ) { add_filter( 'wp_ai_client_default_request_timeout', - static function () { - return 45; + static function () use ( $timeout ) { + return $timeout; } ); @@ -210,7 +259,20 @@ static function () { $request_options = $this->get_wrapped_prompt_builder_property_value( $builder, 'requestOptions' ); $this->assertInstanceOf( RequestOptions::class, $request_options ); - $this->assertSame( 45.0, $request_options->getTimeout() ); + $this->assertSame( 30.0, $request_options->getTimeout() ); + } + + /** + * Data provider for {@see self::test_constructor_disallows_overriding_with_invalid_request_timeout()}. + * + * @return array + */ + public function data_invalid_request_timeouts(): array { + return array( + 'negative number' => array( -1 ), + 'array' => array( array() ), + 'null' => array( null ), + ); } /** From a747d74b952a59f2460f9ed8e75aa50ec82d98c5 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Wed, 22 Apr 2026 23:51:07 +0000 Subject: [PATCH 018/327] I18N: Add context for the Library admin menu item. Props timse201, sanketparmar, trickster301, audrasjb, jadavsanjay, SergeyBiryukov. Fixes #64982. git-svn-id: https://develop.svn.wordpress.org/trunk@62256 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/menu.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-admin/menu.php b/src/wp-admin/menu.php index dc8c4271e9aad..57d94c75e26f2 100644 --- a/src/wp-admin/menu.php +++ b/src/wp-admin/menu.php @@ -72,7 +72,7 @@ $menu[10] = array( __( 'Media' ), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'dashicons-admin-media' ); - $submenu['upload.php'][5] = array( __( 'Library' ), 'upload_files', 'upload.php' ); + $submenu['upload.php'][5] = array( _x( 'Library', 'media library menu item' ), 'upload_files', 'upload.php' ); $submenu['upload.php'][10] = array( __( 'Add Media File' ), 'upload_files', 'media-new.php' ); $submenu_index = 15; From 88fe6bf7a5defe8103d29324fc2ec85b24ed05b9 Mon Sep 17 00:00:00 2001 From: ramonopoly Date: Thu, 23 Apr 2026 01:09:24 +0000 Subject: [PATCH 019/327] Block Supports: strip custom CSS from blocks for users without edit_css capability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds capability-gated CSS stripping so that when a user without `edit_css` saves a post, any `style.css` block attributes are removed from block comments using `WP_Block_Parser::next_token()`. Props aaronrobertshaw, audrasjb, dmsnell, glendaviesnz, jonsurrell, ozgursar, ramonopoly, shailu25, westonruter. Follow-up to [64544]. Fixes #64771. git-svn-id: https://develop.svn.wordpress.org/trunk@62257 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/custom-css.php | 152 +++++++++++ .../wpStripCustomCssFromBlocks.php | 238 ++++++++++++++++++ 2 files changed, 390 insertions(+) create mode 100644 tests/phpunit/tests/block-supports/wpStripCustomCssFromBlocks.php diff --git a/src/wp-includes/block-supports/custom-css.php b/src/wp-includes/block-supports/custom-css.php index 9d5b13426f4ef..b931acf47bc02 100644 --- a/src/wp-includes/block-supports/custom-css.php +++ b/src/wp-includes/block-supports/custom-css.php @@ -124,6 +124,158 @@ function wp_register_custom_css_support( $block_type ) { } } +/** + * Strips `style.css` attributes from all blocks in post content. + * + * Uses {@see WP_Block_Parser::next_token()} to scan block tokens and surgically + * replace only the attribute JSON that changed — no parse_blocks() + + * serialize_blocks() round-trip needed. + * + * @since 7.0.0 + * @access private + * + * @param string $content Post content to filter, expected to be escaped with slashes. + * @return string Filtered post content with block custom CSS removed. + */ +function wp_strip_custom_css_from_blocks( $content ) { + if ( ! has_blocks( $content ) ) { + return $content; + } + + $unslashed = stripslashes( $content ); + + $parser = new WP_Block_Parser(); + $parser->document = $unslashed; + $parser->offset = 0; + $end = strlen( $unslashed ); + $replacements = array(); + + while ( $parser->offset < $end ) { + $next_token = $parser->next_token(); + + if ( 'no-more-tokens' === $next_token[0] ) { + break; + } + + list( $token_type, , $attrs, $start_offset, $token_length ) = $next_token; + + $parser->offset = $start_offset + $token_length; + + if ( 'block-opener' !== $token_type && 'void-block' !== $token_type ) { + continue; + } + + if ( ! isset( $attrs['style']['css'] ) ) { + continue; + } + + // Remove css and clean up empty style. + unset( $attrs['style']['css'] ); + if ( empty( $attrs['style'] ) ) { + unset( $attrs['style'] ); + } + + // Locate the JSON portion within the token. + $token_string = substr( $unslashed, $start_offset, $token_length ); + $json_rel_start = strcspn( $token_string, '{' ); + $json_rel_end = strrpos( $token_string, '}' ); + + $json_start = $start_offset + $json_rel_start; + $json_length = $json_rel_end - $json_rel_start + 1; + + // Re-encode attributes. If attrs is now empty, remove JSON and trailing space. + if ( empty( $attrs ) ) { + // Remove the trailing space after JSON. + $replacements[] = array( $json_start, $json_length + 1, '' ); + } else { + $replacements[] = array( $json_start, $json_length, serialize_block_attributes( $attrs ) ); + } + } + + if ( empty( $replacements ) ) { + return $content; + } + + // Build the result by splicing replacements into the original string. + $result = ''; + $was_at = 0; + + foreach ( $replacements as $replacement ) { + list( $offset, $length, $new_json ) = $replacement; + $result .= substr( $unslashed, $was_at, $offset - $was_at ) . $new_json; + $was_at = $offset + $length; + } + + if ( $was_at < $end ) { + $result .= substr( $unslashed, $was_at ); + } + + return addslashes( $result ); +} + +/** + * Adds the filters to strip custom CSS from block content on save. + * Priority of 8 to run before wp_filter_global_styles_post (priority 9) and wp_filter_post_kses (priority 10). + * + * @since 7.0.0 + * @access private + */ +function wp_custom_css_kses_init_filters() { + add_filter( 'content_save_pre', 'wp_strip_custom_css_from_blocks', 8 ); + add_filter( 'content_filtered_save_pre', 'wp_strip_custom_css_from_blocks', 8 ); +} + +/** + * Removes the filters that strip custom CSS from block content on save. + * Priority of 8 to run before wp_filter_global_styles_post (priority 9) and wp_filter_post_kses (priority 10). + * + * @since 7.0.0 + * @access private + */ +function wp_custom_css_remove_filters() { + remove_filter( 'content_save_pre', 'wp_strip_custom_css_from_blocks', 8 ); + remove_filter( 'content_filtered_save_pre', 'wp_strip_custom_css_from_blocks', 8 ); +} + +/** + * Registers the custom CSS content filters if the user does not have the edit_css capability. + * + * @since 7.0.0 + * @access private + */ +function wp_custom_css_kses_init() { + wp_custom_css_remove_filters(); + if ( ! current_user_can( 'edit_css' ) ) { + wp_custom_css_kses_init_filters(); + } +} + +/** + * Initializes custom CSS content filters when imported data should be filtered. + * + * Runs at priority 999 on {@see 'force_filtered_html_on_import'} to ensure it + * fires after general KSES initialization, independently of user capabilities. + * If the input of the filter is true it means we are in an import situation and should + * enable the custom CSS filters, independently of the user capabilities. + * + * @since 7.0.0 + * @access private + * + * @param mixed $arg Input argument of the filter. + * @return mixed Input argument of the filter. + */ +function wp_custom_css_force_filtered_html_on_import_filter( $arg ) { + if ( $arg ) { + wp_custom_css_kses_init_filters(); + } + return $arg; +} + +// Run before wp_filter_global_styles_post (priority 9) and wp_filter_post_kses (priority 10). +add_action( 'init', 'wp_custom_css_kses_init', 20 ); +add_action( 'set_current_user', 'wp_custom_css_kses_init' ); +add_filter( 'force_filtered_html_on_import', 'wp_custom_css_force_filtered_html_on_import_filter', 999 ); + // Register the block support. WP_Block_Supports::get_instance()->register( 'custom-css', diff --git a/tests/phpunit/tests/block-supports/wpStripCustomCssFromBlocks.php b/tests/phpunit/tests/block-supports/wpStripCustomCssFromBlocks.php new file mode 100644 index 0000000000000..1b6076ee185a4 --- /dev/null +++ b/tests/phpunit/tests/block-supports/wpStripCustomCssFromBlocks.php @@ -0,0 +1,238 @@ +assertArrayNotHasKey( 'css', $blocks[0]['attrs']['style'] ?? array(), $message ); + $this->assertArrayNotHasKey( 'style', $blocks[0]['attrs'] ?? array(), 'style key should be fully removed when css was the only property.' ); + } + + /** + * Data provider. + * + * @return array + */ + public function data_strips_css_from_blocks() { + return array( + 'single block' => array( + 'content' => '

Hello

', + 'message' => 'style.css should be stripped from block attributes.', + ), + ); + } + + /** + * Tests that style.css is stripped from nested inner blocks. + * + * @covers ::wp_strip_custom_css_from_blocks + * @ticket 64771 + */ + public function test_strips_css_from_inner_blocks() { + $content = '

Hello

'; + + $result = wp_unslash( wp_strip_custom_css_from_blocks( $content ) ); + $blocks = parse_blocks( $result ); + + $inner_block = $blocks[0]['innerBlocks'][0]; + $this->assertArrayNotHasKey( 'css', $inner_block['attrs']['style'] ?? array(), 'style.css should be stripped from inner block attributes.' ); + } + + /** + * Tests that content without blocks is returned unchanged. + * + * @covers ::wp_strip_custom_css_from_blocks + * @ticket 64771 + */ + public function test_returns_non_block_content_unchanged() { + $content = '

This is plain HTML content with no blocks.

'; + + $result = wp_strip_custom_css_from_blocks( $content ); + + $this->assertSame( $content, $result, 'Non-block content should be returned unchanged.' ); + } + + /** + * Tests that content without style.css attributes is returned unchanged. + * + * @covers ::wp_strip_custom_css_from_blocks + * @ticket 64771 + */ + public function test_returns_unchanged_when_no_css_attributes() { + $content = '

Hello

'; + + $result = wp_strip_custom_css_from_blocks( $content ); + + $this->assertSame( $content, $result, 'Content without style.css attributes should be returned unchanged.' ); + } + + /** + * Tests that other style properties are preserved when css is stripped. + * + * @covers ::wp_strip_custom_css_from_blocks + * @ticket 64771 + */ + public function test_preserves_other_style_properties() { + $content = '

Hello

'; + + $result = wp_unslash( wp_strip_custom_css_from_blocks( $content ) ); + $blocks = parse_blocks( $result ); + + $this->assertArrayNotHasKey( 'css', $blocks[0]['attrs']['style'], 'style.css should be stripped.' ); + $this->assertSame( '#ff0000', $blocks[0]['attrs']['style']['color']['text'], 'Other style properties should be preserved.' ); + } + + /** + * Tests that empty style object is cleaned up after stripping css. + * + * @covers ::wp_strip_custom_css_from_blocks + * @ticket 64771 + */ + public function test_cleans_up_empty_style_object() { + $content = '

Hello

'; + + $result = wp_unslash( wp_strip_custom_css_from_blocks( $content ) ); + $blocks = parse_blocks( $result ); + + $this->assertArrayNotHasKey( 'style', $blocks[0]['attrs'], 'Empty style object should be cleaned up after stripping css.' ); + } + + /** + * Tests that slashed content is handled correctly. + * + * @covers ::wp_strip_custom_css_from_blocks + * @ticket 64771 + */ + public function test_handles_slashed_content() { + $content = '

Hello

'; + $slashed = wp_slash( $content ); + + $result = wp_strip_custom_css_from_blocks( $slashed ); + $blocks = parse_blocks( wp_unslash( $result ) ); + + $this->assertArrayNotHasKey( 'css', $blocks[0]['attrs']['style'] ?? array(), 'style.css should be stripped even from slashed content.' ); + } + + /** + * Tests that the content_save_pre filter is added for a user without edit_css. + * + * @ticket 64771 + * + * @covers ::wp_custom_css_kses_init + * @covers ::wp_custom_css_kses_init_filters + */ + public function test_filter_added_for_user_without_edit_css() { + $author_id = self::factory()->user->create( array( 'role' => 'author' ) ); + wp_set_current_user( $author_id ); + wp_custom_css_kses_init(); + + $this->assertSame( 8, has_filter( 'content_save_pre', 'wp_strip_custom_css_from_blocks' ), 'content_save_pre filter should be added at priority 8 for users without edit_css.' ); + $this->assertSame( 8, has_filter( 'content_filtered_save_pre', 'wp_strip_custom_css_from_blocks' ), 'content_filtered_save_pre filter should be added at priority 8 for users without edit_css.' ); + + wp_set_current_user( 0 ); + wp_custom_css_remove_filters(); + } + + /** + * Tests that the content_save_pre filter is not added for a user with edit_css. + * + * @ticket 64771 + * + * @covers ::wp_custom_css_kses_init + * @covers ::wp_custom_css_remove_filters + */ + public function test_filter_not_added_for_user_with_edit_css() { + $admin_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); + if ( is_multisite() ) { + grant_super_admin( $admin_id ); + } + wp_set_current_user( $admin_id ); + wp_custom_css_kses_init(); + + $this->assertFalse( has_filter( 'content_save_pre', 'wp_strip_custom_css_from_blocks' ), 'content_save_pre filter should not be added for users with edit_css.' ); + $this->assertFalse( has_filter( 'content_filtered_save_pre', 'wp_strip_custom_css_from_blocks' ), 'content_filtered_save_pre filter should not be added for users with edit_css.' ); + + if ( is_multisite() ) { + revoke_super_admin( $admin_id ); + } + wp_set_current_user( 0 ); + wp_custom_css_remove_filters(); + } + + /** + * Tests that switching to a user with edit_css removes the filter via the set_current_user action. + * + * wp_custom_css_kses_init() is hooked to set_current_user, so wp_set_current_user() + * alone should update the filter state without a manual call. + * + * @ticket 64771 + * + * @covers ::wp_custom_css_kses_init + */ + public function test_set_current_user_action_triggers_reinit() { + $admin_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); + $author_id = self::factory()->user->create( array( 'role' => 'author' ) ); + if ( is_multisite() ) { + grant_super_admin( $admin_id ); + } + + // Switching to a user without edit_css should add the filter via the set_current_user action. + wp_set_current_user( $author_id ); + $this->assertNotFalse( has_filter( 'content_save_pre', 'wp_strip_custom_css_from_blocks' ), 'Filter should be active for user without edit_css.' ); + + // Switching to a user with edit_css should remove the filter via the set_current_user action. + wp_set_current_user( $admin_id ); + $this->assertFalse( has_filter( 'content_save_pre', 'wp_strip_custom_css_from_blocks' ), 'Filter should be removed after switching to a user with edit_css.' ); + + if ( is_multisite() ) { + revoke_super_admin( $admin_id ); + } + wp_set_current_user( 0 ); + wp_custom_css_remove_filters(); + } + + /** + * Tests that the filter is enabled during import regardless of user capability. + * + * @ticket 64771 + * + * @covers ::wp_custom_css_force_filtered_html_on_import_filter + */ + public function test_force_filtered_html_on_import_enables_filter_for_privileged_user() { + $admin_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); + if ( is_multisite() ) { + grant_super_admin( $admin_id ); + } + wp_set_current_user( $admin_id ); + wp_custom_css_kses_init(); + + $this->assertFalse( has_filter( 'content_save_pre', 'wp_strip_custom_css_from_blocks' ), 'Filter should not be active for admin before import.' ); + + apply_filters( 'force_filtered_html_on_import', true ); + + $this->assertNotFalse( has_filter( 'content_save_pre', 'wp_strip_custom_css_from_blocks' ), 'Filter should be enabled during import regardless of user capability.' ); + + if ( is_multisite() ) { + revoke_super_admin( $admin_id ); + } + wp_set_current_user( 0 ); + wp_custom_css_remove_filters(); + } +} From adf6443199d31d971b0600c970b1ff919c755955 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 23 Apr 2026 05:09:23 +0000 Subject: [PATCH 020/327] Build/Test Tools: Consolidate vendor file copying to ensure `.min.js` files are minified. Relocates the copying of vendor JavaScript files back to the `grunt copy:vendor-js` subtask to ensure the files are in place prior to the `grunt uglify` step running to minify the files. Props desrosj. Fixes #65007. See #64393. git-svn-id: https://develop.svn.wordpress.org/trunk@62258 602fd350-edb4-49c9-b593-d223f7449a82 --- Gruntfile.js | 76 +++++++++++--- package.json | 3 +- tools/vendors/copy-vendors.js | 185 ---------------------------------- 3 files changed, 63 insertions(+), 201 deletions(-) delete mode 100644 tools/vendors/copy-vendors.js diff --git a/Gruntfile.js b/Gruntfile.js index 5f9109fac3cb0..8863d030627b8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -397,6 +397,55 @@ module.exports = function(grunt) { 'suggest*' ], dest: WORKING_DIR + 'wp-includes/js/jquery/' + }, + { + [ WORKING_DIR + 'wp-includes/js/dist/vendor/lodash.js' ]: [ './node_modules/lodash/lodash.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/lodash.min.js' ]: [ './node_modules/lodash/lodash.min.js' ], + }, + { + [ WORKING_DIR + 'wp-includes/js/dist/vendor/moment.js' ]: [ './node_modules/moment/moment.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/moment.min.js' ]: [ './node_modules/moment/min/moment.min.js' ], + }, + { + [ WORKING_DIR + 'wp-includes/js/dist/vendor/regenerator-runtime.js' ]: [ './node_modules/regenerator-runtime/runtime.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/regenerator-runtime.min.js' ]: [ './node_modules/regenerator-runtime/runtime.js' ], + }, + // React libraries: react, react-dom + { + [ WORKING_DIR + 'wp-includes/js/dist/vendor/react.js' ]: [ './node_modules/react/umd/react.development.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/react.min.js' ]: [ './node_modules/react/umd/react.production.min.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/react-dom.js' ]: [ './node_modules/react-dom/umd/react-dom.development.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/react-dom.min.js' ]: [ './node_modules/react-dom/umd/react-dom.production.min.js' ], + }, + // Polyfills + { + // @wordpress/babel-preset-default + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill.js' ]: [ './node_modules/@wordpress/babel-preset-default/build/polyfill.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill.min.js' ]: [ './node_modules/@wordpress/babel-preset-default/build/polyfill.min.js' ], + // polyfill-library (DOMRect) + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-dom-rect.js' ]: [ './node_modules/polyfill-library/polyfills/__dist/DOMRect/raw.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-dom-rect.min.js' ]: [ './node_modules/polyfill-library/polyfills/__dist/DOMRect/min.js' ], + // element-closest + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-element-closest.js' ]: [ './node_modules/element-closest/browser.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-element-closest.min.js' ]: [ './node_modules/element-closest/browser.js' ], + // whatwg-fetch + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-fetch.js' ]: [ './node_modules/whatwg-fetch/dist/fetch.umd.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js' ]: [ './node_modules/whatwg-fetch/dist/fetch.umd.js' ], + // formdata-polyfill + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-formdata.js' ]: [ './node_modules/formdata-polyfill/FormData.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-formdata.min.js' ]: [ './node_modules/formdata-polyfill/formdata.min.js' ], + // wicg-inert + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-inert.js' ]: [ './node_modules/wicg-inert/dist/inert.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-inert.min.js' ]: [ './node_modules/wicg-inert/dist/inert.min.js' ], + // polyfill-library (Node.prototype.contains) + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-node-contains.js' ]: [ './node_modules/polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-node-contains.min.js' ]: [ './node_modules/polyfill-library/polyfills/__dist/Node.prototype.contains/min.js' ], + // objectFitPolyfill + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-object-fit.js' ]: [ './node_modules/objectFitPolyfill/src/objectFitPolyfill.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-object-fit.min.js' ]: [ './node_modules/objectFitPolyfill/dist/objectFitPolyfill.min.js' ], + // core-js-url-browser + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-url.js' ]: [ './node_modules/core-js-url-browser/url.js' ], + [ WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-url.min.js' ]: [ './node_modules/core-js-url-browser/url.min.js' ], } ].concat( // Copy tinymce.js only when building to /src. @@ -1107,6 +1156,14 @@ module.exports = function(grunt) { src: WORKING_DIR + 'wp-includes/js/dist/vendor/moment.js', dest: WORKING_DIR + 'wp-includes/js/dist/vendor/moment.min.js' }, + 'regenerator-runtime': { + src: WORKING_DIR + 'wp-includes/js/dist/vendor/regenerator-runtime.js', + dest: WORKING_DIR + 'wp-includes/js/dist/vendor/regenerator-runtime.min.js' + }, + 'wp-polyfill-fetch': { + src: WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-fetch.js', + dest: WORKING_DIR + 'wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js' + }, dynamic: { expand: true, cwd: WORKING_DIR, @@ -1635,18 +1692,6 @@ module.exports = function(grunt) { } ); } ); - grunt.registerTask( 'copy-vendor-scripts', 'Copies vendor scripts from node_modules to wp-includes/js/dist/vendor/.', function() { - const done = this.async(); - const buildDir = grunt.option( 'dev' ) ? 'src' : 'build'; - grunt.util.spawn( { - cmd: 'node', - args: [ 'tools/vendors/copy-vendors.js', `--build-dir=${ buildDir }` ], - opts: { stdio: 'inherit' } - }, function( error ) { - done( ! error ); - } ); - } ); - grunt.renameTask( 'watch', '_watch' ); grunt.registerTask( 'watch', function() { @@ -1675,6 +1720,8 @@ module.exports = function(grunt) { 'uglify:imgareaselect', 'uglify:jqueryform', 'uglify:moment', + 'uglify:regenerator-runtime', + 'uglify:wp-polyfill-fetch', 'qunit:compiled' ] ); @@ -1817,7 +1864,9 @@ module.exports = function(grunt) { 'uglify:jquery-ui', 'uglify:imgareaselect', 'uglify:jqueryform', - 'uglify:moment' + 'uglify:moment', + 'uglify:regenerator-runtime', + 'uglify:wp-polyfill-fetch' ] ); grunt.registerTask( 'build:codemirror', [ @@ -1837,7 +1886,6 @@ module.exports = function(grunt) { 'clean:js', 'build:webpack', 'copy:js', - 'copy-vendor-scripts', 'file_append', 'uglify:all', 'concat:tinymce', diff --git a/package.json b/package.json index 4d0b8110e0a9f..6f3cd1fbe6c3e 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,6 @@ "typecheck:php": "node ./tools/local-env/scripts/docker.js run --rm php composer phpstan", "gutenberg:copy": "node tools/gutenberg/copy.js", "gutenberg:verify": "node tools/gutenberg/utils.js", - "gutenberg:download": "node tools/gutenberg/download.js && grunt build:gutenberg --dev", - "vendor:copy": "node tools/vendors/copy-vendors.js" + "gutenberg:download": "node tools/gutenberg/download.js && grunt build:gutenberg --dev" } } diff --git a/tools/vendors/copy-vendors.js b/tools/vendors/copy-vendors.js deleted file mode 100644 index 12660fc639645..0000000000000 --- a/tools/vendors/copy-vendors.js +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env node - -/** - * Copy Vendor Scripts - * - * This script copies vendor dependencies from node_modules to wp-includes/js/dist/vendor/. - * These are Core's own dependencies (moment, lodash, regenerator-runtime, polyfills, etc.) - * separate from Gutenberg packages. - * - * @package WordPress - */ - -const fs = require( 'fs' ); -const path = require( 'path' ); - -// Paths -const rootDir = path.resolve( __dirname, '../..' ); -const nodeModulesDir = path.join( rootDir, 'node_modules' ); - -// Parse command line arguments -const args = process.argv.slice( 2 ); -const buildDirArg = args.find( arg => arg.startsWith( '--build-dir=' ) ); -const buildTarget = buildDirArg - ? buildDirArg.split( '=' )[1] - : ( args.includes( '--dev' ) ? 'src' : 'build' ); - -const vendorDir = path.join( rootDir, buildTarget, 'wp-includes/js/dist/vendor' ); - -/** - * Vendor files to copy from node_modules. - */ -const VENDOR_FILES = { - // Moment.js - 'moment': { - files: [ - { from: 'moment/moment.js', to: 'moment.js' }, - { from: 'moment/min/moment.min.js', to: 'moment.min.js' }, - ], - }, - - // Lodash - 'lodash': { - files: [ - { from: 'lodash/lodash.js', to: 'lodash.js' }, - { from: 'lodash/lodash.min.js', to: 'lodash.min.js' }, - ], - }, - - // Regenerator Runtime - 'regenerator-runtime': { - files: [ - { from: 'regenerator-runtime/runtime.js', to: 'regenerator-runtime.js' }, - { from: 'regenerator-runtime/runtime.js', to: 'regenerator-runtime.min.js' }, - ], - }, - - // React (UMD builds from node_modules) - 'react': { - files: [ - { from: 'react/umd/react.development.js', to: 'react.js' }, - { from: 'react/umd/react.production.min.js', to: 'react.min.js' }, - ], - }, - - // React DOM (UMD builds from node_modules) - 'react-dom': { - files: [ - { from: 'react-dom/umd/react-dom.development.js', to: 'react-dom.js' }, - { from: 'react-dom/umd/react-dom.production.min.js', to: 'react-dom.min.js' }, - ], - }, - - // Main Polyfill bundle - 'wp-polyfill': { - files: [ - { from: '@wordpress/babel-preset-default/build/polyfill.js', to: 'wp-polyfill.js' }, - { from: '@wordpress/babel-preset-default/build/polyfill.min.js', to: 'wp-polyfill.min.js' }, - ], - }, - - // Polyfills - Fetch (same source for both - was minified by webpack) - 'wp-polyfill-fetch': { - files: [ - { from: 'whatwg-fetch/dist/fetch.umd.js', to: 'wp-polyfill-fetch.js' }, - { from: 'whatwg-fetch/dist/fetch.umd.js', to: 'wp-polyfill-fetch.min.js' }, - ], - }, - - // Polyfills - FormData - 'wp-polyfill-formdata': { - files: [ - { from: 'formdata-polyfill/FormData.js', to: 'wp-polyfill-formdata.js' }, - { from: 'formdata-polyfill/formdata.min.js', to: 'wp-polyfill-formdata.min.js' }, - ], - }, - - // Polyfills - Element Closest (same for both) - 'wp-polyfill-element-closest': { - files: [ - { from: 'element-closest/browser.js', to: 'wp-polyfill-element-closest.js' }, - { from: 'element-closest/browser.js', to: 'wp-polyfill-element-closest.min.js' }, - ], - }, - - // Polyfills - Object Fit - 'wp-polyfill-object-fit': { - files: [ - { from: 'objectFitPolyfill/src/objectFitPolyfill.js', to: 'wp-polyfill-object-fit.js' }, - { from: 'objectFitPolyfill/dist/objectFitPolyfill.min.js', to: 'wp-polyfill-object-fit.min.js' }, - ], - }, - - // Polyfills - Inert - 'wp-polyfill-inert': { - files: [ - { from: 'wicg-inert/dist/inert.js', to: 'wp-polyfill-inert.js' }, - { from: 'wicg-inert/dist/inert.min.js', to: 'wp-polyfill-inert.min.js' }, - ], - }, - - // Polyfills - URL - 'wp-polyfill-url': { - files: [ - { from: 'core-js-url-browser/url.js', to: 'wp-polyfill-url.js' }, - { from: 'core-js-url-browser/url.min.js', to: 'wp-polyfill-url.min.js' }, - ], - }, - - // Polyfills - DOMRect (same source for both - was minified by webpack) - 'wp-polyfill-dom-rect': { - files: [ - { from: 'polyfill-library/polyfills/__dist/DOMRect/raw.js', to: 'wp-polyfill-dom-rect.js' }, - { from: 'polyfill-library/polyfills/__dist/DOMRect/raw.js', to: 'wp-polyfill-dom-rect.min.js' }, - ], - }, - - // Polyfills - Node.contains (same source for both - was minified by webpack) - 'wp-polyfill-node-contains': { - files: [ - { from: 'polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js', to: 'wp-polyfill-node-contains.js' }, - { from: 'polyfill-library/polyfills/__dist/Node.prototype.contains/raw.js', to: 'wp-polyfill-node-contains.min.js' }, - ], - }, -}; - -/** - * Main execution function. - */ -async function main() { - console.log( '📦 Copying vendor scripts from node_modules...' ); - console.log( ` Build target: ${ buildTarget }/` ); - - // Create vendor directory - fs.mkdirSync( vendorDir, { recursive: true } ); - - let copied = 0; - let skipped = 0; - - for ( const [ vendor, config ] of Object.entries( VENDOR_FILES ) ) { - for ( const file of config.files ) { - const srcPath = path.join( nodeModulesDir, file.from ); - const destPath = path.join( vendorDir, file.to ); - - if ( fs.existsSync( srcPath ) ) { - fs.copyFileSync( srcPath, destPath ); - copied++; - } else { - console.log( ` ⚠️ Skipping ${ file.to }: source not found` ); - skipped++; - } - } - } - - console.log( `\n✅ Vendor scripts copied!` ); - console.log( ` Copied: ${ copied } files` ); - if ( skipped > 0 ) { - console.log( ` Skipped: ${ skipped } files` ); - } -} - -// Run main function -main().catch( ( error ) => { - console.error( '❌ Unexpected error:', error ); - process.exit( 1 ); -} ); From a95dd0e0351a9fb2ef124ea1b8be63bf6887b946 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Thu, 23 Apr 2026 22:12:40 +0000 Subject: [PATCH 021/327] Tests: Add missing `@covers` tags for `WP_Block_Parser` tests. Includes moving the data provider after the corresponding test for consistency with the rest of the test suite. Follow-up to [43751]. Props sagardeshmukh. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62259 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/blocks/wpBlockParser.php | 56 +++++++++++--------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/tests/phpunit/tests/blocks/wpBlockParser.php b/tests/phpunit/tests/blocks/wpBlockParser.php index d88849d956dd6..4523f0ec4ed04 100644 --- a/tests/phpunit/tests/blocks/wpBlockParser.php +++ b/tests/phpunit/tests/blocks/wpBlockParser.php @@ -7,6 +7,8 @@ * @since 5.0.0 * * @group blocks + * + * @coversDefaultClass WP_Block_Parser */ class Tests_Blocks_wpBlockParser extends WP_UnitTestCase { /** @@ -17,35 +19,11 @@ class Tests_Blocks_wpBlockParser extends WP_UnitTestCase { */ protected static $fixtures_dir; - /** - * @ticket 45109 - */ - public function data_parsing_test_filenames() { - self::$fixtures_dir = DIR_TESTDATA . '/blocks/fixtures'; - - $fixture_filenames = array_merge( - glob( self::$fixtures_dir . '/*.json' ), - glob( self::$fixtures_dir . '/*.html' ) - ); - - $fixture_filenames = array_values( - array_unique( - array_map( - array( $this, 'clean_fixture_filename' ), - $fixture_filenames - ) - ) - ); - - return array_map( - array( $this, 'pass_parser_fixture_filenames' ), - $fixture_filenames - ); - } - /** * @dataProvider data_parsing_test_filenames * @ticket 45109 + * + * @covers ::parse */ public function test_default_parser_output( $html_filename, $parsed_json_filename ) { $html_path = self::$fixtures_dir . '/' . $html_filename; @@ -70,6 +48,32 @@ public function test_default_parser_output( $html_filename, $parsed_json_filenam ); } + /** + * @ticket 45109 + */ + public function data_parsing_test_filenames() { + self::$fixtures_dir = DIR_TESTDATA . '/blocks/fixtures'; + + $fixture_filenames = array_merge( + glob( self::$fixtures_dir . '/*.json' ), + glob( self::$fixtures_dir . '/*.html' ) + ); + + $fixture_filenames = array_values( + array_unique( + array_map( + array( $this, 'clean_fixture_filename' ), + $fixture_filenames + ) + ) + ); + + return array_map( + array( $this, 'pass_parser_fixture_filenames' ), + $fixture_filenames + ); + } + /** * Helper function to remove relative paths and extension from a filename, leaving just the fixture name. * From 59a9905fec02392bc2eda5b4d7c60768ce8be8ef Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Fri, 24 Apr 2026 18:53:08 +0000 Subject: [PATCH 022/327] Tests: Correct `@covers` tags for `WP_Error` tests. Includes removing redundant tags to help clarify the purpose of each individual test. Follow-up to [42255], [50339]. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62260 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/general/wpError.php | 77 ------------------------- 1 file changed, 77 deletions(-) diff --git a/tests/phpunit/tests/general/wpError.php b/tests/phpunit/tests/general/wpError.php index fee4233d6ab2d..cae5b2593f2cb 100644 --- a/tests/phpunit/tests/general/wpError.php +++ b/tests/phpunit/tests/general/wpError.php @@ -5,7 +5,6 @@ * @group general * @group errors * - * @covers WP_Error * @coversDefaultClass WP_Error */ class Tests_General_wpError extends WP_UnitTestCase { @@ -42,7 +41,6 @@ public function test_WP_Error_with_default_empty_parameters_should_add_no_errors /** * @covers ::__construct - * @covers ::get_error_code */ public function test_WP_Error_with_empty_code_should_add_no_code() { $this->assertSame( '', $this->wp_error->get_error_code() ); @@ -50,7 +48,6 @@ public function test_WP_Error_with_empty_code_should_add_no_code() { /** * @covers ::__construct - * @covers ::get_error_message */ public function test_WP_Error_with_empty_code_should_add_no_message() { $this->assertSame( '', $this->wp_error->get_error_message() ); @@ -65,7 +62,6 @@ public function test_WP_Error_with_empty_code_should_add_no_error_data() { /** * @covers ::__construct - * @covers ::get_error_code */ public function test_WP_Error_with_code_and_empty_message_should_add_error_with_that_code() { $wp_error = new WP_Error( 'code' ); @@ -75,7 +71,6 @@ public function test_WP_Error_with_code_and_empty_message_should_add_error_with_ /** * @covers ::__construct - * @covers ::get_error_message */ public function test_WP_Error_with_code_and_empty_message_should_add_error_with_that_code_and_empty_message() { $wp_error = new WP_Error( 'code' ); @@ -85,7 +80,6 @@ public function test_WP_Error_with_code_and_empty_message_should_add_error_with_ /** * @covers ::__construct - * @covers ::get_error_data */ public function test_WP_Error_with_code_and_empty_message_and_empty_data_should_add_error_but_not_associated_data() { $wp_error = new WP_Error( 'code' ); @@ -95,7 +89,6 @@ public function test_WP_Error_with_code_and_empty_message_and_empty_data_should_ /** * @covers ::__construct - * @covers ::get_error_data */ public function test_WP_Error_with_code_and_empty_message_and_non_empty_data_should_add_error_with_empty_message_and_that_stored_data() { $wp_error = new WP_Error( 'code', '', 'data' ); @@ -105,7 +98,6 @@ public function test_WP_Error_with_code_and_empty_message_and_non_empty_data_sho /** * @covers ::__construct - * @covers ::get_error_code */ public function test_WP_Error_with_code_and_message_should_add_error_with_that_code() { $wp_error = new WP_Error( 'code', 'message' ); @@ -115,7 +107,6 @@ public function test_WP_Error_with_code_and_message_should_add_error_with_that_c /** * @covers ::__construct - * @covers ::get_error_message */ public function test_WP_Error_with_code_and_message_should_add_error_with_that_message() { $wp_error = new WP_Error( 'code', 'message' ); @@ -125,7 +116,6 @@ public function test_WP_Error_with_code_and_message_should_add_error_with_that_m /** * @covers ::__construct - * @covers ::get_error_code */ public function test_WP_Error_with_code_and_message_and_data_should_add_error_with_that_code() { $wp_error = new WP_Error( 'code', 'message', 'data' ); @@ -135,7 +125,6 @@ public function test_WP_Error_with_code_and_message_and_data_should_add_error_wi /** * @covers ::__construct - * @covers ::get_error_message */ public function test_WP_Error_with_code_and_message_and_data_should_add_error_with_that_message() { $wp_error = new WP_Error( 'code', 'message', 'data' ); @@ -145,7 +134,6 @@ public function test_WP_Error_with_code_and_message_and_data_should_add_error_wi /** * @covers ::__construct - * @covers ::get_error_data */ public function test_WP_Error_with_code_and_message_and_data_should_add_error_with_that_data() { $wp_error = new WP_Error( 'code', 'message', 'data' ); @@ -154,7 +142,6 @@ public function test_WP_Error_with_code_and_message_and_data_should_add_error_wi } /** - * @covers ::__construct * @covers ::get_error_codes */ public function test_get_error_codes_with_no_errors_should_return_empty_array() { @@ -162,7 +149,6 @@ public function test_get_error_codes_with_no_errors_should_return_empty_array() } /** - * @covers ::add * @covers ::get_error_codes */ public function test_get_error_codes_with_one_error_should_return_an_array_with_only_that_code() { @@ -172,7 +158,6 @@ public function test_get_error_codes_with_one_error_should_return_an_array_with_ } /** - * @covers ::add * @covers ::get_error_codes */ public function test_get_error_codes_with_multiple_errors_should_return_an_array_of_those_codes() { @@ -185,7 +170,6 @@ public function test_get_error_codes_with_multiple_errors_should_return_an_array } /** - * @covers ::__construct * @covers ::get_error_code */ public function test_get_error_code_with_no_errors_should_return_an_empty_string() { @@ -193,7 +177,6 @@ public function test_get_error_code_with_no_errors_should_return_an_empty_string } /** - * @covers ::add * @covers ::get_error_code */ public function test_get_error_code_with_one_error_should_return_that_error_code() { @@ -203,7 +186,6 @@ public function test_get_error_code_with_one_error_should_return_that_error_code } /** - * @covers ::add * @covers ::get_error_code */ public function test_get_error_code_with_multiple_errors_should_return_only_the_first_error_code() { @@ -214,7 +196,6 @@ public function test_get_error_code_with_multiple_errors_should_return_only_the_ } /** - * @covers ::__construct * @covers ::get_error_messages */ public function test_get_error_messages_with_empty_code_and_no_errors_should_return_an_empty_array() { @@ -222,7 +203,6 @@ public function test_get_error_messages_with_empty_code_and_no_errors_should_ret } /** - * @covers ::add * @covers ::get_error_messages */ public function test_get_error_messages_with_empty_code_one_error_should_return_an_array_with_that_message() { @@ -232,7 +212,6 @@ public function test_get_error_messages_with_empty_code_one_error_should_return_ } /** - * @covers ::add * @covers ::get_error_messages */ public function test_get_error_messages_with_empty_code_multiple_errors_should_return_an_array_of_messages() { @@ -243,7 +222,6 @@ public function test_get_error_messages_with_empty_code_multiple_errors_should_r } /** - * @covers ::__construct * @covers ::get_error_messages */ public function test_get_error_messages_with_an_invalid_code_should_return_an_empty_array() { @@ -251,7 +229,6 @@ public function test_get_error_messages_with_an_invalid_code_should_return_an_em } /** - * @covers ::add * @covers ::get_error_messages */ public function test_get_error_messages_with_one_error_should_return_an_array_with_that_message() { @@ -261,7 +238,6 @@ public function test_get_error_messages_with_one_error_should_return_an_array_wi } /** - * @covers ::add * @covers ::get_error_messages */ public function test_get_error_messages_with_multiple_errors_same_code_should_return_an_array_with_all_messages() { @@ -272,7 +248,6 @@ public function test_get_error_messages_with_multiple_errors_same_code_should_re } /** - * @covers ::__construct * @covers ::get_error_message */ public function test_get_error_message_with_empty_code_and_no_errors_should_return_an_empty_string() { @@ -280,7 +255,6 @@ public function test_get_error_message_with_empty_code_and_no_errors_should_retu } /** - * @covers ::add * @covers ::get_error_message */ public function test_get_error_message_with_empty_code_and_one_error_should_return_that_message() { @@ -290,7 +264,6 @@ public function test_get_error_message_with_empty_code_and_one_error_should_retu } /** - * @covers ::add * @covers ::get_error_message */ public function test_get_error_message_with_empty_code_and_multiple_errors_should_return_the_first_message() { @@ -301,7 +274,6 @@ public function test_get_error_message_with_empty_code_and_multiple_errors_shoul } /** - * @covers ::add * @covers ::get_error_message */ public function test_get_error_message_with_empty_code_and_multiple_errors_multiple_codes_should_return_the_first_message() { @@ -313,7 +285,6 @@ public function test_get_error_message_with_empty_code_and_multiple_errors_multi } /** - * @covers ::__construct * @covers ::get_error_message */ public function test_get_error_message_with_invalid_code_and_no_errors_should_return_empty_string() { @@ -321,7 +292,6 @@ public function test_get_error_message_with_invalid_code_and_no_errors_should_re } /** - * @covers ::add * @covers ::get_error_message */ public function test_get_error_message_with_invalid_code_and_one_error_should_return_an_empty_string() { @@ -331,7 +301,6 @@ public function test_get_error_message_with_invalid_code_and_one_error_should_re } /** - * @covers ::add * @covers ::get_error_message */ public function test_get_error_message_with_invalid_code_and_multiple_errors_should_return_an_empty_string() { @@ -342,7 +311,6 @@ public function test_get_error_message_with_invalid_code_and_multiple_errors_sho } /** - * @covers ::__construct * @covers ::get_error_data */ public function test_get_error_data_with_empty_code_and_no_errors_should_evaluate_as_null() { @@ -350,7 +318,6 @@ public function test_get_error_data_with_empty_code_and_no_errors_should_evaluat } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_empty_code_one_error_no_data_should_evaluate_as_null() { @@ -360,7 +327,6 @@ public function test_get_error_data_with_empty_code_one_error_no_data_should_eva } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_empty_code_multiple_errors_no_data_should_evaluate_as_null() { @@ -371,7 +337,6 @@ public function test_get_error_data_with_empty_code_multiple_errors_no_data_shou } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_empty_code_and_one_error_with_data_should_return_that_data() { @@ -382,7 +347,6 @@ public function test_get_error_data_with_empty_code_and_one_error_with_data_shou } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_empty_code_and_multiple_errors_different_codes_should_return_the_last_data_of_the_first_code() { @@ -394,7 +358,6 @@ public function test_get_error_data_with_empty_code_and_multiple_errors_differen } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_empty_code_and_multiple_errors_same_code_should_return_the_last_data_of_the_first_code() { @@ -406,7 +369,6 @@ public function test_get_error_data_with_empty_code_and_multiple_errors_same_cod } /** - * @covers ::__construct * @covers ::get_error_data */ public function test_get_error_data_with_code_and_no_errors_should_evaluate_as_null() { @@ -414,7 +376,6 @@ public function test_get_error_data_with_code_and_no_errors_should_evaluate_as_n } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_code_and_one_error_with_no_data_should_evaluate_as_null() { @@ -424,7 +385,6 @@ public function test_get_error_data_with_code_and_one_error_with_no_data_should_ } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_code_and_one_error_with_data_should_return_that_data() { @@ -435,7 +395,6 @@ public function test_get_error_data_with_code_and_one_error_with_data_should_ret } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_code_and_multiple_errors_different_codes_should_return_the_last_stored_data_of_the_code() { @@ -448,7 +407,6 @@ public function test_get_error_data_with_code_and_multiple_errors_different_code } /** - * @covers ::add * @covers ::get_error_data */ public function test_get_error_data_with_code_and_multiple_errors_same_code_should_return_the_last_stored_data() { @@ -460,7 +418,6 @@ public function test_get_error_data_with_code_and_multiple_errors_same_code_shou } /** - * @covers ::__construct * @covers ::get_all_error_data */ public function test_get_all_error_data_with_code_and_no_errors_should_evaluate_as_empty_array() { @@ -468,7 +425,6 @@ public function test_get_all_error_data_with_code_and_no_errors_should_evaluate_ } /** - * @covers ::add * @covers ::get_all_error_data */ public function test_get_all_error_data_with_code_and_one_error_with_no_data_should_evaluate_as_empty_array() { @@ -478,7 +434,6 @@ public function test_get_all_error_data_with_code_and_one_error_with_no_data_sho } /** - * @covers ::add * @covers ::get_all_error_data */ public function test_get_all_error_data_with_code_and_one_error_with_data_should_return_that_data() { @@ -491,7 +446,6 @@ public function test_get_all_error_data_with_code_and_one_error_with_data_should } /** - * @covers ::add * @covers ::get_all_error_data */ public function test_get_all_error_data_with_code_and_multiple_errors_same_code_should_return_all_data() { @@ -503,7 +457,6 @@ public function test_get_all_error_data_with_code_and_multiple_errors_same_code_ } /** - * @covers ::add * @covers ::get_all_error_data */ public function test_get_all_error_data_should_handle_manipulation_of_error_data_property() { @@ -517,7 +470,6 @@ public function test_get_all_error_data_should_handle_manipulation_of_error_data } /** - * @covers ::__construct * @covers ::has_errors */ public function test_has_errors_with_no_errors_returns_false() { @@ -525,7 +477,6 @@ public function test_has_errors_with_no_errors_returns_false() { } /** - * @covers ::add * @covers ::has_errors */ public function test_has_errors_with_errors_returns_true() { @@ -571,7 +522,6 @@ public function test_add_with_empty_code_empty_message_non_empty_data_should_sto /** * @covers ::add - * @covers ::get_error_code */ public function test_add_with_code_empty_message_empty_data_should_add_error_with_code() { $this->wp_error->add( 'code', '' ); @@ -581,7 +531,6 @@ public function test_add_with_code_empty_message_empty_data_should_add_error_wit /** * @covers ::add - * @covers ::get_error_message */ public function test_add_with_code_empty_message_empty_data_should_add_error_with_empty_message() { $this->wp_error->add( 'code', '' ); @@ -591,7 +540,6 @@ public function test_add_with_code_empty_message_empty_data_should_add_error_wit /** * @covers ::add - * @covers ::get_error_data */ public function test_add_with_code_empty_message_empty_data_should_not_add_error_data() { $this->wp_error->add( 'code', '' ); @@ -601,7 +549,6 @@ public function test_add_with_code_empty_message_empty_data_should_not_add_error /** * @covers ::add - * @covers ::get_error_message */ public function test_add_with_code_and_message_and_empty_data_should_should_add_error_with_that_message() { $this->wp_error->add( 'code', 'message' ); @@ -611,7 +558,6 @@ public function test_add_with_code_and_message_and_empty_data_should_should_add_ /** * @covers ::add - * @covers ::get_error_data */ public function test_add_with_code_and_message_and_empty_data_should_not_alter_stored_data() { $this->wp_error->add( 'code', 'message' ); @@ -621,7 +567,6 @@ public function test_add_with_code_and_message_and_empty_data_should_not_alter_s /** * @covers ::add - * @covers ::get_error_code */ public function test_add_with_code_and_empty_message_and_data_should_add_error_with_that_code() { $this->wp_error->add( 'code', '', 'data' ); @@ -631,7 +576,6 @@ public function test_add_with_code_and_empty_message_and_data_should_add_error_w /** * @covers ::add - * @covers ::get_error_data */ public function test_add_with_code_and_empty_message_and_data_should_store_that_data() { $this->wp_error->add( 'code', '', 'data' ); @@ -641,7 +585,6 @@ public function test_add_with_code_and_empty_message_and_data_should_store_that_ /** * @covers ::add - * @covers ::get_error_code */ public function test_add_with_code_and_message_and_data_should_add_an_error_with_that_code() { $this->wp_error->add( 'code', 'message', 'data' ); @@ -651,7 +594,6 @@ public function test_add_with_code_and_message_and_data_should_add_an_error_with /** * @covers ::add - * @covers ::get_error_message */ public function test_add_with_code_and_message_and_data_should_add_an_error_with_that_message() { $this->wp_error->add( 'code', 'message', 'data' ); @@ -661,7 +603,6 @@ public function test_add_with_code_and_message_and_data_should_add_an_error_with /** * @covers ::add - * @covers ::get_error_data */ public function test_add_with_code_and_message_and_data_should_store_that_data() { $this->wp_error->add( 'code', 'message', 'data' ); @@ -671,7 +612,6 @@ public function test_add_with_code_and_message_and_data_should_store_that_data() /** * @covers ::add - * @covers ::get_error_messages */ public function test_add_multiple_times_with_the_same_code_should_add_additional_messages_for_that_code() { $this->wp_error->add( 'code', 'message' ); @@ -684,7 +624,6 @@ public function test_add_multiple_times_with_the_same_code_should_add_additional /** * @covers ::add - * @covers ::get_error_data */ public function test_add_multiple_times_with_the_same_code_and_different_data_should_store_only_the_last_added_data() { $this->wp_error->add( 'code', 'message', 'data-bar' ); @@ -713,7 +652,6 @@ public function test_add_data_with_empty_data_empty_code_no_errors_should_create /** * @covers ::add_data - * @covers ::get_error_data */ public function test_add_data_with_data_empty_code_and_one_error_should_store_the_data_under_that_code() { $this->wp_error->add( 'code', 'message' ); @@ -724,7 +662,6 @@ public function test_add_data_with_data_empty_code_and_one_error_should_store_th /** * @covers ::add_data - * @covers ::get_error_data */ public function test_add_data_with_data_empty_code_and_multiple_errors_with_different_codes_should_store_it_under_the_first_code() { $this->wp_error->add( 'code', 'message' ); @@ -737,7 +674,6 @@ public function test_add_data_with_data_empty_code_and_multiple_errors_with_diff /** * @covers ::add_data - * @covers ::get_error_data */ public function test_add_data_with_data_empty_code_and_multiple_errors_with_same_code_should_store_it_under_the_first_code() { $this->wp_error->add( 'code', 'message' ); @@ -791,7 +727,6 @@ public function test_add_data_with_data_and_code_one_error_different_code_should /** * @covers ::add_data - * @covers ::get_error_data */ public function test_add_data_with_data_and_code_should_add_data() { $this->wp_error->add( 'code', 'message' ); @@ -868,8 +803,6 @@ public function test_remove_should_remove_the_error_with_the_given_code() { /** * @covers ::remove - * @covers ::get_error_data - * @covers ::get_all_error_data */ public function test_remove_should_remove_the_error_data_associated_with_the_given_code() { $this->wp_error->add( 'code', 'message', 'data' ); @@ -884,10 +817,6 @@ public function test_remove_should_remove_the_error_data_associated_with_the_giv /** * @covers ::merge_from - * @covers ::get_error_messages - * @covers ::get_error_data - * @covers ::get_all_error_data - * @covers ::get_error_message */ public function test_merge_from_should_copy_other_error_into_instance() { $this->wp_error->add( 'code1', 'message1', 'data1' ); @@ -904,7 +833,6 @@ public function test_merge_from_should_copy_other_error_into_instance() { /** * @covers ::merge_from - * @covers ::has_errors */ public function test_merge_from_with_no_errors_should_not_add_to_instance() { $other = new WP_Error(); @@ -916,10 +844,6 @@ public function test_merge_from_with_no_errors_should_not_add_to_instance() { /** * @covers ::export_to - * @covers ::get_error_messages - * @covers ::get_error_data - * @covers ::get_all_error_data - * @covers ::get_error_message */ public function test_export_to_should_copy_instance_into_other_error() { $other = new WP_Error(); @@ -938,7 +862,6 @@ public function test_export_to_should_copy_instance_into_other_error() { /** * @covers ::export_to - * @covers ::has_errors */ public function test_export_to_with_no_errors_should_not_add_to_other_error() { $other = new WP_Error(); From c2e0a55a9c6aec981e16028829e00d0fefa37151 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sat, 25 Apr 2026 18:44:19 +0000 Subject: [PATCH 023/327] Tests: Add missing `@covers` tag for `register_block_type_from_metadata()` tests. Follow-up to [59132]. Props sagardeshmukh. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62261 602fd350-edb4-49c9-b593-d223f7449a82 --- .../tests/blocks/registerBlockTypeFromMetadataWithRegistry.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/phpunit/tests/blocks/registerBlockTypeFromMetadataWithRegistry.php b/tests/phpunit/tests/blocks/registerBlockTypeFromMetadataWithRegistry.php index 4cadfa91a33bd..b77c16660b0d9 100644 --- a/tests/phpunit/tests/blocks/registerBlockTypeFromMetadataWithRegistry.php +++ b/tests/phpunit/tests/blocks/registerBlockTypeFromMetadataWithRegistry.php @@ -3,6 +3,8 @@ * Tests for WP_Block_Metadata_Registry integration with register_block_type_from_metadata(). * * @group blocks + * + * @covers ::register_block_type_from_metadata */ class Tests_Blocks_RegisterBlockTypeFromMetadataWithRegistry extends WP_UnitTestCase { private $temp_manifest_file; From b95a327b304d01b097bebf76e6175d1cbe3dbf6e Mon Sep 17 00:00:00 2001 From: Jb Audras Date: Sun, 26 Apr 2026 07:02:59 +0000 Subject: [PATCH 024/327] Administration: Fix misaligned icon in user profile password field. This changeset corrects a misalignment issue affecting the show/hide button next to the password field. Props piyushpatel123, rajdiptank111, ankitkumarshah, andrewssanya, jdahir0789, gautammkgarg, gaurangsondagar, gaisma22, ugyensupport, abduremon, ankitmaru, darshitrajyaguru97, khushdoms, monzuralam. Fixes #65031. git-svn-id: https://develop.svn.wordpress.org/trunk@62262 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/forms.css | 5 +++++ src/wp-admin/user-edit.php | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/wp-admin/css/forms.css b/src/wp-admin/css/forms.css index e4e09ca1b6023..aa049e9df14f0 100644 --- a/src/wp-admin/css/forms.css +++ b/src/wp-admin/css/forms.css @@ -583,6 +583,11 @@ input[type="number"].tiny-text { vertical-align: middle; } +.button.wp-hide-pw.user-new-password-toggle > .dashicons { + line-height: 1.85; + vertical-align: top; +} + .wp-cancel-pw .dashicons-no { display: none; } diff --git a/src/wp-admin/user-edit.php b/src/wp-admin/user-edit.php index cfad6afbab8dc..c25380a93ee91 100644 --- a/src/wp-admin/user-edit.php +++ b/src/wp-admin/user-edit.php @@ -695,7 +695,7 @@ - From f695caa05a6c065ab4f87bd82e1482536f1d056b Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Sun, 26 Apr 2026 23:04:23 +0000 Subject: [PATCH 025/327] Administration: Resize classic editor slug field for new theme. Reduces the size and improves the alignment of the post slug field following the re-design of form elements as part of the new admin theme. Props wildworks, sabernhardt, audrasjb, dhruvang21, shailu25, joedolson, khushdoms, tusharaddweb. Fixes #65063. git-svn-id: https://develop.svn.wordpress.org/trunk@62263 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/_enqueues/admin/post.js | 2 +- src/wp-admin/css/edit.css | 7 +++++-- src/wp-includes/css/buttons.css | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/js/_enqueues/admin/post.js b/src/js/_enqueues/admin/post.js index 1dde10ffc8aae..d50fe6007d33b 100644 --- a/src/js/_enqueues/admin/post.js +++ b/src/js/_enqueues/admin/post.js @@ -1028,7 +1028,7 @@ jQuery( function($) { revert_e = $el.html(); buttons.html( - ' ' + + ' ' + '' ); diff --git a/src/wp-admin/css/edit.css b/src/wp-admin/css/edit.css index b98dd889c59fe..133616d335a6d 100644 --- a/src/wp-admin/css/edit.css +++ b/src/wp-admin/css/edit.css @@ -121,7 +121,6 @@ input#link_url { #edit-slug-box .cancel { margin-right: 10px; padding: 0; - font-size: 11px; } #comment-link-box { @@ -140,7 +139,7 @@ input#link_url { #editable-post-name input { font-size: 13px; font-weight: 400; - height: 24px; + min-height: 32px; margin: 0; width: 16em; } @@ -1068,6 +1067,10 @@ form#tags-filter { #edit-slug-box { padding: 0; } + + #editable-post-name input { + min-height: 40px; + } } @media only screen and (max-width: 1004px) { diff --git a/src/wp-includes/css/buttons.css b/src/wp-includes/css/buttons.css index e092764121b11..cb6e18dbffcb8 100644 --- a/src/wp-includes/css/buttons.css +++ b/src/wp-includes/css/buttons.css @@ -380,6 +380,7 @@ TABLE OF CONTENTS: .wp-core-ui .button, .wp-core-ui .button.button-large, + .wp-core-ui .button.button-compact, .wp-core-ui .button.button-small, input#publish, input#save-post, From 7ce10948ecc69c068725012d8be5400feaa85ab5 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sun, 26 Apr 2026 23:49:04 +0000 Subject: [PATCH 026/327] Tests: Move `@covers` tags to the class-level DocBlock in some block-related tests. See #64225. git-svn-id: https://develop.svn.wordpress.org/trunk@62264 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/blocks/getHookedBlocks.php | 9 ++------- tests/phpunit/tests/blocks/insertHookedBlocks.php | 13 ++----------- ...ookedBlocksAndSetIgnoredHookedBlocksMetadata.php | 1 + 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/tests/phpunit/tests/blocks/getHookedBlocks.php b/tests/phpunit/tests/blocks/getHookedBlocks.php index 8301aed0e3a09..83a741b4d0771 100644 --- a/tests/phpunit/tests/blocks/getHookedBlocks.php +++ b/tests/phpunit/tests/blocks/getHookedBlocks.php @@ -9,6 +9,8 @@ * * @group blocks * @group block-hooks + * + * @covers ::get_hooked_blocks */ class Tests_Blocks_GetHookedBlocks extends WP_UnitTestCase { @@ -58,8 +60,6 @@ private function switch_to_block_theme_hooked_blocks() { /** * @ticket 59383 - * - * @covers ::get_hooked_blocks */ public function test_get_hooked_blocks_no_match_found() { $result = get_hooked_blocks(); @@ -69,8 +69,6 @@ public function test_get_hooked_blocks_no_match_found() { /** * @ticket 59383 - * - * @covers ::get_hooked_blocks */ public function test_get_hooked_blocks_matches_found() { register_block_type( @@ -138,7 +136,6 @@ public function test_get_hooked_blocks_matches_found() { * @ticket 60008 * @ticket 60506 * - * @covers ::get_hooked_blocks * @covers ::get_block_file_template */ public function test_loading_template_with_hooked_blocks() { @@ -170,7 +167,6 @@ public function test_loading_template_with_hooked_blocks() { * @ticket 60008 * @ticket 60506 * - * @covers ::get_hooked_blocks * @covers ::get_block_file_template */ public function test_loading_template_part_with_hooked_blocks() { @@ -202,7 +198,6 @@ public function test_loading_template_part_with_hooked_blocks() { * @ticket 60008 * @ticket 60506 * - * @covers ::get_hooked_blocks * @covers WP_Block_Patterns_Registry::get_registered */ public function test_loading_pattern_with_hooked_blocks() { diff --git a/tests/phpunit/tests/blocks/insertHookedBlocks.php b/tests/phpunit/tests/blocks/insertHookedBlocks.php index cf99b213e518c..552e04f86102d 100644 --- a/tests/phpunit/tests/blocks/insertHookedBlocks.php +++ b/tests/phpunit/tests/blocks/insertHookedBlocks.php @@ -9,6 +9,8 @@ * * @group blocks * @group block-hooks + * + * @covers ::insert_hooked_blocks */ class Tests_Blocks_InsertHookedBlocks extends WP_UnitTestCase { const ANCHOR_BLOCK_TYPE = 'tests/anchor-block'; @@ -26,8 +28,6 @@ class Tests_Blocks_InsertHookedBlocks extends WP_UnitTestCase { * @ticket 59572 * @ticket 60126 * @ticket 60506 - * - * @covers ::insert_hooked_blocks */ public function test_insert_hooked_blocks_returns_correct_markup() { $anchor_block = array( @@ -46,8 +46,6 @@ public function test_insert_hooked_blocks_returns_correct_markup() { * @ticket 59572 * @ticket 60126 * @ticket 60506 - * - * @covers ::insert_hooked_blocks */ public function test_insert_hooked_blocks_if_block_is_ignored() { $anchor_block = array( @@ -71,8 +69,6 @@ public function test_insert_hooked_blocks_if_block_is_ignored() { * @ticket 59572 * @ticket 60126 * @ticket 60506 - * - * @covers ::insert_hooked_blocks */ public function test_insert_hooked_blocks_if_other_block_is_ignored() { $anchor_block = array( @@ -96,8 +92,6 @@ public function test_insert_hooked_blocks_if_other_block_is_ignored() { * @ticket 59572 * @ticket 60126 * @ticket 60506 - * - * @covers ::insert_hooked_blocks */ public function test_insert_hooked_blocks_filter_can_set_attributes() { $anchor_block = array( @@ -139,8 +133,6 @@ public function test_insert_hooked_blocks_filter_can_set_attributes() { * @ticket 59572 * @ticket 60126 * @ticket 60506 - * - * @covers ::insert_hooked_blocks */ public function test_insert_hooked_blocks_filter_can_wrap_block() { $anchor_block = array( @@ -184,7 +176,6 @@ public function test_insert_hooked_blocks_filter_can_wrap_block() { /** * @ticket 60580 * - * @covers ::insert_hooked_blocks */ public function test_insert_hooked_blocks_filter_can_suppress_hooked_block() { $anchor_block = array( diff --git a/tests/phpunit/tests/blocks/insertHookedBlocksAndSetIgnoredHookedBlocksMetadata.php b/tests/phpunit/tests/blocks/insertHookedBlocksAndSetIgnoredHookedBlocksMetadata.php index 8e88719fee262..ee3d8eb469d2f 100644 --- a/tests/phpunit/tests/blocks/insertHookedBlocksAndSetIgnoredHookedBlocksMetadata.php +++ b/tests/phpunit/tests/blocks/insertHookedBlocksAndSetIgnoredHookedBlocksMetadata.php @@ -9,6 +9,7 @@ * * @group blocks * @group block-hooks + * * @covers ::insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata */ class Tests_Blocks_InsertHookedBlocksAndSetIgnoredHookedBlocksMetadata extends WP_UnitTestCase { From d3474a5c2f6fbdfd18c7eb2807430b4d9ebc7c18 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Mon, 27 Apr 2026 02:10:15 +0000 Subject: [PATCH 027/327] Administration: Widen screen options number of items field. Modifies the Screen Options > Number of items per page field to avoid cropping of three digit numbers when setting a list view to display a lot of items. Props apermo, audrasjb, darshitrajyaguru97, ekla, gaurangsondagar, jigarkahar, juanmaguitar, khushdoms, peterwilsoncc, sabernhardt, shailu25, shatrumyatra, yusufmudagal. Fixes #65104. git-svn-id: https://develop.svn.wordpress.org/trunk@62268 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-screen.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-admin/includes/class-wp-screen.php b/src/wp-admin/includes/class-wp-screen.php index 838f0795cd5d3..227fda90c6273 100644 --- a/src/wp-admin/includes/class-wp-screen.php +++ b/src/wp-admin/includes/class-wp-screen.php @@ -1280,7 +1280,7 @@ public function render_per_page_options() { - From dce66cfe3b6a4523ea27117ef4e3716529981d1b Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Mon, 27 Apr 2026 03:39:06 +0000 Subject: [PATCH 028/327] Security: Update `composer/ca-bundle` to version `1.5.11`. This update adds 1 certificate to the bundle. Props desrosj. Fixes #64245. git-svn-id: https://develop.svn.wordpress.org/trunk@62271 602fd350-edb4-49c9-b593-d223f7449a82 --- composer.json | 2 +- src/wp-includes/certificates/ca-bundle.crt | 28 ++++++++++++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index ee5c5d0c0aa03..59df0a7af3770 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "ext-dom": "*" }, "require-dev": { - "composer/ca-bundle": "1.5.10", + "composer/ca-bundle": "1.5.11", "squizlabs/php_codesniffer": "3.13.5", "wp-coding-standards/wpcs": "~3.3.0", "phpcompatibility/phpcompatibility-wp": "~2.1.3", diff --git a/src/wp-includes/certificates/ca-bundle.crt b/src/wp-includes/certificates/ca-bundle.crt index 65be891eea878..a78e1dd471fa9 100644 --- a/src/wp-includes/certificates/ca-bundle.crt +++ b/src/wp-includes/certificates/ca-bundle.crt @@ -1,7 +1,7 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Tue Dec 2 04:12:02 2025 GMT +## Certificate data from Mozilla last updated on: Wed Feb 11 18:26:30 2026 GMT ## ## Find updated versions here: https://curl.se/docs/caextract.html ## @@ -15,8 +15,8 @@ ## an Apache+mod_ssl webserver for SSL client authentication. ## Just configure this file as the SSLCACertificateFile. ## -## Conversion done with mk-ca-bundle.pl version 1.30. -## SHA256: a903b3cd05231e39332515ef7ebe37e697262f39515a52015c23c62805b73cd0 +## Conversion done with mk-ca-bundle.pl version 1.32. +## SHA256: 3b98d4e3ff57a326d9587c33633039c8c3a9cf0b55f7ca581d7598ff329eb1f3 ## @@ -3480,8 +3480,8 @@ SM49BAMDA2kAMGYCMQCpKjAd0MKfkFFRQD6VVCHNFmb3U2wIFjnQEnx/Yxvf4zgAOdktUyBFCxxg ZzFDJe0CMQCSia7pXGKDYmH5LVerVrkR3SW+ak5KGoJr3M/TvEqzPNcum9v4KGm8ay3sMaE641c= -----END CERTIFICATE----- - OISTE Server Root RSA G1 -========================= +OISTE Server Root RSA G1 +======================== -----BEGIN CERTIFICATE----- MIIFgzCCA2ugAwIBAgIQVaXZZ5Qoxu0M+ifdWwFNGDANBgkqhkiG9w0BAQwFADBLMQswCQYDVQQG EwJDSDEZMBcGA1UECgwQT0lTVEUgRm91bmRhdGlvbjEhMB8GA1UEAwwYT0lTVEUgU2VydmVyIFJv @@ -3509,3 +3509,21 @@ msuY33OhkKCgxeDoAaijFJzIwZqsFVAzje18KotzlUBDJvyBpCpfOZC3J8tRd/iWkx7P8nd9H0aT olkelUTFLXVksNb54Dxp6gS1HAviRkRNQzuXSXERvSS2wq1yVAb+axj5d9spLFKebXd7Yv0PTY6Y MjAwcRLWJTXjn/hvnLXrahut6hDTlhZyBiElxky8j3C7DOReIoMt0r7+hVu05L0= -----END CERTIFICATE----- + +e-Szigno TLS Root CA 2023 +========================= +-----BEGIN CERTIFICATE----- +MIICzzCCAjGgAwIBAgINAOhvGHvWOWuYSkmYCjAKBggqhkjOPQQDBDB1MQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xFzAVBgNVBGEMDlZBVEhV +LTIzNTg0NDk3MSIwIAYDVQQDDBllLVN6aWdubyBUTFMgUm9vdCBDQSAyMDIzMB4XDTIzMDcxNzE0 +MDAwMFoXDTM4MDcxNzE0MDAwMFowdTELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRYw +FAYDVQQKDA1NaWNyb3NlYyBMdGQuMRcwFQYDVQRhDA5WQVRIVS0yMzU4NDQ5NzEiMCAGA1UEAwwZ +ZS1Temlnbm8gVExTIFJvb3QgQ0EgMjAyMzCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEAGgP36J8 +PKp0iGEKjcJMpQEiFNT3YHdCnAo4YKGMZz6zY+n6kbCLS+Y53wLCMAFSAL/fjO1ZrTJlqwlZULUZ +wmgcAOAFX9pQJhzDrAQixTpN7+lXWDajwRlTEArRzT/vSzUaQ49CE0y5LBqcvjC2xN7cS53kpDzL +Ltmt3999Cd8ukv+ho2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E +FgQUWYQCYlpGePVd3I8KECgj3NXW+0UwHwYDVR0jBBgwFoAUWYQCYlpGePVd3I8KECgj3NXW+0Uw +CgYIKoZIzj0EAwQDgYsAMIGHAkIBLdqu9S54tma4n7Zwf2Z0z+yOfP7AAXmazlIC58PRDHpty7Ve +7hekm9sEdu4pKeiv+62sUvTXK9Z3hBC9xdIoaDQCQTV2WnXzkoYI9bIeCvZlC9p2x1L/Cx6AcCIw +wzPbGO2E14vs7dOoY4G1VnxHx1YwlGhza9IuqbnZLBwpvQy6uWWL +-----END CERTIFICATE----- From 4b343a7eab821b617431d6c6ac985a4e7e783f1f Mon Sep 17 00:00:00 2001 From: Aki Hamano Date: Mon, 27 Apr 2026 04:36:06 +0000 Subject: [PATCH 029/327] Administration: Fix misaligned icon in user profile password field on mobile. In [62262], the show/hide button next to the password field was aligned using `line-height` and `vertical-align`. This approach left the icon misaligned on mobile viewports. Follow-up to [62262]. Props mukesh27, wildworks. Fixes #65031. git-svn-id: https://develop.svn.wordpress.org/trunk@62272 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/forms.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/wp-admin/css/forms.css b/src/wp-admin/css/forms.css index aa049e9df14f0..b48825a1ef5a3 100644 --- a/src/wp-admin/css/forms.css +++ b/src/wp-admin/css/forms.css @@ -583,9 +583,10 @@ input[type="number"].tiny-text { vertical-align: middle; } -.button.wp-hide-pw.user-new-password-toggle > .dashicons { - line-height: 1.85; - vertical-align: top; +.button.wp-hide-pw.user-new-password-toggle { + display: inline-flex; + align-items: center; + column-gap: 4px; } .wp-cancel-pw .dashicons-no { From 8270db8c06e89784c63350dff374c4cd237cf924 Mon Sep 17 00:00:00 2001 From: Aki Hamano Date: Mon, 27 Apr 2026 05:58:14 +0000 Subject: [PATCH 030/327] Revisions: Fix misplaced buttons in comparison UI. Align the Previous, Next, and Restore This Revision buttons consistently across viewports on the revisions comparison screen. Props audrasjb, mokshasharmila13, peterwilsoncc, presskopp, shailu25, wildworks. Fixes #65062. git-svn-id: https://develop.svn.wordpress.org/trunk@62273 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/revisions.css | 5 ----- src/wp-admin/includes/revision.php | 8 ++++---- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/wp-admin/css/revisions.css b/src/wp-admin/css/revisions.css index 4cb824c8574c2..da238456178fc 100644 --- a/src/wp-admin/css/revisions.css +++ b/src/wp-admin/css/revisions.css @@ -309,7 +309,6 @@ table.diff .diff-addedline ins { float: right; margin-left: 6px; margin-right: 6px; - margin-top: 2px; } .diff-meta-from { @@ -632,8 +631,4 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { word-break: break-all; word-wrap: break-word; } - - .diff-meta input.restore-revision { - margin-top: 0; - } } diff --git a/src/wp-admin/includes/revision.php b/src/wp-admin/includes/revision.php index 979576ecde92c..2f15f1c9e2faf 100644 --- a/src/wp-admin/includes/revision.php +++ b/src/wp-admin/includes/revision.php @@ -370,11 +370,11 @@ function wp_print_revision_templates() { @@ -454,9 +454,9 @@ function wp_print_revision_templates() { <# } #> <# if ( data.attributes.autosave ) { #> - type="button" class="restore-revision button button-primary" value="" /> + type="button" class="restore-revision button button-primary button-compact" value="" /> <# } else { #> - type="button" class="restore-revision button button-primary" value="" /> + type="button" class="restore-revision button button-primary button-compact" value="" /> <# } #> <# } #> From 93d77a26f115d42fb9193674d0e6702721f1368b Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Mon, 27 Apr 2026 18:29:17 +0000 Subject: [PATCH 031/327] I18N: Add translation support for script modules. Add automatic translation loading for script modules (ES modules), so strings using `__()` and friends from `@wordpress/i18n` can be translated at runtime. This brings classic script i18n parity to script modules registered via `wp_register_script_module()`, which previously had no way to load translation data, leaving strings untranslated on screens like Connectors and Fonts that are built as script modules. At the `admin_print_footer_scripts` and `wp_footer` actions, every enqueued script module and its dependencies are walked, the translation chunk is loaded for each, and an inline ` diff --git a/src/wp-includes/class-wp-customize-manager.php b/src/wp-includes/class-wp-customize-manager.php index 961910e011d12..381d1db600c0e 100644 --- a/src/wp-includes/class-wp-customize-manager.php +++ b/src/wp-includes/class-wp-customize-manager.php @@ -4333,7 +4333,7 @@ public function render_control_templates() { <# if ( data.returnUrl !== data.previewUrl ) { #> <# } #> - + <# if ( data.allowOverride ) { #> <# } #> diff --git a/src/wp-includes/class-wp-editor.php b/src/wp-includes/class-wp-editor.php index 7ddd60fe871b4..16884bdd4b02a 100644 --- a/src/wp-includes/class-wp-editor.php +++ b/src/wp-includes/class-wp-editor.php @@ -1252,7 +1252,7 @@ private static function get_translation() { 'Nonbreaking space' => __( 'Nonbreaking space' ), 'Page break' => __( 'Page break' ), 'Paste as text' => __( 'Paste as text' ), - 'Preview' => __( 'Preview' ), + 'Preview' => _x( 'Preview', 'verb' ), 'Print' => __( 'Print' ), 'Save' => __( 'Save' ), 'Fullscreen' => __( 'Fullscreen' ), From 83d68ceed97902e4b3fb15e5ffba063a97166260 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Wed, 13 May 2026 08:38:27 +0000 Subject: [PATCH 075/327] Tests: Add unit tests for `wp_refresh_heartbeat_nonces()`. Follow-up to [44275]. Props pbearne. Fixes #65199. git-svn-id: https://develop.svn.wordpress.org/trunk@62356 602fd350-edb4-49c9-b593-d223f7449a82 --- .../misc/WpRefreshHeartbeatNonces_Test.php | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tests/phpunit/tests/admin/includes/misc/WpRefreshHeartbeatNonces_Test.php diff --git a/tests/phpunit/tests/admin/includes/misc/WpRefreshHeartbeatNonces_Test.php b/tests/phpunit/tests/admin/includes/misc/WpRefreshHeartbeatNonces_Test.php new file mode 100644 index 0000000000000..785c14a16d4be --- /dev/null +++ b/tests/phpunit/tests/admin/includes/misc/WpRefreshHeartbeatNonces_Test.php @@ -0,0 +1,47 @@ + 'value' ); + + $result = wp_refresh_heartbeat_nonces( $response ); + + $this->assertArrayHasKey( 'rest_nonce', $result, 'The response should contain the rest_nonce.' ); + $this->assertArrayHasKey( 'heartbeat_nonce', $result, 'The response should contain the heartbeat_nonce.' ); + $this->assertSame( 'value', $result['some_data'], 'Existing data in the response should be preserved.' ); + + $this->assertNotFalse( wp_verify_nonce( $result['rest_nonce'], 'wp_rest' ), 'The rest_nonce should be valid for "wp_rest".' ); + $this->assertNotFalse( wp_verify_nonce( $result['heartbeat_nonce'], 'heartbeat-nonce' ), 'The heartbeat_nonce should be valid for "heartbeat-nonce".' ); + } + + /** + * Tests that wp_refresh_heartbeat_nonces() overwrites existing nonces if they are already present. + * + * @ticket 65199 + */ + public function test_wp_refresh_heartbeat_nonces_overwrites_existing() { + $response = array( + 'rest_nonce' => 'old_rest_nonce', + 'heartbeat_nonce' => 'old_heartbeat_nonce', + ); + + $result = wp_refresh_heartbeat_nonces( $response ); + + $this->assertNotEquals( 'old_rest_nonce', $result['rest_nonce'], 'The rest_nonce should be updated.' ); + $this->assertNotEquals( 'old_heartbeat_nonce', $result['heartbeat_nonce'], 'The heartbeat_nonce should be updated.' ); + + $this->assertNotFalse( wp_verify_nonce( $result['rest_nonce'], 'wp_rest' ), 'The rest_nonce should be valid for "wp_rest".' ); + $this->assertNotFalse( wp_verify_nonce( $result['heartbeat_nonce'], 'heartbeat-nonce' ), 'The heartbeat_nonce should be valid for "heartbeat-nonce".' ); + } +} From 860e5faee16b3a6c06c97e2a5652ad3636a04ce4 Mon Sep 17 00:00:00 2001 From: Aki Hamano Date: Wed, 13 May 2026 11:59:24 +0000 Subject: [PATCH 076/327] Taxonomy: Fix delete button alignment on Edit Tag screen. The delete button on the Edit Tag screen was misaligned after the form control updates in [61645]. Switch the action buttons row to a flexbox layout for stable alignment. Follow-up to [61645]. Props mukesh27, tusharbharti, wildworks. Fixes #65233. git-svn-id: https://develop.svn.wordpress.org/trunk@62357 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/common.css | 7 ------- src/wp-admin/css/edit.css | 3 +++ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/wp-admin/css/common.css b/src/wp-admin/css/common.css index fa7180874250f..55b721e7f12da 100644 --- a/src/wp-admin/css/common.css +++ b/src/wp-admin/css/common.css @@ -942,13 +942,6 @@ a#remove-post-thumbnail:hover, line-height: 2.30769231; /* 30px */ } -#delete-link { - line-height: 2.30769231; /* 30px */ - vertical-align: middle; - text-align: left; - margin-left: 8px; -} - #delete-link a { text-decoration: none; } diff --git a/src/wp-admin/css/edit.css b/src/wp-admin/css/edit.css index aa0ecc69943cb..0a38c708341ee 100644 --- a/src/wp-admin/css/edit.css +++ b/src/wp-admin/css/edit.css @@ -1542,6 +1542,9 @@ p.popular-tags a { } .edit-tag-actions { + display: flex; + align-items: center; + gap: 8px; margin-top: 20px; } From a1f2b4288369a780bdb7d48ab3d6a6031d42eb2b Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers Date: Wed, 13 May 2026 17:03:40 +0000 Subject: [PATCH 077/327] Build/Test Tools: Test against `7.0-RC3`. This updates the upgrade testing workflows to test against RC3. After 7.0 final release, this should be updated to test `7.0` proper. Fixes #64966. git-svn-id: https://develop.svn.wordpress.org/trunk@62358 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/upgrade-develop-testing.yml | 4 ++-- .github/workflows/upgrade-testing.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index 7dfe96271f459..5f86e170fcdae 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -75,7 +75,7 @@ jobs: db-type: [ 'mysql' ] db-version: [ '5.7', '8.4' ] # WordPress 5.3 is the oldest version that supports PHP 7.4. - wp: [ '5.3', '6.8', '6.9', '7.0-RC2' ] + wp: [ '5.3', '6.8', '6.9', '7.0-RC3' ] multisite: [ false, true ] with: os: ${{ matrix.os }} @@ -101,7 +101,7 @@ jobs: php: [ '7.4', '8.4' ] db-type: [ 'mysql' ] db-version: [ '8.4' ] - wp: [ '6.8', '6.9', '7.0-RC2' ] + wp: [ '6.8', '6.9', '7.0-RC3' ] multisite: [ false, true ] with: os: ${{ matrix.os }} diff --git a/.github/workflows/upgrade-testing.yml b/.github/workflows/upgrade-testing.yml index b8953bad20def..1e54a946c03eb 100644 --- a/.github/workflows/upgrade-testing.yml +++ b/.github/workflows/upgrade-testing.yml @@ -71,7 +71,7 @@ jobs: php: [ '7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5' ] db-type: [ 'mysql' ] db-version: [ '5.7', '8.0', '8.4', '9.6' ] - wp: [ '6.8', '6.9', '7.0-RC2' ] + wp: [ '6.8', '6.9', '7.0-RC3' ] multisite: [ false, true ] with: os: ${{ matrix.os }} From 20b5d10910b0d598b99313bc27f16a52cfb8f476 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Wed, 13 May 2026 19:29:31 +0000 Subject: [PATCH 078/327] Block Supports: Improve performance and hardening of block-level custom CSS rendering. Short-circuits the custom CSS support filter before the more expensive lookups so blocks without custom CSS return faster. Replaces the regex class name parsing in `wp_render_custom_css_class_name()` with a cheap `str_contains()` guard followed by an HTML spec-compliant `strtok()` walk over the className tokens. This avoids the regex engine for the common case where no `wp-custom-css-` class is present, and correctly handles tab/form-feed/CR/LF separators as well as classes such as `my-wp-custom-css-*` that merely contain the prefix as a substring after a hyphen. Also hardens both functions against malformed parsed blocks (non-string `className`, missing keys), tightens `@phpstan-param` array shapes, and corrects the `block_has_support()` `@param` to allow `WP_Block_Type|null`. Lastly, a `@return Generator` phpdoc tag is added to `WP_HTML_Tag_Processor::class_list()`. Developed in https://github.com/WordPress/wordpress-develop/pull/11686 and https://github.com/WordPress/gutenberg/pull/78217 Follow-up to r61678. Props mukesh27, westonruter, ramonopoly, jonsurrell. See #64544, #64238. git-svn-id: https://develop.svn.wordpress.org/trunk@62359 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/custom-css.php | 62 ++++++++++++++----- src/wp-includes/blocks.php | 6 +- .../html-api/class-wp-html-tag-processor.php | 2 + .../wpRenderCustomCssClassName.php | 32 +++++++++- 4 files changed, 83 insertions(+), 19 deletions(-) diff --git a/src/wp-includes/block-supports/custom-css.php b/src/wp-includes/block-supports/custom-css.php index 2cd7644ed54b1..d4331ae3706ae 100644 --- a/src/wp-includes/block-supports/custom-css.php +++ b/src/wp-includes/block-supports/custom-css.php @@ -12,17 +12,28 @@ * * @param array $parsed_block The parsed block. * @return array The same parsed block with custom CSS class name added if appropriate. + * + * @phpstan-param array{ + * blockName: string|null, + * attrs: array{ + * className?: string, + * style?: array{ + * css?: string, + * ... + * }, + * ... + * }, + * ... + * } $parsed_block */ function wp_render_custom_css_support_styles( $parsed_block ) { - $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $parsed_block['blockName'] ); - - if ( ! block_has_support( $block_type, 'customCSS', true ) ) { + $custom_css = $parsed_block['attrs']['style']['css'] ?? null; + if ( ! is_string( $custom_css ) || '' === trim( $custom_css ) ) { return $parsed_block; } - $custom_css = trim( $parsed_block['attrs']['style']['css'] ?? '' ); - - if ( empty( $custom_css ) ) { + $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $parsed_block['blockName'] ); + if ( ! block_has_support( $block_type, 'customCSS', true ) ) { return $parsed_block; } @@ -32,9 +43,10 @@ function wp_render_custom_css_support_styles( $parsed_block ) { } // Generate a unique class name for this block instance. - $class_name = wp_unique_id_from_values( $parsed_block, 'wp-custom-css-' ); - $updated_class_name = isset( $parsed_block['attrs']['className'] ) - ? $parsed_block['attrs']['className'] . " $class_name" + $class_name = wp_unique_id_from_values( $parsed_block, 'wp-custom-css-' ); + $existing_class_name = $parsed_block['attrs']['className'] ?? null; + $updated_class_name = is_string( $existing_class_name ) + ? "$existing_class_name $class_name" : $class_name; _wp_array_set( $parsed_block, array( 'attrs', 'className' ), $updated_class_name ); @@ -68,7 +80,7 @@ function wp_enqueue_block_custom_css() { /** * Applies the custom CSS class name to the block's rendered HTML. * - * The class name is generated in `wp_render_custom_css_support_styles` + * The class name is generated in {@see wp_render_custom_css_support_styles()} * and stored in block attributes. This filter adds it to the actual markup. * * @since 7.0.0 @@ -76,12 +88,34 @@ function wp_enqueue_block_custom_css() { * @param string $block_content Rendered block content. * @param array $block Block object. * @return string Filtered block content. + * + * @phpstan-param array{ + * attrs: array{ + * className?: string, + * ... + * }, + * ... + * } $block */ function wp_render_custom_css_class_name( $block_content, $block ) { - $class_string = $block['attrs']['className'] ?? ''; - preg_match( '/\bwp-custom-css-\S+\b/', $class_string, $matches ); + $class_name_attr = $block['attrs']['className'] ?? null; + + if ( ! is_string( $class_name_attr ) || ! str_contains( $class_name_attr, 'wp-custom-css-' ) ) { + return $block_content; + } - if ( empty( $matches ) ) { + // Parse out the 'wp-custom-css-*' class name added by wp_render_custom_css_support_styles(). + $custom_class_name = null; + $token_delimiter = " \t\f\r\n"; + $class_token = strtok( $class_name_attr, $token_delimiter ); + while ( false !== $class_token ) { + if ( str_starts_with( $class_token, 'wp-custom-css-' ) ) { + $custom_class_name = $class_token; + break; + } + $class_token = strtok( $token_delimiter ); + } + if ( null === $custom_class_name ) { return $block_content; } @@ -89,7 +123,7 @@ function wp_render_custom_css_class_name( $block_content, $block ) { if ( $tags->next_tag() ) { $tags->add_class( 'has-custom-css' ); - $tags->add_class( $matches[0] ); + $tags->add_class( $custom_class_name ); } return $tags->get_updated_html(); diff --git a/src/wp-includes/blocks.php b/src/wp-includes/blocks.php index cc1ac60667773..6a6418d966457 100644 --- a/src/wp-includes/blocks.php +++ b/src/wp-includes/blocks.php @@ -2604,9 +2604,9 @@ function unregister_block_style( $block_name, $block_style_name ) { * @since 5.8.0 * @since 6.4.0 The `$feature` parameter now supports a string. * - * @param WP_Block_Type $block_type Block type to check for support. - * @param string|array $feature Feature slug, or path to a specific feature to check support for. - * @param mixed $default_value Optional. Fallback value for feature support. Default false. + * @param WP_Block_Type|null $block_type Block type to check for support. + * @param string|array $feature Feature slug, or path to a specific feature to check support for. + * @param mixed $default_value Optional. Fallback value for feature support. Default false. * @return bool Whether the feature is supported. */ function block_has_support( $block_type, $feature, $default_value = false ) { diff --git a/src/wp-includes/html-api/class-wp-html-tag-processor.php b/src/wp-includes/html-api/class-wp-html-tag-processor.php index 8397ecf520fa2..4015b352c153c 100644 --- a/src/wp-includes/html-api/class-wp-html-tag-processor.php +++ b/src/wp-includes/html-api/class-wp-html-tag-processor.php @@ -1175,6 +1175,8 @@ public function paused_at_incomplete_token(): bool { * // Outputs: "free lang-en " * * @since 6.4.0 + * + * @return Generator */ public function class_list() { if ( self::STATE_MATCHED_TAG !== $this->parser_state ) { diff --git a/tests/phpunit/tests/block-supports/wpRenderCustomCssClassName.php b/tests/phpunit/tests/block-supports/wpRenderCustomCssClassName.php index 0bcbc6c708468..1247ca65a1a33 100644 --- a/tests/phpunit/tests/block-supports/wpRenderCustomCssClassName.php +++ b/tests/phpunit/tests/block-supports/wpRenderCustomCssClassName.php @@ -29,9 +29,18 @@ public function test_adds_class_to_content( $block_content, $block, $expected_cl /** * Data provider. * - * @return array + * @return array */ - public function data_adds_class_to_content() { + public function data_adds_class_to_content(): array { return array( 'class is added to block content' => array( 'block_content' => '
Test content
', @@ -53,6 +62,16 @@ public function data_adds_class_to_content() { ), 'expected_class' => 'wp-custom-css-mixed123', ), + 'class between whitespace is added' => array( + 'block_content' => '
Test content
', + 'block' => array( + 'blockName' => 'core/paragraph', + 'attrs' => array( + 'className' => "\twp-custom-css-123abc\t", + ), + ), + 'expected_class' => 'wp-custom-css-123abc', + ), ); } @@ -113,6 +132,15 @@ public function data_returns_unchanged_content() { ), ), ), + 'prefixed custom CSS class' => array( + 'block_content' => '
Test content
', + 'block' => array( + 'blockName' => 'core/paragraph', + 'attrs' => array( + 'className' => 'my-wp-custom-css-456def', + ), + ), + ), 'className is not set in attrs' => array( 'block_content' => '
Test content
', 'block' => array( From fd3c7d56c1cb7790c28f86da99adb37828b99983 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers Date: Thu, 14 May 2026 13:48:53 +0000 Subject: [PATCH 079/327] Editor: Bump pinned hash for the Gutenberg repository. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the pinned hash from the `gutenberg` from `c15cef1d6b07f666df28dac0383bafb0edfe0914 ` to `3a4e8d1418d25da83b70158bcaabf65580690b6b`. The following changes are included: - [WP.7.0] Admin UI: Backport accessibility fixes (https://github.com/WordPress/gutenberg/pull/77617, https://github.com/WordPress/gutenberg/pull/78001) (https://github.com/WordPress/gutenberg/pull/78002) - Fix: Shortcode block does not render in Navigation Overlay (https://github.com/WordPress/gutenberg/pull/77511) - feat: Enhance Connectors page on read-only file system (https://github.com/WordPress/gutenberg/pull/77521) - Connectors: Avoid using centered text (https://github.com/WordPress/gutenberg/pull/78125) - Revisions: Add tooltip to diff marker buttons (https://github.com/WordPress/gutenberg/pull/77690) - Add backport for WP_ALLOW_COLLABORATION (https://github.com/WordPress/gutenberg/pull/78160) - Add aria-label to Revisions button in Post Summary sidebar (https://github.com/WordPress/gutenberg/pull/78140) - Revisions diff markers: enforce 24×24px minimum target size (WCAG 2.5.8) (https://github.com/WordPress/gutenberg/pull/77671) - Connectors: Replace @wordpress/ui Link and Notice usage (https://github.com/WordPress/gutenberg/pull/78117) - Connectors: Increase right padding of callout for mobile layout (https://github.com/WordPress/gutenberg/pull/78126) - isFulfilled: don't change resolution state, call in resolveSelect (https://github.com/WordPress/gutenberg/pull/78201) - Connectors: Restyle AI plugin callout with pastel background and beaker decoration (https://github.com/WordPress/gutenberg/pull/78243) - Block supports: Optimize custom CSS class rendering and parsing (https://github.com/WordPress/gutenberg/pull/78217) - Block Inspector: Hide Styles tab in preview mode (https://github.com/WordPress/gutenberg/pull/78230) - Navigation Link: Preserve custom labels during link updates (https://github.com/WordPress/gutenberg/pull/77186) - Editor: Fix Visual Revisions meta keys overlap (https://github.com/WordPress/gutenberg/pull/78156) - Editor: Disable Visual Revisions when classic meta boxes are present (https://github.com/WordPress/gutenberg/pull/78249) (https://github.com/WordPress/gutenberg/pull/78286) - Revisions: Scale diff markers width with user text-size preference (https://github.com/WordPress/gutenberg/pull/78273) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/c15cef1d6b07f666df28dac0383bafb0edfe0914…3a4e8d1418d25da83b70158bcaabf65580690b6b. Log created with: `git log --reverse --format="- %s" c15cef1d6b07f666df28dac0383bafb0edfe0914..3a4e8d1418d25da83b70158bcaabf65580690b6b | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy` Reviewed by desrosj. Merges [62360] to `trunk`. See #64595. git-svn-id: https://develop.svn.wordpress.org/trunk@62361 602fd350-edb4-49c9-b593-d223f7449a82 --- package.json | 2 +- .../assets/script-loader-packages.php | 12 +- .../assets/script-modules-packages.php | 2 +- src/wp-includes/blocks/navigation.php | 12 +- .../build/routes/connectors-home/content.js | 429 +++++++++++++----- .../connectors-home/content.min.asset.php | 2 +- .../routes/connectors-home/content.min.js | 2 +- .../build/routes/font-list/content.js | 68 ++- .../routes/font-list/content.min.asset.php | 2 +- .../build/routes/font-list/content.min.js | 6 +- 10 files changed, 382 insertions(+), 155 deletions(-) diff --git a/package.json b/package.json index bcfc78d49508a..724335a2c4ee8 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://develop.svn.wordpress.org/trunk" }, "gutenberg": { - "sha": "c15cef1d6b07f666df28dac0383bafb0edfe0914", + "sha": "3a4e8d1418d25da83b70158bcaabf65580690b6b", "ghcrRepo": "WordPress/gutenberg/gutenberg-wp-develop-build" }, "engines": { diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php index 840f4ba1c8b31..143f871840afa 100644 --- a/src/wp-includes/assets/script-loader-packages.php +++ b/src/wp-includes/assets/script-loader-packages.php @@ -100,7 +100,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '7e969d1c58fd6b032753' + 'version' => '93c3566b7f24c15b7e17' ), 'block-library.js' => array( 'dependencies' => array( @@ -142,7 +142,7 @@ 'import' => 'dynamic' ) ), - 'version' => 'bbcc73335599ce2b8d51' + 'version' => '2dffdfe77b9c5cba960e' ), 'block-serialization-default-parser.js' => array( 'dependencies' => array( @@ -304,7 +304,7 @@ 'wp-private-apis', 'wp-redux-routine' ), - 'version' => 'dc7feb6ad8da53887680' + 'version' => '1756b6a2676c1b3369ab' ), 'data-controls.js' => array( 'dependencies' => array( @@ -381,7 +381,7 @@ 'import' => 'static' ) ), - 'version' => '69ec189de328df478ab5' + 'version' => '1975171eba5481ff37cd' ), 'edit-site.js' => array( 'dependencies' => array( @@ -428,7 +428,7 @@ 'import' => 'static' ) ), - 'version' => '34fbf7f8c7d55055d9cd' + 'version' => 'dfd078032a67983c4d32' ), 'edit-widgets.js' => array( 'dependencies' => array( @@ -519,7 +519,7 @@ 'import' => 'static' ) ), - 'version' => 'f8cdc22abc621b3f9409' + 'version' => '77209b33a51951b61574' ), 'element.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php index a3f51229f1e63..d8238c74e65a0 100644 --- a/src/wp-includes/assets/script-modules-packages.php +++ b/src/wp-includes/assets/script-modules-packages.php @@ -166,7 +166,7 @@ 'import' => 'static' ) ), - 'version' => '42d3f09bba14cce3054d' + 'version' => '54bb5a420026a61c7e4f' ), 'connectors/index.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/blocks/navigation.php b/src/wp-includes/blocks/navigation.php index 7863f80a9bdc4..71e8d85b035dc 100644 --- a/src/wp-includes/blocks/navigation.php +++ b/src/wp-includes/blocks/navigation.php @@ -425,7 +425,11 @@ private static function get_overlay_blocks_from_template_part( $overlay_template $full_template_part_id = $theme . '//' . $slug; $block_template = get_block_file_template( $full_template_part_id, 'wp_template_part' ); if ( isset( $block_template->content ) ) { - $parsed_blocks = parse_blocks( $block_template->content ); + // Expand shortcodes before parsing blocks, matching the order in + // `render_block_core_template_part()`. + $content = shortcode_unautop( $block_template->content ); + $content = do_shortcode( $content ); + $parsed_blocks = parse_blocks( $content ); $blocks = block_core_navigation_filter_out_empty_blocks( $parsed_blocks ); // Disable overlay menu for any navigation blocks within the overlay to prevent nested overlays. $blocks = static::disable_overlay_menu_for_nested_navigation_blocks( $blocks ); @@ -449,6 +453,12 @@ private static function get_overlay_blocks_from_template_part( $overlay_template // Re-serialize, and run Block Hooks algorithm to inject hooked blocks. $markup = serialize_blocks( $blocks ); $markup = apply_block_hooks_to_content_from_post_object( $markup, $template_part_post ); + + // Expand shortcodes before parsing blocks, matching the order in + // `render_block_core_template_part()`. + $markup = shortcode_unautop( $markup ); + $markup = do_shortcode( $markup ); + $blocks = parse_blocks( $markup ); // Disable overlay menu for any navigation blocks within the overlay to prevent nested overlays. diff --git a/src/wp-includes/build/routes/connectors-home/content.js b/src/wp-includes/build/routes/connectors-home/content.js index dc250c11ac176..f248d626abc2d 100644 --- a/src/wp-includes/build/routes/connectors-home/content.js +++ b/src/wp-includes/build/routes/connectors-home/content.js @@ -7,6 +7,10 @@ var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) @@ -59,6 +63,13 @@ var require_react = __commonJS({ } }); +// package-external:@wordpress/primitives +var require_primitives = __commonJS({ + "package-external:@wordpress/primitives"(exports, module) { + module.exports = window.wp.primitives; + } +}); + // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { @@ -543,8 +554,46 @@ var Badge = (0, import_element2.forwardRef)(function Badge2({ children, intent = return element; }); -// packages/ui/build-module/stack/stack.mjs +// packages/ui/build-module/icon/icon.mjs var import_element3 = __toESM(require_element(), 1); +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var Icon = (0, import_element3.forwardRef)(function Icon2({ icon, size = 24, ...restProps }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + import_primitives.SVG, + { + ref, + fill: "currentColor", + ...icon.props, + ...restProps, + width: size, + height: size + } + ); +}); + +// packages/icons/build-module/library/caution.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var caution_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z" }) }); + +// packages/icons/build-module/library/error.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var error_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z" }) }); + +// packages/icons/build-module/library/info.mjs +var import_primitives4 = __toESM(require_primitives(), 1); +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +var info_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z" }) }); + +// packages/icons/build-module/library/published.mjs +var import_primitives5 = __toESM(require_primitives(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var published_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z" }) }); + +// packages/ui/build-module/stack/stack.mjs +var import_element4 = __toESM(require_element(), 1); if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "71d20935c2"); @@ -561,7 +610,7 @@ var gapTokens = { "2xl": "var(--wpds-dimension-gap-2xl, 32px)", "3xl": "var(--wpds-dimension-gap-3xl, 40px)" }; -var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { +var Stack = (0, import_element4.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { const style = { gap: gap && gapTokens[gap], alignItems: align, @@ -577,14 +626,157 @@ var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, al return element; }); +// packages/ui/build-module/notice/index.mjs +var notice_exports = {}; +__export(notice_exports, { + Description: () => Description, + Root: () => Root +}); + +// packages/ui/build-module/notice/root.mjs +var import_element5 = __toESM(require_element(), 1); +import { speak } from "@wordpress/a11y"; +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='671ebfc62d']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "671ebfc62d"); + style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}")); + document.head.appendChild(style); +} +var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='a66a881fc5']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "a66a881fc5"); + style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-font-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#d8d8d8);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{text-wrap:pretty;color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f2f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b381);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#eaffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#007f30)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}}")); + document.head.appendChild(style); +} +var style_default3 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; +var icons = { + neutral: null, + info: info_default, + warning: caution_default, + success: published_default, + error: error_default +}; +function getDefaultPoliteness(intent) { + return intent === "error" ? "assertive" : "polite"; +} +function safeRenderToString(message) { + if (!message) { + return void 0; + } + if (typeof message === "string") { + return message; + } + try { + return (0, import_element5.renderToString)(message); + } catch { + return void 0; + } +} +function useSpokenMessage(message, politeness) { + const spokenMessage = safeRenderToString(message); + (0, import_element5.useEffect)(() => { + if (spokenMessage) { + speak(spokenMessage, politeness); + } + }, [spokenMessage, politeness]); +} +var Root = (0, import_element5.forwardRef)(function Notice({ + intent = "neutral", + children, + icon, + spokenMessage = children, + politeness = getDefaultPoliteness(intent), + render, + ...restProps +}, ref) { + useSpokenMessage(spokenMessage, politeness); + const iconElement = icon === null ? null : icon ?? icons[intent]; + const mergedClassName = clsx_default( + style_default3.notice, + style_default3[`is-${intent}`], + resets_default["box-sizing"] + ); + const element = useRender({ + defaultTagName: "div", + render, + ref, + props: mergeProps( + { + className: mergedClassName, + children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [ + children, + iconElement && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Icon, + { + className: style_default3.icon, + icon: iconElement + } + ) + ] }) + }, + restProps + ) + }); + return element; +}); + +// packages/ui/build-module/notice/description.mjs +var import_element7 = __toESM(require_element(), 1); + +// packages/ui/build-module/text/text.mjs +var import_element6 = __toESM(require_element(), 1); +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='6675f7d310']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "6675f7d310"); + style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{font-size:var(--wpds-font-size-2xl,32px);line-height:var(--wpds-font-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{font-size:var(--wpds-font-size-xl,20px);line-height:var(--wpds-font-line-height-md,24px)}.aa58f227716bcde2__heading-lg{font-size:var(--wpds-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{font-size:var(--wpds-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-xs,11px);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{font-size:var(--wpds-font-size-xl,20px);line-height:var(--wpds-font-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{font-size:var(--wpds-font-size-lg,15px);line-height:var(--wpds-font-line-height-md,24px)}._131101940be12424__body-md{font-size:var(--wpds-font-size-md,13px);line-height:var(--wpds-font-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{font-size:var(--wpds-font-size-sm,12px);line-height:var(--wpds-font-line-height-xs,16px)}}')); + document.head.appendChild(style); +} +var style_default4 = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; +var Text = (0, import_element6.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { + const element = useRender({ + render, + defaultTagName: "span", + ref, + props: mergeProps(props, { + className: clsx_default(style_default4.text, style_default4[variant], className) + }) + }); + return element; +}); + +// packages/ui/build-module/notice/description.mjs +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='a66a881fc5']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "a66a881fc5"); + style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-font-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#d8d8d8);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{text-wrap:pretty;color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f2f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b381);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#eaffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#007f30)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}}")); + document.head.appendChild(style); +} +var style_default5 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; +var Description = (0, import_element7.forwardRef)( + function NoticeDescription({ className, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + Text, + { + ref, + variant: "body-md", + className: clsx_default(style_default5.description, className), + ...props + } + ); + } +); + // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs var import_components = __toESM(require_components(), 1); var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); // packages/admin-ui/build-module/page/header.mjs -var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); function Header({ - headingLevel = 2, + headingLevel = 1, breadcrumbs, badges, title, @@ -593,46 +785,38 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)( - Stack, - { - direction: "column", - className: "admin-ui-page__header", - render: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("header", {}), - children: [ - /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( - SidebarToggleSlot, - { - bubblesVirtually: true, - className: "admin-ui-page__sidebar-toggle-slot" - } - ), - title && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), - breadcrumbs, - badges - ] }), - /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( - Stack, - { - direction: "row", - gap: "sm", - style: { width: "auto", flexShrink: 0 }, - className: "admin-ui-page__header-actions", - align: "center", - children: actions - } - ) - ] }), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) - ] - } - ); + return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Stack, { direction: "column", className: "admin-ui-page__header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( + Stack, + { + direction: "row", + gap: "sm", + style: { width: "auto", flexShrink: 0 }, + className: "admin-ui-page__header-actions", + align: "center", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); } // packages/admin-ui/build-module/page/index.mjs -var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); function Page({ headingLevel, breadcrumbs, @@ -646,8 +830,8 @@ function Page({ showSidebarToggle = true }) { const classes = clsx_default("admin-ui-page", className); - return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ - (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( Header, { headingLevel, @@ -659,7 +843,7 @@ function Page({ showSidebarToggle } ), - hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children ] }); } Page.SidebarToggleFill = SidebarToggleFill; @@ -668,7 +852,7 @@ var page_default = Page; // routes/connectors-home/stage.tsx var import_components4 = __toESM(require_components()); var import_data4 = __toESM(require_data()); -var import_element7 = __toESM(require_element()); +var import_element11 = __toESM(require_element()); var import_i18n4 = __toESM(require_i18n()); var import_core_data3 = __toESM(require_core_data()); import { @@ -676,10 +860,10 @@ import { } from "@wordpress/connectors"; // routes/connectors-home/style.scss -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='1b00f16b8d']")) { +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='eb5f96e519']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "1b00f16b8d"); - style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); + style.setAttribute("data-wp-hash", "eb5f96e519"); + style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 92% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 58% -10%,#aa82b873 0,#aa82b800 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 8% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 42% -10%,#aa82b873 0,#aa82b800 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); document.head.appendChild(style); } @@ -687,14 +871,14 @@ if (typeof document !== "undefined" && !document.head.querySelector("style[data- var import_components3 = __toESM(require_components()); var import_core_data2 = __toESM(require_core_data()); var import_data3 = __toESM(require_data()); -var import_element6 = __toESM(require_element()); +var import_element10 = __toESM(require_element()); var import_i18n3 = __toESM(require_i18n()); var import_notices2 = __toESM(require_notices()); var import_url = __toESM(require_url()); // routes/connectors-home/default-connectors.tsx var import_components2 = __toESM(require_components()); -var import_element5 = __toESM(require_element()); +var import_element9 = __toESM(require_element()); var import_data2 = __toESM(require_data()); var import_i18n2 = __toESM(require_i18n()); import { @@ -714,7 +898,7 @@ var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnl // routes/connectors-home/use-connector-plugin.ts var import_core_data = __toESM(require_core_data()); var import_data = __toESM(require_data()); -var import_element4 = __toESM(require_element()); +var import_element8 = __toESM(require_element()); var import_i18n = __toESM(require_i18n()); var import_notices = __toESM(require_notices()); function useConnectorPlugin({ @@ -726,10 +910,10 @@ function useConnectorPlugin({ keySource = "none", initialIsConnected = false }) { - const [isExpanded, setIsExpanded] = (0, import_element4.useState)(false); - const [isBusy, setIsBusy] = (0, import_element4.useState)(false); - const [connectedState, setConnectedState] = (0, import_element4.useState)(initialIsConnected); - const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element4.useState)(null); + const [isExpanded, setIsExpanded] = (0, import_element8.useState)(false); + const [isBusy, setIsBusy] = (0, import_element8.useState)(false); + const [connectedState, setConnectedState] = (0, import_element8.useState)(initialIsConnected); + const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element8.useState)(null); const pluginBasename = pluginFileFromServer?.replace(/\.php$/, ""); const pluginSlug = pluginBasename?.includes("/") ? pluginBasename.split("/")[0] : pluginBasename; const { @@ -1177,18 +1361,23 @@ var GeminiLogo = () => /* @__PURE__ */ React.createElement( // routes/connectors-home/default-connectors.tsx var { store: connectorsStore } = unlock(connectorsPrivateApis); -function getConnectorData() { +function getConnectorScriptModuleData() { try { - const parsed = JSON.parse( + return JSON.parse( document.getElementById( "wp-script-module-data-options-connectors-wp-admin" - )?.textContent ?? "" + )?.textContent ?? "{}" ); - return parsed?.connectors ?? {}; } catch { return {}; } } +function getConnectorData() { + return getConnectorScriptModuleData().connectors ?? {}; +} +function getIsFileModDisabled() { + return !!getConnectorScriptModuleData().isFileModDisabled; +} var CONNECTOR_LOGOS = { google: GeminiLogo, openai: OpenAILogo, @@ -1220,6 +1409,17 @@ var ConnectedBadge = () => /* @__PURE__ */ React.createElement( }, (0, import_i18n2.__)("Connected") ); +var PluginDirectoryLink = ({ slug }) => /* @__PURE__ */ React.createElement( + import_components2.ExternalLink, + { + href: (0, import_i18n2.sprintf)( + /* translators: %s: plugin slug. */ + (0, import_i18n2.__)("https://wordpress.org/plugins/%s/"), + slug + ) + }, + (0, import_i18n2.__)("Learn more") +); var UnavailableActionBadge = () => /* @__PURE__ */ React.createElement(Badge, null, (0, import_i18n2.__)("Not available")); function ApiKeyConnector({ name, @@ -1266,7 +1466,7 @@ function ApiKeyConnector({ const isExternallyConfigured = keySource === "env" || keySource === "constant"; const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; const showActionButton = !showUnavailableBadge; - const actionButtonRef = (0, import_element5.useRef)(null); + const actionButtonRef = (0, import_element9.useRef)(null); return /* @__PURE__ */ React.createElement( ConnectorItem, { @@ -1274,7 +1474,7 @@ function ApiKeyConnector({ logo, name, description, - actionArea: /* @__PURE__ */ React.createElement(import_components2.__experimentalHStack, { spacing: 3, expanded: false }, isConnected && /* @__PURE__ */ React.createElement(ConnectedBadge, null), showUnavailableBadge && /* @__PURE__ */ React.createElement(UnavailableActionBadge, null), showActionButton && /* @__PURE__ */ React.createElement( + actionArea: /* @__PURE__ */ React.createElement(import_components2.__experimentalHStack, { spacing: 3, expanded: false }, isConnected && /* @__PURE__ */ React.createElement(ConnectedBadge, null), showUnavailableBadge && (pluginSlug ? /* @__PURE__ */ React.createElement(PluginDirectoryLink, { slug: pluginSlug }) : /* @__PURE__ */ React.createElement(UnavailableActionBadge, null)), showActionButton && /* @__PURE__ */ React.createElement( import_components2.Button, { ref: actionButtonRef, @@ -1351,30 +1551,12 @@ function WpLogoDecoration() { /* @__PURE__ */ React.createElement( "image", { - href: "data:image/png;base64,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", + href: "data:image/png;base64,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", width: "248", height: "248", style: { mixBlendMode: "multiply" } } - ), - /* @__PURE__ */ React.createElement("rect", { x: "184.055", y: "54.995", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "170.059", y: "44.06", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "200.238", y: "77.302", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "212.048", y: "87.8", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "206.799", y: "83.425", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "204.175", y: "85.612", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "219.046", y: "103.108", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "154.751", y: "30.064", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "188.866", y: "63.742", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "148.189", y: "34", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "134.051", y: "31.707", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "126.124", y: "24.771", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "115.385", y: "29.19", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "95.702", y: "31.376", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "91.766", y: "27.002", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "90.454", y: "32.688", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "184.389", y: "45.58", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "162.185", y: "41.873", width: "2.187", height: "2.187" }) + ) )); } @@ -1394,15 +1576,15 @@ for (const c of connectorDataValues) { } } function AiPluginCallout() { - const [isBusy, setIsBusy] = (0, import_element6.useState)(false); - const [justActivated, setJustActivated] = (0, import_element6.useState)(false); - const actionButtonRef = (0, import_element6.useRef)(null); - (0, import_element6.useEffect)(() => { + const [isBusy, setIsBusy] = (0, import_element10.useState)(false); + const [justActivated, setJustActivated] = (0, import_element10.useState)(false); + const actionButtonRef = (0, import_element10.useRef)(null); + (0, import_element10.useEffect)(() => { if (justActivated) { actionButtonRef.current?.focus(); } }, [justActivated]); - const initialHasConnectedProvider = (0, import_element6.useRef)( + const initialHasConnectedProvider = (0, import_element10.useRef)( connectorDataValues.some( (c) => c.type === "ai_provider" && c.authentication.method === "api_key" && c.authentication.isConnected ) @@ -1515,15 +1697,13 @@ function AiPluginCallout() { if (pluginStatus === "active" && initialHasConnectedProvider && !justActivated) { return null; } - if (pluginStatus === "not-installed" && canInstallPlugins === false) { - return null; - } if (pluginStatus === "inactive" && canManagePlugins === false) { return null; } const isActiveNoProvider = pluginStatus === "active" && !hasConnectedProvider; const isJustConnected = pluginStatus === "active" && hasConnectedProvider && (!initialHasConnectedProvider || justActivated); const showInstallActivate = pluginStatus === "not-installed" || pluginStatus === "inactive"; + const hideButtons = pluginStatus === "not-installed" && canInstallPlugins === false; const getMessage = () => { if (isJustConnected) { return (0, import_i18n3.__)( @@ -1553,11 +1733,11 @@ function AiPluginCallout() { onClick: isBusy ? void 0 : activatePlugin }; }; - return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element6.createInterpolateElement)(getMessage(), { + return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element10.createInterpolateElement)(getMessage(), { strong: /* @__PURE__ */ React.createElement("strong", null), // @ts-ignore children are injected by createInterpolateElement at runtime. a: /* @__PURE__ */ React.createElement(import_components3.ExternalLink, { href: AI_PLUGIN_URL }) - })), showInstallActivate ? /* @__PURE__ */ React.createElement( + })), !hideButtons && (showInstallActivate ? /* @__PURE__ */ React.createElement( import_components3.Button, { variant: "primary", @@ -1579,32 +1759,69 @@ function AiPluginCallout() { }) }, (0, import_i18n3.__)("Control features in the AI plugin") - )), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); + ))), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); } // routes/connectors-home/stage.tsx var { store } = unlock(connectorsPrivateApis2); registerDefaultConnectors(); function ConnectorsPage() { - const { connectors, canInstallPlugins } = (0, import_data4.useSelect)( - (select2) => ({ - connectors: unlock(select2(store)).getConnectors(), - canInstallPlugins: select2(import_core_data3.store).canUser("create", { - kind: "root", - name: "plugin" - }) - }), + const isFileModDisabled = getIsFileModDisabled(); + const { connectors, canInstallPlugins, isAiPluginInstalled } = (0, import_data4.useSelect)( + (select2) => { + const coreSelect = select2(import_core_data3.store); + const aiPlugin = coreSelect.getEntityRecord( + "root", + "plugin", + "ai/ai" + ); + return { + connectors: unlock(select2(store)).getConnectors(), + canInstallPlugins: coreSelect.canUser("create", { + kind: "root", + name: "plugin" + }), + isAiPluginInstalled: !!aiPlugin + }; + }, [] ); const renderableConnectors = connectors.filter( (connector) => connector.render ); + const aiProviderPluginSlugs = Array.from( + new Set( + connectors.filter( + (connector) => connector.type === "ai_provider" + ).map( + (connector) => connector.plugin?.file?.split("/")[0] + ).filter((slug) => !!slug) + ) + ).sort(); + const installedPluginSlugs = new Set( + connectors.filter( + (connector) => connector.plugin?.isInstalled + ).map( + (connector) => connector.plugin?.file?.split("/")[0] + ).filter((slug) => !!slug) + ); + if (isAiPluginInstalled) { + installedPluginSlugs.add("ai"); + } + const manualInstallPluginSlugs = ["ai", ...aiProviderPluginSlugs].filter( + (slug) => !installedPluginSlugs.has(slug) + ); const isEmpty = renderableConnectors.length === 0; + const showFileModsNotice = manualInstallPluginSlugs.length > 0 && (isFileModDisabled || !canInstallPlugins); + const fileModsNoticeMessage = isFileModDisabled ? (0, import_i18n4.__)( + "Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow." + ) : (0, import_i18n4.__)( + "You do not have permission to install plugins. Please ask a site administrator to install them for you." + ); return /* @__PURE__ */ React.createElement( page_default, { title: (0, import_i18n4.__)("Connectors"), - headingLevel: 1, subTitle: (0, import_i18n4.__)( "All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere." ) @@ -1614,6 +1831,14 @@ function ConnectorsPage() { { className: `connectors-page${isEmpty ? " connectors-page--empty" : ""}` }, + showFileModsNotice && /* @__PURE__ */ React.createElement( + notice_exports.Root, + { + intent: "info", + className: "connectors-page__file-mods-notice" + }, + /* @__PURE__ */ React.createElement(notice_exports.Description, null, fileModsNoticeMessage) + ), isEmpty ? /* @__PURE__ */ React.createElement( import_components4.__experimentalVStack, { @@ -1645,7 +1870,7 @@ function ConnectorsPage() { return null; } ))), - canInstallPlugins && /* @__PURE__ */ React.createElement("p", null, (0, import_element7.createInterpolateElement)( + canInstallPlugins && !isFileModDisabled && /* @__PURE__ */ React.createElement("p", null, (0, import_element11.createInterpolateElement)( (0, import_i18n4.__)( "If the connector you need is not listed, search the plugin directory to see if a connector is available." ), diff --git a/src/wp-includes/build/routes/connectors-home/content.min.asset.php b/src/wp-includes/build/routes/connectors-home/content.min.asset.php index 51b66e2ebcfe1..6580252cd27a6 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.asset.php +++ b/src/wp-includes/build/routes/connectors-home/content.min.asset.php @@ -1 +1 @@ - array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '8a0e3b7671b73b29d3ab'); \ No newline at end of file + array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'b614fcaf0d408b3eff9d'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/connectors-home/content.min.js b/src/wp-includes/build/routes/connectors-home/content.min.js index 67a6da86d5d31..1cedc12752760 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.js +++ b/src/wp-includes/build/routes/connectors-home/content.min.js @@ -1 +1 @@ -var Nt=Object.create;var Be=Object.defineProperty;var Xt=Object.getOwnPropertyDescriptor;var Yt=Object.getOwnPropertyNames;var St=Object.getPrototypeOf,Zt=Object.prototype.hasOwnProperty;var y=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var At=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Yt(t))!Zt.call(e,o)&&o!==n&&Be(e,o,{get:()=>t[o],enumerable:!(r=Xt(t,o))||r.enumerable});return e};var s=(e,t,n)=>(n=e!=null?Nt(St(e)):{},At(t||!e||!e.__esModule?Be(n,"default",{value:e,enumerable:!0}):n,e));var I=y((Bn,je)=>{je.exports=window.wp.i18n});var U=y((jn,He)=>{He.exports=window.wp.components});var ae=y((Hn,Re)=>{Re.exports=window.ReactJSXRuntime});var j=y((qn,Te)=>{Te.exports=window.wp.element});var A=y((Nn,Se)=>{Se.exports=window.React});var ot=y((ho,nt)=>{nt.exports=window.wp.privateApis});var $=y((qo,dt)=>{dt.exports=window.wp.data});var ce=y((To,ut)=>{ut.exports=window.wp.coreData});var ye=y((Vo,ft)=>{ft.exports=window.wp.notices});var gt=y((No,pt)=>{pt.exports=window.wp.url});function qe(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t(0,Ne.jsx)(r,{ref:a,className:Z("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...o,children:e}));Xe.displayName="NavigableRegion";var Ye=Xe;var Ae=s(A(),1),Ze={};function pe(e,t){let n=Ae.useRef(Ze);return n.current===Ze&&(n.current=e(t)),n}function ge(e,...t){let n=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(r=>n.searchParams.append("args[]",r)),`Base UI error #${e}; visit ${n} for the full message.`}var ie=s(A(),1);function me(e,t,n,r){let o=pe(Ee).current;return Et(o,e,t,n,r)&&We(o,[e,t,n,r]),o.callback}function Ce(e){let t=pe(Ee).current;return Wt(t,e)&&We(t,e),t.callback}function Ee(){return{callback:null,cleanup:null,refs:[]}}function Et(e,t,n,r,o){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==o}function Wt(e,t){return e.refs.length!==t.length||e.refs.some((n,r)=>n!==t[r])}function We(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let r=Array(t.length).fill(null);for(let o=0;o{for(let o=0;o=e}function ve(e){if(!Ie.isValidElement(e))return null;let t=e,n=t.props;return(Ke(19)?n?.ref:t.ref)??null}function Q(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function Ue(e,t){let n={};for(let r in e){let o=e[r];if(t?.hasOwnProperty(r)){let a=t[r](o);a!=null&&Object.assign(n,a);continue}o===!0?n[`data-${r.toLowerCase()}`]="":o&&(n[`data-${r.toLowerCase()}`]=o.toString())}return n}function Qe(e,t){return typeof e=="function"?e(t):e}function Je(e,t){return typeof e=="function"?e(t):e}var F={};function C(e,t,n,r,o){let a={...he(e,F)};return t&&(a=J(a,t)),n&&(a=J(a,n)),r&&(a=J(a,r)),o&&(a=J(a,o)),a}function Fe(e){if(e.length===0)return F;if(e.length===1)return he(e[0],F);let t={...he(e[0],F)};for(let n=1;n=65&&o<=90&&(typeof t=="function"||typeof t>"u")}function _e(e){return typeof e=="function"}function he(e,t){return _e(e)?e(t):e??F}function Ut(e,t){return t?e?n=>{if(Jt(n)){let o=n;Qt(o);let a=t(o);return o.baseUIHandlerPrevented||e?.(o),a}let r=t(n);return e?.(n),r}:t:e}function Qt(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function be(e,t){return t?e?t+" "+e:t:e}function Jt(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Ft=Object.freeze([]),H=Object.freeze({});var Pe=s(A(),1);function $e(e,t,n={}){let r=t.render,o=_t(t,n);if(n.enabled===!1)return null;let a=n.state??H;return $t(e,r,o,a)}function _t(e,t={}){let{className:n,style:r,render:o}=e,{state:a=H,ref:i,props:l,stateAttributesMapping:u,enabled:d=!0}=t,f=d?Qe(n,a):void 0,v=d?Je(r,a):void 0,z=d?Ue(a,u):H,p=d?Q(z,Array.isArray(l)?Fe(l):l)??H:H;return typeof document<"u"&&(d?Array.isArray(i)?p.ref=Ce([p.ref,ve(o),...i]):p.ref=me(p.ref,ve(o),i):me(null,null)),d?(f!==void 0&&(p.className=be(p.className,f)),v!==void 0&&(p.style=Q(p.style,v)),p):H}function $t(e,t,n,r){if(t){if(typeof t=="function")return t(n,r);let o=C(n,t.props);return o.ref=n.ref,ie.cloneElement(t,o)}if(e&&typeof e=="string")return en(e,n);throw new Error(ge(8))}function en(e,t){return e==="button"?(0,Pe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Pe.createElement)("img",{alt:"",...t,key:t.key}):ie.createElement(e,t)}function se(e){return $e(e.defaultTagName??"div",e,e)}var tt=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='244b5c59c0']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","244b5c59c0"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral,#f8f8f8);color:var(--wpds-color-fg-content-neutral-weak,#6d6d6d)}}')),document.head.appendChild(e)}var et={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},we=(0,tt.forwardRef)(function({children:t,intent:n="none",render:r,className:o,...a},i){return se({render:r,defaultTagName:"span",ref:i,props:C(a,{className:Z(et.badge,et[`is-${n}-intent`],o),children:t})})});var rt=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","71d20935c2"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var tn={stack:"_19ce0419607e1896__stack"},nn={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},E=(0,rt.forwardRef)(function({direction:t,gap:n,align:r,justify:o,wrap:a,render:i,...l},u){let d={gap:n&&nn[n],alignItems:r,justifyContent:o,flexDirection:t,flexWrap:a};return se({render:i,ref:u,props:C(l,{style:d,className:tn.stack})})});var at=s(U(),1),{Fill:it,Slot:st}=(0,at.createSlotFill)("SidebarToggle");var x=s(ae(),1);function ct({headingLevel:e=2,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:a,showSidebarToggle:i=!0}){let l=`h${e}`;return(0,x.jsxs)(E,{direction:"column",className:"admin-ui-page__header",render:(0,x.jsx)("header",{}),children:[(0,x.jsxs)(E,{direction:"row",justify:"space-between",gap:"sm",children:[(0,x.jsxs)(E,{direction:"row",gap:"sm",align:"center",justify:"start",children:[i&&(0,x.jsx)(st,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,x.jsx)(l,{className:"admin-ui-page__header-title",children:r}),t,n]}),(0,x.jsx)(E,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),o&&(0,x.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var _=s(ae(),1);function lt({headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,children:a,className:i,actions:l,hasPadding:u=!1,showSidebarToggle:d=!0}){let f=Z("admin-ui-page",i);return(0,_.jsxs)(Ye,{className:f,ariaLabel:r,children:[(r||t||n)&&(0,_.jsx)(ct,{headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:l,showSidebarToggle:d}),u?(0,_.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}lt.SidebarToggleFill=it;var Le=lt;var w=s(U()),Ht=s($()),Rt=s(j()),Y=s(I()),qt=s(ce());import{privateApis as bn}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='1b00f16b8d']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","1b00f16b8d"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var ne=s(U()),Oe=s(ce()),oe=s($()),G=s(j()),m=s(I()),Ot=s(ye()),Dt=s(gt());var le=s(U()),xt=s(j()),Gt=s($()),Ge=s(I());import{__experimentalRegisterConnector as on,__experimentalConnectorItem as rn,__experimentalDefaultConnectorSettings as an,privateApis as sn}from"@wordpress/connectors";var mt=s(ot()),{lock:Xo,unlock:W}=(0,mt.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var xe=s(ce()),te=s($()),ee=s(j()),c=s(I()),vt=s(ye());function ht({file:e,settingName:t,connectorName:n,isInstalled:r,isActivated:o,keySource:a="none",initialIsConnected:i=!1}){let[l,u]=(0,ee.useState)(!1),[d,f]=(0,ee.useState)(!1),[v,z]=(0,ee.useState)(i),[p,R]=(0,ee.useState)(null),b=e?.replace(/\.php$/,""),q=b?.includes("/")?b.split("/")[0]:b,{derivedPluginStatus:D,canManagePlugins:k,currentApiKey:P,canInstallPlugins:L}=(0,te.useSelect)(V=>{let N=V(xe.store),K=N.getEntityRecord("root","site")?.[t]??"",X=!!N.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:N.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:K,canInstallPlugins:X};let ue=N.getEntityRecord("root","plugin",b);if(!N.hasFinishedResolution("getEntityRecord",["root","plugin",b]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:K,canInstallPlugins:X};if(ue)return{derivedPluginStatus:ue.status==="active"||ue.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:K,canInstallPlugins:X};let fe="not-installed";return o?fe="active":r&&(fe="inactive"),{derivedPluginStatus:fe,canManagePlugins:!1,currentApiKey:K,canInstallPlugins:X}},[b,t,r,o]),g=p??D,M=k,S=g==="active"&&v||p==="active"&&!!P,{saveEntityRecord:h,invalidateResolution:B}=(0,te.useDispatch)(xe.store),{createSuccessNotice:T,createErrorNotice:O}=(0,te.useDispatch)(vt.store),de=async()=>{if(q){f(!0);try{await h("root","plugin",{slug:q,status:"active"},{throwOnError:!0}),R("active"),B("getEntityRecord",["root","site"]),u(!0),T((0,c.sprintf)((0,c.__)("Plugin for %s installed and activated successfully."),n),{id:"connector-plugin-install-success",type:"snackbar"})}catch{O((0,c.sprintf)((0,c.__)("Failed to install plugin for %s."),n),{id:"connector-plugin-install-error",type:"snackbar"})}finally{f(!1)}}},Tt=async()=>{if(e){f(!0);try{await h("root","plugin",{plugin:b,status:"active"},{throwOnError:!0}),R("active"),B("getEntityRecord",["root","site"]),u(!0),T((0,c.sprintf)((0,c.__)("Plugin for %s activated successfully."),n),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{O((0,c.sprintf)((0,c.__)("Failed to activate plugin for %s."),n),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{f(!1)}}};return{pluginStatus:g,canInstallPlugins:L,canActivatePlugins:M,isExpanded:l,setIsExpanded:u,isBusy:d,isConnected:S,currentApiKey:P,keySource:a,handleButtonClick:()=>{if(g==="not-installed"){if(L===!1)return;de()}else if(g==="inactive"){if(M===!1)return;Tt()}else u(!l)},getButtonLabel:()=>{if(d)return g==="not-installed"?(0,c.__)("Installing\u2026"):(0,c.__)("Activating\u2026");if(l)return(0,c.__)("Cancel");if(S)return(0,c.__)("Edit");switch(g){case"checking":return(0,c.__)("Checking\u2026");case"not-installed":return(0,c.__)("Install");case"inactive":return(0,c.__)("Activate");case"active":return(0,c.__)("Set up")}},saveApiKey:async V=>{let N=P;try{let X=(await h("root","site",{[t]:V},{throwOnError:!0}))?.[t];if(V&&(X===N||!X))throw new Error("It was not possible to connect to the provider using this key.");z(!0),T((0,c.sprintf)((0,c.__)("%s connected successfully."),n),{id:"connector-connect-success",type:"snackbar"})}catch(re){throw console.error("Failed to save API key:",re),re}},removeApiKey:async()=>{try{await h("root","site",{[t]:""},{throwOnError:!0}),z(!1),T((0,c.sprintf)((0,c.__)("%s disconnected."),n),{id:"connector-disconnect-success",type:"snackbar"})}catch(V){throw console.error("Failed to remove API key:",V),O((0,c.sprintf)((0,c.__)("Failed to disconnect %s."),n),{id:"connector-disconnect-error",type:"snackbar"}),V}}}}var bt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Pt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),wt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Lt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),yt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:cn}=W(sn);function ze(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var ln={google:yt,openai:bt,anthropic:Pt,akismet:Lt};function dn(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=ln[e];return React.createElement(n||wt,null)}var un=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,Ge.__)("Connected")),fn=()=>React.createElement(we,null,(0,Ge.__)("Not available"));function pn({name:e,description:t,logo:n,authentication:r,plugin:o}){let a=r?.method==="api_key"?r:void 0,i=a?.settingName??"",l=a?.credentialsUrl??void 0,u=o?.file?.replace(/\.php$/,""),d=u?.includes("/")?u.split("/")[0]:u,f;try{l&&(f=new URL(l).hostname)}catch{}let{pluginStatus:v,canInstallPlugins:z,canActivatePlugins:p,isExpanded:R,setIsExpanded:b,isBusy:q,isConnected:D,currentApiKey:k,keySource:P,handleButtonClick:L,getButtonLabel:g,saveApiKey:M,removeApiKey:S}=ht({file:o?.file,settingName:i,connectorName:e,isInstalled:o?.isInstalled,isActivated:o?.isActivated,keySource:a?.keySource,initialIsConnected:a?.isConnected}),h=P==="env"||P==="constant",B=v==="not-installed"&&z===!1||v==="inactive"&&p===!1,T=!B,O=(0,xt.useRef)(null);return React.createElement(rn,{className:d?`connector-item--${d}`:void 0,logo:n,name:e,description:t,actionArea:React.createElement(le.__experimentalHStack,{spacing:3,expanded:!1},D&&React.createElement(un,null),B&&React.createElement(fn,null),T&&React.createElement(le.Button,{ref:O,variant:R||D?"tertiary":"secondary",size:"compact",onClick:L,disabled:v==="checking"||q,isBusy:q,accessibleWhenDisabled:!0},g()))},R&&v==="active"&&React.createElement(an,{key:D?"connected":"setup",initialValue:h?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":k,helpUrl:l,helpLabel:f,readOnly:D||h,keySource:P,onRemove:h?void 0:async()=>{await S(),O.current?.focus()},onSave:async de=>{await M(de),b(!1),O.current?.focus()}}))}function zt(){let e=ze(),t=n=>n.replace(/[^a-z0-9-_]/gi,"-");for(let[n,r]of Object.entries(e)){if(n==="akismet"&&!r.plugin?.isInstalled)continue;let{authentication:o}=r,a=t(n),i={name:r.name,description:r.description,type:r.type,logo:dn(n,r.logoUrl),authentication:o,plugin:r.plugin},l=W((0,Gt.select)(cn)).getConnector(a);o.method==="api_key"&&!l?.render&&(i.render=pn),on(a,i)}}function Mt(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var gn="ai",mn="ai-wp-admin",Me="ai/ai",vn="https://wordpress.org/plugins/ai/",De=Object.values(ze()),hn=De.some(e=>e.type==="ai_provider"),Bt=[];for(let e of De)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Bt.push(e.authentication.settingName);function jt(){let[e,t]=(0,G.useState)(!1),[n,r]=(0,G.useState)(!1),o=(0,G.useRef)(null);(0,G.useEffect)(()=>{n&&o.current?.focus()},[n]);let a=(0,G.useRef)(De.some(L=>L.type==="ai_provider"&&L.authentication.method==="api_key"&&L.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:l,canManagePlugins:u,hasConnectedProvider:d}=(0,oe.useSelect)(L=>{let g=L(Oe.store),M=!!g.canUser("create",{kind:"root",name:"plugin"}),S=g.getEntityRecord("root","site"),h=a||Bt.some(O=>!!S?.[O]),B=g.getEntityRecord("root","plugin",Me);return g.hasFinishedResolution("getEntityRecord",["root","plugin",Me])?B?{pluginStatus:B.status==="active"?"active":"inactive",canInstallPlugins:M,canManagePlugins:!0,hasConnectedProvider:h}:{pluginStatus:"not-installed",canInstallPlugins:M,canManagePlugins:M,hasConnectedProvider:h}:{pluginStatus:"checking",canInstallPlugins:M,canManagePlugins:void 0,hasConnectedProvider:h}},[]),{saveEntityRecord:f}=(0,oe.useDispatch)(Oe.store),{createSuccessNotice:v,createErrorNotice:z}=(0,oe.useDispatch)(Ot.store),p=async()=>{t(!0);try{await f("root","plugin",{slug:gn,status:"active"},{throwOnError:!0}),r(!0),v((0,m.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{z((0,m.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},R=async()=>{t(!0);try{await f("root","plugin",{plugin:Me,status:"active"},{throwOnError:!0}),r(!0),v((0,m.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{z((0,m.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!hn||i==="checking"||i==="active"&&a&&!n||i==="not-installed"&&l===!1||i==="inactive"&&u===!1)return null;let b=i==="active"&&!d,q=i==="active"&&d&&(!a||n),D=i==="not-installed"||i==="inactive",k=()=>q?(0,m.__)("The AI plugin is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. Learn more"):b?(0,m.__)("The AI plugin is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. Learn more"):(0,m.__)("The AI plugin can use your AI connectors to generate featured images, alt text, titles, excerpts and more. Learn more"),P=()=>i==="not-installed"?{label:e?(0,m.__)("Installing\u2026"):(0,m.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:p}:{label:e?(0,m.__)("Activating\u2026"):(0,m.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:R};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,G.createInterpolateElement)(k(),{strong:React.createElement("strong",null),a:React.createElement(ne.ExternalLink,{href:vn})})),D?React.createElement(ne.Button,{variant:"primary",size:"compact",isBusy:e,disabled:P().disabled,accessibleWhenDisabled:!0,onClick:P().onClick},P().label):React.createElement(ne.Button,{ref:o,variant:"secondary",size:"compact",href:(0,Dt.addQueryArgs)("options-general.php",{page:mn})},(0,m.__)("Control features in the AI plugin"))),React.createElement(Mt,null))}var{store:Pn}=W(bn);zt();function wn(){let{connectors:e,canInstallPlugins:t}=(0,Ht.useSelect)(o=>({connectors:W(o(Pn)).getConnectors(),canInstallPlugins:o(qt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),r=e.filter(o=>o.render).length===0;return React.createElement(Le,{title:(0,Y.__)("Connectors"),headingLevel:1,subTitle:(0,Y.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${r?" connectors-page--empty":""}`},r?React.createElement(w.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(w.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(w.__experimentalHeading,{level:2,size:15,weight:600},(0,Y.__)("No connectors yet")),React.createElement(w.__experimentalText,{size:12},(0,Y.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(w.Button,{variant:"secondary",href:"plugin-install.php"},(0,Y.__)("Learn more"))):React.createElement(w.__experimentalVStack,{spacing:3},React.createElement(jt,null),React.createElement(w.__experimentalVStack,{spacing:3,role:"list"},e.map(o=>o.render?React.createElement(o.render,{key:o.slug,slug:o.slug,name:o.name,description:o.description,type:o.type,logo:o.logo,authentication:o.authentication,plugin:o.plugin}):null))),t&&React.createElement("p",null,(0,Rt.createInterpolateElement)((0,Y.__)("If the connector you need is not listed, search the plugin directory to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function Ln(){return React.createElement(wn,null)}var yn=Ln;export{yn as stage}; +var pa=Object.create;var Ae=Object.defineProperty;var ma=Object.getOwnPropertyDescriptor;var ga=Object.getOwnPropertyNames;var wa=Object.getPrototypeOf,ha=Object.prototype.hasOwnProperty;var y=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),va=(e,t)=>{for(var a in t)Ae(e,a,{get:t[a],enumerable:!0})},xa=(e,t,a,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ga(t))!ha.call(e,r)&&r!==a&&Ae(e,r,{get:()=>t[r],enumerable:!(o=ma(t,r))||o.enumerable});return e};var i=(e,t,a)=>(a=e!=null?pa(wa(e)):{},xa(t||!e||!e.__esModule?Ae(a,"default",{value:e,enumerable:!0}):a,e));var te=y((go,qe)=>{qe.exports=window.wp.i18n});var ae=y((wo,Ue)=>{Ue.exports=window.wp.components});var A=y((ho,Qe)=>{Qe.exports=window.ReactJSXRuntime});var x=y((xo,$e)=>{$e.exports=window.wp.element});var G=y((Ao,rt)=>{rt.exports=window.React});var Z=y((ar,yt)=>{yt.exports=window.wp.primitives});var Bt=y((gr,Nt)=>{Nt.exports=window.wp.privateApis});var le=y((as,jt)=>{jt.exports=window.wp.data});var xe=y((os,Yt)=>{Yt.exports=window.wp.coreData});var Ve=y((rs,Rt)=>{Rt.exports=window.wp.notices});var Vt=y((ss,Wt)=>{Wt.exports=window.wp.url});function Je(e){var t,a,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t(0,tt.jsx)(o,{ref:s,className:v("admin-ui-navigable-region",t),"aria-label":a,role:"region",tabIndex:"-1",...r,children:e}));at.displayName="NavigableRegion";var ot=at;var it=i(G(),1),st={};function Pe(e,t){let a=it.useRef(st);return a.current===st&&(a.current=e(t)),a}function Le(e,...t){let a=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(o=>a.searchParams.append("args[]",o)),`Base UI error #${e}; visit ${a} for the full message.`}var me=i(G(),1);function Ne(e,t,a,o){let r=Pe(lt).current;return ya(r,e,t,a,o)&&ft(r,[e,t,a,o]),r.callback}function nt(e){let t=Pe(lt).current;return Aa(t,e)&&ft(t,e),t.callback}function lt(){return{callback:null,cleanup:null,refs:[]}}function ya(e,t,a,o,r){return e.refs[0]!==t||e.refs[1]!==a||e.refs[2]!==o||e.refs[3]!==r}function Aa(e,t){return e.refs.length!==t.length||e.refs.some((a,o)=>a!==t[o])}function ft(e,t){if(e.refs=t,t.every(a=>a==null)){e.callback=null;return}e.callback=a=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),a!=null){let o=Array(t.length).fill(null);for(let r=0;r{for(let r=0;r=e}function Be(e){if(!ct.isValidElement(e))return null;let t=e,a=t.props;return(ut(19)?a?.ref:t.ref)??null}function oe(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function pt(e,t){let a={};for(let o in e){let r=e[o];if(t?.hasOwnProperty(o)){let s=t[o](r);s!=null&&Object.assign(a,s);continue}r===!0?a[`data-${o.toLowerCase()}`]="":r&&(a[`data-${o.toLowerCase()}`]=r.toString())}return a}function mt(e,t){return typeof e=="function"?e(t):e}function gt(e,t){return typeof e=="function"?e(t):e}var se={};function N(e,t,a,o,r){let s={...Ce(e,se)};return t&&(s=re(s,t)),a&&(s=re(s,a)),o&&(s=re(s,o)),r&&(s=re(s,r)),s}function wt(e){if(e.length===0)return se;if(e.length===1)return Ce(e[0],se);let t={...Ce(e[0],se)};for(let a=1;a=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function ht(e){return typeof e=="function"}function Ce(e,t){return ht(e)?e(t):e??se}function Ba(e,t){return t?e?a=>{if(Ha(a)){let r=a;Ca(r);let s=t(r);return r.baseUIHandlerPrevented||e?.(r),s}let o=t(a);return e?.(a),o}:t:e}function Ca(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function He(e,t){return t?e?t+" "+e:t:e}function Ha(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Oa=Object.freeze([]),I=Object.freeze({});var Oe=i(G(),1);function vt(e,t,a={}){let o=t.render,r=Da(t,a);if(a.enabled===!1)return null;let s=a.state??I;return Ta(e,o,r,s)}function Da(e,t={}){let{className:a,style:o,render:r}=e,{state:s=I,ref:l,props:f,stateAttributesMapping:c,enabled:d=!0}=t,p=d?mt(a,s):void 0,n=d?gt(o,s):void 0,h=d?pt(s,c):I,m=d?oe(h,Array.isArray(f)?wt(f):f)??I:I;return typeof document<"u"&&(d?Array.isArray(l)?m.ref=nt([m.ref,Be(r),...l]):m.ref=Ne(m.ref,Be(r),l):Ne(null,null)),d?(p!==void 0&&(m.className=He(m.className,p)),n!==void 0&&(m.style=oe(m.style,n)),m):I}function Ta(e,t,a,o){if(t){if(typeof t=="function")return t(a,o);let r=N(a,t.props);return r.ref=a.ref,me.cloneElement(t,r)}if(e&&typeof e=="string")return za(e,a);throw new Error(Le(8))}function za(e,t){return e==="button"?(0,Oe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Oe.createElement)("img",{alt:"",...t,key:t.key}):me.createElement(e,t)}function M(e){return vt(e.defaultTagName??"div",e,e)}var bt=i(x(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='244b5c59c0']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","244b5c59c0"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral,#f8f8f8);color:var(--wpds-color-fg-content-neutral-weak,#6d6d6d)}}')),document.head.appendChild(e)}var xt={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},De=(0,bt.forwardRef)(function({children:t,intent:a="none",render:o,className:r,...s},l){return M({render:o,defaultTagName:"span",ref:l,props:N(s,{className:v(xt.badge,xt[`is-${a}-intent`],r),children:t})})});var At=i(x(),1),Pt=i(Z(),1),Lt=i(A(),1),Te=(0,At.forwardRef)(function({icon:t,size:a=24,...o},r){return(0,Lt.jsx)(Pt.SVG,{ref:r,fill:"currentColor",...t.props,...o,width:a,height:a})});var ge=i(Z(),1),ze=i(A(),1),ke=(0,ze.jsx)(ge.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ze.jsx)(ge.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})});var we=i(Z(),1),Se=i(A(),1),_e=(0,Se.jsx)(we.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Se.jsx)(we.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})});var he=i(Z(),1),Ee=i(A(),1),Ie=(0,Ee.jsx)(he.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ee.jsx)(he.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})});var ve=i(Z(),1),Me=i(A(),1),je=(0,Me.jsx)(ve.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Me.jsx)(ve.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"})});var Ct=i(x(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","71d20935c2"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var ka={stack:"_19ce0419607e1896__stack"},Sa={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},X=(0,Ct.forwardRef)(function({direction:t,gap:a,align:o,justify:r,wrap:s,render:l,...f},c){let d={gap:a&&Sa[a],alignItems:o,justifyContent:r,flexDirection:t,flexWrap:s};return M({render:l,ref:c,props:N(f,{style:d,className:ka.stack})})});var ie={};va(ie,{Description:()=>kt,Root:()=>Ht});var K=i(x(),1);import{speak as _a}from"@wordpress/a11y";var q=i(A(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='671ebfc62d']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","671ebfc62d"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}")),document.head.appendChild(e)}var Ea={"box-sizing":"_336cd3e4e743482f__box-sizing"};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='a66a881fc5']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","a66a881fc5"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-font-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#d8d8d8);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{text-wrap:pretty;color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f2f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b381);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#eaffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#007f30)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}}")),document.head.appendChild(e)}var Ye={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",description:"_1904b570a89bb815__description","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error"},Ia={neutral:null,info:Ie,warning:ke,success:je,error:_e};function Ma(e){return e==="error"?"assertive":"polite"}function ja(e){if(e){if(typeof e=="string")return e;try{return(0,K.renderToString)(e)}catch{return}}}function Ya(e,t){let a=ja(e);(0,K.useEffect)(()=>{a&&_a(a,t)},[a,t])}var Ht=(0,K.forwardRef)(function({intent:t="neutral",children:a,icon:o,spokenMessage:r=a,politeness:s=Ma(t),render:l,...f},c){Ya(r,s);let d=o===null?null:o??Ia[t],p=v(Ye.notice,Ye[`is-${t}`],Ea["box-sizing"]);return M({defaultTagName:"div",render:l,ref:c,props:N({className:p,children:(0,q.jsxs)(q.Fragment,{children:[a,d&&(0,q.jsx)(Te,{className:Ye.icon,icon:d})]})},f)})});var Tt=i(x(),1);var Dt=i(x(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='6675f7d310']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","6675f7d310"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{font-size:var(--wpds-font-size-2xl,32px);line-height:var(--wpds-font-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{font-size:var(--wpds-font-size-xl,20px);line-height:var(--wpds-font-line-height-md,24px)}.aa58f227716bcde2__heading-lg{font-size:var(--wpds-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{font-size:var(--wpds-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-xs,11px);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{font-size:var(--wpds-font-size-xl,20px);line-height:var(--wpds-font-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{font-size:var(--wpds-font-size-lg,15px);line-height:var(--wpds-font-line-height-md,24px)}._131101940be12424__body-md{font-size:var(--wpds-font-size-md,13px);line-height:var(--wpds-font-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{font-size:var(--wpds-font-size-sm,12px);line-height:var(--wpds-font-line-height-xs,16px)}}')),document.head.appendChild(e)}var Ot={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"},Re=(0,Dt.forwardRef)(function({variant:t="body-md",render:a,className:o,...r},s){return M({render:a,defaultTagName:"span",ref:s,props:N(r,{className:v(Ot.text,Ot[t],o)})})});var zt=i(A(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='a66a881fc5']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","a66a881fc5"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-font-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#d8d8d8);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{text-wrap:pretty;color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f2f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b381);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#eaffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#007f30)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}}")),document.head.appendChild(e)}var Ra={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",description:"_1904b570a89bb815__description","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error"},kt=(0,Tt.forwardRef)(function({className:t,...a},o){return(0,zt.jsx)(Re,{ref:o,variant:"body-md",className:v(Ra.description,t),...a})});var St=i(ae(),1),{Fill:_t,Slot:Et}=(0,St.createSlotFill)("SidebarToggle");var z=i(A(),1);function It({headingLevel:e=1,breadcrumbs:t,badges:a,title:o,subTitle:r,actions:s,showSidebarToggle:l=!0}){let f=`h${e}`;return(0,z.jsxs)(X,{direction:"column",className:"admin-ui-page__header",children:[(0,z.jsxs)(X,{direction:"row",justify:"space-between",gap:"sm",children:[(0,z.jsxs)(X,{direction:"row",gap:"sm",align:"center",justify:"start",children:[l&&(0,z.jsx)(Et,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,z.jsx)(f,{className:"admin-ui-page__header-title",children:o}),t,a]}),(0,z.jsx)(X,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:s})]}),r&&(0,z.jsx)("p",{className:"admin-ui-page__header-subtitle",children:r})]})}var ne=i(A(),1);function Mt({headingLevel:e,breadcrumbs:t,badges:a,title:o,subTitle:r,children:s,className:l,actions:f,hasPadding:c=!1,showSidebarToggle:d=!0}){let p=v("admin-ui-page",l);return(0,ne.jsxs)(ot,{className:p,ariaLabel:o,children:[(o||t||a)&&(0,ne.jsx)(It,{headingLevel:e,breadcrumbs:t,badges:a,title:o,subTitle:r,actions:f,showSidebarToggle:d}),c?(0,ne.jsx)("div",{className:"admin-ui-page__content has-padding",children:s}):s]})}Mt.SidebarToggleFill=_t;var We=Mt;var P=i(ae()),la=i(le()),fa=i(x()),k=i(te()),da=i(xe());import{privateApis as oo}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='eb5f96e519']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","eb5f96e519"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 92% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 58% -10%,#aa82b873 0,#aa82b800 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 8% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 42% -10%,#aa82b873 0,#aa82b800 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var ue=i(ae()),Xe=i(xe()),ce=i(le()),B=i(x()),w=i(te()),ra=i(Ve()),sa=i(Vt());var Q=i(ae()),Jt=i(x()),$t=i(le()),F=i(te());import{__experimentalRegisterConnector as Wa,__experimentalConnectorItem as Va,__experimentalDefaultConnectorSettings as Fa,privateApis as Ga}from"@wordpress/connectors";var Ft=i(Bt()),{lock:is,unlock:U}=(0,Ft.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Fe=i(xe()),de=i(le()),fe=i(x()),u=i(te()),Gt=i(Ve());function Zt({file:e,settingName:t,connectorName:a,isInstalled:o,isActivated:r,keySource:s="none",initialIsConnected:l=!1}){let[f,c]=(0,fe.useState)(!1),[d,p]=(0,fe.useState)(!1),[n,h]=(0,fe.useState)(l),[m,j]=(0,fe.useState)(null),b=e?.replace(/\.php$/,""),Y=b?.includes("/")?b.split("/")[0]:b,{derivedPluginStatus:S,canManagePlugins:J,currentApiKey:C,canInstallPlugins:_}=(0,de.useSelect)(R=>{let W=R(Fe.store),ee=W.getEntityRecord("root","site")?.[t]??"",V=!!W.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:W.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:ee,canInstallPlugins:V};let be=W.getEntityRecord("root","plugin",b);if(!W.hasFinishedResolution("getEntityRecord",["root","plugin",b]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:ee,canInstallPlugins:V};if(be)return{derivedPluginStatus:be.status==="active"||be.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:ee,canInstallPlugins:V};let ye="not-installed";return r?ye="active":o&&(ye="inactive"),{derivedPluginStatus:ye,canManagePlugins:!1,currentApiKey:ee,canInstallPlugins:V}},[b,t,o,r]),g=m??S,H=J,O=g==="active"&&n||m==="active"&&!!C,{saveEntityRecord:L,invalidateResolution:D}=(0,de.useDispatch)(Fe.store),{createSuccessNotice:T,createErrorNotice:E}=(0,de.useDispatch)(Gt.store),$=async()=>{if(Y){p(!0);try{await L("root","plugin",{slug:Y,status:"active"},{throwOnError:!0}),j("active"),D("getEntityRecord",["root","site"]),c(!0),T((0,u.sprintf)((0,u.__)("Plugin for %s installed and activated successfully."),a),{id:"connector-plugin-install-success",type:"snackbar"})}catch{E((0,u.sprintf)((0,u.__)("Failed to install plugin for %s."),a),{id:"connector-plugin-install-error",type:"snackbar"})}finally{p(!1)}}},ua=async()=>{if(e){p(!0);try{await L("root","plugin",{plugin:b,status:"active"},{throwOnError:!0}),j("active"),D("getEntityRecord",["root","site"]),c(!0),T((0,u.sprintf)((0,u.__)("Plugin for %s activated successfully."),a),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{E((0,u.sprintf)((0,u.__)("Failed to activate plugin for %s."),a),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{p(!1)}}};return{pluginStatus:g,canInstallPlugins:_,canActivatePlugins:H,isExpanded:f,setIsExpanded:c,isBusy:d,isConnected:O,currentApiKey:C,keySource:s,handleButtonClick:()=>{if(g==="not-installed"){if(_===!1)return;$()}else if(g==="inactive"){if(H===!1)return;ua()}else c(!f)},getButtonLabel:()=>{if(d)return g==="not-installed"?(0,u.__)("Installing\u2026"):(0,u.__)("Activating\u2026");if(f)return(0,u.__)("Cancel");if(O)return(0,u.__)("Edit");switch(g){case"checking":return(0,u.__)("Checking\u2026");case"not-installed":return(0,u.__)("Install");case"inactive":return(0,u.__)("Activate");case"active":return(0,u.__)("Set up")}},saveApiKey:async R=>{let W=C;try{let V=(await L("root","site",{[t]:R},{throwOnError:!0}))?.[t];if(R&&(V===W||!V))throw new Error("It was not possible to connect to the provider using this key.");h(!0),T((0,u.sprintf)((0,u.__)("%s connected successfully."),a),{id:"connector-connect-success",type:"snackbar"})}catch(pe){throw console.error("Failed to save API key:",pe),pe}},removeApiKey:async()=>{try{await L("root","site",{[t]:""},{throwOnError:!0}),h(!1),T((0,u.sprintf)((0,u.__)("%s disconnected."),a),{id:"connector-disconnect-success",type:"snackbar"})}catch(R){throw console.error("Failed to remove API key:",R),E((0,u.sprintf)((0,u.__)("Failed to disconnect %s."),a),{id:"connector-disconnect-error",type:"snackbar"}),R}}}}var Xt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Kt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),qt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Ut=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),Qt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:Za}=U(Ga);function ea(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"{}")}catch{return{}}}function Ge(){return ea().connectors??{}}function ta(){return!!ea().isFileModDisabled}var Xa={google:Qt,openai:Xt,anthropic:Kt,akismet:Ut};function Ka(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let a=Xa[e];return React.createElement(a||qt,null)}var qa=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,F.__)("Connected")),Ua=({slug:e})=>React.createElement(Q.ExternalLink,{href:(0,F.sprintf)((0,F.__)("https://wordpress.org/plugins/%s/"),e)},(0,F.__)("Learn more")),Qa=()=>React.createElement(De,null,(0,F.__)("Not available"));function Ja({name:e,description:t,logo:a,authentication:o,plugin:r}){let s=o?.method==="api_key"?o:void 0,l=s?.settingName??"",f=s?.credentialsUrl??void 0,c=r?.file?.replace(/\.php$/,""),d=c?.includes("/")?c.split("/")[0]:c,p;try{f&&(p=new URL(f).hostname)}catch{}let{pluginStatus:n,canInstallPlugins:h,canActivatePlugins:m,isExpanded:j,setIsExpanded:b,isBusy:Y,isConnected:S,currentApiKey:J,keySource:C,handleButtonClick:_,getButtonLabel:g,saveApiKey:H,removeApiKey:O}=Zt({file:r?.file,settingName:l,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:s?.keySource,initialIsConnected:s?.isConnected}),L=C==="env"||C==="constant",D=n==="not-installed"&&h===!1||n==="inactive"&&m===!1,T=!D,E=(0,Jt.useRef)(null);return React.createElement(Va,{className:d?`connector-item--${d}`:void 0,logo:a,name:e,description:t,actionArea:React.createElement(Q.__experimentalHStack,{spacing:3,expanded:!1},S&&React.createElement(qa,null),D&&(d?React.createElement(Ua,{slug:d}):React.createElement(Qa,null)),T&&React.createElement(Q.Button,{ref:E,variant:j||S?"tertiary":"secondary",size:"compact",onClick:_,disabled:n==="checking"||Y,isBusy:Y,accessibleWhenDisabled:!0},g()))},j&&n==="active"&&React.createElement(Fa,{key:S?"connected":"setup",initialValue:L?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":J,helpUrl:f,helpLabel:p,readOnly:S||L,keySource:C,onRemove:L?void 0:async()=>{await O(),E.current?.focus()},onSave:async $=>{await H($),b(!1),E.current?.focus()}}))}function aa(){let e=Ge(),t=a=>a.replace(/[^a-z0-9-_]/gi,"-");for(let[a,o]of Object.entries(e)){if(a==="akismet"&&!o.plugin?.isInstalled)continue;let{authentication:r}=o,s=t(a),l={name:o.name,description:o.description,type:o.type,logo:Ka(a,o.logoUrl),authentication:r,plugin:o.plugin},f=U((0,$t.select)(Za)).getConnector(s);r.method==="api_key"&&!f?.render&&(l.render=Ja),Wa(s,l)}}function oa(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}})))}var $a="ai",eo="ai-wp-admin",Ze="ai/ai",to="https://wordpress.org/plugins/ai/",Ke=Object.values(Ge()),ao=Ke.some(e=>e.type==="ai_provider"),ia=[];for(let e of Ke)e.type==="ai_provider"&&e.authentication.method==="api_key"&&ia.push(e.authentication.settingName);function na(){let[e,t]=(0,B.useState)(!1),[a,o]=(0,B.useState)(!1),r=(0,B.useRef)(null);(0,B.useEffect)(()=>{a&&r.current?.focus()},[a]);let s=(0,B.useRef)(Ke.some(g=>g.type==="ai_provider"&&g.authentication.method==="api_key"&&g.authentication.isConnected)).current,{pluginStatus:l,canInstallPlugins:f,canManagePlugins:c,hasConnectedProvider:d}=(0,ce.useSelect)(g=>{let H=g(Xe.store),O=!!H.canUser("create",{kind:"root",name:"plugin"}),L=H.getEntityRecord("root","site"),D=s||ia.some($=>!!L?.[$]),T=H.getEntityRecord("root","plugin",Ze);return H.hasFinishedResolution("getEntityRecord",["root","plugin",Ze])?T?{pluginStatus:T.status==="active"?"active":"inactive",canInstallPlugins:O,canManagePlugins:!0,hasConnectedProvider:D}:{pluginStatus:"not-installed",canInstallPlugins:O,canManagePlugins:O,hasConnectedProvider:D}:{pluginStatus:"checking",canInstallPlugins:O,canManagePlugins:void 0,hasConnectedProvider:D}},[]),{saveEntityRecord:p}=(0,ce.useDispatch)(Xe.store),{createSuccessNotice:n,createErrorNotice:h}=(0,ce.useDispatch)(ra.store),m=async()=>{t(!0);try{await p("root","plugin",{slug:$a,status:"active"},{throwOnError:!0}),o(!0),n((0,w.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{h((0,w.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},j=async()=>{t(!0);try{await p("root","plugin",{plugin:Ze,status:"active"},{throwOnError:!0}),o(!0),n((0,w.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{h((0,w.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!ao||l==="checking"||l==="active"&&s&&!a||l==="inactive"&&c===!1)return null;let b=l==="active"&&!d,Y=l==="active"&&d&&(!s||a),S=l==="not-installed"||l==="inactive",J=l==="not-installed"&&f===!1,C=()=>Y?(0,w.__)("The AI plugin is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. Learn more"):b?(0,w.__)("The AI plugin is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. Learn more"):(0,w.__)("The AI plugin can use your AI connectors to generate featured images, alt text, titles, excerpts and more. Learn more"),_=()=>l==="not-installed"?{label:e?(0,w.__)("Installing\u2026"):(0,w.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:m}:{label:e?(0,w.__)("Activating\u2026"):(0,w.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:j};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,B.createInterpolateElement)(C(),{strong:React.createElement("strong",null),a:React.createElement(ue.ExternalLink,{href:to})})),!J&&(S?React.createElement(ue.Button,{variant:"primary",size:"compact",isBusy:e,disabled:_().disabled,accessibleWhenDisabled:!0,onClick:_().onClick},_().label):React.createElement(ue.Button,{ref:r,variant:"secondary",size:"compact",href:(0,sa.addQueryArgs)("options-general.php",{page:eo})},(0,w.__)("Control features in the AI plugin")))),React.createElement(oa,null))}var{store:ro}=U(oo);aa();function so(){let e=ta(),{connectors:t,canInstallPlugins:a,isAiPluginInstalled:o}=(0,la.useSelect)(n=>{let h=n(da.store),m=h.getEntityRecord("root","plugin","ai/ai");return{connectors:U(n(ro)).getConnectors(),canInstallPlugins:h.canUser("create",{kind:"root",name:"plugin"}),isAiPluginInstalled:!!m}},[]),r=t.filter(n=>n.render),s=Array.from(new Set(t.filter(n=>n.type==="ai_provider").map(n=>n.plugin?.file?.split("/")[0]).filter(n=>!!n))).sort(),l=new Set(t.filter(n=>n.plugin?.isInstalled).map(n=>n.plugin?.file?.split("/")[0]).filter(n=>!!n));o&&l.add("ai");let f=["ai",...s].filter(n=>!l.has(n)),c=r.length===0,d=f.length>0&&(e||!a),p=e?(0,k.__)("Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow."):(0,k.__)("You do not have permission to install plugins. Please ask a site administrator to install them for you.");return React.createElement(We,{title:(0,k.__)("Connectors"),subTitle:(0,k.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${c?" connectors-page--empty":""}`},d&&React.createElement(ie.Root,{intent:"info",className:"connectors-page__file-mods-notice"},React.createElement(ie.Description,null,p)),c?React.createElement(P.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(P.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(P.__experimentalHeading,{level:2,size:15,weight:600},(0,k.__)("No connectors yet")),React.createElement(P.__experimentalText,{size:12},(0,k.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(P.Button,{variant:"secondary",href:"plugin-install.php"},(0,k.__)("Learn more"))):React.createElement(P.__experimentalVStack,{spacing:3},React.createElement(na,null),React.createElement(P.__experimentalVStack,{spacing:3,role:"list"},t.map(n=>n.render?React.createElement(n.render,{key:n.slug,slug:n.slug,name:n.name,description:n.description,type:n.type,logo:n.logo,authentication:n.authentication,plugin:n.plugin}):null))),a&&!e&&React.createElement("p",null,(0,fa.createInterpolateElement)((0,k.__)("If the connector you need is not listed, search the plugin directory to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function io(){return React.createElement(so,null)}var no=io;export{no as stage}; diff --git a/src/wp-includes/build/routes/font-list/content.js b/src/wp-includes/build/routes/font-list/content.js index d15dd7a805ee9..e6565158d7f48 100644 --- a/src/wp-includes/build/routes/font-list/content.js +++ b/src/wp-includes/build/routes/font-list/content.js @@ -810,7 +810,7 @@ var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components // packages/admin-ui/build-module/page/header.mjs var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); function Header({ - headingLevel = 2, + headingLevel = 1, breadcrumbs, badges, title, @@ -819,42 +819,34 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( - Stack, - { - direction: "column", - className: "admin-ui-page__header", - render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("header", {}), - children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - SidebarToggleSlot, - { - bubblesVirtually: true, - className: "admin-ui-page__sidebar-toggle-slot" - } - ), - title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), - breadcrumbs, - badges - ] }), - /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - Stack, - { - direction: "row", - gap: "sm", - style: { width: "auto", flexShrink: 0 }, - className: "admin-ui-page__header-actions", - align: "center", - children: actions - } - ) - ] }), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) - ] - } - ); + return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "column", className: "admin-ui-page__header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Stack, + { + direction: "row", + gap: "sm", + style: { width: "auto", flexShrink: 0 }, + className: "admin-ui-page__header-actions", + align: "center", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); } // packages/admin-ui/build-module/page/index.mjs @@ -15480,7 +15472,7 @@ function FontLibraryPage() { })) ); } - return /* @__PURE__ */ React.createElement(page_default, { headingLevel: 1, title: (0, import_i18n46.__)("Fonts") }, /* @__PURE__ */ React.createElement( + return /* @__PURE__ */ React.createElement(page_default, { title: (0, import_i18n46.__)("Fonts") }, /* @__PURE__ */ React.createElement( Tabs3, { selectedTabId: activeTab, diff --git a/src/wp-includes/build/routes/font-list/content.min.asset.php b/src/wp-includes/build/routes/font-list/content.min.asset.php index 055d3fb568977..cc0fc7a6eb103 100644 --- a/src/wp-includes/build/routes/font-list/content.min.asset.php +++ b/src/wp-includes/build/routes/font-list/content.min.asset.php @@ -1 +1 @@ - array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '87ed406cb72d86f09e6b'); \ No newline at end of file + array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'f4a76b3cfc58409a8d9c'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/font-list/content.min.js b/src/wp-includes/build/routes/font-list/content.min.js index 8c33d2c316f1e..576cc3541569e 100644 --- a/src/wp-includes/build/routes/font-list/content.min.js +++ b/src/wp-includes/build/routes/font-list/content.min.js @@ -1,12 +1,12 @@ -var Xu=Object.create;var ra=Object.defineProperty;var Ku=Object.getOwnPropertyDescriptor;var Ju=Object.getOwnPropertyNames;var Qu=Object.getPrototypeOf,$u=Object.prototype.hasOwnProperty;var ue=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var tf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ju(e))!$u.call(t,s)&&s!==r&&ra(t,s,{get:()=>e[s],enumerable:!(o=Ku(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Xu(Qu(t)):{},tf(e||!t||!t.__esModule?ra(r,"default",{value:t,enumerable:!0}):r,t));var ut=Ht((Jg,oa)=>{oa.exports=window.wp.i18n});var X=Ht((Qg,sa)=>{sa.exports=window.wp.components});var z=Ht(($g,na)=>{na.exports=window.ReactJSXRuntime});var yt=Ht((ey,ia)=>{ia.exports=window.wp.element});var _r=Ht((sy,da)=>{da.exports=window.React});var Pr=Ht((Iy,_a)=>{_a.exports=window.wp.primitives});var Vs=Ht((Xy,Pa)=>{Pa.exports=window.wp.privateApis});var cr=Ht((Ky,Aa)=>{Aa.exports=window.wp.compose});var Na=Ht((dv,Va)=>{Va.exports=window.wp.editor});var be=Ht((mv,za)=>{za.exports=window.wp.coreData});var fe=Ht((pv,Ma)=>{Ma.exports=window.wp.data});var Rr=Ht((hv,Ga)=>{Ga.exports=window.wp.blocks});var ce=Ht((gv,ja)=>{ja.exports=window.wp.blockEditor});var Ha=Ht((xv,Ua)=>{Ua.exports=window.wp.styleEngine});var Xa=Ht((Lv,Za)=>{"use strict";Za.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var $a=Ht((Dv,Qa)=>{"use strict";var Pf=function(e){return Af(e)&&!Rf(e)};function Af(t){return!!t&&typeof t=="object"}function Rf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Lf(t)}var Ef=typeof Symbol=="function"&&Symbol.for,If=Ef?Symbol.for("react.element"):60103;function Lf(t){return t.$$typeof===If}function Bf(t){return Array.isArray(t)?[]:{}}function so(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Ir(Bf(t),t,e):t}function Df(t,e,r){return t.concat(e).map(function(o){return so(o,r)})}function Vf(t,e){if(!e.customMerge)return Ir;var r=e.customMerge(t);return typeof r=="function"?r:Ir}function Nf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function Ka(t){return Object.keys(t).concat(Nf(t))}function Ja(t,e){try{return e in t}catch{return!1}}function zf(t,e){return Ja(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function Mf(t,e,r){var o={};return r.isMergeableObject(t)&&Ka(t).forEach(function(s){o[s]=so(t[s],r)}),Ka(e).forEach(function(s){zf(t,s)||(Ja(t,s)&&r.isMergeableObject(e[s])?o[s]=Vf(s,r)(t[s],e[s],r):o[s]=so(e[s],r))}),o}function Ir(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||Df,r.isMergeableObject=r.isMergeableObject||Pf,r.cloneUnlessOtherwiseSpecified=so;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):Mf(t,e,r):so(e,r)}Ir.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Ir(o,s,r)},{})};var Gf=Ir;Qa.exports=Gf});var dn=Ht((H0,Ki)=>{Ki.exports=window.wp.keycodes});var el=Ht((eb,tl)=>{tl.exports=window.wp.apiFetch});var _u=Ht((FF,Tu)=>{Tu.exports=window.wp.date});function aa(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e(0,ua.jsx)(o,{ref:a,className:ve("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));fa.displayName="NavigableRegion";var ca=fa;var pa=u(_r(),1),ma={};function Fs(t,e){let r=pa.useRef(ma);return r.current===ma&&(r.current=t(e)),r}function ks(t,...e){let r=new URL(`https://base-ui.com/production-error/${t}`);return e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var Oo=u(_r(),1);function Os(t,e,r,o){let s=Fs(ga).current;return rf(s,t,e,r,o)&&ya(s,[t,e,r,o]),s.callback}function ha(t){let e=Fs(ga).current;return of(e,t)&&ya(e,t),e.callback}function ga(){return{callback:null,cleanup:null,refs:[]}}function rf(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function of(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function ya(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s{for(let s=0;s=t}function Ts(t){if(!wa.isValidElement(t))return null;let e=t,r=e.props;return(ba(19)?r?.ref:e.ref)??null}function Jr(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Sa(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function xa(t,e){return typeof t=="function"?t(e):t}function Ca(t,e){return typeof t=="function"?t(e):t}var $r={};function ko(t,e,r,o,s){let a={..._s(t,$r)};return e&&(a=Qr(a,e)),r&&(a=Qr(a,r)),o&&(a=Qr(a,o)),s&&(a=Qr(a,s)),a}function Fa(t){if(t.length===0)return $r;if(t.length===1)return _s(t[0],$r);let e={..._s(t[0],$r)};for(let r=1;r=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function ka(t){return typeof t=="function"}function _s(t,e){return ka(t)?t(e):t??$r}function lf(t,e){return e?t?r=>{if(ff(r)){let s=r;uf(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:e:t}function uf(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Ps(t,e){return e?t?e+" "+t:e:t}function ff(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var cf=Object.freeze([]),Ke=Object.freeze({});var As=u(_r(),1);function Oa(t,e,r={}){let o=e.render,s=df(e,r);if(r.enabled===!1)return null;let a=r.state??Ke;return mf(t,o,s,a)}function df(t,e={}){let{className:r,style:o,render:s}=t,{state:a=Ke,ref:n,props:l,stateAttributesMapping:m,enabled:f=!0}=e,c=f?xa(r,a):void 0,d=f?Ca(o,a):void 0,g=f?Sa(a,m):Ke,h=f?Jr(g,Array.isArray(l)?Fa(l):l)??Ke:Ke;return typeof document<"u"&&(f?Array.isArray(n)?h.ref=ha([h.ref,Ts(s),...n]):h.ref=Os(h.ref,Ts(s),n):Os(null,null)),f?(c!==void 0&&(h.className=Ps(h.className,c)),d!==void 0&&(h.style=Jr(h.style,d)),h):Ke}function mf(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=ko(r,e.props);return s.ref=r.ref,Oo.cloneElement(e,s)}if(t&&typeof t=="string")return pf(t,r);throw new Error(ks(8))}function pf(t,e){return t==="button"?(0,As.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,As.createElement)("img",{alt:"",...e,key:e.key}):Oo.createElement(t,e)}function Ta(t){return Oa(t.defaultTagName??"div",t,t)}var To=u(yt(),1),to=(0,To.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,To.cloneElement)(t,{width:e,height:e,...r,ref:o}));var _o=u(Pr(),1),Rs=u(z(),1),ur=(0,Rs.jsx)(_o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Rs.jsx)(_o.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Po=u(Pr(),1),Es=u(z(),1),fr=(0,Es.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Es.jsx)(Po.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Ao=u(Pr(),1),Is=u(z(),1),Ls=(0,Is.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Ao.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Ro=u(Pr(),1),Bs=u(z(),1),Eo=(0,Bs.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bs.jsx)(Ro.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Io=u(Pr(),1),Ds=u(z(),1),Lo=(0,Ds.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Io.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Ra=u(yt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","71d20935c2"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var hf={stack:"_19ce0419607e1896__stack"},gf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Ar=(0,Ra.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},m){let f={gap:r&&gf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return Ta({render:n,ref:m,props:ko(l,{style:f,className:hf.stack})})});var Ea=u(X(),1),{Fill:Ia,Slot:La}=(0,Ea.createSlotFill)("SidebarToggle");var Re=u(z(),1);function Ba({headingLevel:t=2,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Re.jsxs)(Ar,{direction:"column",className:"admin-ui-page__header",render:(0,Re.jsx)("header",{}),children:[(0,Re.jsxs)(Ar,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Re.jsxs)(Ar,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Re.jsx)(La,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Re.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Re.jsx)(Ar,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Re.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var eo=u(z(),1);function Da({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,hasPadding:m=!1,showSidebarToggle:f=!0}){let c=ve("admin-ui-page",n);return(0,eo.jsxs)(ca,{className:c,ariaLabel:o,children:[(o||e||r)&&(0,eo.jsx)(Ba,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:f}),m?(0,eo.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Da.SidebarToggleFill=Ia;var Ns=Da;var xo=u(ut()),Uu=u(X()),Hu=u(Na()),ws=u(be()),Wu=u(fe()),Yu=u(yt());var Mu=u(X(),1),Gu=u(Rr(),1),Mg=u(fe(),1),Gg=u(ce(),1),qn=u(yt(),1),jg=u(cr(),1);function Er(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var we=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var yf=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function zs(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return we(t,a)??we(t,n);let l={};return yf.forEach(m=>{let f=we(t,`settings${o}.${m}`)??we(t,`settings.${m}`);f!==void 0&&(l=Er(l,m.split("."),f))}),l}function Ms(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Er(t,n.split("."),r)}var kf=u(Ha(),1);var vf="1600px",bf="320px",wf=1,Sf=.25,xf=.75,Cf="14px";function Wa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=bf,maximumViewportWidth:s=vf,scaleFactor:a=wf,minimumFontSizeLimit:n}){if(n=Ee(n)?n:Cf,r){let b=Ee(r);if(!b?.unit||!b?.value)return null;let T=Ee(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),Sf),xf),V=ro(b.value*I,3);T?.value&&V0}function Ff(t){let e=t?.typography??{},r=t?.layout,o=Ee(r?.wideSize)?r?.wideSize:null;return Gs(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function Ya(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!Gs(e?.typography)&&!Gs(t))return r;let o=Ff(e)?.fluid??{},s=Wa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Of=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>Ya(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function qa(t,e,r=[],o="slug",s){let a=[e?we(t,["blocks",e,...r]):void 0,we(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let m of l){let f=n[m];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||qa(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Tf(t,e,r,[o,s]=[]){let a=Of.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=qa(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,m=n[l];return Bo(t,e,m)}return r}function _f(t,e,r,o=[]){let s=(e?we(t?.settings??{},["blocks",e,"custom",...o]):void 0)??we(t?.settings??{},["custom",...o]);return s?Bo(t,e,s):r}function Bo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=we(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...m]=n;return l==="preset"?Tf(t,e,r,m):l==="custom"?_f(t,e,r,m):r}function js(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=we(t,a);return o?Bo(t,r,n):n}function Us(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Er(t,a.split("."),r)}var Hs=u(Xa(),1);function oo(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Hs.default)(t?.styles,e?.styles)&&(0,Hs.default)(t?.settings,e?.settings)}var ri=u($a(),1);function ti(t){return Object.prototype.toString.call(t)==="[object Object]"}function ei(t){var e,r;return ti(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ti(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function dr(t,e){return(0,ri.default)(t,e,{isMergeableObject:ei,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var jf={grad:.9,turn:360,rad:360/(2*Math.PI)},je=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},qt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},Fe=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},fi=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},oi=function(t){return{r:Fe(t.r,0,255),g:Fe(t.g,0,255),b:Fe(t.b,0,255),a:Fe(t.a)}},Ws=function(t){return{r:qt(t.r),g:qt(t.g),b:qt(t.b),a:qt(t.a,3)}},Uf=/^#([0-9a-f]{3,8})$/i,Do=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},ci=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},di=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),m=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,m,o][f],g:255*[m,o,o,l,n,n][f],b:255*[n,n,m,o,o,l][f],a:s}},si=function(t){return{h:fi(t.h),s:Fe(t.s,0,100),l:Fe(t.l,0,100),a:Fe(t.a)}},ni=function(t){return{h:qt(t.h),s:qt(t.s),l:qt(t.l),a:qt(t.a,3)}},ai=function(t){return di((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},no=function(t){return{h:(e=ci(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},Hf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Wf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Yf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,qf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zs={string:[[function(t){var e=Uf.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?qt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?qt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=Yf.exec(t)||qf.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:oi({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Hf.exec(t)||Wf.exec(t);if(!e)return null;var r,o,s=si({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(jf[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return ai(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return je(e)&&je(r)&&je(o)?oi({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!je(e)||!je(r)||!je(o))return null;var n=si({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return ai(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!je(e)||!je(r)||!je(o))return null;var n=(function(l){return{h:fi(l.h),s:Fe(l.s,0,100),v:Fe(l.v,0,100),a:Fe(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return di(n)},"hsv"]]},ii=function(t,e){for(var r=0;r=.5},t.prototype.toHex=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?Do(qt(255*a)):"","#"+Do(r)+Do(o)+Do(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ws(this.rgba)},t.prototype.toRgbString=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return ni(no(this.rgba))},t.prototype.toHslString=function(){return e=ni(no(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=ci(this.rgba),{h:qt(e.h),s:qt(e.s),v:qt(e.v),a:qt(e.a,3)};var e},t.prototype.invert=function(){return Ie({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Ie(Ys(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Ie(Ys(this.rgba,-e))},t.prototype.grayscale=function(){return Ie(Ys(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Ie(li(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Ie(li(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Ie({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):qt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=no(this.rgba);return typeof e=="number"?Ie({h:e,s:r.s,l:r.l,a:r.a}):qt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Ie(e).toHex()},t})(),Ie=function(t){return t instanceof Xs?t:new Xs(t)},ui=[],mi=function(t){t.forEach(function(e){ui.indexOf(e)<0&&(e(Xs,Zs),ui.push(e))})};var Ks=u(yt(),1);var pi=u(yt(),1),Xt=(0,pi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var hi=u(z(),1);function ao({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Ks.useMemo)(()=>dr(r,e),[r,e]),n=(0,Ks.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,hi.jsx)(Xt.Provider,{value:n,children:t})}var Ue=u(X(),1),Li=u(ut(),1);var lc=u(fe(),1),uc=u(be(),1);var gi=u(z(),1);function Js({className:t,...e}){return(0,gi.jsx)(to,{className:ve(t,"global-styles-ui-icon-with-current-color"),...e})}var Je=u(X(),1);var mr=u(z(),1);function Xf({icon:t,children:e,...r}){return(0,mr.jsxs)(Je.__experimentalItem,{...r,children:[t&&(0,mr.jsxs)(Je.__experimentalHStack,{justify:"flex-start",children:[(0,mr.jsx)(Js,{icon:t,size:24}),(0,mr.jsx)(Je.FlexItem,{children:e})]}),!t&&e]})}function Le(t){return(0,mr.jsx)(Je.Navigator.Button,{as:Xf,...t})}var Qf=u(X(),1);var $f=u(ut(),1),Ci=u(ce(),1);var Qs=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},$s=function(t){return .2126*Qs(t.r)+.7152*Qs(t.g)+.0722*Qs(t.b)};function yi(t){t.prototype.luminance=function(){return e=$s(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,m,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=$s(a),m=$s(n),r=l>m?(l+.05)/(m+.05):(m+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Pe=u(yt(),1),wi=u(fe(),1),Si=u(be(),1),en=u(ut(),1);function tn(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&tn(t[r],e);return t}var Vo=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=Vo(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function io(t,e){let r=Vo(structuredClone(t),e);return oo(r,t)}function vi(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function bi(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=vi(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=vi(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}mi([yi]);function kt(t,e,r="merged",o=!0){let{user:s,base:a,merged:n,onChange:l}=(0,Pe.useContext)(Xt),m=n;r==="base"?m=a:r==="user"&&(m=s);let f=(0,Pe.useMemo)(()=>js(m,t,e,o),[m,t,e,o]),c=(0,Pe.useCallback)(d=>{let g=Us(s,t,d,e);l(g)},[s,l,t,e]);return[f,c]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Pe.useContext)(Xt),l=a;r==="base"?l=s:r==="user"&&(l=o);let m=(0,Pe.useMemo)(()=>zs(l,t,e),[l,t,e]),f=(0,Pe.useCallback)(c=>{let d=Ms(o,t,c,e);n(d)},[o,n,t,e]);return[m,f]}var Kf=[];function Jf({title:t,settings:e,styles:r}){return t===(0,en.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function No(t=[]){let{variationsFromTheme:e}=(0,wi.useSelect)(o=>({variationsFromTheme:o(Si.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||Kf}),[]),{user:r}=(0,Pe.useContext)(Xt);return(0,Pe.useMemo)(()=>{let o=structuredClone(r),s=tn(o,t);s.title=(0,en.__)("Default");let a=e.filter(l=>io(l,t)).map(l=>dr(s,l)),n=[s,...a];return n?.length?n.filter(Jf):[]},[t,r,e])}var xi=u(Vs(),1),{lock:d1,unlock:vt}=(0,xi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var rn=u(z(),1),{useHasDimensionsPanel:y1,useHasTypographyPanel:v1,useHasColorPanel:b1,useSettingsForBlockElement:w1,useHasBackgroundPanel:S1}=vt(Ci.privateApis);var Be=u(X(),1);function Lr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],m=(n??[]).concat(l??[]).concat(a??[]),f=m.filter(({color:g})=>g===t),c=m.filter(({color:g})=>g===s),d=f.concat(c).concat(m).filter(({color:g})=>g!==e).slice(0,2);return{paletteColors:m,highlightedColors:d}}var Oi=u(yt(),1),Ti=u(X(),1),sn=u(ut(),1);function tc(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function ec(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Fi(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function on(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Br(t){let e={fontFamily:Fi(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=ec(r),s=tc(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function ki(t){return{fontFamily:Fi(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var lo=u(z(),1);function zo({fontSize:t,variation:e}){let{base:r}=(0,Oi.useContext)(Xt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=bi(o),l=a?Br(a):{},m=n?Br(n):{};return s&&(l.color=s,m.color=s),t&&(l.fontSize=t,m.fontSize=t),(0,lo.jsxs)(Ti.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,lo.jsx)("span",{style:m,children:(0,sn._x)("A","Uppercase letter A")}),(0,lo.jsx)("span",{style:l,children:(0,sn._x)("a","Lowercase letter A")})]})}var _i=u(X(),1);var Pi=u(z(),1);function Ai({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Lr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Pi.jsx)(_i.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Ii=u(X(),1),Dr=u(cr(),1),pr=u(yt(),1);var Qe=u(z(),1),Ri=248,Ei=152,rc={leading:!0,trailing:!0};function oc({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Dr.useReducedMotion)(),[l,m]=(0,pr.useState)(!1),[f,{width:c}]=(0,Dr.useResizeObserver)(),[d,g]=(0,pr.useState)(c),[h,v]=(0,pr.useState)(),_=(0,Dr.useThrottle)(g,250,rc);(0,pr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,pr.useLayoutEffect)(()=>{let b=d?d/Ri:1,T=b-(h||0);(Math.abs(T)>.1||!h)&&v(b)},[d,h]);let A=c?c/Ri:1,k=h||A;return(0,Qe.jsxs)(Qe.Fragment,{children:[(0,Qe.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qe.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:Ei*k},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),tabIndex:-1,children:(0,Qe.jsx)(Ii.__unstableMotion.div,{style:{height:Ei*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var Vr=oc;var de=u(z(),1),sc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},nc={hover:{opacity:1},start:{opacity:.5}},ac={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function ic({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[m="black"]=kt("color.text"),[f=m]=kt("elements.h1.color.text"),{paletteColors:c}=Lr();return(0,de.jsxs)(Vr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:g})=>(0,de.jsx)(Be.__unstableMotion.div,{variants:sc,style:{height:"100%",overflow:"hidden"},children:(0,de.jsxs)(Be.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,de.jsx)(zo,{fontSize:65*d,variation:o}),(0,de.jsx)(Be.__experimentalVStack,{spacing:4*d,children:(0,de.jsx)(Ai,{normalizedColorSwatchSize:32,ratio:d})})]})},g),({key:d})=>(0,de.jsx)(Be.__unstableMotion.div,{variants:r?nc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,de.jsx)(Be.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:g},h)=>(0,de.jsx)("div",{style:{height:"100%",background:g,flexGrow:1}},h))})},d),({ratio:d,key:g})=>(0,de.jsx)(Be.__unstableMotion.div,{variants:ac,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,de.jsx)(Be.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,de.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},g)]})}var nn=ic;var Bi=u(z(),1);var ln=u(Rr(),1),Nr=u(ut(),1),gr=u(X(),1),un=u(fe(),1),$e=u(yt(),1),Mo=u(ce(),1),Mi=u(cr(),1);import{speak as mc}from"@wordpress/a11y";var Di=u(Rr(),1),Vi=u(fe(),1),fc=u(X(),1);var cc=u(z(),1);function dc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function an(t){let e=(0,Vi.useSelect)(s=>{let{getBlockStyles:a}=s(Di.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return dc(e,o)}var hr=u(X(),1),Ni=u(ut(),1);var zi=u(z(),1);var De=u(z(),1),{useHasDimensionsPanel:pc,useHasTypographyPanel:hc,useHasBorderPanel:gc,useSettingsForBlockElement:yc,useHasColorPanel:vc}=vt(Mo.privateApis);function bc(){let t=(0,un.useSelect)(s=>s(ln.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function wc(t){let[e]=_t("",t),r=yc(e,t),o=hc(r),s=vc(r),a=gc(r),n=pc(r),l=a||n,m=!!an(t)?.length;return o||s||l||m}function Sc({block:t}){return wc(t.name)?(0,De.jsx)(Le,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,De.jsxs)(gr.__experimentalHStack,{justify:"flex-start",children:[(0,De.jsx)(Mo.BlockIcon,{icon:t.icon}),(0,De.jsx)(gr.FlexItem,{children:t.title})]})}):null}function xc({filterValue:t}){let e=bc(),r=(0,Mi.useDebounce)(mc,500),{isMatchingSearchTerm:o}=(0,un.useSelect)(ln.store),s=t?e.filter(n=>o(n,t)):e,a=(0,$e.useRef)(null);return(0,$e.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Nr.sprintf)((0,Nr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,De.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,De.jsx)(gr.__experimentalText,{align:"center",as:"p",children:(0,Nr.__)("No blocks found.")}):s.map(n=>(0,De.jsx)(Sc,{block:n},"menu-itemblock-"+n.name))})}var o0=(0,$e.memo)(xc);var Tc=u(Rr(),1),Hi=u(ce(),1),Wi=u(yt(),1),_c=u(fe(),1),Pc=u(be(),1),fn=u(X(),1),Yi=u(ut(),1);var Cc=u(ce(),1),Gi=u(Rr(),1),Fc=u(X(),1),kc=u(yt(),1);var Oc=u(z(),1);var ji=u(X(),1),Ui=u(z(),1);function Se({children:t,level:e=2}){return(0,Ui.jsx)(ji.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var cn=u(z(),1);var{useHasDimensionsPanel:v0,useHasTypographyPanel:b0,useHasBorderPanel:w0,useSettingsForBlockElement:S0,useHasColorPanel:x0,useHasFiltersPanel:C0,useHasImageSettingsPanel:F0,useHasBackgroundPanel:k0,BackgroundPanel:O0,BorderPanel:T0,ColorPanel:_0,TypographyPanel:P0,DimensionsPanel:A0,FiltersPanel:R0,ImageSettingsPanel:E0,AdvancedPanel:I0}=vt(Hi.privateApis);var jh=u(ut(),1),Uh=u(X(),1),Hh=u(yt(),1);var Ac=u(X(),1);var Rc=u(z(),1);var Ec=u(ut(),1),Go=u(X(),1);var qi=u(z(),1);var Ho=u(X(),1);var Zi=u(X(),1);var jo=u(z(),1),Ic=({variation:t,isFocused:e,withHoverView:r})=>(0,jo.jsx)(Vr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,jo.jsx)(Zi.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,jo.jsx)(zo,{variation:t,fontSize:85*o})},s)}),Xi=Ic;var Ji=u(X(),1),yr=u(yt(),1),Qi=u(dn(),1),Uo=u(ut(),1);var uo=u(z(),1);function zr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,yr.useState)(!1),{base:l,user:m,onChange:f}=(0,yr.useContext)(Xt),c=(0,yr.useMemo)(()=>{let A=dr(l,t);return o&&(A=Vo(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),g=A=>{A.keyCode===Qi.ENTER&&(A.preventDefault(),d())},h=(0,yr.useMemo)(()=>oo(m,t),[m,t]),v=t?.title;t?.description&&(v=(0,Uo.sprintf)((0,Uo._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,uo.jsx)("div",{className:ve("global-styles-ui-variations_item",{"is-active":h}),role:"button",onClick:d,onKeyDown:g,tabIndex:0,"aria-label":v,"aria-current":h,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,uo.jsx)("div",{className:ve("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,uo.jsx)(Xt.Provider,{value:c,children:s?(0,uo.jsx)(Ji.Tooltip,{text:t?.title,children:_}):_})}var vr=u(z(),1),$i=["typography"];function Wo({title:t,gap:e=2}){let r=No($i);return r?.length<=1?null:(0,vr.jsxs)(Ho.__experimentalVStack,{spacing:3,children:[t&&(0,vr.jsx)(Se,{level:3,children:t}),(0,vr.jsx)(Ho.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,vr.jsx)(zr,{variation:o,properties:$i,showTooltip:!0,children:()=>(0,vr.jsx)(Xi,{variation:o})},s))})]})}var Mh=u(ut(),1),yo=u(X(),1);var Gh=u(yt(),1);var He=u(yt(),1),or=u(fe(),1),rr=u(be(),1),gn=u(ut(),1);var mn=u(el(),1),rl=u(be(),1),ol="/wp/v2/font-families";function sl(t){let{receiveEntityRecords:e}=t.dispatch(rl.store);e("postType","wp_font_family",[],void 0,!0)}async function nl(t,e){let o=await(0,mn.default)({path:ol,method:"POST",body:t});return sl(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function al(t,e,r){let o={path:`${ol}/${t}/font-faces`,method:"POST",body:e},s=await(0,mn.default)(o);return sl(r),{id:s.id,...s.font_face_settings}}var ul=u(X(),1);var ke=u(ut(),1),pn=["otf","ttf","woff","woff2"],il={100:(0,ke._x)("Thin","font weight"),200:(0,ke._x)("Extra-light","font weight"),300:(0,ke._x)("Light","font weight"),400:(0,ke._x)("Normal","font weight"),500:(0,ke._x)("Medium","font weight"),600:(0,ke._x)("Semi-bold","font weight"),700:(0,ke._x)("Bold","font weight"),800:(0,ke._x)("Extra-bold","font weight"),900:(0,ke._x)("Black","font weight")},ll={normal:(0,ke._x)("Normal","font style"),italic:(0,ke._x)("Italic","font style")};var{File:fl}=window,{kebabCase:Lc}=vt(ul.privateApis);function tr(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function Bc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function Yo(t){let e=il[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":ll[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function Dc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function cl(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=Dc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function er(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof fl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(on(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function fo(t,e="all"){let r=o=>{o.forEach(s=>{s.family===on(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Mr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return Bc(e)||(e=encodeURI(e)),e}function dl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Lc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function ml(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((m,f)=>{let c=`file-${o}-${f}`;a.append(c,m,m.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function pl(t,e,r){let o=[];for(let a of e)try{let n=await al(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function hl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new fl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function hn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function gl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function qo(t,e,r=[]){let o=m=>m.slug===t.slug,s=m=>m.find(o),a=m=>m?r.filter(f=>!o(f)):[...r,t],n=m=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!m)return[...r,{...t,fontFace:[e]}];let c=m.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var yl=u(z(),1),ne=(0,He.createContext)({});ne.displayName="FontLibraryContext";function Vc({children:t}){let e=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:E}=S(rr.store);return{globalStylesId:E()}},[]),a=(0,rr.useEntityRecord)("root","globalStyles",s),[n,l]=(0,He.useState)(!1),{records:m=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(m||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,g]=_t("typography.fontFamilies"),h=async S=>{if(!a.record)return;let E=a.record,et=gl(E??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[v,_]=(0,He.useState)(""),[A,k]=(0,He.useState)(void 0),x=d?.theme?d.theme.map(S=>tr(S,{source:"theme"})).sort((S,E)=>S.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(S=>tr(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[],T=c?c.map(S=>tr(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[];(0,He.useEffect)(()=>{v||k(void 0)},[v]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,He.useState)(new Set),V=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>V(S==="theme"?x:b),$=(S,E,et,ct)=>!E&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((E??"")+(et??"")),bt=(S,E)=>H(E)[S]||[];async function W(S){l(!0);try{let E=[],et=[];for(let at of S){let Ct=!1,Wt=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Wt&&Wt.length>0?Wt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await nl(dl(at),e));let St=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&hn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!hn(zt,J.fontFace)));let At=[],xe=[];if(at?.fontFace?.length??!1){let zt=await pl(J.id,ml(at),e);At=zt?.successes,xe=zt?.errors}(At?.length>0||St?.length>0)&&(J.fontFace=[...At],E.push(J)),J&&!at?.fontFace?.length&&E.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(xe)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(E.length>0){let at=it(E);await h(at)}if(ct.length>0){let at=new Error((0,gn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function y(S){if(!S?.id)throw new Error((0,gn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let E=L(S);return await h(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return g(ct),S.fontFace&&S.fontFace.forEach(at=>{fo(at,"all")}),ct},it=S=>{let E=ot(S),et={...d,custom:cl(d?.custom,E)};return g(et),K(E),et},ot=S=>S.map(({id:E,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(E=>{E.fontFace&&E.fontFace.forEach(et=>{let ct=Mr(et?.src??"");ct&&er(et,ct,"all")})})},gt=(S,E)=>{let et=d?.[S.source??""]??[],ct=qo(S,E,et);g({...d,[S.source??""]:ct});let at=$(S.slug,E?.fontStyle??"",E?.fontWeight??"",S.source??"custom");if(E&&at)fo(E,"all");else{let Ct=Mr(E?.src??"");E&&Ct&&er(E,Ct,"all")}},R=async S=>{if(!S.src)return;let E=Mr(S.src);!E||I.has(E)||(er(S,E,"document"),I.add(E))};return(0,yl.jsx)(ne.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:R,installFonts:W,uninstallFontFamily:y,toggleActivateFont:gt,getAvailableFontsOutline:V,modalTabOpen:v,setModalTabOpen:_,saveFontFamilies:h,isResolvingLibrary:f,isInstalling:n},children:t})}var Zo=Vc;var us=u(ut(),1),Sn=u(X(),1),$l=u(be(),1),Nh=u(fe(),1);var ht=u(X(),1),mo=u(be(),1),yn=u(fe(),1),wr=u(yt(),1),Et=u(ut(),1);var jr=u(ut(),1),Oe=u(X(),1);var vl=u(X(),1),Ve=u(yt(),1);var Xo=u(z(),1);function Nc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function zc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function Mc({font:t,text:e}){let r=(0,Ve.useRef)(null),o=zc(t),s=Br(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,Ve.useState)(!1),[m,f]=(0,Ve.useState)(!1),{loadFontFaceAsset:c}=(0,Ve.useContext)(ne),d=a??Nc(o),g=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),h=ki(o),v={fontSize:"18px",lineHeight:1,opacity:m?"1":"0",...s,...h};return(0,Ve.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,Ve.useEffect)(()=>{(async()=>n&&(!g&&o.src&&await c(o),f(!0)))()},[o,n,c,g]),(0,Xo.jsx)("div",{ref:r,children:g?(0,Xo.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Xo.jsx)(vl.__experimentalText,{style:v,className:"font-library__font-variant_demo-text",children:e})})}var Gr=Mc;var Ne=u(z(),1);function Gc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Oe.useNavigator)();return(0,Ne.jsx)(Oe.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,Ne.jsxs)(Oe.Flex,{justify:"space-between",wrap:!1,children:[(0,Ne.jsx)(Gr,{font:t}),(0,Ne.jsxs)(Oe.Flex,{justify:"flex-end",children:[(0,Ne.jsx)(Oe.FlexItem,{children:(0,Ne.jsx)(Oe.__experimentalText,{className:"font-library__font-card__count",children:r||(0,jr.sprintf)((0,jr._n)("%d variant","%d variants",s),s)})}),(0,Ne.jsx)(Oe.FlexItem,{children:(0,Ne.jsx)(to,{icon:(0,jr.isRTL)()?ur:fr})})]})]})})}var co=Gc;var Ko=u(yt(),1),Jo=u(X(),1);var br=u(z(),1);function jc({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Ko.useContext)(ne),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+Yo(t),l=(0,Ko.useId)();return(0,br.jsx)("div",{className:"font-library__font-card",children:(0,br.jsxs)(Jo.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,br.jsx)(Jo.CheckboxControl,{checked:s,onChange:a,id:l}),(0,br.jsx)("label",{htmlFor:l,children:(0,br.jsx)(Gr,{font:t,text:n,onClick:a})})]})})}var bl=jc;function wl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function Qo(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?wl(e.fontWeight?.toString()??"normal")-wl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function Uc(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,wr.useContext)(ne),[m,f]=_t("typography.fontFamilies"),[c,d]=(0,wr.useState)(!1),[g,h]=(0,wr.useState)(null),[v]=_t("typography.fontFamilies",void 0,"base"),_=(0,yn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:S}=R(mo.store);return S()},[]),k=!!(0,mo.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=m?.theme?m.theme.map(R=>tr(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name)):[],b=new Set(x.map(R=>R.slug)),T=v?.theme?x.concat(v.theme.filter(R=>!b.has(R.slug)).map(R=>tr(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,yn.useSelect)(R=>{let{canUser:S}=R(mo.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),V=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{h(null);try{await n(m),h({type:"success",message:(0,Et.__)("Font family updated successfully.")})}catch(R){h({type:"error",message:(0,Et.sprintf)((0,Et.__)("There was an error updating the font family. %s"),R.message)})}},bt=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:Qo(R.fontFace):[],W=R=>{let S=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Et.sprintf)((0,Et.__)("%1$d/%2$d variants active"),E,S)};(0,wr.useEffect)(()=>{r(e)},[]);let y=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),it=y>0&&y!==L,ot=y===L,K=()=>{if(!e||!e?.source)return;let R=m?.[e.source]?.filter(E=>E.slug!==e.slug)??[],S=ot?R:[...R,e];f({...m,[e.source]:S}),e.fontFace&&e.fontFace.forEach(E=>{if(ot)fo(E,"all");else{let et=Mr(E?.src??"");et&&er(E,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[g&&(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Et.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(co,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(co,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(Hc,{font:e,isOpen:c,setIsOpen:d,setNotice:h,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Et.isRTL)()?fr:ur,size:"small",onClick:()=>{r(void 0),h(null)},label:(0,Et.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),g&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Et.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ot,onChange:K,indeterminate:it}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((R,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(bl,{font:e,face:R},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),V&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Et.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Et.__)("Update")})]})]})]})}function Hc({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Et.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Et.__)("There was an error uninstalling the font family.")+f.message})}},m=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Et.__)("Cancel"),confirmButtonText:(0,Et.__)("Delete"),onCancel:m,onConfirm:l,size:"medium",children:t&&(0,Et.sprintf)((0,Et.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var $o=Uc;var Zt=u(yt(),1),nt=u(X(),1),_l=u(cr(),1),Rt=u(ut(),1);var Pl=u(be(),1);function Sl(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function xl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Cl(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var po=u(ut(),1),ae=u(X(),1),Te=u(z(),1);function Wc(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Te.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Te.jsx)(ae.Card,{children:(0,Te.jsxs)(ae.CardBody,{children:[(0,Te.jsx)(ae.__experimentalHeading,{level:2,children:(0,po.__)("Connect to Google Fonts")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:6}),(0,Te.jsx)(ae.__experimentalText,{as:"p",children:(0,po.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:3}),(0,Te.jsx)(ae.__experimentalText,{as:"p",children:(0,po.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:6}),(0,Te.jsx)(ae.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,po.__)("Allow access to Google Fonts")})]})})})}var Fl=Wc;var kl=u(yt(),1),ts=u(X(),1);var Sr=u(z(),1);function Yc({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+Yo(t),n=(0,kl.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(ts.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(ts.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Sr.jsx)("label",{htmlFor:n,children:(0,Sr.jsx)(Gr,{font:t,text:a,onClick:s})})]})})}var Ol=Yc;var tt=u(z(),1),qc={slug:"all",name:(0,Rt._x)("All","font categories")},Tl="wp-font-library-google-fonts-permission",Zc=500;function Xc({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Tl)==="true",[o,s]=(0,Zt.useState)(null),[a,n]=(0,Zt.useState)(null),[l,m]=(0,Zt.useState)([]),[f,c]=(0,Zt.useState)(1),[d,g]=(0,Zt.useState)({}),[h,v]=(0,Zt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Zt.useContext)(ne),{record:k,isResolving:x}=(0,Pl.useEntityRecord)("root","fontCollection",t);(0,Zt.useEffect)(()=>{let J=()=>{v(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Tl,"false"),window.dispatchEvent(new Event("storage"))};(0,Zt.useEffect)(()=>{s(null)},[t]),(0,Zt.useEffect)(()=>{m([])},[o]);let T=(0,Zt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[qc,...Y],V=(0,Zt.useMemo)(()=>Sl(T,d),[T,d]),H=Math.max(window.innerHeight,Zc),$=Math.floor((H-417)/61),bt=Math.ceil(V.length/$),W=(f-1)*$,y=f*$,L=V.slice(W,y),it=J=>{g({...d,category:J}),c(1)},K=(0,_l.debounce)(J=>{g({...d,search:J}),c(1)},300),gt=(J,St)=>{let At=qo(J,St,l);m(At)},R=xl(l),S=()=>{m([])},E=l.length>0?l[0]?.fontFace?.length??0:0,et=E>0&&E!==o?.fontFace?.length,ct=E===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),m(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async St=>{St.src&&(St.file=await hl(St.src))}))}catch{n({type:"error",message:(0,Rt.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Rt.__)("Fonts were installed successfully.")})}catch(St){n({type:"error",message:St.message})}S()},Wt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:Qo(J.fontFace):[];if(h)return(0,tt.jsx)(Fl,{});let Ot=()=>t!=="google-fonts"||h||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Ls,label:(0,Rt.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Rt.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Rt.__)("Font name\u2026"),label:(0,Rt.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Rt.__)("Category"),value:d.category,onChange:it,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!V.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(co,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Rt.isRTL)()?fr:ur,size:"small",onClick:()=>{s(null),n(null)},label:(0,Rt.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Wt(o).map((J,St)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(Ol,{font:o,face:J,handleToggleVariant:gt,selected:Cl(o.slug,o.fontFace?J:null,R)})},`face${St}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Rt.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Zt.createInterpolateElement)((0,Rt.sprintf)((0,Rt._x)("
Page
%1$s
of %2$d
","paging"),"",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Rt.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,St)=>({label:(St+1).toString(),value:(St+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Rt.__)("Previous page"),icon:(0,Rt.isRTL)()?Eo:Lo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Rt.__)("Next page"),icon:(0,Rt.isRTL)()?Lo:Eo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var es=Xc;var Ur=u(ut(),1),$t=u(X(),1),go=u(yt(),1);var rs=(t=>typeof ue<"u"?ue:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ue<"u"?ue:e)[r]}):t)(function(t){if(typeof ue<"u")return ue.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Al=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof rs=="function"&&rs;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof rs=="function"&&rs,f=0;f0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,g=this.input_.read(this.buf_,d,n);if(g<0)throw new Error("Unexpected end of input");if(g=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&m]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_>>this.bit_pos_&f[d];return this.bit_pos_+=d,g},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,m=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,m=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,g=o("./context"),h=o("./prefix"),v=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,V=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,y=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),it=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<>>B.bit_pos_&V,D=N[O].bits-I,D>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<0;){var Ft=0,Kt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=lt[Ft].bits,Kt=lt[Ft].value&255,Kt>Kt);else{var he=Kt-14,te,Jt,Dt=0;if(Kt===A&&(Dt=dt),st!==Dt&&(rt=0,st=Dt),te=rt,rt>0&&(rt-=2,rt<<=he),rt+=P.readBits(he)+3,Jt=rt-te,D+Jt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var Qt=0;Qt0;++st){var Dt=bt[st],Qt=0,ee;P.fillBitWindow(),Qt+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Jt[Qt].bits,ee=Jt[Qt].value,Kt[Dt]=ee,ee!==0&&(he-=32>>ee,++te)}if(!(te===1||he===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Kt,N,rt,P)}if(D=d(O,B,I,rt,N),D===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return D}function ct(N,O,B){var P,D;return P=S(N,O,B),D=h.kBlockLengthPrefixCode[P].nbits,h.kBlockLengthPrefixCode[P].offset+B.readBits(D)}function at(N,O,B){var P;return N>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=lt-D,++rt}return O.readBits(1)&&Wt(wt,N),B}function St(N,O,B,P,D,dt,rt){var st=B*2,wt=B,lt=S(O,B*H,rt),q;lt===0?q=D[st+(dt[wt]&1)]:lt===1?q=D[st+(dt[wt]-1&1)]+1:q=lt-2,q>=N&&(q-=N),P[B]=q,D[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,D,dt){var rt=D+1,st=B&D,wt=dt.pos_&m.IBUF_MASK,lt;if(O<8||dt.bit_pos_+(O<<3)0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(lt=dt.bit_end_pos_-dt.bit_pos_>>3,wt+lt>m.IBUF_MASK){for(var q=m.IBUF_MASK+1-wt,Ft=0;Ft=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft=rt;){if(lt=rt-st,dt.input_.read(P,st,lt)O.buffer.length){var lr=new Uint8Array(P+Mt);lr.set(O.buffer),O.buffer=lr}if(D=Me.input_end,Co=Me.is_uncompressed,Me.is_metadata){for(xe(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(Co){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,lt,pt),P+=Mt;continue}for(B=0;B<3;++B)ge[B]=K(pt)+1,ge[B]>=2&&(et(ge[B]+2,Qt,B*H,pt),et(b,ee,B*H,pt),Ce[B]=ct(ee,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<0;){var Nt,se,ie,Or,Ss,le,ye,Ge,Zr,Tr,Xr;for(pt.readMoreInput(),Ce[1]===0&&(St(ge[1],Qt,1,Ae,w,M,pt),Ce[1]=ct(ee,H,pt),Yt=Dt[1].htrees[Ae[1]]),--Ce[1],Nt=S(Dt[1].codes,Yt,pt),se=Nt>>6,se>=2?(se-=2,ye=-1):ye=0,ie=h.kInsertRangeLut[se]+(Nt>>3&7),Or=h.kCopyRangeLut[se]+(Nt&7),Ss=h.kInsertLengthPrefixCode[ie].offset+pt.readBits(h.kInsertLengthPrefixCode[ie].nbits),le=h.kCopyLengthPrefixCode[Or].offset+pt.readBits(h.kCopyLengthPrefixCode[Or].nbits),te=q[P-1<],Jt=q[P-2<],Tr=0;Tr4?3:le-2)&255,It=F[ir+Zr],ye=S(Dt[2].codes,Dt[2].htrees[It],pt),ye>=U){var xs,Qn,Kr;ye-=U,Qn=ye&Pt,ye>>=i,xs=(ye>>1)+1,Kr=(2+(ye&1)<st)if(le>=f.minDictionaryWordLength&&le<=f.maxDictionaryWordLength){var Kr=f.offsetsByLength[le],$n=Ge-st-1,ta=f.sizeBitsByLength[le],qu=(1<>ta;if(Kr+=Zu*le,ea=Ft){O.write(q,wt);for(var Fo=0;Fo0&&(Kt[he&3]=Ge,++he),le>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+Ge+" len: "+le+" bytes left: "+Mt);for(Tr=0;Tr>=1;return(d&h-1)+h}function f(d,g,h,v,_){do v-=h,d[g+v]=new n(_.bits,_.value);while(v>0)}function c(d,g,h){for(var v=1<0;--y[x])k=new n(x&255,W[b++]&65535),f(d,g+T,Y,$,k),T=m(T,x);for(V=bt-1,I=-1,x=h+1,Y=2;x<=l;++x,Y<<=1)for(;y[x]>0;--y[x])(T&V)!==I&&(g+=$,H=c(y,x,h),$=1<>h),Y,$,k),T=m(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=h,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],m=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function h(b){var T=g(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function v(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=g(b),I=Y[0],V=Y[1],H=new m(v(b,I,V)),$=0,bt=V>0?I-4:I,W=0;W>16&255,H[$++]=T>>8&255,H[$++]=T&255;return V===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),V===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,V=[],H=T;Hbt?bt:$+H));return I===1?(T=b[Y-1],V.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],V.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),V.join("")}},{}],9:[function(o,s,a){function n(l,m){this.offset=l,this.nbits=m}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(m){this.buffer=m,this.pos=0}n.prototype.read=function(m,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;dthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(m.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,m=1,f=2,c=3,d=4,g=5,h=6,v=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,V=16,H=17,$=18,bt=19,W=20;function y(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var R=0;R'),new y("",l,` +var Xu=Object.create;var ra=Object.defineProperty;var Ku=Object.getOwnPropertyDescriptor;var Ju=Object.getOwnPropertyNames;var Qu=Object.getPrototypeOf,$u=Object.prototype.hasOwnProperty;var ue=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var tf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ju(e))!$u.call(t,s)&&s!==r&&ra(t,s,{get:()=>e[s],enumerable:!(o=Ku(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Xu(Qu(t)):{},tf(e||!t||!t.__esModule?ra(r,"default",{value:t,enumerable:!0}):r,t));var ut=Ht((Jg,oa)=>{oa.exports=window.wp.i18n});var X=Ht((Qg,sa)=>{sa.exports=window.wp.components});var z=Ht(($g,na)=>{na.exports=window.ReactJSXRuntime});var yt=Ht((ey,ia)=>{ia.exports=window.wp.element});var _r=Ht((sy,da)=>{da.exports=window.React});var Pr=Ht((Iy,_a)=>{_a.exports=window.wp.primitives});var Vs=Ht((Xy,Pa)=>{Pa.exports=window.wp.privateApis});var cr=Ht((Ky,Aa)=>{Aa.exports=window.wp.compose});var Na=Ht((dv,Va)=>{Va.exports=window.wp.editor});var be=Ht((mv,za)=>{za.exports=window.wp.coreData});var fe=Ht((pv,Ma)=>{Ma.exports=window.wp.data});var Rr=Ht((hv,Ga)=>{Ga.exports=window.wp.blocks});var ce=Ht((gv,ja)=>{ja.exports=window.wp.blockEditor});var Ha=Ht((xv,Ua)=>{Ua.exports=window.wp.styleEngine});var Xa=Ht((Lv,Za)=>{"use strict";Za.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var $a=Ht((Dv,Qa)=>{"use strict";var Pf=function(e){return Af(e)&&!Rf(e)};function Af(t){return!!t&&typeof t=="object"}function Rf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Lf(t)}var Ef=typeof Symbol=="function"&&Symbol.for,If=Ef?Symbol.for("react.element"):60103;function Lf(t){return t.$$typeof===If}function Bf(t){return Array.isArray(t)?[]:{}}function so(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Ir(Bf(t),t,e):t}function Df(t,e,r){return t.concat(e).map(function(o){return so(o,r)})}function Vf(t,e){if(!e.customMerge)return Ir;var r=e.customMerge(t);return typeof r=="function"?r:Ir}function Nf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function Ka(t){return Object.keys(t).concat(Nf(t))}function Ja(t,e){try{return e in t}catch{return!1}}function zf(t,e){return Ja(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function Mf(t,e,r){var o={};return r.isMergeableObject(t)&&Ka(t).forEach(function(s){o[s]=so(t[s],r)}),Ka(e).forEach(function(s){zf(t,s)||(Ja(t,s)&&r.isMergeableObject(e[s])?o[s]=Vf(s,r)(t[s],e[s],r):o[s]=so(e[s],r))}),o}function Ir(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||Df,r.isMergeableObject=r.isMergeableObject||Pf,r.cloneUnlessOtherwiseSpecified=so;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):Mf(t,e,r):so(e,r)}Ir.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Ir(o,s,r)},{})};var Gf=Ir;Qa.exports=Gf});var dn=Ht((H0,Ki)=>{Ki.exports=window.wp.keycodes});var el=Ht((eb,tl)=>{tl.exports=window.wp.apiFetch});var _u=Ht((FF,Tu)=>{Tu.exports=window.wp.date});function aa(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e(0,ua.jsx)(o,{ref:a,className:ve("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));fa.displayName="NavigableRegion";var ca=fa;var pa=u(_r(),1),ma={};function Fs(t,e){let r=pa.useRef(ma);return r.current===ma&&(r.current=t(e)),r}function ks(t,...e){let r=new URL(`https://base-ui.com/production-error/${t}`);return e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var Oo=u(_r(),1);function Os(t,e,r,o){let s=Fs(ga).current;return rf(s,t,e,r,o)&&ya(s,[t,e,r,o]),s.callback}function ha(t){let e=Fs(ga).current;return of(e,t)&&ya(e,t),e.callback}function ga(){return{callback:null,cleanup:null,refs:[]}}function rf(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function of(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function ya(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s{for(let s=0;s=t}function Ts(t){if(!wa.isValidElement(t))return null;let e=t,r=e.props;return(ba(19)?r?.ref:e.ref)??null}function Jr(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Sa(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function xa(t,e){return typeof t=="function"?t(e):t}function Ca(t,e){return typeof t=="function"?t(e):t}var $r={};function ko(t,e,r,o,s){let a={..._s(t,$r)};return e&&(a=Qr(a,e)),r&&(a=Qr(a,r)),o&&(a=Qr(a,o)),s&&(a=Qr(a,s)),a}function Fa(t){if(t.length===0)return $r;if(t.length===1)return _s(t[0],$r);let e={..._s(t[0],$r)};for(let r=1;r=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function ka(t){return typeof t=="function"}function _s(t,e){return ka(t)?t(e):t??$r}function lf(t,e){return e?t?r=>{if(ff(r)){let s=r;uf(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:e:t}function uf(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Ps(t,e){return e?t?e+" "+t:e:t}function ff(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var cf=Object.freeze([]),Ke=Object.freeze({});var As=u(_r(),1);function Oa(t,e,r={}){let o=e.render,s=df(e,r);if(r.enabled===!1)return null;let a=r.state??Ke;return mf(t,o,s,a)}function df(t,e={}){let{className:r,style:o,render:s}=t,{state:a=Ke,ref:n,props:l,stateAttributesMapping:m,enabled:f=!0}=e,c=f?xa(r,a):void 0,d=f?Ca(o,a):void 0,g=f?Sa(a,m):Ke,h=f?Jr(g,Array.isArray(l)?Fa(l):l)??Ke:Ke;return typeof document<"u"&&(f?Array.isArray(n)?h.ref=ha([h.ref,Ts(s),...n]):h.ref=Os(h.ref,Ts(s),n):Os(null,null)),f?(c!==void 0&&(h.className=Ps(h.className,c)),d!==void 0&&(h.style=Jr(h.style,d)),h):Ke}function mf(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=ko(r,e.props);return s.ref=r.ref,Oo.cloneElement(e,s)}if(t&&typeof t=="string")return pf(t,r);throw new Error(ks(8))}function pf(t,e){return t==="button"?(0,As.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,As.createElement)("img",{alt:"",...e,key:e.key}):Oo.createElement(t,e)}function Ta(t){return Oa(t.defaultTagName??"div",t,t)}var To=u(yt(),1),to=(0,To.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,To.cloneElement)(t,{width:e,height:e,...r,ref:o}));var _o=u(Pr(),1),Rs=u(z(),1),ur=(0,Rs.jsx)(_o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Rs.jsx)(_o.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Po=u(Pr(),1),Es=u(z(),1),fr=(0,Es.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Es.jsx)(Po.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Ao=u(Pr(),1),Is=u(z(),1),Ls=(0,Is.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Ao.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Ro=u(Pr(),1),Bs=u(z(),1),Eo=(0,Bs.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bs.jsx)(Ro.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Io=u(Pr(),1),Ds=u(z(),1),Lo=(0,Ds.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Io.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Ra=u(yt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","71d20935c2"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var hf={stack:"_19ce0419607e1896__stack"},gf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Ar=(0,Ra.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},m){let f={gap:r&&gf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return Ta({render:n,ref:m,props:ko(l,{style:f,className:hf.stack})})});var Ea=u(X(),1),{Fill:Ia,Slot:La}=(0,Ea.createSlotFill)("SidebarToggle");var Ge=u(z(),1);function Ba({headingLevel:t=1,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Ge.jsxs)(Ar,{direction:"column",className:"admin-ui-page__header",children:[(0,Ge.jsxs)(Ar,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Ge.jsxs)(Ar,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Ge.jsx)(La,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Ge.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Ge.jsx)(Ar,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Ge.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var eo=u(z(),1);function Da({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,hasPadding:m=!1,showSidebarToggle:f=!0}){let c=ve("admin-ui-page",n);return(0,eo.jsxs)(ca,{className:c,ariaLabel:o,children:[(o||e||r)&&(0,eo.jsx)(Ba,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:f}),m?(0,eo.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Da.SidebarToggleFill=Ia;var Ns=Da;var xo=u(ut()),Uu=u(X()),Hu=u(Na()),ws=u(be()),Wu=u(fe()),Yu=u(yt());var Mu=u(X(),1),Gu=u(Rr(),1),Mg=u(fe(),1),Gg=u(ce(),1),qn=u(yt(),1),jg=u(cr(),1);function Er(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var we=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var yf=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function zs(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return we(t,a)??we(t,n);let l={};return yf.forEach(m=>{let f=we(t,`settings${o}.${m}`)??we(t,`settings.${m}`);f!==void 0&&(l=Er(l,m.split("."),f))}),l}function Ms(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Er(t,n.split("."),r)}var kf=u(Ha(),1);var vf="1600px",bf="320px",wf=1,Sf=.25,xf=.75,Cf="14px";function Wa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=bf,maximumViewportWidth:s=vf,scaleFactor:a=wf,minimumFontSizeLimit:n}){if(n=Re(n)?n:Cf,r){let b=Re(r);if(!b?.unit||!b?.value)return null;let T=Re(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),Sf),xf),V=ro(b.value*I,3);T?.value&&V0}function Ff(t){let e=t?.typography??{},r=t?.layout,o=Re(r?.wideSize)?r?.wideSize:null;return Gs(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function Ya(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!Gs(e?.typography)&&!Gs(t))return r;let o=Ff(e)?.fluid??{},s=Wa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Of=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>Ya(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function qa(t,e,r=[],o="slug",s){let a=[e?we(t,["blocks",e,...r]):void 0,we(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let m of l){let f=n[m];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||qa(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Tf(t,e,r,[o,s]=[]){let a=Of.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=qa(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,m=n[l];return Bo(t,e,m)}return r}function _f(t,e,r,o=[]){let s=(e?we(t?.settings??{},["blocks",e,"custom",...o]):void 0)??we(t?.settings??{},["custom",...o]);return s?Bo(t,e,s):r}function Bo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=we(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...m]=n;return l==="preset"?Tf(t,e,r,m):l==="custom"?_f(t,e,r,m):r}function js(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=we(t,a);return o?Bo(t,r,n):n}function Us(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Er(t,a.split("."),r)}var Hs=u(Xa(),1);function oo(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Hs.default)(t?.styles,e?.styles)&&(0,Hs.default)(t?.settings,e?.settings)}var ri=u($a(),1);function ti(t){return Object.prototype.toString.call(t)==="[object Object]"}function ei(t){var e,r;return ti(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ti(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function dr(t,e){return(0,ri.default)(t,e,{isMergeableObject:ei,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var jf={grad:.9,turn:360,rad:360/(2*Math.PI)},je=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},qt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},Fe=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},fi=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},oi=function(t){return{r:Fe(t.r,0,255),g:Fe(t.g,0,255),b:Fe(t.b,0,255),a:Fe(t.a)}},Ws=function(t){return{r:qt(t.r),g:qt(t.g),b:qt(t.b),a:qt(t.a,3)}},Uf=/^#([0-9a-f]{3,8})$/i,Do=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},ci=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},di=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),m=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,m,o][f],g:255*[m,o,o,l,n,n][f],b:255*[n,n,m,o,o,l][f],a:s}},si=function(t){return{h:fi(t.h),s:Fe(t.s,0,100),l:Fe(t.l,0,100),a:Fe(t.a)}},ni=function(t){return{h:qt(t.h),s:qt(t.s),l:qt(t.l),a:qt(t.a,3)}},ai=function(t){return di((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},no=function(t){return{h:(e=ci(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},Hf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Wf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Yf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,qf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zs={string:[[function(t){var e=Uf.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?qt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?qt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=Yf.exec(t)||qf.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:oi({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Hf.exec(t)||Wf.exec(t);if(!e)return null;var r,o,s=si({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(jf[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return ai(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return je(e)&&je(r)&&je(o)?oi({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!je(e)||!je(r)||!je(o))return null;var n=si({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return ai(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!je(e)||!je(r)||!je(o))return null;var n=(function(l){return{h:fi(l.h),s:Fe(l.s,0,100),v:Fe(l.v,0,100),a:Fe(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return di(n)},"hsv"]]},ii=function(t,e){for(var r=0;r=.5},t.prototype.toHex=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?Do(qt(255*a)):"","#"+Do(r)+Do(o)+Do(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ws(this.rgba)},t.prototype.toRgbString=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return ni(no(this.rgba))},t.prototype.toHslString=function(){return e=ni(no(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=ci(this.rgba),{h:qt(e.h),s:qt(e.s),v:qt(e.v),a:qt(e.a,3)};var e},t.prototype.invert=function(){return Ee({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Ee(Ys(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Ee(Ys(this.rgba,-e))},t.prototype.grayscale=function(){return Ee(Ys(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Ee(li(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Ee(li(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Ee({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):qt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=no(this.rgba);return typeof e=="number"?Ee({h:e,s:r.s,l:r.l,a:r.a}):qt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Ee(e).toHex()},t})(),Ee=function(t){return t instanceof Xs?t:new Xs(t)},ui=[],mi=function(t){t.forEach(function(e){ui.indexOf(e)<0&&(e(Xs,Zs),ui.push(e))})};var Ks=u(yt(),1);var pi=u(yt(),1),Xt=(0,pi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var hi=u(z(),1);function ao({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Ks.useMemo)(()=>dr(r,e),[r,e]),n=(0,Ks.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,hi.jsx)(Xt.Provider,{value:n,children:t})}var Ue=u(X(),1),Li=u(ut(),1);var lc=u(fe(),1),uc=u(be(),1);var gi=u(z(),1);function Js({className:t,...e}){return(0,gi.jsx)(to,{className:ve(t,"global-styles-ui-icon-with-current-color"),...e})}var Je=u(X(),1);var mr=u(z(),1);function Xf({icon:t,children:e,...r}){return(0,mr.jsxs)(Je.__experimentalItem,{...r,children:[t&&(0,mr.jsxs)(Je.__experimentalHStack,{justify:"flex-start",children:[(0,mr.jsx)(Js,{icon:t,size:24}),(0,mr.jsx)(Je.FlexItem,{children:e})]}),!t&&e]})}function Ie(t){return(0,mr.jsx)(Je.Navigator.Button,{as:Xf,...t})}var Qf=u(X(),1);var $f=u(ut(),1),Ci=u(ce(),1);var Qs=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},$s=function(t){return .2126*Qs(t.r)+.7152*Qs(t.g)+.0722*Qs(t.b)};function yi(t){t.prototype.luminance=function(){return e=$s(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,m,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=$s(a),m=$s(n),r=l>m?(l+.05)/(m+.05):(m+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Pe=u(yt(),1),wi=u(fe(),1),Si=u(be(),1),en=u(ut(),1);function tn(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&tn(t[r],e);return t}var Vo=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=Vo(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function io(t,e){let r=Vo(structuredClone(t),e);return oo(r,t)}function vi(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function bi(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=vi(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=vi(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}mi([yi]);function kt(t,e,r="merged",o=!0){let{user:s,base:a,merged:n,onChange:l}=(0,Pe.useContext)(Xt),m=n;r==="base"?m=a:r==="user"&&(m=s);let f=(0,Pe.useMemo)(()=>js(m,t,e,o),[m,t,e,o]),c=(0,Pe.useCallback)(d=>{let g=Us(s,t,d,e);l(g)},[s,l,t,e]);return[f,c]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Pe.useContext)(Xt),l=a;r==="base"?l=s:r==="user"&&(l=o);let m=(0,Pe.useMemo)(()=>zs(l,t,e),[l,t,e]),f=(0,Pe.useCallback)(c=>{let d=Ms(o,t,c,e);n(d)},[o,n,t,e]);return[m,f]}var Kf=[];function Jf({title:t,settings:e,styles:r}){return t===(0,en.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function No(t=[]){let{variationsFromTheme:e}=(0,wi.useSelect)(o=>({variationsFromTheme:o(Si.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||Kf}),[]),{user:r}=(0,Pe.useContext)(Xt);return(0,Pe.useMemo)(()=>{let o=structuredClone(r),s=tn(o,t);s.title=(0,en.__)("Default");let a=e.filter(l=>io(l,t)).map(l=>dr(s,l)),n=[s,...a];return n?.length?n.filter(Jf):[]},[t,r,e])}var xi=u(Vs(),1),{lock:d1,unlock:vt}=(0,xi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var rn=u(z(),1),{useHasDimensionsPanel:y1,useHasTypographyPanel:v1,useHasColorPanel:b1,useSettingsForBlockElement:w1,useHasBackgroundPanel:S1}=vt(Ci.privateApis);var Le=u(X(),1);function Lr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],m=(n??[]).concat(l??[]).concat(a??[]),f=m.filter(({color:g})=>g===t),c=m.filter(({color:g})=>g===s),d=f.concat(c).concat(m).filter(({color:g})=>g!==e).slice(0,2);return{paletteColors:m,highlightedColors:d}}var Oi=u(yt(),1),Ti=u(X(),1),sn=u(ut(),1);function tc(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function ec(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Fi(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function on(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Br(t){let e={fontFamily:Fi(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=ec(r),s=tc(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function ki(t){return{fontFamily:Fi(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var lo=u(z(),1);function zo({fontSize:t,variation:e}){let{base:r}=(0,Oi.useContext)(Xt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=bi(o),l=a?Br(a):{},m=n?Br(n):{};return s&&(l.color=s,m.color=s),t&&(l.fontSize=t,m.fontSize=t),(0,lo.jsxs)(Ti.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,lo.jsx)("span",{style:m,children:(0,sn._x)("A","Uppercase letter A")}),(0,lo.jsx)("span",{style:l,children:(0,sn._x)("a","Lowercase letter A")})]})}var _i=u(X(),1);var Pi=u(z(),1);function Ai({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Lr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Pi.jsx)(_i.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Ii=u(X(),1),Dr=u(cr(),1),pr=u(yt(),1);var Qe=u(z(),1),Ri=248,Ei=152,rc={leading:!0,trailing:!0};function oc({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Dr.useReducedMotion)(),[l,m]=(0,pr.useState)(!1),[f,{width:c}]=(0,Dr.useResizeObserver)(),[d,g]=(0,pr.useState)(c),[h,v]=(0,pr.useState)(),_=(0,Dr.useThrottle)(g,250,rc);(0,pr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,pr.useLayoutEffect)(()=>{let b=d?d/Ri:1,T=b-(h||0);(Math.abs(T)>.1||!h)&&v(b)},[d,h]);let A=c?c/Ri:1,k=h||A;return(0,Qe.jsxs)(Qe.Fragment,{children:[(0,Qe.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qe.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:Ei*k},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),tabIndex:-1,children:(0,Qe.jsx)(Ii.__unstableMotion.div,{style:{height:Ei*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var Vr=oc;var de=u(z(),1),sc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},nc={hover:{opacity:1},start:{opacity:.5}},ac={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function ic({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[m="black"]=kt("color.text"),[f=m]=kt("elements.h1.color.text"),{paletteColors:c}=Lr();return(0,de.jsxs)(Vr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:g})=>(0,de.jsx)(Le.__unstableMotion.div,{variants:sc,style:{height:"100%",overflow:"hidden"},children:(0,de.jsxs)(Le.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,de.jsx)(zo,{fontSize:65*d,variation:o}),(0,de.jsx)(Le.__experimentalVStack,{spacing:4*d,children:(0,de.jsx)(Ai,{normalizedColorSwatchSize:32,ratio:d})})]})},g),({key:d})=>(0,de.jsx)(Le.__unstableMotion.div,{variants:r?nc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,de.jsx)(Le.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:g},h)=>(0,de.jsx)("div",{style:{height:"100%",background:g,flexGrow:1}},h))})},d),({ratio:d,key:g})=>(0,de.jsx)(Le.__unstableMotion.div,{variants:ac,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,de.jsx)(Le.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,de.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},g)]})}var nn=ic;var Bi=u(z(),1);var ln=u(Rr(),1),Nr=u(ut(),1),gr=u(X(),1),un=u(fe(),1),$e=u(yt(),1),Mo=u(ce(),1),Mi=u(cr(),1);import{speak as mc}from"@wordpress/a11y";var Di=u(Rr(),1),Vi=u(fe(),1),fc=u(X(),1);var cc=u(z(),1);function dc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function an(t){let e=(0,Vi.useSelect)(s=>{let{getBlockStyles:a}=s(Di.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return dc(e,o)}var hr=u(X(),1),Ni=u(ut(),1);var zi=u(z(),1);var Be=u(z(),1),{useHasDimensionsPanel:pc,useHasTypographyPanel:hc,useHasBorderPanel:gc,useSettingsForBlockElement:yc,useHasColorPanel:vc}=vt(Mo.privateApis);function bc(){let t=(0,un.useSelect)(s=>s(ln.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function wc(t){let[e]=_t("",t),r=yc(e,t),o=hc(r),s=vc(r),a=gc(r),n=pc(r),l=a||n,m=!!an(t)?.length;return o||s||l||m}function Sc({block:t}){return wc(t.name)?(0,Be.jsx)(Ie,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,Be.jsxs)(gr.__experimentalHStack,{justify:"flex-start",children:[(0,Be.jsx)(Mo.BlockIcon,{icon:t.icon}),(0,Be.jsx)(gr.FlexItem,{children:t.title})]})}):null}function xc({filterValue:t}){let e=bc(),r=(0,Mi.useDebounce)(mc,500),{isMatchingSearchTerm:o}=(0,un.useSelect)(ln.store),s=t?e.filter(n=>o(n,t)):e,a=(0,$e.useRef)(null);return(0,$e.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Nr.sprintf)((0,Nr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,Be.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,Be.jsx)(gr.__experimentalText,{align:"center",as:"p",children:(0,Nr.__)("No blocks found.")}):s.map(n=>(0,Be.jsx)(Sc,{block:n},"menu-itemblock-"+n.name))})}var o0=(0,$e.memo)(xc);var Tc=u(Rr(),1),Hi=u(ce(),1),Wi=u(yt(),1),_c=u(fe(),1),Pc=u(be(),1),fn=u(X(),1),Yi=u(ut(),1);var Cc=u(ce(),1),Gi=u(Rr(),1),Fc=u(X(),1),kc=u(yt(),1);var Oc=u(z(),1);var ji=u(X(),1),Ui=u(z(),1);function Se({children:t,level:e=2}){return(0,Ui.jsx)(ji.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var cn=u(z(),1);var{useHasDimensionsPanel:v0,useHasTypographyPanel:b0,useHasBorderPanel:w0,useSettingsForBlockElement:S0,useHasColorPanel:x0,useHasFiltersPanel:C0,useHasImageSettingsPanel:F0,useHasBackgroundPanel:k0,BackgroundPanel:O0,BorderPanel:T0,ColorPanel:_0,TypographyPanel:P0,DimensionsPanel:A0,FiltersPanel:R0,ImageSettingsPanel:E0,AdvancedPanel:I0}=vt(Hi.privateApis);var jh=u(ut(),1),Uh=u(X(),1),Hh=u(yt(),1);var Ac=u(X(),1);var Rc=u(z(),1);var Ec=u(ut(),1),Go=u(X(),1);var qi=u(z(),1);var Ho=u(X(),1);var Zi=u(X(),1);var jo=u(z(),1),Ic=({variation:t,isFocused:e,withHoverView:r})=>(0,jo.jsx)(Vr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,jo.jsx)(Zi.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,jo.jsx)(zo,{variation:t,fontSize:85*o})},s)}),Xi=Ic;var Ji=u(X(),1),yr=u(yt(),1),Qi=u(dn(),1),Uo=u(ut(),1);var uo=u(z(),1);function zr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,yr.useState)(!1),{base:l,user:m,onChange:f}=(0,yr.useContext)(Xt),c=(0,yr.useMemo)(()=>{let A=dr(l,t);return o&&(A=Vo(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),g=A=>{A.keyCode===Qi.ENTER&&(A.preventDefault(),d())},h=(0,yr.useMemo)(()=>oo(m,t),[m,t]),v=t?.title;t?.description&&(v=(0,Uo.sprintf)((0,Uo._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,uo.jsx)("div",{className:ve("global-styles-ui-variations_item",{"is-active":h}),role:"button",onClick:d,onKeyDown:g,tabIndex:0,"aria-label":v,"aria-current":h,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,uo.jsx)("div",{className:ve("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,uo.jsx)(Xt.Provider,{value:c,children:s?(0,uo.jsx)(Ji.Tooltip,{text:t?.title,children:_}):_})}var vr=u(z(),1),$i=["typography"];function Wo({title:t,gap:e=2}){let r=No($i);return r?.length<=1?null:(0,vr.jsxs)(Ho.__experimentalVStack,{spacing:3,children:[t&&(0,vr.jsx)(Se,{level:3,children:t}),(0,vr.jsx)(Ho.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,vr.jsx)(zr,{variation:o,properties:$i,showTooltip:!0,children:()=>(0,vr.jsx)(Xi,{variation:o})},s))})]})}var Mh=u(ut(),1),yo=u(X(),1);var Gh=u(yt(),1);var He=u(yt(),1),or=u(fe(),1),rr=u(be(),1),gn=u(ut(),1);var mn=u(el(),1),rl=u(be(),1),ol="/wp/v2/font-families";function sl(t){let{receiveEntityRecords:e}=t.dispatch(rl.store);e("postType","wp_font_family",[],void 0,!0)}async function nl(t,e){let o=await(0,mn.default)({path:ol,method:"POST",body:t});return sl(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function al(t,e,r){let o={path:`${ol}/${t}/font-faces`,method:"POST",body:e},s=await(0,mn.default)(o);return sl(r),{id:s.id,...s.font_face_settings}}var ul=u(X(),1);var ke=u(ut(),1),pn=["otf","ttf","woff","woff2"],il={100:(0,ke._x)("Thin","font weight"),200:(0,ke._x)("Extra-light","font weight"),300:(0,ke._x)("Light","font weight"),400:(0,ke._x)("Normal","font weight"),500:(0,ke._x)("Medium","font weight"),600:(0,ke._x)("Semi-bold","font weight"),700:(0,ke._x)("Bold","font weight"),800:(0,ke._x)("Extra-bold","font weight"),900:(0,ke._x)("Black","font weight")},ll={normal:(0,ke._x)("Normal","font style"),italic:(0,ke._x)("Italic","font style")};var{File:fl}=window,{kebabCase:Lc}=vt(ul.privateApis);function tr(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function Bc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function Yo(t){let e=il[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":ll[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function Dc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function cl(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=Dc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function er(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof fl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(on(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function fo(t,e="all"){let r=o=>{o.forEach(s=>{s.family===on(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Mr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return Bc(e)||(e=encodeURI(e)),e}function dl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Lc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function ml(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((m,f)=>{let c=`file-${o}-${f}`;a.append(c,m,m.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function pl(t,e,r){let o=[];for(let a of e)try{let n=await al(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function hl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new fl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function hn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function gl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function qo(t,e,r=[]){let o=m=>m.slug===t.slug,s=m=>m.find(o),a=m=>m?r.filter(f=>!o(f)):[...r,t],n=m=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!m)return[...r,{...t,fontFace:[e]}];let c=m.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var yl=u(z(),1),ne=(0,He.createContext)({});ne.displayName="FontLibraryContext";function Vc({children:t}){let e=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:E}=S(rr.store);return{globalStylesId:E()}},[]),a=(0,rr.useEntityRecord)("root","globalStyles",s),[n,l]=(0,He.useState)(!1),{records:m=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(m||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,g]=_t("typography.fontFamilies"),h=async S=>{if(!a.record)return;let E=a.record,et=gl(E??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[v,_]=(0,He.useState)(""),[A,k]=(0,He.useState)(void 0),x=d?.theme?d.theme.map(S=>tr(S,{source:"theme"})).sort((S,E)=>S.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(S=>tr(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[],T=c?c.map(S=>tr(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[];(0,He.useEffect)(()=>{v||k(void 0)},[v]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,He.useState)(new Set),V=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>V(S==="theme"?x:b),$=(S,E,et,ct)=>!E&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((E??"")+(et??"")),bt=(S,E)=>H(E)[S]||[];async function W(S){l(!0);try{let E=[],et=[];for(let at of S){let Ct=!1,Wt=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Wt&&Wt.length>0?Wt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await nl(dl(at),e));let St=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&hn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!hn(zt,J.fontFace)));let At=[],xe=[];if(at?.fontFace?.length??!1){let zt=await pl(J.id,ml(at),e);At=zt?.successes,xe=zt?.errors}(At?.length>0||St?.length>0)&&(J.fontFace=[...At],E.push(J)),J&&!at?.fontFace?.length&&E.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(xe)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(E.length>0){let at=it(E);await h(at)}if(ct.length>0){let at=new Error((0,gn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function y(S){if(!S?.id)throw new Error((0,gn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let E=L(S);return await h(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return g(ct),S.fontFace&&S.fontFace.forEach(at=>{fo(at,"all")}),ct},it=S=>{let E=ot(S),et={...d,custom:cl(d?.custom,E)};return g(et),K(E),et},ot=S=>S.map(({id:E,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(E=>{E.fontFace&&E.fontFace.forEach(et=>{let ct=Mr(et?.src??"");ct&&er(et,ct,"all")})})},gt=(S,E)=>{let et=d?.[S.source??""]??[],ct=qo(S,E,et);g({...d,[S.source??""]:ct});let at=$(S.slug,E?.fontStyle??"",E?.fontWeight??"",S.source??"custom");if(E&&at)fo(E,"all");else{let Ct=Mr(E?.src??"");E&&Ct&&er(E,Ct,"all")}},R=async S=>{if(!S.src)return;let E=Mr(S.src);!E||I.has(E)||(er(S,E,"document"),I.add(E))};return(0,yl.jsx)(ne.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:R,installFonts:W,uninstallFontFamily:y,toggleActivateFont:gt,getAvailableFontsOutline:V,modalTabOpen:v,setModalTabOpen:_,saveFontFamilies:h,isResolvingLibrary:f,isInstalling:n},children:t})}var Zo=Vc;var us=u(ut(),1),Sn=u(X(),1),$l=u(be(),1),Nh=u(fe(),1);var ht=u(X(),1),mo=u(be(),1),yn=u(fe(),1),wr=u(yt(),1),Et=u(ut(),1);var jr=u(ut(),1),Oe=u(X(),1);var vl=u(X(),1),De=u(yt(),1);var Xo=u(z(),1);function Nc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function zc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function Mc({font:t,text:e}){let r=(0,De.useRef)(null),o=zc(t),s=Br(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,De.useState)(!1),[m,f]=(0,De.useState)(!1),{loadFontFaceAsset:c}=(0,De.useContext)(ne),d=a??Nc(o),g=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),h=ki(o),v={fontSize:"18px",lineHeight:1,opacity:m?"1":"0",...s,...h};return(0,De.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,De.useEffect)(()=>{(async()=>n&&(!g&&o.src&&await c(o),f(!0)))()},[o,n,c,g]),(0,Xo.jsx)("div",{ref:r,children:g?(0,Xo.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Xo.jsx)(vl.__experimentalText,{style:v,className:"font-library__font-variant_demo-text",children:e})})}var Gr=Mc;var Ve=u(z(),1);function Gc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Oe.useNavigator)();return(0,Ve.jsx)(Oe.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,Ve.jsxs)(Oe.Flex,{justify:"space-between",wrap:!1,children:[(0,Ve.jsx)(Gr,{font:t}),(0,Ve.jsxs)(Oe.Flex,{justify:"flex-end",children:[(0,Ve.jsx)(Oe.FlexItem,{children:(0,Ve.jsx)(Oe.__experimentalText,{className:"font-library__font-card__count",children:r||(0,jr.sprintf)((0,jr._n)("%d variant","%d variants",s),s)})}),(0,Ve.jsx)(Oe.FlexItem,{children:(0,Ve.jsx)(to,{icon:(0,jr.isRTL)()?ur:fr})})]})]})})}var co=Gc;var Ko=u(yt(),1),Jo=u(X(),1);var br=u(z(),1);function jc({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Ko.useContext)(ne),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+Yo(t),l=(0,Ko.useId)();return(0,br.jsx)("div",{className:"font-library__font-card",children:(0,br.jsxs)(Jo.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,br.jsx)(Jo.CheckboxControl,{checked:s,onChange:a,id:l}),(0,br.jsx)("label",{htmlFor:l,children:(0,br.jsx)(Gr,{font:t,text:n,onClick:a})})]})})}var bl=jc;function wl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function Qo(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?wl(e.fontWeight?.toString()??"normal")-wl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function Uc(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,wr.useContext)(ne),[m,f]=_t("typography.fontFamilies"),[c,d]=(0,wr.useState)(!1),[g,h]=(0,wr.useState)(null),[v]=_t("typography.fontFamilies",void 0,"base"),_=(0,yn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:S}=R(mo.store);return S()},[]),k=!!(0,mo.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=m?.theme?m.theme.map(R=>tr(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name)):[],b=new Set(x.map(R=>R.slug)),T=v?.theme?x.concat(v.theme.filter(R=>!b.has(R.slug)).map(R=>tr(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,yn.useSelect)(R=>{let{canUser:S}=R(mo.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),V=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{h(null);try{await n(m),h({type:"success",message:(0,Et.__)("Font family updated successfully.")})}catch(R){h({type:"error",message:(0,Et.sprintf)((0,Et.__)("There was an error updating the font family. %s"),R.message)})}},bt=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:Qo(R.fontFace):[],W=R=>{let S=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Et.sprintf)((0,Et.__)("%1$d/%2$d variants active"),E,S)};(0,wr.useEffect)(()=>{r(e)},[]);let y=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),it=y>0&&y!==L,ot=y===L,K=()=>{if(!e||!e?.source)return;let R=m?.[e.source]?.filter(E=>E.slug!==e.slug)??[],S=ot?R:[...R,e];f({...m,[e.source]:S}),e.fontFace&&e.fontFace.forEach(E=>{if(ot)fo(E,"all");else{let et=Mr(E?.src??"");et&&er(E,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[g&&(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Et.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(co,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(co,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(Hc,{font:e,isOpen:c,setIsOpen:d,setNotice:h,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Et.isRTL)()?fr:ur,size:"small",onClick:()=>{r(void 0),h(null)},label:(0,Et.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),g&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Et.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ot,onChange:K,indeterminate:it}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((R,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(bl,{font:e,face:R},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),V&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Et.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Et.__)("Update")})]})]})]})}function Hc({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Et.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Et.__)("There was an error uninstalling the font family.")+f.message})}},m=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Et.__)("Cancel"),confirmButtonText:(0,Et.__)("Delete"),onCancel:m,onConfirm:l,size:"medium",children:t&&(0,Et.sprintf)((0,Et.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var $o=Uc;var Zt=u(yt(),1),nt=u(X(),1),_l=u(cr(),1),Rt=u(ut(),1);var Pl=u(be(),1);function Sl(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function xl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Cl(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var po=u(ut(),1),ae=u(X(),1),Te=u(z(),1);function Wc(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Te.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Te.jsx)(ae.Card,{children:(0,Te.jsxs)(ae.CardBody,{children:[(0,Te.jsx)(ae.__experimentalHeading,{level:2,children:(0,po.__)("Connect to Google Fonts")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:6}),(0,Te.jsx)(ae.__experimentalText,{as:"p",children:(0,po.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:3}),(0,Te.jsx)(ae.__experimentalText,{as:"p",children:(0,po.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:6}),(0,Te.jsx)(ae.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,po.__)("Allow access to Google Fonts")})]})})})}var Fl=Wc;var kl=u(yt(),1),ts=u(X(),1);var Sr=u(z(),1);function Yc({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+Yo(t),n=(0,kl.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(ts.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(ts.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Sr.jsx)("label",{htmlFor:n,children:(0,Sr.jsx)(Gr,{font:t,text:a,onClick:s})})]})})}var Ol=Yc;var tt=u(z(),1),qc={slug:"all",name:(0,Rt._x)("All","font categories")},Tl="wp-font-library-google-fonts-permission",Zc=500;function Xc({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Tl)==="true",[o,s]=(0,Zt.useState)(null),[a,n]=(0,Zt.useState)(null),[l,m]=(0,Zt.useState)([]),[f,c]=(0,Zt.useState)(1),[d,g]=(0,Zt.useState)({}),[h,v]=(0,Zt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Zt.useContext)(ne),{record:k,isResolving:x}=(0,Pl.useEntityRecord)("root","fontCollection",t);(0,Zt.useEffect)(()=>{let J=()=>{v(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Tl,"false"),window.dispatchEvent(new Event("storage"))};(0,Zt.useEffect)(()=>{s(null)},[t]),(0,Zt.useEffect)(()=>{m([])},[o]);let T=(0,Zt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[qc,...Y],V=(0,Zt.useMemo)(()=>Sl(T,d),[T,d]),H=Math.max(window.innerHeight,Zc),$=Math.floor((H-417)/61),bt=Math.ceil(V.length/$),W=(f-1)*$,y=f*$,L=V.slice(W,y),it=J=>{g({...d,category:J}),c(1)},K=(0,_l.debounce)(J=>{g({...d,search:J}),c(1)},300),gt=(J,St)=>{let At=qo(J,St,l);m(At)},R=xl(l),S=()=>{m([])},E=l.length>0?l[0]?.fontFace?.length??0:0,et=E>0&&E!==o?.fontFace?.length,ct=E===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),m(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async St=>{St.src&&(St.file=await hl(St.src))}))}catch{n({type:"error",message:(0,Rt.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Rt.__)("Fonts were installed successfully.")})}catch(St){n({type:"error",message:St.message})}S()},Wt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:Qo(J.fontFace):[];if(h)return(0,tt.jsx)(Fl,{});let Ot=()=>t!=="google-fonts"||h||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Ls,label:(0,Rt.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Rt.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Rt.__)("Font name\u2026"),label:(0,Rt.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Rt.__)("Category"),value:d.category,onChange:it,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!V.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(co,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Rt.isRTL)()?fr:ur,size:"small",onClick:()=>{s(null),n(null)},label:(0,Rt.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Wt(o).map((J,St)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(Ol,{font:o,face:J,handleToggleVariant:gt,selected:Cl(o.slug,o.fontFace?J:null,R)})},`face${St}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Rt.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Zt.createInterpolateElement)((0,Rt.sprintf)((0,Rt._x)("
Page
%1$s
of %2$d
","paging"),"",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Rt.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,St)=>({label:(St+1).toString(),value:(St+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Rt.__)("Previous page"),icon:(0,Rt.isRTL)()?Eo:Lo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Rt.__)("Next page"),icon:(0,Rt.isRTL)()?Lo:Eo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var es=Xc;var Ur=u(ut(),1),$t=u(X(),1),go=u(yt(),1);var rs=(t=>typeof ue<"u"?ue:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ue<"u"?ue:e)[r]}):t)(function(t){if(typeof ue<"u")return ue.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Al=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof rs=="function"&&rs;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof rs=="function"&&rs,f=0;f0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,g=this.input_.read(this.buf_,d,n);if(g<0)throw new Error("Unexpected end of input");if(g=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&m]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_>>this.bit_pos_&f[d];return this.bit_pos_+=d,g},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,m=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,m=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,g=o("./context"),h=o("./prefix"),v=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,V=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,y=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),it=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<>>B.bit_pos_&V,D=N[O].bits-I,D>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<0;){var Ft=0,Kt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=lt[Ft].bits,Kt=lt[Ft].value&255,Kt>Kt);else{var he=Kt-14,te,Jt,Dt=0;if(Kt===A&&(Dt=dt),st!==Dt&&(rt=0,st=Dt),te=rt,rt>0&&(rt-=2,rt<<=he),rt+=P.readBits(he)+3,Jt=rt-te,D+Jt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var Qt=0;Qt0;++st){var Dt=bt[st],Qt=0,ee;P.fillBitWindow(),Qt+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Jt[Qt].bits,ee=Jt[Qt].value,Kt[Dt]=ee,ee!==0&&(he-=32>>ee,++te)}if(!(te===1||he===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Kt,N,rt,P)}if(D=d(O,B,I,rt,N),D===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return D}function ct(N,O,B){var P,D;return P=S(N,O,B),D=h.kBlockLengthPrefixCode[P].nbits,h.kBlockLengthPrefixCode[P].offset+B.readBits(D)}function at(N,O,B){var P;return N>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=lt-D,++rt}return O.readBits(1)&&Wt(wt,N),B}function St(N,O,B,P,D,dt,rt){var st=B*2,wt=B,lt=S(O,B*H,rt),q;lt===0?q=D[st+(dt[wt]&1)]:lt===1?q=D[st+(dt[wt]-1&1)]+1:q=lt-2,q>=N&&(q-=N),P[B]=q,D[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,D,dt){var rt=D+1,st=B&D,wt=dt.pos_&m.IBUF_MASK,lt;if(O<8||dt.bit_pos_+(O<<3)0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(lt=dt.bit_end_pos_-dt.bit_pos_>>3,wt+lt>m.IBUF_MASK){for(var q=m.IBUF_MASK+1-wt,Ft=0;Ft=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft=rt;){if(lt=rt-st,dt.input_.read(P,st,lt)O.buffer.length){var lr=new Uint8Array(P+Mt);lr.set(O.buffer),O.buffer=lr}if(D=ze.input_end,Co=ze.is_uncompressed,ze.is_metadata){for(xe(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(Co){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,lt,pt),P+=Mt;continue}for(B=0;B<3;++B)ge[B]=K(pt)+1,ge[B]>=2&&(et(ge[B]+2,Qt,B*H,pt),et(b,ee,B*H,pt),Ce[B]=ct(ee,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<0;){var Nt,se,ie,Or,Ss,le,ye,Me,Zr,Tr,Xr;for(pt.readMoreInput(),Ce[1]===0&&(St(ge[1],Qt,1,Ae,w,M,pt),Ce[1]=ct(ee,H,pt),Yt=Dt[1].htrees[Ae[1]]),--Ce[1],Nt=S(Dt[1].codes,Yt,pt),se=Nt>>6,se>=2?(se-=2,ye=-1):ye=0,ie=h.kInsertRangeLut[se]+(Nt>>3&7),Or=h.kCopyRangeLut[se]+(Nt&7),Ss=h.kInsertLengthPrefixCode[ie].offset+pt.readBits(h.kInsertLengthPrefixCode[ie].nbits),le=h.kCopyLengthPrefixCode[Or].offset+pt.readBits(h.kCopyLengthPrefixCode[Or].nbits),te=q[P-1<],Jt=q[P-2<],Tr=0;Tr4?3:le-2)&255,It=F[ir+Zr],ye=S(Dt[2].codes,Dt[2].htrees[It],pt),ye>=U){var xs,Qn,Kr;ye-=U,Qn=ye&Pt,ye>>=i,xs=(ye>>1)+1,Kr=(2+(ye&1)<st)if(le>=f.minDictionaryWordLength&&le<=f.maxDictionaryWordLength){var Kr=f.offsetsByLength[le],$n=Me-st-1,ta=f.sizeBitsByLength[le],qu=(1<>ta;if(Kr+=Zu*le,ea=Ft){O.write(q,wt);for(var Fo=0;Fo0&&(Kt[he&3]=Me,++he),le>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+Me+" len: "+le+" bytes left: "+Mt);for(Tr=0;Tr>=1;return(d&h-1)+h}function f(d,g,h,v,_){do v-=h,d[g+v]=new n(_.bits,_.value);while(v>0)}function c(d,g,h){for(var v=1<0;--y[x])k=new n(x&255,W[b++]&65535),f(d,g+T,Y,$,k),T=m(T,x);for(V=bt-1,I=-1,x=h+1,Y=2;x<=l;++x,Y<<=1)for(;y[x]>0;--y[x])(T&V)!==I&&(g+=$,H=c(y,x,h),$=1<>h),Y,$,k),T=m(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=h,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],m=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function h(b){var T=g(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function v(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=g(b),I=Y[0],V=Y[1],H=new m(v(b,I,V)),$=0,bt=V>0?I-4:I,W=0;W>16&255,H[$++]=T>>8&255,H[$++]=T&255;return V===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),V===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,V=[],H=T;Hbt?bt:$+H));return I===1?(T=b[Y-1],V.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],V.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),V.join("")}},{}],9:[function(o,s,a){function n(l,m){this.offset=l,this.nbits=m}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(m){this.buffer=m,this.pos=0}n.prototype.read=function(m,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;dthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(m.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,m=1,f=2,c=3,d=4,g=5,h=6,v=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,V=16,H=17,$=18,bt=19,W=20;function y(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var R=0;R'),new y("",l,` `),new y("",c,""),new y("",l,"]"),new y("",l," for "),new y("",Y,""),new y("",f,""),new y("",l," a "),new y("",l," that "),new y(" ",k,""),new y("",l,". "),new y(".",l,""),new y(" ",l,", "),new y("",I,""),new y("",l," with "),new y("",l,"'"),new y("",l," from "),new y("",l," by "),new y("",V,""),new y("",H,""),new y(" the ",l,""),new y("",d,""),new y("",l,". The "),new y("",x,""),new y("",l," on "),new y("",l," as "),new y("",l," is "),new y("",v,""),new y("",m,"ing "),new y("",l,` - `),new y("",l,":"),new y(" ",l,". "),new y("",l,"ed "),new y("",W,""),new y("",$,""),new y("",h,""),new y("",l,"("),new y("",k,", "),new y("",_,""),new y("",l," at "),new y("",l,"ly "),new y(" the ",l," of "),new y("",g,""),new y("",A,""),new y(" ",k,", "),new y("",k,'"'),new y(".",l,"("),new y("",x," "),new y("",k,'">'),new y("",l,'="'),new y(" ",l,"."),new y(".com/",l,""),new y(" the ",l," of the "),new y("",k,"'"),new y("",l,". This "),new y("",l,","),new y(".",l," "),new y("",k,"("),new y("",k,"."),new y("",l," not "),new y(" ",l,'="'),new y("",l,"er "),new y(" ",x," "),new y("",l,"al "),new y(" ",x,""),new y("",l,"='"),new y("",x,'"'),new y("",k,". "),new y(" ",l,"("),new y("",l,"ful "),new y(" ",k,". "),new y("",l,"ive "),new y("",l,"less "),new y("",x,"'"),new y("",l,"est "),new y(" ",k,"."),new y("",x,'">'),new y(" ",l,"='"),new y("",k,","),new y("",l,"ize "),new y("",x,"."),new y("\xC2\xA0",l,""),new y(" ",l,","),new y("",k,'="'),new y("",x,'="'),new y("",l,"ous "),new y("",x,", "),new y("",k,"='"),new y(" ",k,","),new y(" ",x,'="'),new y(" ",x,", "),new y("",x,","),new y("",x,"("),new y("",x,". "),new y(" ",x,"."),new y("",x,"='"),new y(" ",x,". "),new y(" ",k,'="'),new y(" ",x,"='"),new y(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function it(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,R,S){var E=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ctR&&(at=R);for(var J=0;J0;){var St=it(ot,Ot);Ot+=St,R-=St}for(var At=0;Attypeof ue<"u"?ue:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ue<"u"?ue:e)[r]}):t)(function(t){if(typeof ue<"u")return ue.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Rl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof os=="function"&&os;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof os=="function"&&os,f=0;f=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(g){var h,v,_,A,k,x=g.length,b=0;for(A=0;A>>6,h[k++]=128|v&63):v<65536?(h[k++]=224|v>>>12,h[k++]=128|v>>>6&63,h[k++]=128|v&63):(h[k++]=240|v>>>18,h[k++]=128|v>>>12&63,h[k++]=128|v>>>6&63,h[k++]=128|v&63);return h};function d(g,h){if(h<65534&&(g.subarray&&m||!g.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(g,h));for(var v="",_=0;_4){b[_++]=65533,v+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&v1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(g,h){var v;for(h=h||g.length,h>g.length&&(h=g.length),v=h-1;v>=0&&(g[v]&192)===128;)v--;return v<0||v===0?h:v+f[g[v]]>h?v:h}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,m,f,c){for(var d=l&65535|0,g=l>>>16&65535|0,h=0;f!==0;){h=f>2e3?2e3:f,f-=h;do d=d+m[c++]|0,g=g+d|0;while(--h);d%=65521,g%=65521}return d|g<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var g=0;g<8;g++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function m(f,c,d,g){var h=l,v=g+d;f^=-1;for(var _=g;_>>8^h[(f^c[_])&255];return f^-1}s.exports=m},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,g,h,v,_,A,k,x,b,T,Y,I,V,H,$,bt,W,y,L,it,ot,K,gt,R,S;d=f.state,g=f.next_in,R=f.input,h=g+(f.avail_in-5),v=f.next_out,S=f.output,_=v-(c-f.avail_out),A=v+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,V=d.bits,H=d.lencode,$=d.distcode,bt=(1<>>24,I>>>=L,V-=L,L=y>>>16&255,L===0)S[v++]=y&65535;else if(L&16){it=y&65535,L&=15,L&&(V>>=L,V-=L),V<15&&(I+=R[g++]<>>24,I>>>=L,V-=L,L=y>>>16&255,L&16){if(ot=y&65535,L&=15,Vk){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,V-=L,L=v-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L2;)S[v++]=gt[K++],S[v++]=gt[K++],S[v++]=gt[K++],it-=3;it&&(S[v++]=gt[K++],it>1&&(S[v++]=gt[K++]))}else{K=v-ot;do S[v++]=S[K++],S[v++]=S[K++],S[v++]=S[K++],it-=3;while(it>2);it&&(S[v++]=S[K++],it>1&&(S[v++]=S[K++]))}}else if((L&64)===0){y=$[(y&65535)+(I&(1<>3,g-=it,V-=it<<3,I&=(1<>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Kt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function he(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function te(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,he(w))}function Jt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,te(w))}function Dt(w,M){var i,U;return w?(U=new Kt,w.state=U,U.window=null,i=Jt(w,M),i!==k&&(w.state=null),i):T}function Qt(w){return Dt(w,q)}var ee=!0,pt,qr;function kr(w){if(ee){var M;for(pt=new n.Buf32(512),qr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(g,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(h,w.lens,0,32,qr,0,w.work,{bits:5}),ee=!1}w.lencode=pt,w.lenbits=9,w.distcode=qr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave>>8&255,i.check=m(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=D;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=D;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=D;break}i.dmax=1<>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=m(i.check,Nt,4,0)),F=0,C=0,i.mode=y;case y:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=it;case it:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(kr(i),i.mode=St,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Wt;break;case 3:w.msg="invalid block type",i.mode=D}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<>>16^65535)){w.msg="invalid stored block lengths",i.mode=D;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Vt&&(Q=Vt),Q===0)break t;n.arraySet(Pt,U,G,Q,re),j-=Q,G+=Q,Vt-=Q,re+=Q,i.length-=Q;break}i.mode=E;break;case Wt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=D;break}i.have=0,i.mode=Ot;case Ot:for(;i.have>>=3,C-=3}for(;i.have<19;)i.lens[Or[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,se={bits:i.lenbits},oe=c(d,i.lens,0,19,i.lencode,0,i.work,se),i.lenbits=se.bits,oe){w.msg="invalid code lengths set",i.mode=D;break}i.have=0,i.mode=J;case J:for(;i.have>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<>>=xt,C-=xt,i.lens[i.have++]=jt;else{if(jt===16){for(ie=xt+2;C>>=xt,C-=xt,i.have===0){w.msg="invalid bit length repeat",i.mode=D;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ie=xt+3;C>>=xt,C-=xt,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ie=xt+7;C>>=xt,C-=xt,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=D;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===D)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=D;break}if(i.lenbits=9,se={bits:i.lenbits},oe=c(g,i.lens,0,i.nlen,i.lencode,0,i.work,se),i.lenbits=se.bits,oe){w.msg="invalid literal/lengths set",i.mode=D;break}if(i.distbits=6,i.distcode=i.distdyn,se={bits:i.distbits},oe=c(h,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,se),i.distbits=se.bits,oe){w.msg="invalid distances set",i.mode=D;break}if(i.mode=St,M===A)break t;case St:i.mode=At;case At:if(j>=6&&Vt>=258){w.next_out=re,w.avail_out=Vt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),re=w.next_out,Pt=w.output,Vt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<>Yt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(Yt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<>>=Yt,C-=Yt,i.back+=Yt}if(F>>>=xt,C-=xt,i.back+=xt,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=E;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=D;break}i.extra=Gt&15,i.mode=xe;case xe:if(i.extra){for(ie=i.extra;C>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<>Yt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(Yt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<>>=Yt,C-=Yt,i.back+=Yt}if(F>>>=xt,C-=xt,i.back+=xt,Gt&64){w.msg="invalid distance code",i.mode=D;break}i.offset=jt,i.extra=Gt&15,i.mode=sr;case sr:if(i.extra){for(ie=i.extra;C>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=D;break}i.mode=Xe;case Xe:if(Vt===0)break t;if(Q=Tt-Vt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=D;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pt,ar=re-i.offset,Q=i.length;Q>Vt&&(Q=Vt),Vt-=Q,i.length-=Q;do Pt[re++]=ir[ar++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Vt===0)break t;Pt[re++]=i.length,Vt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<=1&&At[it]===0;it--);if(ot>it&&(ot=it),it===0)return I[V++]=1<<24|64<<16|0,I[V++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L0&&(x===c||it!==1))return-1;for(xe[1]=0,W=1;Wm||x===g&&S>f)return 1;for(;;){Xe=W-gt,H[y]St?(N=zt[sr+H[y]],O=Ot[J+H[y]]):(N=96,O=0),et=1<>gt)+ct]=Xe<<24|N<<16|O|0;while(ct!==0);for(et=1<>=1;if(et!==0?(E&=et-1,E+=et):E=0,y++,--At[W]===0){if(W===it)break;W=b[T+H[y]]}if(W>ot&&(E&Ct)!==at){for(gt===0&&(gt=ot),Wt+=L,K=W-gt,R=1<m||x===g&&S>f)return 1;at=E&Ct,I[at]=ot<<24|K<<16|Wt-V|0}}return E!==0&&(I[Wt+E]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),m=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),g=o("./zlib/gzheader"),h=Object.prototype.toString;function v(k){if(!(this instanceof v))return new v(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new g,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=m.string2buf(x.dictionary):h.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}v.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,V,H,$,bt,W=!1;if(this.ended)return!1;V=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=m.binstring2buf(k):h.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(V===f.Z_FINISH||V===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=m.utf8border(b.output,b.next_out),$=b.next_out-H,bt=m.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(V=f.Z_FINISH),V===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(V===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},v.prototype.onData=function(k){this.chunks.push(k)},v.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new v(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=v,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var nw=globalThis.fetch,ss=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},Kc=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;rString.fromCharCode(e)).join("")}var $c=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return Qc([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(Jc+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new $c(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var td=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new ed(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},ed=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},El=Rl.inflate||void 0,Il=void 0,rd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new od(o)),sd(this,e,r)}},od=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function sd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(El)l=El(new Uint8Array(n));else if(Il)l=Il(new Uint8Array(n));else{let m="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(m),new Error(m)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Ll=Al,Bl=void 0,nd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new ad(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,m)=>{let f=this.directory[m+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Ll)a=Ll(new Uint8Array(n));else if(Bl)a=new Uint8Array(Bl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}id(this,a,r)}},ad=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=ld(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function id(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function ld(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var jl={},Ul=!1;Promise.all([Promise.resolve().then(function(){return Dd}),Promise.resolve().then(function(){return Nd}),Promise.resolve().then(function(){return Md}),Promise.resolve().then(function(){return Ud}),Promise.resolve().then(function(){return Wd}),Promise.resolve().then(function(){return Kd}),Promise.resolve().then(function(){return Qd}),Promise.resolve().then(function(){return tm}),Promise.resolve().then(function(){return fm}),Promise.resolve().then(function(){return Sm}),Promise.resolve().then(function(){return lp}),Promise.resolve().then(function(){return fp}),Promise.resolve().then(function(){return pp}),Promise.resolve().then(function(){return vp}),Promise.resolve().then(function(){return wp}),Promise.resolve().then(function(){return xp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return Tp}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Rp}),Promise.resolve().then(function(){return Ip}),Promise.resolve().then(function(){return Bp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Gp}),Promise.resolve().then(function(){return jp}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Yp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return Kp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return nh}),Promise.resolve().then(function(){return uh}),Promise.resolve().then(function(){return dh}),Promise.resolve().then(function(){return gh}),Promise.resolve().then(function(){return vh}),Promise.resolve().then(function(){return wh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Bh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];jl[r]=e[r]}),Ul=!0});function ud(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=jl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function fd(){let t=0;function e(r,o){if(!Ul)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(ud)}return new Promise((r,o)=>e(r))}function cd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function dd(t,e,r={}){if(!globalThis.document)return;let o=cd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` + `),new y("",l,":"),new y(" ",l,". "),new y("",l,"ed "),new y("",W,""),new y("",$,""),new y("",h,""),new y("",l,"("),new y("",k,", "),new y("",_,""),new y("",l," at "),new y("",l,"ly "),new y(" the ",l," of "),new y("",g,""),new y("",A,""),new y(" ",k,", "),new y("",k,'"'),new y(".",l,"("),new y("",x," "),new y("",k,'">'),new y("",l,'="'),new y(" ",l,"."),new y(".com/",l,""),new y(" the ",l," of the "),new y("",k,"'"),new y("",l,". This "),new y("",l,","),new y(".",l," "),new y("",k,"("),new y("",k,"."),new y("",l," not "),new y(" ",l,'="'),new y("",l,"er "),new y(" ",x," "),new y("",l,"al "),new y(" ",x,""),new y("",l,"='"),new y("",x,'"'),new y("",k,". "),new y(" ",l,"("),new y("",l,"ful "),new y(" ",k,". "),new y("",l,"ive "),new y("",l,"less "),new y("",x,"'"),new y("",l,"est "),new y(" ",k,"."),new y("",x,'">'),new y(" ",l,"='"),new y("",k,","),new y("",l,"ize "),new y("",x,"."),new y("\xC2\xA0",l,""),new y(" ",l,","),new y("",k,'="'),new y("",x,'="'),new y("",l,"ous "),new y("",x,", "),new y("",k,"='"),new y(" ",k,","),new y(" ",x,'="'),new y(" ",x,", "),new y("",x,","),new y("",x,"("),new y("",x,". "),new y(" ",x,"."),new y("",x,"='"),new y(" ",x,". "),new y(" ",k,'="'),new y(" ",x,"='"),new y(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function it(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,R,S){var E=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ctR&&(at=R);for(var J=0;J0;){var St=it(ot,Ot);Ot+=St,R-=St}for(var At=0;Attypeof ue<"u"?ue:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ue<"u"?ue:e)[r]}):t)(function(t){if(typeof ue<"u")return ue.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Rl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof os=="function"&&os;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof os=="function"&&os,f=0;f=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(g){var h,v,_,A,k,x=g.length,b=0;for(A=0;A>>6,h[k++]=128|v&63):v<65536?(h[k++]=224|v>>>12,h[k++]=128|v>>>6&63,h[k++]=128|v&63):(h[k++]=240|v>>>18,h[k++]=128|v>>>12&63,h[k++]=128|v>>>6&63,h[k++]=128|v&63);return h};function d(g,h){if(h<65534&&(g.subarray&&m||!g.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(g,h));for(var v="",_=0;_4){b[_++]=65533,v+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&v1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(g,h){var v;for(h=h||g.length,h>g.length&&(h=g.length),v=h-1;v>=0&&(g[v]&192)===128;)v--;return v<0||v===0?h:v+f[g[v]]>h?v:h}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,m,f,c){for(var d=l&65535|0,g=l>>>16&65535|0,h=0;f!==0;){h=f>2e3?2e3:f,f-=h;do d=d+m[c++]|0,g=g+d|0;while(--h);d%=65521,g%=65521}return d|g<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var g=0;g<8;g++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function m(f,c,d,g){var h=l,v=g+d;f^=-1;for(var _=g;_>>8^h[(f^c[_])&255];return f^-1}s.exports=m},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,g,h,v,_,A,k,x,b,T,Y,I,V,H,$,bt,W,y,L,it,ot,K,gt,R,S;d=f.state,g=f.next_in,R=f.input,h=g+(f.avail_in-5),v=f.next_out,S=f.output,_=v-(c-f.avail_out),A=v+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,V=d.bits,H=d.lencode,$=d.distcode,bt=(1<>>24,I>>>=L,V-=L,L=y>>>16&255,L===0)S[v++]=y&65535;else if(L&16){it=y&65535,L&=15,L&&(V>>=L,V-=L),V<15&&(I+=R[g++]<>>24,I>>>=L,V-=L,L=y>>>16&255,L&16){if(ot=y&65535,L&=15,Vk){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,V-=L,L=v-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L2;)S[v++]=gt[K++],S[v++]=gt[K++],S[v++]=gt[K++],it-=3;it&&(S[v++]=gt[K++],it>1&&(S[v++]=gt[K++]))}else{K=v-ot;do S[v++]=S[K++],S[v++]=S[K++],S[v++]=S[K++],it-=3;while(it>2);it&&(S[v++]=S[K++],it>1&&(S[v++]=S[K++]))}}else if((L&64)===0){y=$[(y&65535)+(I&(1<>3,g-=it,V-=it<<3,I&=(1<>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Kt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function he(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function te(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,he(w))}function Jt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,te(w))}function Dt(w,M){var i,U;return w?(U=new Kt,w.state=U,U.window=null,i=Jt(w,M),i!==k&&(w.state=null),i):T}function Qt(w){return Dt(w,q)}var ee=!0,pt,qr;function kr(w){if(ee){var M;for(pt=new n.Buf32(512),qr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(g,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(h,w.lens,0,32,qr,0,w.work,{bits:5}),ee=!1}w.lencode=pt,w.lenbits=9,w.distcode=qr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave>>8&255,i.check=m(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=D;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=D;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=D;break}i.dmax=1<>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=m(i.check,Nt,4,0)),F=0,C=0,i.mode=y;case y:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=it;case it:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(kr(i),i.mode=St,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Wt;break;case 3:w.msg="invalid block type",i.mode=D}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<>>16^65535)){w.msg="invalid stored block lengths",i.mode=D;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Vt&&(Q=Vt),Q===0)break t;n.arraySet(Pt,U,G,Q,re),j-=Q,G+=Q,Vt-=Q,re+=Q,i.length-=Q;break}i.mode=E;break;case Wt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=D;break}i.have=0,i.mode=Ot;case Ot:for(;i.have>>=3,C-=3}for(;i.have<19;)i.lens[Or[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,se={bits:i.lenbits},oe=c(d,i.lens,0,19,i.lencode,0,i.work,se),i.lenbits=se.bits,oe){w.msg="invalid code lengths set",i.mode=D;break}i.have=0,i.mode=J;case J:for(;i.have>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<>>=xt,C-=xt,i.lens[i.have++]=jt;else{if(jt===16){for(ie=xt+2;C>>=xt,C-=xt,i.have===0){w.msg="invalid bit length repeat",i.mode=D;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ie=xt+3;C>>=xt,C-=xt,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ie=xt+7;C>>=xt,C-=xt,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=D;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===D)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=D;break}if(i.lenbits=9,se={bits:i.lenbits},oe=c(g,i.lens,0,i.nlen,i.lencode,0,i.work,se),i.lenbits=se.bits,oe){w.msg="invalid literal/lengths set",i.mode=D;break}if(i.distbits=6,i.distcode=i.distdyn,se={bits:i.distbits},oe=c(h,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,se),i.distbits=se.bits,oe){w.msg="invalid distances set",i.mode=D;break}if(i.mode=St,M===A)break t;case St:i.mode=At;case At:if(j>=6&&Vt>=258){w.next_out=re,w.avail_out=Vt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),re=w.next_out,Pt=w.output,Vt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<>Yt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(Yt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<>>=Yt,C-=Yt,i.back+=Yt}if(F>>>=xt,C-=xt,i.back+=xt,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=E;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=D;break}i.extra=Gt&15,i.mode=xe;case xe:if(i.extra){for(ie=i.extra;C>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<>Yt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(Yt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<>>=Yt,C-=Yt,i.back+=Yt}if(F>>>=xt,C-=xt,i.back+=xt,Gt&64){w.msg="invalid distance code",i.mode=D;break}i.offset=jt,i.extra=Gt&15,i.mode=sr;case sr:if(i.extra){for(ie=i.extra;C>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=D;break}i.mode=Xe;case Xe:if(Vt===0)break t;if(Q=Tt-Vt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=D;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pt,ar=re-i.offset,Q=i.length;Q>Vt&&(Q=Vt),Vt-=Q,i.length-=Q;do Pt[re++]=ir[ar++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Vt===0)break t;Pt[re++]=i.length,Vt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<=1&&At[it]===0;it--);if(ot>it&&(ot=it),it===0)return I[V++]=1<<24|64<<16|0,I[V++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L0&&(x===c||it!==1))return-1;for(xe[1]=0,W=1;Wm||x===g&&S>f)return 1;for(;;){Xe=W-gt,H[y]St?(N=zt[sr+H[y]],O=Ot[J+H[y]]):(N=96,O=0),et=1<>gt)+ct]=Xe<<24|N<<16|O|0;while(ct!==0);for(et=1<>=1;if(et!==0?(E&=et-1,E+=et):E=0,y++,--At[W]===0){if(W===it)break;W=b[T+H[y]]}if(W>ot&&(E&Ct)!==at){for(gt===0&&(gt=ot),Wt+=L,K=W-gt,R=1<m||x===g&&S>f)return 1;at=E&Ct,I[at]=ot<<24|K<<16|Wt-V|0}}return E!==0&&(I[Wt+E]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),m=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),g=o("./zlib/gzheader"),h=Object.prototype.toString;function v(k){if(!(this instanceof v))return new v(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new g,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=m.string2buf(x.dictionary):h.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}v.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,V,H,$,bt,W=!1;if(this.ended)return!1;V=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=m.binstring2buf(k):h.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(V===f.Z_FINISH||V===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=m.utf8border(b.output,b.next_out),$=b.next_out-H,bt=m.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(V=f.Z_FINISH),V===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(V===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},v.prototype.onData=function(k){this.chunks.push(k)},v.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new v(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=v,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var nw=globalThis.fetch,ss=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},Kc=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;rString.fromCharCode(e)).join("")}var $c=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return Qc([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(Jc+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new $c(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var td=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new ed(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},ed=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},El=Rl.inflate||void 0,Il=void 0,rd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new od(o)),sd(this,e,r)}},od=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function sd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(El)l=El(new Uint8Array(n));else if(Il)l=Il(new Uint8Array(n));else{let m="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(m),new Error(m)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Ll=Al,Bl=void 0,nd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new ad(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,m)=>{let f=this.directory[m+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Ll)a=Ll(new Uint8Array(n));else if(Bl)a=new Uint8Array(Bl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}id(this,a,r)}},ad=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=ld(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function id(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function ld(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var jl={},Ul=!1;Promise.all([Promise.resolve().then(function(){return Dd}),Promise.resolve().then(function(){return Nd}),Promise.resolve().then(function(){return Md}),Promise.resolve().then(function(){return Ud}),Promise.resolve().then(function(){return Wd}),Promise.resolve().then(function(){return Kd}),Promise.resolve().then(function(){return Qd}),Promise.resolve().then(function(){return tm}),Promise.resolve().then(function(){return fm}),Promise.resolve().then(function(){return Sm}),Promise.resolve().then(function(){return lp}),Promise.resolve().then(function(){return fp}),Promise.resolve().then(function(){return pp}),Promise.resolve().then(function(){return vp}),Promise.resolve().then(function(){return wp}),Promise.resolve().then(function(){return xp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return Tp}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Rp}),Promise.resolve().then(function(){return Ip}),Promise.resolve().then(function(){return Bp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Gp}),Promise.resolve().then(function(){return jp}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Yp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return Kp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return nh}),Promise.resolve().then(function(){return uh}),Promise.resolve().then(function(){return dh}),Promise.resolve().then(function(){return gh}),Promise.resolve().then(function(){return vh}),Promise.resolve().then(function(){return wh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Bh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];jl[r]=e[r]}),Ul=!0});function ud(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=jl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function fd(){let t=0;function e(r,o){if(!Ul)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(ud)}return new Promise((r,o)=>e(r))}function cd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function dd(t,e,r={}){if(!globalThis.document)return;let o=cd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` @font-face { font-family: "${t}"; ${a.join(` `)} src: url("${e}") format("${o}"); -}`,globalThis.document.head.appendChild(s),s}var md=[0,1,0,0],pd=[79,84,84,79],hd=[119,79,70,70],gd=[119,79,70,50];function ns(t,e){if(t.length===e.length){for(let r=0;r(globalThis.document&&!this.options.skipStyleSheet&&await dd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>vd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new ss("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=yd(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new ss("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return fd().then(e=>(t==="SFNT"&&(this.opentype=new td(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new rd(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new nd(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new ss("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new ss("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=is;var We=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},bd=class extends We{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},wd=class extends We{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new Sd(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},Sd=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},xd=class extends We{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,m=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(m,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],m=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let g=n+m,h=l+m;g<=h;g++)d.push(g);else for(let g=0,h=l-n;g<=h;g++)r.currentPosition=c+f+g*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:m,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Cd=class extends We{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),tthis.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Fd=class extends We{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new kd(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},kd=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Od=class extends We{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),tthis.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Td=class extends We{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new _d(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)({start:e.startCharCode,end:e.endCharCode}))}},_d=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Pd=class extends We{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Ad(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Ad=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},Rd=class extends We{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new Ed(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},Ed=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Id(t,e,r){let o=t.uint16;return o===0?new bd(t,e,r):o===2?new wd(t,e,r):o===4?new xd(t,e,r):o===6?new Cd(t,e,r):o===8?new Fd(t,e,r):o===10?new Od(t,e,r):o===12?new Td(t,e,r):o===13?new Pd(t,e,r):o===14?new Rd(t,e,r):{}}var Ld=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Bd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},Bd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Id(t,r,o)))}},Dd=Object.freeze({__proto__:null,cmap:Ld}),Vd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Nd=Object.freeze({__proto__:null,head:Vd}),zd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},Md=Object.freeze({__proto__:null,hhea:zd}),Gd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new jd(o.uint16,o.int16)))),s(o.currentPosition=l,[...new Array(a-s)].map(m=>o.int16)))}}},jd=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},Ud=Object.freeze({__proto__:null,hmtx:Gd}),Hd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Wd=Object.freeze({__proto__:null,maxp:Hd}),Yd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Zd(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new qd(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},qd=class{constructor(t,e){this.length=t,this.offset=e}},Zd=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,Xd(t,this)))}};function Xd(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,m=o/2;lr.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},Qd=Object.freeze({__proto__:null,OS2:Jd}),$d=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;or.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Dl[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Dl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],tm=Object.freeze({__proto__:null,post:$d}),em=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new vn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new vn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new vn({offset:t.offset+this.itemVarStoreOffset},e)))}},vn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new rm({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new om({offset:t.offset+this.baseScriptListOffset},e))}},rm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},om=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new sm(this.start,r))))}},sm=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new nm(e)))}},nm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new am(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new im(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Hl(t)))}},am=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Hl(e)))}},im=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new um(this.parser)}},Hl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new lm(t))))}},lm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},um=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},fm=Object.freeze({__proto__:null,BASE:em}),Vl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new cm(t)))}},cm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},ho=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new dm(t)))}},dm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},mm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},pm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new Vl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new hm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new ym(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new Vl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new wm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new mm(r)}))}},hm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new gm(this.parser)}},gm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},ym=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new ho(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new vm(this.parser)}},vm=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new bm(this.parser)}},bm=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},wm=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new ho(this.parser)}},Sm=Object.freeze({__proto__:null,GDEF:pm}),Nl=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new xm(t))}},xm=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Cm=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Fm(t))}},Fm=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},zl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},Ml=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new km(t))}},km=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Om=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new _m(t);if(e.startsWith("cc"))return new Tm(t);if(e.startsWith("ss"))return new Pm(t)}}},Tm=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},_m=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Pm=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function Wl(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var xr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new ho(t)}},wn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Am=class extends xr{constructor(t){super(t),this.deltaGlyphID=t.int16}},Rm=class extends xr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new Em(e)}},Em=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Im=class extends xr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Lm(e)}},Lm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Bm=class extends xr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new Dm(e)}},Dm=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Vm(e)}},Vm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Nm=class extends xr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Wl(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new wn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new zm(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new Mm(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new ho(e)}},zm=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new Yl(e)}},Yl=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new wn(t))}},Mm=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Gm(e)}},Gm=class extends Yl{constructor(t){super(t)}},jm=class extends xr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Wl(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new ql(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new Um(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new Wm(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new ho(e)}},Um=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Hm(e)}},Hm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new wn(t))}},Wm=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Ym(e)}},Ym=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new ql(t))}},ql=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},qm=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},Zm=class extends xr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Xm={buildSubtable:function(t,e){let r=new[void 0,Am,Rm,Im,Bm,Nm,jm,qm,Zm][t](e);return r.type=t,r}},Ye=class extends Bt{constructor(t){super(t)}},Km=class extends Ye{constructor(t){super(t),console.log("lookup type 1")}},Jm=class extends Ye{constructor(t){super(t),console.log("lookup type 2")}},Qm=class extends Ye{constructor(t){super(t),console.log("lookup type 3")}},$m=class extends Ye{constructor(t){super(t),console.log("lookup type 4")}},tp=class extends Ye{constructor(t){super(t),console.log("lookup type 5")}},ep=class extends Ye{constructor(t){super(t),console.log("lookup type 6")}},rp=class extends Ye{constructor(t){super(t),console.log("lookup type 7")}},op=class extends Ye{constructor(t){super(t),console.log("lookup type 8")}},sp=class extends Ye{constructor(t){super(t),console.log("lookup type 9")}},np={buildSubtable:function(t,e){let r=new[void 0,Km,Jm,Qm,$m,tp,ep,rp,op,sp][t](e);return r.type=t,r}},Gl=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},ap=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?Xm:np;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},Zl=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Nl.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Nl(o))),Z(this,"featureList",()=>a?Ml.EMPTY:(o.currentPosition=s+this.featureListOffset,new Ml(o))),Z(this,"lookupList",()=>a?Gl.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Gl(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Cm(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new zl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new zl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Om(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new ap(this.parser,e)}},ip=class extends Zl{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},lp=Object.freeze({__proto__:null,GSUB:ip}),up=class extends Zl{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},fp=Object.freeze({__proto__:null,GPOS:up}),cp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new dp(r)}},dp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new mp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},mp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},pp=Object.freeze({__proto__:null,SVG:cp}),hp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new gp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;nt.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},gp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},yp=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o[...new Array(o)].map(s=>r.fword))}},wp=Object.freeze({__proto__:null,cvt:bp}),Sp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},xp=Object.freeze({__proto__:null,fpgm:Sp}),Cp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Fp(r)))}},Fp=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},kp=Object.freeze({__proto__:null,gasp:Cp}),Op=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Tp=Object.freeze({__proto__:null,glyf:Op}),_p=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Pp=Object.freeze({__proto__:null,loca:_p}),Ap=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Rp=Object.freeze({__proto__:null,prep:Ap}),Ep=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Ip=Object.freeze({__proto__:null,CFF:Ep}),Lp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Bp=Object.freeze({__proto__:null,CFF2:Lp}),Dp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Vp(r)))}},Vp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Np=Object.freeze({__proto__:null,VORG:Dp}),zp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new as(t),this.vert=new as(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},Mp=class{constructor(t){this.hori=new as(t),this.vert=new as(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},as=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},Xl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new zp(o)))}},Gp=Object.freeze({__proto__:null,EBLC:Xl}),Kl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},jp=Object.freeze({__proto__:null,EBDT:Kl}),Up=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new Mp(r)))}},Hp=Object.freeze({__proto__:null,EBSC:Up}),Wp=class extends Xl{constructor(t,e){super(t,e,"CBLC")}},Yp=Object.freeze({__proto__:null,CBLC:Wp}),qp=class extends Kl{constructor(t,e){super(t,e,"CBDT")}},Zp=Object.freeze({__proto__:null,CBDT:qp}),Xp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},Kp=Object.freeze({__proto__:null,sbix:Xp}),Jp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new bn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new bn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let m=new bn(this.parser),f=m.gID;if(f===t)return m;f>t?s=l:fnew Qp(p))}},bn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},Qp=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},$p=Object.freeze({__proto__:null,COLR:Jp}),th=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new eh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new rh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new oh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new sh(r,o))))}},eh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},rh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},oh=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},sh=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},nh=Object.freeze({__proto__:null,CPAL:th}),ah=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new ih(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new lh(this.parser)}},ih=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},lh=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},uh=Object.freeze({__proto__:null,DSIG:ah}),fh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new ch(o,s))}},ch=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},dh=Object.freeze({__proto__:null,hdmx:fh}),mh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a[...new Array(this.nPairs)].map(e=>new hh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},hh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},gh=Object.freeze({__proto__:null,kern:mh}),yh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},vh=Object.freeze({__proto__:null,LTSH:yh}),bh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},wh=Object.freeze({__proto__:null,MERG:bh}),Sh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new xh(this.tableStart,r))}},xh=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Ch=Object.freeze({__proto__:null,meta:Sh}),Fh=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},kh=Object.freeze({__proto__:null,PCLT:Fh}),Oh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Th(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new _h(r))}},Th=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},_h=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Ph(t))}},Ph=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Ah=Object.freeze({__proto__:null,VDMX:Oh}),Rh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},Eh=Object.freeze({__proto__:null,vhea:Rh}),Ih=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Lh(p.uint16,p.int16)))),o(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Lh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},Bh=Object.freeze({__proto__:null,vmtx:Ih});var Jl=u(X(),1);var{kebabCase:Dh}=vt(Jl.privateApis);function Ql(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:Dh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var pe=u(z(),1);function Vh(){let{installFonts:t}=(0,go.useContext)(ne),[e,r]=(0,go.useState)(!1),[o,s]=(0,go.useState)(null),a=h=>{l(h)},n=h=>{l(h.target.files)},l=async h=>{if(!h)return;s(null),r(!0);let v=new Set,_=[...h],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(v.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return pn.includes(Y)?(v.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)m(x);else{let b=A?(0,Ur.__)("Sorry, you are not allowed to upload this file type."):(0,Ur.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},m=async h=>{let v=await Promise.all(h.map(async _=>{let A=await d(_);return await er(A,A.file,"all"),A}));g(v)};async function f(h){let v=new is("Uploaded Font");try{let _=await c(h);return await v.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(h){return new Promise((v,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(h),A.onload=()=>v(A.result),A.onerror=_})}let d=async h=>{let v=await c(h),_=new is("Uploaded Font");_.fromDataBuffer(v,h.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",V=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=V?`${V.minValue} ${V.maxValue}`:null;return{file:h,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},g=async h=>{let v=Ql(h);try{await t(v),s({type:"success",message:(0,Ur.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,pe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,pe.jsx)($t.DropZone,{onFilesDrop:a}),(0,pe.jsxs)($t.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,pe.jsxs)($t.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,pe.jsx)("ul",{children:o.errors.map((h,v)=>(0,pe.jsx)("li",{children:h},v))})]}),e&&(0,pe.jsx)($t.FlexItem,{children:(0,pe.jsx)("div",{className:"font-library__upload-area",children:(0,pe.jsx)($t.ProgressBar,{})})}),!e&&(0,pe.jsx)($t.FormFileUpload,{accept:pn.map(h=>`.${h}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:h})=>(0,pe.jsx)($t.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:h,children:(0,Ur.__)("Upload font")})}),(0,pe.jsx)($t.__experimentalText,{className:"font-library__upload-area__text",children:(0,Ur.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ls=Vh;var tu=u(z(),1),{Tabs:x2}=vt(Sn.privateApis),C2={id:"installed-fonts",title:(0,us._x)("Library","Font library")},F2={id:"upload-fonts",title:(0,us._x)("Upload","noun")};var eu=u(ut(),1),xn=u(X(),1),zh=u(yt(),1);var ru=u(z(),1);var Cn=u(z(),1);var ou=u(ut(),1),fs=u(X(),1);var su=u(z(),1);var kn=u(z(),1);var _e=u(ut(),1),On=u(X(),1),qh=u(yt(),1);var nu=u(ce(),1);var Wh=u(z(),1),{useSettingsForBlockElement:t6,TypographyPanel:e6}=vt(nu.privateApis);var Yh=u(z(),1);var Tn=u(z(),1),f6={text:{description:(0,_e.__)("Manage the fonts used on the site."),title:(0,_e.__)("Text")},link:{description:(0,_e.__)("Manage the fonts and typography used on the links."),title:(0,_e.__)("Links")},heading:{description:(0,_e.__)("Manage the fonts and typography used on headings."),title:(0,_e.__)("Headings")},caption:{description:(0,_e.__)("Manage the fonts and typography used on captions."),title:(0,_e.__)("Captions")},button:{description:(0,_e.__)("Manage the fonts and typography used on buttons."),title:(0,_e.__)("Buttons")}};var Jh=u(ut(),1),Qh=u(X(),1),iu=u(ce(),1);var Hr=u(X(),1),au=u(ut(),1);var Kh=u(yt(),1);var Zh=u(X(),1),Xh=u(z(),1);var _n=u(z(),1);var Pn=u(z(),1),{useSettingsForBlockElement:O6,ColorPanel:T6}=vt(iu.privateApis);var ng=u(ut(),1),pu=u(X(),1);var eg=u(cr(),1),An=u(X(),1),rg=u(ut(),1);var ds=u(X(),1);var cs=u(X(),1);var lu=u(z(),1);function uu(){let{paletteColors:t}=Lr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,lu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var vo=u(z(),1),$h={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},tg=({label:t,isFocused:e,withHoverView:r})=>(0,vo.jsx)(Vr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,vo.jsx)(cs.__unstableMotion.div,{variants:$h,style:{height:"100%",overflow:"hidden"},children:(0,vo.jsx)(cs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,vo.jsx)(uu,{})})},o)}),fu=tg;var Cr=u(z(),1),cu=["color"];function ms({title:t,gap:e=2}){let r=No(cu);return r?.length<=1?null:(0,Cr.jsxs)(ds.__experimentalVStack,{spacing:3,children:[t&&(0,Cr.jsx)(Se,{level:3,children:t}),(0,Cr.jsx)(ds.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,Cr.jsx)(zr,{variation:o,isPill:!0,properties:cu,showTooltip:!0,children:()=>(0,Cr.jsx)(fu,{})},s))})]})}var du=u(z(),1);var og=u(cr(),1),ps=u(X(),1),sg=u(ut(),1);var mu=u(z(),1);var Rn=u(z(),1),{Tabs:Q6}=vt(pu.privateApis);var ig=u(ut(),1),gu=u(ce(),1),lg=u(X(),1);var hu=u(ce(),1);var ag=u(z(),1);var{BackgroundPanel:rC}=vt(hu.privateApis);var En=u(z(),1),{useHasBackgroundPanel:uC}=vt(gu.privateApis);var Fr=u(X(),1),In=u(ut(),1);var mg=u(yt(),1);var ug=u(X(),1),fg=u(ut(),1),cg=u(z(),1);var Ln=u(z(),1),{Menu:SC}=vt(Fr.privateApis);var Ut=u(X(),1),bo=u(ut(),1);var hs=u(yt(),1);var Bn=u(z(),1),{Menu:DC}=vt(Ut.privateApis),VC=[{label:(0,bo.__)("Rename"),action:"rename"},{label:(0,bo.__)("Delete"),action:"delete"}],NC=[{label:(0,bo.__)("Reset"),action:"reset"}];var pg=u(z(),1);var yg=u(ut(),1),vu=u(ce(),1);var yu=u(ce(),1),hg=u(yt(),1);var gg=u(z(),1),{useSettingsForBlockElement:qC,DimensionsPanel:ZC}=vt(yu.privateApis);var Dn=u(z(),1),{useHasDimensionsPanel:eF,useSettingsForBlockElement:rF}=vt(vu.privateApis);var Fu=u(X(),1),Sg=u(ut(),1);var bg=u(ut(),1),wg=u(X(),1);var bu=u(be(),1),wu=u(fe(),1),ys=u(yt(),1),Su=u(X(),1),xu=u(ut(),1);var gs=u(z(),1);function vg({gap:t=2}){let{user:e}=(0,ys.useContext)(Xt),r=e?.styles,s=(0,wu.useSelect)(n=>{let l=n(bu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!io(n,["color"])&&!io(n,["typography","spacing"])),a=(0,ys.useMemo)(()=>[...[{title:(0,xu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let m=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(g=>{if(r.blocks?.[g]?.css){let h=m[g]||{},v={css:`${m[g]?.css||""} ${r.blocks?.[g]?.css?.trim()||""}`};m[g]={...h,...v}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(m).length>0?{blocks:m}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,gs.jsx)(Su.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,gs.jsx)(zr,{variation:n,children:m=>(0,gs.jsx)(nn,{label:n?.title,withHoverView:!0,isFocused:m,variation:n})},l))})}var Vn=vg;var Cu=u(z(),1);var Nn=u(z(),1);var xg=u(ut(),1),Cg=u(X(),1),ku=u(ce(),1);var zn=u(z(),1),{AdvancedPanel:wF}=vt(ku.privateApis);var Lu=u(ut(),1),Gn=u(X(),1),jn=u(yt(),1);var Fg=u(fe(),1),kg=u(be(),1),Ou=u(yt(),1);var Pu=u(ut(),1),Au=u(X(),1),vs=u(_u(),1),Og=u(be(),1),Tg=u(fe(),1);var Ru=u(dn(),1),Eu=u(z(),1),kF=3600*1e3*24;var Mn=u(X(),1),wo=u(ut(),1);var Iu=u(z(),1);var Un=u(z(),1);var Hn=u(ut(),1),qe=u(X(),1);var Eg=u(yt(),1);var Pg=u(X(),1),Ag=u(ut(),1),Rg=u(z(),1);var Wn=u(z(),1),{Menu:YF}=vt(qe.privateApis);var Nu=u(ut(),1),ze=u(X(),1);var zu=u(yt(),1);var Ig=u(ce(),1),Lg=u(ut(),1);var Bg=u(z(),1);var Dg=u(X(),1),Bu=u(ut(),1),Vg=u(z(),1);var So=u(X(),1),Ng=u(ut(),1),zg=u(yt(),1),Du=u(z(),1);var Ze=u(X(),1),Vu=u(z(),1);var Yn=u(z(),1),{Menu:f3}=vt(ze.privateApis);var Zn=u(z(),1);var Xn=u(z(),1);function Wr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Xn.jsx)(ao,{value:r,baseValue:o,onChange:s,children:(0,Xn.jsx)(t,{...a})})}}var Ug=Wr(Vn);var Hg=Wr(ms);var Wg=Wr(Wo);var Yr=u(z(),1);function Kn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Yr.jsx)(ls,{});break;case"installed-fonts":s=(0,Yr.jsx)($o,{});break;default:s=(0,Yr.jsx)(es,{slug:o})}return(0,Yr.jsx)(ao,{value:t,baseValue:e,onChange:r,children:(0,Yr.jsx)(Zo,{children:s})})}var ju=u(Vs()),{unlock:Jn}=(0,ju.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4bbd4c3e39']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","4bbd4c3e39"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:bs}=Jn(Uu.privateApis),{useGlobalStyles:Yg}=Jn(Hu.privateApis);function qg(){let{records:t=[]}=(0,ws.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,Yu.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=Yg(),l=(0,Wu.useSelect)(f=>f(ws.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let m=[{id:"installed-fonts",title:(0,xo.__)("Library")}];return l&&(m.push({id:"upload-fonts",title:(0,xo.__)("Upload")}),m.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,xo.__)("Install Fonts"):c})))),React.createElement(Ns,{headingLevel:1,title:(0,xo.__)("Fonts")},React.createElement(bs,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(bs.TabList,null,m.map(({id:f,title:c})=>React.createElement(bs.Tab,{key:f,tabId:f},c)))),m.map(({id:f})=>React.createElement(bs.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Kn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function Zg(){return React.createElement(qg,null)}var Xg=Zg;export{Xg as stage}; +}`,globalThis.document.head.appendChild(s),s}var md=[0,1,0,0],pd=[79,84,84,79],hd=[119,79,70,70],gd=[119,79,70,50];function ns(t,e){if(t.length===e.length){for(let r=0;r(globalThis.document&&!this.options.skipStyleSheet&&await dd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>vd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new ss("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=yd(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new ss("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return fd().then(e=>(t==="SFNT"&&(this.opentype=new td(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new rd(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new nd(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new ss("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new ss("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=is;var We=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},bd=class extends We{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},wd=class extends We{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new Sd(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},Sd=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},xd=class extends We{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,m=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(m,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],m=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let g=n+m,h=l+m;g<=h;g++)d.push(g);else for(let g=0,h=l-n;g<=h;g++)r.currentPosition=c+f+g*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:m,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Cd=class extends We{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),tthis.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Fd=class extends We{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new kd(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},kd=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Od=class extends We{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),tthis.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Td=class extends We{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new _d(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)({start:e.startCharCode,end:e.endCharCode}))}},_d=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Pd=class extends We{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Ad(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Ad=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},Rd=class extends We{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new Ed(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},Ed=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Id(t,e,r){let o=t.uint16;return o===0?new bd(t,e,r):o===2?new wd(t,e,r):o===4?new xd(t,e,r):o===6?new Cd(t,e,r):o===8?new Fd(t,e,r):o===10?new Od(t,e,r):o===12?new Td(t,e,r):o===13?new Pd(t,e,r):o===14?new Rd(t,e,r):{}}var Ld=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Bd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},Bd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Id(t,r,o)))}},Dd=Object.freeze({__proto__:null,cmap:Ld}),Vd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Nd=Object.freeze({__proto__:null,head:Vd}),zd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},Md=Object.freeze({__proto__:null,hhea:zd}),Gd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new jd(o.uint16,o.int16)))),s(o.currentPosition=l,[...new Array(a-s)].map(m=>o.int16)))}}},jd=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},Ud=Object.freeze({__proto__:null,hmtx:Gd}),Hd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Wd=Object.freeze({__proto__:null,maxp:Hd}),Yd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Zd(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new qd(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},qd=class{constructor(t,e){this.length=t,this.offset=e}},Zd=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,Xd(t,this)))}};function Xd(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,m=o/2;lr.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},Qd=Object.freeze({__proto__:null,OS2:Jd}),$d=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;or.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Dl[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Dl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],tm=Object.freeze({__proto__:null,post:$d}),em=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new vn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new vn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new vn({offset:t.offset+this.itemVarStoreOffset},e)))}},vn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new rm({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new om({offset:t.offset+this.baseScriptListOffset},e))}},rm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},om=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new sm(this.start,r))))}},sm=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new nm(e)))}},nm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new am(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new im(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Hl(t)))}},am=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Hl(e)))}},im=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new um(this.parser)}},Hl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new lm(t))))}},lm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},um=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},fm=Object.freeze({__proto__:null,BASE:em}),Vl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new cm(t)))}},cm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},ho=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new dm(t)))}},dm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},mm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},pm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new Vl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new hm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new ym(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new Vl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new wm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new mm(r)}))}},hm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new gm(this.parser)}},gm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},ym=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new ho(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new vm(this.parser)}},vm=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new bm(this.parser)}},bm=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},wm=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new ho(this.parser)}},Sm=Object.freeze({__proto__:null,GDEF:pm}),Nl=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new xm(t))}},xm=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Cm=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Fm(t))}},Fm=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},zl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},Ml=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new km(t))}},km=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Om=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new _m(t);if(e.startsWith("cc"))return new Tm(t);if(e.startsWith("ss"))return new Pm(t)}}},Tm=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},_m=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Pm=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function Wl(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var xr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new ho(t)}},wn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Am=class extends xr{constructor(t){super(t),this.deltaGlyphID=t.int16}},Rm=class extends xr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new Em(e)}},Em=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Im=class extends xr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Lm(e)}},Lm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Bm=class extends xr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new Dm(e)}},Dm=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Vm(e)}},Vm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Nm=class extends xr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Wl(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new wn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new zm(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new Mm(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new ho(e)}},zm=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new Yl(e)}},Yl=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new wn(t))}},Mm=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Gm(e)}},Gm=class extends Yl{constructor(t){super(t)}},jm=class extends xr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Wl(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new ql(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new Um(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new Wm(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new ho(e)}},Um=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Hm(e)}},Hm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new wn(t))}},Wm=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Ym(e)}},Ym=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new ql(t))}},ql=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},qm=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},Zm=class extends xr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Xm={buildSubtable:function(t,e){let r=new[void 0,Am,Rm,Im,Bm,Nm,jm,qm,Zm][t](e);return r.type=t,r}},Ye=class extends Bt{constructor(t){super(t)}},Km=class extends Ye{constructor(t){super(t),console.log("lookup type 1")}},Jm=class extends Ye{constructor(t){super(t),console.log("lookup type 2")}},Qm=class extends Ye{constructor(t){super(t),console.log("lookup type 3")}},$m=class extends Ye{constructor(t){super(t),console.log("lookup type 4")}},tp=class extends Ye{constructor(t){super(t),console.log("lookup type 5")}},ep=class extends Ye{constructor(t){super(t),console.log("lookup type 6")}},rp=class extends Ye{constructor(t){super(t),console.log("lookup type 7")}},op=class extends Ye{constructor(t){super(t),console.log("lookup type 8")}},sp=class extends Ye{constructor(t){super(t),console.log("lookup type 9")}},np={buildSubtable:function(t,e){let r=new[void 0,Km,Jm,Qm,$m,tp,ep,rp,op,sp][t](e);return r.type=t,r}},Gl=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},ap=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?Xm:np;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},Zl=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Nl.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Nl(o))),Z(this,"featureList",()=>a?Ml.EMPTY:(o.currentPosition=s+this.featureListOffset,new Ml(o))),Z(this,"lookupList",()=>a?Gl.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Gl(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Cm(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new zl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new zl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Om(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new ap(this.parser,e)}},ip=class extends Zl{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},lp=Object.freeze({__proto__:null,GSUB:ip}),up=class extends Zl{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},fp=Object.freeze({__proto__:null,GPOS:up}),cp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new dp(r)}},dp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new mp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},mp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},pp=Object.freeze({__proto__:null,SVG:cp}),hp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new gp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;nt.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},gp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},yp=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o[...new Array(o)].map(s=>r.fword))}},wp=Object.freeze({__proto__:null,cvt:bp}),Sp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},xp=Object.freeze({__proto__:null,fpgm:Sp}),Cp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Fp(r)))}},Fp=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},kp=Object.freeze({__proto__:null,gasp:Cp}),Op=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Tp=Object.freeze({__proto__:null,glyf:Op}),_p=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Pp=Object.freeze({__proto__:null,loca:_p}),Ap=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Rp=Object.freeze({__proto__:null,prep:Ap}),Ep=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Ip=Object.freeze({__proto__:null,CFF:Ep}),Lp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Bp=Object.freeze({__proto__:null,CFF2:Lp}),Dp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Vp(r)))}},Vp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Np=Object.freeze({__proto__:null,VORG:Dp}),zp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new as(t),this.vert=new as(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},Mp=class{constructor(t){this.hori=new as(t),this.vert=new as(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},as=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},Xl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new zp(o)))}},Gp=Object.freeze({__proto__:null,EBLC:Xl}),Kl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},jp=Object.freeze({__proto__:null,EBDT:Kl}),Up=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new Mp(r)))}},Hp=Object.freeze({__proto__:null,EBSC:Up}),Wp=class extends Xl{constructor(t,e){super(t,e,"CBLC")}},Yp=Object.freeze({__proto__:null,CBLC:Wp}),qp=class extends Kl{constructor(t,e){super(t,e,"CBDT")}},Zp=Object.freeze({__proto__:null,CBDT:qp}),Xp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},Kp=Object.freeze({__proto__:null,sbix:Xp}),Jp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new bn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new bn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let m=new bn(this.parser),f=m.gID;if(f===t)return m;f>t?s=l:fnew Qp(p))}},bn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},Qp=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},$p=Object.freeze({__proto__:null,COLR:Jp}),th=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new eh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new rh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new oh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new sh(r,o))))}},eh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},rh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},oh=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},sh=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},nh=Object.freeze({__proto__:null,CPAL:th}),ah=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new ih(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new lh(this.parser)}},ih=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},lh=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},uh=Object.freeze({__proto__:null,DSIG:ah}),fh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new ch(o,s))}},ch=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},dh=Object.freeze({__proto__:null,hdmx:fh}),mh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a[...new Array(this.nPairs)].map(e=>new hh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},hh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},gh=Object.freeze({__proto__:null,kern:mh}),yh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},vh=Object.freeze({__proto__:null,LTSH:yh}),bh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},wh=Object.freeze({__proto__:null,MERG:bh}),Sh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new xh(this.tableStart,r))}},xh=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Ch=Object.freeze({__proto__:null,meta:Sh}),Fh=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},kh=Object.freeze({__proto__:null,PCLT:Fh}),Oh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Th(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new _h(r))}},Th=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},_h=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Ph(t))}},Ph=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Ah=Object.freeze({__proto__:null,VDMX:Oh}),Rh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},Eh=Object.freeze({__proto__:null,vhea:Rh}),Ih=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Lh(p.uint16,p.int16)))),o(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Lh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},Bh=Object.freeze({__proto__:null,vmtx:Ih});var Jl=u(X(),1);var{kebabCase:Dh}=vt(Jl.privateApis);function Ql(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:Dh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var pe=u(z(),1);function Vh(){let{installFonts:t}=(0,go.useContext)(ne),[e,r]=(0,go.useState)(!1),[o,s]=(0,go.useState)(null),a=h=>{l(h)},n=h=>{l(h.target.files)},l=async h=>{if(!h)return;s(null),r(!0);let v=new Set,_=[...h],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(v.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return pn.includes(Y)?(v.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)m(x);else{let b=A?(0,Ur.__)("Sorry, you are not allowed to upload this file type."):(0,Ur.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},m=async h=>{let v=await Promise.all(h.map(async _=>{let A=await d(_);return await er(A,A.file,"all"),A}));g(v)};async function f(h){let v=new is("Uploaded Font");try{let _=await c(h);return await v.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(h){return new Promise((v,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(h),A.onload=()=>v(A.result),A.onerror=_})}let d=async h=>{let v=await c(h),_=new is("Uploaded Font");_.fromDataBuffer(v,h.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",V=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=V?`${V.minValue} ${V.maxValue}`:null;return{file:h,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},g=async h=>{let v=Ql(h);try{await t(v),s({type:"success",message:(0,Ur.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,pe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,pe.jsx)($t.DropZone,{onFilesDrop:a}),(0,pe.jsxs)($t.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,pe.jsxs)($t.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,pe.jsx)("ul",{children:o.errors.map((h,v)=>(0,pe.jsx)("li",{children:h},v))})]}),e&&(0,pe.jsx)($t.FlexItem,{children:(0,pe.jsx)("div",{className:"font-library__upload-area",children:(0,pe.jsx)($t.ProgressBar,{})})}),!e&&(0,pe.jsx)($t.FormFileUpload,{accept:pn.map(h=>`.${h}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:h})=>(0,pe.jsx)($t.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:h,children:(0,Ur.__)("Upload font")})}),(0,pe.jsx)($t.__experimentalText,{className:"font-library__upload-area__text",children:(0,Ur.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ls=Vh;var tu=u(z(),1),{Tabs:x2}=vt(Sn.privateApis),C2={id:"installed-fonts",title:(0,us._x)("Library","Font library")},F2={id:"upload-fonts",title:(0,us._x)("Upload","noun")};var eu=u(ut(),1),xn=u(X(),1),zh=u(yt(),1);var ru=u(z(),1);var Cn=u(z(),1);var ou=u(ut(),1),fs=u(X(),1);var su=u(z(),1);var kn=u(z(),1);var _e=u(ut(),1),On=u(X(),1),qh=u(yt(),1);var nu=u(ce(),1);var Wh=u(z(),1),{useSettingsForBlockElement:t6,TypographyPanel:e6}=vt(nu.privateApis);var Yh=u(z(),1);var Tn=u(z(),1),f6={text:{description:(0,_e.__)("Manage the fonts used on the site."),title:(0,_e.__)("Text")},link:{description:(0,_e.__)("Manage the fonts and typography used on the links."),title:(0,_e.__)("Links")},heading:{description:(0,_e.__)("Manage the fonts and typography used on headings."),title:(0,_e.__)("Headings")},caption:{description:(0,_e.__)("Manage the fonts and typography used on captions."),title:(0,_e.__)("Captions")},button:{description:(0,_e.__)("Manage the fonts and typography used on buttons."),title:(0,_e.__)("Buttons")}};var Jh=u(ut(),1),Qh=u(X(),1),iu=u(ce(),1);var Hr=u(X(),1),au=u(ut(),1);var Kh=u(yt(),1);var Zh=u(X(),1),Xh=u(z(),1);var _n=u(z(),1);var Pn=u(z(),1),{useSettingsForBlockElement:O6,ColorPanel:T6}=vt(iu.privateApis);var ng=u(ut(),1),pu=u(X(),1);var eg=u(cr(),1),An=u(X(),1),rg=u(ut(),1);var ds=u(X(),1);var cs=u(X(),1);var lu=u(z(),1);function uu(){let{paletteColors:t}=Lr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,lu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var vo=u(z(),1),$h={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},tg=({label:t,isFocused:e,withHoverView:r})=>(0,vo.jsx)(Vr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,vo.jsx)(cs.__unstableMotion.div,{variants:$h,style:{height:"100%",overflow:"hidden"},children:(0,vo.jsx)(cs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,vo.jsx)(uu,{})})},o)}),fu=tg;var Cr=u(z(),1),cu=["color"];function ms({title:t,gap:e=2}){let r=No(cu);return r?.length<=1?null:(0,Cr.jsxs)(ds.__experimentalVStack,{spacing:3,children:[t&&(0,Cr.jsx)(Se,{level:3,children:t}),(0,Cr.jsx)(ds.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,Cr.jsx)(zr,{variation:o,isPill:!0,properties:cu,showTooltip:!0,children:()=>(0,Cr.jsx)(fu,{})},s))})]})}var du=u(z(),1);var og=u(cr(),1),ps=u(X(),1),sg=u(ut(),1);var mu=u(z(),1);var Rn=u(z(),1),{Tabs:Q6}=vt(pu.privateApis);var ig=u(ut(),1),gu=u(ce(),1),lg=u(X(),1);var hu=u(ce(),1);var ag=u(z(),1);var{BackgroundPanel:rC}=vt(hu.privateApis);var En=u(z(),1),{useHasBackgroundPanel:uC}=vt(gu.privateApis);var Fr=u(X(),1),In=u(ut(),1);var mg=u(yt(),1);var ug=u(X(),1),fg=u(ut(),1),cg=u(z(),1);var Ln=u(z(),1),{Menu:SC}=vt(Fr.privateApis);var Ut=u(X(),1),bo=u(ut(),1);var hs=u(yt(),1);var Bn=u(z(),1),{Menu:DC}=vt(Ut.privateApis),VC=[{label:(0,bo.__)("Rename"),action:"rename"},{label:(0,bo.__)("Delete"),action:"delete"}],NC=[{label:(0,bo.__)("Reset"),action:"reset"}];var pg=u(z(),1);var yg=u(ut(),1),vu=u(ce(),1);var yu=u(ce(),1),hg=u(yt(),1);var gg=u(z(),1),{useSettingsForBlockElement:qC,DimensionsPanel:ZC}=vt(yu.privateApis);var Dn=u(z(),1),{useHasDimensionsPanel:eF,useSettingsForBlockElement:rF}=vt(vu.privateApis);var Fu=u(X(),1),Sg=u(ut(),1);var bg=u(ut(),1),wg=u(X(),1);var bu=u(be(),1),wu=u(fe(),1),ys=u(yt(),1),Su=u(X(),1),xu=u(ut(),1);var gs=u(z(),1);function vg({gap:t=2}){let{user:e}=(0,ys.useContext)(Xt),r=e?.styles,s=(0,wu.useSelect)(n=>{let l=n(bu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!io(n,["color"])&&!io(n,["typography","spacing"])),a=(0,ys.useMemo)(()=>[...[{title:(0,xu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let m=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(g=>{if(r.blocks?.[g]?.css){let h=m[g]||{},v={css:`${m[g]?.css||""} ${r.blocks?.[g]?.css?.trim()||""}`};m[g]={...h,...v}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(m).length>0?{blocks:m}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,gs.jsx)(Su.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,gs.jsx)(zr,{variation:n,children:m=>(0,gs.jsx)(nn,{label:n?.title,withHoverView:!0,isFocused:m,variation:n})},l))})}var Vn=vg;var Cu=u(z(),1);var Nn=u(z(),1);var xg=u(ut(),1),Cg=u(X(),1),ku=u(ce(),1);var zn=u(z(),1),{AdvancedPanel:wF}=vt(ku.privateApis);var Lu=u(ut(),1),Gn=u(X(),1),jn=u(yt(),1);var Fg=u(fe(),1),kg=u(be(),1),Ou=u(yt(),1);var Pu=u(ut(),1),Au=u(X(),1),vs=u(_u(),1),Og=u(be(),1),Tg=u(fe(),1);var Ru=u(dn(),1),Eu=u(z(),1),kF=3600*1e3*24;var Mn=u(X(),1),wo=u(ut(),1);var Iu=u(z(),1);var Un=u(z(),1);var Hn=u(ut(),1),qe=u(X(),1);var Eg=u(yt(),1);var Pg=u(X(),1),Ag=u(ut(),1),Rg=u(z(),1);var Wn=u(z(),1),{Menu:YF}=vt(qe.privateApis);var Nu=u(ut(),1),Ne=u(X(),1);var zu=u(yt(),1);var Ig=u(ce(),1),Lg=u(ut(),1);var Bg=u(z(),1);var Dg=u(X(),1),Bu=u(ut(),1),Vg=u(z(),1);var So=u(X(),1),Ng=u(ut(),1),zg=u(yt(),1),Du=u(z(),1);var Ze=u(X(),1),Vu=u(z(),1);var Yn=u(z(),1),{Menu:f3}=vt(Ne.privateApis);var Zn=u(z(),1);var Xn=u(z(),1);function Wr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Xn.jsx)(ao,{value:r,baseValue:o,onChange:s,children:(0,Xn.jsx)(t,{...a})})}}var Ug=Wr(Vn);var Hg=Wr(ms);var Wg=Wr(Wo);var Yr=u(z(),1);function Kn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Yr.jsx)(ls,{});break;case"installed-fonts":s=(0,Yr.jsx)($o,{});break;default:s=(0,Yr.jsx)(es,{slug:o})}return(0,Yr.jsx)(ao,{value:t,baseValue:e,onChange:r,children:(0,Yr.jsx)(Zo,{children:s})})}var ju=u(Vs()),{unlock:Jn}=(0,ju.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4bbd4c3e39']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","4bbd4c3e39"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:bs}=Jn(Uu.privateApis),{useGlobalStyles:Yg}=Jn(Hu.privateApis);function qg(){let{records:t=[]}=(0,ws.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,Yu.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=Yg(),l=(0,Wu.useSelect)(f=>f(ws.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let m=[{id:"installed-fonts",title:(0,xo.__)("Library")}];return l&&(m.push({id:"upload-fonts",title:(0,xo.__)("Upload")}),m.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,xo.__)("Install Fonts"):c})))),React.createElement(Ns,{title:(0,xo.__)("Fonts")},React.createElement(bs,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(bs.TabList,null,m.map(({id:f,title:c})=>React.createElement(bs.Tab,{key:f,tabId:f},c)))),m.map(({id:f})=>React.createElement(bs.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Kn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function Zg(){return React.createElement(qg,null)}var Xg=Zg;export{Xg as stage}; /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: From 8e8b4df5db2f4998edc79a62493fbdd7615a1cb5 Mon Sep 17 00:00:00 2001 From: Kelly Choyce-Dwan Date: Thu, 14 May 2026 14:33:31 +0000 Subject: [PATCH 080/327] Help/About: Update the About page for 7.0. Introducing the new content for the 7.0 About page. Fixes #64536. Props mukesh27, audrasjb, jorbin, ankit-k-gupta, parinpanjari, fcoveram, joen, markoserb, Benjamin_Zekavica, westonruter, peterwilsoncc, JeffPaul. git-svn-id: https://develop.svn.wordpress.org/trunk@62362 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/about.php | 80 +++++++++--------- src/wp-admin/contribute.php | 2 +- src/wp-admin/credits.php | 2 +- src/wp-admin/css/about.css | 57 ++++++++----- src/wp-admin/freedoms.php | 2 +- .../images/about-header-credits-rtl.webp | Bin 0 -> 40906 bytes src/wp-admin/images/about-header-credits.webp | Bin 0 -> 40960 bytes .../images/about-header-default-rtl.webp | Bin 0 -> 18810 bytes src/wp-admin/images/about-header-default.webp | Bin 0 -> 20030 bytes .../images/about-header-freedoms-rtl.webp | Bin 0 -> 43814 bytes .../images/about-header-freedoms.webp | Bin 0 -> 40888 bytes .../images/about-header-get-involved-rtl.webp | Bin 0 -> 15424 bytes .../images/about-header-get-involved.webp | Bin 0 -> 18168 bytes .../images/about-header-privacy-rtl.webp | Bin 0 -> 13612 bytes src/wp-admin/images/about-header-privacy.webp | Bin 0 -> 10926 bytes src/wp-admin/images/about-release-badge.svg | 25 +++--- src/wp-admin/images/about-release-logo.svg | 44 ++-------- src/wp-admin/privacy.php | 2 +- 18 files changed, 96 insertions(+), 118 deletions(-) create mode 100644 src/wp-admin/images/about-header-credits-rtl.webp create mode 100644 src/wp-admin/images/about-header-credits.webp create mode 100644 src/wp-admin/images/about-header-default-rtl.webp create mode 100644 src/wp-admin/images/about-header-default.webp create mode 100644 src/wp-admin/images/about-header-freedoms-rtl.webp create mode 100644 src/wp-admin/images/about-header-freedoms.webp create mode 100644 src/wp-admin/images/about-header-get-involved-rtl.webp create mode 100644 src/wp-admin/images/about-header-get-involved.webp create mode 100644 src/wp-admin/images/about-header-privacy-rtl.webp create mode 100644 src/wp-admin/images/about-header-privacy.webp diff --git a/src/wp-admin/about.php b/src/wp-admin/about.php index 962a68a3b87af..f8c48bb195b3c 100644 --- a/src/wp-admin/about.php +++ b/src/wp-admin/about.php @@ -14,7 +14,7 @@ $title = _x( 'About', 'page title' ); list( $display_version ) = explode( '-', wp_get_wp_version() ); -$display_major_version = '6.9'; +$display_major_version = '7.0'; $release_notes_url = sprintf( /* translators: %s: WordPress version number. */ @@ -61,68 +61,68 @@
-
-

-

+
+

+

-
-

+
+

-
- +
+

-
+
- +
-
+
- +
-
-

+
+

-
- +
+

-
-

+
+

-
- +
+

-
+
- +
-
+
- +
-
-

+
+

-
- +
+

@@ -130,30 +130,30 @@
-
+
-

-

LCP (Largest Contentful Paint) metric is achieved through improved loading of conditional and inlined stylesheets, script loading with fetchpriority support, and additional core optimizations. Editor advances include fixes for layout shifts caused by the Video block and faster loading of the terms selector.' ); ?>

+

+

-
+
-

-

+

+

-
+

@@ -176,10 +176,10 @@


-
- +
+
-
+

-
+
-
+
- <?php echo esc_attr( $header_alt_text ); ?> + <?php echo esc_attr( $header_alt_text ); ?>
diff --git a/src/wp-admin/credits.php b/src/wp-admin/credits.php index c3d544b410df0..3aa8e06b63d0a 100644 --- a/src/wp-admin/credits.php +++ b/src/wp-admin/credits.php @@ -28,7 +28,7 @@
- <?php echo esc_attr( $header_alt_text ); ?> + <?php echo esc_attr( $header_alt_text ); ?>
diff --git a/src/wp-admin/css/about.css b/src/wp-admin/css/about.css index 1d4583d1095bb..721a98078f0d6 100644 --- a/src/wp-admin/css/about.css +++ b/src/wp-admin/css/about.css @@ -21,8 +21,8 @@ .about__container { /* Section backgrounds */ - --background: #ececec; - --subtle-background: #eef0fd; + --background: #ebe8e5; + --subtle-background: #ebe8e5; /* Main text color */ --text: #1e1e1e; @@ -42,7 +42,7 @@ --nav-color: var(--text); --nav-current: var(--accent-1); - --border-radius: 0; + --border-radius: 0.5rem; --gap: 2rem; } @@ -132,6 +132,7 @@ .about__container .has-subtle-background-color { background-color: var(--subtle-background); + border-radius: var(--border-radius); } .about__container .has-background-image { @@ -150,6 +151,14 @@ padding: var(--gap); } +.about__section .column.is-left-padding-zero { + padding-left: 0; +} + +.about__section .column.is-right-padding-zero { + padding-right: 0; +} + .about__section + .about__section .is-section-header { padding-bottom: var(--gap); } @@ -340,6 +349,14 @@ .about__section.has-2-columns.has-gutters .column:last-child { margin-bottom: 0; } + + .about__section .column.is-left-padding-zero { + padding-right: 0; + } + + .about__section .column.is-right-padding-zero { + padding-left: 0; + } } @media screen and (max-width: 480px) { @@ -579,7 +596,7 @@ padding-right: 26rem; /* Space for the background image. */ min-height: clamp(10rem, 25vw, 18.75rem); border-radius: var(--border-radius); - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40721)'%3E%3Cpath fill='url(%23paint0_linear_6958_40721)' d='M0 0h1000v300H0z'/%3E%3Cg clip-path='url(%23clip1_6958_40721)'%3E%3Cpath d='M643.203 90.702c29.374-29.375 76.993-29.375 106.367 0 67.745 73.346-33.051 174.1-106.367 106.367-29.369-29.369-29.369-76.993 0-106.367z' stroke='url(%23paint1_linear_6958_40721)' stroke-width='50' stroke-miterlimit='10'/%3E%3Cpath d='M643.215 90.71L763.002-29.074' stroke='url(%23paint2_linear_6958_40721)' stroke-width='50' stroke-miterlimit='10'/%3E%3Cpath d='M981.603 113.114c-29.375 29.375-76.993 29.375-106.368 0-67.745-73.347 33.051-174.1 106.368-106.368 29.367 29.37 29.367 76.993 0 106.368z' stroke='url(%23paint3_linear_6958_40721)' stroke-width='50' stroke-miterlimit='10'/%3E%3Cpath d='M981.622 113.105L870.501 224.226' stroke='url(%23paint4_linear_6958_40721)' stroke-width='50' stroke-miterlimit='10'/%3E%3Ccircle cx='816.697' cy='221.067' r='24.068' fill='%233858E9'/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_6958_40721' x1='47' y1='46' x2='963.5' y2='318.5' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.65' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_6958_40721' x1='565.98' y1='158.471' x2='700.462' y2='23.995' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint2_linear_6958_40721' x1='722.025' y1='-41.283' x2='545.675' y2='135.067' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.5' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint3_linear_6958_40721' x1='1058.83' y1='45.345' x2='924.344' y2='179.821' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint4_linear_6958_40721' x1='902.813' y1='245.098' x2='1079.16' y2='68.748' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.5' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40721'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3CclipPath id='clip1_6958_40721'%3E%3Cpath fill='%23fff' transform='translate(596 -42)' d='M0 0h433v287.934H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-default.webp?ver=20260514" ); background-repeat: no-repeat; background-position: right center; background-size: cover; @@ -588,42 +605,41 @@ } .credits-php .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40732)'%3E%3Cpath fill='url(%23paint0_linear_6958_40732)' d='M0 0h1000v300H0z'/%3E%3Cpath d='M964.296 78.3c35.067-35.067 91.914-35.067 126.984 0 80.87 87.56-39.46 207.839-126.984 126.98-35.061-35.06-35.061-91.913 0-126.98z' stroke='url(%23paint1_linear_6958_40732)' stroke-width='50' stroke-miterlimit='10'/%3E%3Cpath d='M784.296 78.3c35.067-35.067 91.914-35.067 126.982 0 80.875 87.56-39.456 207.839-126.982 126.98-35.061-35.06-35.061-91.913 0-126.98z' stroke='url(%23paint2_linear_6958_40732)' stroke-width='50' stroke-miterlimit='10'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_6958_40732' x1='378.5' y1='402' x2='926' y2='9.5' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.65' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_6958_40732' x1='872.106' y1='159.202' x2='1032.65' y2='-1.337' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint2_linear_6958_40732' x1='692.106' y1='159.202' x2='852.648' y2='-1.337' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40732'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-credits.webp?ver=20260514" ); } .freedoms-php .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40736)'%3E%3Cpath fill='url(%23paint0_linear_6958_40736)' d='M0 0h1000v300H0z'/%3E%3Cpath d='M847.111 61.731a1 1 0 0 1 1.778 0l29.511 57.436c.096.186.247.337.433.433l57.436 29.511a1 1 0 0 1 0 1.778L878.833 180.4a1.006 1.006 0 0 0-.433.433l-29.511 57.436a1 1 0 0 1-1.778 0L817.6 180.833a1.006 1.006 0 0 0-.433-.433l-57.436-29.511a1 1 0 0 1 0-1.778l57.436-29.511c.186-.096.337-.247.433-.433l29.511-57.436z' stroke='url(%23paint1_linear_6958_40736)' stroke-width='50' stroke-miterlimit='10'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_6958_40736' x1='47' y1='46' x2='1264.5' y2='46' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.65' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_6958_40736' x1='692.106' y1='167.202' x2='852.648' y2='6.663' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40736'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-freedoms.webp?ver=20260514" ); } .privacy-php .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40739)'%3E%3Cpath fill='url(%23paint0_radial_6958_40739)' d='M0 0h1000v300H0z'/%3E%3Cpath d='M758 90l90-30 90 30v11.511c0 59.891-35.271 114.165-90 138.489-54.729-24.324-90-78.598-90-138.489V90z' stroke='url(%23paint1_linear_6958_40739)' stroke-width='50' stroke-miterlimit='10'/%3E%3C/g%3E%3Cdefs%3E%3CradialGradient id='paint0_radial_6958_40739' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='rotate(37.724 183.217 1253.89) scale(615.701 397.883)'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.35' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/radialGradient%3E%3ClinearGradient id='paint1_linear_6958_40739' x1='692.106' y1='167.202' x2='852.648' y2='6.663' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40739'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-privacy.webp?ver=20260514" ); } .contribute-php .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40742)'%3E%3Cpath fill='url(%23paint0_linear_6958_40742)' d='M0 0h1000v300H0z'/%3E%3Cpath d='M924.567 149.134a1 1 0 0 1 0 1.732L771.5 239.135a1 1 0 0 1-1.5-.866V61.731a1 1 0 0 1 1.5-.866l153.067 88.269z' stroke='url(%23paint1_linear_6958_40742)' stroke-width='50' stroke-miterlimit='10'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_6958_40742' x1='606.5' x2='721' y2='355' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.65' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_6958_40742' x1='833.12' y1='-5.894' x2='992.039' y2='131.9' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40742'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-get-involved.webp?ver=20260514" ); } [dir="rtl"] .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40746)'%3E%3Cpath transform='matrix(-1 0 0 1 1000 0)' fill='url(%23paint0_linear_6958_40746)' d='M0 0h1000v300H0z'/%3E%3Cg clip-path='url(%23clip1_6958_40746)'%3E%3Cpath d='M18.203 90.702c29.375-29.375 76.993-29.375 106.367 0 67.745 73.346-33.05 174.1-106.367 106.367-29.369-29.369-29.369-76.993 0-106.367z' stroke='url(%23paint1_linear_6958_40746)' stroke-width='50' stroke-miterlimit='10'/%3E%3Cpath d='M18.215 90.71L138.002-29.074' stroke='url(%23paint2_linear_6958_40746)' stroke-width='50' stroke-miterlimit='10'/%3E%3Cpath d='M356.603 113.114c-29.375 29.375-76.993 29.375-106.368 0-67.745-73.347 33.051-174.1 106.368-106.368 29.368 29.37 29.368 76.993 0 106.368z' stroke='url(%23paint3_linear_6958_40746)' stroke-width='50' stroke-miterlimit='10'/%3E%3Cpath d='M356.622 113.105L245.501 224.226' stroke='url(%23paint4_linear_6958_40746)' stroke-width='50' stroke-miterlimit='10'/%3E%3Ccircle cx='191.698' cy='221.067' r='24.068' fill='%233858E9'/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_6958_40746' x1='47' y1='46' x2='963.5' y2='318.5' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.65' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_6958_40746' x1='218' y1='120.499' x2='51.502' y2='21.995' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint2_linear_6958_40746' x1='78' y1='-29.003' x2='216' y2='68.497' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.5' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint3_linear_6958_40746' x1='175.805' y1='53.58' x2='405.499' y2='103.005' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.608' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint4_linear_6958_40746' x1='414' y1='137.499' x2='180.5' y2='59.499' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.5' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40746'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3CclipPath id='clip1_6958_40746'%3E%3Cpath fill='%23fff' transform='translate(-29 -42)' d='M0 0h433v287.934H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-default-rtl.webp?ver=20260514" ); } [dir="rtl"] .credits-php .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40757)'%3E%3Cpath transform='matrix(-1 0 0 1 1000 0)' fill='url(%23paint0_linear_6958_40757)' d='M0 0h1000v300H0z'/%3E%3Cpath d='M35.705 78.3C.637 43.233-56.21 43.233-91.279 78.3c-80.875 87.56 39.457 207.839 126.983 126.98 35.06-35.06 35.06-91.913 0-126.98z' stroke='url(%23paint1_linear_6958_40757)' stroke-width='50' stroke-miterlimit='10'/%3E%3Cpath d='M215.704 78.3c-35.067-35.067-91.914-35.067-126.982 0-80.875 87.56 39.456 207.839 126.982 126.98 35.061-35.06 35.061-91.913 0-126.98z' stroke='url(%23paint2_linear_6958_40757)' stroke-width='50' stroke-miterlimit='10'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_6958_40757' x1='378.5' y1='402' x2='926' y2='9.5' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.65' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_6958_40757' x1='127.894' y1='159.202' x2='-32.648' y2='-1.337' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint2_linear_6958_40757' x1='307.894' y1='159.202' x2='147.352' y2='-1.337' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40757'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-credits-rtl.webp?ver=20260514" ); } [dir="rtl"] .freedoms-php .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40762)'%3E%3Cpath transform='matrix(-1 0 0 1 1000 0)' fill='url(%23paint0_linear_6958_40762)' d='M0 0h1000v300H0z'/%3E%3Cpath d='M152.889 61.731a1 1 0 0 0-1.778 0L121.6 119.167a1.006 1.006 0 0 1-.433.433l-57.436 29.511a1 1 0 0 0 0 1.778l57.436 29.511c.186.096.337.247.433.433l29.511 57.436a1 1 0 0 0 1.778 0l29.511-57.436c.096-.186.247-.337.433-.433l57.436-29.511a1 1 0 0 0 0-1.778L182.833 119.6a1.006 1.006 0 0 1-.433-.433l-29.511-57.436z' stroke='url(%23paint1_linear_6958_40762)' stroke-width='50' stroke-miterlimit='10'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_6958_40762' x1='47' y1='46' x2='1264.5' y2='46' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.65' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_6958_40762' x1='307.894' y1='167.202' x2='147.352' y2='6.663' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40762'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-freedoms-rtl.webp?ver=20260514" ); } [dir="rtl"] .privacy-php .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40765)'%3E%3Cpath transform='matrix(-1 0 0 1 1000 0)' fill='url(%23paint0_radial_6958_40765)' d='M0 0h1000v300H0z'/%3E%3Cpath d='M242 90l-90-30-90 30v11.511C62 161.402 97.27 215.676 152 240c54.729-24.324 90-78.598 90-138.489V90z' stroke='url(%23paint1_linear_6958_40765)' stroke-width='50' stroke-miterlimit='10'/%3E%3C/g%3E%3Cdefs%3E%3CradialGradient id='paint0_radial_6958_40765' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='rotate(37.724 183.217 1253.89) scale(615.701 397.883)'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.35' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/radialGradient%3E%3ClinearGradient id='paint1_linear_6958_40765' x1='307.894' y1='167.202' x2='147.352' y2='6.663' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.665' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40765'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-privacy-rtl.webp?ver=20260514" ); } [dir="rtl"] .contribute-php .about__header { - background-image: url("data:image/svg+xml,%3Csvg width='1000' height='300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_6958_40768)'%3E%3Cpath transform='matrix(-1 0 0 1 1000 0)' fill='url(%23paint0_linear_6958_40768)' d='M0 0h1000v300H0z'/%3E%3Cpath d='M241.498 149.134a1 1 0 0 1 0 1.732L88.43 239.135a1 1 0 0 1-1.5-.866V61.731a1 1 0 0 1 1.5-.866l153.068 88.269z' stroke='url(%23paint1_linear_6958_40768)' stroke-width='50' stroke-miterlimit='10'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_6958_40768' x1='606.5' x2='721' y2='355' gradientUnits='userSpaceOnUse'%3E%3Cstop/%3E%3Cstop offset='.65' stop-color='%233858E9'/%3E%3Cstop offset='1' stop-color='%23D3CDB6'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_6958_40768' x1='176' y1='45.5' x2='-6.506' y2='213.124' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D3CDB6'/%3E%3Cstop offset='.64' stop-color='%233858E9'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_6958_40768'%3E%3Cpath fill='%23fff' d='M0 0h1000v300H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"); + background-image: url( "../images/about-header-get-involved-rtl.webp?ver=20260514" ); } - .about__header-image { margin: 0 0 calc(var(--gap) * 1.5); } @@ -641,6 +657,7 @@ font-size: clamp(2rem, 20vw - 9rem, 4rem); line-height: 1; font-weight: 600; + color: var(--text); } .about-php .about__header-title h1, @@ -659,6 +676,7 @@ padding: 0; font-size: 1.6rem; line-height: 1.15; + color: var(--text); } .about__header-navigation { @@ -695,6 +713,7 @@ .about__header-navigation .nav-tab:active { background-color: var(--nav-current); color: var(--text-light); + border-radius: var(--border-radius); } .about__header-navigation .nav-tab-active { @@ -709,6 +728,7 @@ background-color: var(--nav-current); color: var(--text-light); border-color: var(--nav-current); + border-radius: var(--border-radius); } @media screen and (max-width: 960px) { @@ -761,14 +781,6 @@ padding-right: var(--gap); } - .about__header, - .credits-php .about__header, - .freedoms-php .about__header, - .privacy-php .about__header, - .contribute-php .about__header { - background: var(--accent-gradient) !important; - } - .about__header-navigation { display: block; } @@ -795,7 +807,6 @@ .about__section .wp-people-group-title { margin-bottom: calc(var(--gap) * 2 - 10px); text-align: center; - } .about__section .wp-people-group { diff --git a/src/wp-admin/freedoms.php b/src/wp-admin/freedoms.php index 711f9b9414fcb..aabfc5d4c77b8 100644 --- a/src/wp-admin/freedoms.php +++ b/src/wp-admin/freedoms.php @@ -31,7 +31,7 @@
- <?php echo esc_attr( $header_alt_text ); ?> + <?php echo esc_attr( $header_alt_text ); ?>
diff --git a/src/wp-admin/images/about-header-credits-rtl.webp b/src/wp-admin/images/about-header-credits-rtl.webp new file mode 100644 index 0000000000000000000000000000000000000000..b65ce15238ea97b50f1b2af09d73fb53bee4396f GIT binary patch literal 40906 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-credits.webp b/src/wp-admin/images/about-header-credits.webp new file mode 100644 index 0000000000000000000000000000000000000000..b83bb5b49e1c4aa60463bf40cdb9b298f7ced2b8 GIT binary patch literal 40960 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-default-rtl.webp b/src/wp-admin/images/about-header-default-rtl.webp new file mode 100644 index 0000000000000000000000000000000000000000..7de0c9a4ffec28534933da9029262ce00b43ddfa GIT binary patch literal 18810 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-default.webp b/src/wp-admin/images/about-header-default.webp new file mode 100644 index 0000000000000000000000000000000000000000..020a92a7265ae8660285362065a9b1699a6d1e3c GIT binary patch literal 20030 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 U8s9)(HugtkRof-Wnsx~60EhTKt^fc4 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-freedoms-rtl.webp b/src/wp-admin/images/about-header-freedoms-rtl.webp new file mode 100644 index 0000000000000000000000000000000000000000..506c20f4cf6200c1a8bb0d3814573d0c59aa6b58 GIT binary patch literal 43814 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

PcclC(;Opy5 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 E0PW!iumAu6 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-freedoms.webp b/src/wp-admin/images/about-header-freedoms.webp new file mode 100644 index 0000000000000000000000000000000000000000..4740e8ab087b0f370fa3fd4dab2f792f5da355e7 GIT binary patch literal 40888 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

G*`K#scH}rk5L{p@m^CA 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-get-involved-rtl.webp b/src/wp-admin/images/about-header-get-involved-rtl.webp new file mode 100644 index 0000000000000000000000000000000000000000..4cd5b89c61c004a837e3b1d9abed5b22588a7eb0 GIT binary patch literal 15424 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-get-involved.webp b/src/wp-admin/images/about-header-get-involved.webp new file mode 100644 index 0000000000000000000000000000000000000000..33a6708b9f2faded335e4de5d1d804c488d571db GIT binary patch literal 18168 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-privacy-rtl.webp b/src/wp-admin/images/about-header-privacy-rtl.webp new file mode 100644 index 0000000000000000000000000000000000000000..0ee585216df5ee340a7d2ef49561ddba6db08036 GIT binary patch literal 13612 zcmeHtbySpXyDuREA|Qw$Fo2}eQX>OM>ktCc9nxJxgMiXCfHWf^9n#X$$WTLf=g{4~ z=i9!2obOxv?DN&T*EwsQ3uf-cJoj_u?|0qTvj!#Uw{IEv(9qQ1h`(2R&#&eY{prjCIo_U^q@6%HC2`hK9zbXo1i-Rtq!oiC^rthFm`rmIlDJ4{GEW0V#po?yZ^$I<9x;8xXaz+zaqeL2$NX zsK>+k#i(J9+Ka`6`8!*zy8)x=WM#TSx!lEiYLB4{b&;2+!+V8W7q0w8BXLu)r&G6i z!+lLl@oOSC`7R$reX@B3^M~pJ6MdRgKgxypz**l;11Qg`LCNwJprLUFV*={VDo{sN zIY`*n4&pUFh)fh5LFUc0A~njZ5oNawF#3-Hh?W!q_;57hK(h+Ll{tV+9R7vOqcVYf zpF*vIGf1gasxE*|bSY>TQ3cYoGJ(8fEeCn$m4c8?RUp#Sa!~wfHApR@3N*I&0Wv~m z3gJz&hGcOB8$-{zVSZaYHc)J>3BY4I*m4CMY|O^IcSrh8uUed8gTFth+Xmq2w$lJ!oyL9 z%TY$X1Yz{LMBcQBJ;NGAm1nZkQz-*2t}U^M06eS3uwuc$Cw~B(i)myWDNx|0>LIICtdOo ziq$cQXn}6z!h@9M_)er7a2k1@*NZ$au0U{AqjKOBj@nXng0fKkXU`7aeAoyqy z2=;136%|!cog9=B)Qa-M==2#Z(^M9v#1^H%4d&P53rV;fCR0Oo&GfRM4%fKg0q=#%na7!*_c7D2Yw+nc$<-VvolDIdKe;F2o*GO%JLj4s7h2Yl@rMG>==aNXd6;PuoY=8 zG=Vfo@6*kN*lo-(q`)#D!_K>SDOWOUjia@D&b#20t2b+=>oe9VutLa@v+cJ&)lHqE zKK8*{6M<@-HMPwd%M@+OfWD&P+7n#ZbUK8R$J#cgZ`35PkMCS39>KS%qg;jH+tN{5 zQ)0K~D1taZ5sMIafrJtWmcY2un%0JnRf<(1WXGwvq3_A2PIO<~x=wyy+{TP~iZ;&# zQiG=h6-G9q%*7LCwBrHI8^GET@3btIo3xscf0Kx+sY@j0+K&wM-@E)2p>9{5Yy@;fTwN(5Z7i6jrdD#D6I*or6&M1l~o|5OEoB-unM#ZtpF{_(k1zUk5FZ2 z1j0Y}0pW+mDC)gHQ4qDZMFYWy+fvA2ROtzJ`+k5@yURdxmNpPCEpt=@X+b8=!ciq| zN9N55Xd|Wi6*>VrIgo>JF>dUwvno(BXC-K<-i9ExuL2~@fg+<*C5ZGd{m8WxMBzCJ zsL+}OoJj)V2LcHI3rH5q`{cfG6vm+MlKh^dFt$8B1(oE;*hM}nM z0K_IkQQt-r2$w~zS@J+Qr>+gOn+OQ+p0$D2Dce9-vZH%jKB6|juz>Jazku+WR1}}a zfbirS8|WoU@i99PI}&v>HtM=7>iRXRnqL%ASZG9Xtq##LiVIubu!b$)pzb*{0m3up zfbaq?AlT6rMlTFUE+A1TF#d!%Fs(%#7^%aITAsm-CJ9hzkg$PvRL~{SH}cRz_TNDf zT-hlIu98+{9{pJc_~m1IS<$_G;+ML8)DpAf_kN01?+J(A;3Hw7^+*-%TFm$jLUOuV}nBwl6v# zQY$bnvo^J*lho%tR+}m?uCNxkK4U6S?bo+c1PR)hIS_CS?Mumqkgd;T3%Ew~&E`R> zw`M*HoaObsE`b<1@9L&psjM{))g}q3XG02|i-pT;bKb#ZO{aAP#*s@Hu*`_R5E-R@ zq;~fX|2}G-c_zh%hE}SBk%G=LfUSWc%=I)xB7^n|u?;@2DCWKLYIjMzZBYjgpwD}? zcm=z|G&mug?IC{T-3wwhOwvIgwmU$rmzVAs6^6*FC*2(uGGVy-wD9J6DdDQmjL5Q& z@0s&);VpOs^XgUB+4r-P5@iw4-bK@K)A%);_sZ?Cr|1cqGwX%^wtC52ynDaxwKs?J zm;#iVsRw)sPnMiw2peeHY&vR?63Mz7KF!{nKY^Eu9PF*n@7?JNx_kFt5#4qK-wW|D zFN|>3rlKq68?|-{tr=G>8)8}3Rf9|Y|BwGCbMnh(6rhTr(|ZnfpAp zGaQ`ThVC&p;R@V7Wg$p~Q!b&d+m7c+A`|UL&##`Q8s8Z`?oIngw&YScgwE-dP*PhY zr5}Z`|0?k27ex0U`{=(mpx)DQHDPhm*s?IotR{LvQ*mpRLK%ktR(=`V&na6IbH%&= zqS(onjgMR~oEm>9&X_RzN(5OuSW`M;y!+Dam5geXFnIeedF|~|n_^7Ozocfz_;yQb z_(60z#%8sAaXC2srFzd%dRw2$b8F=ks;hwYp5T+@n9L^o266}L3MD7kU9wCL`Y}s+ z=uPXfNxKI^dT_o*FT5sFGhaaP3~w-jXp8ST*n81~d+D`l*81KI=UW}{_mRI*Wq}WT z=csVb&>(;X9s90^1}*v@mCGinv}> z_u$i87gIlndoR(3`*wB)UA0c*tNO8@ga3Sy8uk;zco*CfJeeHs|JD1I=)8jke$B{D z-#fCu7smfs8lGSEcy;Tf_ktDrM2JKAa;_%0XL++4{`V~T$JGBd;l9p)pikM?eR^`# z!);{A;2D{A!@!f#HMy{|{-?`^-S>5zd%FE?d)yr(9QuU?xSzphEw`R??e8?~z5KuC z{Tx}p!T+;_!1*8^r2A+p7NCB7C$rZ>~i5YbCitvcjV&U-vyi2KIM1 z-2XO;zvKX(GyH_hP`jf!)LtMKo3unx(yEELwLdv@{t37vdl)cdGTjNfDd@K z@pFVEi=@J>E#nG(?6tNG#j!hY(vEc2XEZFiU7re3X0vqC(4YDsAejyy^15aW_HAPe zpLs=2-tqNC{0hu`?%>x_r}X{Pp@`Y_xWFq?itv;U!uuOC<^PzPphc3`>EBd8Drq<~ z39*T)mdWeEzQhKT`1%e0*)n8IB9IHrAmPaqQP>lIBINn)NprNc)1)c%z3R$OW686i z7U1Ay-p{Jfn|5^~5`VJT^ZM*&eG@fL(BWr%!%;dsm7}~fXgsKrR2eo{A*PF-T3tNz zxV22g@Unk-=kg&b9TOYBu(-U6o~4s_;J;S}7ub$x1z>%KtCdlWa}TtYc%jjfmGC#Q zi=wp7Irfd;%75friM6_-;bH>B^$6slf1-Sm9;RUEsd(8){YJ%FeWxyS)e@_w`G=c4 zNw;$Ph;fF;NuZ#v5m!ynxcs(=W;ENMJ<|QnWN7$?=M8b!CWar?hYvb3$48P4yfPlQ zc}1>8lr8Qn$!1#jm*iVs>a497OLzT=cpmyh`3kR8Y2%IFW`r^0IhNKz@o3B&?O8L; z7nedR4B5ZxXV39H@*x}66<@=WdhKj0ao?wu$^Ux>&c~Xf@&2saGBH1r7G%bWEgai3 zwPZ`Vg{%tvApE%BBB86D6hjq~_ep5*2q*AqL(&TtwX?M+dgcqAPGn>q^o$mlr&8~a=`SJ*Fh4G*7reh1qGSmzjN|7 zgX39luSV}U^Pz{-U0b~m2(O5(EKmH9i+#P1oO2%R;PTM zph_}GCbm5!c_6-Nay0Xn;nfFipybaPnW!PRzd5}A4-X#yP3b~%uby|{^oLu;EHRau zPKvR{<| z=nN^HZ?mNDc=o^kfb^e!+Iunr)@gB>`I=mbM7s3`?}h&oGL)=WaDv}p2S_-cIq>^Y z#k}o{pAXWwN7A)txT+kTDSBTyU}muuZ*Jq%azOs9rN^q3StL;IYClTYB^cd(_B9OpY7pKFyljZPVfcwWB8%+o|&sVr=kWD!Ek24HsEfJ0+8KTpTAqku%qr5c+r2 z$G%S=h&kYB{E-3tH*}5p@4NW}Ii32+Mn}I#6{i^L1rBnk8~t#_r!{VFez9%HD5pg$jW~&=vOD;fu>4^clUZv;h(tFM56)yzOCXZN;w8R|Du!`PuH5>WD(V>`t`}_~>pDz3< ze+uM_l5C8}#u;p$LcVnG?V(HR`S|C&7FT~*hG^J$-J{)hxGjY7TBUX)?oR*2=hRZ9Ix+XNnvpUDzQk2K< zDQrlazcdz9+g2M4GnnOTkdliMCb*YyIu$oCnv90sV{;-!I+%Pw68{mXrF-$g50k1= z`0iFuEv!CB@nc0@#o;*>#R&-axW-@fVDnpa^B)%J!puGI)8P%aLQX?_*D`-dZB~qM zw;mC>M9A<@M5;Q+J*qZ%-d=}3oRX_%9ga`)EqP!y>{l~jjbb|C){-*dM;v{(P-7fE z)TV#dT+^fhd)@WX!@`;43A2d4>pyJNI^h;=Z~u_er@Ao_#bOg6TuiANOCa{er~jm6 z&KATjD{2`<&`(b4xh>IoyMScCy2b+slEw4PzfoBa2c&xJymr*)A@Z4o_ zSgJhyLp48?Yg$`zb66l#*Y4gM=NSa8^b&q0xz&WUtLe~ILSGQ(rV`gRiBi+HV{X6Z z4OASd&gk5z-j-VT89eX4C~VZC;4AcE&PeAW(fcE19lE4Bd%4el=-%{kc-F8dnq(`) z*B}OqLD$%>G}wnf1kcSpIssv;eOQf1^bBKz+OAA1I`ZxTU%+41<&p8e`cM%1`o{3k z24tx@q3sV}B>mZ&kjB=jp-v@#VE?(Tv8TGILqf#(_EDpk-c0&*TFyMNU<~SiEdC;x z$ce7%ubG$~&D$EWF*gP>Y2v;fekaM$@P%NAUwfnH{ z*2*$zW~#{MCnFqzvp9ra#TGwtz8&aw_~q{ve4#h*>{_P-O+?FF;qH&UEx+2?_OK@J zD`oTS_we{_6c7DzHiJ*g4F)uvYxAC}8hus@pD>7|@(D8?O~Q|p`Hw{qWq*zl)whCG z!*v$SNQZf&#f+izbF!^LH-mcvr0APM=Z=n?CceMb-80hc(KehTp1=CqLkH5xFCt_* z%yS&%PUgy%t9KuBfBW#A*U0IkJ!iOvw&y*(BaMulP2m^j0FlBc_Y+OJyx|5z9|ZX9 zkAG`J&r2q=aijDoE8y-b)O~%+l#{pyqG%(%`kK^K`#%2|BodP4w!(AG>AG(7&|C%G zgqP>gD~(PT8~&M#Bf_pe&}Sh|=7m<1=pWuavWB!kzdf|1&S3va^U$i~x=%8a?&w%0 zeB>!F5n&niCweyuC@InGbnB?`+1|1`LrtFi!1&(V<^>A~W~3`80l|7Gz-J?2qV=x& zB1XRlAm%DVY#uu-|AJ7LX7+p9*If5;6a7Qvv6;HGv++?Kf6T4o{ukHjyADe+1NPg< zk65L@14DcD;+T)EGHVCY&NGV!(->K8!Zt*gXxDtaBE&^>9GpPA{h1PK%_yGQl9Xzh; zqN^Ni=L;lwE9^=2>M`+DrztgWdt-ABMxGlueZVeLnTwMp{Vf|zNK zOgRIJ<*Xsj1;04&iiGfZqy0`y43L%18y7*MT(uK3+qN#R1SwM@`a0H(AZ7nAe=uHT zY@0g9s5n@mL^jxPwZ}V#`P4vvDbCLv2PtUsl~*%5PTz&!h0>`uB8j1slYUw1)@Ae6)5S@`eNeh|MAj{;AmRvb`XP{VLDLaJ{}^29ZbK&r)tr$3AQ5KP1xr15N+SLgqG~ z%3Z=fCoRz4T0C{TIQWT~mNkovPmRoTd$1GhoJdsB5CMo3ytzAGQ(7wP_jA>}UL?5< z#Mz-G+T!eQIom1{p^0<|{q-3QL`nMK#CLjLRoR$a|IV&hxJ(J-o|8tKE>X_c+2i?W z+WU}u1qvBP;)YO7{B@W24nB`62fmb=%?z%)#e@ZYw!nPZcrZ@45a3ST6el!awQT;z z^X2hI)MgqpM@a$4Y?+4w)>OH5&$!&H55#G|T*^n56kQu?UV*T9O-_C@7X2{I4Bj9J z&QFhwfQluAa!K@Q57a+~^@oR{AC?}Me$~sQw%lQS6Ds#i;23QB#l*(SS3(}Dc(#zT z@5o*%iS6(@IT5`>*-KG~K@BRdt5r^tBp(&)B4UPZ!q=rTPbxnr;~)KguAO>0oySrS zz#035&f9@K@#!Wz-!|}E_dMU~Rm99>7(AJs=HPnyFlxC><_m4rj*G&#`;Rs;rg^s9 zo)BJh=9)WlA3?b=dITHabP_Q+(dwFaYHM0Yp49L(?^fwB?f)(ihNzjpnS%&@Nc9&V zJaV8%#!|%GmxfxX$9k(JzSUryqg=az5Ph!#Hfa%S(yH%^C$v*j;ur6tpWgby{rGOH z=3ZCbsX;GzHNW;QzEqF*i}I|=(snRzy|A4X7WzRXd9BC+$in-=3k}qRdg<~!Ujr3i z%2BtuQH{Opk*I2tntUFv{}9{hwfh{Feg9#>%jcIR5(@@D(>DO z;i6k?vs7_vzJ1zE*KST;B~aUz**0Rh(axaGAAPrrHdUaZ5IGgUuqJO`D2n|(NGFac zzQY@)K zlvt7Vw5k*Sbja9HIZGpYK|D9L8=3AEVrSzD9uStSuBy*mr=ioH)*U=1jAq{{Ucbcd zj6WTB`iS{|^^KkawA-@|V0ql^TZ2BR7-rh~{F_SjObUWPj#)P^Kid7P-aK>?52!G6 zWGc6MTjhrNne4(0%b>-+nYK`P@aE6RJhP9Pn4EW=K4GVcol#T88|^#gI7K1WUqCDfqt# z3y`$+T1a@!j8AUx(J6x!Rhxg~?XTX6@ZGU!w&$1FhKrl}-?5~RNgSU%jbQ#-oPq)A z=pOMK=pyn{_JLfsK^5=rPGo#8vqBk=+uC}U+I(ufvXUUq%_sh( zhBEL^4s(?tvBRELbLfJY{@!Uguh^IJ>W^fE+}8y|za4%k>hnVvbO!cmW0Xv{z-gxN z!4%kw(ULe#ywG=1w-tsD2AJ?SK7)5njrvWhF(g~&L~?EQg@C=oH79x7a^hgD3N zXw^9fc)i(XZhh7ZR_QHBtp}8o_usdz=&k;8QXVK(o7?e$?bfXixLjW11IcocAbWLKNesE={mQ7sL64v9-*lS!nm z^e${twLMY}r!EX4#D*N2sv%nQ{n)gm!{2u3<0}?tt@TagOSkc0rUzZ?`oyet$dOAU z=AZroRI#GzZhoC)+`Ck!L9SA)Fl&c1#zNXYu(2s}e&hEq=wuhr5-f5fZFVx!mE|wQ zGa8b0*T!+ukbM~-xOQVg;PqVI-_@r?SL^~v+ycEQj1{N6yOWBCBa!Wr3Ax^PXM;#e zW3r|m8<9hEn@>_rzw3^V^Yt0lnZI3O<^#n=e;(wC^1^7U%9Vn_8OWhA@I58jov7Zv z;9a-4%c$@E+S--6%uh2YdxLu&jqcY^+Db2Mq|!ySItCM-IIdc9(#3ZYjY+aSIMDTU zm389gMAM{Fk{9%TSkZ(-U6UEj6KX{dWXv7KFEGpW4r)5@+{w&Td1rH?5akkU$+qZd zVfslhTFIOV<697meDYRs6Lxjwy;z(?B^mxyIlrkzP&wMcsE}c#)h)(WW!O|C`Mt0f z14lCb2T}F)k1~a}THTi(9S^D`cF=J7(H+abz0xvS$7W5^84&ocq~d8Td7+^CJ7_JE zPk{@d3nqGc=IVURHf)t0l!D#zX$?oEyFNJ6#WuM4Q&IpT2||m#c5dx&MlVb zqy!&n@MDZn;=9?aLAmOP)jnb6l^$ycq{lP$C8yn8k^8kuC9R3itV<3EdwPG#d$wOU zfHxAOI#DRUJd^{FoWIEmdKDN}SIvB`t!)vE=rlMX)?*pGJ^Q7X?c44QzW4QffjZvV zS5(Y%S<-JmkG->vrk3}aajAjbDZyJSZ{idC6%U28m;4}Kxv41gP<=q^6UR%+*Q1}G zkq1B8PFkO1-_rhgv@rc()8>Aca@5p=E~)xD5_XM-$ep|F&`e1U8VR@K%;JO;@e_U zJceUHZgnNMc6{)2B~^FZho$euv1#)l@ME}~&S8We_Vq>%MrAQU$|S@vI%ASl-I41& zkoSPMP|Qt%!l#L^r}9vnYzkwlGKk zl?<1mG?L)_vkTpS8``0!CT;?#@`KRe!+qU9?x--<~sC@JyI9y1!ANMP>Q<&e_u zW(a_ZNM;%?x2Tlt<&H(_MhmrR4(jCGoN+-|=H~i5hff_zykB?47Kum09-JwqRMf@f z>~~}CPD0H>{jlwml#u~CsU(~mCj)ZY>Q4J)=X{ftNK$w-|u58)N@*QwUrC66F6x6*73 zJhvJg49WG5sBgMbUv!0%*lY?#d5YcVVitwRx*71aSAq}oZ#Zk)wVclCE|Y`sajbEX z@y8WM#1HVVxP>(P9W^Ir-Itp|ZMwC}@%^vfBBmy@bNC6_?9)!z2~K(MZ8SgIURs@t zCA!~5E2gu$YwFxHKX9t}^*TGu1foYTas1wO{AW%(7S0}in-qj)RC(AxM3r3m5uk!L z&Aq6)BeoJ}oPR?}YToW~H|_xYe&+%+d8Wlo*ChgOpq5x>|D!3D8m-<k@IEU%@C zSZXf4($JNcIXFcdO{Nhd!b<;Xg1~EQsGsFKStCn-bn`@No})k}Bj%Hoo{ kl(;^y;lfSPM`?HWBbRAgQ{Q9^bKG>Me|1T^^+iMb573SIRsaA1 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-header-privacy.webp b/src/wp-admin/images/about-header-privacy.webp new file mode 100644 index 0000000000000000000000000000000000000000..5178051483f757ecaf301296831cffa005bfc8ef GIT binary patch literal 10926 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 ZZjSimhYYND#ozdATz9!XT?7r_-vE>|XN3R& literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/about-release-badge.svg b/src/wp-admin/images/about-release-badge.svg index f2894d8b5030f..751068ebe62ed 100644 --- a/src/wp-admin/images/about-release-badge.svg +++ b/src/wp-admin/images/about-release-badge.svg @@ -1,13 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/wp-admin/images/about-release-logo.svg b/src/wp-admin/images/about-release-logo.svg index 15c35b521b8de..d497949fe8b74 100644 --- a/src/wp-admin/images/about-release-logo.svg +++ b/src/wp-admin/images/about-release-logo.svg @@ -1,40 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + diff --git a/src/wp-admin/privacy.php b/src/wp-admin/privacy.php index 29dda79f0090b..4c47063ef8fc7 100644 --- a/src/wp-admin/privacy.php +++ b/src/wp-admin/privacy.php @@ -25,7 +25,7 @@
- <?php echo esc_attr( $header_alt_text ); ?> + <?php echo esc_attr( $header_alt_text ); ?>
From b0990925d7d5f0ec7dfee2dcb28ec8b63541429e Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Thu, 14 May 2026 21:53:46 +0000 Subject: [PATCH 081/327] Tests: Add unit tests for `wp_admin_viewport_meta()`. Follow-up to [48412]. Props pbearne. Fixes #65187. git-svn-id: https://develop.svn.wordpress.org/trunk@62366 602fd350-edb4-49c9-b593-d223f7449a82 --- .../misc/WpAdminViewportMeta_Test.php | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 tests/phpunit/tests/admin/includes/misc/WpAdminViewportMeta_Test.php diff --git a/tests/phpunit/tests/admin/includes/misc/WpAdminViewportMeta_Test.php b/tests/phpunit/tests/admin/includes/misc/WpAdminViewportMeta_Test.php new file mode 100644 index 0000000000000..d651d4d1206e3 --- /dev/null +++ b/tests/phpunit/tests/admin/includes/misc/WpAdminViewportMeta_Test.php @@ -0,0 +1,62 @@ +expectOutputString( $expected ); + wp_admin_viewport_meta(); + } + + /** + * Data provider for test_wp_admin_viewport_meta(). + * + * @return array + */ + public function data_wp_admin_viewport_meta(): array { + return array( + 'default value' => array( + 'filter_value' => null, + 'expected' => '', + ), + 'custom filtered value' => array( + 'filter_value' => 'width=device-width,initial-scale=2.0', + 'expected' => '', + ), + 'empty filtered value' => array( + 'filter_value' => '', + 'expected' => '', + ), + 'escaped filtered value' => array( + 'filter_value' => 'width=device-width; content=">', + 'expected' => '' ) . '">', + ), + ); + } +} From 165d83ed362f633875e8b94f45910b74237e1026 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Fri, 15 May 2026 23:47:07 +0000 Subject: [PATCH 082/327] Tests: Add unit tests for `wp_page_reload_on_back_button_js()`. Follow-up to [37619]. Props pbearne. Fixes #65193. git-svn-id: https://develop.svn.wordpress.org/trunk@62367 602fd350-edb4-49c9-b593-d223f7449a82 --- .../misc/WpPageReloadOnBackButtonJs_Test.php | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tests/phpunit/tests/admin/includes/misc/WpPageReloadOnBackButtonJs_Test.php diff --git a/tests/phpunit/tests/admin/includes/misc/WpPageReloadOnBackButtonJs_Test.php b/tests/phpunit/tests/admin/includes/misc/WpPageReloadOnBackButtonJs_Test.php new file mode 100644 index 0000000000000..2f66a52d09361 --- /dev/null +++ b/tests/phpunit/tests/admin/includes/misc/WpPageReloadOnBackButtonJs_Test.php @@ -0,0 +1,25 @@ +assertStringContainsString( '', $output ); + } +} From aa60d9da0769c064463942592f5e59852cd2ea89 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Sat, 16 May 2026 05:03:42 +0000 Subject: [PATCH 083/327] Script Loader: Warn when classic scripts with module dependencies lack footer/defer. A classic script with `module_dependencies` may be evaluated before the script modules import map is printed if it loads blocking in the document head, causing a "Failed to resolve module specifier" error on dynamic imports. * Trigger `_doing_it_wrong()` from `_wp_scripts_add_args_data()` when a classic script provides `module_dependencies` without setting `in_footer` to `true` or using a `defer` loading `strategy`, and document this requirement in the `wp_register_script()` and `wp_enqueue_script()` docblocks. * Remove the `module_dependencies` arg from the `wp-codemirror` script registration in favor of passing the espree module URL directly through `wp_get_code_editor_settings()`. This avoids registering `espree` as a publicly-available script module when it is only ever used internally as a private implementation detail of the code editor. * Add a `console.warn()` in `wp.codeEditor.initialize()` when invoked before `DOMContentLoaded`, so developers are alerted if the function is called too early for the import map to have been parsed. * Add PHPStan types which were missing when `module_dependencies` were initially introduced. * Harden `WP_Scripts::add_data()` against non-string `strategy` values being passed to `sprintf()`. Developed in https://github.com/WordPress/wordpress-develop/pull/11788 Follow-up to r61587. Props khokansardar, westonruter, jonsurrell, jorbin. See #61500, #64238. Fixes #65165. git-svn-id: https://develop.svn.wordpress.org/trunk@62368 602fd350-edb4-49c9-b593-d223f7449a82 --- .../lib/codemirror/javascript-lint.js | 7 +- src/js/_enqueues/wp/code-editor.js | 6 + src/wp-includes/class-wp-scripts.php | 4 +- src/wp-includes/functions.wp-scripts.php | 126 +++++++--- src/wp-includes/general-template.php | 34 +-- src/wp-includes/script-loader.php | 3 +- src/wp-includes/script-modules.php | 7 - tests/phpunit/includes/abstract-testcase.php | 4 +- tests/phpunit/tests/dependencies/scripts.php | 235 ++++++++++++++++++ .../tests/script-modules/wpScriptModules.php | 4 + 10 files changed, 372 insertions(+), 58 deletions(-) diff --git a/src/js/_enqueues/lib/codemirror/javascript-lint.js b/src/js/_enqueues/lib/codemirror/javascript-lint.js index 592d077b80914..2c96798a20ae3 100644 --- a/src/js/_enqueues/lib/codemirror/javascript-lint.js +++ b/src/js/_enqueues/lib/codemirror/javascript-lint.js @@ -30,6 +30,7 @@ import CodeMirror from 'codemirror'; * @property {boolean} [es3] - "This option tells JSHint that your code needs to adhere to ECMAScript 3 specification. Use this option if you need your program to be executable in older browsers—such as Internet Explorer 6/7/8/9—and other legacy JavaScript environments." * @property {boolean} [module] - "This option informs JSHint that the input code describes an ECMAScript 6 module. All module code is interpreted as strict mode code." * @property {'implied'} [strict] - "This option requires the code to run in ECMAScript 5's strict mode." + * @property {string} [espreeModuleUrl] - The URL to the espree script module. */ /** @@ -42,9 +43,13 @@ import CodeMirror from 'codemirror'; * @returns {Promise} */ async function validator( text, options ) { + if ( ! options.espreeModuleUrl ) { + return []; + } + const errors = /** @type {CodeMirrorLintError[]} */ []; try { - const espree = await import( /* webpackIgnore: true */ 'espree' ); + const espree = await import( /* webpackIgnore: true */ options.espreeModuleUrl ); espree.parse( text, { ...getEspreeOptions( options ), loc: true, diff --git a/src/js/_enqueues/wp/code-editor.js b/src/js/_enqueues/wp/code-editor.js index 86d5e03254166..ed8be9d6a5580 100644 --- a/src/js/_enqueues/wp/code-editor.js +++ b/src/js/_enqueues/wp/code-editor.js @@ -2,6 +2,8 @@ * @output wp-admin/js/code-editor.js */ +/* global console */ + /* eslint-env es2020 */ if ( 'undefined' === typeof window.wp ) { @@ -412,6 +414,10 @@ if ( 'undefined' === typeof window.wp.codeEditor ) { * @return {CodeEditorInstance} Instance. */ wp.codeEditor.initialize = function initialize( textarea, settings ) { + if ( document.readyState === 'loading' ) { + console.warn( 'wp.codeEditor.initialize() ran too early. Invoke this function in a `DOMContentLoaded` event listener.' ); + } + let $textarea; if ( 'string' === typeof textarea ) { $textarea = $( '#' + textarea ); diff --git a/src/wp-includes/class-wp-scripts.php b/src/wp-includes/class-wp-scripts.php index cb37b2b653877..6f633d465bb2c 100644 --- a/src/wp-includes/class-wp-scripts.php +++ b/src/wp-includes/class-wp-scripts.php @@ -885,7 +885,7 @@ public function add_data( $handle, $key, $value ) { sprintf( /* translators: 1: $strategy, 2: $handle */ __( 'Invalid strategy `%1$s` defined for `%2$s` during script registration.' ), - $value, + is_string( $value ) ? $value : gettype( $value ), $handle ), '6.3.0' @@ -897,7 +897,7 @@ public function add_data( $handle, $key, $value ) { sprintf( /* translators: 1: $strategy, 2: $handle */ __( 'Cannot supply a strategy `%1$s` for script `%2$s` because it is an alias (it lacks a `src` value).' ), - $value, + is_string( $value ) ? $value : gettype( $value ), $handle ), '6.3.0' diff --git a/src/wp-includes/functions.wp-scripts.php b/src/wp-includes/functions.wp-scripts.php index 59e4e54a1a1ad..5e9589252124b 100644 --- a/src/wp-includes/functions.wp-scripts.php +++ b/src/wp-includes/functions.wp-scripts.php @@ -71,19 +71,30 @@ function _wp_scripts_maybe_doing_it_wrong( $function_name, $handle = '' ) { /** * Adds the data for the recognized args and warns for unrecognized args. * + * @see wp_enqueue_script() + * @see wp_register_script() + * * @ignore * @since 7.0.0 * * @param WP_Scripts $wp_scripts WP_Scripts instance. * @param string $handle Script handle. * @param array $args Array of extra args for the script. + * + * @phpstan-param non-empty-string $handle + * @phpstan-param array{ + * in_footer?: bool, + * strategy?: 'async'|'defer', + * fetchpriority?: 'low'|'auto'|'high', + * module_dependencies?: array, + * } $args */ -function _wp_scripts_add_args_data( WP_Scripts $wp_scripts, string $handle, array $args ) { +function _wp_scripts_add_args_data( WP_Scripts $wp_scripts, string $handle, array $args ): void { $allowed_keys = array( 'strategy', 'in_footer', 'fetchpriority', 'module_dependencies' ); $unknown_keys = array_diff( array_keys( $args ), $allowed_keys ); if ( ! empty( $unknown_keys ) ) { $trace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 2 ); - $function_name = ( $trace[1]['class'] ?? '' ) . ( $trace[1]['type'] ?? '' ) . $trace[1]['function']; + $function_name = ( $trace[1]['class'] ?? '' ) . ( $trace[1]['type'] ?? '' ) . ( $trace[1]['function'] ?? __FUNCTION__ ); _doing_it_wrong( $function_name, sprintf( @@ -97,7 +108,8 @@ function _wp_scripts_add_args_data( WP_Scripts $wp_scripts, string $handle, arra ); } - if ( ! empty( $args['in_footer'] ) ) { + $in_footer = ! empty( $args['in_footer'] ); + if ( $in_footer ) { $wp_scripts->add_data( $handle, 'group', 1 ); } if ( ! empty( $args['strategy'] ) ) { @@ -108,6 +120,31 @@ function _wp_scripts_add_args_data( WP_Scripts $wp_scripts, string $handle, arra } if ( ! empty( $args['module_dependencies'] ) ) { $wp_scripts->add_data( $handle, 'module_dependencies', $args['module_dependencies'] ); + + /* + * A classic script with module dependencies must either be printed in the + * footer or use the 'defer' loading strategy. Otherwise, the script may be + * evaluated before the script modules import map is printed, causing + * dynamic imports to fail with a "Failed to resolve module specifier" error. + */ + $is_deferred = 'defer' === ( $args['strategy'] ?? null ); + if ( ! $in_footer && ! $is_deferred ) { + $trace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 2 ); + $function_name = ( $trace[1]['class'] ?? '' ) . ( $trace[1]['type'] ?? '' ) . ( $trace[1]['function'] ?? __FUNCTION__ ); + _doing_it_wrong( + $function_name, + sprintf( + /* translators: 1: 'module_dependencies', 2: Script handle, 3: 'in_footer', 4: 'strategy', 5: 'defer'. */ + __( 'When the %1$s arg is provided, the "%2$s" script must either be printed in the footer (%3$s set to true) or use a deferred loading %4$s (%5$s) so that the import map is printed before the script is evaluated.' ), + 'module_dependencies', + $handle, + 'in_footer', + 'strategy', + 'defer' + ), + '7.0.0' + ); + } } } @@ -204,25 +241,39 @@ function wp_add_inline_script( $handle, $data, $position = 'after' ) { * @since 6.9.0 The $fetchpriority parameter of type string was added to the $args parameter of type array. * @since 7.0.0 The $module_dependencies parameter of type string[] was added to the $args parameter of type array. * - * @param string $handle Name of the script. Should be unique. - * @param string|false $src Full URL of the script, or path of the script relative to the WordPress root directory. - * If source is set to false, script is an alias of other scripts it depends on. - * @param string[] $deps Optional. An array of registered script handles this script depends on. Default empty array. - * @param string|bool|null $ver Optional. String specifying script version number, if it has one, which is added to the URL - * as a query string for cache busting purposes. If version is set to false, a version - * number is automatically added equal to current installed WordPress version. - * If set to null, no version is added. - * @param array>>|bool $args { + * @param string $handle Name of the script. Should be unique. + * @param string|false $src Full URL of the script, or path of the script relative to the WordPress root directory. + * If source is set to false, script is an alias of other scripts it depends on. + * @param string[] $deps Optional. An array of registered script handles this script depends on. Default empty array. + * @param string|bool|null $ver Optional. String specifying script version number, if it has one, which is added to the URL + * as a query string for cache busting purposes. If version is set to false, a version + * number is automatically added equal to current installed WordPress version. + * If set to null, no version is added. + * @param array|bool $args { * Optional. An array of extra args for the script. Default empty array. * Otherwise, it may be a boolean in which case it determines whether the script is printed in the footer. Default false. * - * @type string $strategy Optional. If provided, may be either 'defer' or 'async'. - * @type bool $in_footer Optional. Whether to print the script in the footer. Default 'false'. - * @type string $fetchpriority Optional. The fetch priority for the script. Default 'auto'. - * @type array> $module_dependencies Optional. IDs for module dependencies loaded via dynamic import. Default empty array. + * @type string $strategy Optional. If provided, may be either 'defer' or 'async'. + * @type bool $in_footer Optional. Whether to print the script in the footer. Default 'false'. + * @type string $fetchpriority Optional. The fetch priority for the script. Default 'auto'. + * @type array $module_dependencies Optional. IDs for module dependencies loaded via dynamic import. Default empty array. * For the full data format, see the `$deps` param of {@see wp_register_script_module()}. + * When provided, the script must either be printed in the footer (with + * `in_footer` set to true) or use a deferred loading `strategy` (`defer`), + * so that the script modules import map is printed before the script + * is evaluated. Otherwise dynamic imports may fail to resolve. * } * @return bool Whether the script has been registered. True on success, false on failure. + * + * @phpstan-param non-empty-string $handle + * @phpstan-param non-empty-string|false $src + * @phpstan-param non-empty-string[] $deps + * @phpstan-param array{ + * in_footer?: bool, + * strategy?: 'async'|'defer', + * fetchpriority?: 'low'|'auto'|'high', + * module_dependencies?: array, + * }|bool $args */ function wp_register_script( $handle, $src, $deps = array(), $ver = false, $args = array() ) { if ( ! is_array( $args ) ) { @@ -386,24 +437,38 @@ function wp_deregister_script( $handle ) { * @since 6.9.0 The $fetchpriority parameter of type string was added to the $args parameter of type array. * @since 7.0.0 The $module_dependencies parameter of type string[] was added to the $args parameter of type array. * - * @param string $handle Name of the script. Should be unique. - * @param string $src Full URL of the script, or path of the script relative to the WordPress root directory. - * Default empty. - * @param string[] $deps Optional. An array of registered script handles this script depends on. Default empty array. - * @param string|bool|null $ver Optional. String specifying script version number, if it has one, which is added to the URL - * as a query string for cache busting purposes. If version is set to false, a version - * number is automatically added equal to current installed WordPress version. - * If set to null, no version is added. - * @param array>>|bool $args { + * @param string $handle Name of the script. Should be unique. + * @param string $src Full URL of the script, or path of the script relative to the WordPress root directory. + * Default empty. + * @param string[] $deps Optional. An array of registered script handles this script depends on. Default empty array. + * @param string|bool|null $ver Optional. String specifying script version number, if it has one, which is added to the URL + * as a query string for cache busting purposes. If version is set to false, a version + * number is automatically added equal to current installed WordPress version. + * If set to null, no version is added. + * @param array|bool $args { * Optional. An array of extra args for the script. Default empty array. * Otherwise, it may be a boolean in which case it determines whether the script is printed in the footer. Default false. * - * @type string $strategy Optional. If provided, may be either 'defer' or 'async'. - * @type bool $in_footer Optional. Whether to print the script in the footer. Default 'false'. - * @type string $fetchpriority Optional. The fetch priority for the script. Default 'auto'. - * @type array> $module_dependencies Optional. IDs for module dependencies loaded via dynamic import. Default empty array. - * For the full data format, see the `$deps` param of {@see wp_register_script_module()}. + * @type string $strategy Optional. If provided, may be either 'defer' or 'async'. + * @type bool $in_footer Optional. Whether to print the script in the footer. Default 'false'. + * @type string $fetchpriority Optional. The fetch priority for the script. Default 'auto'. + * @type array $module_dependencies Optional. IDs for module dependencies loaded via dynamic import. Default empty array. + * For the full data format, see the `$deps` param of {@see wp_register_script_module()}. + * When provided, the script must either be printed in the footer (with + * `in_footer` set to true) or use a deferred loading `strategy` (`defer`), + * so that the script modules import map is printed before the script + * is evaluated. Otherwise dynamic imports may fail to resolve. * } + * + * @phpstan-param non-empty-string $handle + * @phpstan-param string $src + * @phpstan-param non-empty-string[] $deps + * @phpstan-param array{ + * in_footer?: bool, + * strategy?: 'async'|'defer', + * fetchpriority?: 'low'|'auto'|'high', + * module_dependencies?: array, + * }|bool $args */ function wp_enqueue_script( $handle, $src = '', $deps = array(), $ver = false, $args = array() ) { _wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); @@ -411,6 +476,7 @@ function wp_enqueue_script( $handle, $src = '', $deps = array(), $ver = false, $ $wp_scripts = wp_scripts(); if ( $src || ! empty( $args ) ) { + /** @var array{ 0: non-empty-string, 1?: string } $_handle */ $_handle = explode( '?', $handle ); if ( ! is_array( $args ) ) { $args = array( diff --git a/src/wp-includes/general-template.php b/src/wp-includes/general-template.php index 47e2aeb2ebb05..34233c35b0cc3 100644 --- a/src/wp-includes/general-template.php +++ b/src/wp-includes/general-template.php @@ -4155,27 +4155,31 @@ function wp_get_code_editor_settings( $args ) { 'outline-none' => true, ), 'jshint' => array( - 'esversion' => 11, - 'module' => str_ends_with( $args['file'] ?? '', '.mjs' ), + 'esversion' => 11, + 'module' => str_ends_with( $args['file'] ?? '', '.mjs' ), + + // This script module URL is intentionally referenced here instead of registering an espree script module + // in wp_default_script_modules(). This is a first stab at a core-only private module. + 'espreeModuleUrl' => add_query_arg( 'ver', '9.6.1', includes_url( 'js/codemirror/espree.min.js' ) ), // The following JSHint *linting rule* options are copied from // . // Parsing-related options such as `esversion` (and, in other contexts, `es5`, `es3`, `module`, `strict`) // are honored by the Espree-based integration, but these linting-rule options are not interpreted by Espree // and are kept only for compatibility/documentation with the original JSHint configuration. - 'boss' => true, - 'curly' => true, - 'eqeqeq' => true, - 'eqnull' => true, - 'expr' => true, - 'immed' => true, - 'noarg' => true, - 'nonbsp' => true, - 'quotmark' => 'single', - 'undef' => true, - 'unused' => true, - 'browser' => true, - 'globals' => array( + 'boss' => true, + 'curly' => true, + 'eqeqeq' => true, + 'eqnull' => true, + 'expr' => true, + 'immed' => true, + 'noarg' => true, + 'nonbsp' => true, + 'quotmark' => 'single', + 'undef' => true, + 'unused' => true, + 'browser' => true, + 'globals' => array( '_' => false, 'Backbone' => false, 'jQuery' => false, diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index 42d42b3f8781d..f4fad38f3eefe 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -1200,9 +1200,8 @@ function wp_default_scripts( $scripts ) { ); $scripts->add( 'wp-codemirror', '/wp-includes/js/codemirror/codemirror.min.js', array(), '5.65.20' ); - did_action( 'init' ) && $scripts->add_data( 'wp-codemirror', 'module_dependencies', array( 'espree' ) ); $scripts->add( 'csslint', '/wp-includes/js/codemirror/csslint.js', array(), '1.0.5' ); - $scripts->add( 'esprima', '/wp-includes/js/codemirror/esprima.js', array(), '4.0.1' ); // Deprecated. Use 'espree' script module. + $scripts->add( 'esprima', '/wp-includes/js/codemirror/esprima.js', array(), '4.0.1' ); // Deprecated. $scripts->add( 'jshint', '/wp-includes/js/codemirror/fakejshint.js', array( 'esprima' ), '2.9.5' ); // Deprecated. $scripts->add( 'jsonlint', '/wp-includes/js/codemirror/jsonlint.js', array(), '1.6.3' ); $scripts->add( 'htmlhint', '/wp-includes/js/codemirror/htmlhint.js', array(), '1.8.0' ); diff --git a/src/wp-includes/script-modules.php b/src/wp-includes/script-modules.php index b3a89fdf71844..32863a6a8ab00 100644 --- a/src/wp-includes/script-modules.php +++ b/src/wp-includes/script-modules.php @@ -219,13 +219,6 @@ function wp_default_script_modules() { $module_deps = $script_module_data['module_dependencies'] ?? array(); wp_register_script_module( $script_module_id, $path, $module_deps, $script_module_data['version'], $args ); } - - wp_register_script_module( - 'espree', - includes_url( 'js/codemirror/espree.min.js' ), - array(), - '9.6.1' - ); } /** diff --git a/tests/phpunit/includes/abstract-testcase.php b/tests/phpunit/includes/abstract-testcase.php index 3a5d52b0706a9..b8e8598362ec5 100644 --- a/tests/phpunit/includes/abstract-testcase.php +++ b/tests/phpunit/includes/abstract-testcase.php @@ -18,7 +18,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Adapter_TestCase { protected $expected_deprecated = array(); protected $caught_deprecated = array(); protected $expected_doing_it_wrong = array(); - protected $caught_doing_it_wrong = array(); + + /** @var non-empty-string[] */ + protected $caught_doing_it_wrong = array(); protected static $hooks_saved = array(); protected static $ignore_files; diff --git a/tests/phpunit/tests/dependencies/scripts.php b/tests/phpunit/tests/dependencies/scripts.php index 5f1c30fe4cf47..41c9673915b93 100644 --- a/tests/phpunit/tests/dependencies/scripts.php +++ b/tests/phpunit/tests/dependencies/scripts.php @@ -8,6 +8,20 @@ * @covers ::wp_script_add_data * @covers ::wp_add_inline_script * @covers ::wp_set_script_translations + * + * @phpstan-type ScriptArgs array{ + * in_footer?: bool, + * strategy?: 'async'|'defer', + * fetchpriority?: 'low'|'auto'|'high', + * module_dependencies?: array, + * } + * @phpstan-type WpEnqueueScriptArgs array{ + * 0: non-empty-string, // $handle + * 1?: non-empty-string, // $src + * 2?: non-empty-string[], // $deps + * 3?: null|bool|string, // $version + * 4?: ScriptArgs, + * } */ class Tests_Dependencies_Scripts extends WP_UnitTestCase { @@ -1396,6 +1410,223 @@ public function data_add_data_module_dependencies_validation(): array { ); } + /** + * Tests that registering a script with `module_dependencies` triggers `_doing_it_wrong` + * when the script is not printed in the footer and does not use the `defer` strategy. + * + * @ticket 65165 + * + * @covers ::wp_register_script + * @covers ::wp_enqueue_script + * @covers ::_wp_scripts_add_args_data + * + * @dataProvider data_module_dependencies_require_footer_or_defer + * + * @param callable-string $function_name Function name to call. + * @param array $args Arguments to pass to the function. + * @param bool $should_warn Whether the call is expected to trigger a `_doing_it_wrong` warning. + * + * @phpstan-param WpEnqueueScriptArgs $args + */ + public function test_module_dependencies_require_footer_or_defer( string $function_name, array $args, bool $should_warn ): void { + if ( $should_warn ) { + $this->setExpectedIncorrectUsage( $function_name ); + } + + call_user_func_array( $function_name, $args ); + + if ( $should_warn ) { + $this->assertStringContainsString( + 'module_dependencies', + $this->caught_doing_it_wrong[ $function_name ], + 'The _doing_it_wrong message should reference module_dependencies.' + ); + $this->assertStringContainsString( + 'in_footer', + $this->caught_doing_it_wrong[ $function_name ], + 'The _doing_it_wrong message should reference the in_footer requirement.' + ); + $this->assertStringContainsString( + 'defer', + $this->caught_doing_it_wrong[ $function_name ], + 'The _doing_it_wrong message should reference the defer strategy.' + ); + } else { + $this->assertArrayNotHasKey( + $function_name, + $this->caught_doing_it_wrong, + 'No _doing_it_wrong warning should be triggered when in_footer is true or strategy is defer.' + ); + } + } + + /** + * Data provider for {@see self::test_module_dependencies_require_footer_or_defer()}. + * + * @phpstan-return array + */ + public function data_module_dependencies_require_footer_or_defer(): array { + $base_args = array( + '/script.js', + array(), + null, + ); + + return array( + 'register_blocking_warns' => array( + 'function_name' => 'wp_register_script', + 'args' => array_merge( + array( 'module-deps-blocking-register' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + ), + ) + ), + 'should_warn' => true, + ), + 'enqueue_blocking_warns' => array( + 'function_name' => 'wp_enqueue_script', + 'args' => array_merge( + array( 'module-deps-blocking-enqueue' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + ), + ) + ), + 'should_warn' => true, + ), + 'register_async_warns' => array( + 'function_name' => 'wp_register_script', + 'args' => array_merge( + array( 'module-deps-async-register' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + 'strategy' => 'async', + ), + ) + ), + 'should_warn' => true, + ), + 'enqueue_async_warns' => array( + 'function_name' => 'wp_enqueue_script', + 'args' => array_merge( + array( 'module-deps-async-enqueue' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + 'strategy' => 'async', + ), + ) + ), + 'should_warn' => true, + ), + 'register_in_footer_does_not_warn' => array( + 'function_name' => 'wp_register_script', + 'args' => array_merge( + array( 'module-deps-footer-register' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + 'in_footer' => true, + ), + ) + ), + 'should_warn' => false, + ), + 'enqueue_in_footer_does_not_warn' => array( + 'function_name' => 'wp_enqueue_script', + 'args' => array_merge( + array( 'module-deps-footer-enqueue' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + 'in_footer' => true, + ), + ) + ), + 'should_warn' => false, + ), + 'register_defer_does_not_warn' => array( + 'function_name' => 'wp_register_script', + 'args' => array_merge( + array( 'module-deps-defer-register' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + 'strategy' => 'defer', + ), + ) + ), + 'should_warn' => false, + ), + 'enqueue_defer_does_not_warn' => array( + 'function_name' => 'wp_enqueue_script', + 'args' => array_merge( + array( 'module-deps-defer-enqueue' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + 'strategy' => 'defer', + ), + ) + ), + 'should_warn' => false, + ), + 'register_footer_and_defer_no_warn' => array( + 'function_name' => 'wp_register_script', + 'args' => array_merge( + array( 'module-deps-footer-defer-register' ), + $base_args, + array( + array( + 'module_dependencies' => array( 'foo' ), + 'in_footer' => true, + 'strategy' => 'defer', + ), + ) + ), + 'should_warn' => false, + ), + 'register_no_module_deps_no_warn' => array( + 'function_name' => 'wp_register_script', + 'args' => array_merge( + array( 'no-module-deps-register' ), + $base_args, + array( array() ) + ), + 'should_warn' => false, + ), + 'register_empty_module_deps_no_warn' => array( + 'function_name' => 'wp_register_script', + 'args' => array_merge( + array( 'empty-module-deps-register' ), + $base_args, + array( + array( + 'module_dependencies' => array(), + ), + ) + ), + 'should_warn' => false, + ), + ); + } + /** * Data provider. * @@ -3169,6 +3400,7 @@ public function test_wp_enqueue_code_editor_when_php_file_will_be_passed() { 'unused', 'browser', 'globals', + 'espreeModuleUrl', ), array_keys( $wp_enqueue_code_editor['jshint'] ) ); @@ -3252,6 +3484,7 @@ public function test_wp_enqueue_code_editor_when_generated_array_by_compact_will 'unused', 'browser', 'globals', + 'espreeModuleUrl', ), array_keys( $wp_enqueue_code_editor['jshint'] ) ); @@ -3349,6 +3582,7 @@ public function test_wp_enqueue_code_editor_when_generated_array_by_array_merge_ 'unused', 'browser', 'globals', + 'espreeModuleUrl', ), array_keys( $wp_enqueue_code_editor['jshint'] ) ); @@ -3443,6 +3677,7 @@ public function test_wp_enqueue_code_editor_when_simple_array_will_be_passed() { 'unused', 'browser', 'globals', + 'espreeModuleUrl', ), array_keys( $wp_enqueue_code_editor['jshint'] ) ); diff --git a/tests/phpunit/tests/script-modules/wpScriptModules.php b/tests/phpunit/tests/script-modules/wpScriptModules.php index 330736431dffd..09b5a91e2896f 100644 --- a/tests/phpunit/tests/script-modules/wpScriptModules.php +++ b/tests/phpunit/tests/script-modules/wpScriptModules.php @@ -2041,6 +2041,7 @@ public function test_included_module_appears_in_importmap() { array( 'classic-dependency' ), false, array( + 'strategy' => 'defer', 'module_dependencies' => array( 'example', array( @@ -2109,6 +2110,7 @@ public function test_import_map_includes_dependencies_of_classic_scripts_recursi array(), false, array( + 'in_footer' => true, 'module_dependencies' => array( 'classic-transitive-dependency' ), ) ); @@ -2118,6 +2120,7 @@ public function test_import_map_includes_dependencies_of_classic_scripts_recursi array( 'classic-transitive-dep' ), false, array( + 'in_footer' => true, 'module_dependencies' => array( 'not-enqueued' ), ) ); @@ -2153,6 +2156,7 @@ public function test_wp_scripts_doing_it_wrong_for_missing_script_module_depende array(), null, array( + 'strategy' => 'defer', 'module_dependencies' => array( 'does-not-exist' ), ) ); From 31a8ce49797f926956b277e18686890136ab584a Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sat, 16 May 2026 23:45:50 +0000 Subject: [PATCH 084/327] Tests: Add unit tests for `wp_doc_link_parse()`. Follow-up to [10607]. Props pbearne. Fixes #65182. git-svn-id: https://develop.svn.wordpress.org/trunk@62369 602fd350-edb4-49c9-b593-d223f7449a82 --- .../includes/misc/WpDocLinkParse_Test.php | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 tests/phpunit/tests/admin/includes/misc/WpDocLinkParse_Test.php diff --git a/tests/phpunit/tests/admin/includes/misc/WpDocLinkParse_Test.php b/tests/phpunit/tests/admin/includes/misc/WpDocLinkParse_Test.php new file mode 100644 index 0000000000000..298cd3d77cbac --- /dev/null +++ b/tests/phpunit/tests/admin/includes/misc/WpDocLinkParse_Test.php @@ -0,0 +1,103 @@ +assertSame( $expected, wp_doc_link_parse( $content ) ); + } + + /** + * Data provider for test_wp_doc_link_parse(). + * + * @return array + */ + public function data_wp_doc_link_parse(): array { + return array( + 'empty string' => array( + 'content' => '', + 'expected' => array(), + ), + 'null (invalid type)' => array( + 'content' => null, + 'expected' => array(), + ), + 'simple function call' => array( + 'content' => '', + 'expected' => array( 'get_header' ), + ), + 'multiple unique functions' => array( + 'content' => '', + 'expected' => array( 'get_header', 'wp_footer' ), + ), + 'duplicate functions' => array( + 'content' => '', + 'expected' => array( '_e' ), + ), + 'function call with space' => array( + 'content' => '', + 'expected' => array( 'is_array' ), + ), + 'sorted output' => array( + 'content' => '', + 'expected' => array( 'alpha', 'zeta' ), + ), + 'local function definition' => array( + 'content' => '', + 'expected' => array(), + ), + 'class method call' => array( + 'content' => 'my_method(); ?>', + 'expected' => array(), + ), + 'static class method call' => array( + 'content' => '', + 'expected' => array( 'my_static_method' ), // token_get_all() handles :: differently. + ), + 'mixed content' => array( + 'content' => 'method(); + esc_html( "test" ); + ?>', + 'expected' => array( 'esc_html', 'wp_remote_get' ), + ), + ); + } + + /** + * Tests the `documentation_ignore_functions` filter. + * + * @ticket 65182 + */ + public function test_wp_doc_link_parse_filter() { + $filter = function ( $ignore ) { + $ignore[] = 'wp_remote_get'; + return $ignore; + }; + + add_filter( 'documentation_ignore_functions', $filter ); + $result = wp_doc_link_parse( '' ); + remove_filter( 'documentation_ignore_functions', $filter ); + + $this->assertSame( array( 'esc_html' ), $result ); + } +} From 5a96ff4d54a97955b02ac3c20f3ae7f21185232f Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sun, 17 May 2026 22:50:21 +0000 Subject: [PATCH 085/327] Tests: Correct some test class names. Follow-up to [62313], [62352], [62366]. See #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62370 602fd350-edb4-49c9-b593-d223f7449a82 --- .../admin/includes/misc/CustomizerMobileViewportMeta_Test.php | 2 +- .../admin/includes/misc/UpdateOptionNewAdminEmail_Test.php | 2 +- tests/phpunit/tests/admin/includes/misc/UrlShorten_Test.php | 2 +- .../tests/admin/includes/misc/WpAdminViewportMeta_Test.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/phpunit/tests/admin/includes/misc/CustomizerMobileViewportMeta_Test.php b/tests/phpunit/tests/admin/includes/misc/CustomizerMobileViewportMeta_Test.php index 4a7f5cda98875..fd29f47220568 100644 --- a/tests/phpunit/tests/admin/includes/misc/CustomizerMobileViewportMeta_Test.php +++ b/tests/phpunit/tests/admin/includes/misc/CustomizerMobileViewportMeta_Test.php @@ -5,7 +5,7 @@ * * @covers ::_customizer_mobile_viewport_meta */ -class Tests_Admin_Includes_Misc_Customizer_Mobile_Viewport_Meta_Test extends WP_UnitTestCase { +class Tests_Admin_Includes_Misc_CustomizerMobileViewportMeta_Test extends WP_UnitTestCase { /** * Tests _customizer_mobile_viewport_meta(). diff --git a/tests/phpunit/tests/admin/includes/misc/UpdateOptionNewAdminEmail_Test.php b/tests/phpunit/tests/admin/includes/misc/UpdateOptionNewAdminEmail_Test.php index 8dd2c48e85da0..1a9a42da77258 100644 --- a/tests/phpunit/tests/admin/includes/misc/UpdateOptionNewAdminEmail_Test.php +++ b/tests/phpunit/tests/admin/includes/misc/UpdateOptionNewAdminEmail_Test.php @@ -5,7 +5,7 @@ * * @covers ::update_option_new_admin_email */ -class Admin_Includes_Misc_UpdateOptionNewAdminEmail_Test extends WP_UnitTestCase { +class Tests_Admin_Includes_Misc_UpdateOptionNewAdminEmail_Test extends WP_UnitTestCase { /** * @ticket 59520 diff --git a/tests/phpunit/tests/admin/includes/misc/UrlShorten_Test.php b/tests/phpunit/tests/admin/includes/misc/UrlShorten_Test.php index f5ddd943fed5b..8146f4f3b0e40 100644 --- a/tests/phpunit/tests/admin/includes/misc/UrlShorten_Test.php +++ b/tests/phpunit/tests/admin/includes/misc/UrlShorten_Test.php @@ -5,7 +5,7 @@ * * @covers ::url_shorten */ -class Admin_Includes_Misc_UrlShorten_Test extends WP_UnitTestCase { +class Tests_Admin_Includes_Misc_UrlShorten_Test extends WP_UnitTestCase { public function test_url_shorten() { $tests = array( diff --git a/tests/phpunit/tests/admin/includes/misc/WpAdminViewportMeta_Test.php b/tests/phpunit/tests/admin/includes/misc/WpAdminViewportMeta_Test.php index d651d4d1206e3..4323afb3ece45 100644 --- a/tests/phpunit/tests/admin/includes/misc/WpAdminViewportMeta_Test.php +++ b/tests/phpunit/tests/admin/includes/misc/WpAdminViewportMeta_Test.php @@ -5,7 +5,7 @@ * * @covers ::wp_admin_viewport_meta */ -class Tests_Admin_Includes_Misc_Wp_Admin_Viewport_Meta_Test extends WP_UnitTestCase { +class Tests_Admin_Includes_Misc_WpAdminViewportMeta_Test extends WP_UnitTestCase { /** * Tests wp_admin_viewport_meta() output. From 5307e2da177a4e964aad0500bd9133b5cb22454b Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Mon, 18 May 2026 22:35:25 +0000 Subject: [PATCH 086/327] Tests: Add unit tests for `wp_admin_canonical_url()`. Follow-up to [31736]. Props pbearne. Fixes #65192. git-svn-id: https://develop.svn.wordpress.org/trunk@62371 602fd350-edb4-49c9-b593-d223f7449a82 --- .../misc/WpAdminCanonicalUrl_Test.php | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 tests/phpunit/tests/admin/includes/misc/WpAdminCanonicalUrl_Test.php diff --git a/tests/phpunit/tests/admin/includes/misc/WpAdminCanonicalUrl_Test.php b/tests/phpunit/tests/admin/includes/misc/WpAdminCanonicalUrl_Test.php new file mode 100644 index 0000000000000..bf51c161e85c1 --- /dev/null +++ b/tests/phpunit/tests/admin/includes/misc/WpAdminCanonicalUrl_Test.php @@ -0,0 +1,133 @@ +server_orig = $_SERVER; + } + + public function tear_down() { + $_SERVER = $this->server_orig; + + parent::tear_down(); + } + + /** + * Tests wp_admin_canonical_url(). + * + * @ticket 65192 + * + * @dataProvider data_wp_admin_canonical_url + * + * @param array $server_vars `$_SERVER` variables to set. + * @param string $expected Expected output substring. + */ + public function test_wp_admin_canonical_url( array $server_vars, $expected ) { + foreach ( $server_vars as $key => $value ) { + $_SERVER[ $key ] = $value; + } + + ob_start(); + wp_admin_canonical_url(); + $output = ob_get_clean(); + + $this->assertStringContainsString( $expected, $output ); + $this->assertStringContainsString( '', + ), + 'cross-origin audio' => array( + '', + ), + 'cross-origin video' => array( + '', + ), + 'cross-origin link stylesheet' => array( + '', + ), + 'cross-origin source inside video' => array( + '', + ), + ); + } + + /** + * Verifies that certain elements do not get crossorigin="anonymous" added. + * + * Images are excluded because under Document-Isolation-Policy: + * isolate-and-credentialless, the browser handles cross-origin images + * in credentialless mode without needing explicit CORS headers. + * + * @ticket 64766 + * + * @runInSeparateProcess + * @preserveGlobalState disabled + * + * @dataProvider data_elements_that_should_not_get_crossorigin + * + * @param string $html HTML input to process. + */ + public function test_output_buffer_does_not_add_crossorigin( $html ) { + $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'; + + ob_start(); + + wp_start_cross_origin_isolation_output_buffer(); + echo $html; + + ob_end_flush(); + $output = ob_get_clean(); + + $this->assertStringNotContainsString( 'crossorigin="anonymous"', $output ); + } + + /** + * Data provider for elements that should not receive crossorigin="anonymous". + * + * @return array[] + */ + public function data_elements_that_should_not_get_crossorigin() { + return array( + 'cross-origin img' => array( + '', + ), + 'cross-origin img with srcset' => array( + '', + ), + 'link with cross-origin imagesrcset only' => array( + '', + ), + 'relative URL script' => array( + '', + ), + ); + } + + /** + * Same-origin URLs should not get crossorigin="anonymous". + * + * Uses site_url() at runtime since the test domain varies by CI config. + * + * @ticket 64766 + * + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function test_output_buffer_does_not_add_crossorigin_to_same_origin() { + $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'; + + ob_start(); + + wp_start_cross_origin_isolation_output_buffer(); + echo ''; + + ob_end_flush(); + $output = ob_get_clean(); + + $this->assertStringNotContainsString( 'crossorigin="anonymous"', $output ); + } + + /** + * Elements that already have a crossorigin attribute should not be modified. + * + * @ticket 64766 + * + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function test_output_buffer_does_not_override_existing_crossorigin() { + $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'; + + ob_start(); + + wp_start_cross_origin_isolation_output_buffer(); + echo ''; + + ob_end_flush(); + $output = ob_get_clean(); + + $this->assertStringContainsString( 'crossorigin="use-credentials"', $output, 'Existing crossorigin attribute should not be overridden.' ); + $this->assertStringNotContainsString( 'crossorigin="anonymous"', $output ); + } + + /** + * Multiple tags in the same output should each be handled correctly. + * + * @ticket 64766 + * + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function test_output_buffer_handles_mixed_tags() { + $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'; + + ob_start(); + + wp_start_cross_origin_isolation_output_buffer(); + echo ''; + echo ''; + echo ''; + + ob_end_flush(); + $output = ob_get_clean(); + + // IMG should NOT have crossorigin. + $this->assertStringContainsString( '', $output, 'IMG should not be modified.' ); + + // Script and audio should have crossorigin. + $this->assertSame( 2, substr_count( $output, 'crossorigin="anonymous"' ), 'Script and audio should both get crossorigin, but not img.' ); + } +} diff --git a/tests/phpunit/tests/media/wpGetChromiumMajorVersion.php b/tests/phpunit/tests/media/wpGetChromiumMajorVersion.php new file mode 100644 index 0000000000000..7249d9b91b665 --- /dev/null +++ b/tests/phpunit/tests/media/wpGetChromiumMajorVersion.php @@ -0,0 +1,69 @@ +original_user_agent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : null; + } + + public function tear_down() { + if ( null === $this->original_user_agent ) { + unset( $_SERVER['HTTP_USER_AGENT'] ); + } else { + $_SERVER['HTTP_USER_AGENT'] = $this->original_user_agent; + } + parent::tear_down(); + } + + /** + * @ticket 64766 + */ + public function test_returns_null_when_no_user_agent() { + unset( $_SERVER['HTTP_USER_AGENT'] ); + $this->assertNull( wp_get_chromium_major_version() ); + } + + /** + * @ticket 64766 + * + * @dataProvider data_user_agents + * + * @param string $user_agent The user agent string. + * @param int|null $expected The expected Chromium major version, or null. + */ + public function test_returns_expected_version( $user_agent, $expected ) { + $_SERVER['HTTP_USER_AGENT'] = $user_agent; + $this->assertSame( $expected, wp_get_chromium_major_version() ); + } + + /** + * Data provider for test_returns_expected_version. + * + * @return array[] + */ + public function data_user_agents() { + return array( + 'empty user agent' => array( '', null ), + 'Firefox' => array( 'Mozilla/5.0 (Windows NT 10.0; rv:128.0) Gecko/20100101 Firefox/128.0', null ), + 'Safari' => array( 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15', null ), + 'Chrome 137' => array( 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36', 137 ), + 'Edge 137' => array( 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 137 ), + 'Opera (Chrome 136)' => array( 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 OPR/122.0.0.0', 136 ), + 'Chrome 100' => array( 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36', 100 ), + ); + } +} diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php index c8746931ed30a..79e9d23cf9dd3 100644 --- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php @@ -194,6 +194,18 @@ public function tear_down() { parent::tear_down(); } + /** + * Enables client-side media processing and reinitializes the REST server + * so that the sideload and finalize routes are registered. + */ + private function enable_client_side_media_processing(): void { + add_filter( 'wp_client_side_media_processing_enabled', '__return_true' ); + + global $wp_rest_server; + $wp_rest_server = new Spy_REST_Server(); + do_action( 'rest_api_init', $wp_rest_server ); + } + public function test_register_routes() { $routes = rest_get_server()->get_routes(); $this->assertArrayHasKey( '/wp/v2/media', $routes ); @@ -2929,6 +2941,43 @@ public function test_upload_unsupported_image_type_with_filter() { $this->assertSame( 201, $response->get_status() ); } + /** + * Test that unsupported image type check is skipped when not generating sub-sizes. + * + * When the client handles image processing (generate_sub_sizes is false), + * the server should not check image editor support. + * + * Tests the permissions check directly with file params set, since the core + * check uses get_file_params() which is only populated for multipart uploads. + * + * @ticket 64836 + */ + public function test_upload_unsupported_image_type_skipped_when_not_generating_sub_sizes() { + wp_set_current_user( self::$author_id ); + + add_filter( 'wp_image_editors', '__return_empty_array' ); + + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_file_params( + array( + 'file' => array( + 'name' => 'avif-lossy.avif', + 'type' => 'image/avif', + 'tmp_name' => self::$test_avif_file, + 'error' => 0, + 'size' => filesize( self::$test_avif_file ), + ), + ) + ); + $request->set_param( 'generate_sub_sizes', false ); + + $controller = new WP_REST_Attachments_Controller( 'attachment' ); + $result = $controller->create_item_permissions_check( $request ); + + // Should pass because generate_sub_sizes is false (client handles processing). + $this->assertTrue( $result ); + } + /** * Test that unsupported image type check is enforced when generating sub-sizes. * @@ -3191,4 +3240,305 @@ static function ( $data ) use ( &$captured_data ) { // Verify that the data is an array (not an object). $this->assertIsArray( $captured_data, 'Data passed to wp_insert_attachment should be an array' ); } + + /** + * Tests sideloading a scaled image for an existing attachment. + * + * @ticket 64737 + * @requires function imagejpeg + */ + public function test_sideload_scaled_image() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // First, create an attachment. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + $attachment_id = $data['id']; + + $this->assertSame( 201, $response->get_status() ); + + $original_file = get_attached_file( $attachment_id, true ); + + // Sideload a "scaled" version of the image. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-scaled.jpg' ); + $request->set_param( 'image_size', 'scaled' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Sideloading scaled image should succeed.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id ); + + // The original file should now be recorded as original_image. + $this->assertArrayHasKey( 'original_image', $metadata, 'Metadata should contain original_image.' ); + $this->assertSame( wp_basename( $original_file ), $metadata['original_image'], 'original_image should be the basename of the original attached file.' ); + + // The attached file should now point to the scaled version. + $new_file = get_attached_file( $attachment_id, true ); + $this->assertStringContainsString( 'scaled', wp_basename( $new_file ), 'Attached file should now be the scaled version.' ); + + // Metadata should have width, height, filesize, and file updated. + $this->assertArrayHasKey( 'width', $metadata, 'Metadata should contain width.' ); + $this->assertArrayHasKey( 'height', $metadata, 'Metadata should contain height.' ); + $this->assertArrayHasKey( 'filesize', $metadata, 'Metadata should contain filesize.' ); + $this->assertArrayHasKey( 'file', $metadata, 'Metadata should contain file.' ); + $this->assertStringContainsString( 'scaled', $metadata['file'], 'Metadata file should reference the scaled version.' ); + $this->assertGreaterThan( 0, $metadata['width'], 'Width should be positive.' ); + $this->assertGreaterThan( 0, $metadata['height'], 'Height should be positive.' ); + $this->assertGreaterThan( 0, $metadata['filesize'], 'Filesize should be positive.' ); + } + + /** + * Tests that sideloading scaled image requires authentication. + * + * @ticket 64737 + * @requires function imagejpeg + */ + public function test_sideload_scaled_image_requires_auth() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + // Try sideloading without authentication. + wp_set_current_user( 0 ); + + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-scaled.jpg' ); + $request->set_param( 'image_size', 'scaled' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertErrorResponse( 'rest_cannot_edit_image', $response, 401 ); + } + + /** + * Tests that the sideload endpoint includes 'scaled' in the image_size enum. + * + * @ticket 64737 + */ + public function test_sideload_route_includes_scaled_enum() { + $this->enable_client_side_media_processing(); + + $server = rest_get_server(); + $routes = $server->get_routes(); + + $endpoint = '/wp/v2/media/(?P[\d]+)/sideload'; + $this->assertArrayHasKey( $endpoint, $routes, 'Sideload route should exist.' ); + + $route = $routes[ $endpoint ]; + $endpoint = $route[0]; + $args = $endpoint['args']; + + $param_name = 'image_size'; + $this->assertArrayHasKey( $param_name, $args, 'Route should have image_size arg.' ); + $this->assertContains( 'scaled', $args[ $param_name ]['enum'], 'image_size enum should include scaled.' ); + } + + /** + * Tests the filter_wp_unique_filename method handles the -scaled suffix. + * + * @ticket 64737 + * @requires function imagejpeg + */ + public function test_sideload_scaled_unique_filename() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + // Sideload with the -scaled suffix. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-scaled.jpg' ); + $request->set_param( 'image_size', 'scaled' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Sideloading scaled image should succeed.' ); + + // The filename should retain the -scaled suffix without numeric disambiguation. + $new_file = get_attached_file( $attachment_id, true ); + $basename = wp_basename( $new_file ); + $this->assertMatchesRegularExpression( '/canola-scaled\.jpg$/', $basename, 'Scaled filename should not have numeric suffix appended.' ); + } + + /** + * Tests that sideloading a scaled image for a different attachment retains the numeric suffix + * when a file with the same name already exists on disk. + * + * @ticket 64737 + * @requires function imagejpeg + */ + public function test_sideload_scaled_unique_filename_conflict() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create the first attachment. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id_a = $response->get_data()['id']; + + // Sideload a scaled image for attachment A, creating canola-scaled.jpg on disk. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id_a}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-scaled.jpg' ); + $request->set_param( 'image_size', 'scaled' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'First sideload should succeed.' ); + + // Create a second, different attachment. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=other.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id_b = $response->get_data()['id']; + + // Sideload scaled for attachment B using the same filename that already exists on disk. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id_b}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-scaled.jpg' ); + $request->set_param( 'image_size', 'scaled' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Second sideload should succeed.' ); + + // The filename should have a numeric suffix since the base name does not match this attachment. + $new_file = get_attached_file( $attachment_id_b, true ); + $basename = wp_basename( $new_file ); + $this->assertMatchesRegularExpression( '/canola-scaled-\d+\.jpg$/', $basename, 'Scaled filename should have numeric suffix when file conflicts with a different attachment.' ); + } + + /** + * Tests that the finalize endpoint triggers wp_generate_attachment_metadata. + * + * @ticket 62243 + * @covers WP_REST_Attachments_Controller::finalize_item + * @requires function imagejpeg + */ + public function test_finalize_item(): void { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + $this->assertSame( 201, $response->get_status() ); + + // Track whether wp_generate_attachment_metadata filter fires. + $filter_metadata = null; + $filter_id = null; + $filter_context = null; + add_filter( + 'wp_generate_attachment_metadata', + function ( array $metadata, int $id, string $context ) use ( &$filter_metadata, &$filter_id, &$filter_context ) { + $filter_metadata = $metadata; + $filter_id = $id; + $filter_context = $context; + $metadata['foo'] = 'bar'; + return $metadata; + }, + 10, + 3 + ); + + // Call the finalize endpoint. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Finalize endpoint should return 200.' ); + $this->assertIsArray( $filter_metadata ); + $this->assertStringContainsString( 'canola', $filter_metadata['file'], 'Expected the canola image to have been had its metadata updated.' ); + $this->assertSame( $attachment_id, $filter_id, 'Expected the post ID to be passed to the filter.' ); + $this->assertSame( 'update', $filter_context, 'Filter context should be "update".' ); + $resulting_metadata = wp_get_attachment_metadata( $attachment_id ); + $this->assertIsArray( $resulting_metadata ); + $this->assertArrayHasKey( 'foo', $resulting_metadata, 'Expected new metadata key to have been added.' ); + $this->assertSame( 'bar', $resulting_metadata['foo'], 'Expected filtered metadata to be updated.' ); + } + + /** + * Tests that the finalize endpoint requires authentication. + * + * @ticket 62243 + * @covers WP_REST_Attachments_Controller::finalize_item + * @requires function imagejpeg + */ + public function test_finalize_item_requires_auth(): void { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + // Try finalizing without authentication. + wp_set_current_user( 0 ); + + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertErrorResponse( 'rest_cannot_edit_image', $response, 401 ); + } + + /** + * Tests that the finalize endpoint returns error for invalid attachment ID. + * + * @ticket 62243 + * @covers WP_REST_Attachments_Controller::finalize_item + */ + public function test_finalize_item_invalid_id(): void { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + $invalid_id = PHP_INT_MAX; + $this->assertNull( get_post( $invalid_id ), 'Expected invalid ID to not exist for an existing post.' ); + $request = new WP_REST_Request( 'POST', "/wp/v2/media/$invalid_id/finalize" ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertErrorResponse( 'rest_post_invalid_id', $response, 404 ); + } } diff --git a/tests/phpunit/tests/rest-api/rest-schema-setup.php b/tests/phpunit/tests/rest-api/rest-schema-setup.php index 9c6c431e5ef35..89bf2c481c567 100644 --- a/tests/phpunit/tests/rest-api/rest-schema-setup.php +++ b/tests/phpunit/tests/rest-api/rest-schema-setup.php @@ -16,6 +16,9 @@ class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { public function set_up() { parent::set_up(); + // Ensure client-side media processing is enabled so the sideload route is registered. + add_filter( 'wp_client_side_media_processing_enabled', '__return_true' ); + /** @var WP_REST_Server $wp_rest_server */ global $wp_rest_server; $wp_rest_server = new Spy_REST_Server(); @@ -109,6 +112,8 @@ public function test_expected_routes_in_schema() { '/wp/v2/media/(?P[\\d]+)', '/wp/v2/media/(?P[\\d]+)/post-process', '/wp/v2/media/(?P[\\d]+)/edit', + '/wp/v2/media/(?P[\\d]+)/sideload', + '/wp/v2/media/(?P[\\d]+)/finalize', '/wp/v2/blocks', '/wp/v2/blocks/(?P[\d]+)', '/wp/v2/blocks/(?P[\d]+)/autosaves', diff --git a/tests/phpunit/tests/script-modules/wpScriptModules.php b/tests/phpunit/tests/script-modules/wpScriptModules.php index 09b5a91e2896f..fb78d61d145ee 100644 --- a/tests/phpunit/tests/script-modules/wpScriptModules.php +++ b/tests/phpunit/tests/script-modules/wpScriptModules.php @@ -1904,22 +1904,24 @@ public function test_dependent_of_default_script_modules() { } /** - * Tests that VIPS script modules are not registered in Core. + * Tests that VIPS script modules always use minified file paths. * - * The wasm-vips library is plugin-only and should not be included - * in WordPress Core builds due to its large size (~16MB per file). + * Non-minified VIPS files are not shipped because they are ~10MB of + * inlined WASM with no debugging value, so the registration should + * always point to the .min.js variants. * - * @ticket 64906 + * @ticket 64734 * * @covers ::wp_default_script_modules */ - public function test_vips_script_modules_not_registered_in_core() { + public function test_vips_script_modules_always_use_minified_paths() { wp_default_script_modules(); wp_enqueue_script_module( '@wordpress/vips/loader' ); $actual = get_echo( array( wp_script_modules(), 'print_enqueued_script_modules' ) ); - $this->assertStringNotContainsString( 'vips', $actual ); + $this->assertStringContainsString( 'vips/loader.min.js', $actual ); + $this->assertStringNotContainsString( 'vips/loader.js"', $actual ); } /** diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js index 795c7e3db8e32..fa03d9751fe99 100644 --- a/tests/qunit/fixtures/wp-api-generated.js +++ b/tests/qunit/fixtures/wp-api-generated.js @@ -3148,6 +3148,18 @@ mockedApiResponse.Schema = { "description": "The ID for the associated post of the attachment.", "type": "integer", "required": false + }, + "generate_sub_sizes": { + "type": "boolean", + "default": true, + "description": "Whether to generate image sub sizes.", + "required": false + }, + "convert_format": { + "type": "boolean", + "default": true, + "description": "Whether to convert image formats.", + "required": false } } } @@ -3664,6 +3676,68 @@ mockedApiResponse.Schema = { } ] }, + "/wp/v2/media/(?P[\\d]+)/sideload": { + "namespace": "wp/v2", + "methods": [ + "POST" + ], + "endpoints": [ + { + "methods": [ + "POST" + ], + "args": { + "id": { + "description": "Unique identifier for the attachment.", + "type": "integer", + "required": false + }, + "image_size": { + "description": "Image size.", + "type": "string", + "enum": [ + "thumbnail", + "medium", + "medium_large", + "large", + "1536x1536", + "2048x2048", + "original", + "full", + "scaled" + ], + "required": true + }, + "convert_format": { + "type": "boolean", + "default": true, + "description": "Whether to convert image formats.", + "required": false + } + } + } + ] + }, + "/wp/v2/media/(?P[\\d]+)/finalize": { + "namespace": "wp/v2", + "methods": [ + "POST" + ], + "endpoints": [ + { + "methods": [ + "POST" + ], + "args": { + "id": { + "description": "Unique identifier for the attachment.", + "type": "integer", + "required": false + } + } + } + ] + }, "/wp/v2/menu-items": { "namespace": "wp/v2", "methods": [ @@ -12699,6 +12773,43 @@ mockedApiResponse.Schema = { ] } }, + "image_sizes": { + "thumbnail": { + "width": 150, + "height": 150, + "crop": true + }, + "medium": { + "width": 300, + "height": 300, + "crop": false + }, + "medium_large": { + "width": 768, + "height": 0, + "crop": false + }, + "large": { + "width": 1024, + "height": 1024, + "crop": false + }, + "1536x1536": { + "width": 1536, + "height": 1536, + "crop": false + }, + "2048x2048": { + "width": 2048, + "height": 2048, + "crop": false + } + }, + "image_size_threshold": 2560, + "image_output_formats": {}, + "jpeg_interlaced": false, + "png_interlaced": false, + "gif_interlaced": false, "site_logo": 0, "site_icon": 0, "site_icon_url": "" diff --git a/tools/gutenberg/copy.js b/tools/gutenberg/copy.js index b3c4b7f9aa9ba..8589c9581bed1 100644 --- a/tools/gutenberg/copy.js +++ b/tools/gutenberg/copy.js @@ -237,10 +237,6 @@ function generateScriptModulesPackages() { const fullPath = path.join( dir, entry.name ); if ( entry.isDirectory() ) { - // Skip plugin-only packages (e.g., vips/wasm) that should not be in Core. - if ( entry.name === 'vips' ) { - continue; - } processDirectory( fullPath, baseDir ); } else if ( entry.name.endsWith( '.min.asset.php' ) ) { const relativePath = path.relative( baseDir, fullPath ); @@ -326,17 +322,6 @@ function generateScriptLoaderPackages() { assetData.dependencies = []; } - // Strip plugin-only module dependencies (e.g., vips) that are not in Core. - if ( Array.isArray( assetData.module_dependencies ) ) { - assetData.module_dependencies = - assetData.module_dependencies.filter( - ( dep ) => - ! ( dep.id || dep ).startsWith( - '@wordpress/vips' - ) - ); - } - assets[ `${ entry.name }.js` ] = assetData; } catch ( error ) { console.error( From 75fc4e9f0eb6ec211b1d95e2bd80683fc36c5090 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Thu, 28 May 2026 22:43:05 +0000 Subject: [PATCH 128/327] Docs: Fix typo in `WP_Query` post-loading comment. Follow-up to [59993]. Props parinpanjari, gaurangsondagar, westonruter, SergeyBiryukov. Fixes #65113. git-svn-id: https://develop.svn.wordpress.org/trunk@62429 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-query.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php index cf07b07d977c3..c9bf901ae1576 100644 --- a/src/wp-includes/class-wp-query.php +++ b/src/wp-includes/class-wp-query.php @@ -3803,7 +3803,7 @@ function ( $carry, $post ) { $post = get_post( $post ); } elseif ( isset( $post->ID ) ) { /* - * Partial objecct queried. + * Partial object queried. * * The post object was queried with a partial set of * fields, populate the entire object for the loop. From baf80d458b27561398a7cf9c43160a345e86ed5c Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Fri, 29 May 2026 11:07:22 +0000 Subject: [PATCH 129/327] Docs: Remove duplicate documentation for the `rest_block_hooks_post_types` hook. See #62715, #64896 git-svn-id: https://develop.svn.wordpress.org/trunk@62430 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-wp-rest-posts-controller.php | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php index 0ab54a3a0d384..59d507aebf453 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php @@ -1501,9 +1501,9 @@ protected function prepare_item_for_database( $request ) { * * @since 7.0.0 * - * @param array $content_like_post_types Array of post type names that support Block Hooks. - * @param string $post_type The current post type being processed. - * @param object $prepared_post The prepared post object. + * @param string[] $content_like_post_types Array of post type names that support Block Hooks. + * @param string $post_type The current post type being processed. + * @param stdClass|WP_Post $prepared_post The prepared post object. */ $content_like_post_types = apply_filters( 'rest_block_hooks_post_types', $content_like_post_types, $this->post_type, $prepared_post ); @@ -2172,18 +2172,7 @@ public function prepare_item_for_response( $item, $request ) { */ $content_like_post_types = array( 'post', 'page', 'wp_block', 'wp_navigation' ); - /** - * Filters which post types should have Block Hooks applied. - * - * Allows themes and plugins to add or remove post types that should - * have Block Hooks functionality enabled in the REST API. - * - * @since 7.0.0 - * - * @param array $content_like_post_types Array of post type names that support Block Hooks. - * @param string $post_type The current post type being processed. - * @param WP_Post $post The post object. - */ + /** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php */ $content_like_post_types = apply_filters( 'rest_block_hooks_post_types', $content_like_post_types, $this->post_type, $post ); if ( in_array( $this->post_type, $content_like_post_types, true ) ) { From c1e87527cf0d252251ef5113765ca70dff71604d Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Fri, 29 May 2026 23:24:22 +0000 Subject: [PATCH 130/327] Docs: Correct some typos in JS inline comments and DocBlocks. Props parinpanjari, dmsnell, westonruter, SergeyBiryukov. Fixes #65112. git-svn-id: https://develop.svn.wordpress.org/trunk@62431 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/_enqueues/lib/admin-bar.js | 2 +- src/js/_enqueues/wp/api.js | 4 ++-- src/js/_enqueues/wp/customize/controls.js | 2 +- src/js/_enqueues/wp/customize/nav-menus.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/js/_enqueues/lib/admin-bar.js b/src/js/_enqueues/lib/admin-bar.js index eb18c61f8b5b8..619694db37f5c 100644 --- a/src/js/_enqueues/lib/admin-bar.js +++ b/src/js/_enqueues/lib/admin-bar.js @@ -417,7 +417,7 @@ }; } - // Get the closest matching elent. + // Get the closest matching element. for ( ; el && el !== document; el = el.parentNode ) { if ( el.matches( selector ) ) { return el; diff --git a/src/js/_enqueues/wp/api.js b/src/js/_enqueues/wp/api.js index 1d0baea8cdf28..9e11ff242fdc9 100644 --- a/src/js/_enqueues/wp/api.js +++ b/src/js/_enqueues/wp/api.js @@ -983,7 +983,7 @@ }, /** - * Extend Backbone.Collection.sync to add nince and pagination support. + * Extend Backbone.Collection.sync to add nonce and pagination support. * * Set nonce header before every Backbone sync. * @@ -1288,7 +1288,7 @@ parentName = wp.api.utils.extractRoutePart( modelRoute.index, 1, routeModel.get( 'versionString' ), false ), routeEnd = wp.api.utils.extractRoutePart( modelRoute.index, 1, routeModel.get( 'versionString' ), true ); - // Clear the parent part of the rouite if its actually the version string. + // Clear the parent part of the route if it's actually the version string. if ( parentName === routeModel.get( 'versionString' ) ) { parentName = ''; } diff --git a/src/js/_enqueues/wp/customize/controls.js b/src/js/_enqueues/wp/customize/controls.js index 921983e6bf78d..a5846d45f687c 100644 --- a/src/js/_enqueues/wp/customize/controls.js +++ b/src/js/_enqueues/wp/customize/controls.js @@ -590,7 +590,7 @@ return deferred.reject( { code: 'illegal_status_in_changeset_update' } ).promise(); } - // Dates not beung allowed for revisions are is a technical limitation of post revisions. + // Dates not being allowed for revisions is a technical limitation of post revisions. if ( submittedArgs.date && submittedArgs.autosave ) { return deferred.reject( { code: 'illegal_autosave_with_date_gmt' } ).promise(); } diff --git a/src/js/_enqueues/wp/customize/nav-menus.js b/src/js/_enqueues/wp/customize/nav-menus.js index 73e17df23aec5..607740014e5e4 100644 --- a/src/js/_enqueues/wp/customize/nav-menus.js +++ b/src/js/_enqueues/wp/customize/nav-menus.js @@ -3539,7 +3539,7 @@ /** * Apply sanitize_text_field()-like logic to the supplied name, returning a - * "unnammed" fallback string if the name is then empty. + * "unnamed" fallback string if the name is then empty. * * @alias wp.customize.Menus~displayNavMenuName * From f19efd0e5b3cb774a330f16d2eb3486fbd743624 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sat, 30 May 2026 19:07:47 +0000 Subject: [PATCH 131/327] Twenty Sixteen: Correct display of italics in citations. Props gaelbonithon, sabernhardt, poena, manhar, westonruter, SergeyBiryukov. Fixes #65107. git-svn-id: https://develop.svn.wordpress.org/trunk@62432 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentysixteen/css/editor-blocks.css | 5 +++++ src/wp-content/themes/twentysixteen/style.css | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/wp-content/themes/twentysixteen/css/editor-blocks.css b/src/wp-content/themes/twentysixteen/css/editor-blocks.css index e16c318fae434..dcf347f15f706 100644 --- a/src/wp-content/themes/twentysixteen/css/editor-blocks.css +++ b/src/wp-content/themes/twentysixteen/css/editor-blocks.css @@ -349,6 +349,11 @@ figure[class*="wp-block-"] > figcaption { font-style: normal; } +.wp-block-quote__citation em, +.wp-block-quote__citation i { + font-style: italic; +} + .wp-block-quote strong, .wp-block-quote b { font-weight: 400; diff --git a/src/wp-content/themes/twentysixteen/style.css b/src/wp-content/themes/twentysixteen/style.css index 56f081030f09e..f2df1eddb0afe 100644 --- a/src/wp-content/themes/twentysixteen/style.css +++ b/src/wp-content/themes/twentysixteen/style.css @@ -385,6 +385,11 @@ blockquote cite { font-style: normal; } +blockquote :where(cite) em, +blockquote :where(cite) i { + font-style: italic; +} + blockquote strong, blockquote b { font-weight: 400; From a13fbbac3582551fabea456b154e9e98666c21a3 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Sun, 31 May 2026 07:30:28 +0000 Subject: [PATCH 132/327] KSES: Decode style attribute before sending to safecss_filter_attr(). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `safecss_filter_attr()` assumes that it receives already-unescaped HTML attribute values. For example, consider the raw HTML string: style="background:url("bg.png")" This should be decoded and passed into `safecss_filter_attr()` as: background:url("bg.png") Unfortuantely this hasn’t been done in `wp_kses_attr_check()`, which takes the output from `wp_kses_hair()` and sends it directly to the filtering function. In this patch, `wp_kses_attr_check()` unescapes the `style` attribute, filters it, and then re-escapes it when updating the style value. Tests added by Codex Developed in: https://github.com/WordPress/wordpress-develop/pull/11868 Discussed in: https://core.trac.wordpress.org/ticket/65270 Props dmsnell, westonruter. Fixes #65270. git-svn-id: https://develop.svn.wordpress.org/trunk@62433 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/kses.php | 15 ++++++++---- tests/phpunit/tests/kses.php | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/kses.php b/src/wp-includes/kses.php index 062f85308512f..a45d1697ea40a 100644 --- a/src/wp-includes/kses.php +++ b/src/wp-includes/kses.php @@ -1556,7 +1556,8 @@ function wp_kses_attr_check( &$name, &$value, &$whole, $vless, $element, $allowe } if ( 'style' === $name_low ) { - $new_value = safecss_filter_attr( $value ); + $decoded_value = WP_HTML_Decoder::decode_attribute( $value ); + $new_value = safecss_filter_attr( $decoded_value ); if ( empty( $new_value ) ) { $name = ''; @@ -1565,8 +1566,11 @@ function wp_kses_attr_check( &$name, &$value, &$whole, $vless, $element, $allowe return false; } - $whole = str_replace( $value, $new_value, $whole ); - $value = $new_value; + if ( $new_value !== $decoded_value ) { + $encoded_value = esc_attr( $new_value ); + $whole = str_replace( $value, $encoded_value, $whole ); + $value = $encoded_value; + } } if ( is_array( $allowed_attr[ $name_low ] ) ) { @@ -2554,9 +2558,9 @@ function kses_init() { * @since 6.6.0 Added support for `grid-column`, `grid-row`, and `container-type`. * @since 6.9.0 Added support for `white-space`. * - * @param string $css A string of CSS rules. + * @param string $css A string of CSS rules, decoded from an HTML `style` attribute. * @param string $deprecated Not used. - * @return string Filtered string of CSS rules. + * @return string Filtered string of CSS rules, needing HTML escaping before sending back to a `style` attribute. */ function safecss_filter_attr( $css, $deprecated = '' ) { if ( ! empty( $deprecated ) ) { @@ -2568,6 +2572,7 @@ function safecss_filter_attr( $css, $deprecated = '' ) { $allowed_protocols = wp_allowed_protocols(); + /** @todo Parse enough CSS to split rules without breaking on things like quoted strings. */ $css_array = explode( ';', trim( $css ) ); /** diff --git a/tests/phpunit/tests/kses.php b/tests/phpunit/tests/kses.php index dc01b5dfe2979..db507a6b26550 100644 --- a/tests/phpunit/tests/kses.php +++ b/tests/phpunit/tests/kses.php @@ -1583,6 +1583,52 @@ public function data_wildcard_attribute_prefixes() { ); } + /** + * Tests that style attribute values are decoded before CSS filtering. + * + * @ticket 65270 + * + * @dataProvider data_wp_kses_style_attr_decodes_entities_before_css_filtering + * + * @param string $content A string of HTML to test. + * @param string $expected Expected result after passing through KSES. + */ + public function test_wp_kses_style_attr_decodes_entities_before_css_filtering( $content, $expected ) { + $allowed_html = array( + 'div' => array( + 'style' => true, + ), + ); + + $this->assertEqualHTML( $expected, wp_kses( $content, $allowed_html ) ); + } + + /** + * Data provider for test_wp_kses_style_attr_decodes_entities_before_css_filtering(). + * + * @return array[] + */ + public function data_wp_kses_style_attr_decodes_entities_before_css_filtering() { + return array( + 'background image URL with single quotes' => array( + '
', + '
', + ), + 'background image URL with entity-encoded double quotes' => array( + '
', + '
', + ), + 'background image URL with query string ampersand' => array( + '
', + '
', + ), + 'background image URL followed by another declaration' => array( + '
', + '
', + ), + ); + } + /** * Test URL sanitization in the style tag. * From c77b03d1c9d493f07ca7683c69ae061382f44d1a Mon Sep 17 00:00:00 2001 From: Aki Hamano Date: Sun, 31 May 2026 10:45:43 +0000 Subject: [PATCH 133/327] Docs: Add missing @since tags to `WP_Icons_Registry`. Add the missing `@since 7.0.0` tags to the properties, constructor, and methods of the `WP_Icons_Registry` class to document the version in which they were introduced. Follow-up to [61674]. Props mukesh27, wildworks. See #64897. git-svn-id: https://develop.svn.wordpress.org/trunk@62434 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-icons-registry.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-icons-registry.php b/src/wp-includes/class-wp-icons-registry.php index 6da434aa1602f..f82739fc5d91d 100644 --- a/src/wp-includes/class-wp-icons-registry.php +++ b/src/wp-includes/class-wp-icons-registry.php @@ -16,14 +16,15 @@ class WP_Icons_Registry { /** * Registered icons array. * + * @since 7.0.0 * @var array[] */ protected $registered_icons = array(); - /** * Container for the main instance of the class. * + * @since 7.0.0 * @var WP_Icons_Registry|null */ protected static $instance = null; @@ -39,6 +40,8 @@ class WP_Icons_Registry { * These icons are defined in @wordpress/packages (Gutenberg repository) as * SVG files and as entries in a single manifest file. On init, the * registry is loaded with those icons listed in the manifest. + * + * @since 7.0.0 */ protected function __construct() { $icons_directory = __DIR__ . '/images/icon-library/'; @@ -88,6 +91,8 @@ protected function __construct() { /** * Registers an icon. * + * @since 7.0.0 + * * @param string $icon_name Icon name including namespace. * @param array $icon_properties { * List of properties for the icon. @@ -184,6 +189,8 @@ protected function register( $icon_name, $icon_properties ) { * Logic borrowed from twentytwenty. * @see twentytwenty_get_theme_svg * + * @since 7.0.0 + * * @param string $icon_content The icon SVG content to sanitize. * @return string The sanitized icon SVG content. */ @@ -219,6 +226,8 @@ protected function sanitize_icon_content( $icon_content ) { /** * Retrieves the content of a registered icon. * + * @since 7.0.0 + * * @param string $icon_name Icon name including namespace. * @return string|null The content of the icon, if found. */ @@ -245,6 +254,7 @@ protected function get_content( $icon_name ) { /** * Retrieves an array containing the properties of a registered icon. * + * @since 7.0.0 * * @param string $icon_name Icon name including namespace. * @return array|null Registered icon properties or `null` if the icon is not registered. @@ -263,6 +273,8 @@ public function get_registered_icon( $icon_name ) { /** * Retrieves all registered icons. * + * @since 7.0.0 + * * @param string $search Optional. Search term by which to filter the icons. * @return array[] Array of arrays containing the registered icon properties. */ @@ -284,6 +296,7 @@ public function get_registered_icons( $search = '' ) { /** * Checks if an icon is registered. * + * @since 7.0.0 * * @param string $icon_name Icon name including namespace. * @return bool True if the icon is registered, false otherwise. @@ -297,6 +310,7 @@ public function is_registered( $icon_name ) { * * The instance will be created if it does not exist yet. * + * @since 7.0.0 * * @return WP_Icons_Registry The main instance. */ From ac16a49cde8678b72f0320fc18ee8b384496278d Mon Sep 17 00:00:00 2001 From: Aki Hamano Date: Sun, 31 May 2026 10:50:08 +0000 Subject: [PATCH 134/327] Docs: Add missing @since tags to WP_REST_Icons_Controller. Add the missing `@since 7.0.0` tags to the constructor and methods of the `WP_REST_Icons_Controller` class to document the version in which they were introduced. Follow-up to [61674]. Props mukesh27, wildworks. See #64897. git-svn-id: https://develop.svn.wordpress.org/trunk@62435 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-wp-rest-icons-controller.php | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-icons-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-icons-controller.php index 42e726872d368..91126b498d338 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-icons-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-icons-controller.php @@ -1,5 +1,4 @@ namespace = 'wp/v2'; @@ -30,6 +31,8 @@ public function __construct() { /** * Registers the routes for the objects of the controller. + * + * @since 7.0.0 */ public function register_routes() { register_rest_route( @@ -72,6 +75,8 @@ public function register_routes() { /** * Checks whether a given request has permission to read icons. * + * @since 7.0.0 + * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ @@ -99,6 +104,8 @@ public function get_items_permissions_check( /** * Checks if a given request has access to read a specific icon. * + * @since 7.0.0 + * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access for the item, WP_Error object otherwise. */ @@ -114,6 +121,8 @@ public function get_item_permissions_check( $request ) { /** * Retrieves all icons. * + * @since 7.0.0 + * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ @@ -131,6 +140,8 @@ public function get_items( $request ) { /** * Retrieves a specific icon. * + * @since 7.0.0 + * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ @@ -147,6 +158,8 @@ public function get_item( $request ) { /** * Retrieves a specific icon from the registry. * + * @since 7.0.0 + * * @param string $name Icon name. * @return array|WP_Error Icon data on success, or WP_Error object on failure. */ @@ -172,6 +185,8 @@ public function get_icon( $name ) { /** * Prepare a raw icon before it gets output in a REST API response. * + * @since 7.0.0 + * * @param array $item Raw icon as registered, before any changes. * @param WP_REST_Request $request Request object. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. @@ -199,6 +214,8 @@ public function prepare_item_for_response( $item, $request ) { /** * Retrieves the icon schema, conforming to JSON Schema. * + * @since 7.0.0 + * * @return array Item schema data. */ public function get_item_schema() { @@ -240,6 +257,8 @@ public function get_item_schema() { /** * Retrieves the query params for the icons collection. * + * @since 7.0.0 + * * @return array Collection parameters. */ public function get_collection_params() { From 137eb30fc52bc59a5f55cf47bd75189b1e089a5a Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Sun, 31 May 2026 17:56:09 +0000 Subject: [PATCH 135/327] Charset: Add missing `return` statement to `_mb_ord()`. This fixes a `return.missing` PHPStan error in `_mb_ord()`, fixing the only rule level 0 violation currently reported. In practice the `return` is in an unreachable code path, but static analysis may not be aware of this. Developed in https://github.com/WordPress/wordpress-develop/pull/12020. Follow-up to r62424. Props westonruter, dmsnell. See #65342. git-svn-id: https://develop.svn.wordpress.org/trunk@62436 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/compat.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/wp-includes/compat.php b/src/wp-includes/compat.php index 5eb467280a5a5..3387b1d85c935 100644 --- a/src/wp-includes/compat.php +++ b/src/wp-includes/compat.php @@ -249,6 +249,8 @@ function _mb_ord( $string, $encoding = null ) { ( ( ord( $string[3] ) & 0x3F ) ) ); } + + return false; } if ( ! function_exists( 'mb_substr' ) ) : From be808027d2753acc41afb0e56a078b45b7caa737 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Sun, 31 May 2026 19:19:21 +0000 Subject: [PATCH 136/327] Privacy: Correct type of `WP_User_Request::$user_id` from `int` to `string`/`numeric-string`. Also adds `numeric-string` as richer PHPStan type to `WP_Post::$post_author` and `WP_Post::$comment_count`. Developed in https://github.com/WordPress/wordpress-develop/pull/12018. Follow-up to r25086, r43011. Props masteradhoc, desrosj, garrett-eclipse, johnbillion, westonruter, apermo, SergeyBiryukov, TZ-Media, andizer, javorszky. See #22324, #25092, #43443, #43985, #64898. Fixes #44723. git-svn-id: https://develop.svn.wordpress.org/trunk@62437 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-post.php | 2 ++ src/wp-includes/class-wp-user-request.php | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/class-wp-post.php b/src/wp-includes/class-wp-post.php index ee93b2fa366ff..7874948871896 100644 --- a/src/wp-includes/class-wp-post.php +++ b/src/wp-includes/class-wp-post.php @@ -36,6 +36,7 @@ final class WP_Post { * * @since 3.5.0 * @var string + * @phpstan-var numeric-string */ public $post_author = '0'; @@ -206,6 +207,7 @@ final class WP_Post { * * @since 3.5.0 * @var string + * @phpstan-var numeric-string */ public $comment_count = '0'; diff --git a/src/wp-includes/class-wp-user-request.php b/src/wp-includes/class-wp-user-request.php index dc8ca7cdbdbb6..9bf80752d8fb4 100644 --- a/src/wp-includes/class-wp-user-request.php +++ b/src/wp-includes/class-wp-user-request.php @@ -20,9 +20,10 @@ final class WP_User_Request { * User ID. * * @since 4.9.6 - * @var int + * @var string + * @phpstan-var numeric-string */ - public $user_id = 0; + public $user_id = '0'; /** * User email. From 072ede99b6282d1c7a609f0081313cfe590b302d Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sun, 31 May 2026 23:13:47 +0000 Subject: [PATCH 137/327] Twenty Ten: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62438 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentyten/functions.php | 13 +++++++++++-- src/wp-content/themes/twentyten/header.php | 13 ++++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/wp-content/themes/twentyten/functions.php b/src/wp-content/themes/twentyten/functions.php index baf9e13121e99..6d3e505670bc7 100644 --- a/src/wp-content/themes/twentyten/functions.php +++ b/src/wp-content/themes/twentyten/functions.php @@ -72,6 +72,8 @@ * @uses set_post_thumbnail_size() To set a custom post thumbnail size. * * @since Twenty Ten 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyten_setup() { @@ -436,7 +438,12 @@ function twentyten_custom_excerpt_more( $output ) { function twentyten_remove_gallery_css( $css ) { return preg_replace( "##s", '', $css ); } -// Backward compatibility with WordPress 3.0. + +/** + * Backward compatibility with WordPress 3.0. + * + * @global string $wp_version The WordPress version string. + */ if ( version_compare( $GLOBALS['wp_version'], '3.1', '<' ) ) { add_filter( 'gallery_style', 'twentyten_remove_gallery_css' ); } @@ -452,8 +459,10 @@ function twentyten_remove_gallery_css( $css ) { * * @since Twenty Ten 1.0 * + * @global WP_Comment $comment Global comment object. + * * @param WP_Comment $comment The comment object. - * @param array $args An array of arguments. @see get_comment_reply_link() + * @param array $args An array of comment arguments. @see get_comment_reply_link() * @param int $depth The depth of the comment. */ function twentyten_comment( $comment, $args, $depth ) { diff --git a/src/wp-content/themes/twentyten/header.php b/src/wp-content/themes/twentyten/header.php index 3b2999f6434e0..6a63ae51cb33e 100644 --- a/src/wp-content/themes/twentyten/header.php +++ b/src/wp-content/themes/twentyten/header.php @@ -8,17 +8,20 @@ * @subpackage Twenty_Ten * @since Twenty Ten 1.0 */ + +/** + * @global int $page WordPress paginated post page count. + * @global int $paged WordPress archive pagination page count. + */ +global $page, $paged; + ?> > <?php - /* - * Print the <title> tag based on what is being viewed. - */ - global $page, $paged; - + // Print the <title> tag based on what is being viewed. wp_title( '|', true, 'right' ); // Add the site name. From b2850aae6f0dcbe35434089ef152f8fab21522a1 Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Mon, 1 Jun 2026 10:38:30 +0000 Subject: [PATCH 138/327] HTML API: Fixes for issues discovered while fuzzing. Fuzz-testing was performed against the HTML API for finding edge cases that might be broken in the existing parsing code. A few issues were discovered with HTML normalization and warnings from out-of-bounds string reads. This patch contains new tests catching regressions on these behaviors and adds fixes for the discovered issues. Patch proposed by Codex and revised by dmsnell. Developed in: https://github.com/WordPress/wordpress-develop/pull/11982 Discussed in: https://core.trac.wordpress.org/ticket/65372 Fixes #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62439 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-token-map.php | 16 +- .../html-api/class-wp-html-open-elements.php | 6 +- .../html-api/class-wp-html-processor.php | 51 +++++- .../html-api/class-wp-html-tag-processor.php | 8 +- .../phpunit/tests/html-api/wpHtmlDecoder.php | 25 +++ .../html-api/wpHtmlProcessor-serialize.php | 169 ++++++++++++++++++ .../wpHtmlTagProcessor-token-scanning.php | 42 +++++ 7 files changed, 306 insertions(+), 11 deletions(-) diff --git a/src/wp-includes/class-wp-token-map.php b/src/wp-includes/class-wp-token-map.php index 09a0b9303b452..fc223b187f8c5 100644 --- a/src/wp-includes/class-wp-token-map.php +++ b/src/wp-includes/class-wp-token-map.php @@ -440,6 +440,10 @@ public static function from_precomputed_table( $state ): ?WP_Token_Map { * @return bool Whether there's an entry for the given word in the map. */ public function contains( string $word, string $case_sensitivity = 'case-sensitive' ): bool { + if ( str_contains( $word, "\x00" ) ) { + return false; + } + $ignore_case = 'ascii-case-insensitive' === $case_sensitivity; if ( $this->key_length >= strlen( $word ) ) { @@ -533,9 +537,17 @@ public function read_token( string $text, int $offset = 0, &$matched_token_byte_ // Search for a long word first, if the text is long enough, and if that fails, a short one. if ( $text_length > $this->key_length ) { - $group_key = substr( $text, $offset, $this->key_length ); + /* + * Keys cannot contain null bytes, which is taken care of for the full words, + * but here it’s required to reject group keys with null bytes so that the + * lookup doesn’t get off track when scanning the group string. + */ + if ( strcspn( $text, "\x00", $offset, $this->key_length ) < $this->key_length ) { + return null; + } - $group_at = $ignore_case ? stripos( $this->groups, $group_key ) : strpos( $this->groups, $group_key ); + $group_key = substr( $text, $offset, $this->key_length ); + $group_at = $ignore_case ? stripos( $this->groups, $group_key ) : strpos( $this->groups, $group_key ); if ( false === $group_at ) { // Perhaps a short word then. return strlen( $this->small_words ) > 0 diff --git a/src/wp-includes/html-api/class-wp-html-open-elements.php b/src/wp-includes/html-api/class-wp-html-open-elements.php index e17f901c4db6d..0cd1f0fc45e07 100644 --- a/src/wp-includes/html-api/class-wp-html-open-elements.php +++ b/src/wp-includes/html-api/class-wp-html-open-elements.php @@ -738,7 +738,11 @@ public function after_element_pop( WP_HTML_Token $item ): void { * When adding support for new elements, expand this switch to trap * cases where the precalculated value needs to change. */ - switch ( $item->node_name ) { + $namespaced_name = 'html' === $item->namespace + ? $item->node_name + : "{$item->namespace} {$item->node_name}"; + + switch ( $namespaced_name ) { case 'APPLET': case 'BUTTON': case 'CAPTION': diff --git a/src/wp-includes/html-api/class-wp-html-processor.php b/src/wp-includes/html-api/class-wp-html-processor.php index d9d0d365c6e5a..35d91fad3129c 100644 --- a/src/wp-includes/html-api/class-wp-html-processor.php +++ b/src/wp-includes/html-api/class-wp-html-processor.php @@ -813,8 +813,14 @@ private function next_visitable_token(): bool { * until there are events or until there are no more * tokens works in the meantime and isn't obviously wrong. */ - if ( empty( $this->element_queue ) && $this->step() ) { - return $this->next_visitable_token(); + if ( empty( $this->element_queue ) ) { + if ( $this->step() ) { + return $this->next_visitable_token(); + } + + if ( isset( $this->last_error ) ) { + return false; + } } // Process the next event on the queue. @@ -1401,6 +1407,7 @@ public function serialize_token(): string { $tag_name = str_replace( "\x00", "\u{FFFD}", $this->get_tag() ); $in_html = 'html' === $this->get_namespace(); $qualified_name = $in_html ? strtolower( $tag_name ) : $this->get_qualified_tag_name(); + $qualified_name = str_replace( "\x00", "\u{FFFD}", $qualified_name ); if ( $this->is_tag_closer() ) { $html .= "</{$qualified_name}>"; @@ -1414,15 +1421,36 @@ public function serialize_token(): string { } $html .= "<{$qualified_name}"; + + $previous_attribute_was_true = false; + $seen_attribute_names = array(); foreach ( $attribute_names as $attribute_name ) { - $html .= " {$this->get_qualified_attribute_name( $attribute_name )}"; + $qualified_attribute_name = $this->get_qualified_attribute_name( $attribute_name ); + $qualified_attribute_name = str_replace( "\x00", "\u{FFFD}", $qualified_attribute_name ); + $qualified_attribute_name = wp_scrub_utf8( $qualified_attribute_name ); + if ( isset( $seen_attribute_names[ $qualified_attribute_name ] ) ) { + continue; + } else { + $seen_attribute_names[ $qualified_attribute_name ] = true; + } + + if ( + $previous_attribute_was_true && + isset( $qualified_attribute_name[0] ) && + '=' === $qualified_attribute_name[0] + ) { + $html .= '=""'; + } + + $html .= " {$qualified_attribute_name}"; $value = $this->get_attribute( $attribute_name ); if ( is_string( $value ) ) { $html .= '="' . htmlspecialchars( $value, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5 ) . '"'; } - $html = str_replace( "\x00", "\u{FFFD}", $html ); + $previous_attribute_was_true = true === $value; + $html = str_replace( "\x00", "\u{FFFD}", $html ); } if ( ! $in_html && $this->has_self_closing_flag() ) { @@ -2667,8 +2695,7 @@ private function step_in_body(): bool { */ case '-FORM': if ( ! $this->state->stack_of_open_elements->contains( 'TEMPLATE' ) ) { - $node = $this->state->form_element; - $this->state->form_element = null; + $node = $this->state->form_element; /* * > If node is null or if the stack of open elements does not have node @@ -2681,10 +2708,20 @@ private function step_in_body(): bool { null === $node || ! $this->state->stack_of_open_elements->has_element_in_scope( 'FORM' ) ) { - // Parse error: ignore the token. + /* + * Parse error: ignore the token. + * + * Keep the form pointer intact when the end tag is ignored, such as + * when a FORM closing tag appears inside an SVG TITLE integration + * point. Otherwise the ignored token changes parser state in a way + * that serialization cannot represent, allowing a later FORM opener + * to appear in the first normalization pass and disappear on the second. + */ return $this->step(); } + $this->state->form_element = null; + $this->generate_implied_end_tags(); if ( $node !== $this->state->stack_of_open_elements->current_node() ) { // @todo Indicate a parse error once it's possible. This error does not impact the logic here. diff --git a/src/wp-includes/html-api/class-wp-html-tag-processor.php b/src/wp-includes/html-api/class-wp-html-tag-processor.php index 4015b352c153c..77c1a471db5b1 100644 --- a/src/wp-includes/html-api/class-wp-html-tag-processor.php +++ b/src/wp-includes/html-api/class-wp-html-tag-processor.php @@ -1424,7 +1424,7 @@ private function skip_rcdata( string $tag_name ): bool { $this->tag_name_starts_at = $at; // Fail if there is no possible tag closer. - if ( false === $at || ( $at + $tag_length ) >= $doc_length ) { + if ( false === $at || ( $at + 2 + $tag_length ) >= $doc_length ) { return false; } @@ -1815,6 +1815,12 @@ private function parse_next_tag(): bool { // Abruptly-closed empty comments are a sequence of dashes followed by `>`. $span_of_dashes = strspn( $html, '-', $closer_at ); + if ( $doc_length <= $span_of_dashes + $closer_at ) { + $this->parser_state = self::STATE_INCOMPLETE_INPUT; + + return false; + } + if ( '>' === $html[ $closer_at + $span_of_dashes ] ) { /* * @todo When implementing `set_modifiable_text()` ensure that updates to this token diff --git a/tests/phpunit/tests/html-api/wpHtmlDecoder.php b/tests/phpunit/tests/html-api/wpHtmlDecoder.php index 82d6a10d349db..97954f4eb3e30 100644 --- a/tests/phpunit/tests/html-api/wpHtmlDecoder.php +++ b/tests/phpunit/tests/html-api/wpHtmlDecoder.php @@ -36,6 +36,31 @@ public static function data_edge_cases() { ); } + /** + * Ensures that character references followed by NULL bytes do not emit native PHP errors. + * + * @ticket 65372 + */ + public function test_character_reference_with_null_byte_does_not_emit_native_errors() { + $errors = array(); + set_error_handler( + static function ( int $errno, string $errstr ) use ( &$errors ) { + $errors[] = "{$errno}: {$errstr}"; + return true; + } + ); + + try { + $decoded = WP_HTML_Decoder::decode_text_node( "&\x00b" ); + } finally { + restore_error_handler(); + } + + // Use assertSame() instead of assertEmpty() so PHPUnit shows captured error messages on failure. + $this->assertSame( array(), $errors ); + $this->assertSame( "&\x00b", $decoded, 'Should have decoded the text without changing it.' ); + } + /** * Ensures proper detection of attribute prefixes ignoring ASCII case. * diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php index 175bb3845d554..e516addb6c314 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php @@ -340,6 +340,175 @@ public function test_normalize_special_leading_newline_handling( string $input, $this->assertEqualHTML( $expected, $normalized_twice ); } + /** + * Ensures that fuzzer-discovered inputs do not emit native PHP errors. + * + * @ticket 65372 + * + * @dataProvider data_provider_fuzzer_native_error_cases + * + * @param string $input HTML input. + * @param string|null $expected Expected normalized output, or null when unsupported. + */ + public function test_normalize_fuzzer_cases_do_not_emit_native_errors( string $input, ?string $expected ) { + $errors = array(); + + /* + * This test is checking for native PHP warnings/notices. Unsupported HTML may + * intentionally cause wp_trigger_error() under WP_DEBUG, which is separate + * from the native errors this regression test is trying to catch. + */ + add_filter( 'wp_trigger_error_trigger_error', '__return_false' ); + set_error_handler( + static function ( int $errno, string $errstr ) use ( &$errors ) { + $errors[] = "{$errno}: {$errstr}"; + return true; + } + ); + + try { + $normalized = WP_HTML_Processor::normalize( $input ); + } finally { + restore_error_handler(); + remove_filter( 'wp_trigger_error_trigger_error', '__return_false' ); + } + + // Use assertSame() instead of assertEmpty() so PHPUnit shows captured error messages on failure. + $this->assertSame( array(), $errors ); + $this->assertSame( $expected, $normalized, 'Should have normalized the input.' ); + } + + /** + * Data provider. + * + * @return array[] + */ + public static function data_provider_fuzzer_native_error_cases() { + return array( + 'Unsupported active formatting' => array( '<A><I><A>', null ), + ); + } + + /** + * Ensures that normalized fuzzer-discovered inputs remain supported. + * + * @ticket 65372 + * + * @dataProvider data_provider_normalized_fuzzer_cases_that_should_remain_supported + * + * @param string $input HTML input. + */ + public function test_normalized_fuzzer_cases_should_remain_supported( string $input ) { + $errors = array(); + set_error_handler( + static function ( int $errno, string $errstr ) use ( &$errors ) { + $errors[] = "{$errno}: {$errstr}"; + return true; + } + ); + + try { + $normalized = WP_HTML_Processor::normalize( $input ); + $normalized_twice = is_string( $normalized ) ? WP_HTML_Processor::normalize( $normalized ) : null; + } finally { + restore_error_handler(); + } + + // Use assertSame() instead of assertEmpty() so PHPUnit shows captured error messages on failure. + $this->assertSame( array(), $errors ); + $this->assertIsString( $normalized, 'Input HTML should normalize successfully.' ); + $this->assertIsString( + $normalized_twice, + 'Normalized HTML should remain supported by the HTML Processor.' + ); + } + + /** + * Data provider. + * + * @return array[] + */ + public static function data_provider_normalized_fuzzer_cases_that_should_remain_supported() { + return array( + 'Unclosed SVG TITLE after P in EM' => array( '<em><p><svg><title>' ), + 'Unclosed SVG TITLE after P in STRONG' => array( '<strong><p><svg ><title>' ), + ); + } + + /** + * Ensures that normalized fuzzer-discovered inputs are idempotent. + * + * @ticket 65372 + * + * @dataProvider data_provider_normalized_fuzzer_cases_that_should_be_idempotent + * + * @param string $input HTML input. + */ + public function test_normalized_fuzzer_cases_should_be_idempotent( string $input ) { + $errors = array(); + set_error_handler( + static function ( int $errno, string $errstr ) use ( &$errors ) { + $errors[] = "{$errno}: {$errstr}"; + return true; + } + ); + + try { + $normalized = WP_HTML_Processor::normalize( $input ); + $normalized_twice = is_string( $normalized ) ? WP_HTML_Processor::normalize( $normalized ) : null; + } finally { + restore_error_handler(); + } + + // Use assertSame() instead of assertEmpty() so PHPUnit shows captured error messages on failure. + $this->assertSame( array(), $errors ); + $this->assertIsString( $normalized, 'Input HTML should normalize successfully.' ); + $this->assertSame( + $normalized, + $normalized_twice, + 'Normalizing already-normalized HTML should not change it.' + ); + } + + /** + * Data provider. + * + * @return array[] + */ + public static function data_provider_normalized_fuzzer_cases_that_should_be_idempotent() { + return array( + 'Malformed quoted attribute boundary' => array( '<A "/=>' ), + 'Duplicate attribute after bare attribute' => array( '<A V=5 R V=""=>' ), + 'Duplicate DATA-ID after numeric attribute' => array( '<E DATA-ID=1 1 DATA-ID=""=>' ), + 'Duplicate attribute before tag end' => array( '<R V=5 R V=5 =>' ), + 'NULL byte in foreign tag name' => array( "<SVG><L\x00 D>" ), + 'Malformed closing-looking attribute' => array( '<a </=>' ), + 'Malformed self-closing attribute' => array( '<a h/=>' ), + 'Duplicate ID with quote boundary' => array( '<d ID=""" ID=""=>' ), + 'Mixed-case duplicate TITLE' => array( "<d TITLE=\"\"' title=\"\"=>" ), + 'Colon before self-closing slash' => array( '<e :/=>' ), + 'Duplicate class after bare attribute' => array( "<e class=y d class=''=>" ), + 'Duplicate DATA-ID after hyphen' => array( '<e data-id=1 - data-id="">' ), + 'Duplicate title after quotes' => array( "<e title=''' title=\"\"=>" ), + 'FORM with SVG TITLE text edge' => array( "<form ><svg ><title \"'></form><form>" ), + 'FORM with TABLE and SCRIPT' => array( '<form id><table te"><script></script><td srce" ID/></form><form claslicate">' ), + 'FORM with TABLE CAPTION' => array( '<form><table><caption></form><form >' ), + 'Short malformed G attribute C' => array( '<g c/=>' ), + 'Short malformed G attribute S' => array( '<g s/=>' ), + 'Duplicate SRC boundary' => array( '<g src=""g src="">' ), + 'Short malformed H attribute' => array( '<h f/=>' ), + 'Malformed SRC equals boundary' => array( '<i src=""= src=""=">' ), + 'Malformed slash in tag opener' => array( '<i/t/=>' ), + 'Malformed L colon attribute' => array( '<l :/=>' ), + 'Malformed L less-than attribute' => array( '<l/</=>' ), + 'Malformed N less-than attribute' => array( '<n </=>' ), + 'Unclosed SVG TITLE after P' => array( '<p><svg><title>' ), + 'Duplicate ALT boundary' => array( '<r alt=\'\'d alt=""=>' ), + 'NULL byte in SVG child tag' => array( "<svg><l\x00 '>" ), + 'NULL byte before slash in SVG child tag' => array( "<svg><l\x00/r>" ), + ); + } + /** * Data provider. * diff --git a/tests/phpunit/tests/html-api/wpHtmlTagProcessor-token-scanning.php b/tests/phpunit/tests/html-api/wpHtmlTagProcessor-token-scanning.php index e8195dcfa28c6..de61377e21d55 100644 --- a/tests/phpunit/tests/html-api/wpHtmlTagProcessor-token-scanning.php +++ b/tests/phpunit/tests/html-api/wpHtmlTagProcessor-token-scanning.php @@ -951,6 +951,48 @@ public static function data_various_funky_comments() { ); } + /** + * Ensures that incomplete tokens fail closed without reading beyond the input. + * + * @ticket 65372 + * + * @dataProvider data_incomplete_tokens_from_fuzzer + * + * @param string $html Incomplete HTML input. + */ + public function test_incomplete_tokens_do_not_emit_native_errors( string $html ) { + $errors = array(); + set_error_handler( + static function ( int $errno, string $errstr ) use ( &$errors ) { + $errors[] = "{$errno}: {$errstr}"; + return true; + } + ); + + try { + $processor = new WP_HTML_Tag_Processor( $html ); + $found = $processor->next_token(); + } finally { + restore_error_handler(); + } + + // Use assertSame() instead of assertEmpty() so PHPUnit shows captured error messages on failure. + $this->assertSame( array(), $errors ); + $this->assertFalse( $found, 'Should not have found a complete token.' ); + } + + /** + * Data provider. + * + * @return array[] + */ + public static function data_incomplete_tokens_from_fuzzer() { + return array( + 'Incomplete short comment' => array( '<!---' ), + 'Incomplete RCDATA end tag' => array( '<title></titl' ), + ); + } + /** * Test helper that wraps a string in double quotes. * From ed7bdd2b6cbdedced30fe9b186555d3480504534 Mon Sep 17 00:00:00 2001 From: gziolo <gziolo@602fd350-edb4-49c9-b593-d223f7449a82> Date: Mon, 1 Jun 2026 11:52:01 +0000 Subject: [PATCH 139/327] Abilities API: Add coverage for ignored schema `validate_callback`/`sanitize_callback` Add characterization tests documenting that an ability ignores two REST-style schema keywords: * `validate_callback` is never invoked. The REST request layer calls it, but `rest_validate_value_from_schema()` does not. * There is no sanitization pass, so `sanitize_callback` never runs and input reaches the execute callback uncoerced. Custom validation belongs in the `wp_ability_validate_input` / `wp_ability_validate_output` filters. Test-only change. `arg_options` is intentionally not covered here: it is a registration-time helper for `rest_get_endpoint_args_for_schema()` with no runtime meaning for abilities. Follow-up [61032], #64098. See #64955. git-svn-id: https://develop.svn.wordpress.org/trunk@62440 602fd350-edb4-49c9-b593-d223f7449a82 --- .../phpunit/tests/abilities-api/wpAbility.php | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/tests/phpunit/tests/abilities-api/wpAbility.php b/tests/phpunit/tests/abilities-api/wpAbility.php index c19efc7f1ee56..9c9349507cbab 100644 --- a/tests/phpunit/tests/abilities-api/wpAbility.php +++ b/tests/phpunit/tests/abilities-api/wpAbility.php @@ -1817,4 +1817,121 @@ public function test_ability_invoked_action_fires_on_validation_failure() { $this->assertSame( 1, $action->get_call_count(), 'wp_ability_invoked should fire before input validation failure.' ); } + + /** + * Tests that a `validate_callback` in an input schema is ignored. + * + * The REST API invokes a `validate_callback` per request argument, so it is a + * reasonable thing to expect here too — but abilities do not reuse that + * request-layer machinery, and a server-only PHP callback could not be honored + * by the clients that consume the schema anyway. Custom validation belongs in + * the `wp_ability_validate_input` filter. + * + * @ticket 64098 + */ + public function test_validate_input_ignores_schema_validate_callback() { + $callback_invoked = false; + + $args = array_merge( + self::$test_ability_properties, + array( + 'input_schema' => array( + 'type' => 'string', + 'validate_callback' => static function () use ( &$callback_invoked ) { + $callback_invoked = true; + return new WP_Error( 'should_not_run', 'Schema validate_callback must not be invoked.' ); + }, + ), + ) + ); + + $ability = new WP_Ability( self::$test_ability_name, $args ); + + // 'hello' satisfies the JSON Schema (type string); the validate_callback would + // reject every value if it were ever invoked. + $result = $ability->validate_input( 'hello' ); + + $this->assertTrue( $result, 'Input should pass on JSON Schema alone.' ); + $this->assertFalse( $callback_invoked, 'Schema validate_callback must not run during input validation.' ); + } + + /** + * Tests that a `validate_callback` in an output schema is ignored. + * + * Output is validated the same way as input, so the same reasoning applies: the + * schema callback never runs. Custom output validation belongs in the + * `wp_ability_validate_output` filter. + * + * @ticket 64098 + */ + public function test_validate_output_ignores_schema_validate_callback() { + $callback_invoked = false; + + $args = array_merge( + self::$test_ability_properties, + array( + 'output_schema' => array( + 'type' => 'string', + 'validate_callback' => static function () use ( &$callback_invoked ) { + $callback_invoked = true; + return new WP_Error( 'should_not_run', 'Schema validate_callback must not be invoked.' ); + }, + ), + 'execute_callback' => static function (): string { + return 'result'; + }, + ) + ); + + $ability = new WP_Ability( self::$test_ability_name, $args ); + + // The execute callback returns a valid string; the output validate_callback would + // reject it if it ran, so a returned result proves the callback was ignored. + $result = $ability->execute(); + + $this->assertSame( 'result', $result, 'Output should pass on JSON Schema alone, so execute() returns the result.' ); + $this->assertFalse( $callback_invoked, 'Schema validate_callback must not run during output validation.' ); + } + + /** + * Tests that a `sanitize_callback` is ignored and input is never sanitized. + * + * REST cleans and type-coerces arguments in a sanitization step; abilities have + * no such step, so a `sanitize_callback` never runs and a mistyped value is + * rejected rather than coerced. This is the easiest REST assumption to carry + * over by mistake, so it is pinned explicitly. + * + * @ticket 64098 + */ + public function test_execute_ignores_schema_sanitize_callback() { + $callback_invoked = false; + + $args = array_merge( + self::$test_ability_properties, + array( + 'input_schema' => array( + 'type' => 'string', + 'sanitize_callback' => static function ( $value ) use ( &$callback_invoked ) { + $callback_invoked = true; + return 'sanitized'; + }, + ), + 'output_schema' => array( + 'type' => 'string', + ), + 'execute_callback' => static function ( $input ): string { + return $input; + }, + ) + ); + + $ability = new WP_Ability( self::$test_ability_name, $args ); + + // The execute callback echoes its input, so an unmodified return value proves + // the sanitize_callback never ran and no sanitization pass took place. + $result = $ability->execute( 'raw value' ); + + $this->assertSame( 'raw value', $result, 'Input should reach the execute callback unmodified (no sanitization).' ); + $this->assertFalse( $callback_invoked, 'Schema sanitize_callback must not run.' ); + } } From 9a4f91d6b22eb32798bb0998b1b15bef7231b299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Mon, 1 Jun 2026 12:13:15 +0000 Subject: [PATCH 140/327] Abilities API: Add coverage for top-level `required` in input validation Add a data-provider-driven test documenting that a `required` flag at the root of a schema is never consulted by `WP_Ability::validate_input()`: * top-level `required: true`/`false` is inert; only `type` is enforced, and `false` does not permit `null`. * a draft-04 `required` array on an object type is honored and enforces property presence. Also remove the inert top-level `required => true` flags from simple-type test schemas, keeping the meaningful per-property flags. Test-only change. Follow-up [61032], #64098. See #64955. git-svn-id: https://develop.svn.wordpress.org/trunk@62441 602fd350-edb4-49c9-b593-d223f7449a82 --- .../phpunit/tests/abilities-api/wpAbility.php | 122 ++++++++++++++---- 1 file changed, 94 insertions(+), 28 deletions(-) diff --git a/tests/phpunit/tests/abilities-api/wpAbility.php b/tests/phpunit/tests/abilities-api/wpAbility.php index 9c9349507cbab..7ab1de15f3be2 100644 --- a/tests/phpunit/tests/abilities-api/wpAbility.php +++ b/tests/phpunit/tests/abilities-api/wpAbility.php @@ -25,7 +25,6 @@ public function set_up(): void { 'output_schema' => array( 'type' => 'number', 'description' => 'The result of performing a math operation.', - 'required' => true, ), 'execute_callback' => static function (): int { return 0; @@ -274,7 +273,6 @@ public function data_execute_input() { array( 'type' => array( 'null', 'integer' ), 'description' => 'The null or integer to convert to integer.', - 'required' => true, ), static function ( $input ): int { return null === $input ? 0 : (int) $input; @@ -286,7 +284,6 @@ static function ( $input ): int { array( 'type' => 'boolean', 'description' => 'The boolean to convert to integer.', - 'required' => true, ), static function ( bool $input ): int { return $input ? 1 : 0; @@ -298,7 +295,6 @@ static function ( bool $input ): int { array( 'type' => 'integer', 'description' => 'The integer to add 5 to.', - 'required' => true, ), static function ( int $input ): int { return 5 + $input; @@ -310,7 +306,6 @@ static function ( int $input ): int { array( 'type' => 'number', 'description' => 'The floating number to round.', - 'required' => true, ), static function ( float $input ): int { return (int) round( $input ); @@ -322,7 +317,6 @@ static function ( float $input ): int { array( 'type' => 'string', 'description' => 'The string to measure the length of.', - 'required' => true, ), static function ( string $input ): int { return strlen( $input ); @@ -361,7 +355,6 @@ static function ( array $input ): int { array( 'type' => 'array', 'description' => 'An array containing two numbers to add.', - 'required' => true, 'minItems' => 2, 'maxItems' => 2, 'items' => array( @@ -403,6 +396,100 @@ public function test_execute_input( $input_schema, $execute_callback, $input, $r $this->assertSame( $result, $ability->execute( $input ) ); } + /** + * Data provider for top-level `required` validation behavior. + * + * Each schema variant is paired with both a valid and an invalid input so the + * inert behavior of a top-level `required` boolean — and the meaningful + * behavior of a draft-04 `required` array on an object — are sealed. + * + * @return array<string, array{0: array, 1: mixed, 2: bool}> Data sets. + */ + public function data_validate_input_top_level_required() { + $required_true = array( + 'type' => 'string', + 'required' => true, + ); + $required_false = array( + 'type' => 'string', + 'required' => false, + ); + $required_unset = array( + 'type' => 'string', + ); + $object_required = array( + 'type' => 'object', + 'properties' => array( + 'a' => array( 'type' => 'integer' ), + 'b' => array( 'type' => 'integer' ), + ), + 'required' => array( 'a', 'b' ), + ); + + return array( + // A top-level `required: true` is inert: only `type` is enforced. + 'required true: valid input' => array( $required_true, 'hello', true ), + 'required true: invalid input' => array( $required_true, 123, false ), + + // A top-level `required: false` is equally inert and does not permit null. + 'required false: valid input' => array( $required_false, 'hello', true ), + 'required false: invalid input' => array( $required_false, 123, false ), + 'required false: null still invalid' => array( $required_false, null, false ), + + // Omitting `required` behaves identically to setting it. + 'required unset: valid input' => array( $required_unset, 'hello', true ), + 'required unset: invalid input' => array( $required_unset, 123, false ), + + // A draft-04 `required` array on an object type IS honored. + 'object required array: valid input' => array( + $object_required, + array( + 'a' => 1, + 'b' => 2, + ), + true, + ), + 'object required array: invalid input' => array( $object_required, array( 'a' => 1 ), false ), + ); + } + + /** + * Tests how a top-level `required` keyword is handled during input validation. + * + * For a non-object root type, a top-level `required` flag is inert: validation + * gates solely on `type`, so the outcome is identical whether `required` is + * `true`, `false`, or omitted — and `required: false` notably does not make a + * `null` value acceptable. For an object root type, a draft-04 `required` array + * of property names is honored and enforces the presence of those properties. + * + * @ticket 64955 + * + * @covers WP_Ability::validate_input + * + * @dataProvider data_validate_input_top_level_required + * + * @param array $input_schema The input schema under test. + * @param mixed $input The input value to validate. + * @param bool $is_valid Whether the input is expected to pass validation. + */ + public function test_validate_input_top_level_required( $input_schema, $input, $is_valid ) { + $ability = new WP_Ability( + self::$test_ability_name, + array_merge( + self::$test_ability_properties, + array( 'input_schema' => $input_schema ) + ) + ); + + $result = $ability->validate_input( $input ); + + if ( $is_valid ) { + $this->assertTrue( $result, 'Expected the input to pass validation.' ); + } else { + $this->assertWPError( $result, 'Expected the input to fail validation.' ); + } + } + /** * A static method to be used as a callback in tests. * @@ -466,7 +553,6 @@ public function test_execute_with_different_callbacks( $execute_callback ) { 'input_schema' => array( 'type' => 'string', 'description' => 'Test input string.', - 'required' => true, ), 'execute_callback' => $execute_callback, ) @@ -561,7 +647,6 @@ public function test_before_execute_ability_action() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Test input parameter.', - 'required' => true, ), 'execute_callback' => static function ( int $input ): int { return $input * 2; @@ -645,7 +730,6 @@ public function test_after_execute_ability_action() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Test input parameter.', - 'required' => true, ), 'execute_callback' => static function ( int $input ): int { return $input * 3; @@ -813,7 +897,6 @@ public function test_after_action_not_fired_on_output_validation_error() { 'output_schema' => array( 'type' => 'string', 'description' => 'Expected string output.', - 'required' => true, ), 'execute_callback' => static function (): int { return 42; @@ -856,12 +939,10 @@ public function test_normalize_input_filter_can_transform_input() { 'input_schema' => array( 'type' => 'string', 'description' => 'Test input string.', - 'required' => true, ), 'output_schema' => array( 'type' => 'integer', 'description' => 'Result integer.', - 'required' => true, ), 'execute_callback' => static function ( string $input ): int { return strlen( $input ); @@ -898,7 +979,6 @@ public function test_normalize_input_filter_wp_error_halts_execution() { 'input_schema' => array( 'type' => 'string', 'description' => 'Test input string.', - 'required' => true, ), 'execute_callback' => static function ( string $input ) { return strlen( $input ); @@ -934,12 +1014,10 @@ public function test_permission_result_filter_can_grant_permission() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Test input integer.', - 'required' => true, ), 'output_schema' => array( 'type' => 'integer', 'description' => 'Result integer.', - 'required' => true, ), 'execute_callback' => static function ( int $input ): int { return $input; @@ -1105,7 +1183,6 @@ public function test_pre_execute_ability_filter_short_circuits_pipeline() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Test input integer.', - 'required' => true, ), 'execute_callback' => static function (): int { return 1; @@ -1272,7 +1349,6 @@ public function test_execute_result_filter_can_transform_result() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Test input integer.', - 'required' => true, ), 'execute_callback' => static function ( int $input ): int { return $input * 2; @@ -1416,7 +1492,6 @@ public function test_validate_input_filter_receives_all_parameters() { 'input_schema' => array( 'type' => 'string', 'description' => 'Test input string.', - 'required' => true, ), 'execute_callback' => static function ( string $input ): int { return strlen( $input ); @@ -1454,12 +1529,10 @@ public function test_validate_input_filter_overrides_validation_failure() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Test input integer.', - 'required' => true, ), 'output_schema' => array( 'type' => 'integer', 'description' => 'Result integer.', - 'required' => true, ), 'execute_callback' => static function () { return 99; @@ -1496,7 +1569,6 @@ public function test_validate_input_filter_receives_error_on_invalid_input() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Test input integer.', - 'required' => true, ), 'execute_callback' => static function ( int $input ): int { return $input * 2; @@ -1534,7 +1606,6 @@ public function test_validate_input_filter_replaces_error_with_custom() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Test input integer.', - 'required' => true, ), 'execute_callback' => static function ( int $input ): int { return $input * 2; @@ -1572,7 +1643,6 @@ public function test_validate_output_filter_receives_all_parameters() { 'output_schema' => array( 'type' => 'integer', 'description' => 'The result integer.', - 'required' => true, ), 'execute_callback' => static function (): int { return 42; @@ -1610,7 +1680,6 @@ public function test_validate_output_filter_overrides_validation_failure() { 'output_schema' => array( 'type' => 'string', 'description' => 'The result string.', - 'required' => true, ), 'execute_callback' => static function (): int { return 42; @@ -1647,7 +1716,6 @@ public function test_validate_output_filter_receives_error_on_invalid_output() { 'output_schema' => array( 'type' => 'string', 'description' => 'The result string.', - 'required' => true, ), 'execute_callback' => static function (): int { return 42; @@ -1685,7 +1753,6 @@ public function test_validate_output_filter_replaces_error_with_custom() { 'output_schema' => array( 'type' => 'string', 'description' => 'The result string.', - 'required' => true, ), 'execute_callback' => static function (): int { return 42; @@ -1805,7 +1872,6 @@ public function test_ability_invoked_action_fires_on_validation_failure() { 'input_schema' => array( 'type' => 'integer', 'description' => 'Int input.', - 'required' => true, ), 'execute_callback' => static function ( int $input ): int { return $input; From 75d6e2fb993df72c792123474b050c17d1223135 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Mon, 1 Jun 2026 23:20:59 +0000 Subject: [PATCH 141/327] Twenty Eleven: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62442 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentyeleven/content-featured.php | 3 +++ src/wp-content/themes/twentyeleven/functions.php | 6 ++++++ src/wp-content/themes/twentyeleven/header.php | 9 +++++++-- src/wp-content/themes/twentyeleven/showcase.php | 5 ++++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/wp-content/themes/twentyeleven/content-featured.php b/src/wp-content/themes/twentyeleven/content-featured.php index b49f680454902..b1355706dfacf 100644 --- a/src/wp-content/themes/twentyeleven/content-featured.php +++ b/src/wp-content/themes/twentyeleven/content-featured.php @@ -7,6 +7,9 @@ * @since Twenty Eleven 1.0 */ +/** + * @global string $feature_class CSS classes for the article element. + */ global $feature_class; ?> <article id="post-<?php the_ID(); ?>" <?php post_class( $feature_class ); ?>> diff --git a/src/wp-content/themes/twentyeleven/functions.php b/src/wp-content/themes/twentyeleven/functions.php index 900c1f2cf23c0..6434507effd7a 100644 --- a/src/wp-content/themes/twentyeleven/functions.php +++ b/src/wp-content/themes/twentyeleven/functions.php @@ -70,6 +70,8 @@ * @uses set_post_thumbnail_size() To set a custom post thumbnail size. * * @since Twenty Eleven 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyeleven_setup() { @@ -636,6 +638,8 @@ function twentyeleven_widgets_init() { * * @since Twenty Eleven 1.0 * + * @global WP_Query $wp_query WordPress Query object. + * * @param string $html_id The HTML id attribute. */ function twentyeleven_content_nav( $html_id ) { @@ -753,6 +757,8 @@ function twentyeleven_footer_sidebar_class() { * * @since Twenty Eleven 1.0 * + * @global WP_Comment $comment Global comment object. + * * @param WP_Comment $comment The comment object. * @param array $args An array of comment arguments. @see get_comment_reply_link() * @param int $depth The depth of the comment. diff --git a/src/wp-content/themes/twentyeleven/header.php b/src/wp-content/themes/twentyeleven/header.php index acc9f96fe750f..4b85492ef8487 100644 --- a/src/wp-content/themes/twentyeleven/header.php +++ b/src/wp-content/themes/twentyeleven/header.php @@ -8,6 +8,13 @@ * @subpackage Twenty_Eleven * @since Twenty Eleven 1.0 */ + +/** + * @global int $page WordPress paginated post page count. + * @global int $paged WordPress archive pagination page count. + */ +global $page, $paged; + ?><!DOCTYPE html> <html <?php language_attributes(); ?>> <head> @@ -16,8 +23,6 @@ <title> <?php // Print the <title> tag based on what is being viewed. - global $page, $paged; - wp_title( '|', true, 'right' ); // Add the site name. diff --git a/src/wp-content/themes/twentyeleven/showcase.php b/src/wp-content/themes/twentyeleven/showcase.php index a46fed329cd69..349a1cb2c668b 100644 --- a/src/wp-content/themes/twentyeleven/showcase.php +++ b/src/wp-content/themes/twentyeleven/showcase.php @@ -208,8 +208,11 @@ if ( $recent->have_posts() ) : $recent->the_post(); - // Set $more to 0 in order to only get the first part of the post. + /** + * @global int $more + */ global $more; + // Set $more to 0 in order to only get the first part of the post. $more = 0; get_template_part( 'content', get_post_format() ); From 1eed6adef8459e8fc3568787580376c2df362fad Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 2 Jun 2026 06:00:27 +0000 Subject: [PATCH 142/327] Build/Test Tools: Configure Composer caching with input where possible. This removes an unnecessary step and output/input when the date used for cache keys is only used in one place by passing the command directly through the `custom-cache-key` input. See #64893. git-svn-id: https://develop.svn.wordpress.org/trunk@62443 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/reusable-check-built-files.yml | 9 +-------- .../workflows/reusable-phpstan-static-analysis-v1.yml | 10 ++-------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/.github/workflows/reusable-check-built-files.yml b/.github/workflows/reusable-check-built-files.yml index 10f4dbb76d8c0..033b2a46ac3e9 100644 --- a/.github/workflows/reusable-check-built-files.yml +++ b/.github/workflows/reusable-check-built-files.yml @@ -17,7 +17,6 @@ jobs: # Performs the following steps: # - Checks out the repository. # - Sets up Node.js. - # - Configures caching for Composer. # - Installs Composer dependencies. # - Logs general debug information about the runner. # - Installs npm dependencies. @@ -48,18 +47,12 @@ jobs: node-version-file: '.nvmrc' cache: npm - # This date is used to ensure that the PHPCS cache is cleared at least once every week. - # http://man7.org/linux/man-pages/man1/date.1.html - - name: "Get last Monday's date" - id: get-date - run: echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> "$GITHUB_OUTPUT" - # Since Composer dependencies are installed using `composer update` and no lock file is in version control, # passing a custom cache suffix ensures that the cache is flushed at least once per week. - name: Install Composer dependencies uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: - custom-cache-suffix: ${{ steps.get-date.outputs.date }} + custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F") - name: Log debug information run: | diff --git a/.github/workflows/reusable-phpstan-static-analysis-v1.yml b/.github/workflows/reusable-phpstan-static-analysis-v1.yml index 775500b5b2905..745e789580d8f 100644 --- a/.github/workflows/reusable-phpstan-static-analysis-v1.yml +++ b/.github/workflows/reusable-phpstan-static-analysis-v1.yml @@ -24,8 +24,8 @@ jobs: # Performs the following steps: # - Checks out the repository. # - Sets up PHP. - # - Logs debug information. # - Installs Composer dependencies. + # - Logs debug information. # - Configures caching for PHP static analysis scans. # - Make Composer packages available globally. # - Runs PHPStan static analysis (with Pull Request annotations). @@ -58,12 +58,6 @@ jobs: coverage: none tools: cs2pr - # This date is used to ensure that the Composer cache is cleared at least once every week. - # http://man7.org/linux/man-pages/man1/date.1.html - - name: "Get last Monday's date" - id: get-date - run: echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> "$GITHUB_OUTPUT" - - name: General debug information run: | npm --version @@ -75,7 +69,7 @@ jobs: - name: Install Composer dependencies uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 with: - custom-cache-suffix: ${{ steps.get-date.outputs.date }} + custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F") - name: Make Composer packages available globally run: echo "${PWD}/vendor/bin" >> "$GITHUB_PATH" From 5bc40a6263c24649e6e97b2883fd9f16239f14de Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Tue, 2 Jun 2026 06:03:58 +0000 Subject: [PATCH 143/327] Editor: add responsive global styles for blocks. Uses block states to represent tablet and mobile breakpoints for block global styles. Props isabel_brison, ramonopoly. See #65164. git-svn-id: https://develop.svn.wordpress.org/trunk@62444 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-theme-json.php | 449 ++++++++++++++++++++-- tests/phpunit/tests/theme/wpThemeJson.php | 437 +++++++++++++++++++++ 2 files changed, 863 insertions(+), 23 deletions(-) diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index e42731c09baf5..ad6d0ecc7a061 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -644,6 +644,19 @@ class WP_Theme_JSON { 'core/button' => array( ':hover', ':focus', ':focus-visible', ':active' ), ); + /** + * Responsive breakpoint state keys and their corresponding CSS media queries. + * These are available for all blocks and wrap their styles in the given media query. + * Keep in sync with RESPONSIVE_BREAKPOINTS in packages/global-styles-engine/src/core/render.tsx. + * + * @since 7.1.0 + * @var array + */ + const RESPONSIVE_BREAKPOINTS = array( + 'mobile' => '@media (width <= 480px)', + 'tablet' => '@media (480px < width <= 782px)', + ); + /** * The valid elements that can be found under styles. * @@ -1054,11 +1067,12 @@ protected static function sanitize( $input, $valid_block_names, $valid_element_n $schema_styles_elements = array(); /* - * Set allowed element pseudo selectors based on per element allow list. + * Set allowed element pseudo selectors and responsive breakpoint states. * Target data structure in schema: * e.g. * - top level elements: `$schema['styles']['elements']['link'][':hover']`. * - block level elements: `$schema['styles']['blocks']['core/button']['elements']['link'][':hover']`. + * - block responsive elements: `$schema['styles']['blocks']['core/button']['tablet']['elements']['link'][':hover']`. */ foreach ( $valid_element_names as $element ) { $schema_styles_elements[ $element ] = $styles_non_top_level; @@ -1068,6 +1082,11 @@ protected static function sanitize( $input, $valid_block_names, $valid_element_n $schema_styles_elements[ $element ][ $pseudo_selector ] = $styles_non_top_level; } } + + // Add responsive breakpoint states for elements. + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint_state ) { + $schema_styles_elements[ $element ][ $breakpoint_state ] = $styles_non_top_level; + } } $schema_styles_blocks = array(); @@ -1075,19 +1094,31 @@ protected static function sanitize( $input, $valid_block_names, $valid_element_n /* * Generate a schema for blocks. - * - Block styles can contain `elements` & `variations` definitions. + * - Block styles can contain `elements`, `variations`, and responsive breakpoint state definitions. * - Variations definitions cannot be nested. - * - Variations can contain styles for inner `blocks`. - * - Variation inner `blocks` styles can contain `elements`. + * - Variations can contain styles for inner `blocks`, `elements`, and responsive breakpoint states. + * - Variation inner `blocks` styles can contain `elements` and responsive breakpoint states. * - * As each variation needs a `blocks` schema but further nested - * inner `blocks`, the overall schema will be generated in multiple passes. + * As each variation needs both a `blocks` schema and responsive `blocks` schemas + * for further nested inner `blocks`, the overall schema is generated in multiple passes. */ foreach ( $valid_block_names as $block ) { $schema_settings_blocks[ $block ] = static::VALID_SETTINGS; $schema_styles_blocks[ $block ] = $styles_non_top_level; $schema_styles_blocks[ $block ]['elements'] = $schema_styles_elements; + // Add responsive breakpoint states for all blocks. + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint_state ) { + $schema_styles_blocks[ $block ][ $breakpoint_state ] = $styles_non_top_level; + $schema_styles_blocks[ $block ][ $breakpoint_state ]['elements'] = $schema_styles_elements; + + if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] ) ) { + foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] as $pseudo_selector ) { + $schema_styles_blocks[ $block ][ $breakpoint_state ][ $pseudo_selector ] = $styles_non_top_level; + } + } + } + // Add pseudo-selectors for blocks that support them if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] ) ) { foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] as $pseudo_selector ) { @@ -1119,6 +1150,19 @@ protected static function sanitize( $input, $valid_block_names, $valid_element_n foreach ( $style_variation_names as $variation_name ) { $variation_schema = $block_style_variation_styles; + // Add responsive breakpoint states to block style variations. + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint_state ) { + $variation_schema[ $breakpoint_state ] = $styles_non_top_level; + $variation_schema[ $breakpoint_state ]['elements'] = $schema_styles_elements; + $variation_schema[ $breakpoint_state ]['blocks'] = $schema_styles_blocks; + + if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] ) ) { + foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] as $pseudo_selector ) { + $variation_schema[ $breakpoint_state ][ $pseudo_selector ] = $styles_non_top_level; + } + } + } + // Add pseudo-selectors to variations for blocks that support them if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] ) ) { foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] as $pseudo_selector ) { @@ -1886,6 +1930,11 @@ protected function get_layout_styles( $block_metadata, $options = array() ) { } } } + + if ( ! empty( $options['media_query'] ) && ! empty( $block_rules ) ) { + $block_rules = $options['media_query'] . '{' . $block_rules . '}'; + } + return $block_rules; } @@ -2873,6 +2922,7 @@ private static function get_block_nodes( $theme_json, $selectors = array(), $opt } $variation_selectors = array(); + if ( $include_variations && isset( $node['variations'] ) ) { foreach ( $node['variations'] as $variation => $node ) { $variation_selectors[] = array( @@ -2887,56 +2937,166 @@ private static function get_block_nodes( $theme_json, $selectors = array(), $opt 'path' => $node_path, 'selector' => $selector, 'selectors' => $feature_selectors, + 'elements' => $selectors[ $name ]['elements'] ?? array(), 'duotone' => $duotone_selector, - 'features' => $feature_selectors, 'variations' => $variation_selectors, 'css' => $selector, ); + // Responsive block nodes: emit one node per breakpoint that has styles. + // These are rendered immediately after the base block node so that + // the cascade order is: .block{} → @media{.block{}} + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $theme_json['styles']['blocks'][ $name ][ $breakpoint ] ) ) { + $nodes[] = array( + 'name' => $name, + 'path' => array( 'styles', 'blocks', $name, $breakpoint ), + 'media_query' => static::RESPONSIVE_BREAKPOINTS[ $breakpoint ], + 'selector' => $selector, + 'selectors' => $feature_selectors, + 'elements' => $selectors[ $name ]['elements'] ?? array(), + 'variations' => $variation_selectors, + 'css' => $selector, + ); + } + } + // Handle any pseudo selectors for the block. if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $name ] ) ) { foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $name ] as $pseudo_selector ) { - if ( isset( $theme_json['styles']['blocks'][ $name ][ $pseudo_selector ] ) ) { + $has_pseudo = isset( $theme_json['styles']['blocks'][ $name ][ $pseudo_selector ] ); + $has_responsive_pseudo = false; + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $theme_json['styles']['blocks'][ $name ][ $breakpoint ][ $pseudo_selector ] ) ) { + $has_responsive_pseudo = true; + break; + } + } + + if ( ! $has_pseudo && ! $has_responsive_pseudo ) { + continue; + } + + /* + * Append the pseudo-selector to each feature selector so that + * get_feature_declarations_for_node generates CSS scoped to the + * pseudo-state (e.g. '.wp-block-button:hover') rather than the + * default state (e.g. '.wp-block-button'). + */ + $pseudo_feature_selectors = array(); + foreach ( $feature_selectors ?? array() as $feature => $feature_selector ) { + if ( is_array( $feature_selector ) ) { + $pseudo_feature_selectors[ $feature ] = array(); + foreach ( $feature_selector as $subfeature => $subfeature_selector ) { + $pseudo_feature_selectors[ $feature ][ $subfeature ] = static::append_to_selector( $subfeature_selector, $pseudo_selector ); + } + } else { + $pseudo_feature_selectors[ $feature ] = static::append_to_selector( $feature_selector, $pseudo_selector ); + } + } + + if ( $has_pseudo ) { $nodes[] = array( 'name' => $name, 'path' => array( 'styles', 'blocks', $name, $pseudo_selector ), 'selector' => static::append_to_selector( $selector, $pseudo_selector ), - 'selectors' => $feature_selectors, + 'selectors' => $pseudo_feature_selectors, + 'elements' => $selectors[ $name ]['elements'] ?? array(), 'duotone' => $duotone_selector, 'variations' => $variation_selectors, 'css' => static::append_to_selector( $selector, $pseudo_selector ), ); } + + // Responsive pseudo nodes: emit one node per breakpoint that has + // this pseudo state, immediately after the default pseudo node. + // Cascade order: .block:hover{} → @media{.block:hover{}} + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $theme_json['styles']['blocks'][ $name ][ $breakpoint ][ $pseudo_selector ] ) ) { + $nodes[] = array( + 'name' => $name, + 'path' => array( 'styles', 'blocks', $name, $breakpoint, $pseudo_selector ), + 'media_query' => static::RESPONSIVE_BREAKPOINTS[ $breakpoint ], + 'selector' => static::append_to_selector( $selector, $pseudo_selector ), + 'selectors' => $pseudo_feature_selectors, + 'elements' => $selectors[ $name ]['elements'] ?? array(), + 'variations' => $variation_selectors, + 'css' => static::append_to_selector( $selector, $pseudo_selector ), + ); + } + } } } } - if ( isset( $theme_json['styles']['blocks'][ $name ]['elements'] ) ) { foreach ( $theme_json['styles']['blocks'][ $name ]['elements'] as $element => $node ) { - $node_path = array( 'styles', 'blocks', $name, 'elements', $element ); - + $element_path = array( 'styles', 'blocks', $name, 'elements', $element ); if ( $include_node_paths_only ) { $nodes[] = array( - 'path' => $node_path, + 'path' => $element_path, ); continue; } + $element_selector = $selectors[ $name ]['elements'][ $element ]; + $nodes[] = array( - 'path' => $node_path, - 'selector' => $selectors[ $name ]['elements'][ $element ], + 'path' => $element_path, + 'selector' => $element_selector, ); + // Responsive element nodes: one node per breakpoint that has + // styles for this element. Cascade: a{} → @media{a{}} + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $theme_json['styles']['blocks'][ $name ][ $breakpoint ]['elements'][ $element ] ) ) { + $nodes[] = array( + 'path' => array( 'styles', 'blocks', $name, $breakpoint, 'elements', $element ), + 'selector' => $element_selector, + 'media_query' => static::RESPONSIVE_BREAKPOINTS[ $breakpoint ], + ); + } + } + // Handle any pseudo selectors for the element. if ( isset( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element ] ) ) { foreach ( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element ] as $pseudo_selector ) { - if ( isset( $theme_json['styles']['blocks'][ $name ]['elements'][ $element ][ $pseudo_selector ] ) ) { - $node_path = array( 'styles', 'blocks', $name, 'elements', $element ); + // Create element pseudo node if default or any responsive breakpoint has the pseudo. + $has_element_pseudo = isset( $theme_json['styles']['blocks'][ $name ]['elements'][ $element ][ $pseudo_selector ] ); + if ( ! $has_element_pseudo ) { + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $bp ) { + if ( isset( $theme_json['styles']['blocks'][ $name ][ $bp ]['elements'][ $element ][ $pseudo_selector ] ) ) { + $has_element_pseudo = true; + break; + } + } + } + + if ( $has_element_pseudo ) { + $element_pseudo_path = array( 'styles', 'blocks', $name, 'elements', $element ); + if ( $include_node_paths_only ) { + $nodes[] = array( + 'path' => $element_pseudo_path, + ); + continue; + } $nodes[] = array( - 'path' => $node_path, - 'selector' => static::append_to_selector( $selectors[ $name ]['elements'][ $element ], $pseudo_selector ), + 'path' => $element_pseudo_path, + 'selector' => static::append_to_selector( $element_selector, $pseudo_selector ), ); + + // Responsive element pseudo nodes: one node per breakpoint + // that has this pseudo state for this element. + // Cascade: a:hover{} → @media{a:hover{}} + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $theme_json['styles']['blocks'][ $name ][ $breakpoint ]['elements'][ $element ][ $pseudo_selector ] ) ) { + $nodes[] = array( + 'path' => array( 'styles', 'blocks', $name, $breakpoint, 'elements', $element ), + 'selector' => static::append_to_selector( $element_selector, $pseudo_selector ), + 'media_query' => static::RESPONSIVE_BREAKPOINTS[ $breakpoint ], + ); + } + } } } } @@ -2965,16 +3125,19 @@ public function get_styles_for_block( $block_metadata ) { $settings = $this->theme_json['settings'] ?? array(); $feature_declarations = static::get_feature_declarations_for_node( $block_metadata, $node ); $is_root_selector = static::ROOT_BLOCK_SELECTOR === $selector; + $media_query = $block_metadata['media_query'] ?? null; // Update text indent selector for paragraph blocks based on the textIndent setting. $block_name = $block_metadata['name'] ?? null; $feature_declarations = static::update_paragraph_text_indent_selector( $feature_declarations, $settings, $block_name ); + $block_elements = $block_metadata['elements'] ?? array(); // If there are style variations, generate the declarations for them, including any feature selectors the block may have. $style_variation_declarations = array(); $style_variation_custom_css = array(); + $style_variation_responsive_css = array(); $style_variation_layout_metadata = array(); - if ( ! empty( $block_metadata['variations'] ) ) { + if ( ! $media_query && ! empty( $block_metadata['variations'] ) ) { foreach ( $block_metadata['variations'] as $style_variation ) { $style_variation_node = _wp_array_get( $this->theme_json, $style_variation['path'], array() ); $clean_style_variation_selector = trim( $style_variation['selector'] ); @@ -3017,7 +3180,7 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { if ( isset( $block_metadata['name'] ) ) { $block_name = $block_metadata['name']; } elseif ( in_array( 'blocks', $block_metadata['path'], true ) && count( $block_metadata['path'] ) >= 3 ) { - $block_name = $block_metadata['path'][2]; + $block_name = static::get_block_name_from_metadata_path( $block_metadata ); } else { $block_name = null; } @@ -3040,6 +3203,134 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { 'node' => $style_variation_node, ); } + + // Store responsive breakpoint CSS for the style variation. + // This includes both base properties and feature-level selectors. + $variation_responsive_css = ''; + + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( ! isset( $style_variation_node[ $breakpoint ] ) ) { + continue; + } + + $breakpoint_node = $style_variation_node[ $breakpoint ]; + $breakpoint_media = static::RESPONSIVE_BREAKPOINTS[ $breakpoint ]; + // Process feature-level declarations for this breakpoint. + $breakpoint_feature_declarations = static::get_feature_declarations_for_node( $block_metadata, $breakpoint_node ); + $breakpoint_feature_declarations = static::update_paragraph_text_indent_selector( $breakpoint_feature_declarations, $settings, $block_name ); + foreach ( $breakpoint_feature_declarations as $feature_selector => $feature_decl ) { + $clean_feature_selector = preg_replace( '/,\s+/', ',', $feature_selector ); + $shortened_selector = str_replace( $block_metadata['selector'], '', $clean_feature_selector ); + + if ( $block_metadata['selector'] && ! str_contains( $clean_feature_selector, $block_metadata['selector'] ) ) { + /* + * Feature selector is block-level (e.g. `.wp-block-button` for + * dimensions/width) — apply the variation class directly to it. + */ + $feature_element_selector = str_replace( $shortened_selector, '', $clean_style_variation_selector ); + $combined_selectors = str_replace( $feature_element_selector, '', $clean_style_variation_selector ); + } else { + // Prepend the variation selector to the current selector. + $split_selectors = explode( ',', $shortened_selector ); + $updated_selectors = array_map( + static function ( $split_selector ) use ( $clean_style_variation_selector ) { + return $clean_style_variation_selector . $split_selector; + }, + $split_selectors + ); + $combined_selectors = implode( ',', $updated_selectors ); + } + + $feature_ruleset = static::to_ruleset( ':root :where(' . $combined_selectors . ')', $feature_decl ); + $variation_responsive_css .= $breakpoint_media . '{' . $feature_ruleset . '}'; + } + + // Process base properties for this breakpoint. + $breakpoint_declarations = static::compute_style_properties( $breakpoint_node, $settings, null, $this->theme_json ); + if ( ! empty( $breakpoint_declarations ) ) { + $base_ruleset = static::to_ruleset( ':root :where(' . $style_variation['selector'] . ')', $breakpoint_declarations ); + $variation_responsive_css .= $breakpoint_media . '{' . $base_ruleset . '}'; + } + + $breakpoint_pseudo_declarations = static::process_pseudo_selectors( $breakpoint_node, $style_variation['selector'], $settings, $block_name ); + foreach ( $breakpoint_pseudo_declarations as $pseudo_selector => $pseudo_declarations ) { + if ( empty( $pseudo_declarations ) ) { + continue; + } + $pseudo_ruleset = static::to_ruleset( ':root :where(' . $pseudo_selector . ')', $pseudo_declarations ); + $variation_responsive_css .= $breakpoint_media . '{' . $pseudo_ruleset . '}'; + } + + // Process custom CSS for this breakpoint. + if ( isset( $breakpoint_node['css'] ) ) { + $breakpoint_custom_css = static::process_blocks_custom_css( $breakpoint_node['css'], $style_variation['selector'] ); + $variation_responsive_css .= $breakpoint_media . '{' . $breakpoint_custom_css . '}'; + } + + // Process blockGap responsive layout styles for this variation. + if ( isset( $breakpoint_node['spacing']['blockGap'] ) ) { + $variation_layout_metadata = $style_variation; + $variation_layout_metadata['selector'] = $style_variation['selector'] . $block_metadata['css']; + $variation_responsive_css .= $this->get_layout_styles( + $variation_layout_metadata, + array( + 'node' => $breakpoint_node, + 'media_query' => $breakpoint_media, + ) + ); + } + + // Process nested element styles for this breakpoint state. + if ( isset( $breakpoint_node['elements'] ) && ! empty( $block_elements ) ) { + foreach ( $breakpoint_node['elements'] as $element_name => $element_node ) { + if ( ! isset( $block_elements[ $element_name ] ) ) { + continue; + } + + $clean_element_selector = preg_replace( '/,\s+/', ',', $block_elements[ $element_name ] ); + $shortened_selector = str_replace( $block_metadata['selector'], '', $clean_element_selector ); + $split_selectors = explode( ',', $shortened_selector ); + $updated_selectors = array_map( + static function ( $split_selector ) use ( $clean_style_variation_selector ) { + return $clean_style_variation_selector . $split_selector; + }, + $split_selectors + ); + $variation_element_selector = implode( ',', $updated_selectors ); + + $element_declarations = static::compute_style_properties( $element_node, $settings, null, $this->theme_json ); + if ( ! empty( $element_declarations ) ) { + $element_ruleset = static::to_ruleset( ':root :where(' . $variation_element_selector . ')', $element_declarations ); + $variation_responsive_css .= $breakpoint_media . '{' . $element_ruleset . '}'; + } + + if ( isset( $element_node['css'] ) ) { + $element_custom_css = static::process_blocks_custom_css( $element_node['css'], $variation_element_selector ); + $variation_responsive_css .= $breakpoint_media . '{' . $element_custom_css . '}'; + } + + if ( isset( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] ) ) { + foreach ( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] as $pseudo_selector ) { + if ( ! isset( $element_node[ $pseudo_selector ] ) ) { + continue; + } + + $pseudo_declarations = static::compute_style_properties( $element_node[ $pseudo_selector ], $settings, null, $this->theme_json ); + if ( empty( $pseudo_declarations ) ) { + continue; + } + + $pseudo_selector_ruleset = static::to_ruleset( ':root :where(' . static::append_to_selector( $variation_element_selector, $pseudo_selector ) . ')', $pseudo_declarations ); + $variation_responsive_css .= $breakpoint_media . '{' . $pseudo_selector_ruleset . '}'; + } + } + } + } + } + + if ( ! empty( $variation_responsive_css ) ) { + $style_variation_responsive_css[ $style_variation['selector'] ] = $variation_responsive_css; + } } } /* @@ -3065,7 +3356,7 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { $is_processing_block_pseudo = false; $block_pseudo_selector = null; if ( in_array( 'blocks', $block_metadata['path'], true ) && count( $block_metadata['path'] ) >= 4 ) { - $block_name = $block_metadata['path'][2]; // 'core/button' + $block_name = static::get_block_name_from_metadata_path( $block_metadata ); // 'core/button' $last_path_element = $block_metadata['path'][ count( $block_metadata['path'] ) - 1 ]; // ':hover' if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] ) && @@ -3107,7 +3398,7 @@ static function ( $pseudo_selector ) use ( $selector ) { } elseif ( $is_processing_block_pseudo ) { // Process block pseudo-selector styles // For block pseudo-selectors, we need to get the block data first, then access the pseudo-selector - $block_name = $block_metadata['path'][2]; // 'core/button' + $block_name = static::get_block_name_from_metadata_path( $block_metadata ); // 'core/button' $block_data = _wp_array_get( $this->theme_json, array( 'styles', 'blocks', $block_name ), array() ); $pseudo_data = $block_data[ $block_pseudo_selector ] ?? array(); @@ -3224,6 +3515,9 @@ static function ( $pseudo_selector ) use ( $selector ) { if ( isset( $style_variation_custom_css[ $style_variation_selector ] ) ) { $block_rules .= $style_variation_custom_css[ $style_variation_selector ]; } + if ( isset( $style_variation_responsive_css[ $style_variation_selector ] ) ) { + $block_rules .= $style_variation_responsive_css[ $style_variation_selector ]; + } } // 7. Generate and append any custom CSS rules. @@ -3231,6 +3525,13 @@ static function ( $pseudo_selector ) use ( $selector ) { $block_rules .= $this->process_blocks_custom_css( $node['css'], $selector ); } + // 8. Wrap the entire block output in a media query if this is a responsive node. + // Responsive nodes are created by get_block_nodes() for each breakpoint and carry + // a 'media_query' key. + if ( $media_query && ! empty( $block_rules ) ) { + $block_rules = $media_query . '{' . $block_rules . '}'; + } + return $block_rules; } @@ -3726,6 +4027,10 @@ public static function remove_insecure_properties( $theme_json, $origin = 'theme continue; } + $block_name = in_array( 'blocks', $metadata['path'], true ) + ? static::get_block_name_from_metadata_path( $metadata ) + : null; + // The global styles custom CSS is not sanitized, but can only be edited by users with 'edit_css' capability. if ( isset( $input['css'] ) && current_user_can( 'edit_css' ) ) { $output = $input; @@ -3751,6 +4056,34 @@ public static function remove_insecure_properties( $theme_json, $origin = 'theme } } + // Re-add and process responsive breakpoint styles. + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $input[ $breakpoint ] ) ) { + $output[ $breakpoint ] = static::remove_insecure_styles( $input[ $breakpoint ] ); + + if ( isset( $input[ $breakpoint ]['elements'] ) ) { + $output[ $breakpoint ]['elements'] = static::remove_insecure_element_styles( $input[ $breakpoint ]['elements'] ); + } + + if ( isset( $input[ $breakpoint ]['blocks'] ) ) { + $output[ $breakpoint ]['blocks'] = static::remove_insecure_inner_block_styles( $input[ $breakpoint ]['blocks'] ); + } + + if ( $block_name && isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] ) ) { + foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] as $pseudo_selector ) { + if ( isset( $input[ $breakpoint ][ $pseudo_selector ] ) ) { + $output[ $breakpoint ][ $pseudo_selector ] = static::remove_insecure_styles( $input[ $breakpoint ][ $pseudo_selector ] ); + } + } + } + + // Responsive custom CSS is allowed for users with 'edit_css' capability. + if ( isset( $input[ $breakpoint ]['css'] ) && current_user_can( 'edit_css' ) ) { + $output[ $breakpoint ]['css'] = $input[ $breakpoint ]['css']; + } + } + } + if ( ! empty( $output ) ) { _wp_array_set( $sanitized, $metadata['path'], $output ); } @@ -3772,6 +4105,34 @@ public static function remove_insecure_properties( $theme_json, $origin = 'theme $variation_output['elements'] = static::remove_insecure_element_styles( $variation_input['elements'] ); } + // Re-add and process responsive breakpoint styles for variations. + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $variation_input[ $breakpoint ] ) ) { + $variation_output[ $breakpoint ] = static::remove_insecure_styles( $variation_input[ $breakpoint ] ); + + if ( isset( $variation_input[ $breakpoint ]['elements'] ) ) { + $variation_output[ $breakpoint ]['elements'] = static::remove_insecure_element_styles( $variation_input[ $breakpoint ]['elements'] ); + } + + if ( isset( $variation_input[ $breakpoint ]['blocks'] ) ) { + $variation_output[ $breakpoint ]['blocks'] = static::remove_insecure_inner_block_styles( $variation_input[ $breakpoint ]['blocks'] ); + } + + if ( $block_name && isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] ) ) { + foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] as $pseudo_selector ) { + if ( isset( $variation_input[ $breakpoint ][ $pseudo_selector ] ) ) { + $variation_output[ $breakpoint ][ $pseudo_selector ] = static::remove_insecure_styles( $variation_input[ $breakpoint ][ $pseudo_selector ] ); + } + } + } + + // Responsive custom CSS is allowed for users with 'edit_css' capability. + if ( isset( $variation_input[ $breakpoint ]['css'] ) && current_user_can( 'edit_css' ) ) { + $variation_output[ $breakpoint ]['css'] = $variation_input[ $breakpoint ]['css']; + } + } + } + if ( ! empty( $variation_output ) ) { _wp_array_set( $sanitized, $variation['path'], $variation_output ); } @@ -3832,6 +4193,21 @@ protected static function remove_insecure_element_styles( $elements ) { } } + // Re-add and process responsive breakpoint styles for elements. + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $element_input[ $breakpoint ] ) ) { + $element_output[ $breakpoint ] = static::remove_insecure_styles( $element_input[ $breakpoint ] ); + + if ( isset( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] ) ) { + foreach ( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] as $pseudo_selector ) { + if ( isset( $element_input[ $breakpoint ][ $pseudo_selector ] ) ) { + $element_output[ $breakpoint ][ $pseudo_selector ] = static::remove_insecure_styles( $element_input[ $breakpoint ][ $pseudo_selector ] ); + } + } + } + } + } + $sanitized[ $element_name ] = $element_output; } } @@ -3855,6 +4231,21 @@ protected static function remove_insecure_inner_block_styles( $blocks ) { $block_output['elements'] = static::remove_insecure_element_styles( $block_input['elements'] ); } + // Re-add and process responsive breakpoint styles for inner blocks. + foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + if ( isset( $block_input[ $breakpoint ] ) ) { + $block_output[ $breakpoint ] = static::remove_insecure_styles( $block_input[ $breakpoint ] ); + + if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_type ] ) ) { + foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_type ] as $pseudo_selector ) { + if ( isset( $block_input[ $breakpoint ][ $pseudo_selector ] ) ) { + $block_output[ $breakpoint ][ $pseudo_selector ] = static::remove_insecure_styles( $block_input[ $breakpoint ][ $pseudo_selector ] ); + } + } + } + } + } + $sanitized[ $block_type ] = $block_output; } return $sanitized; @@ -4843,4 +5234,16 @@ protected static function get_valid_block_style_variations( $blocks_metadata = a return $valid_variations; } + + /** + * Extracts the block name from the block metadata path. + * + * @since 7.1 + * + * @param array $block_metadata Block metadata. + * @return string|null The block name or null if not found. + */ + private static function get_block_name_from_metadata_path( $block_metadata ) { + return $block_metadata['path'][2] ?? null; + } } diff --git a/tests/phpunit/tests/theme/wpThemeJson.php b/tests/phpunit/tests/theme/wpThemeJson.php index ef1da85ce76d3..7eda511e1d9ec 100644 --- a/tests/phpunit/tests/theme/wpThemeJson.php +++ b/tests/phpunit/tests/theme/wpThemeJson.php @@ -936,6 +936,329 @@ public function test_get_styles_for_block_handles_whitelisted_element_pseudo_sel $this->assertSame( $focus_style, $theme_json->get_styles_for_block( $focus_node ) ); } + /** + * @ticket 65164 + */ + public function test_get_styles_for_block_responsive_feature_selector_not_duplicated_on_base_selector() { + register_block_type( + 'test/responsive-feature', + array( + 'api_version' => 3, + 'selectors' => array( + 'root' => '.wp-block-test-responsive-feature', + 'color' => '.wp-block-test-responsive-feature .color-target', + ), + ) + ); + + $theme_json = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'test/responsive-feature' => array( + 'mobile' => array( + 'color' => array( + 'text' => 'red', + ), + ), + ), + ), + ), + ) + ); + + $base_metadata = array( + 'name' => 'test/responsive-feature', + 'path' => array( 'styles', 'blocks', 'test/responsive-feature' ), + 'selector' => '.wp-block-test-responsive-feature', + 'selectors' => array( + 'color' => '.wp-block-test-responsive-feature .color-target', + ), + ); + + $mobile_metadata = array( + 'name' => 'test/responsive-feature', + 'path' => array( 'styles', 'blocks', 'test/responsive-feature', 'mobile' ), + 'selector' => '.wp-block-test-responsive-feature', + 'selectors' => array( + 'color' => '.wp-block-test-responsive-feature .color-target', + ), + 'media_query' => '@media (width <= 480px)', + ); + + $actual_styles = $theme_json->get_styles_for_block( $base_metadata ); + $actual_styles .= $theme_json->get_styles_for_block( $mobile_metadata ); + + unregister_block_type( 'test/responsive-feature' ); + + $this->assertStringContainsString( + '@media (width <= 480px){:root :where(.wp-block-test-responsive-feature .color-target){color: red;}}', + $actual_styles + ); + $this->assertStringNotContainsString( + '@media (width <= 480px){:root :where(.wp-block-test-responsive-feature){color: red;}}', + $actual_styles + ); + } + + /** + * @ticket 65164 + */ + public function test_get_styles_for_block_outputs_responsive_block_gap_after_default_gap() { + $theme_json = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'settings' => array( + 'spacing' => array( + 'blockGap' => true, + ), + ), + 'styles' => array( + 'blocks' => array( + 'core/group' => array( + 'spacing' => array( + 'blockGap' => '5rem', + ), + 'mobile' => array( + 'spacing' => array( + 'blockGap' => '2rem', + ), + ), + ), + ), + ), + ) + ); + + $base_metadata = array( + 'name' => 'core/group', + 'path' => array( 'styles', 'blocks', 'core/group' ), + 'selector' => '.wp-block-group', + 'css' => '.wp-block-group', + ); + + $mobile_metadata = array( + 'name' => 'core/group', + 'path' => array( 'styles', 'blocks', 'core/group', 'mobile' ), + 'selector' => '.wp-block-group', + 'css' => '.wp-block-group', + 'media_query' => '@media (width <= 480px)', + ); + + $actual_styles = $theme_json->get_styles_for_block( $base_metadata ); + $actual_styles .= $theme_json->get_styles_for_block( $mobile_metadata ); + + $default_gap = ':root :where(.wp-block-group-is-layout-flex){gap: 5rem;}'; + $mobile_gap = ':root :where(.wp-block-group-is-layout-flex){gap: 2rem;}'; + + $this->assertStringContainsString( $default_gap, $actual_styles ); + $this->assertStringContainsString( '@media (width <= 480px)', $actual_styles ); + $this->assertStringContainsString( $mobile_gap, $actual_styles ); + $this->assertLessThan( strpos( $actual_styles, $mobile_gap ), strpos( $actual_styles, $default_gap ) ); + } + + /** + * @ticket 65164 + */ + public function test_get_styles_for_block_responsive_element_pseudo_styles_preserve_order_and_do_not_duplicate_pseudo() { + $theme_json = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/group' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'blue', + ), + ':hover' => array( + 'color' => array( + 'text' => 'navy', + ), + ), + ), + ), + 'mobile' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'red', + ), + ':hover' => array( + 'color' => array( + 'text' => 'darkred', + ), + ), + ), + ), + ), + ), + ), + ), + ) + ); + + $link_selector = '.wp-block-group a:where(:not(.wp-element-button))'; + + // Nodes are assembled in cascade order: default, responsive, pseudo, responsive pseudo. + $link_node = array( + 'path' => array( 'styles', 'blocks', 'core/group', 'elements', 'link' ), + 'selector' => $link_selector, + ); + + $mobile_link_node = array( + 'path' => array( 'styles', 'blocks', 'core/group', 'mobile', 'elements', 'link' ), + 'selector' => $link_selector, + 'media_query' => '@media (width <= 480px)', + ); + + $hover_node = array( + 'path' => array( 'styles', 'blocks', 'core/group', 'elements', 'link' ), + 'selector' => $link_selector . ':hover', + ); + + $mobile_hover_node = array( + 'path' => array( 'styles', 'blocks', 'core/group', 'mobile', 'elements', 'link' ), + 'selector' => $link_selector . ':hover', + 'media_query' => '@media (width <= 480px)', + ); + + $actual_styles = $theme_json->get_styles_for_block( $link_node ); + $actual_styles .= $theme_json->get_styles_for_block( $mobile_link_node ); + $actual_styles .= $theme_json->get_styles_for_block( $hover_node ); + $actual_styles .= $theme_json->get_styles_for_block( $mobile_hover_node ); + + $default_link = ':root :where(.wp-block-group a:where(:not(.wp-element-button))){color: blue;}'; + $mobile_link = '@media (width <= 480px){:root :where(.wp-block-group a:where(:not(.wp-element-button))){color: red;}}'; + $default_hov = ':root :where(.wp-block-group a:where(:not(.wp-element-button)):hover){color: navy;}'; + $mobile_hov = '@media (width <= 480px){:root :where(.wp-block-group a:where(:not(.wp-element-button)):hover){color: darkred;}}'; + + $this->assertStringContainsString( $default_link, $actual_styles ); + $this->assertStringContainsString( $mobile_link, $actual_styles ); + $this->assertStringContainsString( $default_hov, $actual_styles ); + $this->assertStringContainsString( $mobile_hov, $actual_styles ); + + $this->assertLessThan( strpos( $actual_styles, $mobile_link ), strpos( $actual_styles, $default_link ) ); + $this->assertLessThan( strpos( $actual_styles, $default_hov ), strpos( $actual_styles, $mobile_link ) ); + $this->assertLessThan( strpos( $actual_styles, $mobile_hov ), strpos( $actual_styles, $default_hov ) ); + $this->assertStringNotContainsString( ':hover:hover', $actual_styles ); + } + + /** + * @ticket 65164 + */ + public function test_get_styles_for_block_with_style_variations_and_responsive_block_gap() { + register_block_style( + 'core/group', + array( + 'name' => 'withGap', + 'label' => 'With Gap', + ) + ); + + $theme_json = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'settings' => array( + 'spacing' => array( + 'blockGap' => true, + ), + ), + 'styles' => array( + 'blocks' => array( + 'core/group' => array( + 'variations' => array( + 'withGap' => array( + 'spacing' => array( + 'blockGap' => '5rem', + ), + 'mobile' => array( + 'spacing' => array( + 'blockGap' => '2rem', + ), + ), + ), + ), + ), + ), + ), + ) + ); + + $metadata = array( + 'name' => 'core/group', + 'path' => array( 'styles', 'blocks', 'core/group' ), + 'selector' => '.wp-block-group', + 'css' => '.wp-block-group', + 'variations' => array( + array( + 'path' => array( 'styles', 'blocks', 'core/group', 'variations', 'withGap' ), + 'selector' => '.is-style-withGap.wp-block-group', + ), + ), + ); + + $actual_styles = $theme_json->get_styles_for_block( $metadata ); + + unregister_block_style( 'core/group', 'withGap' ); + + $default_gap = ':root :where(.is-style-withGap.wp-block-group.wp-block-group-is-layout-flex){gap: 5rem;}'; + $mobile_gap = ':root :where(.is-style-withGap.wp-block-group.wp-block-group-is-layout-flex){gap: 2rem;}'; + + $this->assertStringContainsString( $default_gap, $actual_styles ); + $this->assertStringContainsString( '@media (width <= 480px)', $actual_styles ); + $this->assertStringContainsString( $mobile_gap, $actual_styles ); + $this->assertLessThan( strpos( $actual_styles, $mobile_gap ), strpos( $actual_styles, $default_gap ) ); + } + + /** + * @ticket 65164 + */ + public function test_get_styles_for_block_outputs_tablet_responsive_styles_only() { + register_block_type( + 'test/tablet-only', + array( + 'api_version' => 3, + ) + ); + + $theme_json = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'test/tablet-only' => array( + 'tablet' => array( + 'color' => array( + 'text' => 'purple', + ), + ), + ), + ), + ), + ) + ); + + $tablet_metadata = array( + 'name' => 'test/tablet-only', + 'path' => array( 'styles', 'blocks', 'test/tablet-only', 'tablet' ), + 'selector' => '.wp-block-test-tablet-only', + 'media_query' => '@media (480px < width <= 782px)', + ); + + $actual_styles = $theme_json->get_styles_for_block( $tablet_metadata ); + + unregister_block_type( 'test/tablet-only' ); + + $this->assertStringContainsString( + '@media (480px < width <= 782px){:root :where(.wp-block-test-tablet-only){color: purple;}}', + $actual_styles + ); + $this->assertStringNotContainsString( '@media (width <= 480px)', $actual_styles ); + } + /** * Tests that if an element has nothing but pseudo selector styles, they are still output by get_stylesheet. * @@ -2859,6 +3182,120 @@ public function test_remove_insecure_properties_removes_unsafe_styles_sub_proper $this->assertEqualSetsWithIndex( $expected, $actual ); } + /** + * @covers WP_Theme_JSON::remove_insecure_properties + * + * @ticket 65164 + */ + public function test_remove_insecure_properties_preserves_responsive_block_element_styles() { + $actual = WP_Theme_JSON::remove_insecure_properties( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/group' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'var:preset|color|dark-gray', + ), + 'mobile' => array( + 'color' => array( + 'text' => 'var:preset|color|dark-pink', + ), + ), + 'tablet' => array( + 'color' => array( + 'text' => 'var:preset|color|dark-red', + ), + ), + ), + ), + ), + ), + ), + ) + ); + + $expected = array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/group' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'var(--wp--preset--color--dark-gray)', + ), + 'mobile' => array( + 'color' => array( + 'text' => 'var(--wp--preset--color--dark-pink)', + ), + ), + 'tablet' => array( + 'color' => array( + 'text' => 'var(--wp--preset--color--dark-red)', + ), + ), + ), + ), + ), + ), + ), + ); + + $this->assertEqualSetsWithIndex( $expected, $actual ); + } + + /** + * @covers WP_Theme_JSON::remove_insecure_properties + * + * @ticket 65164 + */ + public function test_remove_insecure_properties_preserves_responsive_elements_within_block_state() { + $actual = WP_Theme_JSON::remove_insecure_properties( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/group' => array( + 'mobile' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'var:preset|color|dark-pink', + ), + ), + ), + ), + ), + ), + ), + ) + ); + + $expected = array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/group' => array( + 'mobile' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'var(--wp--preset--color--dark-pink)', + ), + ), + ), + ), + ), + ), + ), + ); + + $this->assertEqualSetsWithIndex( $expected, $actual ); + } + /** * @ticket 54336 */ From 3308c65d408c60ac49ec3988f2baed4535d6ce9f Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 2 Jun 2026 06:27:39 +0000 Subject: [PATCH 144/327] Build/Test Tools: Remove unused reusable workflow. The `reusable-performance.yml` workflow is no longer used in any branch, so it can be safely removed. Props mukesh27. Fixes #65380. git-svn-id: https://develop.svn.wordpress.org/trunk@62445 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/performance.yml | 1 - .github/workflows/reusable-performance.yml | 357 --------------------- 2 files changed, 358 deletions(-) delete mode 100644 .github/workflows/reusable-performance.yml diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index d9be2c8842ec4..87832b1c52ca2 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -37,7 +37,6 @@ on: - 'tests/performance/**' # Confirm any changes to relevant workflow files. - '.github/workflows/performance.yml' - - '.github/workflows/reusable-performance.yml' - '.github/workflows/reusable-performance-*.yml' workflow_dispatch: diff --git a/.github/workflows/reusable-performance.yml b/.github/workflows/reusable-performance.yml deleted file mode 100644 index e10022c65380f..0000000000000 --- a/.github/workflows/reusable-performance.yml +++ /dev/null @@ -1,357 +0,0 @@ -## -# A reusable workflow that runs the performance test suite. -## -name: Run performance Tests - -on: - workflow_call: - inputs: - LOCAL_DIR: - description: 'Where to run WordPress from.' - required: false - type: 'string' - default: 'build' - BASE_TAG: - description: 'The version being used for baseline measurements.' - required: false - type: 'string' - default: '6.7.0' - php-version: - description: 'The PHP version to use.' - required: false - type: 'string' - default: 'latest' - memcached: - description: 'Whether to enable memcached.' - required: false - type: 'boolean' - default: false - multisite: - description: 'Whether to use Multisite.' - required: false - type: 'boolean' - default: false - secrets: - CODEVITALS_PROJECT_TOKEN: - description: 'The authorization token for https://www.codevitals.run/project/wordpress.' - required: false - -env: - PUPPETEER_SKIP_DOWNLOAD: true - - # Prevent wp-scripts from downloading extra Playwright browsers, - # since Chromium will be installed in its dedicated step already. - PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: true - - # Performance testing should be performed in an environment reflecting a standard production environment. - LOCAL_WP_DEBUG: false - LOCAL_SCRIPT_DEBUG: false - LOCAL_SAVEQUERIES: false - LOCAL_WP_DEVELOPMENT_MODE: "''" - - # This workflow takes two sets of measurements — one for the current commit, - # and another against a consistent version that is used as a baseline measurement. - # This is done to isolate variance in measurements caused by the GitHub runners - # from differences caused by code changes between commits. The BASE_TAG value here - # represents the version being used for baseline measurements. It should only be - # changed if we want to normalize results against a different baseline. - BASE_TAG: ${{ inputs.BASE_TAG }} - LOCAL_DIR: ${{ inputs.LOCAL_DIR }} - TARGET_REF: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || '' }} - TARGET_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }} - - LOCAL_PHP_MEMCACHED: ${{ inputs.memcached }} - LOCAL_PHP: ${{ inputs.php-version }}${{ 'latest' != inputs.php-version && '-fpm' || '' }} - LOCAL_MULTISITE: ${{ inputs.multisite }} - -# Disable permissions for all available scopes by default. -# Any needed permissions should be configured at the job level. -permissions: {} - -jobs: - # Performs the following steps: - # - Configure environment variables. - # - Checkout repository. - # - Determine the target SHA value (on `workflow_dispatch` only). - # - Set up Node.js. - # - Log debug information. - # - Install npm dependencies. - # - Install Playwright browsers. - # - Build WordPress. - # - Start Docker environment. - # - Install object cache drop-in. - # - Log running Docker containers. - # - Docker debug information. - # - Install WordPress. - # - Enable themes on Multisite. - # - Install WordPress Importer plugin. - # - Import mock data. - # - Deactivate WordPress Importer plugin. - # - Update permalink structure. - # - Install additional languages. - # - Disable external HTTP requests. - # - Disable cron. - # - List defined constants. - # - Install MU plugin. - # - Run performance tests (current commit). - # - Download previous build artifact (target branch or previous commit). - # - Download artifact. - # - Unzip the build. - # - Run any database upgrades. - # - Flush cache. - # - Delete expired transients. - # - Run performance tests (previous/target commit). - # - Set the environment to the baseline version. - # - Run any database upgrades. - # - Flush cache. - # - Delete expired transients. - # - Run baseline performance tests. - # - Archive artifacts. - # - Compare results. - # - Add workflow summary. - # - Set the base sha. - # - Set commit details. - # - Publish performance results. - # - Ensure version-controlled files are not modified or deleted. - performance: - name: ${{ inputs.multisite && 'Multisite' || 'Single site' }} / ${{ inputs.memcached && 'Memcached' || 'Default' }} - runs-on: ubuntu-24.04 - permissions: - contents: read - if: ${{ ! contains( github.event.before, '00000000' ) }} - - steps: - - name: Configure environment variables - run: | - echo "PHP_FPM_UID=$(id -u)" >> "$GITHUB_ENV" - echo "PHP_FPM_GID=$(id -g)" >> "$GITHUB_ENV" - - - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} - fetch-depth: ${{ github.event_name == 'workflow_dispatch' && '2' || '1' }} - persist-credentials: false - - # The `workflow_dispatch` event is the only one missing the needed SHA to target. - - name: Retrieve previous commit SHA (if necessary) - if: ${{ github.event_name == 'workflow_dispatch' }} - run: echo "TARGET_SHA=$(git rev-parse HEAD^1)" >> "$GITHUB_ENV" - - - name: Set up Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: - node-version-file: '.nvmrc' - cache: npm - - - name: Log debug information - run: | - npm --version - node --version - curl --version - git --version - locale -a - - - name: Install npm dependencies - run: npm ci - - - name: Install Playwright browsers - run: npx playwright install --with-deps chromium - - - name: Build WordPress - run: npm run build - - - name: Start Docker environment - run: npm run env:start - - - name: Install object cache drop-in - if: ${{ inputs.memcached }} - run: cp src/wp-content/object-cache.php build/wp-content/object-cache.php - - - name: Log running Docker containers - run: docker ps -a - - - name: Docker debug information - run: | - docker -v - docker compose run --rm mysql mysql --version - docker compose run --rm php php --version - docker compose run --rm php php -m - docker compose run --rm php php -i - docker compose run --rm php locale -a - - - name: Install WordPress - run: npm run env:install - - - name: Enable themes on Multisite - if: ${{ inputs.multisite }} - run: | - npm run env:cli -- theme enable twentytwentyone --network --path="/var/www/${LOCAL_DIR}" - npm run env:cli -- theme enable twentytwentythree --network --path="/var/www/${LOCAL_DIR}" - npm run env:cli -- theme enable twentytwentyfour --network --path="/var/www/${LOCAL_DIR}" - npm run env:cli -- theme enable twentytwentyfive --network --path="/var/www/${LOCAL_DIR}" - - - name: Install WordPress Importer plugin - run: npm run env:cli -- plugin install wordpress-importer --activate --path="/var/www/${LOCAL_DIR}" - - - name: Import mock data - run: | - curl -O https://raw.githubusercontent.com/WordPress/theme-test-data/b9752e0533a5acbb876951a8cbb5bcc69a56474c/themeunittestdata.wordpress.xml - npm run env:cli -- import themeunittestdata.wordpress.xml --authors=create --path="/var/www/${LOCAL_DIR}" - rm themeunittestdata.wordpress.xml - - - name: Deactivate WordPress Importer plugin - run: npm run env:cli -- plugin deactivate wordpress-importer --path="/var/www/${LOCAL_DIR}" - - - name: Install additional languages - run: | - npm run env:cli -- language core install de_DE --path="/var/www/${LOCAL_DIR}" - npm run env:cli -- language plugin install de_DE --all --path="/var/www/${LOCAL_DIR}" - npm run env:cli -- language theme install de_DE --all --path="/var/www/${LOCAL_DIR}" - - # Prevent background update checks from impacting test stability. - - name: Disable external HTTP requests - run: npm run env:cli -- config set WP_HTTP_BLOCK_EXTERNAL true --raw --type=constant --path="/var/www/${LOCAL_DIR}" - - # Prevent background tasks from impacting test stability. - - name: Disable cron - run: npm run env:cli -- config set DISABLE_WP_CRON true --raw --type=constant --path="/var/www/${LOCAL_DIR}" - - - name: List defined constants - run: npm run env:cli -- config list --path="/var/www/${LOCAL_DIR}" - - - name: Install MU plugin - run: | - mkdir "./${LOCAL_DIR}/wp-content/mu-plugins" - cp ./tests/performance/wp-content/mu-plugins/server-timing.php "./${LOCAL_DIR}/wp-content/mu-plugins/server-timing.php" - - - name: Run performance tests (current commit) - run: npm run test:performance - - - name: Download previous build artifact (target branch or previous commit) - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 - id: get-previous-build - with: - script: | - const artifacts = await github.rest.actions.listArtifactsForRepo({ - owner: context.repo.owner, - repo: context.repo.repo, - name: 'wordpress-build-' + process.env.TARGET_SHA, - }); - - const matchArtifact = artifacts.data.artifacts[0]; - - if ( ! matchArtifact ) { - core.setFailed( 'No artifact found!' ); - return false; - } - - const download = await github.rest.actions.downloadArtifact( { - owner: context.repo.owner, - repo: context.repo.repo, - artifact_id: matchArtifact.id, - archive_format: 'zip', - } ); - - const fs = require( 'fs' ); - fs.writeFileSync( process.env.GITHUB_WORKSPACE + '/before.zip', Buffer.from( download.data ) ) - - return true; - - - name: Unzip the build - if: ${{ steps.get-previous-build.outputs.result }} - run: | - unzip "${GITHUB_WORKSPACE}/before.zip" - unzip -o "${GITHUB_WORKSPACE}/wordpress.zip" - - - name: Run any database upgrades - if: ${{ steps.get-previous-build.outputs.result }} - run: npm run env:cli -- core update-db --path="/var/www/${LOCAL_DIR}" - - - name: Flush cache - if: ${{ steps.get-previous-build.outputs.result }} - run: npm run env:cli -- cache flush --path="/var/www/${LOCAL_DIR}" - - - name: Delete expired transients - if: ${{ steps.get-previous-build.outputs.result }} - run: npm run env:cli -- transient delete --expired --path="/var/www/${LOCAL_DIR}" - - - name: Run target performance tests (previous/target commit) - if: ${{ steps.get-previous-build.outputs.result }} - env: - TEST_RESULTS_PREFIX: before - run: npm run test:performance - - - name: Set the environment to the baseline version - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/trunk' }} - run: | - VERSION="${BASE_TAG}" - VERSION="${VERSION%.0}" - npm run env:cli -- core update --version="$VERSION" --force --path="/var/www/${LOCAL_DIR}" - npm run env:cli -- core version --path="/var/www/${LOCAL_DIR}" - - - name: Run any database upgrades - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/trunk' }} - run: npm run env:cli -- core update-db --path="/var/www/${LOCAL_DIR}" - - - name: Flush cache - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/trunk' }} - run: npm run env:cli -- cache flush --path="/var/www/${LOCAL_DIR}" - - - name: Delete expired transients - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/trunk' }} - run: npm run env:cli -- transient delete --expired --path="/var/www/${LOCAL_DIR}" - - - name: Run baseline performance tests - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/trunk' }} - env: - TEST_RESULTS_PREFIX: base - run: npm run test:performance - - - name: Archive artifacts - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - if: always() - with: - name: performance-artifacts${{ inputs.multisite && '-multisite' || '' }}${{ inputs.memcached && '-memcached' || '' }}-${{ github.run_id }} - path: artifacts - if-no-files-found: ignore - include-hidden-files: true - - - name: Compare results - run: node ./tests/performance/compare-results.js "${RUNNER_TEMP}/summary.md" - - - name: Add workflow summary - run: cat "${RUNNER_TEMP}/summary.md" >> "$GITHUB_STEP_SUMMARY" - - - name: Set the base sha - # Only needed when publishing results. - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/trunk' && ! inputs.memcached && ! inputs.multisite }} - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 - id: base-sha - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const baseRef = await github.rest.git.getRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: 'tags/' + process.env.BASE_TAG, - }); - return baseRef.data.object.sha; - - - name: Publish performance results - # Only publish results on pushes to trunk. - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/trunk' && ! inputs.memcached && ! inputs.multisite }} - env: - BASE_SHA: ${{ steps.base-sha.outputs.result }} - CODEVITALS_PROJECT_TOKEN: ${{ secrets.CODEVITALS_PROJECT_TOKEN }} - HOST_NAME: "codevitals.run" - run: | - if [ -z "$CODEVITALS_PROJECT_TOKEN" ]; then - echo "Performance results could not be published. 'CODEVITALS_PROJECT_TOKEN' is not set" - exit 1 - fi - COMMITTED_AT="$(git show -s "$GITHUB_SHA" --format='%cI')" - node ./tests/performance/log-results.js "$CODEVITALS_PROJECT_TOKEN" trunk "$GITHUB_SHA" "$BASE_SHA" "$COMMITTED_AT" "$HOST_NAME" - - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code From 026d3e20b53d52a62e63c0edfb95b846de65af6e Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Tue, 2 Jun 2026 11:09:38 +0000 Subject: [PATCH 145/327] Plugins: Fix plugin card width calculation on the Add Plugins screen. Replace the obsolete float-based layout with the flex container's `gap`, and remove the now-unnecessary `float`, `clear`, and `:nth-child` margin overrides. This eliminates the slight width discrepancy that left a gap on the right edge. Developed in https://github.com/WordPress/wordpress-develop/pull/10596. Follow-up to r29047, r29219. Props abdalsalaam, sabernhardt, westonruter. See #28785. Fixes #64355. git-svn-id: https://develop.svn.wordpress.org/trunk@62446 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/list-tables.css | 57 +++----------------------------- 1 file changed, 4 insertions(+), 53 deletions(-) diff --git a/src/wp-admin/css/list-tables.css b/src/wp-admin/css/list-tables.css index fd28e5176f1b1..56d88d6801ddb 100644 --- a/src/wp-admin/css/list-tables.css +++ b/src/wp-admin/css/list-tables.css @@ -1474,6 +1474,7 @@ ul.cat-checklist input[name="post_category[]"]:indeterminate::before { .plugin-install-php #the-list { display: flex; flex-wrap: wrap; + gap: 16px; } .plugin-install-php .plugin-card { @@ -1505,9 +1506,6 @@ ul.cat-checklist input[name="post_category[]"]:indeterminate::before { } .plugin-card { - float: left; - margin: 0 8px 16px; - width: 48.5%; width: calc( 50% - 8px ); background-color: #ffffff; border: 1px solid rgb(0, 0, 0, 0.1); @@ -1516,62 +1514,15 @@ ul.cat-checklist input[name="post_category[]"]:indeterminate::before { overflow: hidden; } -.plugin-card:nth-child(odd) { - clear: both; - margin-left: 0; -} - -.plugin-card:nth-child(even) { - margin-right: 0; -} - -@media screen and (min-width: 1600px) and ( max-width: 2299px ) { +@media screen and (min-width: 1600px) { .plugin-card { - width: 30%; - width: calc( 33.1% - 8px ); - } - - .plugin-card:nth-child(odd) { - clear: none; - margin-left: 8px; - } - - .plugin-card:nth-child(even) { - margin-right: 8px; - } - - .plugin-card:nth-child(3n+1) { - clear: both; - margin-left: 0; - } - - .plugin-card:nth-child(3n) { - margin-right: 0; + width: calc( (100% - 32px) / 3 ); } } @media screen and (min-width: 2300px) { .plugin-card { - width: 25%; - width: calc( 25% - 12px ); - } - - .plugin-card:nth-child(odd) { - clear: none; - margin-left: 8px; - } - - .plugin-card:nth-child(even) { - margin-right: 8px; - } - - .plugin-card:nth-child(4n+1) { - clear: both; - margin-left: 0; - } - - .plugin-card:nth-child(4n) { - margin-right: 0; + width: calc( (100% - 48px) / 4 ); } } From da7588be089fbaeb05ecb4d79dca3cf11815698d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Tue, 2 Jun 2026 11:41:48 +0000 Subject: [PATCH 146/327] REST API: Allow-list ability schema response keywords Switch the Abilities REST API schema response preparation from an internal-keyword deny-list to an allow-list, so ability input and output schemas expose only keywords from `rest_get_allowed_schema_keywords()\` plus a small set of additional draft-04 keywords. Unknown or WordPress-internal keywords (e.g. `sanitize_callback`, `example`, `context`, `readonly`) are no longer exposed to REST clients by default. Props gziolo, jorgefilipecosta. See #64955. git-svn-id: https://develop.svn.wordpress.org/trunk@62447 602fd350-edb4-49c9-b593-d223f7449a82 --- ...s-wp-rest-abilities-v1-list-controller.php | 45 +++++++++++------ .../wpRestAbilitiesV1ListController.php | 48 ++++++++++++++----- 2 files changed, 67 insertions(+), 26 deletions(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php index 85464fd9dd302..c1c20b3052350 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php @@ -189,15 +189,23 @@ public function get_item_permissions_check( $request ) { } /** - * WordPress-internal schema keywords to strip from REST responses. + * Additional schema keywords to preserve in REST responses. * - * @since 7.0.0 - * @var array<string, true> + * Ability schemas are exposed to clients as JSON Schema. Preserve additional + * draft-04 keywords so clients can validate richer schemas, even when some + * of those keywords are not enforced by the server-side REST schema validator. + * + * @since 7.1.0 + * @var string[] */ - private const INTERNAL_SCHEMA_KEYWORDS = array( - 'sanitize_callback' => true, - 'validate_callback' => true, - 'arg_options' => true, + private const ADDITIONAL_ALLOWED_SCHEMA_KEYWORDS = array( + 'required', + 'allOf', + 'not', + '$ref', + 'definitions', + 'dependencies', + 'additionalItems', ); /** @@ -217,12 +225,11 @@ private function is_associative_array( $value ): bool { /** * Transforms an ability schema for REST response output. * - * Ability schemas may include WordPress-internal properties like - * `sanitize_callback`, `validate_callback`, and `arg_options` that are - * used server-side but are not valid JSON Schema keywords. This method - * removes those specific keys so they are not exposed in REST responses. - * It also converts empty array defaults to objects when the schema type is - * 'object' to ensure proper JSON serialization as {} instead of []. + * Ability schemas may include WordPress-internal properties or unsupported + * schema keywords that should not be exposed in REST responses. This method + * strips keys not recognized by the REST API schema handling. It also + * converts empty array defaults to objects when the schema type is 'object' + * to ensure proper JSON serialization as {} instead of []. * * @since 7.1.0 * @@ -237,7 +244,17 @@ private function prepare_schema_for_response( array $schema ): array { } } - $schema = array_diff_key( $schema, self::INTERNAL_SCHEMA_KEYWORDS ); + // Computed once and reused across the recursive calls for every schema node. + static $allowed_keywords = null; + $allowed_keywords ??= array_fill_keys( + array_merge( + rest_get_allowed_schema_keywords(), + self::ADDITIONAL_ALLOWED_SCHEMA_KEYWORDS + ), + true + ); + + $schema = array_intersect_key( $schema, $allowed_keywords ); // Sub-schema maps: keys are user-defined, values are sub-schemas. // Note: 'dependencies' values can also be property-dependency arrays diff --git a/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php b/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php index 5ba688cb57c79..9513d372b16d8 100644 --- a/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php +++ b/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php @@ -829,23 +829,28 @@ public function test_filter_by_namespace_still_respects_show_in_rest(): void { } /** - * Test that WordPress-internal schema keywords are stripped from ability schemas in REST response. + * Test that schema keywords outside the allow-list are stripped from ability schemas in REST response. * * @ticket 65035 */ - public function test_internal_schema_keywords_stripped_from_response(): void { + public function test_unsupported_schema_keywords_stripped_from_response(): void { $this->register_test_ability( - 'test/with-internal-keywords', + 'test/with-unsupported-keywords', array( - 'label' => 'Test Internal Keywords', - 'description' => 'Tests stripping of internal schema keywords', + 'label' => 'Test Unsupported Keywords', + 'description' => 'Tests stripping of unsupported schema keywords', 'category' => 'general', 'input_schema' => array( 'type' => 'object', + 'required' => array( 'content' ), 'properties' => array( 'content' => array( 'type' => 'string', 'description' => 'The content value.', + 'example' => 'example content', + 'examples' => array( 'example content' ), + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, 'sanitize_callback' => 'sanitize_text_field', 'validate_callback' => 'is_string', 'arg_options' => array( 'sanitize_callback' => 'wp_kses_post' ), @@ -854,7 +859,13 @@ public function test_internal_schema_keywords_stripped_from_response(): void { ), 'output_schema' => array( 'type' => 'string', + 'example' => 'example output', + 'examples' => array( 'example output' ), + 'context' => array( 'view', 'edit', 'embed' ), + 'readonly' => true, 'sanitize_callback' => 'sanitize_text_field', + 'validate_callback' => 'is_string', + 'arg_options' => array( 'sanitize_callback' => 'wp_kses_post' ), ), 'execute_callback' => static function ( $input ) { return $input['content']; @@ -864,7 +875,7 @@ public function test_internal_schema_keywords_stripped_from_response(): void { ) ); - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/with-internal-keywords' ); + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/with-unsupported-keywords' ); $response = $this->server->dispatch( $request ); $this->assertSame( 200, $response->get_status() ); @@ -875,18 +886,29 @@ public function test_internal_schema_keywords_stripped_from_response(): void { $this->assertArrayHasKey( 'content', $data['input_schema']['properties'] ); $this->assertArrayHasKey( 'output_schema', $data ); - // Verify internal keywords are stripped from input_schema properties. + // Verify unsupported schema keywords are stripped from input_schema properties. $content_schema = $data['input_schema']['properties']['content']; $this->assertArrayNotHasKey( 'sanitize_callback', $content_schema ); $this->assertArrayNotHasKey( 'validate_callback', $content_schema ); $this->assertArrayNotHasKey( 'arg_options', $content_schema ); + $this->assertArrayNotHasKey( 'example', $content_schema ); + $this->assertArrayNotHasKey( 'examples', $content_schema ); + $this->assertArrayNotHasKey( 'context', $content_schema ); + $this->assertArrayNotHasKey( 'readonly', $content_schema ); // Verify valid JSON Schema keywords are preserved. $this->assertSame( 'string', $content_schema['type'] ); $this->assertSame( 'The content value.', $content_schema['description'] ); + $this->assertSame( array( 'content' ), $data['input_schema']['required'] ); // Verify internal keywords are stripped from output_schema. $this->assertArrayNotHasKey( 'sanitize_callback', $data['output_schema'] ); + $this->assertArrayNotHasKey( 'validate_callback', $data['output_schema'] ); + $this->assertArrayNotHasKey( 'arg_options', $data['output_schema'] ); + $this->assertArrayNotHasKey( 'example', $data['output_schema'] ); + $this->assertArrayNotHasKey( 'examples', $data['output_schema'] ); + $this->assertArrayNotHasKey( 'context', $data['output_schema'] ); + $this->assertArrayNotHasKey( 'readonly', $data['output_schema'] ); $this->assertSame( 'string', $data['output_schema']['type'] ); } @@ -947,19 +969,20 @@ public function test_nested_empty_object_schema_defaults_prepared_for_response() } /** - * Test that internal schema keywords are stripped from nested sub-schema locations. + * Test that schema keywords outside the allow-list are stripped from nested sub-schema locations. * * @ticket 64098 */ - public function test_internal_schema_keywords_stripped_from_nested_sub_schemas(): void { + public function test_unsupported_schema_keywords_stripped_from_nested_sub_schemas(): void { $this->register_test_ability( - 'test/nested-internal-keywords', + 'test/nested-unsupported-keywords', array( - 'label' => 'Test Nested Keywords', + 'label' => 'Test Nested Unsupported Keywords', 'description' => 'Tests stripping from all sub-schema locations', 'category' => 'general', 'input_schema' => array( 'type' => 'object', + '$ref' => '#/definitions/address', 'anyOf' => array( array( 'type' => 'object', @@ -1053,7 +1076,7 @@ public function test_internal_schema_keywords_stripped_from_nested_sub_schemas() ) ); - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/nested-internal-keywords' ); + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/nested-unsupported-keywords' ); $response = $this->server->dispatch( $request ); $this->assertSame( 200, $response->get_status() ); @@ -1061,6 +1084,7 @@ public function test_internal_schema_keywords_stripped_from_nested_sub_schemas() $data = $response->get_data(); // Verify internal keywords are stripped from anyOf sub-schemas. + $this->assertSame( '#/definitions/address', $data['input_schema']['$ref'] ); $this->assertArrayHasKey( 'anyOf', $data['input_schema'] ); $this->assertArrayNotHasKey( 'sanitize_callback', $data['input_schema']['anyOf'][0] ); $this->assertSame( 'object', $data['input_schema']['anyOf'][0]['type'] ); From f2359ee77d9699a67dba5cb19cdaec4b82325a06 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Tue, 2 Jun 2026 13:58:44 +0000 Subject: [PATCH 147/327] Plugins: Hide the search form on the Favorites tab. The plugin search form does not apply to the Favorites tab, which instead expects a WordPress.org username to look up a user's favorited plugins. Rendering the term-based search form there was misleading. Update `WP_Plugin_Install_List_Table::views()` to read the global `$tab` and skip `install_search_form()` when the favorites tab is active, while leaving the form in place on the Featured, Popular, and Recommended tabs. Developed in https://github.com/WordPress/wordpress-develop/pull/11457. Props manishxdp, bor0, westonruter, shailu25, sabbir1991. Fixes #65026. git-svn-id: https://develop.svn.wordpress.org/trunk@62448 602fd350-edb4-49c9-b593-d223f7449a82 --- .../includes/class-wp-plugin-install-list-table.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/wp-admin/includes/class-wp-plugin-install-list-table.php b/src/wp-admin/includes/class-wp-plugin-install-list-table.php index a029d725d7b75..7c54aefca1310 100644 --- a/src/wp-admin/includes/class-wp-plugin-install-list-table.php +++ b/src/wp-admin/includes/class-wp-plugin-install-list-table.php @@ -331,8 +331,12 @@ protected function get_views() { /** * Overrides parent views so we can use the filter bar display. + * + * @global string $tab The current tab. */ public function views() { + global $tab; + $views = $this->get_views(); /** This filter is documented in wp-admin/includes/class-wp-list-table.php */ @@ -358,7 +362,11 @@ public function views() { ?> </ul> - <?php install_search_form(); ?> + <?php + if ( 'favorites' !== $tab ) { + install_search_form(); + } + ?> </div> <?php } From 63bf1d9049b62ff6cbaeb430130abf9f2e61e994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Tue, 2 Jun 2026 14:08:49 +0000 Subject: [PATCH 148/327] Abilities API: Normalize `required` schema shape for REST responses Ability schemas are a public contract that REST clients, including the `@wordpress/abilities` JavaScript client, validate against as standard JSON Schema. The `required` keyword must therefore use the draft-04 array-of-property-names form, not the draft-03 per-property boolean that `rest_validate_value_from_schema()` also accepts on the server. In `WP_REST_Abilities_V1_List_Controller::prepare_schema_for_response()`, collect per-property `required: true` booleans into a parent `required` array, recursively and inside array `items`. Strip `required: false` and boolean `required` values with no draft-04 equivalent, and honor `rest_validate_object_value_from_schema()` precedence where an existing draft-04 array wins. Only the REST response copy is rewritten; stored schemas and server-side validation are unchanged. Props gziolo, westonruter, jorgefilipecosta. See #64955. git-svn-id: https://develop.svn.wordpress.org/trunk@62449 602fd350-edb4-49c9-b593-d223f7449a82 --- ...s-wp-rest-abilities-v1-list-controller.php | 45 ++- .../tests/rest-api/rest-schema-validation.php | 25 ++ .../wpRestAbilitiesV1ListController.php | 306 ++++++++++++++++++ 3 files changed, 375 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php index c1c20b3052350..9fd251815b383 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php @@ -225,11 +225,20 @@ private function is_associative_array( $value ): bool { /** * Transforms an ability schema for REST response output. * + * The input and output schemas are a public contract: REST clients (such as + * the `@wordpress/abilities` JS client) consume them as standard JSON Schema + * and validate ability input and output against them. The response must + * therefore use JSON Schema draft-04 forms that standard validators + * understand, not the WordPress-internal conventions that + * `rest_validate_value_from_schema()` also accepts on the server. + * * Ability schemas may include WordPress-internal properties or unsupported * schema keywords that should not be exposed in REST responses. This method * strips keys not recognized by the REST API schema handling. It also * converts empty array defaults to objects when the schema type is 'object' - * to ensure proper JSON serialization as {} instead of []. + * to ensure proper JSON serialization as {} instead of [], and normalizes + * the `required` keyword from the draft-03 per-property boolean form into + * the draft-04 array of property names. * * @since 7.1.0 * @@ -256,6 +265,40 @@ private function prepare_schema_for_response( array $schema ): array { $schema = array_intersect_key( $schema, $allowed_keywords ); + // Collect draft-03 per-property `required: true` flags into a draft-04 + // `required` array of property names on the parent object schema. + // + // This mirrors rest_validate_object_value_from_schema(), where a draft-04 + // `required` array takes precedence: when one is present, per-property + // booleans are ignored during validation. They are therefore left out of + // the array here as well (but still stripped from the output) so the + // published schema describes exactly what gets enforced. + if ( isset( $schema['properties'] ) && is_array( $schema['properties'] ) ) { + $has_required_array = isset( $schema['required'] ) && is_array( $schema['required'] ); + $required = array(); + foreach ( $schema['properties'] as $property => &$property_schema ) { + if ( $this->is_associative_array( $property_schema ) && isset( $property_schema['required'] ) && is_bool( $property_schema['required'] ) ) { + if ( ! $has_required_array && true === $property_schema['required'] ) { + $required[] = (string) $property; + } + unset( $property_schema['required'] ); + } + } + unset( $property_schema ); + + // Property keys are unique, so the collected list needs no deduplication. + // When a draft-04 array is already present, leave it untouched. + if ( ! $has_required_array && count( $required ) > 0 ) { + $schema['required'] = $required; + } + } + + // A boolean `required` outside of an object's property list has no draft-04 + // equivalent, so drop it rather than emit an invalid keyword. + if ( isset( $schema['required'] ) && is_bool( $schema['required'] ) ) { + unset( $schema['required'] ); + } + // Sub-schema maps: keys are user-defined, values are sub-schemas. // Note: 'dependencies' values can also be property-dependency arrays // (numeric arrays of strings) which are skipped via wp_is_numeric_array(). diff --git a/tests/phpunit/tests/rest-api/rest-schema-validation.php b/tests/phpunit/tests/rest-api/rest-schema-validation.php index ce8875c3e9339..f83c4817718c4 100644 --- a/tests/phpunit/tests/rest-api/rest-schema-validation.php +++ b/tests/phpunit/tests/rest-api/rest-schema-validation.php @@ -1505,6 +1505,31 @@ public function data_required_deeply_nested_property() { ); } + /** + * A draft-04 `required` array takes precedence over per-property + * `required` booleans on the same object node: the booleans are ignored. + * + * @ticket 64955 + */ + public function test_required_v4_array_takes_precedence_over_v3_booleans() { + $schema = array( + 'type' => 'object', + 'required' => array( 'listed' ), + 'properties' => array( + 'listed' => array( 'type' => 'string' ), + 'flagged' => array( + 'type' => 'string', + 'required' => true, // Ignored because the array is present. + ), + ), + ); + + // Missing the array-listed prop fails. + $this->assertWPError( rest_validate_value_from_schema( array( 'flagged' => 'x' ), $schema ) ); + // Missing only the boolean-flagged prop passes — the boolean is not enforced. + $this->assertTrue( rest_validate_value_from_schema( array( 'listed' => 'x' ), $schema ) ); + } + /** * @ticket 51023 */ diff --git a/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php b/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php index 9513d372b16d8..20a773bea1628 100644 --- a/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php +++ b/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php @@ -1147,4 +1147,310 @@ public function test_unsupported_schema_keywords_stripped_from_nested_sub_schema $this->assertArrayNotHasKey( 'sanitize_callback', $data['output_schema']['additionalItems'] ); $this->assertSame( 'boolean', $data['output_schema']['additionalItems']['type'] ); } + + /** + * Test that per-property `required` booleans become a draft-04 `required` array. + * + * @ticket 64955 + */ + public function test_required_property_booleans_converted_to_draft_04_array(): void { + $this->register_test_ability( + 'test/required-booleans', + array( + 'label' => 'Required Booleans', + 'description' => 'Tests conversion of per-property required booleans.', + 'category' => 'general', + 'input_schema' => array( + 'type' => 'object', + 'properties' => array( + 'title' => array( + 'type' => 'string', + 'required' => true, + ), + 'content' => array( + 'type' => 'string', + 'required' => true, + ), + 'optional' => array( + 'type' => 'string', + ), + ), + ), + 'output_schema' => array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'type' => 'integer', + 'required' => true, + ), + ), + ), + 'execute_callback' => static function (): array { + return array( 'id' => 1 ); + }, + 'permission_callback' => '__return_true', + 'meta' => array( 'show_in_rest' => true ), + ) + ); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-booleans' ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $data = $response->get_data(); + + // The `required` array lists the names of the properties flagged as required. + $this->assertArrayHasKey( 'required', $data['input_schema'] ); + $this->assertSameSets( array( 'title', 'content' ), $data['input_schema']['required'] ); + + // The boolean flag is removed from each property sub-schema. + $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['title'] ); + $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['content'] ); + $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['optional'] ); + + // Output schemas are normalized the same way. + $this->assertSame( array( 'id' ), $data['output_schema']['required'] ); + $this->assertArrayNotHasKey( 'required', $data['output_schema']['properties']['id'] ); + } + + /** + * Test that per-property `required` booleans are converted in nested object schemas. + * + * @ticket 64955 + */ + public function test_required_booleans_converted_in_nested_object_schemas(): void { + $this->register_test_ability( + 'test/required-nested', + array( + 'label' => 'Required Nested', + 'description' => 'Tests conversion within nested object schemas.', + 'category' => 'general', + 'input_schema' => array( + 'type' => 'object', + 'properties' => array( + 'address' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'street' => array( + 'type' => 'string', + 'required' => true, + ), + 'city' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'execute_callback' => static function () { + return null; + }, + 'permission_callback' => '__return_true', + 'meta' => array( 'show_in_rest' => true ), + ) + ); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-nested' ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $data = $response->get_data(); + $address = $data['input_schema']['properties']['address']; + + // The outer object lists the nested object as a required property. + $this->assertSame( array( 'address' ), $data['input_schema']['required'] ); + + // The nested object's own boolean flag is replaced by a draft-04 array + // collecting its own required properties (proving the boolean was converted). + $this->assertSame( array( 'street' ), $address['required'] ); + $this->assertArrayNotHasKey( 'required', $address['properties']['street'] ); + $this->assertArrayNotHasKey( 'required', $address['properties']['city'] ); + } + + /** + * Test that `required: false` is removed without emitting an empty `required` array. + * + * @ticket 64955 + */ + public function test_required_false_booleans_removed_without_required_array(): void { + $this->register_test_ability( + 'test/required-false', + array( + 'label' => 'Required False', + 'description' => 'Tests that required:false is stripped.', + 'category' => 'general', + 'input_schema' => array( + 'type' => 'object', + 'properties' => array( + 'maybe' => array( + 'type' => 'string', + 'required' => false, + ), + ), + ), + 'execute_callback' => static function () { + return null; + }, + 'permission_callback' => '__return_true', + 'meta' => array( 'show_in_rest' => true ), + ) + ); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-false' ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $data = $response->get_data(); + + $this->assertArrayNotHasKey( 'required', $data['input_schema'] ); + $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['maybe'] ); + } + + /** + * Test that an existing draft-04 `required` array takes precedence over per-property booleans. + * + * This mirrors rest_validate_object_value_from_schema(), which ignores + * per-property `required` booleans when a draft-04 `required` array is + * present, so the published schema matches what is actually enforced. + * + * @ticket 64955 + */ + public function test_required_draft_04_array_takes_precedence_over_booleans(): void { + $this->register_test_ability( + 'test/required-mixed', + array( + 'label' => 'Required Mixed', + 'description' => 'Tests precedence of a draft-04 array over draft-03 booleans.', + 'category' => 'general', + 'input_schema' => array( + 'type' => 'object', + 'required' => array( 'title' ), + 'properties' => array( + 'title' => array( + 'type' => 'string', + 'required' => true, + ), + 'content' => array( + 'type' => 'string', + 'required' => true, + ), + ), + ), + 'execute_callback' => static function () { + return null; + }, + 'permission_callback' => '__return_true', + 'meta' => array( 'show_in_rest' => true ), + ) + ); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-mixed' ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $data = $response->get_data(); + + // The draft-04 array wins: the `content` boolean is ignored, not merged in. + $this->assertSame( array( 'title' ), $data['input_schema']['required'] ); + + // The per-property booleans are still stripped from the output. + $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['title'] ); + $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['content'] ); + } + + /** + * Test that a boolean `required` with no draft-04 equivalent (e.g. on a scalar) is dropped. + * + * @ticket 64955 + */ + public function test_required_boolean_on_scalar_schema_removed(): void { + $this->register_test_ability( + 'test/required-scalar', + array( + 'label' => 'Required Scalar', + 'description' => 'Tests stripping of a boolean required on a scalar schema.', + 'category' => 'general', + 'input_schema' => array( + 'type' => 'string', + 'description' => 'The text to analyze.', + 'required' => true, + ), + 'output_schema' => array( + 'type' => 'string', + 'required' => true, + ), + 'execute_callback' => static function ( $input ) { + return $input; + }, + 'permission_callback' => '__return_true', + 'meta' => array( 'show_in_rest' => true ), + ) + ); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-scalar' ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $data = $response->get_data(); + + $this->assertArrayNotHasKey( 'required', $data['input_schema'] ); + $this->assertSame( 'string', $data['input_schema']['type'] ); + $this->assertArrayNotHasKey( 'required', $data['output_schema'] ); + } + + /** + * Test that per-property `required` booleans are converted in an array's `items` object. + * + * @ticket 64955 + */ + public function test_required_booleans_converted_in_array_items_object_schemas(): void { + $this->register_test_ability( + 'test/required-array-items', + array( + 'label' => 'Required Array Items', + 'description' => 'Tests conversion within array item object schemas.', + 'category' => 'general', + 'input_schema' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'type' => 'integer', + 'required' => true, + ), + 'label' => array( + 'type' => 'string', + ), + ), + ), + ), + 'execute_callback' => static function () { + return null; + }, + 'permission_callback' => '__return_true', + 'meta' => array( 'show_in_rest' => true ), + ) + ); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-array-items' ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $data = $response->get_data(); + $items = $data['input_schema']['items']; + + // The object schema inside `items` collects its own required properties + // into a draft-04 array, and the per-property boolean is removed. + $this->assertSame( array( 'id' ), $items['required'] ); + $this->assertArrayNotHasKey( 'required', $items['properties']['id'] ); + $this->assertArrayNotHasKey( 'required', $items['properties']['label'] ); + } } From 3771c1cedee6b6e4506648eb3adfe7269316d6b5 Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Tue, 2 Jun 2026 14:57:06 +0000 Subject: [PATCH 149/327] Blocks: Preserve zero values in wrapper attributes. The string `"0"` and the integer `0` were previously dropped when merging block wrapper attributes because falsy values were filtered out. Strings and numbers are now kept and cast to a string, so zero values are preserved. Type annotations and null checks are also improved. Props westonruter, wildworks. Fixes #64452. git-svn-id: https://develop.svn.wordpress.org/trunk@62450 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-block-supports.php | 45 ++++- .../blocks/getBlockWrapperAttributes.php | 167 ++++++++++++++++++ 2 files changed, 204 insertions(+), 8 deletions(-) create mode 100644 tests/phpunit/tests/blocks/getBlockWrapperAttributes.php diff --git a/src/wp-includes/class-wp-block-supports.php b/src/wp-includes/class-wp-block-supports.php index 746ae35e8e9c4..23b5ed3db9d2f 100644 --- a/src/wp-includes/class-wp-block-supports.php +++ b/src/wp-includes/class-wp-block-supports.php @@ -13,6 +13,9 @@ * @since 5.6.0 * * @access private + * + * @phpstan-type ApplyCallback callable( WP_Block_Type, array<string, mixed> ): array<string, mixed> + * @phpstan-type RegisterCallback callable( WP_Block_Type ): void */ #[AllowDynamicProperties] class WP_Block_Supports { @@ -22,6 +25,11 @@ class WP_Block_Supports { * * @since 5.6.0 * @var array + * @phpstan-var array<string, array{ + * name: string, + * apply?: ApplyCallback, + * register_attribute?: RegisterCallback, + * }> */ private $block_supports = array(); @@ -29,7 +37,8 @@ class WP_Block_Supports { * Tracks the current block to be rendered. * * @since 5.6.0 - * @var array + * @var array|null + * @phpstan-var array<string, mixed>|null */ public static $block_to_render = null; @@ -62,6 +71,8 @@ public static function get_instance() { * Initializes the block supports. It registers the block supports block attributes. * * @since 5.6.0 + * + * @return void */ public static function init() { $instance = self::get_instance(); @@ -77,6 +88,13 @@ public static function init() { * * @param string $block_support_name Block support name. * @param array $block_support_config Array containing the properties of the block support. + * + * @phpstan-param array{ + * apply?: ApplyCallback, + * register_attribute?: RegisterCallback, + * } $block_support_config + * + * @return void */ public function register( $block_support_name, $block_support_config ) { $this->block_supports[ $block_support_name ] = array_merge( @@ -94,12 +112,16 @@ public function register( $block_support_name, $block_support_config ) { * @return string[] Array of HTML attribute values keyed by their name. */ public function apply_block_supports() { + if ( ! is_array( self::$block_to_render ) ) { + return array(); + } + $block_type = WP_Block_Type_Registry::get_instance()->get_registered( self::$block_to_render['blockName'] ); // If no render_callback, assume styles have been previously handled. - if ( ! $block_type || empty( $block_type ) ) { + if ( ! $block_type ) { return array(); } @@ -121,7 +143,11 @@ public function apply_block_supports() { if ( ! empty( $new_attributes ) ) { foreach ( $new_attributes as $attribute_name => $attribute_value ) { - if ( empty( $output[ $attribute_name ] ) ) { + if ( ! is_scalar( $attribute_value ) || is_bool( $attribute_value ) ) { + continue; + } + $attribute_value = (string) $attribute_value; + if ( ! array_key_exists( $attribute_name, $output ) || '' === $output[ $attribute_name ] ) { $output[ $attribute_name ] = $attribute_value; } else { $output[ $attribute_name ] .= " $attribute_value"; @@ -137,6 +163,8 @@ public function apply_block_supports() { * Registers the block attributes required by the different block supports. * * @since 5.6.0 + * + * @return void */ private function register_attributes() { $block_registry = WP_Block_Type_Registry::get_instance(); @@ -196,7 +224,7 @@ function get_block_wrapper_attributes( $extra_attributes = array() ) { (array) preg_split( '/\s+/', $extra_attribute, -1, PREG_SPLIT_NO_EMPTY ), (array) preg_split( '/\s+/', $new_attribute, -1, PREG_SPLIT_NO_EMPTY ) ); - $classes = array_unique( array_filter( $classes ) ); + $classes = array_unique( $classes ); return implode( ' ', $classes ); }, 'id' => static function ( $new_attribute, $extra_attribute ) { @@ -207,12 +235,13 @@ function get_block_wrapper_attributes( $extra_attributes = array() ) { }, ); + // Accept strings and numbers (cast to string); reject other types (bool, null, array, object). $attributes = array(); foreach ( $attribute_merge_callbacks as $attribute_name => $merge_callback ) { $new_attribute = $new_attributes[ $attribute_name ] ?? ''; $extra_attribute = $extra_attributes[ $attribute_name ] ?? ''; - $new_attribute = is_string( $new_attribute ) ? $new_attribute : ''; - $extra_attribute = is_string( $extra_attribute ) ? $extra_attribute : ''; + $new_attribute = is_scalar( $new_attribute ) && ! is_bool( $new_attribute ) ? (string) $new_attribute : ''; + $extra_attribute = is_scalar( $extra_attribute ) && ! is_bool( $extra_attribute ) ? (string) $extra_attribute : ''; if ( '' === $new_attribute && '' === $extra_attribute ) { continue; @@ -222,8 +251,8 @@ function get_block_wrapper_attributes( $extra_attributes = array() ) { } foreach ( $extra_attributes as $attribute_name => $value ) { - if ( ! isset( $attribute_merge_callbacks[ $attribute_name ] ) ) { - $attributes[ $attribute_name ] = $value; + if ( ! isset( $attribute_merge_callbacks[ $attribute_name ] ) && is_scalar( $value ) && ! is_bool( $value ) ) { + $attributes[ $attribute_name ] = (string) $value; } } diff --git a/tests/phpunit/tests/blocks/getBlockWrapperAttributes.php b/tests/phpunit/tests/blocks/getBlockWrapperAttributes.php new file mode 100644 index 0000000000000..cca4045a6f4f2 --- /dev/null +++ b/tests/phpunit/tests/blocks/getBlockWrapperAttributes.php @@ -0,0 +1,167 @@ +<?php +/** + * Tests for get_block_wrapper_attributes function. + * + * @package WordPress + * @subpackage Blocks + * + * @since 7.1.0 + * + * @group blocks + * @covers ::get_block_wrapper_attributes + */ +class Tests_Blocks_GetBlockWrapperAttributes extends WP_UnitTestCase { + + /** + * Tear down after each test. + * + * @since 7.1.0 + */ + public function tear_down(): void { + $registry = WP_Block_Type_Registry::get_instance(); + if ( $registry->is_registered( 'core/example' ) ) { + $registry->unregister( 'core/example' ); + } + + parent::tear_down(); + } + + /** + * The string '0' is preserved for block support attributes. + * + * @ticket 64452 + */ + public function test_preserves_string_zero_values(): void { + WP_Block_Supports::init(); + register_block_type( + 'core/example', + array( + 'supports' => array( + 'customClassName' => true, + 'ariaLabel' => true, + ), + ) + ); + WP_Block_Supports::$block_to_render = array( + 'blockName' => 'core/example', + 'attrs' => array( + 'className' => '0', + 'ariaLabel' => '0', + ), + ); + + $result = get_block_wrapper_attributes(); + $this->assertSame( 'class="0 wp-block-example" aria-label="0"', $result ); + } + + /** + * @ticket 64452 + */ + public function test_preserves_string_zero_values_from_extra_attributes(): void { + WP_Block_Supports::init(); + register_block_type( 'core/example' ); + WP_Block_Supports::$block_to_render = array( 'blockName' => 'core/example' ); + + $result = get_block_wrapper_attributes( + array( + 'class' => '0', + 'id' => '0', + 'aria-label' => '0', + 'data-foo' => '0', + 'data-var' => '0', + ) + ); + $this->assertSame( 'class="0 wp-block-example" id="0" aria-label="0" data-foo="0" data-var="0"', $result ); + } + + /** + * @ticket 64452 + */ + public function test_preserves_numeric_values(): void { + WP_Block_Supports::init(); + register_block_type( + 'core/example', + array( + 'supports' => array( + 'customClassName' => true, + 'ariaLabel' => true, + ), + ) + ); + WP_Block_Supports::$block_to_render = array( + 'blockName' => 'core/example', + 'attrs' => array( + 'className' => 5, + 'ariaLabel' => 42, + ), + ); + + $result = get_block_wrapper_attributes(); + $this->assertSame( 'class="5 wp-block-example" aria-label="42"', $result ); + } + + /** + * @ticket 64452 + */ + public function test_preserves_numeric_values_from_extra_attributes(): void { + WP_Block_Supports::init(); + register_block_type( 'core/example' ); + WP_Block_Supports::$block_to_render = array( 'blockName' => 'core/example' ); + + $result = get_block_wrapper_attributes( + array( + 'class' => 5, + 'id' => 7, + 'aria-label' => 42, + 'data-foo' => 1.5, + ) + ); + $this->assertSame( 'class="5 wp-block-example" id="7" aria-label="42" data-foo="1.5"', $result ); + } + + /** + * @ticket 64452 + */ + public function test_excludes_non_scalar_values(): void { + WP_Block_Supports::init(); + register_block_type( + 'core/example', + array( + 'supports' => array( + 'customClassName' => true, + 'ariaLabel' => true, + ), + ) + ); + WP_Block_Supports::$block_to_render = array( + 'blockName' => 'core/example', + 'attrs' => array( + 'className' => true, + 'ariaLabel' => array( 'x' ), + ), + ); + + $result = get_block_wrapper_attributes(); + $this->assertSame( 'class="wp-block-example"', $result ); + } + + /** + * @ticket 64452 + */ + public function test_excludes_non_scalar_values_from_extra_attributes(): void { + WP_Block_Supports::init(); + register_block_type( 'core/example' ); + WP_Block_Supports::$block_to_render = array( 'blockName' => 'core/example' ); + + $result = get_block_wrapper_attributes( + array( + 'class' => true, + 'id' => false, + 'aria-label' => null, + 'data-foo' => array( 'x' ), + 'data-bar' => true, + ) + ); + $this->assertSame( 'class="wp-block-example"', $result ); + } +} From ba36e52ae04ba7fef221091ca5c38cb06cdbd014 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Tue, 2 Jun 2026 17:54:14 +0000 Subject: [PATCH 150/327] Twenty Twelve: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62451 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentyeleven/header.php | 4 ++-- src/wp-content/themes/twentyten/header.php | 4 ++-- .../themes/twentytwelve/functions.php | 20 ++++++++++++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/wp-content/themes/twentyeleven/header.php b/src/wp-content/themes/twentyeleven/header.php index 4b85492ef8487..3798e6862d0a8 100644 --- a/src/wp-content/themes/twentyeleven/header.php +++ b/src/wp-content/themes/twentyeleven/header.php @@ -10,8 +10,8 @@ */ /** - * @global int $page WordPress paginated post page count. - * @global int $paged WordPress archive pagination page count. + * @global int $page Page number of a single post. + * @global int $paged Page number of a list of posts. */ global $page, $paged; diff --git a/src/wp-content/themes/twentyten/header.php b/src/wp-content/themes/twentyten/header.php index 6a63ae51cb33e..02648fb8364a8 100644 --- a/src/wp-content/themes/twentyten/header.php +++ b/src/wp-content/themes/twentyten/header.php @@ -10,8 +10,8 @@ */ /** - * @global int $page WordPress paginated post page count. - * @global int $paged WordPress archive pagination page count. + * @global int $page Page number of a single post. + * @global int $paged Page number of a list of posts. */ global $page, $paged; diff --git a/src/wp-content/themes/twentytwelve/functions.php b/src/wp-content/themes/twentytwelve/functions.php index d553dc6d4ef84..2d6094e3f3e56 100644 --- a/src/wp-content/themes/twentytwelve/functions.php +++ b/src/wp-content/themes/twentytwelve/functions.php @@ -43,6 +43,8 @@ * @uses set_post_thumbnail_size() To set a custom post thumbnail size. * * @since Twenty Twelve 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentytwelve_setup() { /* @@ -181,6 +183,8 @@ function twentytwelve_get_font_url() { * Enqueues scripts and styles for front end. * * @since Twenty Twelve 1.0 + * + * @global WP_Styles $wp_styles The WP_Styles object for printing styles. */ function twentytwelve_scripts_styles() { global $wp_styles; @@ -242,6 +246,8 @@ function twentytwelve_block_editor_styles() { * @since Twenty Twelve 2.2 * @deprecated Twenty Twelve 3.9 Disabled filter because, by default, fonts are self-hosted. * + * @global string $wp_version The WordPress version string. + * * @param array $urls URLs to print for resource hints. * @param string $relation_type The relation type the URLs are printed. * @return array URLs to print for resource hints. @@ -299,6 +305,9 @@ function twentytwelve_mce_css( $mce_css ) { * * @since Twenty Twelve 1.0 * + * @global int $paged Page number of a list of posts. + * @global int $page Page number of a single post. + * * @param string $title Default title text for current view. * @param string $sep Optional separator. * @return string Filtered title. @@ -411,6 +420,8 @@ function wp_get_list_item_separator() { * Displays navigation to next/previous pages when applicable. * * @since Twenty Twelve 1.0 + * + * @global WP_Query $wp_query WordPress Query object. */ function twentytwelve_content_nav( $html_id ) { global $wp_query; @@ -451,7 +462,12 @@ function twentytwelve_content_nav( $html_id ) { * * @since Twenty Twelve 1.0 * - * @global WP_Post $post Global post object. + * @global WP_Comment $comment Global comment object. + * @global WP_Post $post Global post object. + * + * @param WP_Comment $comment The comment object. + * @param array $args An array of comment arguments. @see get_comment_reply_link() + * @param int $depth The depth of the comment. */ function twentytwelve_comment( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; @@ -644,6 +660,8 @@ function twentytwelve_body_class( $classes ) { * templates, and when there are no active widgets in the sidebar. * * @since Twenty Twelve 1.0 + * + * @global int $content_width Content width. */ function twentytwelve_content_width() { if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) { From 2ccf96e00d8b373a68d556479b0dfc904010251c Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Wed, 3 Jun 2026 05:18:21 +0000 Subject: [PATCH 151/327] Blocks: Include the offending block name in registration error notices. Three of the four `_doing_it_wrong()` calls in `WP_Block_Type_Registry::register()` emitted a generic message that did not identify which block name triggered it, making it hard to locate the offending registration. The notices for non-string names, uppercase characters, and a missing namespace prefix now include the received value (the type via `gettype()` for non-strings, and the escaped name otherwise), matching the existing "already registered" notice that did already report the name. Developed in https://github.com/WordPress/wordpress-develop/pull/11478. Follow-up to r44108. Props manishxdp, desrosj, benjgrolleau, westonruter. Fixes #65039. git-svn-id: https://develop.svn.wordpress.org/trunk@62452 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-block-type-registry.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/class-wp-block-type-registry.php b/src/wp-includes/class-wp-block-type-registry.php index 969f0f0f64a42..aa134cee16277 100644 --- a/src/wp-includes/class-wp-block-type-registry.php +++ b/src/wp-includes/class-wp-block-type-registry.php @@ -55,7 +55,8 @@ public function register( $name, $args = array() ) { if ( ! is_string( $name ) ) { _doing_it_wrong( __METHOD__, - __( 'Block type names must be strings.' ), + /* translators: %s: The received block type name type. */ + sprintf( __( 'Block type names must be strings, received %s.' ), gettype( $name ) ), '5.0.0' ); return false; @@ -64,7 +65,8 @@ public function register( $name, $args = array() ) { if ( preg_match( '/[A-Z]+/', $name ) ) { _doing_it_wrong( __METHOD__, - __( 'Block type names must not contain uppercase characters.' ), + /* translators: %s: Block name. */ + sprintf( __( 'Block type names must not contain uppercase characters. "%s" was given.' ), esc_html( $name ) ), '5.0.0' ); return false; @@ -74,7 +76,8 @@ public function register( $name, $args = array() ) { if ( ! preg_match( $name_matcher, $name ) ) { _doing_it_wrong( __METHOD__, - __( 'Block type names must contain a namespace prefix. Example: my-plugin/my-custom-block-type' ), + /* translators: %s: Block name. */ + sprintf( __( 'Block type names must contain a namespace prefix. Example: my-plugin/my-custom-block-type. "%s" was given.' ), esc_html( $name ) ), '5.0.0' ); return false; From c5618d11fb9fd2c1bde25f58f98d1ca3b1a3e22e Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Wed, 3 Jun 2026 06:18:10 +0000 Subject: [PATCH 152/327] Editor: add support for style states on block instances. Adds a "states" block support that allows styling pseudo states and viewport sizes. Props isabel_brison, andrewserong, ramonopoly, audrasjb, desrosj. Fixes #65239. git-svn-id: https://develop.svn.wordpress.org/trunk@62453 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/states.php | 485 ++++++++++ src/wp-settings.php | 1 + tests/phpunit/tests/block-supports/states.php | 869 ++++++++++++++++++ 3 files changed, 1355 insertions(+) create mode 100644 src/wp-includes/block-supports/states.php create mode 100644 tests/phpunit/tests/block-supports/states.php diff --git a/src/wp-includes/block-supports/states.php b/src/wp-includes/block-supports/states.php new file mode 100644 index 0000000000000..38504ee99002b --- /dev/null +++ b/src/wp-includes/block-supports/states.php @@ -0,0 +1,485 @@ +<?php +/** + * Block state support for frontend CSS generation. + * + * Generates scoped CSS for per-instance state styles declared in block attributes, + * including pseudo-states (e.g., `style[':hover']`) and responsive states + * (e.g., `style['mobile']` and `style['mobile'][':hover']`). + * + * @package WordPress + * @since 7.1.0 + */ + +/** + * Converts internal preset references to CSS custom property references. + * + * State styles are emitted as CSS rules and cannot rely on preset classnames. + * Converting `var:preset|color|contrast` to + * `var(--wp--preset--color--contrast)` ensures preset values are emitted as + * declarations by the style engine. + * + * @since 7.1.0 + * + * @param mixed $value Style value to normalize. + * @return mixed Normalized style value. + */ +function wp_normalize_state_preset_vars( $value ) { + if ( is_array( $value ) ) { + foreach ( $value as $key => $nested_value ) { + $value[ $key ] = wp_normalize_state_preset_vars( $nested_value ); + } + return $value; + } + + if ( ! is_string( $value ) || ! str_starts_with( $value, 'var:preset|' ) ) { + return $value; + } + + $unwrapped_name = str_replace( '|', '--', substr( $value, strlen( 'var:' ) ) ); + return "var(--wp--$unwrapped_name)"; +} + +/** + * Normalizes a state style object before generating CSS declarations. + * + * @since 7.1.0 + * + * @param array $style State style object. + * @return array Normalized state style object. + */ +function wp_normalize_state_style_for_css_output( $style ) { + return wp_normalize_state_preset_vars( $style ); +} + +/** + * Adds fallback border-style declarations for visible border declarations. + * + * CSS does not render border color or width unless a border style is also set. + * State styles are emitted as stylesheet rules rather than inline styles, so + * they cannot rely on the block-library inline-style attribute fallback rules. + * + * @since 7.1.0 + * + * @param array $declarations CSS declarations generated by the style engine. + * @return array CSS declarations with fallback border styles applied where needed. + */ +function wp_get_state_declarations_with_fallback_border_styles( $declarations ) { + if ( ! is_array( $declarations ) ) { + return $declarations; + } + + $has_border_style = isset( $declarations['border-style'] ) && '' !== $declarations['border-style']; + $has_border_color = isset( $declarations['border-color'] ) && '' !== $declarations['border-color']; + $has_border_width = isset( $declarations['border-width'] ) && '' !== $declarations['border-width']; + + if ( ! $has_border_style && ( $has_border_color || $has_border_width ) ) { + $declarations['border-style'] = 'solid'; + } + + $sides = array( 'top', 'right', 'bottom', 'left' ); + foreach ( $sides as $side ) { + $side_style_property = "border-$side-style"; + $side_color_property = "border-$side-color"; + $side_width_property = "border-$side-width"; + + $has_side_style = isset( $declarations[ $side_style_property ] ) && '' !== $declarations[ $side_style_property ]; + $has_side_color = isset( $declarations[ $side_color_property ] ) && '' !== $declarations[ $side_color_property ]; + $has_side_width = isset( $declarations[ $side_width_property ] ) && '' !== $declarations[ $side_width_property ]; + + if ( ! $has_border_style && ! $has_side_style && ( $has_side_color || $has_side_width ) ) { + $declarations[ $side_style_property ] = 'solid'; + } + } + + return $declarations; +} + +/** + * Adds a style fragment to a selector-keyed state style group. + * + * @since 7.1.0 + * + * @param array $groups Selector-keyed style groups. + * @param string|null $selector Block or feature selector. + * @param array $style Style fragment. + */ +function wp_add_state_style_group( &$groups, $selector, $style ) { + $key = is_string( $selector ) ? $selector : ''; + + if ( ! isset( $groups[ $key ] ) ) { + $groups[ $key ] = array( + 'selector' => $selector, + 'style' => array(), + ); + } + + $groups[ $key ]['style'] = array_replace_recursive( $groups[ $key ]['style'], $style ); +} + +/** + * Splits a state style object into groups based on block feature selectors. + * + * @since 7.1.0 + * + * @param array $state_style State style object. + * @param array $block_selectors Block selectors metadata. + * @return array[] Selector/style groups. + */ +function wp_get_state_style_groups( $state_style, $block_selectors ) { + $groups = array(); + + foreach ( $state_style as $feature => $feature_styles ) { + $feature_selectors = $block_selectors[ $feature ] ?? null; + + if ( is_string( $feature_selectors ) ) { + wp_add_state_style_group( + $groups, + $feature_selectors, + array( $feature => $feature_styles ) + ); + continue; + } + + if ( is_array( $feature_selectors ) && is_array( $feature_styles ) ) { + $remaining_styles = $feature_styles; + + foreach ( $feature_selectors as $subfeature => $subfeature_selector ) { + if ( + 'root' === $subfeature || + ! is_string( $subfeature_selector ) || + ! array_key_exists( $subfeature, $feature_styles ) + ) { + continue; + } + + wp_add_state_style_group( + $groups, + $subfeature_selector, + array( + $feature => array( + $subfeature => $feature_styles[ $subfeature ], + ), + ) + ); + unset( $remaining_styles[ $subfeature ] ); + } + + if ( array() !== $remaining_styles ) { + wp_add_state_style_group( + $groups, + $feature_selectors['root'] ?? ( $block_selectors['root'] ?? null ), + array( $feature => $remaining_styles ) + ); + } + continue; + } + + wp_add_state_style_group( + $groups, + $block_selectors['root'] ?? null, + array( $feature => $feature_styles ) + ); + } + + return array_values( $groups ); +} + +/** + * Returns a style object with nested state keys removed. + * + * @since 7.1.0 + * + * @param array $state_style State style object. + * @param array $nested_keys Keys to remove from the root style object. + * @return array Root-only style object. + */ +function wp_get_root_state_style( $state_style, $nested_keys ) { + if ( ! is_array( $state_style ) ) { + return $state_style; + } + + $root_style = $state_style; + foreach ( $nested_keys as $key ) { + unset( $root_style[ $key ] ); + } + + return $root_style; +} + +/** + * Builds compiled state style rules, preserving the selector each rule targets. + * + * @since 7.1.0 + * + * @param array $state_styles Map of state to style array. + * @param WP_Block_Type $block_type Block type. + * @param string|null $rules_group Optional CSS grouping rule, e.g. a media query. + * @return array[] State style rules. + */ +function wp_get_block_state_style_rules( $state_styles, $block_type, $rules_group = null ) { + $css_rules = array(); + $block_selectors = isset( $block_type->selectors ) && is_array( $block_type->selectors ) + ? $block_type->selectors + : array(); + + foreach ( $state_styles as $state => $state_style ) { + if ( empty( $state_style ) || ! is_array( $state_style ) ) { + continue; + } + + foreach ( wp_get_state_style_groups( $state_style, $block_selectors ) as $group ) { + $compiled = wp_style_engine_get_styles( + wp_normalize_state_style_for_css_output( $group['style'] ) + ); + + if ( ! empty( $compiled['declarations'] ) ) { + $css_rules[] = array( + 'state' => $state, + 'selector' => $group['selector'], + 'declarations' => $compiled['declarations'], + ); + if ( ! empty( $rules_group ) ) { + $css_rules[ count( $css_rules ) - 1 ]['rules_group'] = $rules_group; + } + } + } + } + + return $css_rules; +} + +/** + * Returns a unique class for a set of state style rules. + * + * @since 7.1.0 + * + * @param string $block_name Block name. + * @param array $css_rules State style rules. + * @return string Unique class name. + */ +function wp_get_block_state_unique_class( $block_name, $css_rules ) { + return 'wp-states-' . substr( + md5( + wp_json_encode( + array( + 'blockName' => $block_name, + 'rules' => $css_rules, + ) + ) + ), + 0, + 8 + ); +} + +/** + * Splits a selector list by top-level commas. + * + * @since 7.1.0 + * + * @param string $selector CSS selector list. + * @return string[] Selectors. + */ +function wp_split_selector_list( $selector ) { + if ( ! str_contains( $selector, ',' ) ) { + return array( $selector ); + } + + $selectors = array(); + $current_selector = ''; + $parentheses_depth = 0; + $selector_length = strlen( $selector ); + + for ( $i = 0; $i < $selector_length; $i++ ) { + $char = $selector[ $i ]; + + if ( '(' === $char ) { + ++$parentheses_depth; + } elseif ( ')' === $char && $parentheses_depth > 0 ) { + --$parentheses_depth; + } elseif ( ',' === $char && 0 === $parentheses_depth ) { + $selectors[] = $current_selector; + $current_selector = ''; + continue; + } + + $current_selector .= $char; + } + + $selectors[] = $current_selector; + + return $selectors; +} + +/** + * Builds a scoped selector from a block selector and optional pseudo-state. + * + * @since 7.1.0 + * + * @param string $base_selector Block-instance scoping selector. + * @param string|null $block_selector Block or feature selector from metadata. + * @param string $state Pseudo-state selector. + * @return string Scoped selector. + */ +function wp_build_state_selector( $base_selector, $block_selector, $state ) { + if ( ! is_string( $block_selector ) || '' === trim( $block_selector ) ) { + return $base_selector . $state; + } + + $selectors = wp_split_selector_list( $block_selector ); + $scoped_selectors = array(); + + foreach ( $selectors as $selector ) { + $selector = trim( $selector ); + if ( '' === $selector ) { + continue; + } + + /* + * Replace only the leading block selector part (e.g. class name, + * attribute selector, ID, or tag name) with the block instance selector. + * Preserve anything after that prefix, including modifier classes on the + * same element and combinators without spaces. + */ + if ( preg_match( '/^([.#]?[-_a-zA-Z0-9]+|\[[^\]]+\])/', $selector, $matches ) ) { + $scoped_selectors[] = $base_selector . substr( $selector, strlen( $matches[0] ) ) . $state; + continue; + } + + $scoped_selectors[] = $base_selector . $state; + } + + return empty( $scoped_selectors ) + ? $base_selector . $state + : implode( ', ', $scoped_selectors ); +} + +/** + * Renders per-instance state styles on the frontend. + * + * @since 7.1.0 + * + * @param string $block_content The block's rendered HTML. + * @param array $block The block data including blockName and attrs. + * @return string Modified block content with injected state styles. + */ +function wp_render_block_states_support( $block_content, $block ) { + if ( empty( $block['blockName'] ) || empty( $block_content ) ) { + return $block_content; + } + + $block_name = $block['blockName']; + $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); + if ( ! $block_type ) { + return $block_content; + } + + $supported_pseudo_states = WP_Theme_JSON::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] ?? array(); + $style = $block['attrs']['style'] ?? array(); + $css_rules = array(); + + foreach ( $supported_pseudo_states as $pseudo_state ) { + if ( empty( $style[ $pseudo_state ] ) || ! is_array( $style[ $pseudo_state ] ) ) { + continue; + } + + $css_rules = array_merge( + $css_rules, + wp_get_block_state_style_rules( + array( $pseudo_state => $style[ $pseudo_state ] ), + $block_type + ) + ); + } + + foreach ( WP_Theme_JSON::RESPONSIVE_BREAKPOINTS as $breakpoint => $media_query ) { + if ( empty( $style[ $breakpoint ] ) || ! is_array( $style[ $breakpoint ] ) ) { + continue; + } + + $root_state_style = wp_get_root_state_style( + $style[ $breakpoint ], + array_merge( array( 'elements' ), $supported_pseudo_states ) + ); + + if ( ! empty( $root_state_style ) ) { + $css_rules = array_merge( + $css_rules, + wp_get_block_state_style_rules( + array( '' => $root_state_style ), + $block_type, + $media_query + ) + ); + } + + foreach ( $supported_pseudo_states as $pseudo_state ) { + if ( empty( $style[ $breakpoint ][ $pseudo_state ] ) || ! is_array( $style[ $breakpoint ][ $pseudo_state ] ) ) { + continue; + } + + $css_rules = array_merge( + $css_rules, + wp_get_block_state_style_rules( + array( $pseudo_state => $style[ $breakpoint ][ $pseudo_state ] ), + $block_type, + $media_query + ) + ); + } + } + + if ( empty( $css_rules ) ) { + return $block_content; + } + + $unique_class = wp_get_block_state_unique_class( $block_name, $css_rules ); + + /* + * Register each state's CSS rules with the block-supports style engine store. + * The store deduplicates rules by selector — two block instances with identical + * state styles share the same hash class and therefore the same selector, + * so only one CSS rule is emitted. The store is flushed to the page by + * wp_enqueue_stored_styles() rather than injected inline here. + * + * State declarations need !important to apply reliably over inline styles and + * preset utility classes such as .has-accent-3-background-color. + */ + $style_rules = array(); + foreach ( $css_rules as $rule ) { + $declarations = array(); + foreach ( $rule['declarations'] as $property => $value ) { + $declarations[ $property ] = is_string( $value ) && str_contains( $value, '!important' ) + ? $value + : $value . ' !important'; + } + $declarations = wp_get_state_declarations_with_fallback_border_styles( $declarations ); + $style_rule = array( + 'selector' => wp_build_state_selector( + ".$unique_class", + $rule['selector'], + $rule['state'] + ), + 'declarations' => $declarations, + ); + if ( ! empty( $rule['rules_group'] ) ) { + $style_rule['rules_group'] = $rule['rules_group']; + } + $style_rules[] = $style_rule; + } + + wp_style_engine_get_stylesheet_from_css_rules( + $style_rules, + array( + 'context' => 'block-supports', + 'prettify' => false, + ) + ); + + $processor = new WP_HTML_Tag_Processor( $block_content ); + if ( $processor->next_tag() ) { + $processor->add_class( $unique_class ); + } + return $processor->get_updated_html(); +} +add_filter( 'render_block', 'wp_render_block_states_support', 10, 2 ); diff --git a/src/wp-settings.php b/src/wp-settings.php index b2736bddadc3c..0935e2762619c 100644 --- a/src/wp-settings.php +++ b/src/wp-settings.php @@ -426,6 +426,7 @@ require ABSPATH . WPINC . '/block-supports/anchor.php'; require ABSPATH . WPINC . '/block-supports/block-visibility.php'; require ABSPATH . WPINC . '/block-supports/custom-css.php'; +require ABSPATH . WPINC . '/block-supports/states.php'; require ABSPATH . WPINC . '/style-engine.php'; require ABSPATH . WPINC . '/style-engine/class-wp-style-engine.php'; require ABSPATH . WPINC . '/style-engine/class-wp-style-engine-css-declarations.php'; diff --git a/tests/phpunit/tests/block-supports/states.php b/tests/phpunit/tests/block-supports/states.php new file mode 100644 index 0000000000000..2eb5c76e84b67 --- /dev/null +++ b/tests/phpunit/tests/block-supports/states.php @@ -0,0 +1,869 @@ +<?php +/** + * Tests the states block support. + * + * @package WordPress + * @subpackage Block Supports + * @since 7.1.0 + * + * @group block-supports + * + * @covers ::wp_render_block_states_support + */ +class Tests_Block_Supports_States extends WP_UnitTestCase { + + /** + * @var string|null + */ + private $test_block_name; + + public function set_up() { + parent::set_up(); + $this->test_block_name = null; + WP_Style_Engine_CSS_Rules_Store::remove_all_stores(); + } + + public function tear_down() { + if ( $this->test_block_name ) { + unregister_block_type( $this->test_block_name ); + } + $this->test_block_name = null; + WP_Style_Engine_CSS_Rules_Store::remove_all_stores(); + parent::tear_down(); + } + + /** + * Registers a block for tests when the block is not already registered. + * + * @param string $block_name Block name. + * @param array $selectors Optional block selectors, e.g. array( 'root' => '.foo .bar' ). + * @return WP_Block_Type + */ + private function ensure_block_registered( $block_name, $selectors = array() ) { + $registered_block = WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); + if ( $registered_block ) { + return $registered_block; + } + + $this->test_block_name = $block_name; + $args = array( + 'api_version' => 3, + 'attributes' => array( + 'style' => array( + 'type' => 'object', + ), + ), + ); + if ( ! empty( $selectors ) ) { + $args['selectors'] = $selectors; + } + register_block_type( $block_name, $args ); + + return WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); + } + + /** + * Mirrors the CSS-building logic in wp_render_block_states_support() + * to produce the unique scoped class name for a given map of state => style arrays. + * CSS is now registered with the style engine store rather than injected inline. + * + * @param array $state_styles Map of state to style array (e.g. `[':hover' => ['color' => [...]]]`). + * @param string $block_name Block name. + * @return array { unique_class: string } + */ + private function build_expected_state_output( $state_styles, $block_name = 'core/button' ) { + $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); + $css_rules = wp_get_block_state_style_rules( $state_styles, $block_type ); + + return array( + 'unique_class' => wp_get_block_state_unique_class( $block_name, $css_rules ), + ); + } + + /** + * Tests that fallback border-style declarations are added after CSS generation. + * + * @covers ::wp_get_state_declarations_with_fallback_border_styles + * + * @ticket 65239 + */ + public function test_adds_fallback_border_style_declarations() { + $actual = wp_get_state_declarations_with_fallback_border_styles( + array( + 'border-color' => '#000000', + 'border-top-width' => '2px', + ) + ); + + $this->assertSame( + array( + 'border-color' => '#000000', + 'border-top-width' => '2px', + 'border-style' => 'solid', + 'border-top-style' => 'solid', + ), + $actual + ); + } + + /** + * Tests that authored border-style declarations are preserved. + * + * @covers ::wp_get_state_declarations_with_fallback_border_styles + * + * @ticket 65239 + */ + public function test_preserves_authored_border_style_declarations() { + $actual = wp_get_state_declarations_with_fallback_border_styles( + array( + 'border-color' => '#000000', + 'border-style' => 'dashed !important', + 'border-left-width' => '2px', + ) + ); + + $this->assertSame( + array( + 'border-color' => '#000000', + 'border-style' => 'dashed !important', + 'border-left-width' => '2px', + ), + $actual + ); + } + + /** + * Tests that modifier classes on the first compound selector are preserved + * when state selectors are scoped to the block wrapper. + * + * @covers ::wp_build_state_selector + * + * @ticket 65239 + */ + public function test_build_state_selector_preserves_first_compound_modifier_classes() { + $actual = wp_build_state_selector( + '.wp-states-test', + '.wp-block-search.wp-block-search__button-outside .wp-block-search__input', + ':hover' + ); + + $this->assertSame( + '.wp-states-test.wp-block-search__button-outside .wp-block-search__input:hover', + $actual + ); + } + + /** + * Tests that child combinators without surrounding spaces are preserved when + * state selectors are scoped to the block wrapper. + * + * @covers ::wp_build_state_selector + * + * @ticket 65239 + */ + public function test_build_state_selector_preserves_child_combinator_without_spaces() { + $actual = wp_build_state_selector( + '.wp-states-test', + '.wp-block-foo>.inner', + ':hover' + ); + + $this->assertSame( + '.wp-states-test>.inner:hover', + $actual + ); + } + + /** + * Tests that selector lists are split without splitting selector-function arguments. + * + * @covers ::wp_build_state_selector + * + * @ticket 65239 + */ + public function test_build_state_selector_splits_selector_lists_without_splitting_selector_function_arguments() { + $actual = wp_build_state_selector( + '.wp-states-test', + '.wp-block-example:not(.foo, .bar) .inner, .wp-block-example .fallback', + ':hover' + ); + + $this->assertSame( + '.wp-states-test:not(.foo, .bar) .inner:hover, .wp-states-test .fallback:hover', + $actual + ); + } + + /** + * Tests that preset values are converted to CSS custom property references. + * + * @covers ::wp_normalize_state_preset_vars + * + * @ticket 65239 + */ + public function test_converts_state_preset_vars_to_css_vars() { + $actual = wp_normalize_state_preset_vars( + array( + 'border' => array( + 'color' => 'var:preset|color|accent-1', + ), + ) + ); + + $this->assertSame( + array( + 'border' => array( + 'color' => 'var(--wp--preset--color--accent-1)', + ), + ), + $actual + ); + } + + /** + * Tests that block content is returned unchanged when the block name is missing. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_returns_unchanged_when_block_name_missing() { + $block_content = '<div class="wp-block-test">Hello</div>'; + $block = array( + 'blockName' => '', + 'attrs' => array(), + ); + + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $block_content, $actual ); + } + + /** + * Tests that block content is returned unchanged when content is empty. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_returns_unchanged_when_block_content_empty() { + $this->ensure_block_registered( 'core/button' ); + + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( + 'style' => array( + ':hover' => array( 'color' => array( 'text' => '#ff0000' ) ), + ), + ), + ); + + $actual = wp_render_block_states_support( '', $block ); + + $this->assertSame( '', $actual ); + } + + /** + * Tests that block content is returned unchanged when the block has no configured pseudo-states. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_returns_unchanged_when_block_has_no_configured_pseudo_states() { + $this->test_block_name = 'test/no-pseudo-state-config'; + register_block_type( + $this->test_block_name, + array( + 'api_version' => 3, + 'attributes' => array( + 'style' => array( 'type' => 'object' ), + ), + 'supports' => array(), + ) + ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $block = array( + 'blockName' => 'test/no-pseudo-state-config', + 'attrs' => array( + 'style' => array( + ':hover' => array( 'color' => array( 'text' => '#ff0000' ) ), + ), + ), + ); + + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $block_content, $actual ); + } + + /** + * Tests that block content is returned unchanged when no pseudo-state styles are set. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_returns_unchanged_when_no_state_styles_set() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( + 'style' => array( + 'color' => array( 'text' => '#000000' ), + ), + ), + ); + + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $block_content, $actual ); + } + + /** + * Tests that block content is returned unchanged when the pseudo-state key is an empty array. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_returns_unchanged_when_state_style_is_empty_array() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( + 'style' => array( + ':hover' => array(), + ), + ), + ); + + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $block_content, $actual ); + } + + /** + * Tests that hover text color generates scoped CSS with !important. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_text_color_generates_scoped_css() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( ':hover' => array( 'color' => array( 'text' => '#e6ffe8' ) ) ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + $expected = '<div class="wp-block-test ' . $parts['unique_class'] . '">Hello</div>'; + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $expected, $actual ); + } + + /** + * Tests that hover background color generates scoped CSS. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_background_color_generates_scoped_css() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( ':hover' => array( 'color' => array( 'background' => '#ff00d0' ) ) ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + $expected = '<div class="wp-block-test ' . $parts['unique_class'] . '">Hello</div>'; + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $expected, $actual ); + } + + /** + * Tests that hover text and background color both appear in a single rule. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_text_and_background_color_in_same_rule() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'color' => array( + 'background' => '#ff00d0', + 'text' => '#e6ffe8', + ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + $expected = '<div class="wp-block-test ' . $parts['unique_class'] . '">Hello</div>'; + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $expected, $actual ); + } + + /** + * Tests that a font family stored as a preset reference is resolved to a CSS + * custom property in the generated style tag. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_font_family_preset_reference_generates_css_custom_property() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'typography' => array( 'fontFamily' => 'var:preset|font-family|heading' ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + $expected = '<div class="wp-block-test ' . $parts['unique_class'] . '">Hello</div>'; + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $expected, $actual ); + } + + /** + * Tests that hover font size generates scoped CSS. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_font_size_generates_scoped_css() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'typography' => array( 'fontSize' => '1.5rem' ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + $expected = '<div class="wp-block-test ' . $parts['unique_class'] . '">Hello</div>'; + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $expected, $actual ); + } + + /** + * Tests that hover border width and color generate a scoped style tag. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_border_width_and_color_generate_scoped_css() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'border' => array( + 'width' => '2px', + 'color' => '#000000', + ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + $expected = '<div class="wp-block-test ' . $parts['unique_class'] . '">Hello</div>'; + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $expected, $actual ); + + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + $this->assertStringContainsString( + 'border-width:2px !important;', + $actual_stylesheet + ); + $this->assertStringContainsString( + 'border-style:solid;', + $actual_stylesheet + ); + $this->assertStringNotContainsString( + 'border-style:solid !important;', + $actual_stylesheet + ); + } + + /** + * Tests that explicitly-authored hover border style declarations use !important. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_authored_border_style_generates_important_css_declaration() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'border' => array( + 'style' => 'solid', + ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + wp_render_block_states_support( $block_content, $block ); + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + 'border-style:solid !important;', + $actual_stylesheet + ); + } + + /** + * Tests that explicitly-authored side border style declarations use !important. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_authored_side_border_style_generates_important_css_declaration() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'border' => array( + 'top' => array( + 'style' => 'dashed', + ), + ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + wp_render_block_states_support( $block_content, $block ); + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + 'border-top-style:dashed !important;', + $actual_stylesheet + ); + } + + /** + * Tests that hover side border color declarations use !important. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_side_border_color_generates_important_css_declaration() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'border' => array( + 'top' => array( + 'color' => '#0000ff', + ), + ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + wp_render_block_states_support( $block_content, $block ); + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + 'border-top-color:#0000ff !important;', + $actual_stylesheet + ); + $this->assertStringContainsString( + 'border-top-style:solid;', + $actual_stylesheet + ); + } + + /** + * Tests that a preset hover border color is emitted as a CSS declaration. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_preset_border_color_generates_css_declaration() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'border' => array( + 'color' => 'var:preset|color|accent-1', + ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + wp_render_block_states_support( $block_content, $block ); + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '.' . $parts['unique_class'] . ' .wp-block-button__link:hover{', + $actual_stylesheet + ); + $this->assertStringContainsString( + 'border-color:var(--wp--preset--color--accent-1) !important;', + $actual_stylesheet + ); + $this->assertStringContainsString( + 'border-style:solid;', + $actual_stylesheet + ); + } + + /** + * Tests that hover border radius generates scoped CSS. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_hover_border_radius_generates_scoped_css() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( + 'border' => array( 'radius' => '8px' ), + ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + $expected = '<div class="wp-block-test ' . $parts['unique_class'] . '">Hello</div>'; + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $expected, $actual ); + } + + /** + * Tests that multiple states each generate a separate scoped CSS rule. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_multiple_states_generate_separate_css_rules() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $state_styles = array( + ':hover' => array( 'color' => array( 'text' => '#ff0000' ) ), + ':focus' => array( 'color' => array( 'text' => '#00ff00' ) ), + ':focus-visible' => array( 'color' => array( 'text' => '#0000ff' ) ), + ); + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( 'style' => $state_styles ), + ); + + $parts = $this->build_expected_state_output( $state_styles ); + $expected = '<div class="wp-block-test ' . $parts['unique_class'] . '">Hello</div>'; + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $expected, $actual ); + } + + /** + * Tests that unconfigured pseudo-state keys are ignored. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65239 + */ + public function test_unconfigured_pseudo_state_is_ignored() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( + 'style' => array( + ':visited' => array( 'color' => array( 'text' => '#ff0000' ) ), + ), + ), + ); + + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertSame( $block_content, $actual ); + } + + /** + * Tests that a responsive root state generates media-query scoped CSS. + * + * @ticket 65239 + */ + public function test_responsive_root_state_generates_media_query_scoped_css() { + $this->ensure_block_registered( 'test/responsive-root-state' ); + + $block_content = '<div class="wp-block-test">Hello</div>'; + $block = array( + 'blockName' => 'test/responsive-root-state', + 'attrs' => array( + 'style' => array( + 'mobile' => array( + 'color' => array( + 'text' => '#ff0000', + ), + ), + ), + ), + ); + + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertMatchesRegularExpression( + '/^<div class="wp-block-test (wp-states-[a-f0-9]{8})">Hello<\/div>$/', + $actual + ); + preg_match( '/wp-states-[a-f0-9]{8}/', $actual, $matches ); + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $matches[0] . '{color:#ff0000 !important;}}', + $actual_stylesheet + ); + } + + /** + * Tests that a responsive pseudo-state generates media-query scoped CSS. + * + * @ticket 65239 + */ + public function test_responsive_pseudo_state_generates_media_query_scoped_css() { + $this->ensure_block_registered( + 'core/button', + array( + 'root' => '.wp-block-button .wp-block-button__link', + ) + ); + + $block_content = '<div class="wp-block-button"><a class="wp-block-button__link">Click me</a></div>'; + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( + 'style' => array( + 'mobile' => array( + ':hover' => array( + 'color' => array( + 'background' => '#ff00d0', + ), + ), + ), + ), + ), + ); + + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertMatchesRegularExpression( + '/^<div class="wp-block-button (wp-states-[a-f0-9]{8})"><a class="wp-block-button__link">Click me<\/a><\/div>$/', + $actual + ); + preg_match( '/wp-states-[a-f0-9]{8}/', $actual, $matches ); + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $matches[0] . ' .wp-block-button__link:hover{background-color:#ff00d0 !important;}}', + $actual_stylesheet + ); + } + + /** + * Tests that state declarations are marked important. + * + * @ticket 65239 + */ + public function test_state_declarations_generate_important_css() { + $this->ensure_block_registered( 'core/button' ); + + $block_content = '<div class="wp-block-button"><a class="wp-block-button__link">Click me</a></div>'; + $block = array( + 'blockName' => 'core/button', + 'attrs' => array( + 'style' => array( + ':hover' => array( + 'border' => array( + 'radius' => '8px', + ), + ), + ), + ), + ); + + wp_render_block_states_support( $block_content, $block ); + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + 'border-radius:8px !important;', + $actual_stylesheet + ); + } +} From d3d07451d5b13c198b17037c79f341bb8ee2d6db Mon Sep 17 00:00:00 2001 From: Riad Benguella <youknowriad@git.wordpress.org> Date: Wed, 3 Jun 2026 09:40:38 +0000 Subject: [PATCH 153/327] Administration: Improve admin color scheme contrast for the editor chrome. Update the core admin color schemes so their sidebar and primary button colors work well when the block editor and Site Editor apply the user's admin color scheme to the editor chrome. The chrome background is generated from a seed through the WPDS ramp algorithm, which only emits surface colors within specific luminance bands and cannot reproduce arbitrary colors, so several schemes could never match. Adjust the Blue, Coffee, Ectoplasm, Light, Midnight, Ocean, and Sunrise schemes to bring sidebar and primary button text contrast to WCAG 2.x AA (4.5:1), keep each scheme's character, and reduce the number of distinct colors per scheme by reusing the selected menu item's background for the primary button (except for Light). Props fushar, simison, youknowriad, joen. Fixes #65382. git-svn-id: https://develop.svn.wordpress.org/trunk@62454 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/colors/blue/colors.scss | 10 +++++----- src/wp-admin/css/colors/coffee/colors.scss | 10 ++++++---- src/wp-admin/css/colors/ectoplasm/colors.scss | 8 ++++++-- src/wp-admin/css/colors/light/colors.scss | 10 +++++----- src/wp-admin/css/colors/midnight/colors.scss | 8 ++++++-- src/wp-admin/css/colors/ocean/colors.scss | 10 ++++++---- src/wp-admin/css/colors/sunrise/colors.scss | 13 ++++++------- src/wp-includes/general-template.php | 14 +++++++------- 8 files changed, 47 insertions(+), 36 deletions(-) diff --git a/src/wp-admin/css/colors/blue/colors.scss b/src/wp-admin/css/colors/blue/colors.scss index 1fca84c12bbc3..f1d5f66a1fa8d 100644 --- a/src/wp-admin/css/colors/blue/colors.scss +++ b/src/wp-admin/css/colors/blue/colors.scss @@ -1,16 +1,16 @@ -$highlight-color: #096484; +$highlight-color: #437aa8; @use "../_admin.scss" with ( $scheme-name: "blue", - $base-color: #52accc, + $base-color: #245278, $icon-color: #e5f8ff, $highlight-color: $highlight-color, $notification-color: #e1a948, - $button-color: #e1a948, - + $menu-highlight-text: #fff, + $menu-highlight-icon: #fff, + $menu-bubble-text: #1e1e1e, $menu-submenu-text: #e2ecf1, $menu-submenu-focus-text: #fff, - $menu-submenu-background: #4796b3, $dashboard-icon-background: $highlight-color ); diff --git a/src/wp-admin/css/colors/coffee/colors.scss b/src/wp-admin/css/colors/coffee/colors.scss index 80f846ae67195..30e9e0649f4cf 100644 --- a/src/wp-admin/css/colors/coffee/colors.scss +++ b/src/wp-admin/css/colors/coffee/colors.scss @@ -1,11 +1,13 @@ -$base-color: #59524c; +$base-color: #5c4c40; @use "../_admin.scss" with ( $scheme-name: "coffee", $base-color: $base-color, - $highlight-color: #c7a589, + $highlight-color: #916745, $notification-color: #9ea476, + $menu-highlight-text: #fff, + $menu-highlight-icon: #fff, + $menu-bubble-text: #1e1e1e, + $menu-submenu-focus-text: #fff, $form-checked: $base-color, - - $low-contrast-theme: "true" ); diff --git a/src/wp-admin/css/colors/ectoplasm/colors.scss b/src/wp-admin/css/colors/ectoplasm/colors.scss index a38736a9a24d5..b2c4005313e50 100644 --- a/src/wp-admin/css/colors/ectoplasm/colors.scss +++ b/src/wp-admin/css/colors/ectoplasm/colors.scss @@ -1,11 +1,15 @@ -$base-color: #523f6d; +$base-color: #4a3369; @use "../_admin.scss" with ( $scheme-name: "ectoplasm", $base-color: $base-color, $icon-color: #ece6f6, - $highlight-color: #a3b745, + $highlight-color: #646c3e, $notification-color: #d46f15, + $menu-highlight-text: #fff, + $menu-highlight-icon: #fff, + $menu-bubble-text: #1e1e1e, + $menu-submenu-focus-text: #fff, $form-checked: $base-color, ); diff --git a/src/wp-admin/css/colors/light/colors.scss b/src/wp-admin/css/colors/light/colors.scss index e9fde92e32a7b..e53e4daed1aff 100644 --- a/src/wp-admin/css/colors/light/colors.scss +++ b/src/wp-admin/css/colors/light/colors.scss @@ -1,22 +1,22 @@ @use "sass:color"; -$highlight-color: #04a4cc; +$highlight-color: #007cba; $text-color: #333; $menu-avatar-frame: #aaa; @use "../_admin.scss" with ( $scheme-name: "light", $base-color: #e5e5e5, - $icon-color: #999, + $icon-color: #6a6a6a, $text-color: $text-color, $highlight-color: $highlight-color, - $notification-color: #d64e07, + $notification-color: #c64606, $body-background: #f5f5f5, $menu-highlight-text: #fff, - $menu-highlight-icon: #ccc, - $menu-highlight-background: #888, + $menu-highlight-icon: #fff, + $menu-highlight-background: #6e6e6e, $menu-bubble-text: #fff, $menu-submenu-background: #fff, diff --git a/src/wp-admin/css/colors/midnight/colors.scss b/src/wp-admin/css/colors/midnight/colors.scss index 21e9f2364020a..67f6f665a8567 100644 --- a/src/wp-admin/css/colors/midnight/colors.scss +++ b/src/wp-admin/css/colors/midnight/colors.scss @@ -1,7 +1,7 @@ @use "sass:color"; -$base-color: #363b3f; -$highlight-color: #e14d43; +$base-color: #333c42; +$highlight-color: #cf4339; $notification-color: #69a8bb; @use "../_admin.scss" with ( @@ -9,6 +9,10 @@ $notification-color: #69a8bb; $base-color: $base-color, $highlight-color: $highlight-color, $notification-color: $notification-color, + $menu-highlight-text: #fff, + $menu-highlight-icon: #fff, + $menu-bubble-text: #1e1e1e, + $menu-submenu-focus-text: #fff, $dashboard-accent-2: color.mix($base-color, $notification-color, 90%), ); diff --git a/src/wp-admin/css/colors/ocean/colors.scss b/src/wp-admin/css/colors/ocean/colors.scss index d0ad861c94524..b96b7a8520f2d 100644 --- a/src/wp-admin/css/colors/ocean/colors.scss +++ b/src/wp-admin/css/colors/ocean/colors.scss @@ -1,12 +1,14 @@ -$base-color: #738e96; +$base-color: #39535a; @use "../_admin.scss" with ( $scheme-name: "ocean", $base-color: $base-color, $icon-color: #f2fcff, - $highlight-color: #9ebaa0, + $highlight-color: #567958, $notification-color: #aa9d88, + $menu-highlight-text: #fff, + $menu-highlight-icon: #fff, + $menu-bubble-text: #1e1e1e, + $menu-submenu-focus-text: #fff, $form-checked: $base-color, - - $low-contrast-theme: "true" ); diff --git a/src/wp-admin/css/colors/sunrise/colors.scss b/src/wp-admin/css/colors/sunrise/colors.scss index 146fd1196028b..3a00c91778d79 100644 --- a/src/wp-admin/css/colors/sunrise/colors.scss +++ b/src/wp-admin/css/colors/sunrise/colors.scss @@ -1,11 +1,10 @@ -@use "sass:color"; - -$highlight-color: #dd823b; - @use "../_admin.scss" with ( $scheme-name: "sunrise", - $base-color: #cf4944, - $highlight-color: $highlight-color, + $base-color: #8a312d, + $highlight-color: #ad631e, $notification-color: #ccaf0b, - $menu-submenu-focus-text: color.adjust($highlight-color, $lightness: 35%) + $menu-highlight-text: #fff, + $menu-highlight-icon: #fff, + $menu-bubble-text: #1e1e1e, + $menu-submenu-focus-text: #fff ); diff --git a/src/wp-includes/general-template.php b/src/wp-includes/general-template.php index 34233c35b0cc3..01aefa370b5f1 100644 --- a/src/wp-includes/general-template.php +++ b/src/wp-includes/general-template.php @@ -4941,7 +4941,7 @@ function register_admin_color_schemes() { 'light', _x( 'Light', 'admin color scheme' ), admin_url( "css/colors/light/colors$suffix.css" ), - array( '#e5e5e5', '#999', '#d64e07', '#04a4cc' ), + array( '#e5e5e5', '#6a6a6a', '#c64606', '#007cba' ), array( 'base' => '#999', 'focus' => '#ccc', @@ -4953,7 +4953,7 @@ function register_admin_color_schemes() { 'blue', _x( 'Blue', 'admin color scheme' ), admin_url( "css/colors/blue/colors$suffix.css" ), - array( '#096484', '#4796b3', '#52accc', '#74B6CE' ), + array( '#183751', '#245278', '#437aa8', '#e1a948' ), array( 'base' => '#e5f8ff', 'focus' => '#fff', @@ -4965,7 +4965,7 @@ function register_admin_color_schemes() { 'midnight', _x( 'Midnight', 'admin color scheme' ), admin_url( "css/colors/midnight/colors$suffix.css" ), - array( '#25282b', '#363b3f', '#69a8bb', '#e14d43' ), + array( '#232a2e', '#333c42', '#69a8bb', '#cf4339' ), array( 'base' => '#f1f2f3', 'focus' => '#fff', @@ -4977,7 +4977,7 @@ function register_admin_color_schemes() { 'sunrise', _x( 'Sunrise', 'admin color scheme' ), admin_url( "css/colors/sunrise/colors$suffix.css" ), - array( '#b43c38', '#cf4944', '#dd823b', '#ccaf0b' ), + array( '#6f2724', '#8a312d', '#ad631e', '#ccaf0b' ), array( 'base' => '#f3f1f1', 'focus' => '#fff', @@ -4989,7 +4989,7 @@ function register_admin_color_schemes() { 'ectoplasm', _x( 'Ectoplasm', 'admin color scheme' ), admin_url( "css/colors/ectoplasm/colors$suffix.css" ), - array( '#413256', '#523f6d', '#a3b745', '#d46f15' ), + array( '#392751', '#4a3369', '#646c3e', '#d46f15' ), array( 'base' => '#ece6f6', 'focus' => '#fff', @@ -5001,7 +5001,7 @@ function register_admin_color_schemes() { 'ocean', _x( 'Ocean', 'admin color scheme' ), admin_url( "css/colors/ocean/colors$suffix.css" ), - array( '#627c83', '#738e96', '#9ebaa0', '#aa9d88' ), + array( '#2b3f44', '#39535a', '#567958', '#aa9d88' ), array( 'base' => '#f2fcff', 'focus' => '#fff', @@ -5013,7 +5013,7 @@ function register_admin_color_schemes() { 'coffee', _x( 'Coffee', 'admin color scheme' ), admin_url( "css/colors/coffee/colors$suffix.css" ), - array( '#46403c', '#59524c', '#c7a589', '#9ea476' ), + array( '#382e27', '#5c4c40', '#916745', '#9ea476' ), array( 'base' => '#f3f2f1', 'focus' => '#fff', From 3f1fbe7e8dcfa89977a554bae0d070ecd8587f18 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Wed, 3 Jun 2026 11:27:45 +0000 Subject: [PATCH 154/327] Docs: Clarify the `gallery_style` and `use_default_gallery_style` filters. * Note that the `gallery_style` filter receives the opening HTML `DIV` container in addition to the default CSS. * Point to the `use_default_gallery_style` filter as the way to remove the styles entirely. * Add the missing `@since` changelog entries describing how the filtered markup has evolved. Developed in https://github.com/WordPress/wordpress-develop/pull/12060. Follow-up to r16865, r27396, r46164, r61411. Props sabernhardt, ov3rfly, westonruter. See #64442. Fixes #65317. git-svn-id: https://develop.svn.wordpress.org/trunk@62455 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/media.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index d318a275a9607..eb28db81d6ce9 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -2885,6 +2885,7 @@ function gallery_shortcode( $attr ) { * Filters whether to print default gallery styles. * * @since 3.1.0 + * @since 3.9.0 Set the default to false when the theme supports HTML5 galleries. * * @param bool $print Whether to print default gallery styles. * Defaults to false if the theme supports HTML5 galleries. @@ -2916,9 +2917,18 @@ function gallery_shortcode( $attr ) { $gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>"; /** - * Filters the default gallery shortcode CSS styles. + * Filters the gallery shortcode's default CSS styles and opening HTML div container. + * + * To remove the CSS entirely, use the `use_default_gallery_style` filter instead: + * + * add_filter( 'use_default_gallery_style', '__return_false' ); * * @since 2.5.0 + * @since 3.1.0 Added classes for number of columns and size to opening div. + * @since 5.3.0 Removed the `type` attribute for `style` tags when the theme + * supports HTML5 style, and changed the quotes from single to + * double for other themes. + * @since 7.0.0 Removed the `type` attribute for any theme. * * @param string $gallery_style Default CSS styles and opening HTML div container * for the gallery shortcode output. From e8cfb7d469d74346342ead5dc7859d2558a812f7 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Wed, 3 Jun 2026 22:15:36 +0000 Subject: [PATCH 155/327] Twenty Thirteen: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62456 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentythirteen/functions.php | 12 ++++++++++-- .../themes/twentythirteen/inc/back-compat.php | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/wp-content/themes/twentythirteen/functions.php b/src/wp-content/themes/twentythirteen/functions.php index d59a1989eaaab..6cbbb1c7adf94 100644 --- a/src/wp-content/themes/twentythirteen/functions.php +++ b/src/wp-content/themes/twentythirteen/functions.php @@ -40,6 +40,8 @@ /** * Twenty Thirteen only works in WordPress 3.6 or later. + * + * @global string $wp_version The WordPress version string. */ if ( version_compare( $GLOBALS['wp_version'], '3.6-alpha', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; @@ -70,6 +72,8 @@ function twentythirteen_register_block_patterns() { * @uses set_post_thumbnail_size() To set a custom post thumbnail size. * * @since Twenty Thirteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentythirteen_setup() { /* @@ -360,6 +364,8 @@ function twentythirteen_scripts_styles() { * @since Twenty Thirteen 2.1 * @deprecated Twenty Thirteen 3.8 Disabled filter because, by default, fonts are self-hosted. * + * @global string $wp_version The WordPress version string. + * * @param array $urls URLs to print for resource hints. * @param string $relation_type The relation type the URLs are printed. * @return array URLs to print for resource hints. @@ -402,8 +408,8 @@ function twentythirteen_block_editor_styles() { * * @since Twenty Thirteen 1.0 * - * @global int $paged WordPress archive pagination page count. - * @global int $page WordPress paginated post page count. + * @global int $paged Page number of a list of posts. + * @global int $page Page number of a single post. * * @param string $title Default title text for current view. * @param string $sep Optional separator. @@ -488,6 +494,8 @@ function wp_get_list_item_separator() { * Displays navigation to next/previous set of posts when applicable. * * @since Twenty Thirteen 1.0 + * + * @global WP_Query $wp_query WordPress Query object. */ function twentythirteen_paging_nav() { global $wp_query; diff --git a/src/wp-content/themes/twentythirteen/inc/back-compat.php b/src/wp-content/themes/twentythirteen/inc/back-compat.php index e70658f77cdc1..20b59cf9596c0 100644 --- a/src/wp-content/themes/twentythirteen/inc/back-compat.php +++ b/src/wp-content/themes/twentythirteen/inc/back-compat.php @@ -32,6 +32,8 @@ function twentythirteen_switch_theme() { * Twenty Thirteen on WordPress versions prior to 3.6. * * @since Twenty Thirteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentythirteen_upgrade_notice() { printf( @@ -48,6 +50,8 @@ function twentythirteen_upgrade_notice() { * Prevents the Customizer from being loaded on WordPress versions prior to 3.6. * * @since Twenty Thirteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentythirteen_customize() { wp_die( @@ -68,6 +72,8 @@ function twentythirteen_customize() { * Prevents the Theme Preview from being loaded on WordPress versions prior to 3.4. * * @since Twenty Thirteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentythirteen_preview() { if ( isset( $_GET['preview'] ) ) { From 0b4e8eb36ec8131ea02801d0a847097aa5c72359 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Thu, 4 Jun 2026 08:06:55 +0000 Subject: [PATCH 156/327] Emoji: Update the Twemoji library to version `17.0.3`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some Emoji characters have a default text presentation defined in the Unicode specification. However, some of these characters (mainly ↗ ↘ ↙ ↖) are incorrectly being converted to an emoji character instead due to a bug in the Twemoji library. Version `17.0.3` fixes this bug and ↗ ↘ ↙ ↖ characters are now presented as intended. A full list of changes in this release can be found on GitHub: https://github.com/jdecked/twemoji/compare/v17.0.2...v17.0.3. Because there are no visual modifications to the image assets, a new folder has not been pushed to the WordPress.org CDN and core will continue to reference `/images/core/emoji/17.0.2` to avoid needlessly busting caches. Props jdecked, joen, westonruter, peterwilsoncc, jorbin, siliconforks, desrosj, presskopp, wildworks, audrasjb, iflairwebtechnologies. Fixes #64318. git-svn-id: https://develop.svn.wordpress.org/trunk@62457 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/_enqueues/vendor/twemoji.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/_enqueues/vendor/twemoji.js b/src/js/_enqueues/vendor/twemoji.js index c1d36bba9b2ec..914e77ec3aa74 100644 --- a/src/js/_enqueues/vendor/twemoji.js +++ b/src/js/_enqueues/vendor/twemoji.js @@ -230,7 +230,7 @@ var twemoji = (function ( // RegExp based on emoji's official Unicode standards // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt - re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6f\ud83c\udffb\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffb\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffc\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffc\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffd\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffd\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffe\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffe\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udfff\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udfff\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffb\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffb\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffc\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffc\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffd\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffd\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffe\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffe\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udfff\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udfff\u200d\u2642\ufe0f|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc6f\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83e\udd3c\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc6f\udc8f\udc91]|\ud83e[\udd1d\udd3c])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd\ude70])(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u26d3\ufe0f\u200d\ud83d\udca5|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udf44\u200d\ud83d\udfeb|\ud83c\udf4b\u200d\ud83d\udfe9|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc26\u200d\ud83d\udd25|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83d\ude42\u200d\u2194\ufe0f|\ud83d\ude42\u200d\u2195\ufe0f|\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c\udfc3|\ud83d\udeb6|\ud83e\uddce)(?:\ud83c[\udffb-\udfff])?(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udf85\udfc2\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4\udeb5\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded8\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude8a\ude8e-\udec2\udec6\udec8\udecd-\udedc\udedf-\udeea\udeef]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g, + re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6f\ud83c\udffb\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffb\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffc\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffc\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffd\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffd\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffe\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffe\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udfff\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udfff\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffb\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffb\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffc\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffc\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffd\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffd\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffe\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffe\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udfff\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udfff\u200d\u2642\ufe0f|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc6f\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83e\udd3c\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc6f\udc8f\udc91]|\ud83e[\udd1d\udd3c])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd\ude70])(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc41\ufe0f\u200d\ud83d\udde8\ufe0f|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u26d3\ufe0f\u200d\ud83d\udca5|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udf44\u200d\ud83d\udfeb|\ud83c\udf4b\u200d\ud83d\udfe9|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc26\u200d\ud83d\udd25|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83d\ude42\u200d\u2194\ufe0f|\ud83d\ude42\u200d\u2195\ufe0f|\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:(?:\ud83c[\udd70\udd71\udd7e\udd7f\ude02\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[©®\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb\u25fc\u2600-\u2604\u260e\u2611\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u265f\u2660\u2663\u2665\u2666\u2668\u267b\u267e\u2692\u2694-\u2697\u2699\u269b\u269c\u26a0\u26a7\u26b0\u26b1\u26c8\u26cf\u26d1\u26d3\u26e9\u26f0\u26f1\u26f4\u26f8\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2763\u27a1\u2934\u2935\u2b05-\u2b07\u3030\u303d\u3297\u3299])\ufe0f)|(?:\ud83c[\udc04\ude1a\ude2f]|[\u231a\u231b\u25fd\u25fe\u2614\u2615\u2648-\u2653\u267f\u2693\u26a1\u26aa\u26ab\u26bd\u26be\u26c4\u26c5\u26d4\u26ea\u26f2\u26f3\u26f5\u26fa\u26fd\u2757\u2764\u2b1b\u2b1c\u2b50\u2b55])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83e\udef0)(?:\ufe0f|(?!\ufe0e))|(?:\ud83c\udfc3|\ud83d\udeb6|\ud83e\uddce)(?:\ud83c[\udffb-\udfff])?(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udf85\udfc2\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4\udeb5\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded8\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude8a\ude8e-\udec2\udec6\udec8\udecd-\udedc\udedf-\udeea\udeef]|[\u23e9-\u23ec\u23f0\u23f3\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g, // avoid runtime RegExp creation for not so smart, // not JIT based, and old browsers / engines From 90a2cabe61e694ddbe67a4a1b4dfde3a1c6d63e5 Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Thu, 4 Jun 2026 09:10:15 +0000 Subject: [PATCH 157/327] Docs: Update parameter types to allow null for interactivity api functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When [58327] added annotations for a nullable-typed argument in the Interactivity API, the PHPDoc comment wasn’t also updated. This patch adds the corresponding documentation update. Prepared ahead of WCEU 2026, merged as part of Contributor Day. Developed in: https://github.com/WordPress/wordpress-develop/pull/11470 Discussed in: https://core.trac.wordpress.org/ticket/65404 Follow-up to [58327]. Props audrasjb, mukesh27, soean. Fixes #65404. git-svn-id: https://develop.svn.wordpress.org/trunk@62458 602fd350-edb4-49c9-b593-d223f7449a82 --- .../interactivity-api/class-wp-interactivity-api.php | 6 +++--- src/wp-includes/interactivity-api/interactivity-api.php | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/wp-includes/interactivity-api/class-wp-interactivity-api.php b/src/wp-includes/interactivity-api/class-wp-interactivity-api.php index 0ee2ba8eff20c..095f12380dfbe 100644 --- a/src/wp-includes/interactivity-api/class-wp-interactivity-api.php +++ b/src/wp-includes/interactivity-api/class-wp-interactivity-api.php @@ -138,8 +138,8 @@ final class WP_Interactivity_API { * @since 6.5.0 * @since 6.6.0 The `$store_namespace` param is optional. * - * @param string $store_namespace Optional. The unique store namespace identifier. - * @param array $state Optional. The array that will be merged with the existing state for the specified + * @param string|null $store_namespace Optional. The unique store namespace identifier. + * @param array|null $state Optional. The array that will be merged with the existing state for the specified * store namespace. * @return array The current state for the specified store namespace. This will be the updated state if a $state * argument was provided. @@ -311,7 +311,7 @@ public function filter_script_module_interactivity_data( array $data ): array { * * @since 6.6.0 * - * @param string $store_namespace Optional. The unique store namespace identifier. + * @param string|null $store_namespace Optional. The unique store namespace identifier. */ public function get_context( ?string $store_namespace = null ): array { if ( null === $this->context_stack ) { diff --git a/src/wp-includes/interactivity-api/interactivity-api.php b/src/wp-includes/interactivity-api/interactivity-api.php index 7fa803180552b..105f3f6f29c18 100644 --- a/src/wp-includes/interactivity-api/interactivity-api.php +++ b/src/wp-includes/interactivity-api/interactivity-api.php @@ -53,9 +53,9 @@ function wp_interactivity_process_directives( string $html ): string { * @since 6.5.0 * @since 6.6.0 The namespace can be omitted when called inside derived state getters. * - * @param string $store_namespace The unique store namespace identifier. - * @param array $state Optional. The array that will be merged with the existing state for the specified - * store namespace. + * @param string|null $store_namespace The unique store namespace identifier. + * @param array $state Optional. The array that will be merged with the existing state for the specified + * store namespace. * @return array The state for the specified store namespace. This will be the updated state if a $state argument was * provided. */ @@ -119,7 +119,7 @@ function wp_interactivity_data_wp_context( array $context, string $store_namespa * * @since 6.6.0 * - * @param string $store_namespace Optional. The unique store namespace identifier. + * @param string|null $store_namespace Optional. The unique store namespace identifier. * @return array The context for the specified store namespace. */ function wp_interactivity_get_context( ?string $store_namespace = null ): array { From a6a1aadf38dcef7a86386b9c3e8a7e258c8043cc Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Thu, 4 Jun 2026 09:44:28 +0000 Subject: [PATCH 158/327] Toolbar: Fix unnatural focus outline on frontend. Make the focus outline transparent to avoid showing an unnatural focus outline on the front end. In Windows high contrast mode, the focus outline is still displayed as before. Props hbhalodia, joedolson, wildworks. Fixes #65177. git-svn-id: https://develop.svn.wordpress.org/trunk@62459 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/css/admin-bar.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/css/admin-bar.css b/src/wp-includes/css/admin-bar.css index 2331aeafd4b3c..fb6986e7ecbed 100644 --- a/src/wp-includes/css/admin-bar.css +++ b/src/wp-includes/css/admin-bar.css @@ -78,8 +78,9 @@ html:lang(he-il) .rtl #wpadminbar * { } #wpadminbar a:focus { - /* Inherits transparent outline only visible in Windows High Contrast mode */ outline-offset: -1px; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; } #wpadminbar { From c1163e7d26d5954d1a8b395a241e1ec8dcf44fb1 Mon Sep 17 00:00:00 2001 From: Jb Audras <audrasjb@git.wordpress.org> Date: Thu, 4 Jun 2026 13:02:50 +0000 Subject: [PATCH 159/327] Code Modernization: Simplify node retrieval using null coalescing operator. This changeset makes a small code readability improvement in the `_get_node()` function inside the `WP_Admin_Bar` class. Props Soean, mukesh27. Fixes #65403. git-svn-id: https://develop.svn.wordpress.org/trunk@62460 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-admin-bar.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/wp-includes/class-wp-admin-bar.php b/src/wp-includes/class-wp-admin-bar.php index 9e7b54823b900..0cf2cad3fcf24 100644 --- a/src/wp-includes/class-wp-admin-bar.php +++ b/src/wp-includes/class-wp-admin-bar.php @@ -218,10 +218,7 @@ final protected function _get_node( $id ) { $id = 'root'; } - if ( isset( $this->nodes[ $id ] ) ) { - return $this->nodes[ $id ]; - } - return null; + return $this->nodes[ $id ] ?? null; } /** From 8bed69c4dfdd2efddcca5a9bb477389d67e078d0 Mon Sep 17 00:00:00 2001 From: Jb Audras <audrasjb@git.wordpress.org> Date: Thu, 4 Jun 2026 14:08:26 +0000 Subject: [PATCH 160/327] Code Modernization: Replace `strpos()` with `str_contains()`. This changeset replaces recently introduced `false !== strpos( ... )` and `false === strpos( ... )` with `str_contains()` in core files, making the code more readable and consistent, as well as better aligned with modern development practices. Introduced in [60269] and [60939]. Fixed during WCEU2026 contribution day. Follow-up to [52039], [55988], [56245], [60269] and [60939]. Props Soean, mukesh27. Fixes #65408. git-svn-id: https://develop.svn.wordpress.org/trunk@62461 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-block-processor.php | 6 +++--- src/wp-includes/link-template.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/wp-includes/class-wp-block-processor.php b/src/wp-includes/class-wp-block-processor.php index 7b20fbf85d3bf..fc157fc5c83f9 100644 --- a/src/wp-includes/class-wp-block-processor.php +++ b/src/wp-includes/class-wp-block-processor.php @@ -1799,9 +1799,9 @@ public function get_printable_block_type(): ?string { * @return string Fully-qualified block type including namespace. */ public static function normalize_block_type( string $block_type ): string { - return false === strpos( $block_type, '/' ) - ? "core/{$block_type}" - : $block_type; + return str_contains( $block_type, '/' ) + ? $block_type + : "core/{$block_type}"; } /** diff --git a/src/wp-includes/link-template.php b/src/wp-includes/link-template.php index 54b78a028d745..cfff8b6525e10 100644 --- a/src/wp-includes/link-template.php +++ b/src/wp-includes/link-template.php @@ -4579,7 +4579,7 @@ function get_avatar_data( $id_or_email, $args = null ) { } } elseif ( $id_or_email instanceof WP_Comment ) { $name = $id_or_email->comment_author; - } elseif ( is_string( $id_or_email ) && false !== strpos( $id_or_email, '@' ) ) { + } elseif ( is_string( $id_or_email ) && str_contains( $id_or_email, '@' ) ) { $name = str_replace( array( '.', '_', '-' ), ' ', substr( $id_or_email, 0, strpos( $id_or_email, '@' ) ) ); } From b4ce056611fa001c9964d80656880d10f88f49d5 Mon Sep 17 00:00:00 2001 From: Aaron Jorbin <jorbin@git.wordpress.org> Date: Thu, 4 Jun 2026 16:39:16 +0000 Subject: [PATCH 161/327] Build/Test Tools: Convert repetitive s-type methods to use a @dataProvider Make it easier to add additional test cases for parse_query and query_var[s] tests. See #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62462 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/query/parseQuery.php | 68 ++++++++---------------- 1 file changed, 23 insertions(+), 45 deletions(-) diff --git a/tests/phpunit/tests/query/parseQuery.php b/tests/phpunit/tests/query/parseQuery.php index 7830b6723dfa5..974357f167791 100644 --- a/tests/phpunit/tests/query/parseQuery.php +++ b/tests/phpunit/tests/query/parseQuery.php @@ -5,61 +5,39 @@ */ class Tests_Query_ParseQuery extends WP_UnitTestCase { /** - * @ticket 29736 + * Data provider for test_parse_query_s_type. + * + * @return array[] */ - public function test_parse_query_s_array() { - $q = new WP_Query(); - $q->parse_query( - array( - 's' => array( 'foo' ), - ) + public function data_parse_query_s_types() { + return array( + 'array input returns empty string' => array( array( 'foo' ), '' ), + 'string input returns string' => array( 'foo', 'foo' ), + 'float input returns float' => array( 3.5, 3.5 ), + 'int input returns int' => array( 3, 3 ), + 'bool input returns bool' => array( true, true ), ); - - $this->assertSame( '', $q->query_vars['s'] ); } - public function test_parse_query_s_string() { - $q = new WP_Query(); - $q->parse_query( - array( - 's' => 'foo', - ) - ); - - $this->assertSame( 'foo', $q->query_vars['s'] ); - } - - public function test_parse_query_s_float() { - $q = new WP_Query(); - $q->parse_query( - array( - 's' => 3.5, - ) - ); - - $this->assertSame( 3.5, $q->query_vars['s'] ); - } - - public function test_parse_query_s_int() { - $q = new WP_Query(); - $q->parse_query( - array( - 's' => 3, - ) - ); - - $this->assertSame( 3, $q->query_vars['s'] ); - } - - public function test_parse_query_s_bool() { + /** + * Tests that WP_Query::parse_query() handles various types for the 's' parameter. + * + * @ticket 29736 + * + * @dataProvider data_parse_query_s_types + * + * @param mixed $input The value to pass as 's'. + * @param mixed $expected The expected value of query_vars['s']. + */ + public function test_parse_query_s_type( $input, $expected ) { $q = new WP_Query(); $q->parse_query( array( - 's' => true, + 's' => $input, ) ); - $this->assertTrue( $q->query_vars['s'] ); + $this->assertSame( $expected, $q->query_vars['s'] ); } /** From bdc418a1f07ea382798ae341524eebae215458ab Mon Sep 17 00:00:00 2001 From: Aaron Jorbin <jorbin@git.wordpress.org> Date: Thu, 4 Jun 2026 20:20:05 +0000 Subject: [PATCH 162/327] Build/Test Tools: Fix comment for tax query test. B !== A (at least in this instance). See #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62463 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/query/results.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/tests/query/results.php b/tests/phpunit/tests/query/results.php index 412d02fe83be6..e9ec173d61dfd 100644 --- a/tests/phpunit/tests/query/results.php +++ b/tests/phpunit/tests/query/results.php @@ -335,7 +335,7 @@ public function test_query_tag_a() { public function test_query_tag_b() { $posts = $this->q->query( 'tag=tag-b' ); - // There are 4 posts with Tag A. + // There are 4 posts with Tag B. $this->assertCount( 4, $posts ); $this->assertSame( 'tags-b-and-c', $posts[0]->post_name ); $this->assertSame( 'tags-a-and-b', $posts[1]->post_name ); From bb91d776cadcf99a070d5bde630ec060ff579d24 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Thu, 4 Jun 2026 22:16:23 +0000 Subject: [PATCH 163/327] Build/Test Tools: Correct the Multisite PHPUnit log path. The `tests/phpunit` part of the logging file path in the `multisite.xml` configuration file is unnecessary because it already exists within that directory. See #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62464 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/multisite.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/multisite.xml b/tests/phpunit/multisite.xml index d8f173c6167ac..50b98540f329d 100644 --- a/tests/phpunit/multisite.xml +++ b/tests/phpunit/multisite.xml @@ -74,6 +74,6 @@ </whitelist> </filter> <logging> - <log type="junit" target="tests/phpunit/build/logs/junit.xml" /> + <log type="junit" target="build/logs/junit.xml" /> </logging> </phpunit> From 3b7d216f2e1506009eca03bcbb98ebcfc43da089 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Thu, 4 Jun 2026 22:29:23 +0000 Subject: [PATCH 164/327] Twenty Fourteen: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62465 602fd350-edb4-49c9-b593-d223f7449a82 --- .../themes/twentyfourteen/functions.php | 18 ++++++++++++++++-- .../themes/twentyfourteen/inc/back-compat.php | 6 ++++++ .../themes/twentyfourteen/inc/customizer.php | 2 ++ .../themes/twentyfourteen/inc/widgets.php | 3 +++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/wp-content/themes/twentyfourteen/functions.php b/src/wp-content/themes/twentyfourteen/functions.php index 381c5c44ec2a7..5950eecfbce72 100644 --- a/src/wp-content/themes/twentyfourteen/functions.php +++ b/src/wp-content/themes/twentyfourteen/functions.php @@ -38,6 +38,8 @@ /** * Twenty Fourteen only works in WordPress 3.6 or later. + * + * @global string $wp_version The WordPress version string. */ if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; @@ -54,6 +56,8 @@ * as indicating support post thumbnails. * * @since Twenty Fourteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfourteen_setup() { @@ -226,6 +230,8 @@ function twentyfourteen_setup() { * Adjusts content_width value for image attachment template. * * @since Twenty Fourteen 1.0 + * + * @global int $content_width Content width. */ function twentyfourteen_content_width() { if ( is_attachment() && wp_attachment_is_image() ) { @@ -416,6 +422,8 @@ function twentyfourteen_admin_fonts() { * @since Twenty Fourteen 1.9 * @deprecated Twenty Fourteen 3.6 Disabled filter because, by default, fonts are self-hosted. * + * @global string $wp_version The WordPress version string. + * * @param array $urls URLs to print for resource hints. * @param string $relation_type The relation type the URLs are printed. * @return array URLs to print for resource hints. @@ -523,6 +531,8 @@ function twentyfourteen_the_attached_image() { * Prints a list of all site contributors who published at least one post. * * @since Twenty Fourteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfourteen_list_authors() { $args = array( @@ -595,6 +605,8 @@ function twentyfourteen_list_authors() { * * @since Twenty Fourteen 1.0 * + * @global string $pagenow The filename of the current screen. + * * @param array $classes A list of existing body class values. * @return array The filtered body class list. */ @@ -664,8 +676,8 @@ function twentyfourteen_post_classes( $classes ) { * * @since Twenty Fourteen 1.0 * - * @global int $paged WordPress archive pagination page count. - * @global int $page WordPress paginated post page count. + * @global int $paged Page number of a list of posts. + * @global int $page Page number of a single post. * * @param string $title Default title text for current view. * @param string $sep Optional separator. @@ -743,6 +755,8 @@ function twentyfourteen_register_block_patterns() { * * To overwrite in a plugin, define your own Featured_Content class on or * before the 'setup_theme' hook. + * + * @global string $pagenow The filename of the current screen. */ if ( ! class_exists( 'Featured_Content' ) && 'plugins.php' !== $GLOBALS['pagenow'] ) { require get_template_directory() . '/inc/featured-content.php'; diff --git a/src/wp-content/themes/twentyfourteen/inc/back-compat.php b/src/wp-content/themes/twentyfourteen/inc/back-compat.php index 7ed48c7dc9617..78a7f19b02d2b 100644 --- a/src/wp-content/themes/twentyfourteen/inc/back-compat.php +++ b/src/wp-content/themes/twentyfourteen/inc/back-compat.php @@ -32,6 +32,8 @@ function twentyfourteen_switch_theme() { * Twenty Fourteen on WordPress versions prior to 3.6. * * @since Twenty Fourteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfourteen_upgrade_notice() { printf( @@ -48,6 +50,8 @@ function twentyfourteen_upgrade_notice() { * Prevents the Customizer from being loaded on WordPress versions prior to 3.6. * * @since Twenty Fourteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfourteen_customize() { wp_die( @@ -68,6 +72,8 @@ function twentyfourteen_customize() { * Prevents the Theme Preview from being loaded on WordPress versions prior to 3.4. * * @since Twenty Fourteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfourteen_preview() { if ( isset( $_GET['preview'] ) ) { diff --git a/src/wp-content/themes/twentyfourteen/inc/customizer.php b/src/wp-content/themes/twentyfourteen/inc/customizer.php index f7059776d528f..624d4e6207602 100644 --- a/src/wp-content/themes/twentyfourteen/inc/customizer.php +++ b/src/wp-content/themes/twentyfourteen/inc/customizer.php @@ -150,6 +150,8 @@ function twentyfourteen_customize_preview_js() { * Adds contextual help to the Themes and Post edit screens. * * @since Twenty Fourteen 1.0 + * + * @global string $typenow The post type of the current screen. */ function twentyfourteen_contextual_help() { if ( 'admin_head-edit.php' === current_filter() && 'post' !== $GLOBALS['typenow'] ) { diff --git a/src/wp-content/themes/twentyfourteen/inc/widgets.php b/src/wp-content/themes/twentyfourteen/inc/widgets.php index 7c4f237294b3a..8ffac4cd83057 100644 --- a/src/wp-content/themes/twentyfourteen/inc/widgets.php +++ b/src/wp-content/themes/twentyfourteen/inc/widgets.php @@ -66,6 +66,9 @@ public function enqueue_scripts() { * * @since Twenty Fourteen 1.0 * + * @global int $content_width Content width. + * @global int $more + * * @param array $args An array of standard parameters for widgets in this theme. * @param array $instance An array of settings for this widget instance. */ From 12cdc2c40c194ceb75f5e4eb796e79193b3c3333 Mon Sep 17 00:00:00 2001 From: Joe Dolson <joedolson@git.wordpress.org> Date: Fri, 5 Jun 2026 21:24:31 +0000 Subject: [PATCH 165/327] Administration: Fix button active states in high contrast mode. Adds CSS to distinguish button selected or active states in Windows High Contrast Mode. Props sabernhardt, wildworks, manhar, joedolson. Fixes #65153. git-svn-id: https://develop.svn.wordpress.org/trunk@62467 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/css/buttons.css | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/wp-includes/css/buttons.css b/src/wp-includes/css/buttons.css index cb6e18dbffcb8..09457ce6a4dc5 100644 --- a/src/wp-includes/css/buttons.css +++ b/src/wp-includes/css/buttons.css @@ -194,6 +194,7 @@ TABLE OF CONTENTS: color: var(--wp-admin-theme-color-darker-20, #183ad6); border-color: var(--wp-admin-theme-color, #3858e9); box-shadow: inset 0 2px 6px -2px var(--wp-admin-theme-color-darker-20); + position: relative; } .wp-core-ui .button.active:focus { @@ -203,6 +204,19 @@ TABLE OF CONTENTS: box-shadow: inset 0 2px 6px -2px var(--wp-admin-theme-color-darker-20), 0 0 0 var(--wp-admin-border-width-focus, 1.5px) var(--wp-admin-theme-color, #3858e9); } +/* Only visible in Windows High Contrast mode */ +.wp-core-ui .button.active:before { + content: ""; + display: block; + position: absolute; + width: 100%; + height: 0; + border-top: 3px solid transparent; + bottom: 0; + left: 0; + box-sizing: border-box; +} + .wp-core-ui .button[disabled], .wp-core-ui .button:disabled, .wp-core-ui .button.disabled, From c51fdf2b6aebb1bb70078df08ddc2a51b64bfc57 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Fri, 5 Jun 2026 22:00:03 +0000 Subject: [PATCH 166/327] Twenty Fifteen: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62468 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentyfifteen/functions.php | 6 ++++++ src/wp-content/themes/twentyfifteen/inc/back-compat.php | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/wp-content/themes/twentyfifteen/functions.php b/src/wp-content/themes/twentyfifteen/functions.php index 66e9daa0bf417..494a3dff0909a 100644 --- a/src/wp-content/themes/twentyfifteen/functions.php +++ b/src/wp-content/themes/twentyfifteen/functions.php @@ -36,6 +36,8 @@ /** * Twenty Fifteen only works in WordPress 4.1 or later. + * + * @global string $wp_version The WordPress version string. */ if ( version_compare( $GLOBALS['wp_version'], '4.1-alpha', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; @@ -50,6 +52,8 @@ * as indicating support for post thumbnails. * * @since Twenty Fifteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfifteen_setup() { @@ -499,6 +503,8 @@ function twentyfifteen_block_editor_styles() { * @since Twenty Fifteen 1.7 * @deprecated Twenty Fifteen 3.4 Disabled filter because, by default, fonts are self-hosted. * + * @global string $wp_version The WordPress version string. + * * @param array $urls URLs to print for resource hints. * @param string $relation_type The relation type the URLs are printed. * @return array URLs to print for resource hints. diff --git a/src/wp-content/themes/twentyfifteen/inc/back-compat.php b/src/wp-content/themes/twentyfifteen/inc/back-compat.php index 6a628ae8df0c7..d66c1f6aec83f 100644 --- a/src/wp-content/themes/twentyfifteen/inc/back-compat.php +++ b/src/wp-content/themes/twentyfifteen/inc/back-compat.php @@ -32,6 +32,8 @@ function twentyfifteen_switch_theme() { * Twenty Fifteen on WordPress versions prior to 4.1. * * @since Twenty Fifteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfifteen_upgrade_notice() { printf( @@ -48,6 +50,8 @@ function twentyfifteen_upgrade_notice() { * Prevents the Customizer from being loaded on WordPress versions prior to 4.1. * * @since Twenty Fifteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfifteen_customize() { wp_die( @@ -68,6 +72,8 @@ function twentyfifteen_customize() { * Prevents the Theme Preview from being loaded on WordPress versions prior to 4.1. * * @since Twenty Fifteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentyfifteen_preview() { if ( isset( $_GET['preview'] ) ) { From 278438512042ef6914578a734a64539a03776899 Mon Sep 17 00:00:00 2001 From: Joe Dolson <joedolson@git.wordpress.org> Date: Fri, 5 Jun 2026 22:06:46 +0000 Subject: [PATCH 167/327] Media: Fix input position shift during admin search. Avoid layout element shift by setting position attributes on `.media-bg-overlay` in all viewports, avoiding redraw of flex layout. Props abduremon, mohamedahamed, wildworks, khokansardar, darshitrajyaguru97, joedolson. Fixes #65296. git-svn-id: https://develop.svn.wordpress.org/trunk@62469 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/css/media-views.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/css/media-views.css b/src/wp-includes/css/media-views.css index 0feac6b178d7f..eda326751c2f3 100644 --- a/src/wp-includes/css/media-views.css +++ b/src/wp-includes/css/media-views.css @@ -1834,6 +1834,10 @@ select#media-attachment-date-filters { visibility: visible; } +.media-bg-overlay { + position: absolute; +} + /** * Attachment Details */ @@ -2901,7 +2905,6 @@ select#media-attachment-date-filters { width: 100%; height: 100%; display: none; - position: absolute; left: 0; right: 0; top: 0; From f36e443c93027a827eb2882096eadc179fd94fe6 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Sat, 6 Jun 2026 11:07:09 +0000 Subject: [PATCH 168/327] Media: Reset the URL search parameter when the grid view search is cleared. The throttled `input` handler in `wp.media.view.MediaFrame.Manage` only called `gridRouter.navigate()` when the search value was non-empty, so emptying the search box left the `?search=` query parameter in the address bar. Reloading the page then re-parsed that stale parameter and refilled the input. So now the `navigate()` method is called unconditionally when the input changes in order to reset the URL back to the base `upload.php`. Developed in https://github.com/WordPress/wordpress-develop/pull/11938. Follow-up to r41021. Props mohamedahamed, abduremon, jorbin, ekla, drwpcom, anukasha, huzaifaalmesbah, noruzzaman, rejaulalomkhan, hmbashar, nadabulija, robert681, pedrofigueroa1989, westonruter. Fixes #65298. git-svn-id: https://develop.svn.wordpress.org/trunk@62470 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/media/views/frame/manage.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/js/media/views/frame/manage.js b/src/js/media/views/frame/manage.js index bed774a2e2438..ea16637fdf7a5 100644 --- a/src/js/media/views/frame/manage.js +++ b/src/js/media/views/frame/manage.js @@ -98,8 +98,9 @@ Manage = MediaFrame.extend(/** @lends wp.media.view.MediaFrame.Manage.prototype if ( val ) { url += '?search=' + val; - this.gridRouter.navigate( this.gridRouter.baseUrl( url ), { replace: true } ); } + + this.gridRouter.navigate( this.gridRouter.baseUrl( url ), { replace: true } ); }, 1000 ); // Update the URL when entering search string (at most once per second). From 8a9d768c98ee80c010949a6f529b33807185cf9c Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sat, 6 Jun 2026 23:01:43 +0000 Subject: [PATCH 169/327] Twenty Sixteen: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62471 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentysixteen/functions.php | 8 ++++++-- src/wp-content/themes/twentysixteen/inc/back-compat.php | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/wp-content/themes/twentysixteen/functions.php b/src/wp-content/themes/twentysixteen/functions.php index 696c5431e4f51..50c3a14c753e0 100644 --- a/src/wp-content/themes/twentysixteen/functions.php +++ b/src/wp-content/themes/twentysixteen/functions.php @@ -27,6 +27,8 @@ /** * Twenty Sixteen only works in WordPress 4.4 or later. + * + * @global string $wp_version The WordPress version string. */ if ( version_compare( $GLOBALS['wp_version'], '4.4-alpha', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; @@ -43,6 +45,8 @@ * Create your own twentysixteen_setup() function to override in a child theme. * * @since Twenty Sixteen 1.0 + * + * @global string $wp_version The WordPress version string. */ function twentysixteen_setup() { /* @@ -241,9 +245,9 @@ function twentysixteen_setup() { * * Priority 0 to make it available to lower priority callbacks. * - * @global int $content_width - * * @since Twenty Sixteen 1.0 + * + * @global int $content_width Content width. */ function twentysixteen_content_width() { /** diff --git a/src/wp-content/themes/twentysixteen/inc/back-compat.php b/src/wp-content/themes/twentysixteen/inc/back-compat.php index d7e18f2031060..9ecf21c9835c1 100644 --- a/src/wp-content/themes/twentysixteen/inc/back-compat.php +++ b/src/wp-content/themes/twentysixteen/inc/back-compat.php @@ -35,7 +35,7 @@ function twentysixteen_switch_theme() { * * @since Twenty Sixteen 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentysixteen_upgrade_notice() { printf( @@ -53,7 +53,7 @@ function twentysixteen_upgrade_notice() { * * @since Twenty Sixteen 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentysixteen_customize() { wp_die( @@ -75,7 +75,7 @@ function twentysixteen_customize() { * * @since Twenty Sixteen 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentysixteen_preview() { if ( isset( $_GET['preview'] ) ) { From 4c5b273b2fc8865bdd30ec1a7b2f6b796c725e77 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sun, 7 Jun 2026 22:12:54 +0000 Subject: [PATCH 170/327] Twenty Seventeen: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62472 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentyseventeen/functions.php | 8 +++++++- src/wp-content/themes/twentyseventeen/inc/back-compat.php | 6 +++--- .../template-parts/page/content-front-page-panels.php | 3 +++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/wp-content/themes/twentyseventeen/functions.php b/src/wp-content/themes/twentyseventeen/functions.php index 9f4d73dbde375..1f3d347f971f9 100644 --- a/src/wp-content/themes/twentyseventeen/functions.php +++ b/src/wp-content/themes/twentyseventeen/functions.php @@ -11,6 +11,8 @@ /** * Twenty Seventeen only works in WordPress 4.7 or later. + * + * @global string $wp_version The WordPress version string. */ if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; @@ -23,6 +25,10 @@ * Note that this function is hooked into the after_setup_theme hook, which * runs before the init hook. The init hook is too late for some features, such * as indicating support for post thumbnails. + * + * @since Twenty Seventeen 1.0 + * + * @global int $content_width Content width. */ function twentyseventeen_setup() { @@ -248,7 +254,7 @@ function twentyseventeen_setup() { * * Priority 0 to make it available to lower priority callbacks. * - * @global int $content_width + * @global int $content_width Content width. */ function twentyseventeen_content_width() { diff --git a/src/wp-content/themes/twentyseventeen/inc/back-compat.php b/src/wp-content/themes/twentyseventeen/inc/back-compat.php index 05b6cdb0c4a9a..eef1ee7314534 100644 --- a/src/wp-content/themes/twentyseventeen/inc/back-compat.php +++ b/src/wp-content/themes/twentyseventeen/inc/back-compat.php @@ -33,7 +33,7 @@ function twentyseventeen_switch_theme() { * * @since Twenty Seventeen 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentyseventeen_upgrade_notice() { printf( @@ -51,7 +51,7 @@ function twentyseventeen_upgrade_notice() { * * @since Twenty Seventeen 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentyseventeen_customize() { wp_die( @@ -73,7 +73,7 @@ function twentyseventeen_customize() { * * @since Twenty Seventeen 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentyseventeen_preview() { if ( isset( $_GET['preview'] ) ) { diff --git a/src/wp-content/themes/twentyseventeen/template-parts/page/content-front-page-panels.php b/src/wp-content/themes/twentyseventeen/template-parts/page/content-front-page-panels.php index 923c11f6132a1..5c6959b262158 100644 --- a/src/wp-content/themes/twentyseventeen/template-parts/page/content-front-page-panels.php +++ b/src/wp-content/themes/twentyseventeen/template-parts/page/content-front-page-panels.php @@ -8,6 +8,9 @@ * @version 1.0 */ +/** + * @global int|string $twentyseventeencounter Front page section counter. + */ global $twentyseventeencounter; ?> From 889f80750972cc70ebb3661be261aab92c7b1d5e Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Mon, 8 Jun 2026 21:11:34 +0000 Subject: [PATCH 171/327] Twenty Nineteen: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62473 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentynineteen/functions.php | 2 ++ src/wp-content/themes/twentynineteen/inc/back-compat.php | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/wp-content/themes/twentynineteen/functions.php b/src/wp-content/themes/twentynineteen/functions.php index c9645ee1cae1e..987c13c22f019 100644 --- a/src/wp-content/themes/twentynineteen/functions.php +++ b/src/wp-content/themes/twentynineteen/functions.php @@ -11,6 +11,8 @@ /** * Twenty Nineteen only works in WordPress 4.7 or later. + * + * @global string $wp_version The WordPress version string. */ if ( version_compare( $GLOBALS['wp_version'], '4.7', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; diff --git a/src/wp-content/themes/twentynineteen/inc/back-compat.php b/src/wp-content/themes/twentynineteen/inc/back-compat.php index a54cc5a9f050e..900f9c18a95da 100644 --- a/src/wp-content/themes/twentynineteen/inc/back-compat.php +++ b/src/wp-content/themes/twentynineteen/inc/back-compat.php @@ -33,7 +33,7 @@ function twentynineteen_switch_theme() { * * @since Twenty Nineteen 1.0.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentynineteen_upgrade_notice() { printf( @@ -51,7 +51,7 @@ function twentynineteen_upgrade_notice() { * * @since Twenty Nineteen 1.0.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentynineteen_customize() { wp_die( @@ -73,7 +73,7 @@ function twentynineteen_customize() { * * @since Twenty Nineteen 1.0.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. */ function twentynineteen_preview() { if ( isset( $_GET['preview'] ) ) { From dbf0e21feacbe1fc8d14b126b06d3e58a4ab4117 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 8 Jun 2026 21:24:17 +0000 Subject: [PATCH 172/327] REST API: Fix `rest_is_integer()` returning false for large integers. The previous `round( (float) $maybe_integer ) === (float) $maybe_integer` check rejected large integers on PHP 8.4. The check itself was fragile: a PHP `float` (a 64-bit IEEE-754 double) can represent every integer exactly only up to 2^53, so casting larger values is lossy. Nevertheless, that lossiness alone did not reject anything, since both sides of the comparison were munged identically. What actually broke it was a `round()` regression in PHP 8.4, where `round( (float) $x )` can return a value different from `(float) $x` for certain numbers. That inequality caused canonical integers still valid for a `BIGINT UNSIGNED` column (such as unusually high post IDs) to be incorrectly rejected by REST validation, only on PHP 8.4+. The function now short-circuits returning true for native integers and canonical integer strings so that integer-like values of any magnitude are detected correctly. Decimal and scientific-notation strings (and floats) retain their historical behavior, including the existing float comparison, now rewritten as a `floor()` check whose strict equality compares a float to its own floor and is therefore exact. The limitations around `PHP_INT_MAX` and fractional magnitudes beyond `2 ** 53` are documented on the function, and the data provider gains coverage for large integers, negative floats, and scientific notation. Developed in https://github.com/WordPress/wordpress-develop/pull/11893. Follow-up to r48306. Props siliconforks, gautam23, westonruter, kevinfodness, mboynes, desrosj. Fixes #65271. git-svn-id: https://develop.svn.wordpress.org/trunk@62474 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/rest-api.php | 34 ++++- tests/phpunit/tests/rest-api.php | 212 ++++++++++++++++++++++++++++++- 2 files changed, 239 insertions(+), 7 deletions(-) diff --git a/src/wp-includes/rest-api.php b/src/wp-includes/rest-api.php index 5548ecf5c6f45..a4c22e8f1cca1 100644 --- a/src/wp-includes/rest-api.php +++ b/src/wp-includes/rest-api.php @@ -1564,13 +1564,43 @@ function rest_is_boolean( $maybe_bool ) { /** * Determines if a given value is integer-like. * + * This reports whether the value represents an integer; it does not guarantee that the + * value can be represented as a native PHP integer. Values whose magnitude exceeds + * `PHP_INT_MAX` are still reported as integer-like, even though the `(int)` cast that + * {@see rest_sanitize_value_from_schema()} applies for the 'integer' type cannot round-trip + * them: an out-of-range numeric *string* saturates to `PHP_INT_MAX` or `PHP_INT_MIN`, while + * an out-of-range *float* is an undefined conversion in PHP that yields an arbitrary wrapped + * value. Likewise, a numeric value with a fractional part that is too large for the fraction + * to be represented as a float (greater than 2 ** 53) is reported as integer-like. + * * @since 5.5.0 * * @param mixed $maybe_integer The value being evaluated. * @return bool True if an integer, otherwise false. */ -function rest_is_integer( $maybe_integer ) { - return is_numeric( $maybe_integer ) && round( (float) $maybe_integer ) === (float) $maybe_integer; +function rest_is_integer( $maybe_integer ): bool { + if ( is_int( $maybe_integer ) ) { + return true; + } + + // A canonical integer string of any magnitude — verified without float conversion. + if ( is_string( $maybe_integer ) && preg_match( '/^\s*[+-]?[0-9]+\s*$/', $maybe_integer ) ) { + return true; + } + + // Decimal and scientific-notation strings (and floats) keep their historical behavior. + if ( ! is_numeric( $maybe_integer ) ) { + return false; + } + $float_value = (float) $maybe_integer; + + /* + * The strict equality here is not the unreliable "are two computed floats equal" comparison + * (e.g. 0.1 + 0.2 === 0.3, which is false). It compares a float to its own floor() to ask + * "does this float have a fractional part?". A float is whole exactly when it equals its floor, + * so the comparison is exact and safe regardless of floating-point representation error. + */ + return floor( $float_value ) === $float_value; } /** diff --git a/tests/phpunit/tests/rest-api.php b/tests/phpunit/tests/rest-api.php index 90de3e13eecea..fcb8e3da87f4c 100644 --- a/tests/phpunit/tests/rest-api.php +++ b/tests/phpunit/tests/rest-api.php @@ -2290,44 +2290,91 @@ public function data_rest_sanitize_array() { } /** + * Tests rest_is_integer(). + * * @ticket 51146 + * @ticket 65271 * * @dataProvider data_rest_is_integer * - * @param bool $expected Expected result of the check. - * @param mixed $value The value to check. + * @param bool $expected_is_integer Expected result of the check. + * @param mixed $value The value to check. + * @param int|null $expected_sanitized For integer-like values, the integer that + * {@see rest_sanitize_value_from_schema()} should return. + * A value of null means the value is integer-like but its + * sanitized result is not checked, because the value is too + * large to reason about: the `(int)` cast of an out-of-range + * float is undefined in PHP, so the result is unspecified. + * + * @covers ::rest_is_integer + * @covers ::rest_sanitize_value_from_schema */ - public function test_rest_is_integer( $expected, $value ) { + public function test_rest_is_integer( bool $expected_is_integer, $value, ?int $expected_sanitized = null ): void { $is_integer = rest_is_integer( $value ); - if ( $expected ) { + if ( $expected_is_integer ) { $this->assertTrue( $is_integer ); + + /* + * Validation and sanitization must agree: any value treated as integer-like + * must also be sanitized to the expected integer by the 'integer' type, + * without the value being munged by the (int) cast. This is skipped when + * $expected_sanitized is null, since the sanitized result of an out-of-range + * float is undefined and therefore not worth asserting. + */ + if ( null !== $expected_sanitized ) { + $sanitized = rest_sanitize_value_from_schema( $value, array( 'type' => 'integer' ) ); + $this->assertSame( + $expected_sanitized, + $sanitized, + 'Sanitization should return the expected integer without munging the value.' + ); + } } else { $this->assertFalse( $is_integer ); } } - public function data_rest_is_integer() { + /** + * Data provider for {@see self::test_rest_is_integer()}. + * + * Integer-like rows include a third element: the integer that + * rest_sanitize_value_from_schema() should produce for the value. + * + * @return list<array<int, mixed>> + * + * @phpstan-return list<array{ + * 0: bool, // $expected_is_integer + * 1: mixed, // $value + * 2?: int, // $expected_sanitized + * }> + */ + public function data_rest_is_integer(): array { return array( array( true, 1, + 1, ), array( true, '1', + 1, ), array( true, 0, + 0, ), array( true, -1, + -1, ), array( true, '05', + 5, ), array( false, @@ -2341,6 +2388,14 @@ public function data_rest_is_integer() { false, '5.5', ), + array( + false, + -5.5, + ), + array( + false, + '-5.5', + ), array( false, array(), @@ -2349,6 +2404,153 @@ public function data_rest_is_integer() { false, true, ), + array( + true, + '15e0', + 15, + ), + array( + true, + '15e+0', + 15, + ), + array( + true, + '15e-0', + 15, + ), + array( + false, + '15e-1', + ), + + /* + * Integer-valued floats and decimal strings are accepted for back-compatibility. + * Each of these also round-trips cleanly through the (int) cast performed by + * rest_sanitize_value_from_schema() for the 'integer' type. + */ + array( + true, + 1.0, + 1, + ), + array( + true, + 5.0, + 5, + ), + array( + true, + '1.0', + 1, + ), + array( + true, + '5.0', + 5, + ), + array( + true, + 1.5e3, + 1500, + ), + array( + true, + '1.5e3', + 1500, + ), + array( + true, + '15e2', + 1500, + ), + + // Signed canonical integer strings. + array( + true, + '+5', + 5, + ), + array( + true, + '-5', + -5, + ), + + // Non-numeric and non-string scalars are not integers. + array( + false, + false, + ), + array( + false, + null, + ), + + // The following values test very large integers. + array( + true, + 2 ** 52, + 2 ** 52, + ), + array( + true, + 2 ** 52 + 2, + 2 ** 52 + 2, + ), + array( + true, + '4503599627370496', // 2 ** 52 + 4503599627370496, + ), + array( + true, + '4503599627370498', // 2 ** 52 + 2 + 4503599627370498, + ), + array( + true, + '-4503599627370498', // -( 2 ** 52 + 2 ), a large negative integer string. + -4503599627370498, + ), + array( + true, + '4611686018427387904', // 2 ** 62, a large positive integer string below PHP_INT_MAX. + 4611686018427387904, + ), + + /* + * Out-of-range floats are reported as integer-like, but their sanitized value is + * not asserted: integer arithmetic overflow promotes the result to a float, and the + * subsequent (int) cast of an out-of-range float is undefined in PHP. The null + * $expected_sanitized signals that the sanitized result should not be checked. + */ + array( + true, + PHP_INT_MAX + 1, // Integer overflow promotes to a float greater than PHP_INT_MAX. + null, + ), + array( + true, + PHP_INT_MIN - 1, // Integer overflow promotes to a float less than PHP_INT_MIN. + null, + ), + + /* + * Canonical integer strings beyond the native integer range are reported as + * integer-like, and unlike floats their (int) cast is well-defined: it saturates + * to PHP_INT_MAX or PHP_INT_MIN, so the sanitized value can be asserted. + */ + array( + true, + PHP_INT_MAX . '000', // A string three orders of magnitude above PHP_INT_MAX, whatever the word size. + PHP_INT_MAX, // (int) cast of an out-of-range numeric string saturates. + ), + array( + true, + PHP_INT_MIN . '000', // A string three orders of magnitude below PHP_INT_MIN, whatever the word size. + PHP_INT_MIN, // (int) cast of an out-of-range numeric string saturates. + ), ); } From 55e33259af856fbac2e08caa4482f45b0d74f562 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Tue, 9 Jun 2026 00:47:16 +0000 Subject: [PATCH 173/327] Editor: Guard against non-string `className` in `wp_render_elements_class_name()` block render filter callback. The `wp_render_elements_class_name()` function reads the `className` block attribute and passes it straight to `preg_match()`. While `className` is expected to be a string, malformed or corrupted stored block data can hold another type, such as an array, which triggers a fatal `TypeError` on PHP 8+. Guard against this by returning the block content unchanged when `className` is not a string. While here, align the implementation with `wp_render_custom_css_class_name()` from r62359: replace the regular expression with a `str_contains()` short-circuit followed by an HTML-spec-compliant `strtok()` walk over the class tokens. This also corrects a latent matching bug: the previous `\bwp-elements-\S+\b` pattern treated the hyphen as a word boundary, so a class such as `my-wp-elements-foo` was erroneously matched. Tokenizing the attribute first ensures only a standalone `wp-elements-*` class is applied. Add regression tests for the non-string and substring-prefix cases, and resolve PHPStan errors at rule level 10 (`missingType.iterableValue`, `offsetAccess.nonOffsetAccessible`, `argument.type`) by adding an array shape to the `@phpstan-param` tag. Developed in https://github.com/WordPress/wordpress-develop/pull/12028 and https://github.com/WordPress/gutenberg/pull/78841. Follow-up to r58074, r62359. Props aaronrobertshaw, andrewserong, mukesh27, westonruter. Fixes #65379. git-svn-id: https://develop.svn.wordpress.org/trunk@62475 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/custom-css.php | 21 ++++---- src/wp-includes/block-supports/elements.php | 37 ++++++++++--- .../wpRenderElementsSupport.php | 54 +++++++++++++++++++ 3 files changed, 93 insertions(+), 19 deletions(-) diff --git a/src/wp-includes/block-supports/custom-css.php b/src/wp-includes/block-supports/custom-css.php index d4331ae3706ae..c947609a35698 100644 --- a/src/wp-includes/block-supports/custom-css.php +++ b/src/wp-includes/block-supports/custom-css.php @@ -98,32 +98,31 @@ function wp_enqueue_block_custom_css() { * } $block */ function wp_render_custom_css_class_name( $block_content, $block ) { - $class_name_attr = $block['attrs']['className'] ?? null; - - if ( ! is_string( $class_name_attr ) || ! str_contains( $class_name_attr, 'wp-custom-css-' ) ) { + $class_name_attr = $block['attrs']['className'] ?? null; + $class_name_prefix = 'wp-custom-css-'; + if ( ! is_string( $class_name_attr ) || ! str_contains( $class_name_attr, $class_name_prefix ) ) { return $block_content; } // Parse out the 'wp-custom-css-*' class name added by wp_render_custom_css_support_styles(). - $custom_class_name = null; - $token_delimiter = " \t\f\r\n"; - $class_token = strtok( $class_name_attr, $token_delimiter ); + $matched_class_name = null; + $token_delimiter = " \t\f\r\n"; + $class_token = strtok( $class_name_attr, $token_delimiter ); while ( false !== $class_token ) { - if ( str_starts_with( $class_token, 'wp-custom-css-' ) ) { - $custom_class_name = $class_token; + if ( str_starts_with( $class_token, $class_name_prefix ) ) { + $matched_class_name = $class_token; break; } $class_token = strtok( $token_delimiter ); } - if ( null === $custom_class_name ) { + if ( null === $matched_class_name ) { return $block_content; } $tags = new WP_HTML_Tag_Processor( $block_content ); - if ( $tags->next_tag() ) { $tags->add_class( 'has-custom-css' ); - $tags->add_class( $custom_class_name ); + $tags->add_class( $matched_class_name ); } return $tags->get_updated_html(); diff --git a/src/wp-includes/block-supports/elements.php b/src/wp-includes/block-supports/elements.php index 374da09e8bc8c..54b96aa1dc064 100644 --- a/src/wp-includes/block-supports/elements.php +++ b/src/wp-includes/block-supports/elements.php @@ -237,22 +237,43 @@ function wp_render_elements_support_styles( $parsed_block ) { * @see wp_render_elements_support_styles * @since 6.6.0 * - * @param string $block_content Rendered block content. - * @param array $block Block object. - * @return string Filtered block content. + * @param string $block_content Rendered block content. + * @param array $block Block object. + * @return string Filtered block content. + * + * @phpstan-param array{ + * attrs: array{ + * className?: string, + * ... + * }, + * ... + * } $block */ function wp_render_elements_class_name( $block_content, $block ) { - $class_string = $block['attrs']['className'] ?? ''; - preg_match( '/\bwp-elements-\S+\b/', $class_string, $matches ); + $class_name_attr = $block['attrs']['className'] ?? null; + $class_name_prefix = 'wp-elements-'; + if ( ! is_string( $class_name_attr ) || ! str_contains( $class_name_attr, $class_name_prefix ) ) { + return $block_content; + } - if ( empty( $matches ) ) { + // Parse out the 'wp-elements-*' class name. + $matched_class_name = null; + $token_delimiter = " \t\f\r\n"; + $class_token = strtok( $class_name_attr, $token_delimiter ); + while ( false !== $class_token ) { + if ( str_starts_with( $class_token, $class_name_prefix ) ) { + $matched_class_name = $class_token; + break; + } + $class_token = strtok( $token_delimiter ); + } + if ( null === $matched_class_name ) { return $block_content; } $tags = new WP_HTML_Tag_Processor( $block_content ); - if ( $tags->next_tag() ) { - $tags->add_class( $matches[0] ); + $tags->add_class( $matched_class_name ); } return $tags->get_updated_html(); diff --git a/tests/phpunit/tests/block-supports/wpRenderElementsSupport.php b/tests/phpunit/tests/block-supports/wpRenderElementsSupport.php index 9103fcba90b66..007ba8312e495 100644 --- a/tests/phpunit/tests/block-supports/wpRenderElementsSupport.php +++ b/tests/phpunit/tests/block-supports/wpRenderElementsSupport.php @@ -105,6 +105,60 @@ public function test_elements_block_support_class( $color_settings, $elements_st ); } + /** + * Tests that a non-string `className` attribute does not cause a fatal + * error and the block content is returned unmodified. + * + * Block attributes such as `className` are always expected to be strings, + * however invalid stored data can result in other types being present. The + * render filter should fail gracefully rather than passing an array to + * `preg_match()`. + * + * @ticket 65379 + * + * @covers ::wp_render_elements_class_name + */ + public function test_elements_block_support_class_with_non_string_class_name(): void { + $block = array( + 'blockName' => 'core/paragraph', + 'attrs' => array( + 'className' => array( '0', '1' ), + ), + ); + + $block_content = "<p class=\"0 1\">Test</p>\n"; + + $this->assertSame( + $block_content, + wp_render_elements_class_name( $block_content, $block ), // @phpstan-ignore argument.type (Intentionally passing bad attrs array.) + 'Block content should be returned unchanged when className is not a string' + ); + } + + /** + * Tests that a 'my-wp-elements-*' class name is skipped from processing. + * + * @ticket 65379 + * + * @covers ::wp_render_elements_class_name + */ + public function test_elements_block_support_class_with_invalid_elements_prefix(): void { + $block = array( + 'blockName' => 'core/paragraph', + 'attrs' => array( + 'className' => 'my-wp-elements-foo', + ), + ); + + $block_content = "<p>Test</p>\n"; + + $this->assertSame( + $block_content, + wp_render_elements_class_name( $block_content, $block ), + 'Block content should be returned unchanged when className lacks a class with the expected prefix' + ); + } + /** * Data provider. * From eb1dff02eee2dd5be0373874a87442cd762447ce Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Tue, 9 Jun 2026 03:35:10 +0000 Subject: [PATCH 174/327] Query: Prevent `get_queried_object()` from returning `false`. The documented return type is `WP_Term|WP_Post_Type|WP_Post|WP_User|null`, but `get_queried_object()` could return `false` from author queries because `get_userdata()` yields `false` when the resolved author ID is `null` or matches no user. Guard the `get_userdata()` call and its result so `$this->queried_object` stays `null` in those cases. The adjacent posts page branch is hardened the same way, since `get_post()` can return `null` for a missing or deleted page, which previously caused a property access on `null`. Developed in https://github.com/WordPress/wordpress-develop/pull/12069. Follow-up to r52822, r3290. Props tusharbharti, tommusrhodus, yusufmudagal, westonruter. Fixes #65400. git-svn-id: https://develop.svn.wordpress.org/trunk@62476 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-query.php | 18 +++++++----- tests/phpunit/tests/query.php | 44 ++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php index c9bf901ae1576..437c82f1dd7f1 100644 --- a/src/wp-includes/class-wp-query.php +++ b/src/wp-includes/class-wp-query.php @@ -4019,17 +4019,17 @@ public function get_queried_object() { } } elseif ( $this->is_post_type_archive ) { $post_type = $this->get( 'post_type' ); - if ( is_array( $post_type ) ) { $post_type = reset( $post_type ); } $this->queried_object = get_post_type_object( $post_type ); } elseif ( $this->is_posts_page ) { - $page_for_posts = get_option( 'page_for_posts' ); - - $this->queried_object = get_post( $page_for_posts ); - $this->queried_object_id = (int) $this->queried_object->ID; + $posts_page = get_post( get_option( 'page_for_posts' ) ); + if ( $posts_page ) { + $this->queried_object = $posts_page; + $this->queried_object_id = (int) $posts_page->ID; + } } elseif ( $this->is_singular && ! empty( $this->post ) ) { $this->queried_object = $this->post; $this->queried_object_id = (int) $this->post->ID; @@ -4041,13 +4041,17 @@ public function get_queried_object() { $this->queried_object_id = $author; } elseif ( $author_name ) { $user = get_user_by( 'slug', $author_name ); - if ( $user ) { $this->queried_object_id = $user->ID; } } - $this->queried_object = get_userdata( $this->queried_object_id ); + if ( $this->queried_object_id ) { + $user = get_userdata( $this->queried_object_id ); + if ( $user ) { + $this->queried_object = $user; + } + } } return $this->queried_object; diff --git a/tests/phpunit/tests/query.php b/tests/phpunit/tests/query.php index 40d23816d1ab6..b69104a0b7179 100644 --- a/tests/phpunit/tests/query.php +++ b/tests/phpunit/tests/query.php @@ -723,6 +723,50 @@ public function test_get_queried_object_should_work_for_author_name_before_get_p $this->assertSame( get_queried_object_id(), $user_id ); } + /** + * @ticket 65400 + * + * @covers ::get_queried_object + * @covers WP_Query::get_queried_object + */ + public function test_get_queried_object_should_return_null_when_author_id_is_non_existent(): void { + add_action( + 'wp', + static function () { + /** @var WP_Query $wp_query */ + global $wp_query; + $wp_query->is_author = true; + $wp_query->set( 'author', 999999 ); + } + ); + + $this->go_to( home_url( '/' ) ); + + $this->assertNull( get_queried_object() ); + } + + /** + * @ticket 65400 + * + * @covers ::get_queried_object + * @covers WP_Query::get_queried_object + */ + public function test_get_queried_object_should_return_null_when_author_is_unset(): void { + // Trigger is_author without a valid author query var. + add_action( + 'wp', + static function () { + /** @var WP_Query $wp_query */ + global $wp_query; + $wp_query->is_author = true; + } + ); + + $this->go_to( home_url( '/' ) ); + + $this->assertNull( get_queried_object() ); + } + /** * Tests that the `posts_clauses` filter receives an array of clauses * with the other `posts_*` filters applied, e.g. `posts_join_paged`. From 2704a1cc27fa997811d2c85b3bb5d01c76caafe3 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Tue, 9 Jun 2026 03:52:45 +0000 Subject: [PATCH 175/327] Docs: Fix broken replacement links in contextual help filter docs. The `@deprecated` tags for the legacy `contextual_help_list`, `contextual_help`, and `default_contextual_help` filters pointed to `{@see get_current_screen()->add_help_tab()}` and `{@see get_current_screen()->remove_help_tab()}`. These method-call chains are not resolvable references, so they rendered as broken links on the Developer Reference site (and in IDEs such as PhpStorm). Replace them with references that resolve: `get_current_screen()`, `WP_Screen::add_help_tab()`, and `WP_Screen::remove_help_tab()`. Developed in https://github.com/WordPress/wordpress-develop/pull/12071. Follow-up to r46685. Props ekamran, yusufmudagal, dhruvang21, codesmith32. Fixes #65401. git-svn-id: https://develop.svn.wordpress.org/trunk@62477 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-screen.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/wp-admin/includes/class-wp-screen.php b/src/wp-admin/includes/class-wp-screen.php index 4901b15ed43da..ab7dfef77f67c 100644 --- a/src/wp-admin/includes/class-wp-screen.php +++ b/src/wp-admin/includes/class-wp-screen.php @@ -792,8 +792,9 @@ public function render_screen_meta() { * Filters the legacy contextual help list. * * @since 2.7.0 - * @deprecated 3.3.0 Use {@see get_current_screen()->add_help_tab()} or - * {@see get_current_screen()->remove_help_tab()} instead. + * @deprecated 3.3.0 Use {@see get_current_screen()} with + * {@see WP_Screen::add_help_tab()} or + * {@see WP_Screen::remove_help_tab()} instead. * * @param array $old_compat_help Old contextual help. * @param WP_Screen $screen Current WP_Screen instance. @@ -811,8 +812,9 @@ public function render_screen_meta() { * Filters the legacy contextual help text. * * @since 2.7.0 - * @deprecated 3.3.0 Use {@see get_current_screen()->add_help_tab()} or - * {@see get_current_screen()->remove_help_tab()} instead. + * @deprecated 3.3.0 Use {@see get_current_screen()} with + * {@see WP_Screen::add_help_tab()} or + * {@see WP_Screen::remove_help_tab()} instead. * * @param string $old_help Help text that appears on the screen. * @param string $screen_id Screen ID. @@ -832,8 +834,9 @@ public function render_screen_meta() { * Filters the default legacy contextual help text. * * @since 2.8.0 - * @deprecated 3.3.0 Use {@see get_current_screen()->add_help_tab()} or - * {@see get_current_screen()->remove_help_tab()} instead. + * @deprecated 3.3.0 Use {@see get_current_screen()} with + * {@see WP_Screen::add_help_tab()} or + * {@see WP_Screen::remove_help_tab()} instead. * * @param string $old_help_default Default contextual help text. */ From 46329b682acdcbdc9bfe85e4838da31b280c218e Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Tue, 9 Jun 2026 04:25:45 +0000 Subject: [PATCH 176/327] Editor: add support for layout responsive styles. Adds support for setting responsive layout, block spacing and child layout styles. Props isabel_brison, ramonopoly, audrasjb, desrosj, sabernhardt. Fixes #65164. git-svn-id: https://develop.svn.wordpress.org/trunk@62478 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/layout.php | 601 +++++++++++++----- src/wp-includes/block-supports/states.php | 9 +- tests/phpunit/tests/block-supports/states.php | 565 +++++++++++++++- 3 files changed, 1004 insertions(+), 171 deletions(-) diff --git a/src/wp-includes/block-supports/layout.php b/src/wp-includes/block-supports/layout.php index 3a1f5e7a0598d..2f7eebd4e2cda 100644 --- a/src/wp-includes/block-supports/layout.php +++ b/src/wp-includes/block-supports/layout.php @@ -37,6 +37,193 @@ function wp_get_block_style_variation_name_from_registered_style( string $class_ return null; } +/** + * Returns the child-layout-only subset of a layout object. + * + * @since 7.1.0 + * + * @param mixed $layout Layout object. + * @return array Child layout values, or an empty array. + */ +function wp_get_layout_child_values( $layout ) { + if ( ! is_array( $layout ) ) { + return array(); + } + + return array_intersect_key( + $layout, + array_flip( array( 'selfStretch', 'flexSize', 'columnStart', 'columnSpan', 'rowStart', 'rowSpan' ) ) + ); +} + +/** + * Returns the container-layout subset of a layout object. + * + * @since 7.1.0 + * + * @param mixed $layout Layout object. + * @return array Container layout values, or an empty array. + */ +function wp_get_layout_container_values( $layout ) { + if ( ! is_array( $layout ) ) { + return array(); + } + + return array_diff_key( + $layout, + array_flip( array( 'selfStretch', 'flexSize', 'columnStart', 'columnSpan', 'rowStart', 'rowSpan' ) ) + ); +} + +/** + * Sanitizes a block gap value before layout style generation. + * + * @since 7.1.0 + * + * @param string|array|null $gap_value Block gap value. + * @return string|array|null Sanitized block gap value. + */ +function wp_sanitize_block_gap_value( $gap_value ) { + if ( is_array( $gap_value ) ) { + foreach ( $gap_value as $key => $value ) { + $gap_value[ $key ] = $value && preg_match( '%[\\\(&=}]|/\*%', $value ) ? null : $value; + } + + return $gap_value; + } + + return $gap_value && preg_match( '%[\\\(&=}]|/\*%', $gap_value ) ? null : $gap_value; +} + +/** + * Returns child layout styles for a block affected by its parent's layout. + * + * @since 7.1.0 + * + * @param string $selector CSS selector. + * @param array $child_layout Child layout values. + * @param array $parent_layout Parent layout values. + * @param array|null $viewport_overrides Optional. Child viewport layout overrides to emit. + * @return array Child layout style rules. + */ +function wp_get_child_layout_style_rules( $selector, $child_layout, $parent_layout = array(), $viewport_overrides = null ) { + $base_child_layout = is_array( $child_layout ) ? $child_layout : array(); + $viewport_overrides = is_array( $viewport_overrides ) ? $viewport_overrides : null; + $child_layout = null === $viewport_overrides ? $base_child_layout : array_replace( $base_child_layout, $viewport_overrides ); + $child_layout_declarations = array(); + $child_layout_styles = array(); + $has_viewport_property_override = static function ( $property ) use ( $viewport_overrides ) { + return array_key_exists( $property, $viewport_overrides ); + }; + + $self_stretch = $child_layout['selfStretch'] ?? null; + + if ( null === $viewport_overrides || $has_viewport_property_override( 'selfStretch' ) || $has_viewport_property_override( 'flexSize' ) ) { + if ( 'fixed' === $self_stretch && isset( $child_layout['flexSize'] ) ) { + $child_layout_declarations['flex-basis'] = $child_layout['flexSize']; + $child_layout_declarations['box-sizing'] = 'border-box'; + } elseif ( 'fill' === $self_stretch ) { + $child_layout_declarations['flex-grow'] = '1'; + } + } + + $column_start = $child_layout['columnStart'] ?? null; + $column_span = $child_layout['columnSpan'] ?? null; + if ( null === $viewport_overrides || $has_viewport_property_override( 'columnStart' ) || $has_viewport_property_override( 'columnSpan' ) ) { + if ( $column_start && $column_span ) { + $child_layout_declarations['grid-column'] = "$column_start / span $column_span"; + } elseif ( $column_start ) { + $child_layout_declarations['grid-column'] = "$column_start"; + } elseif ( $column_span ) { + $child_layout_declarations['grid-column'] = "span $column_span"; + } + } + + $row_start = $child_layout['rowStart'] ?? null; + $row_span = $child_layout['rowSpan'] ?? null; + if ( null === $viewport_overrides || $has_viewport_property_override( 'rowStart' ) || $has_viewport_property_override( 'rowSpan' ) ) { + if ( $row_start && $row_span ) { + $child_layout_declarations['grid-row'] = "$row_start / span $row_span"; + } elseif ( $row_start ) { + $child_layout_declarations['grid-row'] = "$row_start"; + } elseif ( $row_span ) { + $child_layout_declarations['grid-row'] = "span $row_span"; + } + } + + if ( ! empty( $child_layout_declarations ) ) { + $child_layout_styles[] = array( + 'selector' => $selector, + 'declarations' => $child_layout_declarations, + ); + } + + $minimum_column_width = $parent_layout['minimumColumnWidth'] ?? null; + $column_count = $parent_layout['columnCount'] ?? null; + + /* + * If columnSpan or columnStart is set, and the parent grid is responsive, i.e. if it has a minimumColumnWidth set, + * the columnSpan should be removed once the grid is smaller than the span, and columnStart should be removed + * once the grid has less columns than the start. + * If there's a minimumColumnWidth, the grid is responsive. But if the minimumColumnWidth value wasn't changed, it won't be set. + * In that case, if columnCount doesn't exist, we can assume that the grid is responsive. + */ + if ( null === $viewport_overrides && ( $column_span || $column_start ) && ( $minimum_column_width || ! $column_count ) ) { + $column_span_number = floatval( $column_span ); + $column_start_number = floatval( $column_start ); + $parent_column_width = $minimum_column_width ? $minimum_column_width : '12rem'; + $parent_column_value = floatval( $parent_column_width ); + $parent_column_unit = explode( $parent_column_value, $parent_column_width ); + + $num_cols_to_break_at = 2; + if ( $column_span_number && $column_start_number ) { + $num_cols_to_break_at = $column_start_number + $column_span_number - 1; + } elseif ( $column_span_number ) { + $num_cols_to_break_at = $column_span_number; + } else { + $num_cols_to_break_at = $column_start_number; + } + + /* + * If there is no unit, the width has somehow been mangled so we reset both unit and value + * to defaults. + * Additionally, the unit should be one of px, rem or em, so that also needs to be checked. + */ + if ( count( $parent_column_unit ) <= 1 ) { + $parent_column_unit = 'rem'; + $parent_column_value = 12; + } else { + $parent_column_unit = $parent_column_unit[1]; + + if ( ! in_array( $parent_column_unit, array( 'px', 'rem', 'em' ), true ) ) { + $parent_column_unit = 'rem'; + } + } + + /* + * A default gap value is used for this computation because custom gap values may not be + * viable to use in the computation of the container query value. + */ + $default_gap_value = 'px' === $parent_column_unit ? 24 : 1.5; + $container_query_value = $num_cols_to_break_at * $parent_column_value + ( $num_cols_to_break_at - 1 ) * $default_gap_value; + $minimum_container_query_value = $parent_column_value * 2 + $default_gap_value - 1; + $container_query_value = max( $container_query_value, $minimum_container_query_value ) . $parent_column_unit; + // If a span is set we want to preserve it as long as possible, otherwise we just reset the value. + $grid_column_value = $column_span && $column_span > 1 ? '1/-1' : 'auto'; + + $child_layout_styles[] = array( + 'rules_group' => "@container (max-width: $container_query_value )", + 'selector' => $selector, + 'declarations' => array( + 'grid-column' => $grid_column_value, + 'grid-row' => 'auto', + ), + ); + } + + return $child_layout_styles; +} + /** * Returns layout definitions, keyed by layout type. * @@ -256,6 +443,7 @@ function wp_register_layout_support( $block_type ) { * @since 6.3.0 Added grid layout type. * @since 6.6.0 Removed duplicated selector from layout styles. * Enabled negative margins for alignfull children of blocks with custom padding. + * @since 7.1.0 Added options array with options to process responsive styles. * @access private * * @param string $selector CSS selector. @@ -266,14 +454,31 @@ function wp_register_layout_support( $block_type ) { * @param bool $should_skip_gap_serialization Optional. Whether to skip applying the user-defined value set in the editor. Default false. * @param string|array $fallback_gap_value Optional. The block gap value to apply. If it's an array expected properties are "top" and/or "left". Default '0.5em'. * @param array|null $block_spacing Optional. Custom spacing set on the block. Default null. + * @param array $options { + * Optional. Extra options for internal callers. Default empty array. + * + * @type array $viewport_overrides An array of layout property overrides for the sake of style generation, + * keyed by property name. + * @type string|null $rules_group Optional group name for the rules. Default null. + * @type bool $has_block_gap_override Whether the block gap has been overridden. Default false. + * } * @return string CSS styles on success. Else, empty string. */ -function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false, $gap_value = null, $should_skip_gap_serialization = false, $fallback_gap_value = '0.5em', $block_spacing = null ) { - $layout_type = $layout['type'] ?? 'default'; - $layout_styles = array(); +function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false, $gap_value = null, $should_skip_gap_serialization = false, $fallback_gap_value = '0.5em', $block_spacing = null, $options = array() ) { + $base_layout = is_array( $layout ) ? $layout : array(); + $viewport_overrides = $options['viewport_overrides'] ?? null; + $layout_for_styles = null === $viewport_overrides ? $base_layout : array_replace( $base_layout, $viewport_overrides ); + $layout_type = $base_layout['type'] ?? 'default'; + $rules_group = $options['rules_group'] ?? null; + $has_block_gap_override = ! empty( $options['has_block_gap_override'] ); + $should_output_block_gap = null === $viewport_overrides || $has_block_gap_override; + $has_viewport_property_override = static function ( $property ) use ( $viewport_overrides ) { + return array_key_exists( $property, $viewport_overrides ); + }; + $layout_styles = array(); if ( 'default' === $layout_type ) { - if ( $has_block_gap_support ) { + if ( $has_block_gap_support && $should_output_block_gap ) { if ( is_array( $gap_value ) ) { $gap_value = $gap_value['top'] ?? null; } @@ -305,9 +510,9 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false } } } elseif ( 'constrained' === $layout_type ) { - $content_size = $layout['contentSize'] ?? ''; - $wide_size = $layout['wideSize'] ?? ''; - $justify_content = $layout['justifyContent'] ?? 'center'; + $content_size = $layout_for_styles['contentSize'] ?? ''; + $wide_size = $layout_for_styles['wideSize'] ?? ''; + $justify_content = $layout_for_styles['justifyContent'] ?? 'center'; $all_max_width_value = $content_size ? $content_size : $wide_size; $wide_max_width_value = $wide_size ? $wide_size : $content_size; @@ -319,16 +524,23 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $margin_left = 'left' === $justify_content ? '0 !important' : 'auto !important'; $margin_right = 'right' === $justify_content ? '0 !important' : 'auto !important'; - if ( $content_size || $wide_size ) { + $has_justify_content_override = null !== $viewport_overrides && $has_viewport_property_override( 'justifyContent' ); + $should_output_constrained_sizes = null === $viewport_overrides || $has_viewport_property_override( 'contentSize' ) || $has_viewport_property_override( 'wideSize' ); + if ( $should_output_constrained_sizes && ( $content_size || $wide_size ) ) { + $content_size_declarations = array( + 'max-width' => $all_max_width_value, + ); + + if ( null === $viewport_overrides || $has_justify_content_override ) { + $content_size_declarations['margin-left'] = $margin_left; + $content_size_declarations['margin-right'] = $margin_right; + } + array_push( $layout_styles, array( 'selector' => "$selector > :where(:not(.alignleft):not(.alignright):not(.alignfull))", - 'declarations' => array( - 'max-width' => $all_max_width_value, - 'margin-left' => $margin_left, - 'margin-right' => $margin_right, - ), + 'declarations' => $content_size_declarations, ), array( 'selector' => "$selector > .alignwide", @@ -341,7 +553,7 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false ); } - if ( isset( $block_spacing ) ) { + if ( null === $viewport_overrides && isset( $block_spacing ) ) { $block_spacing_values = wp_style_engine_get_styles( array( 'spacing' => $block_spacing, @@ -376,21 +588,31 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false } } - if ( 'left' === $justify_content ) { + if ( $has_justify_content_override && ! $should_output_constrained_sizes ) { $layout_styles[] = array( 'selector' => "$selector > :where(:not(.alignleft):not(.alignright):not(.alignfull))", - 'declarations' => array( 'margin-left' => '0 !important' ), + 'declarations' => array( + 'margin-left' => $margin_left, + 'margin-right' => $margin_right, + ), ); - } + } elseif ( null === $viewport_overrides ) { + if ( 'left' === $justify_content ) { + $layout_styles[] = array( + 'selector' => "$selector > :where(:not(.alignleft):not(.alignright):not(.alignfull))", + 'declarations' => array( 'margin-left' => '0 !important' ), + ); + } - if ( 'right' === $justify_content ) { - $layout_styles[] = array( - 'selector' => "$selector > :where(:not(.alignleft):not(.alignright):not(.alignfull))", - 'declarations' => array( 'margin-right' => '0 !important' ), - ); + if ( 'right' === $justify_content ) { + $layout_styles[] = array( + 'selector' => "$selector > :where(:not(.alignleft):not(.alignright):not(.alignfull))", + 'declarations' => array( 'margin-right' => '0 !important' ), + ); + } } - if ( $has_block_gap_support ) { + if ( $has_block_gap_support && $should_output_block_gap ) { if ( is_array( $gap_value ) ) { $gap_value = $gap_value['top'] ?? null; } @@ -422,7 +644,7 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false } } } elseif ( 'flex' === $layout_type ) { - $layout_orientation = $layout['orientation'] ?? 'horizontal'; + $layout_orientation = $layout_for_styles['orientation'] ?? 'horizontal'; $justify_content_options = array( 'left' => 'flex-start', @@ -444,14 +666,19 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $vertical_alignment_options += array( 'space-between' => 'space-between' ); } - if ( ! empty( $layout['flexWrap'] ) && 'nowrap' === $layout['flexWrap'] ) { + $should_output_flex_wrap = null === $viewport_overrides || $has_viewport_property_override( 'flexWrap' ); + $should_output_flex_orientation = null === $viewport_overrides || $has_viewport_property_override( 'orientation' ); + $should_output_flex_justification = null === $viewport_overrides || $has_viewport_property_override( 'justifyContent' ) || $has_viewport_property_override( 'orientation' ); + $should_output_flex_alignment = null === $viewport_overrides || $has_viewport_property_override( 'verticalAlignment' ) || $has_viewport_property_override( 'orientation' ); + + if ( $should_output_flex_wrap && ! empty( $layout_for_styles['flexWrap'] ) && 'nowrap' === $layout_for_styles['flexWrap'] ) { $layout_styles[] = array( 'selector' => $selector, 'declarations' => array( 'flex-wrap' => 'nowrap' ), ); } - if ( $has_block_gap_support && isset( $gap_value ) ) { + if ( $has_block_gap_support && $should_output_block_gap && isset( $gap_value ) ) { $combined_gap_value = ''; $gap_sides = is_array( $gap_value ) ? array( 'top', 'left' ) : array( 'top' ); @@ -489,39 +716,41 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false * since we intend to convert blocks that had flex layout implemented * by custom css. */ - if ( ! empty( $layout['justifyContent'] ) && array_key_exists( $layout['justifyContent'], $justify_content_options ) ) { + if ( $should_output_flex_justification && ! empty( $layout_for_styles['justifyContent'] ) && array_key_exists( $layout_for_styles['justifyContent'], $justify_content_options ) ) { $layout_styles[] = array( 'selector' => $selector, - 'declarations' => array( 'justify-content' => $justify_content_options[ $layout['justifyContent'] ] ), + 'declarations' => array( 'justify-content' => $justify_content_options[ $layout_for_styles['justifyContent'] ] ), ); } - if ( ! empty( $layout['verticalAlignment'] ) && array_key_exists( $layout['verticalAlignment'], $vertical_alignment_options ) ) { + if ( $should_output_flex_alignment && ! empty( $layout_for_styles['verticalAlignment'] ) && array_key_exists( $layout_for_styles['verticalAlignment'], $vertical_alignment_options ) ) { $layout_styles[] = array( 'selector' => $selector, - 'declarations' => array( 'align-items' => $vertical_alignment_options[ $layout['verticalAlignment'] ] ), + 'declarations' => array( 'align-items' => $vertical_alignment_options[ $layout_for_styles['verticalAlignment'] ] ), ); } } else { - $layout_styles[] = array( - 'selector' => $selector, - 'declarations' => array( 'flex-direction' => 'column' ), - ); - if ( ! empty( $layout['justifyContent'] ) && array_key_exists( $layout['justifyContent'], $justify_content_options ) ) { + if ( $should_output_flex_orientation ) { $layout_styles[] = array( 'selector' => $selector, - 'declarations' => array( 'align-items' => $justify_content_options[ $layout['justifyContent'] ] ), + 'declarations' => array( 'flex-direction' => 'column' ), ); - } else { + } + if ( $should_output_flex_justification && ! empty( $layout_for_styles['justifyContent'] ) && array_key_exists( $layout_for_styles['justifyContent'], $justify_content_options ) ) { + $layout_styles[] = array( + 'selector' => $selector, + 'declarations' => array( 'align-items' => $justify_content_options[ $layout_for_styles['justifyContent'] ] ), + ); + } elseif ( $should_output_flex_justification ) { $layout_styles[] = array( 'selector' => $selector, 'declarations' => array( 'align-items' => 'flex-start' ), ); } - if ( ! empty( $layout['verticalAlignment'] ) && array_key_exists( $layout['verticalAlignment'], $vertical_alignment_options ) ) { + if ( $should_output_flex_alignment && ! empty( $layout_for_styles['verticalAlignment'] ) && array_key_exists( $layout_for_styles['verticalAlignment'], $vertical_alignment_options ) ) { $layout_styles[] = array( 'selector' => $selector, - 'declarations' => array( 'justify-content' => $vertical_alignment_options[ $layout['verticalAlignment'] ] ), + 'declarations' => array( 'justify-content' => $vertical_alignment_options[ $layout_for_styles['verticalAlignment'] ] ), ); } } @@ -567,45 +796,46 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $responsive_gap_value = '0px'; } - if ( ! empty( $layout['columnCount'] ) && ! empty( $layout['minimumColumnWidth'] ) ) { - $max_value = 'max(min(' . $layout['minimumColumnWidth'] . ', 100%), (100% - (' . $responsive_gap_value . ' * (' . $layout['columnCount'] . ' - 1))) /' . $layout['columnCount'] . ')'; - $layout_styles[] = array( - 'selector' => $selector, - 'declarations' => array( - 'grid-template-columns' => 'repeat(auto-fill, minmax(' . $max_value . ', 1fr))', - 'container-type' => 'inline-size', - ), - ); - if ( ! empty( $layout['rowCount'] ) ) { - $layout_styles[] = array( - 'selector' => $selector, - 'declarations' => array( 'grid-template-rows' => 'repeat(' . $layout['rowCount'] . ', minmax(1rem, auto))' ), - ); + $should_output_grid_columns = null === $viewport_overrides || $has_viewport_property_override( 'minimumColumnWidth' ) || $has_viewport_property_override( 'columnCount' ); + $uses_gap_in_grid_columns = ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['minimumColumnWidth'] ); + if ( $has_block_gap_override && $uses_gap_in_grid_columns ) { + $should_output_grid_columns = true; + } + + $should_output_grid_rows = ( null === $viewport_overrides || $has_viewport_property_override( 'rowCount' ) ) && ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['rowCount'] ); + $grid_declarations = array(); + + if ( $should_output_grid_columns && ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['minimumColumnWidth'] ) ) { + $max_value = 'max(min(' . $layout_for_styles['minimumColumnWidth'] . ', 100%), (100% - (' . $responsive_gap_value . ' * (' . $layout_for_styles['columnCount'] . ' - 1))) /' . $layout_for_styles['columnCount'] . ')'; + $grid_declarations['grid-template-columns'] = 'repeat(auto-fill, minmax(' . $max_value . ', 1fr))'; + } elseif ( $should_output_grid_columns && ! empty( $layout_for_styles['columnCount'] ) ) { + $grid_declarations['grid-template-columns'] = 'repeat(' . $layout_for_styles['columnCount'] . ', minmax(0, 1fr))'; + } elseif ( $should_output_grid_columns ) { + $minimum_column_width = ! empty( $layout_for_styles['minimumColumnWidth'] ) ? $layout_for_styles['minimumColumnWidth'] : '12rem'; + $grid_declarations['grid-template-columns'] = 'repeat(auto-fill, minmax(min(' . $minimum_column_width . ', 100%), 1fr))'; + } + + if ( ! empty( $grid_declarations ) ) { + $base_has_container_type = empty( $base_layout['columnCount'] ) || ( ! empty( $base_layout['columnCount'] ) && ! empty( $base_layout['minimumColumnWidth'] ) ); + if ( empty( $layout_for_styles['columnCount'] ) || ! empty( $layout_for_styles['minimumColumnWidth'] ) ) { + if ( null === $viewport_overrides || ! $base_has_container_type ) { + $grid_declarations['container-type'] = 'inline-size'; + } } - } elseif ( ! empty( $layout['columnCount'] ) ) { $layout_styles[] = array( 'selector' => $selector, - 'declarations' => array( 'grid-template-columns' => 'repeat(' . $layout['columnCount'] . ', minmax(0, 1fr))' ), + 'declarations' => $grid_declarations, ); - if ( ! empty( $layout['rowCount'] ) ) { - $layout_styles[] = array( - 'selector' => $selector, - 'declarations' => array( 'grid-template-rows' => 'repeat(' . $layout['rowCount'] . ', minmax(1rem, auto))' ), - ); - } - } else { - $minimum_column_width = ! empty( $layout['minimumColumnWidth'] ) ? $layout['minimumColumnWidth'] : '12rem'; + } + if ( $should_output_grid_rows ) { $layout_styles[] = array( 'selector' => $selector, - 'declarations' => array( - 'grid-template-columns' => 'repeat(auto-fill, minmax(min(' . $minimum_column_width . ', 100%), 1fr))', - 'container-type' => 'inline-size', - ), + 'declarations' => array( 'grid-template-rows' => 'repeat(' . $layout_for_styles['rowCount'] . ', minmax(1rem, auto))' ), ); } - if ( $has_block_gap_support && null !== $gap_value && ! $should_skip_gap_serialization ) { + if ( $has_block_gap_support && $should_output_block_gap && null !== $gap_value && ! $should_skip_gap_serialization ) { $layout_styles[] = array( 'selector' => $selector, 'declarations' => array( 'gap' => $gap_value ), @@ -614,6 +844,12 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false } if ( ! empty( $layout_styles ) ) { + if ( ! empty( $rules_group ) ) { + foreach ( $layout_styles as $index => $layout_style ) { + $layout_styles[ $index ]['rules_group'] = $rules_group; + } + } + /* * Add to the style engine store to enqueue and render layout styles. * Return compiled layout styles to retain backwards compatibility. @@ -650,111 +886,81 @@ function wp_render_layout_support_flag( $block_content, $block ) { $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $block['blockName'] ); $block_supports_layout = block_has_support( $block_type, 'layout', false ) || block_has_support( $block_type, '__experimentalLayout', false ); - $child_layout = $block['attrs']['style']['layout'] ?? null; + $style_attr = $block['attrs']['style'] ?? array(); + $child_layout = $style_attr['layout'] ?? null; + + /* + * Collect responsive viewport child layout overrides so that a block with + * only responsive child layout (no base child layout) is still processed. + */ + $viewport_child_layouts = array(); + foreach ( WP_Theme_JSON::RESPONSIVE_BREAKPOINTS as $breakpoint => $media_query ) { + $viewport_child = wp_get_layout_child_values( $style_attr[ $breakpoint ]['layout'] ?? null ); + + if ( ! empty( $viewport_child ) ) { + $viewport_child_layouts[ $breakpoint ] = array( + 'media_query' => $media_query, + 'child_layout' => $viewport_child, + ); + } + } - if ( ! $block_supports_layout && ! $child_layout ) { + if ( ! $block_supports_layout && ! $child_layout && empty( $viewport_child_layouts ) ) { return $block_content; } $outer_class_names = array(); // Child layout specific logic. - if ( $child_layout ) { + if ( $child_layout || ! empty( $viewport_child_layouts ) ) { + $base_child_layout = wp_get_layout_child_values( $child_layout ); + $parent_layout = $block['parentLayout'] ?? array(); /* * Generates a unique class for child block layout styles. * * To ensure consistent class generation across different page renders, * only properties that affect layout styling are used. These properties - * come from `$block['attrs']['style']['layout']` and `$block['parentLayout']`. + * come from `$block['attrs']['style']['layout']`, viewport overrides in + * `$block['attrs']['style'][$breakpoint]['layout']`, and `$block['parentLayout']`. * * As long as these properties coincide, the generated class will be the same. */ - $container_content_class = wp_unique_id_from_values( - array( - 'layout' => array_intersect_key( - $block['attrs']['style']['layout'] ?? array(), - array_flip( - array( 'selfStretch', 'flexSize', 'columnStart', 'columnSpan', 'rowStart', 'rowSpan' ) - ) - ), - 'parentLayout' => array_intersect_key( - $block['parentLayout'] ?? array(), - array_flip( - array( 'minimumColumnWidth', 'columnCount' ) - ) - ), + $container_content_hash_input = array( + 'layout' => $base_child_layout, + 'parentLayout' => array_intersect_key( + $parent_layout, + array_flip( array( 'minimumColumnWidth', 'columnCount' ) ) ), - 'wp-container-content-' ); - $child_layout_declarations = array(); - $child_layout_styles = array(); - - $self_stretch = $child_layout['selfStretch'] ?? null; - - if ( 'fixed' === $self_stretch && isset( $child_layout['flexSize'] ) ) { - $child_layout_declarations['flex-basis'] = $child_layout['flexSize']; - $child_layout_declarations['box-sizing'] = 'border-box'; - } elseif ( 'fill' === $self_stretch ) { - $child_layout_declarations['flex-grow'] = '1'; + foreach ( $viewport_child_layouts as $breakpoint => $viewport_data ) { + $container_content_hash_input[ $breakpoint ] = $viewport_data['child_layout']; } - if ( isset( $child_layout['columnSpan'] ) ) { - $column_span = $child_layout['columnSpan']; - $child_layout_declarations['grid-column'] = "span $column_span"; - } - if ( isset( $child_layout['rowSpan'] ) ) { - $row_span = $child_layout['rowSpan']; - $child_layout_declarations['grid-row'] = "span $row_span"; - } - $child_layout_styles[] = array( - 'selector' => ".$container_content_class", - 'declarations' => $child_layout_declarations, + $container_content_class = wp_unique_id_from_values( + $container_content_hash_input, + 'wp-container-content-' ); + $child_layout_styles = wp_get_child_layout_style_rules( ".$container_content_class", $base_child_layout, $parent_layout ); + /* - * If columnSpan is set, and the parent grid is responsive, i.e. if it has a minimumColumnWidth set, - * the columnSpan should be removed on small grids. If there's a minimumColumnWidth, the grid is responsive. - * But if the minimumColumnWidth value wasn't changed, it won't be set. In that case, if columnCount doesn't - * exist, we can assume that the grid is responsive. + * Emit responsive child layout CSS using the same container-content class + * so that base and responsive child layout share the exact same selector. */ - if ( isset( $child_layout['columnSpan'] ) && ( isset( $block['parentLayout']['minimumColumnWidth'] ) || ! isset( $block['parentLayout']['columnCount'] ) ) ) { - $column_span_number = floatval( $child_layout['columnSpan'] ); - $parent_column_width = $block['parentLayout']['minimumColumnWidth'] ?? '12rem'; - $parent_column_value = floatval( $parent_column_width ); - $parent_column_unit = explode( $parent_column_value, $parent_column_width ); + foreach ( $viewport_child_layouts as $viewport_data ) { + $viewport_child_styles = wp_get_child_layout_style_rules( + ".$container_content_class", + $base_child_layout, + $parent_layout, + $viewport_data['child_layout'] + ); - /* - * If there is no unit, the width has somehow been mangled so we reset both unit and value - * to defaults. - * Additionally, the unit should be one of px, rem or em, so that also needs to be checked. - */ - if ( count( $parent_column_unit ) <= 1 ) { - $parent_column_unit = 'rem'; - $parent_column_value = 12; - } else { - $parent_column_unit = $parent_column_unit[1]; - - if ( ! in_array( $parent_column_unit, array( 'px', 'rem', 'em' ), true ) ) { - $parent_column_unit = 'rem'; - } + foreach ( $viewport_child_styles as $index => $rule ) { + $viewport_child_styles[ $index ]['rules_group'] = $viewport_data['media_query']; } - /* - * A default gap value is used for this computation because custom gap values may not be - * viable to use in the computation of the container query value. - */ - $default_gap_value = 'px' === $parent_column_unit ? 24 : 1.5; - $container_query_value = $column_span_number * $parent_column_value + ( $column_span_number - 1 ) * $default_gap_value; - $container_query_value = $container_query_value . $parent_column_unit; - - $child_layout_styles[] = array( - 'rules_group' => "@container (max-width: $container_query_value )", - 'selector' => ".$container_content_class", - 'declarations' => array( - 'grid-column' => '1/-1', - ), - ); + $child_layout_styles = array_merge( $child_layout_styles, $viewport_child_styles ); } /* @@ -858,22 +1064,9 @@ function wp_render_layout_support_flag( $block_content, $block ) { */ if ( ! current_theme_supports( 'disable-layout-styles' ) ) { - $gap_value = $block['attrs']['style']['spacing']['blockGap'] ?? null; - /* - * Skip if gap value contains unsupported characters. - * Regex for CSS value borrowed from `safecss_filter_attr`, and used here - * to only match against the value, not the CSS attribute. - */ - if ( is_array( $gap_value ) ) { - foreach ( $gap_value as $key => $value ) { - $gap_value[ $key ] = $value && preg_match( '%[\\\(&=}]|/\*%', $value ) ? null : $value; - } - } else { - $gap_value = $gap_value && preg_match( '%[\\\(&=}]|/\*%', $gap_value ) ? null : $gap_value; - } - + $gap_value = wp_sanitize_block_gap_value( $style_attr['spacing']['blockGap'] ?? null ); $fallback_gap_value = $block_type->supports['spacing']['blockGap']['__experimentalDefault'] ?? '0.5em'; - $block_spacing = $block['attrs']['style']['spacing'] ?? null; + $block_spacing = $style_attr['spacing'] ?? null; /* * If a block's block.json skips serialization for spacing or spacing.blockGap, @@ -910,6 +1103,37 @@ function wp_render_layout_support_flag( $block_content, $block ) { $fallback_gap_value = $global_block_gap_value; } + $container_class_hash_input = array( + $used_layout, + $has_block_gap_support, + $gap_value, + $should_skip_gap_serialization, + $fallback_gap_value, + $block_spacing, + ); + + foreach ( array_keys( WP_Theme_JSON::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { + $viewport_style = $style_attr[ $breakpoint ] ?? null; + if ( ! is_array( $viewport_style ) ) { + continue; + } + + $viewport_container_layout = wp_get_layout_container_values( $viewport_style['layout'] ?? null ); + if ( ! empty( $viewport_container_layout ) ) { + $container_class_hash_input[] = array( + 'breakpoint' => $breakpoint, + 'layout' => $viewport_container_layout, + ); + } + + if ( isset( $viewport_style['spacing']['blockGap'] ) ) { + $container_class_hash_input[] = array( + 'breakpoint' => $breakpoint, + 'blockGap' => wp_sanitize_block_gap_value( $viewport_style['spacing']['blockGap'] ), + ); + } + } + /* * Generates a unique ID based on all the data required to obtain the * corresponding layout style. Keeps the CSS class names the same @@ -918,14 +1142,7 @@ function wp_render_layout_support_flag( $block_content, $block ) { * paginations for features like the enhanced pagination of the Query block. */ $container_class = wp_unique_id_from_values( - array( - $used_layout, - $has_block_gap_support, - $gap_value, - $should_skip_gap_serialization, - $fallback_gap_value, - $block_spacing, - ), + $container_class_hash_input, 'wp-container-' . sanitize_title( $block['blockName'] ) . '-is-layout-' ); @@ -939,6 +1156,52 @@ function wp_render_layout_support_flag( $block_content, $block ) { $block_spacing ); + /* + * Emit responsive container layout styles using the same $container_class + * selector as the base layout so they target the inner block wrapper. + */ + foreach ( WP_Theme_JSON::RESPONSIVE_BREAKPOINTS as $breakpoint => $media_query ) { + $viewport_style = $style_attr[ $breakpoint ] ?? null; + if ( ! is_array( $viewport_style ) ) { + continue; + } + + $viewport_container_layout = wp_get_layout_container_values( $viewport_style['layout'] ?? null ); + $has_viewport_layout = ! empty( $viewport_container_layout ); + $has_viewport_block_gap = isset( $viewport_style['spacing']['blockGap'] ); + + if ( ! $has_viewport_layout && ! $has_viewport_block_gap ) { + continue; + } + + $viewport_gap_value = $has_viewport_block_gap + ? wp_sanitize_block_gap_value( $viewport_style['spacing']['blockGap'] ) + : $gap_value; + + $viewport_block_spacing = is_array( $viewport_style['spacing'] ?? null ) + ? array_replace( is_array( $block_spacing ) ? $block_spacing : array(), $viewport_style['spacing'] ) + : $block_spacing; + + $viewport_styles = wp_get_layout_style( + ".$container_class", + $used_layout, + $has_block_gap_support, + $viewport_gap_value, + $should_skip_gap_serialization, + $fallback_gap_value, + $viewport_block_spacing, + array( + 'rules_group' => $media_query, + 'viewport_overrides' => $viewport_container_layout, + 'has_block_gap_override' => $has_viewport_block_gap, + ) + ); + + if ( ! empty( $viewport_styles ) && ! in_array( $container_class, $class_names, true ) ) { + $class_names[] = $container_class; + } + } + // Only add container class and enqueue block support styles if unique styles were generated. if ( ! empty( $style ) ) { $class_names[] = $container_class; diff --git a/src/wp-includes/block-supports/states.php b/src/wp-includes/block-supports/states.php index 38504ee99002b..5220d060a731e 100644 --- a/src/wp-includes/block-supports/states.php +++ b/src/wp-includes/block-supports/states.php @@ -48,7 +48,10 @@ function wp_normalize_state_preset_vars( $value ) { * @return array Normalized state style object. */ function wp_normalize_state_style_for_css_output( $style ) { - return wp_normalize_state_preset_vars( $style ); + // Layout is processed separately by wp_render_layout_support_flag(), so we remove it before declaration generation. + unset( $style['layout'] ); + $style = wp_normalize_state_preset_vars( $style ); + return $style; } /** @@ -444,6 +447,10 @@ function wp_render_block_states_support( $block_content, $block ) { * * State declarations need !important to apply reliably over inline styles and * preset utility classes such as .has-accent-3-background-color. + * + * Layout-driven state styles (responsive layout, blockGap, child layout) are + * handled by wp_render_layout_support_flag() so they share a selector with + * the base layout and target the correct (inner) wrapper element. */ $style_rules = array(); foreach ( $css_rules as $rule ) { diff --git a/tests/phpunit/tests/block-supports/states.php b/tests/phpunit/tests/block-supports/states.php index 2eb5c76e84b67..83bace976277d 100644 --- a/tests/phpunit/tests/block-supports/states.php +++ b/tests/phpunit/tests/block-supports/states.php @@ -37,9 +37,10 @@ public function tear_down() { * * @param string $block_name Block name. * @param array $selectors Optional block selectors, e.g. array( 'root' => '.foo .bar' ). + * @param array $supports Optional block supports. * @return WP_Block_Type */ - private function ensure_block_registered( $block_name, $selectors = array() ) { + private function ensure_block_registered( $block_name, $selectors = array(), $supports = array() ) { $registered_block = WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); if ( $registered_block ) { return $registered_block; @@ -57,6 +58,9 @@ private function ensure_block_registered( $block_name, $selectors = array() ) { if ( ! empty( $selectors ) ) { $args['selectors'] = $selectors; } + if ( ! empty( $supports ) ) { + $args['supports'] = $supports; + } register_block_type( $block_name, $args ); return WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); @@ -836,6 +840,565 @@ public function test_responsive_pseudo_state_generates_media_query_scoped_css() ); } + /** + * Tests that a responsive block gap state generates layout spacing CSS. + * + * Responsive layout CSS is owned by wp_render_layout_support_flag() + * so it shares a selector with the base layout (the inner block wrapper for + * wrapper blocks) instead of being scoped to a separate `wp-states-...` class. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_block_gap_state_generates_layout_spacing_css() { + $this->ensure_block_registered( + 'test/responsive-flow-layout-state', + array(), + array( + 'layout' => array( + 'default' => array( + 'type' => 'default', + ), + ), + 'spacing' => array( + 'blockGap' => true, + ), + ) + ); + + add_theme_support( 'appearance-tools' ); + WP_Theme_JSON_Resolver::clean_cached_data(); + + try { + $block_content = '<div class="wp-block-test"><p>One</p><p>Two</p></div>'; + $block = array( + 'blockName' => 'test/responsive-flow-layout-state', + 'innerContent' => array( '<div class="wp-block-test">', null, '</div>' ), + 'attrs' => array( + 'layout' => array( + 'type' => 'default', + ), + 'style' => array( + 'mobile' => array( + 'spacing' => array( + 'blockGap' => '12px', + ), + ), + ), + ), + ); + + $actual = wp_render_layout_support_flag( $block_content, $block ); + preg_match( '/wp-container-test-responsive-flow-layout-state-is-layout-[a-f0-9]{8}/', $actual, $matches ); + $this->assertNotEmpty( $matches, "wp-container class missing in: $actual" ); + $container_class = $matches[0]; + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $container_class . ' > *{margin-block-start:0;margin-block-end:0;}}', + $actual_stylesheet + ); + $this->assertStringContainsString( + '@media (width <= 480px){.' . $container_class . ' > * + *{margin-block-start:12px;margin-block-end:0;}}', + $actual_stylesheet + ); + } finally { + remove_theme_support( 'appearance-tools' ); + WP_Theme_JSON_Resolver::clean_cached_data(); + } + } + + /** + * Tests that responsive block gap state CSS uses the block's active layout type. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_block_gap_state_uses_active_layout_type() { + $this->ensure_block_registered( + 'test/responsive-flex-layout-state', + array(), + array( + 'layout' => array( + 'default' => array( + 'type' => 'flex', + ), + ), + 'spacing' => array( + 'blockGap' => true, + ), + ) + ); + + add_theme_support( 'appearance-tools' ); + WP_Theme_JSON_Resolver::clean_cached_data(); + + try { + $block_content = '<div class="wp-block-test"><p>One</p><p>Two</p></div>'; + $block = array( + 'blockName' => 'test/responsive-flex-layout-state', + 'innerContent' => array( '<div class="wp-block-test">', null, '</div>' ), + 'attrs' => array( + 'layout' => array( + 'type' => 'flex', + ), + 'style' => array( + 'mobile' => array( + 'spacing' => array( + 'blockGap' => '12px', + ), + ), + ), + ), + ); + + $actual = wp_render_layout_support_flag( $block_content, $block ); + preg_match( '/wp-container-test-responsive-flex-layout-state-is-layout-[a-f0-9]{8}/', $actual, $matches ); + $this->assertNotEmpty( $matches, "wp-container class missing in: $actual" ); + $container_class = $matches[0]; + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $container_class . '{gap:12px;}}', + $actual_stylesheet + ); + } finally { + remove_theme_support( 'appearance-tools' ); + WP_Theme_JSON_Resolver::clean_cached_data(); + } + } + + /** + * Tests that responsive layout state CSS can override grid layout values. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_layout_state_generates_grid_layout_css() { + $this->ensure_block_registered( + 'test/responsive-grid-layout-state', + array(), + array( + 'layout' => array( + 'default' => array( + 'type' => 'grid', + ), + ), + ) + ); + + $block_content = '<div class="wp-block-test"><p>One</p><p>Two</p></div>'; + $block = array( + 'blockName' => 'test/responsive-grid-layout-state', + 'innerContent' => array( '<div class="wp-block-test">', null, '</div>' ), + 'attrs' => array( + 'layout' => array( + 'type' => 'grid', + ), + 'style' => array( + 'mobile' => array( + 'layout' => array( + 'minimumColumnWidth' => '8rem', + ), + ), + ), + ), + ); + + $actual = wp_render_layout_support_flag( $block_content, $block ); + preg_match( '/wp-container-test-responsive-grid-layout-state-is-layout-[a-f0-9]{8}/', $actual, $matches ); + $this->assertNotEmpty( $matches, "wp-container class missing in: $actual" ); + $container_class = $matches[0]; + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $container_class . '{grid-template-columns:repeat(auto-fill, minmax(min(8rem, 100%), 1fr));}}', + $actual_stylesheet + ); + } + + /** + * Tests that responsive layout state CSS can override grid columns. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_layout_state_generates_grid_column_count_css() { + $this->ensure_block_registered( + 'test/responsive-grid-column-layout-state', + array(), + array( + 'layout' => array( + 'default' => array( + 'type' => 'grid', + ), + ), + ) + ); + + $block_content = '<div class="wp-block-test"><p>One</p><p>Two</p></div>'; + $block = array( + 'blockName' => 'test/responsive-grid-column-layout-state', + 'innerContent' => array( '<div class="wp-block-test">', null, '</div>' ), + 'attrs' => array( + 'layout' => array( + 'type' => 'grid', + ), + 'style' => array( + 'mobile' => array( + 'layout' => array( + 'columnCount' => 3, + ), + ), + ), + ), + ); + + $actual = wp_render_layout_support_flag( $block_content, $block ); + preg_match( '/wp-container-test-responsive-grid-column-layout-state-is-layout-[a-f0-9]{8}/', $actual, $matches ); + $this->assertNotEmpty( $matches, "wp-container class missing in: $actual" ); + $container_class = $matches[0]; + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $container_class . '{grid-template-columns:repeat(3, minmax(0, 1fr));}}', + $actual_stylesheet + ); + } + + /** + * Tests that different responsive layout states generate different container + * classes, even when the base layout configuration is identical. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_layout_state_generates_distinct_container_classes_for_distinct_viewport_styles() { + $this->ensure_block_registered( + 'test/responsive-grid-distinct-layout-state', + array(), + array( + 'layout' => array( + 'default' => array( + 'type' => 'grid', + ), + ), + ) + ); + + $block_content = '<div class="wp-block-test"><p>One</p><p>Two</p></div>'; + $base_block = array( + 'blockName' => 'test/responsive-grid-distinct-layout-state', + 'innerContent' => array( '<div class="wp-block-test">', null, '</div>' ), + 'attrs' => array( + 'layout' => array( + 'type' => 'grid', + ), + ), + ); + $first_block = array_replace_recursive( + $base_block, + array( + 'attrs' => array( + 'style' => array( + 'mobile' => array( + 'layout' => array( + 'columnCount' => 3, + ), + ), + ), + ), + ) + ); + $second_block = array_replace_recursive( + $base_block, + array( + 'attrs' => array( + 'style' => array( + 'mobile' => array( + 'layout' => array( + 'columnCount' => 4, + ), + ), + ), + ), + ) + ); + + $first_actual = wp_render_layout_support_flag( $block_content, $first_block ); + $second_actual = wp_render_layout_support_flag( $block_content, $second_block ); + + preg_match( '/wp-container-test-responsive-grid-distinct-layout-state-is-layout-[a-f0-9]{8}/', $first_actual, $first_matches ); + preg_match( '/wp-container-test-responsive-grid-distinct-layout-state-is-layout-[a-f0-9]{8}/', $second_actual, $second_matches ); + + $this->assertNotEmpty( $first_matches, "wp-container class missing in: $first_actual" ); + $this->assertNotEmpty( $second_matches, "wp-container class missing in: $second_actual" ); + + $first_container_class = $first_matches[0]; + $second_container_class = $second_matches[0]; + + $this->assertNotSame( $first_container_class, $second_container_class ); + + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $first_container_class . '{grid-template-columns:repeat(3, minmax(0, 1fr));}}', + $actual_stylesheet + ); + $this->assertStringContainsString( + '@media (width <= 480px){.' . $second_container_class . '{grid-template-columns:repeat(4, minmax(0, 1fr));}}', + $actual_stylesheet + ); + } + + /** + * Tests that responsive grid layout and block gap state CSS are both generated. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_layout_state_generates_grid_columns_and_gap_css() { + $this->ensure_block_registered( + 'test/responsive-grid-columns-gap-layout-state', + array(), + array( + 'layout' => array( + 'default' => array( + 'type' => 'grid', + ), + ), + 'spacing' => array( + 'blockGap' => true, + ), + ) + ); + + add_theme_support( 'appearance-tools' ); + WP_Theme_JSON_Resolver::clean_cached_data(); + + try { + $block_content = '<div class="wp-block-test"><p>One</p><p>Two</p></div>'; + $block = array( + 'blockName' => 'test/responsive-grid-columns-gap-layout-state', + 'innerContent' => array( '<div class="wp-block-test">', null, '</div>' ), + 'attrs' => array( + 'layout' => array( + 'type' => 'grid', + ), + 'style' => array( + 'mobile' => array( + 'layout' => array( + 'columnCount' => 3, + ), + 'spacing' => array( + 'blockGap' => '12px', + ), + ), + ), + ), + ); + + $actual = wp_render_layout_support_flag( $block_content, $block ); + preg_match( '/wp-container-test-responsive-grid-columns-gap-layout-state-is-layout-[a-f0-9]{8}/', $actual, $matches ); + $this->assertNotEmpty( $matches, "wp-container class missing in: $actual" ); + $container_class = $matches[0]; + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $container_class . '{grid-template-columns:repeat(3, minmax(0, 1fr));gap:12px;}}', + $actual_stylesheet + ); + } finally { + remove_theme_support( 'appearance-tools' ); + WP_Theme_JSON_Resolver::clean_cached_data(); + } + } + + /** + * Tests that responsive grid block gap CSS does not repeat unchanged layout declarations. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_grid_block_gap_state_only_outputs_changed_layout_css() { + $this->ensure_block_registered( + 'test/responsive-grid-gap-state', + array(), + array( + 'layout' => array( + 'default' => array( + 'type' => 'grid', + 'minimumColumnWidth' => '12rem', + ), + ), + 'spacing' => array( + 'blockGap' => true, + ), + ) + ); + + add_theme_support( 'appearance-tools' ); + WP_Theme_JSON_Resolver::clean_cached_data(); + + try { + $block_content = '<div class="wp-block-test"><p>One</p><p>Two</p></div>'; + $block = array( + 'blockName' => 'test/responsive-grid-gap-state', + 'innerContent' => array( '<div class="wp-block-test">', null, '</div>' ), + 'attrs' => array( + 'layout' => array( + 'type' => 'grid', + 'minimumColumnWidth' => '12rem', + ), + 'style' => array( + 'tablet' => array( + 'spacing' => array( + 'blockGap' => '12px', + ), + ), + ), + ), + ); + + $actual = wp_render_layout_support_flag( $block_content, $block ); + preg_match( '/wp-container-test-responsive-grid-gap-state-is-layout-[a-f0-9]{8}/', $actual, $matches ); + $this->assertNotEmpty( $matches, "wp-container class missing in: $actual" ); + $container_class = $matches[0]; + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (480px < width <= 782px){.' . $container_class . '{gap:12px;}}', + $actual_stylesheet + ); + $this->assertStringNotContainsString( + '@media (480px < width <= 782px){.' . $container_class . '{grid-template-columns:', + $actual_stylesheet + ); + $this->assertStringNotContainsString( + '@media (480px < width <= 782px){.' . $container_class . '{container-type:', + $actual_stylesheet + ); + } finally { + remove_theme_support( 'appearance-tools' ); + WP_Theme_JSON_Resolver::clean_cached_data(); + } + } + + /** + * Tests that responsive child layout state CSS is generated. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_child_layout_state_generates_grid_span_css() { + $this->ensure_block_registered( 'test/responsive-child-layout-state' ); + + $block_content = '<p>Some text.</p>'; + $block = array( + 'blockName' => 'test/responsive-child-layout-state', + 'innerContent' => array( '<p>Some text.</p>' ), + 'attrs' => array( + 'style' => array( + 'mobile' => array( + 'layout' => array( + 'columnSpan' => '2', + ), + ), + ), + ), + 'parentLayout' => array( + 'type' => 'grid', + 'columnCount' => 3, + ), + ); + + $actual = wp_render_layout_support_flag( $block_content, $block ); + preg_match( '/wp-container-content-[a-f0-9]{8}/', $actual, $matches ); + $this->assertNotEmpty( $matches, "wp-container-content class missing in: $actual" ); + $container_content_class = $matches[0]; + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $container_content_class . '{grid-column:span 2;}}', + $actual_stylesheet + ); + } + + /** + * Tests that a wrapper block (markup with an inner content wrapper) receives + * responsive grid layout CSS scoped to the inner wrapper, not the outermost tag. + * + * Regression test for the bug where wp-states-... was added to the outer tag + * while the wp-container-... layout class lives on the inner wrapper, causing + * the responsive @media rule to apply to the wrong element. + * + * @covers ::wp_render_layout_support_flag + * + * @ticket 65164 + */ + public function test_responsive_layout_state_targets_inner_wrapper_for_wrapper_blocks() { + $this->ensure_block_registered( + 'test/responsive-wrapper-grid-state', + array(), + array( + 'layout' => array( + 'default' => array( + 'type' => 'grid', + ), + ), + ) + ); + + $block_content = '<div class="wp-block-wrapper"><div class="wp-block-wrapper__inner-container"><p>One</p></div></div>'; + $block = array( + 'blockName' => 'test/responsive-wrapper-grid-state', + 'innerContent' => array( + '<div class="wp-block-wrapper"><div class="wp-block-wrapper__inner-container">', + null, + '</div></div>', + ), + 'attrs' => array( + 'layout' => array( + 'type' => 'grid', + ), + 'style' => array( + 'mobile' => array( + 'layout' => array( + 'columnCount' => 3, + ), + ), + ), + ), + ); + + $actual = wp_render_layout_support_flag( $block_content, $block ); + + // The wp-container-...-is-layout-... class should land on the inner wrapper. + $this->assertMatchesRegularExpression( + '/<div class="wp-block-wrapper__inner-container [^"]*wp-container-test-responsive-wrapper-grid-state-is-layout-[a-f0-9]{8}/', + $actual + ); + + preg_match( '/wp-container-test-responsive-wrapper-grid-state-is-layout-[a-f0-9]{8}/', $actual, $matches ); + $container_class = $matches[0]; + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + // The responsive @media rule must target the same selector that lives on + // the inner wrapper element. + $this->assertStringContainsString( + '@media (width <= 480px){.' . $container_class . '{grid-template-columns:repeat(3, minmax(0, 1fr));}}', + $actual_stylesheet + ); + } + /** * Tests that state declarations are marked important. * From 095fab550244b7e68541a95c5262a00089a45cc4 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Tue, 9 Jun 2026 18:10:02 +0000 Subject: [PATCH 177/327] Twenty Twenty: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. See #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62479 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentytwenty/functions.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/wp-content/themes/twentytwenty/functions.php b/src/wp-content/themes/twentytwenty/functions.php index f7cff6248beba..b92ff1a1bd2b7 100644 --- a/src/wp-content/themes/twentytwenty/functions.php +++ b/src/wp-content/themes/twentytwenty/functions.php @@ -32,6 +32,9 @@ * as indicating support for post thumbnails. * * @since Twenty Twenty 1.0 + * + * @global int $content_width Content width. + * @global string $wp_version The WordPress version string. */ function twentytwenty_theme_support() { @@ -461,6 +464,9 @@ function twentytwenty_block_editor_styles() { } } +/** + * @global string $wp_version The WordPress version string. + */ if ( is_admin() && version_compare( $GLOBALS['wp_version'], '6.3', '>=' ) ) { add_action( 'enqueue_block_assets', 'twentytwenty_block_editor_styles', 1, 1 ); } else { From e1f1f5873a0d7c10d4e3d137184d7fb974525c9c Mon Sep 17 00:00:00 2001 From: Joe Dolson <joedolson@git.wordpress.org> Date: Wed, 10 Jun 2026 00:37:02 +0000 Subject: [PATCH 178/327] Media: Fix filter toolbar spinner alignment. The spinner that appeared during filtering was positioned beneath the fields, causing a scrollbar in the filter wrapper container. While only visible during scrolling on MacOS, it was persistently visible on Windows. Fixes the alignment of the toolbar to appear with predictable alignment to the select fields without generating a scrollbar. Follow up to [61757]. Props luismulinari, yogeshbhutkar, dhruvang21, r1k0, sabernhardt, wildworks, audrasjb, joedolson. Fixes #65275. See #23562. git-svn-id: https://develop.svn.wordpress.org/trunk@62480 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/css/media-views.css | 30 +++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/wp-includes/css/media-views.css b/src/wp-includes/css/media-views.css index eda326751c2f3..0062f45e7e84d 100644 --- a/src/wp-includes/css/media-views.css +++ b/src/wp-includes/css/media-views.css @@ -340,6 +340,7 @@ .media-toolbar-secondary { float: left; height: 100%; + position: relative; display: grid; grid-template-columns: repeat( 2, 1fr ); grid-template-rows: repeat( 2, 1fr ); @@ -364,6 +365,13 @@ select#media-attachment-date-filters { grid-area: 2 / 2 / 3 / 3; } +.media-toolbar-secondary > .spinner { + position: absolute; + left: calc( 100% + 2px ); + top: 50%; + margin: 0; +} + .media-toolbar-primary > .media-button, .media-toolbar-primary > .media-button-group { margin-left: 10px; @@ -1286,7 +1294,7 @@ select#media-attachment-date-filters { } .attachments-browser .media-toolbar-primary { - max-width: 33%; + max-width: calc( 33% - 20px ); } .mode-grid .attachments-browser .media-toolbar-primary { @@ -1820,12 +1828,6 @@ select#media-attachment-date-filters { vertical-align: middle; } -.media-modal .media-toolbar .spinner { - float: none; - vertical-align: bottom; - margin: 0 0 5px 5px; -} - .media-frame .instructions + .spinner.is-active { vertical-align: middle; } @@ -2835,6 +2837,10 @@ select#media-attachment-date-filters { float: right; } + .media-frame .media-toolbar-secondary .spinner { + top: calc( 50% - 8px ); + } + .media-modal .attachments-browser .media-toolbar .attachment-filters { height: auto; } @@ -2855,10 +2861,6 @@ select#media-attachment-date-filters { .media-frame .media-toolbar input[type="search"] { line-height: 2.3755; /* 38px */ } - - .media-modal .media-toolbar .spinner { - margin-bottom: 10px; - } } @media screen and (max-width: 782px) { @@ -2870,6 +2872,10 @@ select#media-attachment-date-filters { bottom: -60px; } + .media-frame .media-toolbar-secondary .spinner { + top: 0; + } + .mode-grid .attachments-browser .media-toolbar-primary { display: grid; grid-template-columns: auto 1fr; @@ -2894,7 +2900,7 @@ select#media-attachment-date-filters { top: 0; bottom: 0; margin: auto; - left: 0; + left: calc( 100% + 2px ); right: 0; z-index: 9; } From 6939aa7d2450c2e8fcdd111381b41d2492f8529a Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Wed, 10 Jun 2026 13:30:14 +0000 Subject: [PATCH 179/327] Media: Make image editor help icon scheme-aware. The image editor help toggle icon used a hardcoded classic blue color. Replace it with a CSS custom property so the icon follows the user's admin color scheme. Props dervishov, huzaifaalmesbah, jamesbregenzer, mukesh27, ozgursar, wildworks. Fixes #64937. git-svn-id: https://develop.svn.wordpress.org/trunk@62481 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/media.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/wp-admin/css/media.css b/src/wp-admin/css/media.css index ae21bb77d3f82..805868a286304 100644 --- a/src/wp-admin/css/media.css +++ b/src/wp-admin/css/media.css @@ -1187,7 +1187,7 @@ border color while dragging a file over the uploader drop area */ margin: -1px 0 0 -1px; padding: 0; background: transparent; - color: #2271b1; + color: var(--wp-admin-theme-color); font-size: 20px; line-height: 1; cursor: pointer; @@ -1196,9 +1196,9 @@ border color while dragging a file over the uploader drop area */ } .image-editor .imgedit-settings .imgedit-help-toggle:focus { - color: #2271b1; - border-color: #2271b1; - box-shadow: 0 0 0 1px #2271b1; + color: var(--wp-admin-theme-color); + border-color: var(--wp-admin-theme-color); + box-shadow: 0 0 0 1px var(--wp-admin-theme-color); /* Only visible in Windows High Contrast mode */ outline: 2px solid transparent; } From 2001ef14e6bada1575d2e8b144efff4ce9c01dab Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Wed, 10 Jun 2026 15:04:54 +0000 Subject: [PATCH 180/327] General: Add support for unicode email addresses in is_email and sanitize_email MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds support for the unicode address extensions in RFC 6530-3 and refactors the code so there are fewer long regexes and less duplication between sanitize_email and is_email. A new class, WP_Email_Address, provides the shared parts. Opting out of unicode support is easy, default-filters.php adds unicode support by adding filters, which can be removed. `sanitize_email` no longer does major changes like removing an entire subdomain from someone's address, it only cleans up things like soft hyphens and whitespace — changes that happen when coping an email address from text. Developed in: https://github.com/WordPress/wordpress-develop/pull/5237 Discussed in: https://core.trac.wordpress.org/ticket/31992 Props agulbra, akirk, benniledl, dmsnell, ironprogrammer, justlevine, mdawaffe, mukeshpanchal27, SirLouen, tusharbharti. Fixes #31992. git-svn-id: https://develop.svn.wordpress.org/trunk@62482 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-email-address.php | 405 ++++++++++++++++++ src/wp-includes/default-filters.php | 11 + src/wp-includes/formatting.php | 296 ++++++------- src/wp-settings.php | 1 + tests/phpunit/tests/auth.php | 4 +- .../phpunit/tests/formatting/antispambot.php | 3 + tests/phpunit/tests/formatting/isEmail.php | 7 +- .../tests/formatting/sanitizeEmail.php | 26 +- .../tests/privacy/wpCreateUserRequest.php | 5 +- .../rest-api/rest-comments-controller.php | 4 +- .../tests/wp-email-address/wpEmailAddress.php | 249 +++++++++++ 11 files changed, 836 insertions(+), 175 deletions(-) create mode 100644 src/wp-includes/class-wp-email-address.php create mode 100644 tests/phpunit/tests/wp-email-address/wpEmailAddress.php diff --git a/src/wp-includes/class-wp-email-address.php b/src/wp-includes/class-wp-email-address.php new file mode 100644 index 0000000000000..fd4f0ef8937ba --- /dev/null +++ b/src/wp-includes/class-wp-email-address.php @@ -0,0 +1,405 @@ +<?php +/** + * Class 'WP_Email_Address'. + * + * @package WordPress + * @since 7.1.0 + */ + +/** + * WP_Email_Address Class. + * + * Represents a validated email address. The address may or may not be deliverable. + * + * Use the static factory method {@see WP_Email_Address::from_string()} to create instances + * of this class rather than the constructor. This method only returns an instance for + * validated email addresses, and `null` if the provided email address fails to validate. + * + * Example: + * + * $email = WP_Email_Address::from_string( 'wordpress@wordpress.org' ); + * 'wordpress' === $email->get_local_part(); + * 'wordpress.org' === $email->get_domain(); + * + * @see self::from_string() to parse and validate a provided email address. + * @see self::get_localpart() for the local part or mailbox of the address. + * @see self::get_ascii_domain() for an encoded version of the domain best suited for + * printing in contexts where other software reads it and + * decodes it, such as in an `<a href>` attribute. + * @see self::get_unicode_domain() for a decoded version of the domain best suited for + * printing in contexts where humans read it, where any + * Unicode characters print as they are, not as punycode. + * + * @since 7.1.0 + */ +final class WP_Email_Address { + /** + * Regex for the local part when Unicode is not enabled. + * + * Matches the character set from the WHATWG email specification: + * https://html.spec.whatwg.org/multipage/input.html#email-state-(type=email) + * + * @since 7.1.0 + * @var string + */ + const LOCAL_PART_ASCII_REGEX = '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+$/'; + + /** + * Regex for the local part when Unicode is enabled. + * + * Extends the WHATWG character set to allow Unicode letters and numbers, + * and applies the same grapheme-cluster structure used for domain labels: + * each cluster must open with a non-combining character. + * + * @since 7.1.0 + * @var string + */ + const LOCAL_PART_UNICODE_REGEX = '/^([\p{L}\p{N}.!#$%&\'*+\/=?^_`{|}~-]\p{M}*)+$/u'; + + /** + * Pattern for a single ASCII domain label (no dot). + * + * Matches a label from the WHATWG email specification: starts and ends with + * a letter or digit; internal characters may include hyphens. + * + * @since 7.1.0 + * @var string + */ + const DOMAIN_LABEL_ASCII = '[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?'; + + /** + * Pattern for a single Unicode domain label (no dot). + * + * Extends the ASCII label pattern to allow Unicode letters and numbers, + * with grapheme-cluster structure: each cluster must open with a letter or + * digit (not a combining mark), followed by zero or more combining marks. + * + * @since 7.1.0 + * @var string + */ + const DOMAIN_LABEL_UNICODE = '[\p{L}\p{N}]\p{M}*(?:(?:[\p{L}\p{N}-]\p{M}*)*[\p{L}\p{N}]\p{M}*)?'; + + /** + * Regex for the domain when Unicode is not enabled. + * + * Assembled from {@see self::DOMAIN_LABEL_ASCII}: one label, then zero or + * more dot-separated labels. + * + * @since 7.1.0 + * @var string + */ + const DOMAIN_ASCII_REGEX = '/^' . self::DOMAIN_LABEL_ASCII . '(?:\.' . self::DOMAIN_LABEL_ASCII . ')*$/'; + + /** + * Regex for the domain when Unicode is enabled. + * + * Assembled from {@see self::DOMAIN_LABEL_UNICODE}: one label, then zero or + * more dot-prefixed labels. + * + * @since 7.1.0 + * @var string + */ + const DOMAIN_UNICODE_REGEX = '/^' . self::DOMAIN_LABEL_UNICODE . '(?:\.' . self::DOMAIN_LABEL_UNICODE . ')*$/u'; + + /** + * The local part of the email address (the portion before the '@'). + * + * @since 7.1.0 + * @var string + */ + private $localpart; + + /** + * The email domain using punycode transcription instead of Unicode characters. + * + * Example: + * + * $email = WP_Email_Address::from_string( 'checkout@bücher.tld' ); + * 'xn--bcher-kva.tld' === $email->get_ascii_domain(); + * + * @see self::$decoded_domain + * + * @since 7.1.0 + * @var string + */ + private $encoded_domain; + + /** + * The email domain, which may contain Unicode characters. + * + * Example: + * + * $email = WP_Email_Address::from_string( 'checkout@bücher.tld' ); + * 'bücher.tld' === $email->get_unicode_domain(); + * + * @see self::$encoded_domain + * + * @since 7.1.0 + * @var string + */ + private $decoded_domain; + + /** + * Private constructor. Use {@see WP_Email_Address::from_string()} to create instances. + * + * @since 7.1.0 + * @private + * + * @param string $localpart The local part of the email address. + * @param string $ascii_domain The domain part of the email address, which may include punycode transcription. + * @param string|null $unicode_domain The domain part of the email address, which may contain Unicode characters, or + * null if no Unicode translation exists. + */ + private function __construct( string $localpart, string $ascii_domain, ?string $unicode_domain ) { + $this->localpart = $localpart; + $this->encoded_domain = $ascii_domain; + $this->decoded_domain = $unicode_domain; + } + + /** + * Creates a WP_Email_Address from a string. + * + * This method is intended to accept all strings that are considered valid email + * addresses by the WHATWG HTML specification for the `email` input type + * {@link https://html.spec.whatwg.org/multipage/input.html#email-state-(type=email)} + * and some additional addresses, while rejecting strings that are more likely to + * be typos, mispastes, or attacks. This class may reject a few address that are + * valid according to RFC 5322, but it always accepts an address if it's valid + * according to WHATWG. Put differently: If users can type an address into the + * major browsers of 2026, this class accepts them, if they can't (in 2026), + * this class may or may not. + * + * Example: + * + * // Typical all-US-ASCII email address. + * $email = WP_Email_Address::from_string( 'webmaster@example.com' ); + * 'webmaster' === $email->get_localpart(); + * 'example.com' === $email->get_ascii_domain(); + * 'example.com' === $email->get_unicode_domain(); + * + * // Punycode domains are always decoded. + * $email = WP_Email_Address::from_string( 'books@xn--bcher-kva.de' ); + * 'books' === $email->get_localpart(); + * 'xn--bcher-kva.de' === $email->get_ascii_domain(); + * 'Bücher.de' === $email->get_unicode_domain(); + * + * // Unicode localparts are accepted if Unicode addresses are requested (the default). + * $email = WP_Email_Address::from_string( 'bücher@example.com' ); + * 'bücher' === $email->get_localpart(); + * + * // Addresses with non-ASCII are rejected if ASCII-only addresses are requested. + * null === WP_Email_Address::from_string( 'books@xn--bcher-kva.de', 'ascii' ); + * null === WP_Email_Address::from_string( 'bücher@xn--bcher-kva.de', 'ascii' ); + * null === WP_Email_Address::from_string( 'bücher@Bücher.de', 'ascii' ); + * + * // Some valid addresses (according to RFC 5322) are rejected. + * null === WP_Email_Address::from_string( '"<iframe src=...>"@example.com' ); + * + * Note! If an address contains punycode encodings but the required {@see idn_to_utf8()} + * function is missing (from the `intl` extension), this will reject that email address. + * + * @since 7.1.0 + * + * @param string $input The email address string to parse. + * @param 'ascii'|'unicode' $character_set Allow only ASCII addresses or all valid Unicode addresses. + * @return WP_Email_Address|null A WP_Email_Address instance, or null if the input fails to validate. + */ + public static function from_string( string $input, string $character_set = 'unicode' ): ?WP_Email_Address { + // There must be exactly one '@' sign. + $at_pos = strpos( $input, '@' ); + if ( false === $at_pos || strrpos( $input, '@' ) !== $at_pos ) { + return null; + } + + $allow_unicode = 'unicode' === $character_set; + $localpart = substr( $input, 0, $at_pos ); + $ascii_domain = substr( $input, $at_pos + 1 ); + $domain_labels = explode( '.', $ascii_domain ); + $local_pattern = $allow_unicode ? self::LOCAL_PART_UNICODE_REGEX : self::LOCAL_PART_ASCII_REGEX; + $domain_pattern = $allow_unicode ? self::DOMAIN_UNICODE_REGEX : self::DOMAIN_ASCII_REGEX; + + foreach ( $domain_labels as $label ) { + // DNS limits each label to 63 octets. + if ( strlen( $label ) > 63 ) { + return null; + } + } + + /* + * Without support for decoding punycode it’s not possible to validate + * the email address, so abort if any domain labels require decoding. + * + * The pattern detects `xn--` prefixes and invalid ACE prefixes. + */ + $needs_decoding = 1 === preg_match( '/(?:^|\.)..--/', $ascii_domain ); + if ( $needs_decoding && ! function_exists( 'idn_to_utf8' ) ) { + return null; + } + + /* + * Validate each domain label, decode any punycode to UTF-8, and + * reassemble the decoded labels into the local $domain variable. + */ + if ( $needs_decoding ) { + $decoded_labels = array(); + foreach ( $domain_labels as $label ) { + // Decode punycode labels to their Unicode form for further validation. + if ( str_starts_with( $label, 'xn--' ) ) { + $label = idn_to_utf8( $label, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46 ); + if ( false === $label ) { + return null; + } + } elseif ( 1 === preg_match( '/^..--/', $label ) ) { + // Reject labels with a reserved ACE-like prefix (two chars followed by '--'). + return null; + } + $decoded_labels[] = $label; + } + $decoded_domain = implode( '.', $decoded_labels ); + } else { + $decoded_domain = $ascii_domain; + } + + // Without Unicode support, reject any non-ASCII byte in either part. + if ( + ! $allow_unicode && + ( + 1 === preg_match( '/[\x80-\xff]/', $input ) || + 1 === preg_match( '/[\x80-\xff]/', $decoded_domain ) + ) + ) { + return null; + } + + // All parts must be valid UTF-8, regardless of whether Unicode is requested. (A valid ASCII string is also valid UTF-8.) + if ( + ! wp_is_valid_utf8( $localpart ) || + ! wp_is_valid_utf8( $ascii_domain ) || + ! wp_is_valid_utf8( $decoded_domain ) + ) { + return null; + } + + // Validate the local part against the allowed character set. + if ( 1 !== preg_match( $local_pattern, $localpart ) ) { + /** This filter is documented in wp-includes/formatting.php */ + if ( ! apply_filters( 'is_email', false, $input, 'local_invalid_chars' ) ) { + return null; + } + } + + // The domain must contain at least one dot. + if ( ! str_contains( $ascii_domain, '.' ) ) { + /** This filter is documented in wp-includes/formatting.php */ + if ( ! apply_filters( 'is_email', false, $input, 'domain_no_periods' ) ) { + return null; + } + } + + // Validate the domain against the allowed structure. + if ( 1 !== preg_match( $domain_pattern, $decoded_domain ) ) { + return null; + } + + return new self( $localpart, $ascii_domain, $decoded_domain ); + } + + /** + * Returns the local part of the email address (the portion before the '@'). + * + * Example: + * + * $email = WP_Email_Address::from_string( 'checkout@bücher.tld' ); + * 'checkout' === $email->get_localpart(); + * + * @since 7.1.0 + * + * @return string The local part of the email address. + */ + public function get_localpart(): string { + return $this->localpart; + } + + /** + * Returns the ASCII form of the domain, suitable for contexts in which + * other software will be reading and decoding it. May contain punycode. + * + * Example: + * + * $email = WP_Email_Address::from_string( 'checkout@bücher.tld' ); + * 'xn--bcher-kva.tld' === $email->get_ascii_domain(); + * + * Note! Do not mix a Unicode local part with an ASCII domain part. + * Prefer to keep the entire address in one form. + * + * @see self::get_unicode_domain() + * + * @return string Form of domain for machines, potentially containing + * punycode translation of Unicode characters. + */ + public function get_ascii_domain(): string { + return $this->encoded_domain; + } + + /** + * Returns the Unicode form of the domain, suitable for contexts in which + * humans will be reading it. May contain Unicode characters. + * + * Example: + * + * $email = WP_Email_Address::from_string( 'checkout@bücher.tld' ); + * 'bücher.tld' === $email->get_unicode_domain(); + * + * Note! Do not mix a Unicode local part with an ASCII domain part. + * Prefer to keep the entire address in one form. + * + * @see self::get_ascii_domain() + * + * @since 7.1.0 + * + * @return string The domain part of the email address. + */ + public function get_unicode_domain(): string { + return $this->decoded_domain; + } + + /** + * Returns the complete email address for contexts in which software + * will read it; may contain punycode transliterated Unicode characters. + * + * Use this method in places such as an `<a href>` attribute where other + * software will decode the address. + * + * The returned value can always be passed to {@see WP_Email_Address::from_string()} + * and will produce an equivalent WP_Email_Address instance. + * + * @see self::get_unicode_address() + * + * @since 7.1.0 + * + * @return string + */ + public function get_ascii_address(): string { + return $this->localpart . '@' . $this->encoded_domain; + } + + /** + * Returns the complete email address for contexts in which humans + * will read it; may contain Unicode characters in the domain. + * + * Use this method in places such as HTML text nodes which visually + * show the email address and domain. + * + * The returned value can always be passed to {@see WP_Email_Address::from_string()} + * and will produce an equivalent WP_Email_Address instance. + * + * @see self::get_ascii_address() + * + * @since 7.1.0 + * + * @return string The complete email address. + */ + public function get_unicode_address(): string { + return $this->localpart . '@' . $this->decoded_domain; + } +} diff --git a/src/wp-includes/default-filters.php b/src/wp-includes/default-filters.php index cf895eb748dbe..5581828a10b61 100644 --- a/src/wp-includes/default-filters.php +++ b/src/wp-includes/default-filters.php @@ -87,6 +87,17 @@ add_filter( $filter, 'wp_filter_kses' ); } +// Email addresses: Allow unicode if and only if as the database can +// store them. This affects all addresses, including those entered +// into contact forms. +if ( 'utf8mb4' === $wpdb->charset ) { + add_filter( 'is_email', 'wp_is_unicode_email', 10, 3 ); + add_filter( 'sanitize_email', 'wp_sanitize_unicode_email', 10, 3 ); +} else { + add_filter( 'is_email', 'wp_is_ascii_email', 10, 3 ); + add_filter( 'sanitize_email', 'wp_sanitize_ascii_email', 10, 3 ); +} + // Display URL. foreach ( array( 'user_url', 'link_url', 'link_image', 'link_rss', 'comment_url', 'post_guid' ) as $filter ) { if ( is_admin() ) { diff --git a/src/wp-includes/formatting.php b/src/wp-includes/formatting.php index b0ba234720d8e..e3681b071a2eb 100644 --- a/src/wp-includes/formatting.php +++ b/src/wp-includes/formatting.php @@ -2176,6 +2176,7 @@ function sanitize_user( $username, $strict = false ) { return apply_filters( 'sanitize_user', $username, $raw_username, $strict ); } + /** * Sanitizes a string key. * @@ -3589,7 +3590,14 @@ function convert_smilies( $text ) { /** * Verifies that an email is valid. * - * Does not grok i18n domains. Not RFC compliant. + * This accepts the addresses that matches the WHATWG specifications, + * i.e. what browsers use for `<input type=email>`. It also accepts some + * additional addresses. + * + * By default this accepts addresses like info@grå.org (also accepted + * by Firefox) `<input type=email>`. You can disable Unicode support by + * using the wp_is_ascii_email filter instead of wp_is_unicode_email, + * which is the default. * * @since 0.71 * @@ -3602,84 +3610,65 @@ function is_email( $email, $deprecated = false ) { _deprecated_argument( __FUNCTION__, '3.0.0' ); } - // Test for the minimum length the email can be. - if ( strlen( $email ) < 6 ) { - /** - * Filters whether an email address is valid. - * - * This filter is evaluated under several different contexts, such as 'email_too_short', - * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits', - * 'domain_no_periods', 'sub_hyphen_limits', 'sub_invalid_chars', or no specific context. - * - * @since 2.8.0 - * - * @param string|false $is_email The email address if successfully passed the is_email() checks, false otherwise. - * @param string $email The email address being checked. - * @param string $context Context under which the email was tested. - */ - return apply_filters( 'is_email', false, $email, 'email_too_short' ); - } - - // Test for an @ character after the first position. - if ( false === strpos( $email, '@', 1 ) ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'is_email', false, $email, 'email_no_at' ); - } - - // Split out the local and domain parts. - list( $local, $domain ) = explode( '@', $email, 2 ); - - /* - * LOCAL PART - * Test for invalid characters. - */ - if ( ! preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'is_email', false, $email, 'local_invalid_chars' ); - } - - /* - * DOMAIN PART - * Test for sequences of periods. + /** + * Filters whether an email address is valid. + * + * This filter is evaluated under several different contexts, such as + * 'local_invalid_chars', 'domain_no_periods', or no specific context. + * Filters registered on this hook perform the actual validation; the + * default filter is registered in default-filters.php. + * + * @since 2.8.0 + * + * @param string|false $is_email The email address if successfully passed the is_email() checks, false otherwise. + * @param string $email The email address being checked. + * @param string|null $context Context under which the email was tested, or null for the initial call. */ - if ( preg_match( '/\.{2,}/', $domain ) ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'is_email', false, $email, 'domain_period_sequence' ); - } - - // Test for leading and trailing periods and whitespace. - if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'is_email', false, $email, 'domain_period_limits' ); - } - - // Split the domain into subs. - $subs = explode( '.', $domain ); + return apply_filters( 'is_email', false, $email, null ); +} - // Assume the domain will have at least two subs. - if ( 2 > count( $subs ) ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'is_email', false, $email, 'domain_no_periods' ); +/** + * Default is_email filter for databases that support Unicode (db charset is utf8mb4). + * + * Validates the email address using {@see WP_Email_Address::from_string()} with Unicode enabled. + * Only acts when $context is null (which it is in the initial validation call); later rescue-context calls are passed through. + * + * @since 7.1.0 + * + * @param string|false $value The current filter value. + * @param string $email The email address being checked. + * @param string|null $context Validation context, or null for the initial call. + * @return string|false The email address if valid, false otherwise. + */ +function wp_is_unicode_email( $value, $email, $context ) { + if ( null !== $context ) { + return $value; } - // Loop through each sub. - foreach ( $subs as $sub ) { - // Test for leading and trailing hyphens and whitespace. - if ( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' ); - } + $result = WP_Email_Address::from_string( $email, 'unicode' ); + return $result ? $result->get_unicode_address() : false; +} - // Test for invalid characters. - if ( ! preg_match( '/^[a-z0-9-]+$/i', $sub ) ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' ); - } +/** + * Default is_email filter for databases that do not support Unicode (db charset is not utf8mb4). + * + * Validates the email address using {@see WP_Email_Address::from_string()} with Unicode disabled. + * Only acts when $context is null (which it is in the initial validation call); later rescue-context calls are passed through. + * + * @since 7.1.0 + * + * @param string|false $value The current filter value. + * @param string $email The email address being checked. + * @param string|null $context Validation context, or null for the initial call. + * @return string|false The email address if valid, false otherwise. + */ +function wp_is_ascii_email( $value, $email, $context ) { + if ( null !== $context ) { + return $value; } - // Congratulations, your email made it! - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'is_email', $email, $email, null ); + $result = WP_Email_Address::from_string( $email, 'ascii' ); + return $result ? $result->get_unicode_address() : false; } /** @@ -3808,109 +3797,96 @@ function iso8601_to_datetime( $date_string, $timezone = 'user' ) { } /** - * Strips out all characters that are not allowable in an email. + * Sanitizes an email address. + * + * Strips stray whitespace from the input, then strips trailing dots from the domain. + * This is designed to recover from cut/paste mistakes without any risk of transforming + * the input into a different address than the user intended. + * + * Validation and final form are determined by the 'sanitize_email' filter; the default + * filter is registered in default-filters.php and delegates to {@see WP_Email_Address::from_string()}. * * @since 1.5.0 + * @since 7.1.0 Accepts Unicode email addresses on supporting platforms. * - * @param string $email Email address to filter. - * @return string Filtered email address. + * @param string $email Email address to sanitize. + * @return string The sanitized email address, or an empty string if invalid. */ function sanitize_email( $email ) { - // Test for the minimum length the email can be. - if ( strlen( $email ) < 6 ) { - /** - * Filters a sanitized email address. - * - * This filter is evaluated under several contexts, including 'email_too_short', - * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits', - * 'domain_no_periods', 'domain_no_valid_subs', or no context. - * - * @since 2.8.0 - * - * @param string $sanitized_email The sanitized email address. - * @param string $email The email address, as provided to sanitize_email(). - * @param string|null $message A message to pass to the user. null if email is sanitized. - */ - return apply_filters( 'sanitize_email', '', $email, 'email_too_short' ); - } - - // Test for an @ character after the first position. - if ( false === strpos( $email, '@', 1 ) ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'sanitize_email', '', $email, 'email_no_at' ); - } - - // Split out the local and domain parts. - list( $local, $domain ) = explode( '@', $email, 2 ); + // Strip surrounding whitespace. + $email = trim( $email ); - /* - * LOCAL PART - * Test for invalid characters. - */ - $local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local ); - if ( '' === $local ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' ); + // Extract the address from "Display Name <username@domain>" format. + if ( 1 === preg_match( '/<([^>]+)>$/', $email, $matches ) ) { + $email = $matches[1]; } /* - * DOMAIN PART - * Test for sequences of periods. + * Strip soft hyphens and whitespace adjacent to structural separators (dots and @), + * e.g. copy-paste artifacts like "info@example\u{00AD}.com" or "info@example .com". + * + * In some cases, e.g. autocorrect, some older software has been seen to add the + * space for unrecognized TLDs. This re-joins the parts for proper examination. */ - $domain = preg_replace( '/\.{2,}/', '', $domain ); - if ( '' === $domain ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' ); - } - - // Test for leading and trailing periods and whitespace. - $domain = trim( $domain, " \t\n\r\0\x0B." ); - if ( '' === $domain ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' ); - } - - // Split the domain into subs. - $subs = explode( '.', $domain ); - - // Assume the domain will have at least two subs. - if ( 2 > count( $subs ) ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' ); - } - - // Create an array that will contain valid subs. - $new_subs = array(); - - // Loop through each sub. - foreach ( $subs as $sub ) { - // Test for leading and trailing hyphens. - $sub = trim( $sub, " \t\n\r\0\x0B-" ); + $email = preg_replace( '/[\x{00AD}\s]*([.@])[\x{00AD}\s]*/u', '$1', $email ) ?? $email; - // Test for invalid characters. - $sub = preg_replace( '/[^a-z0-9-]+/i', '', $sub ); - - // If there's anything left, add it to the valid subs. - if ( '' !== $sub ) { - $new_subs[] = $sub; - } - } - - // If there aren't 2 or more valid subs. - if ( 2 > count( $new_subs ) ) { - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' ); + // Strip a trailing dot from the domain (e.g. if pasted from the end of a sentence). + if ( str_contains( $email, '@' ) ) { + list( $local, $domain ) = explode( '@', $email, 2 ); + $domain = rtrim( $domain, '.' ); + $email = $local . '@' . $domain; } - // Join valid subs into the new domain. - $domain = implode( '.', $new_subs ); + /** + * Filters a sanitized email address. + * + * Filters registered on this hook perform the actual validation and return + * the canonical email string on success or an empty string on failure. + * The default filter is registered in default-filters.php. + * + * @since 2.8.0 + * + * @param string $sanitized_email The sanitized email address, or empty string. + * @param string $email The email address as provided to sanitize_email(). + * @param string|null $context Validation context, or null for the initial call. + */ + return apply_filters( 'sanitize_email', '', $email, null ); +} - // Put the email back together. - $sanitized_email = $local . '@' . $domain; +/** + * Default sanitize_email filter for databases that support Unicode (db charset is utf8mb4). + * + * Returns the canonical address from {@see WP_Email_Address::from_string()} with Unicode + * enabled, or an empty string if the address is invalid. + * + * @since 7.1.0 + * + * @param string $value The current filter value. + * @param string $email The email address being sanitized. + * @param string|null $context Sanitization context, always null. + * @return string The canonical email address if valid, empty string otherwise. + */ +function wp_sanitize_unicode_email( $value, $email, $context ) { + $result = WP_Email_Address::from_string( $email, 'unicode' ); + return $result ? $result->get_unicode_address() : ''; +} - // Congratulations, your email made it! - /** This filter is documented in wp-includes/formatting.php */ - return apply_filters( 'sanitize_email', $sanitized_email, $email, null ); +/** + * Default sanitize_email filter for databases that do not support Unicode (db charset is not utf8mb4). + * + * Returns the canonical address from {@see WP_Email_Address::from_string()} with Unicode + * disabled, or an empty string if the address is invalid. + * + * @since 7.1.0 + * + * @param string $value The current filter value. + * @param string $email The email address being sanitized. + * @param string|null $context Sanitization context, always null. + * @return string The canonical email address if valid, empty string otherwise. + */ +function wp_sanitize_ascii_email( $value, $email, $context ) { + $result = WP_Email_Address::from_string( $email, 'ascii' ); + return $result ? $result->get_unicode_address() : ''; } /** diff --git a/src/wp-settings.php b/src/wp-settings.php index 0935e2762619c..ef5c7784ee561 100644 --- a/src/wp-settings.php +++ b/src/wp-settings.php @@ -112,6 +112,7 @@ require ABSPATH . WPINC . '/class-wp-list-util.php'; require ABSPATH . WPINC . '/class-wp-token-map.php'; require ABSPATH . WPINC . '/utf8.php'; +require ABSPATH . WPINC . '/class-wp-email-address.php'; require ABSPATH . WPINC . '/formatting.php'; require ABSPATH . WPINC . '/meta.php'; require ABSPATH . WPINC . '/functions.php'; diff --git a/tests/phpunit/tests/auth.php b/tests/phpunit/tests/auth.php index a290d11e118e6..409496a1167bd 100644 --- a/tests/phpunit/tests/auth.php +++ b/tests/phpunit/tests/auth.php @@ -1520,7 +1520,7 @@ public function test_wp_authenticate_cookie_with_invalid_cookie() { */ public function test_wp_signon_using_email_with_an_apostrophe() { $user_args = array( - 'user_email' => "mail\'@example.com", + 'user_email' => "mail'@example.com", 'user_pass' => 'password', ); self::factory()->user->create( $user_args ); @@ -1833,7 +1833,7 @@ static function ( $available, WP_User $user ) { */ public function test_reset_password_with_apostrophe_in_email() { $user_args = array( - 'user_email' => "jo'hn@example.com", + 'user_email' => "jo\'hn@example.com", 'user_pass' => 'password', ); diff --git a/tests/phpunit/tests/formatting/antispambot.php b/tests/phpunit/tests/formatting/antispambot.php index e426696c3186d..5f5de80e1f5b8 100644 --- a/tests/phpunit/tests/formatting/antispambot.php +++ b/tests/phpunit/tests/formatting/antispambot.php @@ -34,6 +34,9 @@ public function data_returns_valid_utf8() { 'plain with ip' => array( 'ace@204.32.222.14' ), 'deep subdomain' => array( 'kevin@many.subdomains.make.a.happy.man.edu' ), 'short address' => array( 'a@b.co' ), + 'ascii@nonascii' => array( 'info@grå.org' ), + 'nonascii@nonascii' => array( 'grå@grå.org' ), + 'decomposed unicode' => array( "gr\u{0061}\u{030a}blå@grå.org" ), 'weird but legal dots' => array( '..@example.com' ), 'umlauts' => array( 'bücher@gmx.de' ), 'three-byte UTF-8' => array( "\u{FFFD}@who.knows.com" ), diff --git a/tests/phpunit/tests/formatting/isEmail.php b/tests/phpunit/tests/formatting/isEmail.php index b793af2c4a70d..db37ca0311380 100644 --- a/tests/phpunit/tests/formatting/isEmail.php +++ b/tests/phpunit/tests/formatting/isEmail.php @@ -37,7 +37,11 @@ public static function data_valid_email_provider() { 'ace@204.32.222.14', 'kevin@many.subdomains.make.a.happy.man.edu', 'a@b.co', + 'a@b.c', 'bill+ted@example.com', + 'info@grå.org', + 'grå@grå.org', + "gr\u{0061}\u{030a}blå@grå.org", '..@example.com', ); @@ -74,10 +78,7 @@ public static function data_invalid_email_provider() { "sif i'd give u it, spamer!1", 'com.exampleNOSPAMbob', 'bob@your mom', - 'a@b.c', '" "@b.c', - '"@"@b.c', - 'a@route.org@b.c', 'h(aj@couc.ou', // bad comment. 'hi@', 'hi@hi@couc.ou', // double @. diff --git a/tests/phpunit/tests/formatting/sanitizeEmail.php b/tests/phpunit/tests/formatting/sanitizeEmail.php index 5490374d0a5e7..75fc0c94f6fe5 100644 --- a/tests/phpunit/tests/formatting/sanitizeEmail.php +++ b/tests/phpunit/tests/formatting/sanitizeEmail.php @@ -41,12 +41,26 @@ public function test_returns_stripped_email_address( $address, $expected ) { */ public function data_sanitized_email_pairs() { return array( - 'shorter than 6 characters' => array( 'a@b', '' ), - 'contains no @' => array( 'ab', '' ), - 'just a TLD' => array( 'abc@com', '' ), - 'plain' => array( 'abc@example.com', 'abc@example.com' ), - 'invalid utf8 subdomain dropped' => array( "abc@sub.\x80.org", 'abc@sub.org' ), - 'all subdomains invalid utf8' => array( "abc@\x80.org", '' ), + 'shorter than 6 characters' => array( 'a@b', '' ), + 'contains no @' => array( 'ab', '' ), + 'just a TLD' => array( 'abc@com', '' ), + 'plain' => array( 'abc@example.com', 'abc@example.com' ), + 'unicode domain' => array( 'abc@grå.org', 'abc@grå.org' ), + 'unicode local part' => array( 'grå@example.com', 'grå@example.com' ), + 'unicode local and domain' => array( 'grå@grå.org', 'grå@grå.org' ), + 'invalid utf8 in local' => array( "a\x80b@example.com", '' ), + 'invalid utf8 subdomain' => array( "abc@sub.\x80.org", '' ), + 'all subdomains invalid utf8' => array( "abc@\x80.org", '' ), + 'soft hyphen before dot' => array( "info@example\xC2\xAD.com", 'info@example.com' ), + 'soft hyphen after dot' => array( "info@example.\xC2\xADcom", 'info@example.com' ), + 'space before dot' => array( 'info@example .com', 'info@example.com' ), + 'space after dot' => array( 'info@example. com', 'info@example.com' ), + 'soft hyphen and space around dot' => array( "info@example \xC2\xAD.com", 'info@example.com' ), + 'space around at sign' => array( 'info @ example.com', 'info@example.com' ), + 'soft hyphen before at sign' => array( "info\xC2\xAD@example.com", 'info@example.com' ), + 'display name with angle brackets' => array( 'Alice Example <alice@example.com>', 'alice@example.com' ), + 'angle brackets only' => array( '<alice@example.com>', 'alice@example.com' ), + 'angle brackets invalid address' => array( 'Alice <not-an-email>', '' ), ); } diff --git a/tests/phpunit/tests/privacy/wpCreateUserRequest.php b/tests/phpunit/tests/privacy/wpCreateUserRequest.php index 55eb866722b77..0d44611945fc0 100644 --- a/tests/phpunit/tests/privacy/wpCreateUserRequest.php +++ b/tests/phpunit/tests/privacy/wpCreateUserRequest.php @@ -152,14 +152,15 @@ public function test_failure_due_to_incomplete_unregistered_user() { * @ticket 44707 */ public function test_sanitized_email() { - $actual = wp_create_user_request( 'some(email<withinvalid\characters@local.test', 'export_personal_data' ); + // Address supplied in "Display Name <address>" format should be extracted and accepted. + $actual = wp_create_user_request( 'Some User <sanitized@local.test>', 'export_personal_data' ); $this->assertNotWPError( $actual ); $post = get_post( $actual ); $this->assertSame( 'export_personal_data', $post->post_name ); - $this->assertSame( 'someemailwithinvalidcharacters@local.test', $post->post_title ); + $this->assertSame( 'sanitized@local.test', $post->post_title ); } /** diff --git a/tests/phpunit/tests/rest-api/rest-comments-controller.php b/tests/phpunit/tests/rest-api/rest-comments-controller.php index 8542bcd42af24..547757ae6042e 100644 --- a/tests/phpunit/tests/rest-api/rest-comments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-comments-controller.php @@ -2321,7 +2321,7 @@ public function test_create_comment_author_email_too_long() { $params = array( 'post' => self::$post_id, 'author_name' => 'Bleeding Gums Murphy', - 'author_email' => 'murphy@' . rand_long_str( 190 ) . '.com', + 'author_email' => 'murphy@' . rand_long_str( 60 ) . '.' . rand_long_str( 60 ) . '.com', 'author_url' => 'http://jazz.gingivitis.com', 'content' => 'This isn\'t a saxophone. It\'s an umbrella.', 'date' => '1995-04-30T10:22:00', @@ -2954,7 +2954,7 @@ public function test_update_comment_author_email_too_long() { wp_set_current_user( self::$admin_id ); $params = array( - 'author_email' => 'murphy@' . rand_long_str( 190 ) . '.com', + 'author_email' => 'murphy@' . rand_long_str( 60 ) . '.' . rand_long_str( 60 ) . '.com', 'content' => 'This isn\'t a saxophone. It\'s an umbrella.', ); diff --git a/tests/phpunit/tests/wp-email-address/wpEmailAddress.php b/tests/phpunit/tests/wp-email-address/wpEmailAddress.php new file mode 100644 index 0000000000000..afcc52354ee5e --- /dev/null +++ b/tests/phpunit/tests/wp-email-address/wpEmailAddress.php @@ -0,0 +1,249 @@ +<?php +/** + * Unit tests covering WP_Email_Address functionality. + * + * @package WordPress + * + * @since 7.1.0 + * @group email + * + * @coversDefaultClass WP_Email_Address + */ +class Tests_WpEmailAddress extends WP_UnitTestCase { + + /** + * Tests that from_string() returns a WP_Email_Address instance. + * + * @ticket 31992 + * + * @dataProvider data_from_string + * @covers WP_Email_Address::from_string + * + * @param string $address The email address to parse. + */ + public function test_from_string_returns_instance( $address ) { + $result = WP_Email_Address::from_string( $address ); + $this->assertInstanceOf( WP_Email_Address::class, $result ); + } + + /** + * Tests that get_..._address() methods return a string that can be passed back to from_string(). + * + * @ticket 31992 + * + * @dataProvider data_from_string + * @covers WP_Email_Address::get_unicode_address + * + * @param string $address The email address to parse. + */ + public function test_get_address_is_roundtrippable( $address ) { + $instance = WP_Email_Address::from_string( $address ); + + $round_trip = WP_Email_Address::from_string( $instance->get_ascii_address() ); + $this->assertInstanceOf( WP_Email_Address::class, $round_trip ); + $this->assertSame( $instance->get_ascii_address(), $round_trip->get_ascii_address() ); + + $round_trip = WP_Email_Address::from_string( $instance->get_unicode_address() ); + $this->assertInstanceOf( WP_Email_Address::class, $round_trip ); + $this->assertSame( $instance->get_unicode_address(), $round_trip->get_unicode_address() ); + } + + /** + * Tests that get_localpart() and get_..._domain() methods combine to form the full address. + * + * @ticket 31992 + * + * @dataProvider data_from_string + * @covers WP_Email_Address::get_localpart + * @covers WP_Email_Address::get_ascii_domain + * @covers WP_Email_Address::get_unicode_domain + * + * @param string $address The email address to parse. + */ + public function test_localpart_and_domain_compose_address( $address ) { + $instance = WP_Email_Address::from_string( $address ); + + $this->assertSame( + $instance->get_localpart() . '@' . $instance->get_ascii_domain(), + $instance->get_ascii_address() + ); + + $this->assertSame( + $instance->get_localpart() . '@' . $instance->get_unicode_domain(), + $instance->get_unicode_address() + ); + } + + /** + * Tests that from_string() accepts valid Unicode local parts when accepting Unicode characters. + * + * @ticket 31992 + * + * @dataProvider data_from_string_unicode + * @covers WP_Email_Address::from_string + * + * @param string $address The email address to parse. + */ + public function test_from_string_unicode_returns_instance( $address ) { + $this->assertInstanceOf( WP_Email_Address::class, WP_Email_Address::from_string( $address, 'unicode' ) ); + } + + /** + * Data provider for valid addresses accepted only in Unicode mode. + * + * @return array[] + */ + public function data_from_string_unicode() { + return array( + 'unicode letter in local part' => array( 'ıstanbul@example.com' ), + 'CJK characters in local part' => array( '用户@example.com' ), + 'letter with combining mark in local' => array( "a\xCC\x81@example.com" ), + 'latin unicode domain' => array( 'info@grå.org' ), + 'han unicode domain' => array( '阿Q@慕田峪长城.网址' ), + ); + } + + /** + * Tests that an is_email filter returning true rescues a local_invalid_chars failure. + * + * @ticket 31992 + * + * @covers WP_Email_Address::from_string + */ + public function test_local_invalid_chars_filter_can_rescue() { + $filter = static function ( $value, $email, $context ) { + return 'local_invalid_chars' === $context ? true : $value; + }; + add_filter( 'is_email', $filter, 10, 3 ); + // Quoted local part is valid per RFC 5321 but rejected by the WHATWG charset. WordPress agrees with the browsers. + $result = WP_Email_Address::from_string( '"quoted"@example.com', 'ascii' ); + remove_filter( 'is_email', $filter, 10 ); + $this->assertInstanceOf( WP_Email_Address::class, $result ); + } + + /** + * Tests that an is_email filter returning true rescues a domain_no_periods failure. + * + * @ticket 31992 + * + * @covers WP_Email_Address::from_string + */ + public function test_domain_no_periods_filter_can_rescue() { + $filter = static function ( $value, $email, $context ) { + return 'domain_no_periods' === $context ? true : $value; + }; + add_filter( 'is_email', $filter, 10, 3 ); + // Single-label domain is used for intranet mail servers. + $result = WP_Email_Address::from_string( 'user@mailserver', 'ascii' ); + remove_filter( 'is_email', $filter, 10 ); + $this->assertInstanceOf( WP_Email_Address::class, $result ); + } + + /** + * Tests that rescuing local_invalid_chars does not bypass later checks. + * + * @ticket 31992 + * + * @covers WP_Email_Address::from_string + */ + public function test_local_invalid_chars_rescue_does_not_bypass_domain_check() { + $filter = static function ( $value, $email, $context ) { + return 'local_invalid_chars' === $context ? true : $value; + }; + add_filter( 'is_email', $filter, 10, 3 ); + // Local part rescued, but domain has no dot — should still be rejected. + $result = WP_Email_Address::from_string( '"quoted"@nodots' ); + remove_filter( 'is_email', $filter, 10 ); + $this->assertNull( $result ); + } + + /** + * Tests that from_string() returns false for invalid addresses. + * + * @ticket 31992 + * + * @dataProvider data_invalid_addresses + * @covers WP_Email_Address::from_string + * + * @param string $address The invalid email address string. + */ + public function test_from_string_rejects_invalid( $address ) { + $this->assertNull( WP_Email_Address::from_string( $address ) ); + } + + /** + * Data provider for invalid addresses. + * + * @return array[] + */ + public function data_invalid_addresses() { + return array( + 'quoted local part with iframe' => array( '"<iframe src=http://example.com>"@example.com' ), + 'null byte' => array( "user\x00name@example.com" ), + 'very invalid UTF8' => array( "\x80\x20ouch@example.com" ), + 'overlong encoding of space' => array( "us\xC0\xA0er@example.com" ), + + // Domain without a dot is not a routable internet domain. + 'domain without a dot' => array( 'com@com' ), + ); + } + + /** + * Tests that from_string() returns false for invalid addresses when Unicode is enabled. + * + * @ticket 31992 + * + * @dataProvider data_invalid_unicode_addresses + * @covers WP_Email_Address::from_string + * + * @param string $address The invalid email address string. + */ + public function test_from_string_rejects_invalid_unicode( $address ) { + $this->assertNull( WP_Email_Address::from_string( $address ) ); + } + + /** + * Data provider for addresses that are invalid specifically in Unicode mode. + * + * @return array[] + */ + public function data_invalid_unicode_addresses() { + return array( + 'reserved ACE prefix in domain' => array( 'user@ab--reserved.com' ), + 'combining mark as sole domain label' => array( "user@\xCC\x81.example.com" ), + 'combining mark as sole local part' => array( "\xCC\x81@example.com" ), + ); + } + + /** + * Data provider for several tests. + * + * @return array[] + */ + public function data_from_string() { + return array( + 'simple address' => array( 'example@example.com' ), + 'dot in local part' => array( 'user.name@example.com' ), + 'plus sign in local part' => array( 'user+tag@example.com' ), + 'underscore in local part' => array( 'user_name@example.org' ), + 'hyphen in local part' => array( 'user-name@example.net' ), + 'apostrophe in local part' => array( "mail'@example.com" ), + 'digits in local part' => array( 'user123@example.com' ), + 'uppercase letters' => array( 'USER@EXAMPLE.COM' ), + 'subdomain' => array( 'user@mail.example.com' ), + 'multiple subdomains' => array( 'user@a.b.c.example.com' ), + 'hyphen in domain label' => array( 'user@my-domain.com' ), + 'digits in domain' => array( 'user@123.example.com' ), + 'short but valid' => array( 'a@l.is' ), + 'special chars in local part' => array( 'a.!#$%*+/=?^_{|}~-@example.com' ), + 'local part is all digits' => array( '1234567890@example.com' ), + 'long local part' => array( 'abcdefghijklmnopqrstuvwxyz0123456789@example.com' ), + 'long domain' => array( 'user@abcdefghijklmnopqrstuvwxyz0123456789.example.com' ), + 'country-code TLD' => array( 'user@example.co.uk' ), + 'long TLD' => array( 'user@example.engineering' ), + // xn-- labels: grå.org and 慕田峪长城.网址 (https://慕田峪长城.网址). + 'latin punycode domain' => array( 'user@xn--gr-zia.org' ), + 'han punycode domain' => array( 'ahq@xn--uist2j67d64zv30b.xn--ses554g' ), + ); + } +} From 84c04cda205922d10968cb71d89894d20a431fa6 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Wed, 10 Jun 2026 22:34:53 +0000 Subject: [PATCH 181/327] Twenty Twenty-One: Add missing documentation for some global variables. Props sabernhardt, upadalavipul, shailu25, rajinsharwar, audrasjb, viralsampat, noruzzaman, huzaifaalmesbah, SergeyBiryukov. Fixes #58715. git-svn-id: https://develop.svn.wordpress.org/trunk@62483 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-content/themes/twentytwentyone/functions.php | 6 +++++- src/wp-content/themes/twentytwentyone/inc/back-compat.php | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/wp-content/themes/twentytwentyone/functions.php b/src/wp-content/themes/twentytwentyone/functions.php index 01a97e597e78a..a020e62bf00c5 100644 --- a/src/wp-content/themes/twentytwentyone/functions.php +++ b/src/wp-content/themes/twentytwentyone/functions.php @@ -9,7 +9,11 @@ * @since Twenty Twenty-One 1.0 */ -// This theme requires WordPress 5.3 or later. +/** + * This theme requires WordPress 5.3 or later. + * + * @global string $wp_version The WordPress version string. + */ if ( version_compare( $GLOBALS['wp_version'], '5.3', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; } diff --git a/src/wp-content/themes/twentytwentyone/inc/back-compat.php b/src/wp-content/themes/twentytwentyone/inc/back-compat.php index d5214803cad58..22edddbb25049 100644 --- a/src/wp-content/themes/twentytwentyone/inc/back-compat.php +++ b/src/wp-content/themes/twentytwentyone/inc/back-compat.php @@ -31,7 +31,7 @@ function twenty_twenty_one_switch_theme() { * * @since Twenty Twenty-One 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. * * @return void */ @@ -50,7 +50,7 @@ function twenty_twenty_one_upgrade_notice() { * * @since Twenty Twenty-One 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. * * @return void */ @@ -74,7 +74,7 @@ function twenty_twenty_one_customize() { * * @since Twenty Twenty-One 1.0 * - * @global string $wp_version WordPress version. + * @global string $wp_version The WordPress version string. * * @return void */ From 6c363d4e227791de30632eb27b668a058106327a Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Wed, 10 Jun 2026 23:37:00 +0000 Subject: [PATCH 182/327] Charset: Fix broken test for utf8_decode() fallback. Detected while fuzz-testing the UTF-8 handling code, this defect meant that the tests were verifying the wrong behavior. Namely, they verified a stringification of ASCII digits, which always converted plainly, when they were meant to test handling of invalid UTF-8 sequences. This patch fixes the test by calling `chr()` on the byte values before concatenating into a big string. Developed in: https://github.com/WordPress/wordpress-develop/pull/12147 Discussed in: https://core.trac.wordpress.org/ticket/65372 Props dmsnell, jonsurrell. Follow-up to: [60950]. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62484 602fd350-edb4-49c9-b593-d223f7449a82 --- .../phpunit/tests/formatting/deprecatedUtfEncodeDecode.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/phpunit/tests/formatting/deprecatedUtfEncodeDecode.php b/tests/phpunit/tests/formatting/deprecatedUtfEncodeDecode.php index 319890c457701..e685df3429e15 100644 --- a/tests/phpunit/tests/formatting/deprecatedUtfEncodeDecode.php +++ b/tests/phpunit/tests/formatting/deprecatedUtfEncodeDecode.php @@ -68,9 +68,9 @@ public function test_utf8_decode_characters() { * Since the UTF-16 surrogate halves are not valid Unicode characters, * these have to be manually constructed as invalid UTF-8. */ - $byte1 = 0xE0 | ( $i >> 12 ); - $byte2 = 0x80 | ( ( $i >> 6 ) & 0x3F ); - $byte3 = 0x80 | ( $i & 0x3F ); + $byte1 = chr( 0xE0 | ( $i >> 12 ) ); + $byte2 = chr( 0x80 | ( ( $i >> 6 ) & 0x3F ) ); + $byte3 = chr( 0x80 | ( $i & 0x3F ) ); $c = "{$byte1}{$byte2}{$byte3}"; } From eef6a6e9854febe3f5b4433992a2d0dd173bd962 Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Thu, 11 Jun 2026 03:16:43 +0000 Subject: [PATCH 183/327] Charset: Replace polyfill wp_has_noncharacters() with direct PCRE version. Found during fuzzing work on the HTML API and adjacent code. The previous version of this function used a Unicode PCRE to detect noncharacter code points, but that invocation failed if the input string contained sequences of invalid UTF-8 bytes. This patch replaces the Unicode PCRE with a mapped sequence of raw bytes. This version works in environments without Unicode support and it works when invalid bytes are present, making it possible to remove the fallback function as well. Developed in: https://github.com/WordPress/wordpress-develop/pull/12148 Discussed in: https://core.trac.wordpress.org/ticket/65372 Follow-up to [61000]. Props dmsnell, jonsurrell. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62485 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/compat-utf8.php | 13 +--- src/wp-includes/utf8.php | 76 +++++++++---------- .../tests/unicode/wpHasNoncharacters.php | 76 +++---------------- 3 files changed, 49 insertions(+), 116 deletions(-) diff --git a/src/wp-includes/compat-utf8.php b/src/wp-includes/compat-utf8.php index 20ebdfc3144e7..e1cab36ea3244 100644 --- a/src/wp-includes/compat-utf8.php +++ b/src/wp-includes/compat-utf8.php @@ -404,6 +404,7 @@ function _wp_utf8_codepoint_span( string $text, int $byte_offset, int $max_code_ * Fallback support for determining if a string contains Unicode noncharacters. * * @since 6.9.0 + * @deprecated 7.1.0 * @access private * * @see \wp_has_noncharacters() @@ -412,17 +413,9 @@ function _wp_utf8_codepoint_span( string $text, int $byte_offset, int $max_code_ * @return bool Whether noncharacters were found in the string. */ function _wp_has_noncharacters_fallback( string $text ): bool { - $at = 0; - $invalid_length = 0; - $has_noncharacters = false; - $end = strlen( $text ); - - while ( $at < $end && ! $has_noncharacters ) { - _wp_scan_utf8( $text, $at, $invalid_length, null, null, $has_noncharacters ); - $at += $invalid_length; - } + _deprecated_function( __FUNCTION__, '7.1.0' ); - return $has_noncharacters; + return wp_has_noncharacters( $text ); } /** diff --git a/src/wp-includes/utf8.php b/src/wp-includes/utf8.php index da10838f233d1..6be22a61ff83a 100644 --- a/src/wp-includes/utf8.php +++ b/src/wp-includes/utf8.php @@ -134,44 +134,40 @@ function wp_scrub_utf8( $text ) { } endif; -if ( _wp_can_use_pcre_u() ) : - /** - * Returns whether the given string contains Unicode noncharacters. - * - * XML recommends against using noncharacters and HTML forbids their - * use in attribute names. Unicode recommends that they not be used - * in open exchange of data. - * - * Noncharacters are code points within the following ranges: - * - U+FDD0–U+FDEF - * - U+FFFE–U+FFFF - * - U+1FFFE, U+1FFFF, U+2FFFE, U+2FFFF, …, U+10FFFE, U+10FFFF - * - * @see https://www.unicode.org/versions/Unicode17.0.0/core-spec/chapter-23/#G12612 - * @see https://www.w3.org/TR/xml/#charsets - * @see https://html.spec.whatwg.org/#attributes-2 - * - * @since 6.9.0 - * - * @param string $text Are there noncharacters in this string? - * @return bool Whether noncharacters were found in the string. - */ - function wp_has_noncharacters( string $text ): bool { - return 1 === preg_match( - '/[\x{FDD0}-\x{FDEF}\x{FFFE}\x{FFFF}\x{1FFFE}\x{1FFFF}\x{2FFFE}\x{2FFFF}\x{3FFFE}\x{3FFFF}\x{4FFFE}\x{4FFFF}\x{5FFFE}\x{5FFFF}\x{6FFFE}\x{6FFFF}\x{7FFFE}\x{7FFFF}\x{8FFFE}\x{8FFFF}\x{9FFFE}\x{9FFFF}\x{AFFFE}\x{AFFFF}\x{BFFFE}\x{BFFFF}\x{CFFFE}\x{CFFFF}\x{DFFFE}\x{DFFFF}\x{EFFFE}\x{EFFFF}\x{FFFFE}\x{FFFFF}\x{10FFFE}\x{10FFFF}]/u', - $text - ); - } -else : - /** - * Fallback function for detecting noncharacters in a text. - * - * @ignore - * @private - * - * @since 6.9.0 +/** + * Returns whether the given string contains Unicode noncharacters. + * + * XML recommends against using noncharacters and HTML forbids their + * use in attribute names. Unicode recommends that they not be used + * in open exchange of data. + * + * Noncharacters are code points within the following ranges: + * - U+FDD0–U+FDEF + * - U+FFFE–U+FFFF + * - U+1FFFE, U+1FFFF, U+2FFFE, U+2FFFF, …, U+10FFFE, U+10FFFF + * + * @see https://www.unicode.org/versions/Unicode17.0.0/core-spec/chapter-23/#G12612 + * @see https://www.w3.org/TR/xml/#charsets + * @see https://html.spec.whatwg.org/#attributes-2 + * + * @since 6.9.0 + * + * @param string $text Are there noncharacters in this string? + * @return bool Whether noncharacters were found in the string. + */ +function wp_has_noncharacters( string $text ): bool { + /* + * Match the UTF-8 byte sequences directly so malformed UTF-8 elsewhere + * in the subject does not cause PCRE's Unicode mode to reject the string. */ - function wp_has_noncharacters( string $text ): bool { - return _wp_has_noncharacters_fallback( $text ); - } -endif; + return 1 === preg_match( + '~ + # U+FDD0-U+FDEF, U+FFFE-U+FFFF + \xEF(?:\xB7[\x90-\xAF]|\xBF[\xBE\xBF]) + | + # U+nFFFE/U+nFFFF + (?:\xF0[\x9F\xAF\xBF]|[\xF1-\xF3][\x8F\x9F\xAF\xBF]|\xF4\x8F)\xBF[\xBE\xBF] + ~x', + $text + ); +} diff --git a/tests/phpunit/tests/unicode/wpHasNoncharacters.php b/tests/phpunit/tests/unicode/wpHasNoncharacters.php index 880f89c4f8e45..073b57b65134e 100644 --- a/tests/phpunit/tests/unicode/wpHasNoncharacters.php +++ b/tests/phpunit/tests/unicode/wpHasNoncharacters.php @@ -41,34 +41,24 @@ public function test_detects_non_characters( string $noncharacter ) { } /** - * Ensures that a noncharacter inside a string will be properly detected - * using the fallback function when Unicode PCRE support is missing. + * Ensures that invalid UTF-8 does not prevent noncharacter detection. * - * @ticket 63863 - * - * @dataProvider data_noncharacters - * - * @param string $noncharacter Noncharacter as a UTF-8 string. + * @ticket 65372 */ - public function test_fallback_detects_non_characters( string $noncharacter ) { - $this->assertTrue( - _wp_has_noncharacters_fallback( $noncharacter ), - 'Failed to detect entire string as noncharacter.' - ); - + public function test_detects_non_characters_when_string_contains_invalid_utf8() { $this->assertTrue( - _wp_has_noncharacters_fallback( "{$noncharacter} and more." ), - 'Failed to detect noncharacter prefix.' + wp_has_noncharacters( "Invalid byte \xF1 before \u{FDD0}." ), + 'Failed to detect noncharacter after invalid UTF-8.' ); $this->assertTrue( - _wp_has_noncharacters_fallback( "Some text and then a {$noncharacter} and more." ), - 'Failed to detect medial noncharacter.' + wp_has_noncharacters( "Noncharacter \u{10FFFF} before invalid byte \xF1." ), + 'Failed to detect noncharacter before invalid UTF-8.' ); - $this->assertTrue( - _wp_has_noncharacters_fallback( "Some text and a {$noncharacter}." ), - 'Failed to detect noncharacter suffix.' + $this->assertFalse( + wp_has_noncharacters( "Invalid byte \xF1 without noncharacters." ), + 'Falsely detected noncharacter in invalid UTF-8.' ); } @@ -117,52 +107,6 @@ static function ( $c ) { } } - /** - * Ensures that Unicode characters are not falsely detect as noncharacters - * using the fallback function when Unicode PCRE support is missing. - * - * @ticket 63863 - */ - public function test_fallback_avoids_false_positives() { - // Get all the noncharacters in one long string, each surrounded on both sides by null bytes. - $noncharacters = implode( - "\x00", - array_map( - static function ( $c ) { - return "\x00{$c}"; - }, - array_column( array_values( iterator_to_array( self::data_noncharacters() ) ), 0 ) - ) - ) . "\x00"; - - $this->assertFalse( - _wp_has_noncharacters_fallback( "\x00" ), - 'Falsely detected noncharacter in U+0000' - ); - - for ( $code_point = 1; $code_point <= 0x10FFFF; $code_point++ ) { - // Surrogate halves are invalid UTF-8. - if ( $code_point >= 0xD800 && $code_point <= 0xDFFF ) { - continue; - } - - $char = mb_chr( $code_point ); - $hex_char = strtoupper( str_pad( dechex( $code_point ), 4, '0', STR_PAD_LEFT ) ); - - if ( str_contains( $noncharacters, $char ) ) { - $this->assertTrue( - _wp_has_noncharacters_fallback( $char ), - "Failed to detect noncharacter as test verification for U+{$hex_char}" - ); - } else { - $this->assertFalse( - _wp_has_noncharacters_fallback( $char ), - "Falsely detected noncharacter in U+{$hex_char}." - ); - } - } - } - /** * Data provider * From b5abaffe441d30a067abed654bdc3853ff05e6ee Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Thu, 11 Jun 2026 14:40:40 +0000 Subject: [PATCH 184/327] Build/Test Tools: Replace abandoned third party action. The `wow-actions/welcome` action has not been updated for over 2 years and is currently configured to run on `Node20`. With GitHub now actively removing support for Node.js 20.x within the GitHub Actions environment, any action explicitly using `Node20` will break. This replaces `wow-actions/welcome` with the `actions/first-interaction` action, which is an action officially maintained by GitHub and offers the same functionality. Props khokansardar, mukesh27, desrosj. Fixes #65432. git-svn-id: https://develop.svn.wordpress.org/trunk@62486 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/pull-request-comments.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pull-request-comments.yml b/.github/workflows/pull-request-comments.yml index da30e2feb7f11..ca1334fdb2db6 100644 --- a/.github/workflows/pull-request-comments.yml +++ b/.github/workflows/pull-request-comments.yml @@ -30,11 +30,10 @@ jobs: if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name == 'pull_request_target' }} steps: - name: Post a welcome comment - uses: wow-actions/welcome@68019c2c271561f63162fea75bb7707ef8a02c85 # v1.3.1 + uses: actions/first-interaction@1c4688942c71f71d4f5502a26ea67c331730fa4d # v3.1.0 with: - FIRST_PR_REACTIONS: 'hooray' - FIRST_PR_COMMENT: > - Hi @{{ author }}! 👋 + pr_message: > + Hi there! 👋 Thank you for your contribution to WordPress! 💖 From 41c748932b65a01afcaa267e2d0609d7e355c7c1 Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Thu, 11 Jun 2026 17:04:01 +0000 Subject: [PATCH 185/327] HTML API: Ensure that code points always encode to UTF-8 This was brought up during fuzz testing of the HTML API. After polyfilling `mb_chr()` and relying on it in the HTML decoder, it became possible that for sites with a non-UTF-8 charset selected, then the creation of text from code points when decoding numeric character references might produce corrupted text, or text which encodes to non-UTF-8 bytes. While for these sites, there are broader issues with non-UTF-8 support, this change ensures that code point encoding remains deterministic. Developed in: https://github.com/WordPress/wordpress-develop/pull/12155 Discussed in: https://core.trac.wordpress.org/ticket/65372 Follow-up to [62424]. Props dmsnell, jonsurrell. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62487 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/html-api/class-wp-html-decoder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/html-api/class-wp-html-decoder.php b/src/wp-includes/html-api/class-wp-html-decoder.php index d902f4b7cabc4..d14009d3d9fb8 100644 --- a/src/wp-includes/html-api/class-wp-html-decoder.php +++ b/src/wp-includes/html-api/class-wp-html-decoder.php @@ -424,7 +424,7 @@ public static function read_character_reference( $context, $text, $at = 0, &$mat * @return string Converted code point, or `�` if invalid. */ public static function code_point_to_utf8_bytes( $code_point ): string { - $string = mb_chr( $code_point ); + $string = mb_chr( $code_point, 'UTF-8' ); return false !== $string ? $string : '�'; } From 26543f21eda5b0a391597fd171fb6f6b4875aa13 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Thu, 11 Jun 2026 18:23:19 +0000 Subject: [PATCH 186/327] Cron: Add type definitions to private cron functions. This addresses PHPStan rule level 10 errors with these functions: * `_get_cron_array()` * `_set_cron_array()` * `_upgrade_cron_array()` See #64898. git-svn-id: https://develop.svn.wordpress.org/trunk@62488 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/cron.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/cron.php b/src/wp-includes/cron.php index 7bbb0036f1c02..88ca63f148e12 100644 --- a/src/wp-includes/cron.php +++ b/src/wp-includes/cron.php @@ -1254,7 +1254,7 @@ function wp_get_ready_cron_jobs() { * @since 6.1.0 Return type modified to consistently return an array. * @access private * - * @return array[] Array of cron events. + * @return array<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>>|array{} Array of cron events. */ function _get_cron_array() { $cron = get_option( 'cron' ); @@ -1262,12 +1262,17 @@ function _get_cron_array() { return array(); } + /** + * @var array{ version: int, ...<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> } + * |array<int, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>> $cron + */ if ( ! isset( $cron['version'] ) ) { $cron = _upgrade_cron_array( $cron ); } unset( $cron['version'] ); + /** @var array<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> $cron */ return $cron; } @@ -1283,6 +1288,9 @@ function _get_cron_array() { * @param array[] $cron Array of cron info arrays from _get_cron_array(). * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return bool|WP_Error True if cron array updated. False or WP_Error on failure. + * + * @phpstan-param array<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> $cron + * @phpstan-return ( $wp_error is true ? true|WP_Error : bool ) */ function _set_cron_array( $cron, $wp_error = false ) { if ( ! is_array( $cron ) ) { @@ -1313,6 +1321,10 @@ function _set_cron_array( $cron, $wp_error = false ) { * * @param array $cron Cron info array from _get_cron_array(). * @return array An upgraded cron info array. + * + * @phpstan-param array{ version: int, ...<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> } + * |array<int, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>> $cron + * @phpstan-return array{ version: 2, ...<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> } */ function _upgrade_cron_array( $cron ) { if ( isset( $cron['version'] ) && 2 === $cron['version'] ) { @@ -1323,7 +1335,7 @@ function _upgrade_cron_array( $cron ) { foreach ( (array) $cron as $timestamp => $hooks ) { foreach ( (array) $hooks as $hook => $args ) { - $key = md5( serialize( $args['args'] ) ); + $key = md5( serialize( $args['args'] ?? array() ) ); $new_cron[ $timestamp ][ $hook ][ $key ] = $args; } From 7ec1aa134563926947ac0bbd771d73f004f5161b Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Thu, 11 Jun 2026 19:08:21 +0000 Subject: [PATCH 187/327] Docs: Fix duplicate-word and spelling typos in comments and docblocks. Developed in https://github.com/WordPress/wordpress-develop/pull/12039. Props khokansardar, sabernhardt, sanayasir, tusharaddweb. Fixes #65384. git-svn-id: https://develop.svn.wordpress.org/trunk@62489 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/_enqueues/deprecated/fakejshint.js | 2 +- src/js/_enqueues/wp/dashboard.js | 4 ++-- src/js/_enqueues/wp/widgets/custom-html.js | 2 +- src/wp-includes/block-supports/settings.php | 2 +- src/wp-includes/block-template.php | 2 +- src/wp-includes/class-wp-customize-manager.php | 2 +- src/wp-includes/class-wp-recovery-mode-email-service.php | 2 +- src/wp-includes/class-wp-theme-json-data.php | 2 +- src/wp-includes/comment.php | 2 +- src/wp-includes/fonts.php | 2 +- src/wp-includes/rest-api/class-wp-rest-server.php | 2 +- .../includes/class-wp-sitemaps-large-test-provider.php | 2 +- tests/phpunit/tests/customize/setting.php | 2 +- tests/phpunit/tests/date/currentTime.php | 2 +- tests/phpunit/tests/formatting/normalizeWhitespace.php | 2 +- tests/phpunit/tests/media.php | 2 +- tests/phpunit/tests/multisite/bootstrap.php | 2 +- tests/phpunit/tests/multisite/cleanDirsizeCache.php | 2 +- tests/phpunit/tests/theme.php | 2 +- tests/phpunit/tests/user.php | 8 ++++---- 20 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/js/_enqueues/deprecated/fakejshint.js b/src/js/_enqueues/deprecated/fakejshint.js index 2ab6326b96262..b3290c4406064 100644 --- a/src/js/_enqueues/deprecated/fakejshint.js +++ b/src/js/_enqueues/deprecated/fakejshint.js @@ -1,5 +1,5 @@ /** - * JSHINT has some GPL Compatability issues, so we are faking it out and using esprima for validation + * JSHINT has some GPL Compatibility issues, so we are faking it out and using esprima for validation * Based on https://github.com/jquery/esprima/blob/gh-pages/demo/validate.js which is MIT licensed. * This is now deprecated in favor of Espree. * diff --git a/src/js/_enqueues/wp/dashboard.js b/src/js/_enqueues/wp/dashboard.js index 5216611d5dc3c..bea3373ae5c97 100644 --- a/src/js/_enqueues/wp/dashboard.js +++ b/src/js/_enqueues/wp/dashboard.js @@ -756,8 +756,8 @@ jQuery( function( $ ) { * * @since 5.5.2 * - * @param {int} startDate The Unix timestamp in milliseconds when the the event starts. - * @param {int} endDate The Unix timestamp in milliseconds when the the event ends. + * @param {int} startDate The Unix timestamp in milliseconds when the event starts. + * @param {int} endDate The Unix timestamp in milliseconds when the event ends. * @param {string} timeZone A time zone string or offset which is parsable by `wp.date.i18n()`. * * @returns {string} diff --git a/src/js/_enqueues/wp/widgets/custom-html.js b/src/js/_enqueues/wp/widgets/custom-html.js index d0be23eeb37af..0f1fde1642e94 100644 --- a/src/js/_enqueues/wp/widgets/custom-html.js +++ b/src/js/_enqueues/wp/widgets/custom-html.js @@ -307,7 +307,7 @@ wp.customHtmlWidgets = ( function( $ ) { /* * Create a container element for the widget control fields. - * This is inserted into the DOM immediately before the the .widget-content + * This is inserted into the DOM immediately before the .widget-content * element because the contents of this element are essentially "managed" * by PHP, where each widget update cause the entire element to be emptied * and replaced with the rendered output of WP_Widget::form() which is diff --git a/src/wp-includes/block-supports/settings.php b/src/wp-includes/block-supports/settings.php index 72b056d39b67a..59c3cbd9a28de 100644 --- a/src/wp-includes/block-supports/settings.php +++ b/src/wp-includes/block-supports/settings.php @@ -131,7 +131,7 @@ function _wp_add_block_level_preset_styles( $pre_render, $block ) { ) ); - // include preset css classes on the the stylesheet. + // include preset css classes on the stylesheet. $styles .= $theme_json_object->get_stylesheet( array( 'presets' ), null, diff --git a/src/wp-includes/block-template.php b/src/wp-includes/block-template.php index 88f9c4384a396..85ad05cfc91ae 100644 --- a/src/wp-includes/block-template.php +++ b/src/wp-includes/block-template.php @@ -452,7 +452,7 @@ function _block_template_render_without_post_block_context( $context ) { /** * Sets the current WP_Query to return auto-draft posts. * - * The auto-draft status indicates a new post, so allow the the WP_Query instance to + * The auto-draft status indicates a new post, so allow the WP_Query instance to * return an auto-draft post for template resolution when editing a new post. * * @access private diff --git a/src/wp-includes/class-wp-customize-manager.php b/src/wp-includes/class-wp-customize-manager.php index 53dceecf69bd0..9320bb07cecf7 100644 --- a/src/wp-includes/class-wp-customize-manager.php +++ b/src/wp-includes/class-wp-customize-manager.php @@ -3056,7 +3056,7 @@ public function preserve_insert_changeset_post_content( $data, $postarr, $unsani * * The following re-formulates the logic from `wp_trash_post()` as done in * `wp_publish_post()`. The reason for bypassing `wp_trash_post()` is that it - * will mutate the the `post_content` and the `post_name` when they should be + * will mutate the `post_content` and the `post_name` when they should be * untouched. * * @since 4.9.0 diff --git a/src/wp-includes/class-wp-recovery-mode-email-service.php b/src/wp-includes/class-wp-recovery-mode-email-service.php index fe38fe5c7f1b9..2396700c44fbe 100644 --- a/src/wp-includes/class-wp-recovery-mode-email-service.php +++ b/src/wp-includes/class-wp-recovery-mode-email-service.php @@ -132,7 +132,7 @@ private function send_recovery_mode_email( $rate_limit, $error, $extension ) { } /** - * Filters the support message sent with the the fatal error protection email. + * Filters the support message sent with the fatal error protection email. * * @since 5.2.0 * diff --git a/src/wp-includes/class-wp-theme-json-data.php b/src/wp-includes/class-wp-theme-json-data.php index ca72ae81b5ab5..9a9e73ecffdbf 100644 --- a/src/wp-includes/class-wp-theme-json-data.php +++ b/src/wp-includes/class-wp-theme-json-data.php @@ -45,7 +45,7 @@ public function __construct( $data = array( 'version' => WP_Theme_JSON::LATEST_S } /** - * Updates the theme.json with the the given data. + * Updates the theme.json with the given data. * * @since 6.1.0 * diff --git a/src/wp-includes/comment.php b/src/wp-includes/comment.php index 70d5c03b378f4..b93908adc0519 100644 --- a/src/wp-includes/comment.php +++ b/src/wp-includes/comment.php @@ -2693,7 +2693,7 @@ function wp_update_comment( $commentarr, $wp_error = false ) { */ $data = apply_filters( 'wp_update_comment_data', $data, $comment, $commentarr ); - // Do not carry on on failure. + // Do not continue on failure. if ( is_wp_error( $data ) ) { if ( $wp_error ) { return $data; diff --git a/src/wp-includes/fonts.php b/src/wp-includes/fonts.php index 9858eb8351318..198fc21d61c74 100644 --- a/src/wp-includes/fonts.php +++ b/src/wp-includes/fonts.php @@ -55,7 +55,7 @@ function wp_print_font_faces( $fonts = array() ) { } /** - * Generates and prints font-face styles defined the the theme style variations. + * Generates and prints font-face styles defined in the theme style variations. * * @since 6.7.0 * diff --git a/src/wp-includes/rest-api/class-wp-rest-server.php b/src/wp-includes/rest-api/class-wp-rest-server.php index 704a990298826..f58f3aa1b0095 100644 --- a/src/wp-includes/rest-api/class-wp-rest-server.php +++ b/src/wp-includes/rest-api/class-wp-rest-server.php @@ -1995,7 +1995,7 @@ public function get_headers( $server ) { } elseif ( 'REDIRECT_HTTP_AUTHORIZATION' === $key && empty( $server['HTTP_AUTHORIZATION'] ) ) { /* * In some server configurations, the authorization header is passed in this alternate location. - * Since it would not be passed in in both places we do not check for both headers and resolve. + * Since it would not be passed in both places we do not check for both headers and resolve. */ $headers['AUTHORIZATION'] = $value; } elseif ( isset( $additional[ $key ] ) ) { diff --git a/tests/phpunit/includes/class-wp-sitemaps-large-test-provider.php b/tests/phpunit/includes/class-wp-sitemaps-large-test-provider.php index 76acb6c7d87c0..1620a641b5fb2 100644 --- a/tests/phpunit/includes/class-wp-sitemaps-large-test-provider.php +++ b/tests/phpunit/includes/class-wp-sitemaps-large-test-provider.php @@ -16,7 +16,7 @@ class WP_Sitemaps_Large_Test_Provider extends WP_Sitemaps_Provider { /** * WP_Sitemaps_Large_Test_Provider constructor. * - * @param int $num_entries Optional. Number of entries in in the sitemap. + * @param int $num_entries Optional. Number of entries in the sitemap. */ public function __construct( $num_entries = 50001 ) { $this->name = 'tests'; diff --git a/tests/phpunit/tests/customize/setting.php b/tests/phpunit/tests/customize/setting.php index 8150a2f03dd82..8addb229d4edc 100644 --- a/tests/phpunit/tests/customize/setting.php +++ b/tests/phpunit/tests/customize/setting.php @@ -436,7 +436,7 @@ public function test_preview_custom_type() { $this->assertSame( $this->undefined, $this->custom_type_getter( $name, $this->undefined ) ); $this->assertSame( $default, $setting->value() ); $this->assertTrue( $setting->preview() ); - $this->assertSame( 1, did_action( "customize_preview_{$setting->id}" ), 'One preview action now because initial value was not set and/or there is no incoming post value, so there is is a preview to apply.' ); + $this->assertSame( 1, did_action( "customize_preview_{$setting->id}" ), 'One preview action now because initial value was not set and/or there is no incoming post value, so there is a preview to apply.' ); $this->assertSame( 3, did_action( "customize_preview_{$setting->type}" ) ); $this->assertSame( $post_data_overrides[ $name ], $this->custom_type_getter( $name, $this->undefined ) ); $this->assertSame( $post_data_overrides[ $name ], $setting->value() ); diff --git a/tests/phpunit/tests/date/currentTime.php b/tests/phpunit/tests/date/currentTime.php index a41ea258dbe37..a4f51ab41bc40 100644 --- a/tests/phpunit/tests/date/currentTime.php +++ b/tests/phpunit/tests/date/currentTime.php @@ -242,7 +242,7 @@ public function test_partial_hour_timezones_match_datetime_offset( $partial_hour * Adjust for daylight saving time. * * DST adds an hour to the offset, the partial hour offset - * is set the the standard time offset so this removes the + * is set to the standard time offset, so this removes the * DST offset to avoid false negatives. */ $offset -= $dst_offset; diff --git a/tests/phpunit/tests/formatting/normalizeWhitespace.php b/tests/phpunit/tests/formatting/normalizeWhitespace.php index b14647b32e6c0..3c2038b076018 100644 --- a/tests/phpunit/tests/formatting/normalizeWhitespace.php +++ b/tests/phpunit/tests/formatting/normalizeWhitespace.php @@ -7,7 +7,7 @@ class Tests_Formatting_NormalizeWhitespace extends WP_UnitTestCase { /** - * Tests the the normalize_whitespace() function. + * Tests the normalize_whitespace() function. * * @dataProvider data_normalize_whitespace */ diff --git a/tests/phpunit/tests/media.php b/tests/phpunit/tests/media.php index 060a7295f6bb4..c3e118ee718d5 100644 --- a/tests/phpunit/tests/media.php +++ b/tests/phpunit/tests/media.php @@ -5654,7 +5654,7 @@ public function test_quality_with_image_conversion_file_sizes() { copy( DIR_TESTDATA . '/images/33772.jpg', $file ); // Set JPEG output quality very low and WebP quality very high, this should force all generated WebP images to - // be larger than the the matching generated JPEGs. + // be larger than the matching generated JPEGs. add_filter( 'wp_editor_set_quality', array( $this, 'image_editor_change_quality_low_jpeg' ), 10, 2 ); $editor = wp_get_image_editor( $file ); diff --git a/tests/phpunit/tests/multisite/bootstrap.php b/tests/phpunit/tests/multisite/bootstrap.php index 74aa40d812cae..4c76703cc6f74 100644 --- a/tests/phpunit/tests/multisite/bootstrap.php +++ b/tests/phpunit/tests/multisite/bootstrap.php @@ -178,7 +178,7 @@ public function data_get_network_by_path_with_zero_path_segments() { } /** - * Even if a matching network is available, it should not match if the the filtered + * Even if a matching network is available, it should not match if the filtered * value for network path segments is fewer than the number of paths passed. */ public function test_get_network_by_path_with_forced_single_path_segment_returns_single_path_network() { diff --git a/tests/phpunit/tests/multisite/cleanDirsizeCache.php b/tests/phpunit/tests/multisite/cleanDirsizeCache.php index 16ad8fffc0d1d..2271c3b6bcfe9 100644 --- a/tests/phpunit/tests/multisite/cleanDirsizeCache.php +++ b/tests/phpunit/tests/multisite/cleanDirsizeCache.php @@ -270,7 +270,7 @@ public function test_5_5_transient_structure_compat() { /* * Now that it's confirmed that old cached values aren't being returned, create the - * folder on disk, so that the the rest of the function can be tested. + * folder on disk, so that the rest of the function can be tested. */ wp_mkdir_p( $upload_dir['basedir'] . '/2/1' ); $filename = $upload_dir['basedir'] . '/2/1/this-needs-to-exist.txt'; diff --git a/tests/phpunit/tests/theme.php b/tests/phpunit/tests/theme.php index df840d9a27a51..aa67f7189c64d 100644 --- a/tests/phpunit/tests/theme.php +++ b/tests/phpunit/tests/theme.php @@ -565,7 +565,7 @@ public function test_wp_keep_alive_customize_changeset_dependent_auto_drafts() { do_action( 'customize_register', $wp_customize ); // The post_date for auto-drafts is bumped to match the changeset post_date whenever it is modified - // to keep them from from being garbage collected by wp_delete_auto_drafts(). + // to keep them from being garbage collected by wp_delete_auto_drafts(). $wp_customize->save_changeset_post( array( 'data' => $data, diff --git a/tests/phpunit/tests/user.php b/tests/phpunit/tests/user.php index 3770816ec4502..d4122b2924113 100644 --- a/tests/phpunit/tests/user.php +++ b/tests/phpunit/tests/user.php @@ -1726,7 +1726,7 @@ public function test_wp_new_user_notification( $notify, $admin_email_sent_expect /* * Check to see if a notification email was sent to the - * post author `blackburn@battlefield3.com` and and site admin `admin@example.org`. + * post author `blackburn@battlefield3.com` and site admin `admin@example.org`. */ $first_recipient = $mailer->get_recipient( 'to' ); if ( $first_recipient ) { @@ -1803,7 +1803,7 @@ public function test_wp_new_user_notification_old_signature_throws_deprecated_wa /* * Check to see if a notification email was sent to the - * post author `blackburn@battlefield3.com` and and site admin `admin@example.org`. + * post author `blackburn@battlefield3.com` and site admin `admin@example.org`. */ if ( ! empty( $GLOBALS['phpmailer']->mock_sent ) ) { $was_admin_email_sent = ( isset( $GLOBALS['phpmailer']->mock_sent[0] ) && WP_TESTS_EMAIL === $GLOBALS['phpmailer']->mock_sent[0]['to'][0][0] ); @@ -1828,7 +1828,7 @@ public function test_wp_new_user_notification_old_signature_no_password() { /* * Check to see if a notification email was sent to the - * post author `blackburn@battlefield3.com` and and site admin `admin@example.org`. + * post author `blackburn@battlefield3.com` and site admin `admin@example.org`. */ if ( ! empty( $GLOBALS['phpmailer']->mock_sent ) ) { $was_admin_email_sent = ( isset( $GLOBALS['phpmailer']->mock_sent[0] ) && WP_TESTS_EMAIL === $GLOBALS['phpmailer']->mock_sent[0]['to'][0][0] ); @@ -1976,7 +1976,7 @@ static function ( $email ) use ( &$user_email_locale ) { /* * Check to see if a notification email was sent to the - * post author `blackburn@battlefield3.com` and and site admin `admin@example.org`. + * post author `blackburn@battlefield3.com` and site admin `admin@example.org`. */ $first_recipient = $mailer->get_recipient( 'to' ); if ( $first_recipient ) { From a22ef2607ca83512e43facf91547c421ae27e1ef Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Thu, 11 Jun 2026 19:20:22 +0000 Subject: [PATCH 188/327] Build/Test Tools: Include required input for `actions/first-interaction`. While not documented as required, both `issue_message` and `pr_message` are required inputs for this action. Follow up to [62486]. Fixes #65432. git-svn-id: https://develop.svn.wordpress.org/trunk@62490 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/pull-request-comments.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/pull-request-comments.yml b/.github/workflows/pull-request-comments.yml index ca1334fdb2db6..82526825ebb5e 100644 --- a/.github/workflows/pull-request-comments.yml +++ b/.github/workflows/pull-request-comments.yml @@ -32,6 +32,11 @@ jobs: - name: Post a welcome comment uses: actions/first-interaction@1c4688942c71f71d4f5502a26ea67c331730fa4d # v3.1.0 with: + # While issues are disabled for this repository and this will not post anywhere, this action configures both + # message inputs as required. + # See https://github.com/actions/first-interaction/issues/365. + issue_message: | + "Baseball is dull only to dull minds." - Red Barber pr_message: > Hi there! 👋 From 46f3c09dc40ea0a77b5b70762676331b9472fb77 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Thu, 11 Jun 2026 20:14:31 +0000 Subject: [PATCH 189/327] Docs: Improve `WP_List_Table` and `WP_Plugins_List_Table` docblocks. Improve the PHPDoc docblocks in `WP_List_Table` and `WP_Plugins_List_Table` for accuracy, completeness, and consistency with WordPress core documentation standards. Adds missing `@since` tags and corrects several existing versions, adds summary descriptions to all previously bare method and property docblocks, and refines type annotations with precise generic array types. Developed in https://github.com/WordPress/wordpress-develop/pull/10989. Follow-up to r30679, r31127, r32642, r32654. Props huzaifaalmesbah, westonruter, noruzzaman. See #64896. git-svn-id: https://develop.svn.wordpress.org/trunk@62491 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-list-table.php | 59 +++++--- .../includes/class-wp-plugins-list-table.php | 139 +++++++++++++----- 2 files changed, 142 insertions(+), 56 deletions(-) diff --git a/src/wp-admin/includes/class-wp-list-table.php b/src/wp-admin/includes/class-wp-list-table.php index f85bd8981540d..c243eece7035d 100644 --- a/src/wp-admin/includes/class-wp-list-table.php +++ b/src/wp-admin/includes/class-wp-list-table.php @@ -19,7 +19,8 @@ class WP_List_Table { * The current list of items. * * @since 3.1.0 - * @var array + * + * @var array<int|string, mixed> */ public $items; @@ -27,7 +28,8 @@ class WP_List_Table { * Various information about the current table. * * @since 3.1.0 - * @var array + * + * @var array<string, mixed> */ protected $_args; @@ -35,7 +37,8 @@ class WP_List_Table { * Various information needed for displaying the pagination. * * @since 3.1.0 - * @var array + * + * @var array<string, mixed> */ protected $_pagination_args = array(); @@ -43,6 +46,7 @@ class WP_List_Table { * The current screen. * * @since 3.1.0 + * * @var WP_Screen */ protected $screen; @@ -51,7 +55,8 @@ class WP_List_Table { * Cached bulk actions. * * @since 3.1.0 - * @var array + * + * @var array<string, string|array<string, string>>|null */ private $_actions; @@ -59,6 +64,7 @@ class WP_List_Table { * Cached pagination output. * * @since 3.1.0 + * * @var string */ private $_pagination; @@ -67,29 +73,35 @@ class WP_List_Table { * The view switcher modes. * * @since 4.1.0 - * @var array + * + * @var array<string, string> */ protected $modes = array(); /** - * Stores the value returned by ::get_column_info(). + * Stores the value returned by {@see self::get_column_info()}. * - * @since 4.1.0 - * @var array|null + * @since 4.2.0 + * + * @var array<int, array|string>|null */ protected $_column_headers; /** * List of private properties made readable for backward compatibility. * - * @var array + * @since 4.2.0 + * + * @var string[] */ protected $compat_fields = array( '_args', '_pagination_args', 'screen', '_actions', '_pagination' ); /** * List of private/protected methods made readable for backward compatibility. * - * @var array + * @since 4.2.0 + * + * @var string[] */ protected $compat_methods = array( 'set_pagination_args', @@ -116,7 +128,7 @@ class WP_List_Table { * The child class should call this constructor from its own constructor to override * the default $args. * - * @since 3.1.0 + * @since 3.2.0 * * @param array|string $args { * Array or string of arguments. @@ -348,7 +360,7 @@ public function get_pagination_arg( $key ) { } /** - * Determines whether the table has items to display or not + * Determines whether the table has items to display or not. * * @since 3.1.0 * @@ -359,7 +371,7 @@ public function has_items() { } /** - * Message to be displayed when there are no items + * Message to be displayed when there are no items. * * @since 3.1.0 */ @@ -790,7 +802,7 @@ protected function months_dropdown( $post_type ) { * * @since 3.1.0 * - * @param string $current_mode + * @param string $current_mode The current view mode slug, e.g. 'list' or 'excerpt'. */ protected function view_switcher( $current_mode ) { ?> @@ -1389,7 +1401,7 @@ public function get_column_count() { * * @since 3.1.0 * - * @param bool $with_id Whether to set the ID attribute or not + * @param bool $with_id Whether to set the ID attribute or not. Default true. */ public function print_column_headers( $with_id = true ) { list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); @@ -1657,9 +1669,10 @@ protected function get_table_classes() { } /** - * Generates the table navigation above or below the table + * Generates the table navigation above or below the table. * * @since 3.1.0 + * * @param string $which The location of the navigation: Either 'top' or 'bottom'. */ protected function display_tablenav( $which ) { @@ -1736,13 +1749,21 @@ public function single_row( $item ) { } /** - * @param object|array $item - * @param string $column_name + * Handles an unknown column. + * + * @since 4.2.0 + * + * @param object|array $item The current item. + * @param string $column_name Name of the column. */ protected function column_default( $item, $column_name ) {} /** - * @param object|array $item + * Handles the checkbox column output. + * + * @since 4.2.0 + * + * @param object|array $item The current item. */ protected function column_cb( $item ) {} diff --git a/src/wp-admin/includes/class-wp-plugins-list-table.php b/src/wp-admin/includes/class-wp-plugins-list-table.php index c4866076f984d..08b2e982e702f 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -27,7 +27,7 @@ class WP_Plugins_List_Table extends WP_List_Table { /** * Constructor. * - * @since 3.1.0 + * @since 3.2.0 * * @see WP_List_Table::__construct() for more information on default arguments. * @@ -63,27 +63,39 @@ public function __construct( $args = array() ) { } /** - * @return array + * Gets the CSS classes for the list table element. + * + * @since 3.1.0 + * + * @return string[] Array of CSS classes for the table tag. */ protected function get_table_classes() { return array( 'widefat', $this->_args['plural'] ); } /** - * @return bool + * Checks whether the current user can activate plugins for this screen. + * + * @since 3.1.0 + * + * @return bool Whether the current user can activate plugins. */ public function ajax_user_can() { return current_user_can( 'activate_plugins' ); } /** - * @global string $status - * @global array $plugins - * @global array $totals - * @global int $page - * @global string $orderby - * @global string $order - * @global string $s + * Prepares the list of items for displaying. + * + * @since 3.1.0 + * + * @global string $status Current plugin status filter slug. + * @global array<string, array<string, array<string, mixed>>> $plugins Array of plugin data arrays grouped by status. + * @global array<string, int> $totals Count of plugins for each status group. + * @global int $page Current page number. + * @global string $orderby Column name to sort by. + * @global string $order Sort direction, 'ASC' or 'DESC'. + * @global string $s URL-encoded search term. */ public function prepare_items() { global $status, $plugins, $totals, $page, $orderby, $order, $s; @@ -364,10 +376,14 @@ public function prepare_items() { } /** + * Callback to filter plugins by a search term. + * + * @since 3.1.0 + * * @global string $s URL encoded search term. * - * @param array $plugin - * @return bool + * @param array<string, mixed> $plugin Plugin data array to check against the search term. + * @return bool True if the plugin matches the search term, false otherwise. */ public function _search_callback( $plugin ) { global $s; @@ -382,11 +398,16 @@ public function _search_callback( $plugin ) { } /** - * @global string $orderby - * @global string $order - * @param array $plugin_a - * @param array $plugin_b - * @return int + * Callback to sort plugins by a given column. + * + * @since 3.1.0 + * + * @global string $orderby The column name to sort by. + * @global string $order The sort direction ('ASC' or 'DESC'). + * + * @param array<string, mixed> $plugin_a First plugin data array to compare. + * @param array<string, mixed> $plugin_b Second plugin data array to compare. + * @return int Negative if $plugin_a sorts before $plugin_b, positive if after, 0 if equal. */ public function _order_callback( $plugin_a, $plugin_b ) { global $orderby, $order; @@ -406,7 +427,11 @@ public function _order_callback( $plugin_a, $plugin_b ) { } /** - * @global array $plugins + * Message to be displayed when there are no items. + * + * @since 3.1.0 + * + * @global array<string, array<string, array<string, mixed>>> $plugins Array of plugin data arrays grouped by status. */ public function no_items() { global $plugins; @@ -459,9 +484,13 @@ public function search_box( $text, $input_id ) { } /** - * @global string $status + * Gets the list of columns for this list table. + * + * @since 3.1.0 + * + * @global string $status Current plugin status filter slug. * - * @return string[] Array of column titles keyed by their column name. + * @return array<string, string> An associative array of column titles keyed by their column name. */ public function get_columns() { global $status; @@ -480,16 +509,25 @@ public function get_columns() { } /** - * @return array + * Gets the list of sortable columns for this list table. + * + * @since 3.1.0 + * + * @return array<string, array<int, string|bool>|string> An associative array of sortable columns. */ protected function get_sortable_columns() { return array(); } /** - * @global array $totals - * @global string $status - * @return array + * Gets an associative array of status filter links for the views area. + * + * @since 3.1.0 + * + * @global array<string, int> $totals Count of plugins for each status group. + * @global string $status Current plugin status filter slug. + * + * @return array<string, string> An associative array of views. */ protected function get_views() { global $totals, $status; @@ -616,8 +654,13 @@ protected function get_views() { } /** - * @global string $status - * @return array + * Gets the available bulk actions for the plugins list table. + * + * @since 3.1.0 + * + * @global string $status Current plugin status filter slug. + * + * @return array<string, string> An associative array of bulk actions. */ protected function get_bulk_actions() { global $status; @@ -655,8 +698,14 @@ protected function get_bulk_actions() { } /** - * @global string $status - * @param string $which + * Displays the bulk actions dropdown. + * + * @since 3.1.0 + * + * @global string $status Current plugin status filter slug. + * + * @param string $which The location of the bulk actions: Either 'top' or 'bottom'. + * This is designated as optional for backward compatibility. */ public function bulk_actions( $which = '' ) { global $status; @@ -669,8 +718,13 @@ public function bulk_actions( $which = '' ) { } /** - * @global string $status - * @param string $which + * Displays extra table navigation for the plugins list table. + * + * @since 3.1.0 + * + * @global string $status Current plugin status filter slug. + * + * @param string $which The location: 'top' or 'bottom'. */ protected function extra_tablenav( $which ) { global $status; @@ -700,7 +754,13 @@ protected function extra_tablenav( $which ) { } /** - * @return string + * Gets the current action selected from the bulk actions dropdown. + * + * Also handles the 'clear-recent-list' action from the Recently Active plugins screen. + * + * @since 3.1.0 + * + * @return string|false The action name. False if no action was selected. */ public function current_action() { if ( isset( $_POST['clear-recent-list'] ) ) { @@ -715,7 +775,7 @@ public function current_action() { * * @since 3.1.0 * - * @global string $status + * @global string $status Current plugin status filter slug. */ public function display_rows() { global $status; @@ -730,12 +790,17 @@ public function display_rows() { } /** - * @global string $status - * @global int $page - * @global string $s - * @global array $totals + * Generates the markup for a single plugin row. + * + * @since 3.1.0 + * + * @global string $status Current plugin status filter slug. + * @global int $page Current page number. + * @global string $s URL-encoded search term. + * @global array<string, int> $totals Count of plugins for each status group. * - * @param array $item + * @param array $item The current item. An array containing the plugin file path and plugin data. + * @phpstan-param array{string, array<string, mixed>} $item */ public function single_row( $item ) { global $status, $page, $s, $totals; From a513738f4860c2bfb5122234d754233c0c6246f7 Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Thu, 11 Jun 2026 22:17:13 +0000 Subject: [PATCH 190/327] HTML API: preserve adjusted foreign attributes on serialization. Discovered during fuzz-testing of the HTML API. Adjusted foreign attributes, such as `xlink:href`, were being normalized with a space instead of a colon through `::serialize_token()`. This led to the creation of two attributes on output instead of the proper singular attribute. This patch corrects the issue by ensuring that the attribute namespace and name are separated by a colon when serializing. Developed in: https://github.com/WordPress/wordpress-develop/pull/12140 Discussed in: https://core.trac.wordpress.org/ticket/65372 Props jonsurrell. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62492 602fd350-edb4-49c9-b593-d223f7449a82 --- .../html-api/class-wp-html-processor.php | 11 +- .../html-api/class-wp-html-tag-processor.php | 6 + .../html-api/wpHtmlProcessor-serialize.php | 123 ++++++++++++++++++ 3 files changed, 137 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/html-api/class-wp-html-processor.php b/src/wp-includes/html-api/class-wp-html-processor.php index 35d91fad3129c..56ea0f705c2b8 100644 --- a/src/wp-includes/html-api/class-wp-html-processor.php +++ b/src/wp-includes/html-api/class-wp-html-processor.php @@ -1428,6 +1428,11 @@ public function serialize_token(): string { $qualified_attribute_name = $this->get_qualified_attribute_name( $attribute_name ); $qualified_attribute_name = str_replace( "\x00", "\u{FFFD}", $qualified_attribute_name ); $qualified_attribute_name = wp_scrub_utf8( $qualified_attribute_name ); + /** + * Spaces only appear via the foreign attribute adjustment table. + * @see WP_HTML_Tag_Processor::get_qualified_attribute_name() + */ + $serialized_attribute_name = str_replace( ' ', ':', $qualified_attribute_name ); if ( isset( $seen_attribute_names[ $qualified_attribute_name ] ) ) { continue; } else { @@ -1436,13 +1441,13 @@ public function serialize_token(): string { if ( $previous_attribute_was_true && - isset( $qualified_attribute_name[0] ) && - '=' === $qualified_attribute_name[0] + isset( $serialized_attribute_name[0] ) && + '=' === $serialized_attribute_name[0] ) { $html .= '=""'; } - $html .= " {$qualified_attribute_name}"; + $html .= " {$serialized_attribute_name}"; $value = $this->get_attribute( $attribute_name ); if ( is_string( $value ) ) { diff --git a/src/wp-includes/html-api/class-wp-html-tag-processor.php b/src/wp-includes/html-api/class-wp-html-tag-processor.php index 77c1a471db5b1..501a623afb10b 100644 --- a/src/wp-includes/html-api/class-wp-html-tag-processor.php +++ b/src/wp-includes/html-api/class-wp-html-tag-processor.php @@ -3071,6 +3071,12 @@ public function get_qualified_tag_name(): ?string { * Returns the adjusted attribute name for a given attribute, taking into * account the current parsing context, whether HTML, SVG, or MathML. * + * In SVG and MathML contexts, adjusted foreign attributes with a namespace + * prefix use a space between the prefix and local name. For example, + * `xlink:href` is returned as `xlink href`, while the unprefixed `xmlns` + * attribute is returned as `xmlns`. Non-adjusted attributes with a colon in + * their name, such as `foo:bar`, are returned unchanged. + * * @since 6.7.0 * * @param string $attribute_name Which attribute to adjust. diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php index e516addb6c314..a29e5ba863026 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php @@ -108,6 +108,129 @@ public function test_duplicate_attributes_are_removed() { ); } + /** + * Ensures that adjusted foreign attributes are serialized with their namespace prefix. + * + * @ticket 65372 + */ + public function test_serializes_adjusted_foreign_attributes_with_namespace_prefix(): void { + $svg = '<svg><a xlink:actuate="onLoad" xlink:arcrole="arc" xlink:href="#target" xlink:role="role" xlink:show="new" xlink:title="title" xlink:type="simple" xml:lang="en" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></a></svg>'; + + $this->assertSame( + $svg, + WP_HTML_Processor::normalize( $svg ), + 'Should have preserved all adjusted foreign attributes when normalizing.' + ); + + $processor = WP_HTML_Processor::create_fragment( $svg ); + $this->assertTrue( $processor->next_token() ); + $this->assertSame( '<svg>', $processor->serialize_token(), 'Should serialize the opening SVG tag.' ); + $this->assertTrue( $processor->next_token() ); + $this->assertSame( + '<a xlink:actuate="onLoad" xlink:arcrole="arc" xlink:href="#target" xlink:role="role" xlink:show="new" xlink:title="title" xlink:type="simple" xml:lang="en" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">', + $processor->serialize_token(), + 'Should have serialized all adjusted foreign attributes with their namespace prefixes.' + ); + } + + /** + * Ensures that non-adjusted foreign attributes retain their colon. + * + * @ticket 65372 + * + * @dataProvider data_non_adjusted_foreign_attributes_with_colon + * + * @param string $svg SVG markup to normalize. + * @param string $serialized_tag Expected serialized token. + */ + public function test_serializes_non_adjusted_foreign_attributes_with_colon( string $svg, string $serialized_tag ): void { + $this->assertSame( + $svg, + WP_HTML_Processor::normalize( $svg ), + 'Should have preserved non-adjusted colon attributes when normalizing.' + ); + + $processor = WP_HTML_Processor::create_fragment( $svg ); + $this->assertTrue( $processor->next_token() ); + $this->assertSame( '<svg>', $processor->serialize_token(), 'Should serialize the opening SVG tag.' ); + $this->assertTrue( $processor->next_token() ); + $this->assertSame( + $serialized_tag, + $processor->serialize_token(), + 'Should have preserved non-adjusted colon attributes when serializing the token.' + ); + } + + /** + * Data provider. + * + * @return array<string, array{0: string, 1: string}> + */ + public static function data_non_adjusted_foreign_attributes_with_colon(): array { + return array( + 'xlink control' => array( + '<svg><a xlink:author="author" xlink:href="#target"></a></svg>', + '<a xlink:author="author" xlink:href="#target">', + ), + 'xml control' => array( + '<svg><a xml:id="id" xml:lang="en"></a></svg>', + '<a xml:id="id" xml:lang="en">', + ), + 'xmlns control' => array( + '<svg><a xmlns:foo="urn:foo" xmlns:xlink="http://www.w3.org/1999/xlink"></a></svg>', + '<a xmlns:foo="urn:foo" xmlns:xlink="http://www.w3.org/1999/xlink">', + ), + 'source order' => array( + '<svg><a foo:bar="baz" xlink:href="#target"></a></svg>', + '<a foo:bar="baz" xlink:href="#target">', + ), + ); + } + + /** + * Ensures that duplicate foreign attributes are removed upon serialization. + * + * @ticket 65372 + * + * @dataProvider data_duplicate_foreign_attributes + * + * @param string $input HTML containing duplicate foreign attributes. + * @param string $expected Expected normalized HTML. + */ + public function test_duplicate_foreign_attributes_are_removed( string $input, string $expected ): void { + $this->assertSame( + $expected, + WP_HTML_Processor::normalize( $input ), + 'Should have removed all but the first copy of a foreign attribute when duplicates exist.' + ); + } + + /** + * Data provider. + * + * @return array<string, array{0: string, 1: string}> + */ + public static function data_duplicate_foreign_attributes(): array { + return array( + 'adjusted xlink duplicate' => array( + '<svg><a xlink:href="#first" XLINK:HREF="#second"></a></svg>', + '<svg><a xlink:href="#first"></a></svg>', + ), + 'adjusted xml duplicate' => array( + '<svg><a xml:lang="en" XML:LANG="fr"></a></svg>', + '<svg><a xml:lang="en"></a></svg>', + ), + 'non-adjusted colon duplicate' => array( + '<svg><a foo:bar="one" FOO:BAR="two"></a></svg>', + '<svg><a foo:bar="one"></a></svg>', + ), + 'adjusted and non-adjusted pair' => array( + '<svg><a xlink:href="#target" xlink:author="author"></a></svg>', + '<svg><a xlink:href="#target" xlink:author="author"></a></svg>', + ), + ); + } + /** * Ensures that SCRIPT contents are not escaped, as they are not parsed like text nodes are. * From c384eff8fa9cf3933adc6a061f72cd26cc4cf2dc Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Thu, 11 Jun 2026 23:09:32 +0000 Subject: [PATCH 191/327] Docs: Correct `@since` tags in `WP_Theme_JSON` for responsive block nodes. Follow-up to [62444]. Props khokansardar, huzaifaalmesbah, isabel_brison, sabernhardt, manhar, SergeyBiryukov. Fixes #65390. git-svn-id: https://develop.svn.wordpress.org/trunk@62493 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-theme-json.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index ad6d0ecc7a061..d464e19ec879c 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -2861,6 +2861,7 @@ private static function update_paragraph_text_indent_selector( $feature_declarat * @since 6.3.0 Refactored and stabilized selectors API. * @since 6.6.0 Added optional selectors and options for generating block nodes. * @since 6.7.0 Added $include_node_paths_only option. + * @since 7.1.0 Added responsive block nodes for breakpoint-based styles. * * @param array $theme_json The theme.json converted to an array. * @param array $selectors Optional list of selectors per block. @@ -5238,7 +5239,7 @@ protected static function get_valid_block_style_variations( $blocks_metadata = a /** * Extracts the block name from the block metadata path. * - * @since 7.1 + * @since 7.1.0 * * @param array $block_metadata Block metadata. * @return string|null The block name or null if not found. From b6a12a5131e180b150344d8317a1b38a35b24a9a Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Fri, 12 Jun 2026 01:44:50 +0000 Subject: [PATCH 192/327] Media: Consistently escape URLs in attachment download links and JS data. The "Download file" link in `attachment_submitbox_metadata()` escaped its `href` with `esc_attr()`, which only HTML-encodes the value. Use `esc_url()` instead, the correct function for a URL in an `href` attribute, since `$att_url` comes from `wp_get_attachment_url()`. This applies the same escaping method for the Download link in the media list table output by `WP_Media_List_Table::_get_row_actions()`. Apply the same correction to `wp_prepare_attachment_for_js()`, wrapping the attachment, intermediate size, full-size, original image, and image source URLs in `esc_url_raw()` so the Backbone-rendered media UI emits URLs filtered through `clean_url` just like the server-rendered templates. Developed in https://github.com/WordPress/wordpress-develop/pull/12062. Follow-up to r21680, r47202, r55156, r55198, r55221. Props thisismyurl, westonruter, sabernhardt, gazipress, jamesbregenzer, manhar, sanayasir, freewebmentor. See #57574, #41474. Fixes #65397. git-svn-id: https://develop.svn.wordpress.org/trunk@62494 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/media.php | 2 +- src/wp-includes/media.php | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/wp-admin/includes/media.php b/src/wp-admin/includes/media.php index c4fe301bebb3b..71ae2a9eea4cc 100644 --- a/src/wp-admin/includes/media.php +++ b/src/wp-admin/includes/media.php @@ -3387,7 +3387,7 @@ function attachment_submitbox_metadata() { </span> </div> <div class="misc-pub-section misc-pub-download"> - <a href="<?php echo esc_attr( $att_url ); ?>" download><?php _e( 'Download file' ); ?></a> + <a href="<?php echo esc_url( $att_url ); ?>" download><?php _e( 'Download file' ); ?></a> </div> <div class="misc-pub-section misc-pub-filename"> <?php _e( 'File name:' ); ?> <strong><?php echo $filename; ?></strong> diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index eb28db81d6ce9..4657b5872eb18 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -4573,7 +4573,7 @@ function wp_prepare_attachment_for_js( $attachment ) { 'id' => $attachment->ID, 'title' => $attachment->post_title, 'filename' => wp_basename( get_attached_file( $attachment->ID ) ), - 'url' => $attachment_url, + 'url' => esc_url_raw( $attachment_url ), 'link' => get_attachment_link( $attachment->ID ), 'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ), 'author' => $attachment->post_author, @@ -4679,7 +4679,7 @@ function wp_prepare_attachment_for_js( $attachment ) { $sizes[ $size ] = array( 'height' => $downsize[2], 'width' => $downsize[1], - 'url' => $downsize[0], + 'url' => esc_url_raw( $downsize[0] ), 'orientation' => $downsize[2] > $downsize[1] ? 'portrait' : 'landscape', ); } elseif ( isset( $meta['sizes'][ $size ] ) ) { @@ -4695,7 +4695,7 @@ function wp_prepare_attachment_for_js( $attachment ) { $sizes[ $size ] = array( 'height' => $height, 'width' => $width, - 'url' => $base_url . $size_meta['file'], + 'url' => esc_url_raw( $base_url . $size_meta['file'] ), 'orientation' => $height > $width ? 'portrait' : 'landscape', ); } @@ -4703,11 +4703,12 @@ function wp_prepare_attachment_for_js( $attachment ) { if ( 'image' === $type ) { if ( ! empty( $meta['original_image'] ) ) { - $response['originalImageURL'] = wp_get_original_image_url( $attachment->ID ); + $original_image_url = wp_get_original_image_url( $attachment->ID ); + $response['originalImageURL'] = $original_image_url ? esc_url_raw( $original_image_url ) : ''; $response['originalImageName'] = wp_basename( wp_get_original_image_path( $attachment->ID ) ); } - $sizes['full'] = array( 'url' => $attachment_url ); + $sizes['full'] = array( 'url' => esc_url_raw( $attachment_url ) ); if ( isset( $meta['height'], $meta['width'] ) ) { $sizes['full']['height'] = $meta['height']; @@ -4718,7 +4719,7 @@ function wp_prepare_attachment_for_js( $attachment ) { $response = array_merge( $response, $sizes['full'] ); } elseif ( $meta['sizes']['full']['file'] ) { $sizes['full'] = array( - 'url' => $base_url . $meta['sizes']['full']['file'], + 'url' => esc_url_raw( $base_url . $meta['sizes']['full']['file'] ), 'height' => $meta['sizes']['full']['height'], 'width' => $meta['sizes']['full']['width'], 'orientation' => $meta['sizes']['full']['height'] > $meta['sizes']['full']['width'] ? 'portrait' : 'landscape', @@ -4757,7 +4758,7 @@ function wp_prepare_attachment_for_js( $attachment ) { $response_image_full = wp_get_attachment_image_src( $id, 'full' ); if ( is_array( $response_image_full ) ) { $response['image'] = array( - 'src' => $response_image_full[0], + 'src' => esc_url_raw( $response_image_full[0] ), 'width' => $response_image_full[1], 'height' => $response_image_full[2], ); @@ -4766,7 +4767,7 @@ function wp_prepare_attachment_for_js( $attachment ) { $response_image_thumb = wp_get_attachment_image_src( $id, 'thumbnail' ); if ( is_array( $response_image_thumb ) ) { $response['thumb'] = array( - 'src' => $response_image_thumb[0], + 'src' => esc_url_raw( $response_image_thumb[0] ), 'width' => $response_image_thumb[1], 'height' => $response_image_thumb[2], ); From 40cae8ffa0b2fda2c69b7aebf1ee5d1abe31373a Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Fri, 12 Jun 2026 01:50:46 +0000 Subject: [PATCH 193/327] Build/Test Tools: Upgrade PHPStan to version 2.2.2. Developed in https://github.com/WordPress/wordpress-develop/pull/12158. See #64898. git-svn-id: https://develop.svn.wordpress.org/trunk@62495 602fd350-edb4-49c9-b593-d223f7449a82 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 84718d1f4b09f..5c016d37316c1 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ "squizlabs/php_codesniffer": "3.13.5", "wp-coding-standards/wpcs": "~3.3.0", "phpcompatibility/phpcompatibility-wp": "~2.1.3", - "phpstan/phpstan": "2.1.39", + "phpstan/phpstan": "2.2.2", "yoast/phpunit-polyfills": "^1.1.0" }, "config": { From 6c29cfc55f529903a9f88c0d8230b5a190d7104a Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Fri, 12 Jun 2026 02:01:43 +0000 Subject: [PATCH 194/327] Build/Test Tools: Update `codecov/codecov-action` to `7.0.0`. This updates `codecov/codecov-action` from `v5.5.3` to `v7.0.0`, which includes a change in Keybase account being used by the action to one that Codecov is able to update going forward. Coverage reports are currently failing because of an inability to verify GPG signature integrity. See #64893. git-svn-id: https://develop.svn.wordpress.org/trunk@62496 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/reusable-phpunit-tests-v3.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable-phpunit-tests-v3.yml b/.github/workflows/reusable-phpunit-tests-v3.yml index bcad042dfe559..64507323a617b 100644 --- a/.github/workflows/reusable-phpunit-tests-v3.yml +++ b/.github/workflows/reusable-phpunit-tests-v3.yml @@ -261,7 +261,7 @@ jobs: - name: Upload test coverage report to Codecov if: ${{ inputs.coverage-report }} - uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5.5.3 + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: token: ${{ secrets.CODECOV_TOKEN }} files: wp-code-coverage${{ inputs.multisite && '-multisite' || '-single' }}-${{ github.sha }}.xml From 3b3687954a03a582b7f23427465fbe86d2d6aeeb Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Fri, 12 Jun 2026 23:42:27 +0000 Subject: [PATCH 195/327] Docs: Correct the DocBlock for `build_query().` This updates the `@param` and `@return` descriptions to state that `build_query()` does **not** URL-encode, unlike PHP's native `http_build_query()`, and that callers are responsible for encoding the values beforehand or late-escaping the output with `esc_url()`. Follow-up to [8215]. Props nimeshatxecurify, johnbillion. Fixes #65453. git-svn-id: https://develop.svn.wordpress.org/trunk@62497 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/functions.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index 93b4df2df4505..c297864859aa4 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -1031,14 +1031,19 @@ function is_new_day() { * This is a convenient function for easily building URL queries. * It sets the separator to '&' and uses the _http_build_query() function. * + * Unlike PHP's native http_build_query(), this function does NOT URL-encode + * the keys or values. Callers are responsible for encoding values beforehand + * with urlencode() or rawurlencode(), or late-escaping the output with + * esc_url() before use. + * * @since 2.3.0 * - * @see _http_build_query() Used to build the query + * @see _http_build_query() Used to build the query. * @link https://www.php.net/manual/en/function.http-build-query.php for more on what * http_build_query() does. * - * @param array $data URL-encode key/value pairs. - * @return string URL-encoded string. + * @param array $data Array of key/value pairs to build the query from. + * @return string Query string, without URL encoding applied. */ function build_query( $data ) { return _http_build_query( $data, null, '&', '', false ); From 8a89014cb1830e2957b2146952b9564c087d3714 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sat, 13 Jun 2026 23:06:09 +0000 Subject: [PATCH 196/327] Coding Standards: Correct casing of `chr()` and `ord()` in `class-pclzip.php`. This replaces `Chr()` and `Ord()` with their canonical lowercase forms `chr()` and `ord()`. This is flagged as a case-sensitivity violation by the upcoming [https://wiki.php.net/rfc/case_sensitive_php PHP 8.6 RFC], which will emit `E_DEPRECATED` for function references that don't match their declared casing. Fixing it now keeps WordPress ahead of the deprecation. Props Soean. See #64897. git-svn-id: https://develop.svn.wordpress.org/trunk@62498 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-pclzip.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wp-admin/includes/class-pclzip.php b/src/wp-admin/includes/class-pclzip.php index 1fdc8b9f41296..e8eb37ddd892a 100644 --- a/src/wp-admin/includes/class-pclzip.php +++ b/src/wp-admin/includes/class-pclzip.php @@ -3988,7 +3988,7 @@ function privExtractFileUsingTempFile(&$p_entry, &$p_options) // ----- Write gz file format header - $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); + $v_binary_data = pack('va1a1Va1a1', 0x8b1f, chr($p_entry['compression']), chr(0x00), time(), chr(0x00), chr(3)); @fwrite($v_dest_file, $v_binary_data, 10); // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks @@ -4616,10 +4616,10 @@ function privReadEndCentralDir(&$p_central_dir) $v_byte = @fread($this->zip_fd, 1); // ----- Add the byte - //$v_bytes = ($v_bytes << 8) | Ord($v_byte); + //$v_bytes = ($v_bytes << 8) | ord($v_byte); // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. - $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); + $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | ord($v_byte); // ----- Compare the bytes if ($v_bytes == 0x504b0506) From 0a9838ddf5ba2d112eca514bf675587b357280b0 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sun, 14 Jun 2026 23:45:08 +0000 Subject: [PATCH 197/327] Coding Standards: Remove unused local variable `$all_class_directives`. This removes an unused variable in `WP_Interactivity_API::data_wp_class_processor()`. Follow-up to [57563], [61020]. Props Soean. See #64897. git-svn-id: https://develop.svn.wordpress.org/trunk@62499 602fd350-edb4-49c9-b593-d223f7449a82 --- .../interactivity-api/class-wp-interactivity-api.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/wp-includes/interactivity-api/class-wp-interactivity-api.php b/src/wp-includes/interactivity-api/class-wp-interactivity-api.php index 095f12380dfbe..bb87995153906 100644 --- a/src/wp-includes/interactivity-api/class-wp-interactivity-api.php +++ b/src/wp-includes/interactivity-api/class-wp-interactivity-api.php @@ -1086,8 +1086,7 @@ private function data_wp_bind_processor( WP_Interactivity_API_Directives_Process */ private function data_wp_class_processor( WP_Interactivity_API_Directives_Processor $p, string $mode ) { if ( 'enter' === $mode ) { - $all_class_directives = $p->get_attribute_names_with_prefix( 'data-wp-class--' ); - $entries = $this->get_directive_entries( $p, 'class' ); + $entries = $this->get_directive_entries( $p, 'class' ); foreach ( $entries as $entry ) { if ( empty( $entry['suffix'] ) ) { continue; From 5d1944c74282b40a2d99d42a74c372c1d52829e9 Mon Sep 17 00:00:00 2001 From: Aaron Jorbin <jorbin@git.wordpress.org> Date: Mon, 15 Jun 2026 19:46:48 +0000 Subject: [PATCH 198/327] Build/Test: Fix documentation that describes each step in coding standard and phpstan workflows. Props khokansardar, jorbin. See #64894. Fixes #65391. git-svn-id: https://develop.svn.wordpress.org/trunk@62500 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/reusable-coding-standards-php.yml | 1 + .github/workflows/reusable-phpstan-static-analysis-v1.yml | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-coding-standards-php.yml b/.github/workflows/reusable-coding-standards-php.yml index 709c598872b23..fab8bffb31e11 100644 --- a/.github/workflows/reusable-coding-standards-php.yml +++ b/.github/workflows/reusable-coding-standards-php.yml @@ -29,6 +29,7 @@ jobs: # Performs the following steps: # - Checks out the repository. # - Sets up PHP. + # - Gets last Monday's date for use in cache keys. # - Configures caching for PHPCS scans. # - Installs Composer dependencies. # - Make Composer packages available globally. diff --git a/.github/workflows/reusable-phpstan-static-analysis-v1.yml b/.github/workflows/reusable-phpstan-static-analysis-v1.yml index 745e789580d8f..c73c1e5e692fe 100644 --- a/.github/workflows/reusable-phpstan-static-analysis-v1.yml +++ b/.github/workflows/reusable-phpstan-static-analysis-v1.yml @@ -23,11 +23,14 @@ jobs: # # Performs the following steps: # - Checks out the repository. + # - Sets up Node.js. # - Sets up PHP. - # - Installs Composer dependencies. # - Logs debug information. - # - Configures caching for PHP static analysis scans. + # - Installs Composer dependencies. # - Make Composer packages available globally. + # - Installs npm dependencies. + # - Builds WordPress. + # - Configures caching for PHPStan static analysis scans. # - Runs PHPStan static analysis (with Pull Request annotations). # - Saves the PHPStan result cache. # - Ensures version-controlled files are not modified or deleted. From 73ed9716726d39514f1625026eac93ee5d6d9882 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 15 Jun 2026 20:13:55 +0000 Subject: [PATCH 199/327] Embeds: Validate registered oEmbed providers. A plugin may register an oEmbed provider through the `oembed_providers` filter using a malformed structure, such as an associative array rather than the expected tuple of a provider endpoint URL string at index 0 and an optional boolean regex flag at index 1. This previously produced `Undefined array key` PHP warnings when `WP_oEmbed::get_provider()` destructured the entry. Introduce a private `sanitize_provider()` method that validates the match pattern and provider data, normalizing the optional regex flag to a boolean. The constructor now skips malformed entries and reports each one via `_doing_it_wrong()`, and `get_provider()` likewise ignores any invalid entries it encounters at runtime. Developed in https://github.com/WordPress/wordpress-develop/pull/11568. Props sukhendu2002, westonruter, bradshawtm, rollybueno. Fixes #65068. git-svn-id: https://develop.svn.wordpress.org/trunk@62501 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-oembed.php | 78 +++++++++++++++++++++---- tests/phpunit/tests/oembed/wpOembed.php | 36 ++++++++++++ 2 files changed, 104 insertions(+), 10 deletions(-) diff --git a/src/wp-includes/class-wp-oembed.php b/src/wp-includes/class-wp-oembed.php index 3bc5de556c49e..39029bd9a2b8d 100644 --- a/src/wp-includes/class-wp-oembed.php +++ b/src/wp-includes/class-wp-oembed.php @@ -23,7 +23,10 @@ class WP_oEmbed { * A list of oEmbed providers. * * @since 2.9.0 - * @var array + * @var array<string, array{ 0: string, 1: bool }> An associative array mapping URL patterns to provider data. + * Each entry's value is an array with the provider endpoint URL + * string at index 0 and a boolean at index 1 indicating whether + * the URL pattern (array key) is a regular expression. */ public $providers = array(); @@ -221,9 +224,29 @@ public function __construct() { * * @since 2.9.0 * - * @param array[] $providers An array of arrays containing data about popular oEmbed providers. + * @param array<string, array{ 0: string, 1?: bool }> $providers An associative array mapping URL patterns to + * provider data. Each value must be an array + * with a provider endpoint URL string at index 0 + * and an optional boolean regex flag at index 1. */ - $this->providers = apply_filters( 'oembed_providers', $providers ); + $providers = (array) apply_filters( 'oembed_providers', $providers ); + foreach ( $providers as $match_mask => $data ) { + $provider = $this->sanitize_provider( $match_mask, $data ); + if ( null === $provider ) { + _doing_it_wrong( + __METHOD__, + sprintf( + /* translators: 1: oembed_providers, 2: The oEmbed provider URL pattern. */ + __( 'The oEmbed provider data returned by the %1$s filter at key %2$s is malformed. The providers array must be a mapping of provider URL patterns to a tuple array consisting of a provider endpoint URL string at index 0 and an optional boolean regex flag at index 1.' ), + '<code>oembed_providers</code>', + '<code>' . esc_html( (string) $match_mask ) . '</code>' + ), + '7.1.0' + ); + } else { + $this->providers[ $provider['match_mask'] ] = array( $provider['endpoint'], $provider['is_regex'] ); + } + } // Fix any embeds that contain new lines in the middle of the HTML which breaks wpautop(). add_filter( 'oembed_dataparse', array( $this, '_strip_newlines' ), 10, 3 ); @@ -246,6 +269,37 @@ public function __call( $name, $arguments ) { return false; } + /** + * Sanitizes and normalizes a single oEmbed provider entry. + * + * Validates that the match mask is a non-empty string and that the provider data + * is an array with a non-empty string endpoint URL at index 0. Normalizes the + * optional regex flag at index 1 to a boolean. + * + * @since 7.1.0 + * + * @param array-key $match_mask The URL pattern used to match against URLs. + * @param mixed $data The raw provider data to sanitize. + * @return array{ match_mask: non-empty-string, endpoint: non-empty-string, is_regex: bool }|null Normalized provider array, or null if malformed. + */ + private function sanitize_provider( $match_mask, $data ): ?array { + if ( + is_string( $match_mask ) && + '' !== $match_mask && + is_array( $data ) && + isset( $data[0] ) && + is_string( $data[0] ) && + '' !== $data[0] + ) { + return array( + 'match_mask' => $match_mask, + 'endpoint' => $data[0], + 'is_regex' => (bool) ( $data[1] ?? false ), + ); + } + return null; + } + /** * Takes a URL and returns the corresponding oEmbed provider's URL, if there is one. * @@ -272,17 +326,21 @@ public function get_provider( $url, $args = '' ) { $args['discover'] = true; } - foreach ( $this->providers as $matchmask => $data ) { - list( $providerurl, $regex ) = $data; + foreach ( $this->providers as $match_mask => $data ) { + $provider_data = $this->sanitize_provider( $match_mask, $data ); + if ( null === $provider_data ) { + continue; + } + $match_mask = $provider_data['match_mask']; // Turn the asterisk-type provider URLs into regex. - if ( ! $regex ) { - $matchmask = '#' . str_replace( '___wildcard___', '(.+)', preg_quote( str_replace( '*', '___wildcard___', $matchmask ), '#' ) ) . '#i'; - $matchmask = preg_replace( '|^#http\\\://|', '#https?\://', $matchmask ); + if ( ! $provider_data['is_regex'] ) { + $match_mask = '#' . str_replace( '___wildcard___', '(.+)', preg_quote( str_replace( '*', '___wildcard___', $match_mask ), '#' ) ) . '#i'; + $match_mask = (string) preg_replace( '|^#http\\\://|', '#https?\://', $match_mask ); } - if ( preg_match( $matchmask, $url ) ) { - $provider = str_replace( '{format}', 'json', $providerurl ); // JSON is easier to deal with than XML. + if ( preg_match( $match_mask, $url ) ) { + $provider = str_replace( '{format}', 'json', $provider_data['endpoint'] ); // JSON is easier to deal with than XML. break; } } diff --git a/tests/phpunit/tests/oembed/wpOembed.php b/tests/phpunit/tests/oembed/wpOembed.php index bc10c2a10a7eb..9240194e49f57 100644 --- a/tests/phpunit/tests/oembed/wpOembed.php +++ b/tests/phpunit/tests/oembed/wpOembed.php @@ -276,4 +276,40 @@ public function test_wp_filter_pre_oembed_result_multisite_restores_state_if_no_ $this->assertFalse( $actual ); $this->assertSame( $current_blog_id, get_current_blog_id() ); } + + /** + * @ticket 65068 + * @covers WP_oEmbed::__construct + */ + public function test_malformed_provider_triggers_doing_it_wrong(): void { + $filter = static function ( array $providers ): array { + $providers['bad_provider'] = array( + 'url' => '#https?://example\.site/.*#i', + 'endpoint' => 'https://example.site/api/oembed', + ); + return $providers; + }; + + add_filter( 'oembed_providers', $filter ); + $this->setExpectedIncorrectUsage( 'WP_oEmbed::__construct' ); + $oembed = new WP_oEmbed(); + + $this->assertArrayNotHasKey( 'bad_provider', $oembed->providers ); + } + + /** + * @ticket 65068 + * @covers ::get_provider + */ + public function test_get_provider_handles_provider_without_regex_flag(): void { + // Use a dedicated instance to avoid leaking the test provider into the shared singleton. + $oembed = new WP_oEmbed(); + + // Provider with only index 0 set (no regex flag) — should default $regex to false. + $oembed->providers['https://example.site/*'] = array( 'https://example.site/api/oembed' ); // @phpstan-ignore assign.propertyType (Intentionally omitted second item of array.) + + $result = $oembed->get_provider( 'https://example.site/video/123' ); + + $this->assertSame( 'https://example.site/api/oembed', $result ); + } } From 68cbdc968d6a9df2dfbe664186a3f05e1dd33d49 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 15 Jun 2026 20:47:05 +0000 Subject: [PATCH 200/327] Embeds: Preserve the site icon fallback URL. Previously, `get_site_icon_url()` overwrote a caller-supplied fallback URL with the return value of `wp_get_attachment_image_url()` even when that lookup returned `false`, so a defined fallback (such as the bundled WordPress logo) was silently discarded whenever the assigned site icon attachment could not be resolved. Only update the URL when a non-empty attachment URL is returned. Additionally, `the_embed_site_title()` now renders the site icon `<img>` only when a URL is available, and omits the `srcset` attribute when the 2x URL is missing or identical to the 1x URL. This avoids the malformed markup (an empty `src` and a bare ` 2x` `srcset`) that produced a broken image and spurious requests in oEmbed cards. Developed in https://github.com/WordPress/wordpress-develop/pull/11601. Follow-up to r35571, r36693, r47832. Props sukhendu2002, sabernhardt, mukesh27, westonruter, pontocinza, mohamedahamed, abcd95, manhar, rollybueno. Fixes #65098. git-svn-id: https://develop.svn.wordpress.org/trunk@62502 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/embed.php | 21 +++- src/wp-includes/general-template.php | 5 +- tests/phpunit/tests/general/template.php | 116 +++++++++++++++++++++++ 3 files changed, 137 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/embed.php b/src/wp-includes/embed.php index 3fb8968c7c62c..636f6acd94e6b 100644 --- a/src/wp-includes/embed.php +++ b/src/wp-includes/embed.php @@ -1232,12 +1232,25 @@ function print_embed_sharing_dialog() { * * @since 4.5.0 */ -function the_embed_site_title() { +function the_embed_site_title(): void { + $fallback_icon_url = includes_url( 'images/w-logo-blue.png' ); + $site_icon_url = get_site_icon_url( 32, $fallback_icon_url ); + + $icon_img = ''; + if ( $site_icon_url ) { + $site_icon_url_2x = get_site_icon_url( 64, $fallback_icon_url ); + $srcset = ( $site_icon_url_2x && $site_icon_url !== $site_icon_url_2x ) ? sprintf( ' srcset="%s 2x"', esc_url( $site_icon_url_2x ) ) : ''; + $icon_img = sprintf( + '<img src="%s"%s width="32" height="32" alt="" class="wp-embed-site-icon" />', + esc_url( $site_icon_url ), + $srcset + ); + } + $site_title = sprintf( - '<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon" /><span>%s</span></a>', + '<a href="%s" target="_top">%s<span>%s</span></a>', esc_url( home_url() ), - esc_url( get_site_icon_url( 32, includes_url( 'images/w-logo-blue.png' ) ) ), - esc_url( get_site_icon_url( 64, includes_url( 'images/w-logo-blue.png' ) ) ), + $icon_img, esc_html( get_bloginfo( 'name' ) ) ); diff --git a/src/wp-includes/general-template.php b/src/wp-includes/general-template.php index 01aefa370b5f1..e7640720d3c73 100644 --- a/src/wp-includes/general-template.php +++ b/src/wp-includes/general-template.php @@ -978,7 +978,10 @@ function get_site_icon_url( $size = 512, $url = '', $blog_id = 0 ) { } else { $size_data = array( $size, $size ); } - $url = wp_get_attachment_image_url( $site_icon_id, $size_data ); + $attachment_url = wp_get_attachment_image_url( $site_icon_id, $size_data ); + if ( $attachment_url ) { + $url = $attachment_url; + } } if ( $switched_blog ) { diff --git a/tests/phpunit/tests/general/template.php b/tests/phpunit/tests/general/template.php index d3b35a2c46c2b..20f6d0012b3a7 100644 --- a/tests/phpunit/tests/general/template.php +++ b/tests/phpunit/tests/general/template.php @@ -122,6 +122,22 @@ public function test_get_site_icon_url() { $this->assertEmpty( get_site_icon_url(), 'Site icon URL should not be set after removal.' ); } + /** + * @ticket 65098 + * @group site_icon + * @covers ::get_site_icon_url + * @requires function imagejpeg + */ + public function test_get_site_icon_url_returns_fallback_when_attachment_url_fails(): void { + $this->set_site_icon(); + + $fallback = 'https://example.com/fallback-icon.png'; + add_filter( 'wp_get_attachment_image_src', '__return_false' ); + $url = get_site_icon_url( 32, $fallback ); + + $this->assertSame( $fallback, $url, 'Fallback URL should be returned when attachment URL lookup fails.' ); + } + /** * @group site_icon * @covers ::site_icon_url @@ -807,4 +823,104 @@ public function test_get_the_archive_title_is_correct_for_author_queries() { $this->assertSame( $user_with_posts->display_name, $title_when_posts ); $this->assertSame( $user_with_no_posts->display_name, $title_when_no_posts ); } + + /** + * @ticket 65098 + * @group site_icon + * @covers ::the_embed_site_title + * @requires function imagejpeg + */ + public function test_the_embed_site_title_contains_site_icon_when_set(): void { + $this->set_site_icon(); + + $url_32 = get_site_icon_url( 32 ); + $url_64 = get_site_icon_url( 64 ); + + $output = get_echo( 'the_embed_site_title' ); + $processor = new WP_HTML_Tag_Processor( $output ); + + $this->assertTrue( $processor->next_tag( 'IMG' ), 'Expected IMG tag.' ); + $this->assertTrue( $processor->has_class( 'wp-embed-site-icon' ), 'Expected IMG to have wp-embed-site-icon class.' ); + $this->assertSame( $url_32, $processor->get_attribute( 'src' ), 'Output should contain 32px site icon URL in src.' ); + $srcset = $processor->get_attribute( 'srcset' ); + $this->assertIsString( $srcset, 'Expected srcset to be present.' ); + $this->assertStringContainsString( $url_64, $srcset, 'Output should contain 64px site icon URL in srcset.' ); + } + + /** + * @ticket 65098 + * @group site_icon + * @covers ::the_embed_site_title + * @requires function imagejpeg + */ + public function test_the_embed_site_title_uses_fallback_when_attachment_url_fails(): void { + $this->set_site_icon(); + + // Simulate wp_get_attachment_image_url() failing. + add_filter( 'wp_get_attachment_image_src', '__return_false' ); + $output = get_echo( 'the_embed_site_title' ); + + $fallback = includes_url( 'images/w-logo-blue.png' ); + $processor = new WP_HTML_Tag_Processor( $output ); + + $this->assertTrue( $processor->next_tag( 'IMG' ), 'Expected IMG tag with fallback.' ); + $this->assertTrue( $processor->has_class( 'wp-embed-site-icon' ), 'Expected IMG to have wp-embed-site-icon class.' ); + $this->assertSame( $fallback, $processor->get_attribute( 'src' ), 'Output should contain fallback URL in src when attachment URL fails.' ); + } + + /** + * @ticket 65098 + * @group site_icon + * @covers ::the_embed_site_title + */ + public function test_the_embed_site_title_omits_img_when_url_is_empty(): void { + // Force get_site_icon_url() to return empty string via filter. + add_filter( 'get_site_icon_url', '__return_empty_string' ); + $output = get_echo( 'the_embed_site_title' ); + + $processor = new WP_HTML_Tag_Processor( $output ); + + $this->assertFalse( $processor->next_tag( 'IMG' ), 'IMG tag should be omitted when URL is empty.' ); + $this->assertStringContainsString( get_bloginfo( 'name' ), $output, 'Site name should still be present.' ); + } + + /** + * @ticket 65098 + * @group site_icon + * @covers ::the_embed_site_title + */ + public function test_the_embed_site_title_omits_srcset_when_1x_and_2x_urls_are_identical(): void { + // Force both sizes to return the same URL. + $svg_url = 'https://example.com/icon.svg'; + $filter = static function () use ( $svg_url ) { + return $svg_url; + }; + + add_filter( 'get_site_icon_url', $filter ); + $output = get_echo( 'the_embed_site_title' ); + + $processor = new WP_HTML_Tag_Processor( $output ); + + $this->assertTrue( $processor->next_tag( 'IMG' ), 'Expected IMG tag.' ); + $this->assertTrue( $processor->has_class( 'wp-embed-site-icon' ), 'Expected IMG to have wp-embed-site-icon class.' ); + $this->assertSame( $svg_url, $processor->get_attribute( 'src' ), '1x URL should be present in src.' ); + $this->assertNull( $processor->get_attribute( 'srcset' ), 'srcset should be omitted when 1x and 2x URLs are identical.' ); + } + + /** + * @ticket 65098 + * @group site_icon + * @covers ::the_embed_site_title + */ + public function test_the_embed_site_title_uses_fallback_without_srcset_when_no_site_icon_set(): void { + $output = get_echo( 'the_embed_site_title' ); + $fallback = includes_url( 'images/w-logo-blue.png' ); + + $processor = new WP_HTML_Tag_Processor( $output ); + + $this->assertTrue( $processor->next_tag( 'IMG' ), 'Expected IMG tag with fallback.' ); + $this->assertTrue( $processor->has_class( 'wp-embed-site-icon' ), 'Expected IMG to have wp-embed-site-icon class.' ); + $this->assertSame( $fallback, $processor->get_attribute( 'src' ), 'Output should contain fallback icon URL in src.' ); + $this->assertNull( $processor->get_attribute( 'srcset' ), 'srcset should be omitted when 1x and 2x fallback URLs are identical.' ); + } } From 2f682aea05f27e93ebfbcf362d0136a0214bf559 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Mon, 15 Jun 2026 23:21:05 +0000 Subject: [PATCH 201/327] Coding Standards: Remove redundant arguments of `add_filter()`. The arguments match the parameters' default values. Follow-up to [61019]. Props Soean. See #64897. git-svn-id: https://develop.svn.wordpress.org/trunk@62503 602fd350-edb4-49c9-b593-d223f7449a82 --- .../interactivity-api/class-wp-interactivity-api.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/interactivity-api/class-wp-interactivity-api.php b/src/wp-includes/interactivity-api/class-wp-interactivity-api.php index bb87995153906..a04d62e54924c 100644 --- a/src/wp-includes/interactivity-api/class-wp-interactivity-api.php +++ b/src/wp-includes/interactivity-api/class-wp-interactivity-api.php @@ -384,7 +384,7 @@ public function register_script_modules() { public function add_hooks() { add_filter( 'script_module_data_@wordpress/interactivity', array( $this, 'filter_script_module_interactivity_data' ) ); add_filter( 'script_module_data_@wordpress/interactivity-router', array( $this, 'filter_script_module_interactivity_router_data' ) ); - add_filter( 'wp_script_attributes', array( $this, 'add_load_on_client_navigation_attribute_to_script_modules' ), 10, 1 ); + add_filter( 'wp_script_attributes', array( $this, 'add_load_on_client_navigation_attribute_to_script_modules' ) ); } /** From c8f7e7d8c55d81502ccfd2edf96f997cff071e7e Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Tue, 16 Jun 2026 04:29:46 +0000 Subject: [PATCH 202/327] Editor: ensure layout classnames are applied to the inner blocks wrapper. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Checks that the element classnames get added to doesn’t have a closing tag before the inner blocks start. Props isabel_brison, andrewserong, @darshitrajyaguru97, @tusharaddweb, @gaurangsondagar. Fixes #65101. git-svn-id: https://develop.svn.wordpress.org/trunk@62504 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/layout.php | 23 +++++++++++++++++-- tests/phpunit/tests/block-supports/layout.php | 22 ++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/block-supports/layout.php b/src/wp-includes/block-supports/layout.php index 2f7eebd4e2cda..71acf0519c4f2 100644 --- a/src/wp-includes/block-supports/layout.php +++ b/src/wp-includes/block-supports/layout.php @@ -1271,10 +1271,29 @@ function wp_render_layout_support_flag( $block_content, $block ) { $first_chunk = $block['innerContent'][0] ?? null; if ( is_string( $first_chunk ) && count( $block['innerContent'] ) > 1 ) { $first_chunk_processor = new WP_HTML_Tag_Processor( $first_chunk ); - while ( $first_chunk_processor->next_tag() ) { - $class_attribute = $first_chunk_processor->get_attribute( 'class' ); + /* + * Use a stack to track open elements as tags are visited. Void elements + * (those without a matching closing tag) are excluded so they don't + * accumulate on the stack. At the end of the chunk, every element still + * on the stack is unclosed — meaning its closing tag lives in a later + * innerContent entry alongside the inner blocks, which makes it the + * inner-block container. Elements that open and close within this chunk + * are siblings that precede the inner blocks and should be ignored. + * The last unclosed element with a class attribute is the best candidate + * for the inner-block wrapper. + */ + $tag_stack = array(); + while ( $first_chunk_processor->next_tag( array( 'tag_closers' => 'visit' ) ) ) { + if ( $first_chunk_processor->is_tag_closer() ) { + array_pop( $tag_stack ); + } elseif ( ! WP_HTML_Processor::is_void( $first_chunk_processor->get_tag() ) ) { + $tag_stack[] = $first_chunk_processor->get_attribute( 'class' ); + } + } + foreach ( array_reverse( $tag_stack ) as $class_attribute ) { if ( is_string( $class_attribute ) && ! empty( $class_attribute ) ) { $inner_block_wrapper_classes = $class_attribute; + break; } } } diff --git a/tests/phpunit/tests/block-supports/layout.php b/tests/phpunit/tests/block-supports/layout.php index f47a7a3e35d2b..fd6404505396f 100644 --- a/tests/phpunit/tests/block-supports/layout.php +++ b/tests/phpunit/tests/block-supports/layout.php @@ -194,6 +194,7 @@ public function test_outer_container_not_restored_for_aligned_image_block_with_t * @ticket 58548 * @ticket 60292 * @ticket 61111 + * @ticket 65101 * * @dataProvider data_layout_support_flag_renders_classnames_on_wrapper * @@ -354,6 +355,27 @@ public function data_layout_support_flag_renders_classnames_on_wrapper() { ), 'expected_output' => '<p>A paragraph</p>', ), + 'outer wrapper targeted when sibling element precedes inner blocks' => array( + 'args' => array( + 'block_content' => '<div class="wp-block-group"><div class="wp-block-group__header">Header</div><p>Inner block</p></div>', + 'block' => array( + 'blockName' => 'core/group', + 'attrs' => array( + 'layout' => array( + 'type' => 'default', + ), + ), + 'innerBlocks' => array(), + 'innerHTML' => '<div class="wp-block-group"><div class="wp-block-group__header">Header</div><p>Inner block</p></div>', + 'innerContent' => array( + '<div class="wp-block-group"><div class="wp-block-group__header">Header</div>', + null, + '</div>', + ), + ), + ), + 'expected_output' => '<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__header">Header</div><p>Inner block</p></div>', + ), ); } From f7baebce9071ea6257527e53a7501443c4283008 Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Tue, 16 Jun 2026 06:49:06 +0000 Subject: [PATCH 203/327] Editor: fix flex child fixed width and introduce max width option. Ensures "fixed" becomes actually fixed with `flex-shrink: 0`, and introduces a new "max" designation for the current behaviour of "fixed". Props isabel_brison, andrewserong. Fixes #65462. git-svn-id: https://develop.svn.wordpress.org/trunk@62505 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/layout.php | 38 ++++- tests/phpunit/tests/block-supports/layout.php | 156 ++++++++++++++++++ 2 files changed, 191 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/block-supports/layout.php b/src/wp-includes/block-supports/layout.php index 71acf0519c4f2..6d0ec7b917f13 100644 --- a/src/wp-includes/block-supports/layout.php +++ b/src/wp-includes/block-supports/layout.php @@ -116,13 +116,45 @@ function wp_get_child_layout_style_rules( $selector, $child_layout, $parent_layo return array_key_exists( $property, $viewport_overrides ); }; - $self_stretch = $child_layout['selfStretch'] ?? null; + $self_stretch = $child_layout['selfStretch'] ?? null; + $base_self_stretch = $base_child_layout['selfStretch'] ?? null; + + /* + * These are the serialized `selfStretch` values. `max` used to be called + * "Fixed" in the UI, but was renamed and replaced by `fixedNoShrink`. + */ + $flex_child_layout_values = array( + 'fit' => 'fit', + 'grow' => 'fill', + 'max' => 'fixed', + 'fixed' => 'fixedNoShrink', + ); + $flex_size_values = array( + $flex_child_layout_values['max'], + $flex_child_layout_values['fixed'], + ); if ( null === $viewport_overrides || $has_viewport_property_override( 'selfStretch' ) || $has_viewport_property_override( 'flexSize' ) ) { - if ( 'fixed' === $self_stretch && isset( $child_layout['flexSize'] ) ) { + if ( + null !== $viewport_overrides && + ( $flex_child_layout_values['fit'] === $self_stretch || $flex_child_layout_values['grow'] === $self_stretch ) && + in_array( $base_self_stretch, $flex_size_values, true ) && + isset( $base_child_layout['flexSize'] ) + ) { + $child_layout_declarations['flex-basis'] = 'unset'; + if ( $flex_child_layout_values['fixed'] === $base_self_stretch ) { + $child_layout_declarations['flex-shrink'] = 'unset'; + } + } + if ( in_array( $self_stretch, $flex_size_values, true ) && isset( $child_layout['flexSize'] ) ) { $child_layout_declarations['flex-basis'] = $child_layout['flexSize']; + if ( $flex_child_layout_values['fixed'] === $self_stretch ) { + $child_layout_declarations['flex-shrink'] = '0'; + } elseif ( null !== $viewport_overrides && $flex_child_layout_values['fixed'] === $base_self_stretch ) { + $child_layout_declarations['flex-shrink'] = 'unset'; + } $child_layout_declarations['box-sizing'] = 'border-box'; - } elseif ( 'fill' === $self_stretch ) { + } elseif ( $flex_child_layout_values['grow'] === $self_stretch ) { $child_layout_declarations['flex-grow'] = '1'; } } diff --git a/tests/phpunit/tests/block-supports/layout.php b/tests/phpunit/tests/block-supports/layout.php index fd6404505396f..c52c0aca656a1 100644 --- a/tests/phpunit/tests/block-supports/layout.php +++ b/tests/phpunit/tests/block-supports/layout.php @@ -469,6 +469,162 @@ public function data_restore_group_inner_container() { ); } + /** + * Check that wp_get_child_layout_style_rules() renders flex child sizing styles. + * + * @dataProvider data_wp_get_child_layout_style_rules + * + * @covers ::wp_get_child_layout_style_rules + * + * @param array $child_layout Child layout values. + * @param array|null $viewport_overrides Optional child viewport layout overrides. + * @param array $expected_output The expected output. + */ + public function test_wp_get_child_layout_style_rules( $child_layout, $viewport_overrides, $expected_output ) { + $actual_output = wp_get_child_layout_style_rules( + '.wp-container-content-test', + $child_layout, + array(), + $viewport_overrides + ); + + $this->assertSame( $expected_output, $actual_output ); + } + + /** + * Data provider for test_wp_get_child_layout_style_rules(). + * + * @return array + */ + public function data_wp_get_child_layout_style_rules() { + return array( + 'legacy fixed sizing remains shrinkable' => array( + 'child_layout' => array( + 'selfStretch' => 'fixed', + 'flexSize' => '320px', + ), + 'viewport_overrides' => null, + 'expected_output' => array( + array( + 'selector' => '.wp-container-content-test', + 'declarations' => array( + 'flex-basis' => '320px', + 'box-sizing' => 'border-box', + ), + ), + ), + ), + 'fixed sizing can opt out of shrinking' => array( + 'child_layout' => array( + 'selfStretch' => 'fixedNoShrink', + 'flexSize' => '320px', + ), + 'viewport_overrides' => null, + 'expected_output' => array( + array( + 'selector' => '.wp-container-content-test', + 'declarations' => array( + 'flex-basis' => '320px', + 'flex-shrink' => '0', + 'box-sizing' => 'border-box', + ), + ), + ), + ), + 'viewport overrides can switch fixedNoShrink to max' => array( + 'child_layout' => array( + 'selfStretch' => 'fixedNoShrink', + 'flexSize' => '320px', + ), + 'viewport_overrides' => array( + 'selfStretch' => 'fixed', + ), + 'expected_output' => array( + array( + 'selector' => '.wp-container-content-test', + 'declarations' => array( + 'flex-basis' => '320px', + 'flex-shrink' => 'unset', + 'box-sizing' => 'border-box', + ), + ), + ), + ), + 'viewport overrides can switch fixedNoShrink to fit' => array( + 'child_layout' => array( + 'selfStretch' => 'fixedNoShrink', + 'flexSize' => '320px', + ), + 'viewport_overrides' => array( + 'selfStretch' => 'fit', + ), + 'expected_output' => array( + array( + 'selector' => '.wp-container-content-test', + 'declarations' => array( + 'flex-basis' => 'unset', + 'flex-shrink' => 'unset', + ), + ), + ), + ), + 'viewport overrides can switch fixed to fit' => array( + 'child_layout' => array( + 'selfStretch' => 'fixed', + 'flexSize' => '320px', + ), + 'viewport_overrides' => array( + 'selfStretch' => 'fit', + ), + 'expected_output' => array( + array( + 'selector' => '.wp-container-content-test', + 'declarations' => array( + 'flex-basis' => 'unset', + ), + ), + ), + ), + 'viewport overrides can switch fixedNoShrink to grow' => array( + 'child_layout' => array( + 'selfStretch' => 'fixedNoShrink', + 'flexSize' => '320px', + ), + 'viewport_overrides' => array( + 'selfStretch' => 'fill', + ), + 'expected_output' => array( + array( + 'selector' => '.wp-container-content-test', + 'declarations' => array( + 'flex-basis' => 'unset', + 'flex-shrink' => 'unset', + 'flex-grow' => '1', + ), + ), + ), + ), + 'viewport overrides can switch fixed to grow' => array( + 'child_layout' => array( + 'selfStretch' => 'fixed', + 'flexSize' => '320px', + ), + 'viewport_overrides' => array( + 'selfStretch' => 'fill', + ), + 'expected_output' => array( + array( + 'selector' => '.wp-container-content-test', + 'declarations' => array( + 'flex-basis' => 'unset', + 'flex-grow' => '1', + ), + ), + ), + ), + ); + } + /** * Checks that `wp_add_parent_layout_to_parsed_block` adds the parent layout attribute to the block object. * From 5a916f070f44e34d21fdf075c0413812ba4cc70e Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Tue, 16 Jun 2026 07:01:51 +0000 Subject: [PATCH 204/327] Editor: fix background color and image incompatibility in state styles. Unsets any existing background-image if background color is applied as a viewport state. Props iamchitti, isabel_brison. Fixes #65239. git-svn-id: https://develop.svn.wordpress.org/trunk@62506 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/states.php | 37 ++++++++ tests/phpunit/tests/block-supports/states.php | 89 ++++++++++++++++++- 2 files changed, 125 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/block-supports/states.php b/src/wp-includes/block-supports/states.php index 5220d060a731e..787a55b659814 100644 --- a/src/wp-includes/block-supports/states.php +++ b/src/wp-includes/block-supports/states.php @@ -97,6 +97,42 @@ function wp_get_state_declarations_with_fallback_border_styles( $declarations ) return $declarations; } +/** + * Adds background reset declarations to prevent gradient/solid color conflicts. + * + * When a state sets a solid background-color, any gradient applied to the + * default state (via `background` shorthand or `background-image`) must be + * explicitly cleared. Without this, the gradient image layer remains visible + * on top of the solid hover color even when `!important` is used, because + * `background-color` and `background-image` are separate CSS properties. + * + * @since 7.1.0 + * + * @param array $declarations CSS declarations generated by the style engine. + * @return array CSS declarations with background resets applied where needed. + */ +function wp_get_state_declarations_with_background_resets( $declarations ) { + if ( ! is_array( $declarations ) ) { + return $declarations; + } + + $has_background_color = isset( $declarations['background-color'] ) && '' !== $declarations['background-color']; + $has_background = isset( $declarations['background'] ) && '' !== $declarations['background']; + $has_background_image = isset( $declarations['background-image'] ) && '' !== $declarations['background-image']; + + /* + * When the state sets a solid background-color but no gradient of its own, + * emit `background-image: unset !important` to clear any gradient (whether + * stored as the `background` shorthand or as `background-image`) that was + * applied to the default / normal state via an inline style attribute. + */ + if ( $has_background_color && ! $has_background && ! $has_background_image ) { + $declarations['background-image'] = 'unset !important'; + } + + return $declarations; +} + /** * Adds a style fragment to a selector-keyed state style group. * @@ -461,6 +497,7 @@ function wp_render_block_states_support( $block_content, $block ) { : $value . ' !important'; } $declarations = wp_get_state_declarations_with_fallback_border_styles( $declarations ); + $declarations = wp_get_state_declarations_with_background_resets( $declarations ); $style_rule = array( 'selector' => wp_build_state_selector( ".$unique_class", diff --git a/tests/phpunit/tests/block-supports/states.php b/tests/phpunit/tests/block-supports/states.php index 83bace976277d..1d1e6da33408d 100644 --- a/tests/phpunit/tests/block-supports/states.php +++ b/tests/phpunit/tests/block-supports/states.php @@ -136,6 +136,93 @@ public function test_preserves_authored_border_style_declarations() { ); } + /** + * Tests that background-image reset is added when a state sets a solid background-color. + * + * @covers ::wp_get_state_declarations_with_background_resets + * + * @ticket 65239 + */ + public function test_adds_background_image_reset_for_solid_background_color() { + $actual = wp_get_state_declarations_with_background_resets( + array( + 'background-color' => '#ff0000 !important', + ) + ); + + $this->assertSame( + array( + 'background-color' => '#ff0000 !important', + 'background-image' => 'unset !important', + ), + $actual + ); + } + + /** + * Tests that background-image reset is not added when the state also sets a legacy gradient. + * + * @covers ::wp_get_state_declarations_with_background_resets + * + * @ticket 65239 + */ + public function test_no_background_image_reset_when_state_sets_legacy_gradient() { + $actual = wp_get_state_declarations_with_background_resets( + array( + 'background-color' => '#ff0000 !important', + 'background' => 'linear-gradient(135deg, #ff0000, #0000ff) !important', + ) + ); + + $this->assertSame( + array( + 'background-color' => '#ff0000 !important', + 'background' => 'linear-gradient(135deg, #ff0000, #0000ff) !important', + ), + $actual + ); + } + + /** + * Tests that background-image reset is not added when the state also sets a modern gradient. + * + * @covers ::wp_get_state_declarations_with_background_resets + * + * @ticket 65239 + */ + public function test_no_background_image_reset_when_state_sets_modern_gradient() { + $actual = wp_get_state_declarations_with_background_resets( + array( + 'background-color' => '#ff0000 !important', + 'background-image' => 'linear-gradient(135deg, #ff0000, #0000ff) !important', + ) + ); + + $this->assertSame( + array( + 'background-color' => '#ff0000 !important', + 'background-image' => 'linear-gradient(135deg, #ff0000, #0000ff) !important', + ), + $actual + ); + } + + /** + * Tests that declarations without background-color are returned unchanged. + * + * @covers ::wp_get_state_declarations_with_background_resets + * + * @ticket 65239 + */ + public function test_no_background_reset_when_no_background_color() { + $input = array( + 'color' => '#ff0000 !important', + ); + $actual = wp_get_state_declarations_with_background_resets( $input ); + + $this->assertSame( $input, $actual ); + } + /** * Tests that modifier classes on the first compound selector are preserved * when state selectors are scoped to the block wrapper. @@ -835,7 +922,7 @@ public function test_responsive_pseudo_state_generates_media_query_scoped_css() $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); $this->assertStringContainsString( - '@media (width <= 480px){.' . $matches[0] . ' .wp-block-button__link:hover{background-color:#ff00d0 !important;}}', + '@media (width <= 480px){.' . $matches[0] . ' .wp-block-button__link:hover{background-color:#ff00d0 !important;background-image:unset !important;}}', $actual_stylesheet ); } From 91018652eaa2e76902bb942ad500112effba7b64 Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Tue, 16 Jun 2026 09:48:47 +0000 Subject: [PATCH 205/327] HTML API: Correct and improve documentation issues. Developed in https://github.com/WordPress/wordpress-develop/pull/12043. Props jonsurrell, westonruter, dmsnell. See #64896. git-svn-id: https://develop.svn.wordpress.org/trunk@62507 602fd350-edb4-49c9-b593-d223f7449a82 --- ...ass-wp-html-active-formatting-elements.php | 2 +- .../class-wp-html-attribute-token.php | 4 +-- .../html-api/class-wp-html-decoder.php | 4 +-- .../html-api/class-wp-html-doctype-info.php | 7 ++-- .../html-api/class-wp-html-open-elements.php | 8 ++--- .../html-api/class-wp-html-processor.php | 6 ++-- .../html-api/class-wp-html-tag-processor.php | 32 +++++++++---------- .../html-api/class-wp-html-token.php | 2 +- .../html-api/wpHtmlProcessor-serialize.php | 2 +- .../tests/html-api/wpHtmlProcessor.php | 4 +-- .../html-api/wpHtmlProcessorBreadcrumbs.php | 2 +- .../html-api/wpHtmlProcessorComments.php | 4 +-- .../html-api/wpHtmlProcessorHtml5lib.php | 14 +++++--- .../html-api/wpHtmlProcessorSemanticRules.php | 4 +-- ...HtmlProcessorSemanticRulesListElements.php | 6 ++-- .../html-api/wpHtmlTagProcessor-bookmark.php | 2 +- .../tests/html-api/wpHtmlTagProcessor.php | 8 ++--- .../wpHtmlTagProcessorModifiableText.php | 2 +- 18 files changed, 60 insertions(+), 53 deletions(-) diff --git a/src/wp-includes/html-api/class-wp-html-active-formatting-elements.php b/src/wp-includes/html-api/class-wp-html-active-formatting-elements.php index 90c3bbbd34e3b..d73561843bcb2 100644 --- a/src/wp-includes/html-api/class-wp-html-active-formatting-elements.php +++ b/src/wp-includes/html-api/class-wp-html-active-formatting-elements.php @@ -67,7 +67,7 @@ public function contains_node( WP_HTML_Token $token ) { * * @since 6.4.0 * - * @return int How many node are in the stack of active formatting elements. + * @return int How many nodes are in the stack of active formatting elements. */ public function count() { return count( $this->stack ); diff --git a/src/wp-includes/html-api/class-wp-html-attribute-token.php b/src/wp-includes/html-api/class-wp-html-attribute-token.php index fab66d827b451..3cf93b28905af 100644 --- a/src/wp-includes/html-api/class-wp-html-attribute-token.php +++ b/src/wp-includes/html-api/class-wp-html-attribute-token.php @@ -32,7 +32,7 @@ class WP_HTML_Attribute_Token { public $name; /** - * Attribute value. + * Byte offset in the input HTML where the attribute value starts. * * @since 6.2.0 * @@ -101,7 +101,7 @@ class WP_HTML_Attribute_Token { * @since 6.5.0 Replaced `end` with `length` to more closely match `substr()`. * * @param string $name Attribute name. - * @param int $value_start Attribute value. + * @param int $value_start Byte offset where the attribute value starts. * @param int $value_length Number of bytes attribute value spans. * @param int $start The string offset where the attribute name starts. * @param int $length Byte length of the entire attribute name or name and value pair expression. diff --git a/src/wp-includes/html-api/class-wp-html-decoder.php b/src/wp-includes/html-api/class-wp-html-decoder.php index d14009d3d9fb8..b6c240bdcff5f 100644 --- a/src/wp-includes/html-api/class-wp-html-decoder.php +++ b/src/wp-includes/html-api/class-wp-html-decoder.php @@ -83,7 +83,7 @@ public static function attribute_starts_with( $haystack, $search_text, $case_sen * * Example: * - * '“😄”' === WP_HTML_Decode::decode_text_node( '“😄”' ); + * '“😄”' === WP_HTML_Decoder::decode_text_node( '“😄”' ); * * @since 6.6.0 * @@ -103,7 +103,7 @@ public static function decode_text_node( $text ): string { * * Example: * - * '“😄”' === WP_HTML_Decode::decode_attribute( '“😄”' ); + * '“😄”' === WP_HTML_Decoder::decode_attribute( '“😄”' ); * * @since 6.6.0 * diff --git a/src/wp-includes/html-api/class-wp-html-doctype-info.php b/src/wp-includes/html-api/class-wp-html-doctype-info.php index 1e57afb3fd550..a5aae3c5ec268 100644 --- a/src/wp-includes/html-api/class-wp-html-doctype-info.php +++ b/src/wp-includes/html-api/class-wp-html-doctype-info.php @@ -136,9 +136,12 @@ class WP_HTML_Doctype_Info { * (e.g. "quirks" or "no-quirks" mode), it will be inferred from the properties * of the appropriate DOCTYPE declaration, if one exists. The DOCTYPE can * indicate one of three possible document compatibility modes: + * "no-quirks", "limited-quirks", or "quirks". * - * - "no-quirks" and "limited-quirks" modes (also called "standards" mode). - * - "quirks" mode (also called `CSS1Compat` mode). + * Browsers expose the resulting document mode via `document.compatMode`: + * - "BackCompat" indicates "quirks" mode. + * - "CSS1Compat" indicates "no-quirks" or "limited-quirks" (these modes are not + * distinguished by `document.compatMode`). * * An appropriate DOCTYPE is one encountered in the "initial" insertion mode, * before the HTML element has been opened and before finding any other diff --git a/src/wp-includes/html-api/class-wp-html-open-elements.php b/src/wp-includes/html-api/class-wp-html-open-elements.php index 0cd1f0fc45e07..aeee107250895 100644 --- a/src/wp-includes/html-api/class-wp-html-open-elements.php +++ b/src/wp-includes/html-api/class-wp-html-open-elements.php @@ -78,7 +78,7 @@ class WP_HTML_Open_Elements { * Sets a pop handler that will be called when an item is popped off the stack of * open elements. * - * The function will be called with the pushed item as its argument. + * The function will be called with the popped item as its argument. * * @since 6.6.0 * @@ -103,7 +103,7 @@ public function set_push_handler( Closure $handler ): void { } /** - * Returns the name of the node at the nth position on the stack + * Returns the node at the nth position on the stack * of open elements, or `null` if no such position exists. * * Note that this uses a 1-based index, which represents the @@ -114,7 +114,7 @@ public function set_push_handler( Closure $handler ): void { * * @param int $nth Retrieve the nth item on the stack, with 1 being * the top element, 2 being the second, etc... - * @return WP_HTML_Token|null Name of the node on the stack at the given location, + * @return WP_HTML_Token|null The node on the stack at the given location, * or `null` if the location isn't on the stack. */ public function at( int $nth ): ?WP_HTML_Token { @@ -168,7 +168,7 @@ public function contains_node( WP_HTML_Token $token ): bool { * * @since 6.4.0 * - * @return int How many node are in the stack of open elements. + * @return int How many nodes are in the stack of open elements. */ public function count(): int { return count( $this->stack ); diff --git a/src/wp-includes/html-api/class-wp-html-processor.php b/src/wp-includes/html-api/class-wp-html-processor.php index 56ea0f705c2b8..967d616129647 100644 --- a/src/wp-includes/html-api/class-wp-html-processor.php +++ b/src/wp-includes/html-api/class-wp-html-processor.php @@ -341,6 +341,8 @@ public static function create_fragment( $html, $context = '<body>', $encoding = * isn't UTF-8, first convert the document to UTF-8, then pass in the * converted HTML. * + * @since 6.7.0 + * * @param string $html Input HTML document to process. * @param string|null $known_definite_encoding Optional. If provided, specifies the charset used * in the input byte stream. Currently must be UTF-8. @@ -957,7 +959,7 @@ public function matches_breadcrumbs( $breadcrumbs ): bool { * token, or if it will self-close on the next step. * * Most HTML elements expect a closer, such as a P element or - * a DIV element. Others, like an IMG element are void and don't + * a DIV element. Others, like an IMG element, are void and don't * have a closing tag. Special elements, such as SCRIPT and STYLE, * are treated just like void tags. Text nodes and self-closing * foreign content will also act just like a void tag, immediately @@ -5213,7 +5215,7 @@ private function step_in_foreign_content(): bool { * * @throws Exception When unable to allocate requested bookmark. * - * @return string|false Name of created bookmark, or false if unable to create. + * @return string Name of created bookmark. */ private function bookmark_token() { if ( ! parent::set_bookmark( ++$this->bookmark_counter ) ) { diff --git a/src/wp-includes/html-api/class-wp-html-tag-processor.php b/src/wp-includes/html-api/class-wp-html-tag-processor.php index 501a623afb10b..fe8a20c1ea4ee 100644 --- a/src/wp-includes/html-api/class-wp-html-tag-processor.php +++ b/src/wp-includes/html-api/class-wp-html-tag-processor.php @@ -213,7 +213,7 @@ * * ### Bookmarks * - * While scanning through the input HTMl document it's possible to set + * While scanning through the input HTML document it's possible to set * a named bookmark when a particular tag is found. Later on, after * continuing to scan other tags, it's possible to `seek` to one of * the set bookmarks and then proceed again from that point forward. @@ -286,7 +286,7 @@ * * For these elements the Tag Processor treats the entire sequence as one, * from the opening tag, including its contents, through its closing tag. - * This means that the it's not possible to match the closing tag for a + * This means that it's not possible to match the closing tag for a * SCRIPT element unless it's unexpected; the Tag Processor already matched * it when it found the opening tag. * @@ -298,7 +298,7 @@ * closing the SCRIPT from inside a JavaScript string. E.g. `console.log( '</script>' )`. * - `TITLE` and `TEXTAREA` whose contents are treated as plaintext and then any * character references are decoded. E.g. `1 < 2 < 3` becomes `1 < 2 < 3`. - * - `IFRAME`, `NOSCRIPT`, `NOEMBED`, `NOFRAME`, `STYLE` whose contents are treated as + * - `IFRAME`, `NOEMBED`, `NOFRAMES`, `STYLE` whose contents are treated as * raw plaintext and left as-is. E.g. `1 < 2 < 3` remains `1 < 2 < 3`. * * #### Other tokens with modifiable text. @@ -329,7 +329,7 @@ * and disallows "xml" as a name, since it's special. The Tag Processor only recognizes * target names with an ASCII-representable subset of characters. It also exhibits the * same constraint as with CDATA sections, in that `>` cannot exist within the token - * since Processing Instructions do no exist within HTML and their syntax transforms + * since Processing Instructions do not exist within HTML and their syntax transforms * into a bogus comment in the DOM. * * ## Design and limitations @@ -521,7 +521,7 @@ class WP_HTML_Tag_Processor { * - A TABLE start tag `<table>` implicitly closes any open `P` element. * * - In `QUIRKS_MODE`: - * - CSS class and ID selectors match match in an ASCII case-insensitive manner. + * - CSS class and ID selectors match in an ASCII case-insensitive manner. * - A TABLE start tag `<table>` opens a `TABLE` element as a child of a `P` * element if one is open. * @@ -614,12 +614,12 @@ class WP_HTML_Tag_Processor { * Example: * * <div id="test">... - * 012345678901234 - * - token length is 14 - 0 = 14 + * 0123456789012345 + * - token length is 15 - 0 = 15 * * a <!-- comment --> is a token. * 0123456789 123456789 123456789 - * - token length is 17 - 2 = 15 + * - token length is 18 - 2 = 16 * * @since 6.5.0 * @@ -926,8 +926,6 @@ public function next_tag( $query = null ): bool { * - a DOCTYPE declaration. * - a processing instruction, e.g. `<?xml version="1.0" ?>`. * - * The Tag Processor currently only supports the tag token. - * * @since 6.5.0 * @since 6.7.0 Recognizes CDATA sections within foreign content. * @@ -1073,7 +1071,7 @@ private function base_class_next_token(): bool { * * Preserve the opening tag pointers, as these will be overwritten * when finding the closing tag. They will be reset after finding - * the closing to tag to point to the opening of the special atomic + * the closing tag to point to the opening of the special atomic * tag sequence. */ $tag_name_starts_at = $this->tag_name_starts_at; @@ -1149,7 +1147,7 @@ private function base_class_next_token(): bool { * Example: * * $processor = new WP_HTML_Tag_Processor( '<input type="text" value="Th' ); - * false === $processor->get_next_tag(); + * false === $processor->next_tag(); * true === $processor->paused_at_incomplete_token(); * * @since 6.5.0 @@ -2525,7 +2523,7 @@ private function apply_attributes_updates( int $shift_this_point ): int { * replacement must be made before all others which follow it * at later string indices in the input document. * - * Sorting avoid making out-of-order replacements which + * Sorting avoids making out-of-order replacements which * can lead to mangled output, partially-duplicated * attributes, and overwritten attributes. */ @@ -3561,9 +3559,9 @@ public function get_full_comment_text(): ?string { * true === $processor->next_token(); // Text is "Apples & Oranges". * false === $processor->subdivide_text_appropriately(); * - * $processor = new WP_HTML_Tag_Processor( " \r\n\tMore" ); - * true === $processor->next_token(); // Text is "␤ ␤␉More". - * true === $processor->subdivide_text_appropriately(); // Text is "␤ ␤␉". + * $processor = new WP_HTML_Tag_Processor( " \r\n\tMore" ); + * true === $processor->next_token(); // Text is "␍ ␊␉More". + * true === $processor->subdivide_text_appropriately(); // Text is "␍ ␊␉". * true === $processor->next_token(); // Text is "More". * false === $processor->subdivide_text_appropriately(); * @@ -4941,7 +4939,7 @@ public function get_doctype_info(): ?WP_HTML_Doctype_Info { * </2> * * Funky comments are tag closers with invalid tag names. Note - * that in HTML these are turn into bogus comments. Nonetheless, + * that in HTML these are turned into bogus comments. Nonetheless, * the Tag Processor recognizes them in a stream of HTML and * exposes them for inspection and modification. * diff --git a/src/wp-includes/html-api/class-wp-html-token.php b/src/wp-includes/html-api/class-wp-html-token.php index d5e51ac29007f..d95f2934c5c78 100644 --- a/src/wp-includes/html-api/class-wp-html-token.php +++ b/src/wp-includes/html-api/class-wp-html-token.php @@ -29,7 +29,7 @@ class WP_HTML_Token { * * @since 6.4.0 * - * @var string + * @var string|null */ public $bookmark_name = null; diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php index a29e5ba863026..5afe37a010a41 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php @@ -261,7 +261,7 @@ public function test_unexpected_closing_tags_are_removed() { $this->assertSame( WP_HTML_Processor::normalize( 'one</div>two</span>three' ), 'onetwothree', - 'Should have removed unpected closing tags.' + 'Should have removed unexpected closing tags.' ); } diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessor.php b/tests/phpunit/tests/html-api/wpHtmlProcessor.php index a89014282df73..bb18629563493 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessor.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessor.php @@ -1071,11 +1071,11 @@ public function test_ensure_next_token_method_extensibility( $html, $expected_to * @ticket 62427 */ public function test_next_tag_lowercase_tag_name() { - // The upper case <DIV> is irrelevant but illustrates the case-insentivity. + // The upper case <DIV> is irrelevant but illustrates the case-insensitivity. $processor = WP_HTML_Processor::create_fragment( '<section><DIV>' ); $this->assertTrue( $processor->next_tag( array( 'tag_name' => 'div' ) ) ); - // The upper case <RECT> is irrelevant but illustrates the case-insentivity. + // The upper case <RECT> is irrelevant but illustrates the case-insensitivity. $processor = WP_HTML_Processor::create_fragment( '<svg><RECT>' ); $this->assertTrue( $processor->next_tag( array( 'tag_name' => 'rect' ) ) ); } diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessorBreadcrumbs.php b/tests/phpunit/tests/html-api/wpHtmlProcessorBreadcrumbs.php index 911fa8b910b37..b54fc047ab040 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessorBreadcrumbs.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessorBreadcrumbs.php @@ -49,7 +49,7 @@ public static function data_single_tag_of_supported_elements() { 'BASE', 'BDI', 'BDO', - 'BGSOUND', // Deprectated. + 'BGSOUND', // Deprecated. 'BIG', 'BLINK', // Deprecated. 'BR', diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessorComments.php b/tests/phpunit/tests/html-api/wpHtmlProcessorComments.php index 0cc4fdb0938fa..4ea17f2318b51 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessorComments.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessorComments.php @@ -41,8 +41,8 @@ public static function data_comments() { 'Invalid HTML comment !' => array( '<! Bang opener >', WP_HTML_Processor::COMMENT_AS_INVALID_HTML, ' Bang opener ' ), 'Invalid HTML comment ?' => array( '<? Question opener >', WP_HTML_Processor::COMMENT_AS_INVALID_HTML, ' Question opener ' ), 'CDATA comment' => array( '<![CDATA[ cdata body ]]>', WP_HTML_Processor::COMMENT_AS_CDATA_LOOKALIKE, ' cdata body ' ), - 'Processing instriction comment' => array( '<?pi-target Instruction body. ?>', WP_HTML_Processor::COMMENT_AS_PI_NODE_LOOKALIKE, ' Instruction body. ', 'pi-target' ), - 'Processing instriction php' => array( '<?php const HTML_COMMENT = true; ?>', WP_HTML_Processor::COMMENT_AS_PI_NODE_LOOKALIKE, ' const HTML_COMMENT = true; ', 'php' ), + 'Processing instruction comment' => array( '<?pi-target Instruction body. ?>', WP_HTML_Processor::COMMENT_AS_PI_NODE_LOOKALIKE, ' Instruction body. ', 'pi-target' ), + 'Processing instruction php' => array( '<?php const HTML_COMMENT = true; ?>', WP_HTML_Processor::COMMENT_AS_PI_NODE_LOOKALIKE, ' const HTML_COMMENT = true; ', 'php' ), ); } diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessorHtml5lib.php b/tests/phpunit/tests/html-api/wpHtmlProcessorHtml5lib.php index a03a9ab806a93..d87d784dbf2d4 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessorHtml5lib.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessorHtml5lib.php @@ -132,8 +132,8 @@ public function data_external_html5lib_tests() { /** * Determines whether a test case should be skipped. * - * @param string $test_name Test name. - * @param string $expected_tree Expected HTML tree structure. + * @param string|null $test_context_element Context element for fragment parsing, or null for full document parsing. + * @param string $test_name Test name. * * @return bool True if the test case should be skipped. False otherwise. */ @@ -338,12 +338,16 @@ static function ( $a, $b ) { } /** - * Convert a given Html5lib test file into a test triplet. + * Convert a given Html5lib test file into a series of test cases. * * @param string $filename Path to `.dat` file with test cases. * - * @return array|Generator Test triplets of HTML fragment context element, - * HTML, and the DOM structure it represents. + * @return Generator<int, array{ + * non-negative-int, // Line number. + * string|null, // HTML fragment context element. + * string, // HTML. + * string, // DOM structure it represents. + * }> Test cases. */ public static function parse_html5_dat_testfile( $filename ) { $handle = fopen( $filename, 'r', false ); diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessorSemanticRules.php b/tests/phpunit/tests/html-api/wpHtmlProcessorSemanticRules.php index ffc99ad58fd8e..da6d959eb75e0 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessorSemanticRules.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessorSemanticRules.php @@ -163,7 +163,7 @@ public function test_in_body_button_with_no_button_in_scope() { } /** - * Verifies what when inserting a BUTTON element, when a BUTTON is already in scope, + * Verifies that when inserting a BUTTON element, when a BUTTON is already in scope, * that the open button is closed with all other elements inside of it. * * @ticket 58961 @@ -195,7 +195,7 @@ public function test_in_body_button_with_button_in_scope_as_parent() { } /** - * Verifies what when inserting a BUTTON element, when a BUTTON is already in scope, + * Verifies that when inserting a BUTTON element, when a BUTTON is already in scope, * that the open button is closed with all other elements inside of it, even if the * BUTTON in scope is not a direct parent of the new BUTTON element. * diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessorSemanticRulesListElements.php b/tests/phpunit/tests/html-api/wpHtmlProcessorSemanticRulesListElements.php index 0c7e3422f09fc..e89896da2298e 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessorSemanticRulesListElements.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessorSemanticRulesListElements.php @@ -94,7 +94,7 @@ public function test_in_body_li_generates_implied_end_tags_inside_open_li_but_st $this->assertSame( array( 'HTML', 'BODY', 'LI', 'BLOCKQUOTE', 'LI' ), $processor->get_breadcrumbs(), - 'LI should have left the BLOCKQOUTE open, but closed it.' + 'LI should have left the BLOCKQUOTE open, but closed it.' ); } @@ -234,7 +234,7 @@ public function test_in_body_dd_generates_implied_end_tags_inside_open_dd_but_st $this->assertSame( array( 'HTML', 'BODY', 'DD', 'BLOCKQUOTE', 'DD' ), $processor->get_breadcrumbs(), - 'DD should have left the BLOCKQOUTE open, but closed it.' + 'DD should have left the BLOCKQUOTE open, but closed it.' ); } @@ -370,7 +370,7 @@ public function test_in_body_dt_generates_implied_end_tags_inside_open_dt_but_st $this->assertSame( array( 'HTML', 'BODY', 'DT', 'BLOCKQUOTE', 'DT' ), $processor->get_breadcrumbs(), - 'DT should have left the BLOCKQOUTE open, but closed it.' + 'DT should have left the BLOCKQUOTE open, but closed it.' ); } diff --git a/tests/phpunit/tests/html-api/wpHtmlTagProcessor-bookmark.php b/tests/phpunit/tests/html-api/wpHtmlTagProcessor-bookmark.php index 0e72f9d726835..beb4cc60f6d95 100644 --- a/tests/phpunit/tests/html-api/wpHtmlTagProcessor-bookmark.php +++ b/tests/phpunit/tests/html-api/wpHtmlTagProcessor-bookmark.php @@ -518,7 +518,7 @@ public function test_can_seek_after_document_ends( $html_with_target_element ) { */ public static function data_incomplete_html_with_target_nodes_for_seeking() { return array( - 'Compete document' => array( '<div><img target></div>' ), + 'Complete document' => array( '<div><img target></div>' ), 'Incomplete document' => array( '<div><img target></div' ), ); } diff --git a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php index 22ace3890f469..a066543d8e11f 100644 --- a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php +++ b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php @@ -886,11 +886,11 @@ public function test_attribute_ops_on_tag_closer_do_not_change_the_markup() { * $processor = new WP_HTML_Tag_Processor( '<div class="header"></div>' ); * $processor->next_tag(); * $processor->set_attribute('class', '" onclick="alert'); - * echo $p; + * echo $processor->get_updated_html(); * // <div class="" onclick="alert"></div> * ``` * - * To prevent it, `set_attribute` calls `esc_attr()` on its given values. + * To prevent it, `set_attribute` escapes dangerous characters (`"`, `'`, `<`, `>`, `&`) using HTML character references. * * ```php * <div class="" onclick="alert"></div> @@ -1523,11 +1523,11 @@ public function test_calling_remove_class_with_all_listed_class_names_removes_th $this->assertSame( '<div id="first"><span class="not-main bold with-border" id="second">Text</span></div>', $processor->get_updated_html(), - 'Updated HTML does not reflect class attribute removed via subesequent remove_class() calls' + 'Updated HTML does not reflect class attribute removed via subsequent remove_class() calls' ); $this->assertNull( $processor->get_attribute( 'class' ), - "get_attribute( 'class' ) did not return null for class attribute removed via subesequent remove_class() calls" + "get_attribute( 'class' ) did not return null for class attribute removed via subsequent remove_class() calls" ); } diff --git a/tests/phpunit/tests/html-api/wpHtmlTagProcessorModifiableText.php b/tests/phpunit/tests/html-api/wpHtmlTagProcessorModifiableText.php index f43d1fffaad0e..4a09403b7b23e 100644 --- a/tests/phpunit/tests/html-api/wpHtmlTagProcessorModifiableText.php +++ b/tests/phpunit/tests/html-api/wpHtmlTagProcessorModifiableText.php @@ -415,7 +415,7 @@ public function test_updates_basic_modifiable_text_on_supported_nodes( string $h $this->assertSame( $transformed, $processor->get_updated_html(), - "Should have transformed the HTML as expected why modifying the target node's modifiable text." + "Should have transformed the HTML as expected when modifying the target node's modifiable text." ); } From 58f02a0278b49f35436ecd14a73a9701f1a115ef Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 16 Jun 2026 16:03:20 +0000 Subject: [PATCH 206/327] Build/Test Tools: Output a list of discovered routes. The list of routes to be copied by the `copy:routes` Grunt task is configured dynamically by the `routes:setup` task, which parses the `gutenberg/build/routes/registry.php` file included in the built asset from the `gutenberg` repository. The task currently produces ouitput only when an error is encountered, such as a missing `registry.php` file or invalide route name. This adjusts the task to produce output so that the list of routes being processed is clear. See #65471. git-svn-id: https://develop.svn.wordpress.org/trunk@62508 602fd350-edb4-49c9-b593-d223f7449a82 --- Gruntfile.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Gruntfile.js b/Gruntfile.js index 815ccce3af535..2ce79d03bddc6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2154,6 +2154,14 @@ module.exports = function(grunt) { ]; } ) ) ); + + grunt.log.writeln( + 'Found ' + routeNames.length + ' route' + ( routeNames.length === 1 ? '' : 's' ) + + ' registered in ' + registryPath + ':' + ); + routeNames.forEach( function( name ) { + grunt.log.writeln( ' - ' + name ); + } ); } ); grunt.registerTask( 'build:gutenberg', [ From f0480f5a3f10afb358cdb4d980be641c299f7207 Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Tue, 16 Jun 2026 17:13:54 +0000 Subject: [PATCH 207/327] HTML API: Ensure tag processor recognizes SCRIPT tag closers. Address edge cases where SCRIPT tag closers were not detected and the processor remained paused on an incomplete token. Developed in https://github.com/WordPress/wordpress-develop/pull/12184. Props jonsurrell, dmsnell. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62509 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/html-api/class-wp-html-tag-processor.php | 1 - tests/phpunit/tests/html-api/wpHtmlTagProcessor.php | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/html-api/class-wp-html-tag-processor.php b/src/wp-includes/html-api/class-wp-html-tag-processor.php index fe8a20c1ea4ee..e41e1120550b5 100644 --- a/src/wp-includes/html-api/class-wp-html-tag-processor.php +++ b/src/wp-includes/html-api/class-wp-html-tag-processor.php @@ -1619,7 +1619,6 @@ private function skip_script_data(): bool { ( 'p' === $html[ $at + 4 ] || 'P' === $html[ $at + 4 ] ) && ( 't' === $html[ $at + 5 ] || 'T' === $html[ $at + 5 ] ) ) ) { - ++$at; continue; } diff --git a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php index a066543d8e11f..fd73ddc43a4ba 100644 --- a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php +++ b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php @@ -2116,6 +2116,8 @@ public static function data_script_tag(): Generator { yield 'Script tag with </script\f> close' => array( "<script></script\f>", true ); yield 'Script tag with </script\r> close' => array( "<script></script\r>", true ); yield 'Script with type attribute' => array( '<script type="text/javascript"></script>', true ); + yield 'Script text less-than' => array( '<script><</script>', true ); + yield 'Script text less-than solidus' => array( '<script></</script>', true ); yield 'Script data escaped' => array( '<script><!--</script>', true ); yield 'Script data double-escaped exit (comment)' => array( '<script><!--<script>--></script>', true ); yield 'Script data double-escaped exit (closed ">")' => array( '<script><!--<script></script></script>', true ); From f1b678063f291f88a25897db58dac7c3658a8e44 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 16 Jun 2026 18:20:55 +0000 Subject: [PATCH 208/327] Twenty Nineteen: Ensure only one PostCSS module is configured. The `postcss.config.js` file in Twenty Ninteen currently has two `module.exports` asignments configuring two plugins: `autoprefixer` (for ensuring browser-specific CSS nuances are accounted for) and `postcss-focus-within` (ensures `:fucs-within` rules are duplicated as `[focus-within]` attribute selectors). The first assignment is being ignored entirely, which means `autoprefixer` never runs against generated CSS files. This updates the `postcss.config.js` file to contain only one `modules.export` statement, which restores the behavior of `autoprefixer`. The dependencies related to browser usage statistics have also been updated, and the resulting changes to built CSS files subject to version control are also included: - Browser-specific prefixes for the `hyphens` property have been removed. - The `::-moz-selection` is no longer required for the `::selection` psuedo-element. - Brower-specific prefixes are no longer required for `min-content` and `max-content` values. - Webkit browsers no longer require a `-webkit-` prefix for `user-select: none`. - The `-webkit-` prefix is no longer required for the `filter` property. - The `text-decoration` property no longer requires browser prefixes. Fixes #65452. git-svn-id: https://develop.svn.wordpress.org/trunk@62510 602fd350-edb4-49c9-b593-d223f7449a82 --- .../themes/twentynineteen/package-lock.json | 29 +++++++------ .../themes/twentynineteen/postcss.config.js | 10 ++--- .../site/header/_site-featured-image.scss | 4 +- .../themes/twentynineteen/style-editor.css | 1 - .../themes/twentynineteen/style-rtl.css | 42 ++----------------- .../themes/twentynineteen/style.css | 42 ++----------------- 6 files changed, 28 insertions(+), 100 deletions(-) diff --git a/src/wp-content/themes/twentynineteen/package-lock.json b/src/wp-content/themes/twentynineteen/package-lock.json index 616dcc79f6dae..e573413168e38 100644 --- a/src/wp-content/themes/twentynineteen/package-lock.json +++ b/src/wp-content/themes/twentynineteen/package-lock.json @@ -311,13 +311,16 @@ "dev": true }, "node_modules/baseline-browser-mapping": { - "version": "2.8.25", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.25.tgz", - "integrity": "sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==", + "version": "2.10.35", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.35.tgz", + "integrity": "sha512-honAfLBde0HAFLdNyBEfuuENkF6zR+ozxqxa/2zJKHBe1qzLqyTSeRKpdPEHAP03rlDGyQOPnCSxnVpVqQo9Mg==", "dev": true, "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/binary-extensions": { @@ -483,9 +486,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001754", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", - "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", + "version": "1.0.30001799", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", + "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", "dev": true, "funding": [ { @@ -4118,9 +4121,9 @@ "dev": true }, "baseline-browser-mapping": { - "version": "2.8.25", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.25.tgz", - "integrity": "sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==", + "version": "2.10.35", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.35.tgz", + "integrity": "sha512-honAfLBde0HAFLdNyBEfuuENkF6zR+ozxqxa/2zJKHBe1qzLqyTSeRKpdPEHAP03rlDGyQOPnCSxnVpVqQo9Mg==", "dev": true }, "binary-extensions": { @@ -4238,9 +4241,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001754", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", - "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", + "version": "1.0.30001799", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", + "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", "dev": true }, "chalk": { diff --git a/src/wp-content/themes/twentynineteen/postcss.config.js b/src/wp-content/themes/twentynineteen/postcss.config.js index ff4a27544dc88..93fdeffe44d2f 100644 --- a/src/wp-content/themes/twentynineteen/postcss.config.js +++ b/src/wp-content/themes/twentynineteen/postcss.config.js @@ -1,15 +1,11 @@ var postcssFocusWithin = require('postcss-focus-within'); - -module.exports = { - plugins: { - autoprefixer: {} - } -}; +var autoprefixer = require('autoprefixer'); module.exports = { plugins: [ postcssFocusWithin({ disablePolyfillReadyClass: true - }) + }), + autoprefixer() ] }; diff --git a/src/wp-content/themes/twentynineteen/sass/site/header/_site-featured-image.scss b/src/wp-content/themes/twentynineteen/sass/site/header/_site-featured-image.scss index b46df6311d1f2..68aeb904cf036 100644 --- a/src/wp-content/themes/twentynineteen/sass/site/header/_site-featured-image.scss +++ b/src/wp-content/themes/twentynineteen/sass/site/header/_site-featured-image.scss @@ -60,9 +60,7 @@ .social-navigation svg, .site-featured-image svg { - /* Use -webkit- only if supporting: Chrome < 54, iOS < 9.3, Android < 4.4.4 */ - -webkit-filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.35) ); - filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.35) ); + filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.35) ); } /* Entry header */ diff --git a/src/wp-content/themes/twentynineteen/style-editor.css b/src/wp-content/themes/twentynineteen/style-editor.css index 3f4c8bd298a38..cd3ad211bb680 100644 --- a/src/wp-content/themes/twentynineteen/style-editor.css +++ b/src/wp-content/themes/twentynineteen/style-editor.css @@ -1482,7 +1482,6 @@ ul.wp-block-archives li ul, padding: 0.5rem; text-align: left; text-align: center; - -webkit-margin-start: 0; margin-inline-start: 0; } diff --git a/src/wp-content/themes/twentynineteen/style-rtl.css b/src/wp-content/themes/twentynineteen/style-rtl.css index 719f0f52fc7ad..7fa379ed02370 100644 --- a/src/wp-content/themes/twentynineteen/style-rtl.css +++ b/src/wp-content/themes/twentynineteen/style-rtl.css @@ -1955,7 +1955,8 @@ abbr[title] { /* 1 */ text-decoration: underline; /* 2 */ - text-decoration: underline dotted; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; /* 2 */ } @@ -2396,9 +2397,6 @@ h6 { .error-404 .page-title, .comments-title, blockquote { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; word-break: break-word; word-wrap: break-word; @@ -2407,9 +2405,6 @@ blockquote { /* Do not hyphenate entry title on tablet view and bigger. */ @media only screen and (min-width: 768px) { .entry-title { - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; hyphens: none; } } @@ -2480,10 +2475,6 @@ html { box-sizing: border-box; } -::-moz-selection { - background-color: #bfdcea; -} - ::selection { background-color: #bfdcea; } @@ -2920,8 +2911,6 @@ body.page .main-navigation { @media only screen and (min-width: 768px) { .main-navigation .sub-menu { width: auto; - min-width: -moz-max-content; - min-width: -webkit-max-content; min-width: max-content; } } @@ -3036,8 +3025,6 @@ body.page .main-navigation { top: auto; bottom: auto; height: auto; - min-width: -moz-max-content; - min-width: -webkit-max-content; min-width: max-content; transform: none; } @@ -3051,8 +3038,6 @@ body.page .main-navigation { top: auto; bottom: auto; height: auto; - min-width: -moz-max-content; - min-width: -webkit-max-content; min-width: max-content; transform: none; } @@ -3175,8 +3160,6 @@ body.page .main-navigation { top: auto; bottom: auto; height: auto; - min-width: -moz-max-content; - min-width: -webkit-max-content; min-width: max-content; transform: none; } @@ -3467,7 +3450,8 @@ body.page .main-navigation { .post-navigation .nav-links a .meta-nav { color: #767676; - user-select: none; + -webkit-user-select: none; + user-select: none; } .post-navigation .nav-links a .meta-nav:before, .post-navigation .nav-links a .meta-nav:after { @@ -3756,9 +3740,6 @@ body.page .main-navigation { .site-branding { color: #767676; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; position: relative; word-wrap: break-word; @@ -3957,8 +3938,6 @@ body.page .main-navigation { .site-header.featured-image .social-navigation svg, .site-header.featured-image .site-featured-image svg { - /* Use -webkit- only if supporting: Chrome < 54, iOS < 9.3, Android < 4.4.4 */ - -webkit-filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.35)); filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.35)); } @@ -4157,10 +4136,6 @@ body.page .main-navigation { } } -.site-header.featured-image ::-moz-selection { - background: rgba(255, 255, 255, 0.17); -} - .site-header.featured-image ::selection { background: rgba(255, 255, 255, 0.17); } @@ -4557,9 +4532,6 @@ body.page .main-navigation { } .comments-area { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; margin: calc(2 * 1rem) 1rem; word-wrap: break-word; @@ -5088,9 +5060,6 @@ body.page .main-navigation { } #colophon .widget-column .widget { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; width: 100%; word-wrap: break-word; @@ -5105,9 +5074,6 @@ body.page .main-navigation { #colophon .site-info { color: #767676; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; word-wrap: break-word; } diff --git a/src/wp-content/themes/twentynineteen/style.css b/src/wp-content/themes/twentynineteen/style.css index 22c57138ee73f..07abd805b7718 100644 --- a/src/wp-content/themes/twentynineteen/style.css +++ b/src/wp-content/themes/twentynineteen/style.css @@ -1955,7 +1955,8 @@ abbr[title] { /* 1 */ text-decoration: underline; /* 2 */ - text-decoration: underline dotted; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; /* 2 */ } @@ -2396,9 +2397,6 @@ h6 { .error-404 .page-title, .comments-title, blockquote { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; word-break: break-word; word-wrap: break-word; @@ -2407,9 +2405,6 @@ blockquote { /* Do not hyphenate entry title on tablet view and bigger. */ @media only screen and (min-width: 768px) { .entry-title { - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; hyphens: none; } } @@ -2480,10 +2475,6 @@ html { box-sizing: border-box; } -::-moz-selection { - background-color: #bfdcea; -} - ::selection { background-color: #bfdcea; } @@ -2920,8 +2911,6 @@ body.page .main-navigation { @media only screen and (min-width: 768px) { .main-navigation .sub-menu { width: auto; - min-width: -moz-max-content; - min-width: -webkit-max-content; min-width: max-content; } } @@ -3036,8 +3025,6 @@ body.page .main-navigation { top: auto; bottom: auto; height: auto; - min-width: -moz-max-content; - min-width: -webkit-max-content; min-width: max-content; transform: none; } @@ -3051,8 +3038,6 @@ body.page .main-navigation { top: auto; bottom: auto; height: auto; - min-width: -moz-max-content; - min-width: -webkit-max-content; min-width: max-content; transform: none; } @@ -3175,8 +3160,6 @@ body.page .main-navigation { top: auto; bottom: auto; height: auto; - min-width: -moz-max-content; - min-width: -webkit-max-content; min-width: max-content; transform: none; } @@ -3467,7 +3450,8 @@ body.page .main-navigation { .post-navigation .nav-links a .meta-nav { color: #767676; - user-select: none; + -webkit-user-select: none; + user-select: none; } .post-navigation .nav-links a .meta-nav:before, .post-navigation .nav-links a .meta-nav:after { @@ -3762,9 +3746,6 @@ body.page .main-navigation { .site-branding { color: #767676; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; position: relative; word-wrap: break-word; @@ -3963,8 +3944,6 @@ body.page .main-navigation { .site-header.featured-image .social-navigation svg, .site-header.featured-image .site-featured-image svg { - /* Use -webkit- only if supporting: Chrome < 54, iOS < 9.3, Android < 4.4.4 */ - -webkit-filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.35)); filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.35)); } @@ -4163,10 +4142,6 @@ body.page .main-navigation { } } -.site-header.featured-image ::-moz-selection { - background: rgba(255, 255, 255, 0.17); -} - .site-header.featured-image ::selection { background: rgba(255, 255, 255, 0.17); } @@ -4563,9 +4538,6 @@ body.page .main-navigation { } .comments-area { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; margin: calc(2 * 1rem) 1rem; word-wrap: break-word; @@ -5094,9 +5066,6 @@ body.page .main-navigation { } #colophon .widget-column .widget { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; width: 100%; word-wrap: break-word; @@ -5111,9 +5080,6 @@ body.page .main-navigation { #colophon .site-info { color: #767676; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; word-wrap: break-word; } From 8498c6f0e2bfd481b7453ef90672318142236988 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Tue, 16 Jun 2026 20:20:42 +0000 Subject: [PATCH 209/327] Comments: Remove `touchstart` event listeners from comment reply/cancel links. The `touchstart` event on comment reply and cancel links fired before the browser could distinguish a tap from a scroll gesture, causing the reply form to open unexpectedly during scrolling. Since touchscreen users tapping a link already generate a `click` event, the `touchstart` listeners are unnecessary. Prior to ~2015 a `touchstart` event may have been useful to eliminate a 300ms delay for event handlers on tap, but this is long obsolete. Developed in https://github.com/WordPress/wordpress-develop/pull/12168. Follow-up to r42360. Props edent, szandman, SergeyBiryukov, westonruter, afercia, peterwilsoncc, janpaulkleijn, madhazelnut, joostdevalk, pbearne, eherman24, Znuff. See #47510, #31590. Fixes #46713. git-svn-id: https://develop.svn.wordpress.org/trunk@62511 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/_enqueues/lib/comment-reply.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/js/_enqueues/lib/comment-reply.js b/src/js/_enqueues/lib/comment-reply.js index b916dc54d16de..fabd579f5afc2 100644 --- a/src/js/_enqueues/lib/comment-reply.js +++ b/src/js/_enqueues/lib/comment-reply.js @@ -93,8 +93,7 @@ window.addComment = ( function( window ) { return; } - cancelElement.addEventListener( 'touchstart', cancelEvent ); - cancelElement.addEventListener( 'click', cancelEvent ); + cancelElement.addEventListener( 'click', cancelEvent ); // Submit the comment form when the user types [Ctrl] or [Cmd] + [Enter]. var submitFormHandler = function( e ) { @@ -117,8 +116,7 @@ window.addComment = ( function( window ) { for ( var i = 0, l = links.length; i < l; i++ ) { element = links[i]; - element.addEventListener( 'touchstart', clickEvent ); - element.addEventListener( 'click', clickEvent ); + element.addEventListener( 'click', clickEvent ); } } From 7d24524b82e6cf09033a662d483a0d9d28401172 Mon Sep 17 00:00:00 2001 From: Peter Wilson <peterwilsoncc@git.wordpress.org> Date: Wed, 17 Jun 2026 01:16:24 +0000 Subject: [PATCH 210/327] Help/About: Restore image cache busting strings to 7.0. Reverts the update to cache busting strings in r62423 to restore them to `ver=7.0`. As the images will not change in WordPress 7.0.1 there is no need to deal with stale caches. Follow-up to r62423. Props peterwilsoncc, mukesh27, wildworks. See #65352. git-svn-id: https://develop.svn.wordpress.org/trunk@62512 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/contribute.php | 2 +- src/wp-admin/credits.php | 2 +- src/wp-admin/freedoms.php | 2 +- src/wp-admin/privacy.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/wp-admin/contribute.php b/src/wp-admin/contribute.php index e15a5db0e98df..4a6989adffa25 100644 --- a/src/wp-admin/contribute.php +++ b/src/wp-admin/contribute.php @@ -25,7 +25,7 @@ <div class="about__header"> <div class="about__header-image"> - <img src="<?php echo esc_url( admin_url( 'images/about-release-logo.svg?ver=7.0.1' ) ); ?>" alt="<?php echo esc_attr( $header_alt_text ); ?>" /> + <img src="<?php echo esc_url( admin_url( 'images/about-release-logo.svg?ver=7.0' ) ); ?>" alt="<?php echo esc_attr( $header_alt_text ); ?>" /> </div> <div class="about__header-title"> diff --git a/src/wp-admin/credits.php b/src/wp-admin/credits.php index 18a4d594137bb..960c334913474 100644 --- a/src/wp-admin/credits.php +++ b/src/wp-admin/credits.php @@ -28,7 +28,7 @@ <div class="about__header"> <div class="about__header-image"> - <img src="<?php echo esc_url( admin_url( 'images/about-release-logo.svg?ver=7.0.1' ) ); ?>" alt="<?php echo esc_attr( $header_alt_text ); ?>" /> + <img src="<?php echo esc_url( admin_url( 'images/about-release-logo.svg?ver=7.0' ) ); ?>" alt="<?php echo esc_attr( $header_alt_text ); ?>" /> </div> <div class="about__header-title"> diff --git a/src/wp-admin/freedoms.php b/src/wp-admin/freedoms.php index 7d74aadb0cca0..9646c4a400eeb 100644 --- a/src/wp-admin/freedoms.php +++ b/src/wp-admin/freedoms.php @@ -31,7 +31,7 @@ <div class="about__header"> <div class="about__header-image"> - <img src="<?php echo esc_url( admin_url( 'images/about-release-logo.svg?ver=7.0.1' ) ); ?>" alt="<?php echo esc_attr( $header_alt_text ); ?>" /> + <img src="<?php echo esc_url( admin_url( 'images/about-release-logo.svg?ver=7.0' ) ); ?>" alt="<?php echo esc_attr( $header_alt_text ); ?>" /> </div> <div class="about__header-title"> diff --git a/src/wp-admin/privacy.php b/src/wp-admin/privacy.php index 9ad4e789cdb29..1445e5b1ec2b4 100644 --- a/src/wp-admin/privacy.php +++ b/src/wp-admin/privacy.php @@ -25,7 +25,7 @@ <div class="about__header"> <div class="about__header-image"> - <img src="<?php echo esc_url( admin_url( 'images/about-release-logo.svg?ver=7.0.1' ) ); ?>" alt="<?php echo esc_attr( $header_alt_text ); ?>" /> + <img src="<?php echo esc_url( admin_url( 'images/about-release-logo.svg?ver=7.0' ) ); ?>" alt="<?php echo esc_attr( $header_alt_text ); ?>" /> </div> <div class="about__header-title"> From 6152d85efdf9ffd0e1ebd7fdeb02dde0b867a062 Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Wed, 17 Jun 2026 01:17:11 +0000 Subject: [PATCH 211/327] Editor: add support for aspect ratio and related controls in viewport states. Enables responsive aspect ratio, scale, width, height and min-height in Image, Featured image and Cover blocks. Props isabel_brison, ramonopoly. See #65164. git-svn-id: https://develop.svn.wordpress.org/trunk@62513 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/dimensions.php | 26 +++++- src/wp-includes/block-supports/states.php | 57 ++++++++++++- .../style-engine/class-wp-style-engine.php | 6 ++ tests/phpunit/tests/block-supports/states.php | 81 +++++++++++++++++++ .../wpRenderDimensionsSupport.php | 50 +++++++++++- .../tests/style-engine/styleEngine.php | 12 +-- 6 files changed, 218 insertions(+), 14 deletions(-) diff --git a/src/wp-includes/block-supports/dimensions.php b/src/wp-includes/block-supports/dimensions.php index aad482f31ff2f..381f7bc3fb8be 100644 --- a/src/wp-includes/block-supports/dimensions.php +++ b/src/wp-includes/block-supports/dimensions.php @@ -86,6 +86,25 @@ function wp_apply_dimensions_support( $block_type, $block_attributes ) { return $attributes; } +/** + * Checks whether an aspectRatio block-support value is explicitly set. + * + * @since 7.1.0 + * @access private + * + * @param mixed $aspect_ratio Aspect-ratio value. + * @return bool Whether the value is an explicit aspect ratio. + */ +function wp_is_explicit_aspect_ratio_value( $aspect_ratio ) { + if ( ! is_string( $aspect_ratio ) && ! is_numeric( $aspect_ratio ) ) { + return false; + } + + $aspect_ratio = strtolower( trim( (string) $aspect_ratio ) ); + + return '' !== $aspect_ratio && 'auto' !== $aspect_ratio; +} + /** * Renders server-side dimensions styles to the block wrapper. * This block support uses the `render_block` hook to ensure that @@ -113,11 +132,12 @@ function wp_render_dimensions_support( $block_content, $block ) { $dimensions_block_styles = array(); $dimensions_block_styles['aspectRatio'] = $block_attributes['style']['dimensions']['aspectRatio'] ?? null; - // To ensure the aspect ratio does not get overridden by `minHeight` unset any existing rule. + // To ensure the aspect ratio does not get overridden by `minHeight` or `height` unset any existing rule. if ( - isset( $dimensions_block_styles['aspectRatio'] ) + wp_is_explicit_aspect_ratio_value( $dimensions_block_styles['aspectRatio'] ) ) { $dimensions_block_styles['minHeight'] = 'unset'; + $dimensions_block_styles['height'] = 'unset'; } elseif ( isset( $block_attributes['style']['dimensions']['minHeight'] ) || isset( $block_attributes['minHeight'] ) @@ -149,7 +169,7 @@ function wp_render_dimensions_support( $block_content, $block ) { foreach ( explode( ' ', $styles['classnames'] ) as $class_name ) { if ( str_contains( $class_name, 'aspect-ratio' ) && - ! isset( $block_attributes['style']['dimensions']['aspectRatio'] ) + ! wp_is_explicit_aspect_ratio_value( $block_attributes['style']['dimensions']['aspectRatio'] ?? null ) ) { continue; } diff --git a/src/wp-includes/block-supports/states.php b/src/wp-includes/block-supports/states.php index 787a55b659814..d283dc2b4acf3 100644 --- a/src/wp-includes/block-supports/states.php +++ b/src/wp-includes/block-supports/states.php @@ -133,6 +133,56 @@ function wp_get_state_declarations_with_background_resets( $declarations ) { return $declarations; } +/** + * Adds fallback dimension styles for aspectRatio and height block-support values. + * + * @since 7.1.0 + * + * @param array $state_style State style object. + * @return array State style object with fallback dimension styles applied where needed. + */ +function wp_get_state_style_with_fallback_dimension_styles( $state_style ) { + if ( ! is_array( $state_style ) ) { + return $state_style; + } + + $dimensions = isset( $state_style['dimensions'] ) && is_array( $state_style['dimensions'] ) + ? $state_style['dimensions'] + : array(); + + if ( empty( $dimensions ) ) { + return $state_style; + } + + if ( wp_is_explicit_aspect_ratio_value( $dimensions['aspectRatio'] ?? null ) ) { + return array_replace_recursive( + $state_style, + array( + 'dimensions' => array( + 'minHeight' => 'unset', + 'height' => 'unset', + ), + ) + ); + } + + $has_min_height = isset( $dimensions['minHeight'] ) && ( is_string( $dimensions['minHeight'] ) || is_numeric( $dimensions['minHeight'] ) ) && '' !== trim( (string) $dimensions['minHeight'] ); + $has_height = isset( $dimensions['height'] ) && ( is_string( $dimensions['height'] ) || is_numeric( $dimensions['height'] ) ) && '' !== trim( (string) $dimensions['height'] ); + + if ( $has_min_height || $has_height ) { + return array_replace_recursive( + $state_style, + array( + 'dimensions' => array( + 'aspectRatio' => 'unset', + ), + ) + ); + } + + return $state_style; +} + /** * Adds a style fragment to a selector-keyed state style group. * @@ -267,8 +317,9 @@ function wp_get_block_state_style_rules( $state_styles, $block_type, $rules_grou } foreach ( wp_get_state_style_groups( $state_style, $block_selectors ) as $group ) { + $style = wp_get_state_style_with_fallback_dimension_styles( $group['style'] ); $compiled = wp_style_engine_get_styles( - wp_normalize_state_style_for_css_output( $group['style'] ) + wp_normalize_state_style_for_css_output( $style ) ); if ( ! empty( $compiled['declarations'] ) ) { @@ -490,8 +541,8 @@ function wp_render_block_states_support( $block_content, $block ) { */ $style_rules = array(); foreach ( $css_rules as $rule ) { - $declarations = array(); - foreach ( $rule['declarations'] as $property => $value ) { + $declarations = $rule['declarations']; + foreach ( $declarations as $property => $value ) { $declarations[ $property ] = is_string( $value ) && str_contains( $value, '!important' ) ? $value : $value . ' !important'; diff --git a/src/wp-includes/style-engine/class-wp-style-engine.php b/src/wp-includes/style-engine/class-wp-style-engine.php index be52699c642eb..ab29294576735 100644 --- a/src/wp-includes/style-engine/class-wp-style-engine.php +++ b/src/wp-includes/style-engine/class-wp-style-engine.php @@ -229,6 +229,12 @@ final class WP_Style_Engine { 'dimension' => '--wp--preset--dimension--$slug', ), ), + 'objectFit' => array( + 'property_keys' => array( + 'default' => 'object-fit', + ), + 'path' => array( 'dimensions', 'objectFit' ), + ), 'width' => array( 'property_keys' => array( 'default' => 'width', diff --git a/tests/phpunit/tests/block-supports/states.php b/tests/phpunit/tests/block-supports/states.php index 1d1e6da33408d..3c8fa6951d20d 100644 --- a/tests/phpunit/tests/block-supports/states.php +++ b/tests/phpunit/tests/block-supports/states.php @@ -223,6 +223,87 @@ public function test_no_background_reset_when_no_background_color() { $this->assertSame( $input, $actual ); } + /** + * Tests that fallback dimension styles are added for aspect ratio. + * + * @covers ::wp_get_state_style_with_fallback_dimension_styles + * + * @ticket 65239 + */ + public function test_adds_fallback_dimension_styles_for_aspect_ratio() { + $actual = wp_get_state_style_with_fallback_dimension_styles( + array( + 'dimensions' => array( + 'aspectRatio' => '16/9', + ), + ) + ); + + $this->assertSame( + array( + 'dimensions' => array( + 'aspectRatio' => '16/9', + 'minHeight' => 'unset', + 'height' => 'unset', + ), + ), + $actual + ); + } + + /** + * Tests that fallback dimension styles are not added for the default aspect ratio. + * + * @covers ::wp_get_state_style_with_fallback_dimension_styles + * + * @ticket 65239 + */ + public function test_does_not_add_fallback_dimension_styles_for_default_aspect_ratio() { + $actual = wp_get_state_style_with_fallback_dimension_styles( + array( + 'dimensions' => array( + 'aspectRatio' => 'auto', + ), + ) + ); + + $this->assertSame( + array( + 'dimensions' => array( + 'aspectRatio' => 'auto', + ), + ), + $actual + ); + } + + /** + * Tests that fallback aspectRatio styles are added for height. + * + * @covers ::wp_get_state_style_with_fallback_dimension_styles + * + * @ticket 65239 + */ + public function test_adds_fallback_aspect_ratio_style_for_height() { + $actual = wp_get_state_style_with_fallback_dimension_styles( + array( + 'dimensions' => array( + 'height' => '20rem', + ), + ) + ); + + $this->assertSame( + array( + 'dimensions' => array( + 'height' => '20rem', + 'aspectRatio' => 'unset', + ), + ), + $actual + ); + } + /** * Tests that modifier classes on the first compound selector are preserved * when state selectors are scoped to the block wrapper. diff --git a/tests/phpunit/tests/block-supports/wpRenderDimensionsSupport.php b/tests/phpunit/tests/block-supports/wpRenderDimensionsSupport.php index 3e2894c5538bf..7296ea4668b7b 100644 --- a/tests/phpunit/tests/block-supports/wpRenderDimensionsSupport.php +++ b/tests/phpunit/tests/block-supports/wpRenderDimensionsSupport.php @@ -121,7 +121,7 @@ public function test_dimensions_block_support( $theme_name, $block_name, $dimens */ public function data_dimensions_block_support() { return array( - 'aspect ratio style is applied, with min-height unset' => array( + 'aspect ratio style is applied, with min-height and height unset' => array( 'theme_name' => 'block-theme-child-with-fluid-typography', 'block_name' => 'test/dimensions-rules-are-output', 'dimensions_settings' => array( @@ -130,7 +130,7 @@ public function data_dimensions_block_support() { 'dimensions_style' => array( 'aspectRatio' => '16/9', ), - 'expected_wrapper' => '<div class="has-aspect-ratio" style="aspect-ratio:16/9;min-height:unset;">Content</div>', + 'expected_wrapper' => '<div class="has-aspect-ratio" style="aspect-ratio:16/9;height:unset;min-height:unset;">Content</div>', 'wrapper' => '<div>Content</div>', ), 'dimensions style is appended if a style attribute already exists' => array( @@ -142,7 +142,7 @@ public function data_dimensions_block_support() { 'dimensions_style' => array( 'aspectRatio' => '16/9', ), - 'expected_wrapper' => '<div class="wp-block-test has-aspect-ratio" style="color:red;aspect-ratio:16/9;min-height:unset;">Content</div>', + 'expected_wrapper' => '<div class="wp-block-test has-aspect-ratio" style="color:red;aspect-ratio:16/9;height:unset;min-height:unset;">Content</div>', 'wrapper' => '<div class="wp-block-test" style="color:red;">Content</div>', ), 'aspect ratio style is unset if block has min-height set' => array( @@ -171,4 +171,48 @@ public function data_dimensions_block_support() { ), ); } + + /** + * Tests that fallback height styles are not added for the default aspect ratio. + * + * @ticket 65239 + * + * @covers ::wp_render_dimensions_support + */ + public function test_default_aspect_ratio_does_not_unset_height_styles() { + $this->test_block_name = 'test/default-aspect-ratio-does-not-unset-height-styles'; + register_block_type( + $this->test_block_name, + array( + 'api_version' => 3, + 'attributes' => array( + 'style' => array( + 'type' => 'object', + ), + ), + 'supports' => array( + 'dimensions' => array( + 'aspectRatio' => true, + ), + ), + ) + ); + + $actual = wp_render_dimensions_support( + '<div class="wp-block-test">Hello</div>', + array( + 'blockName' => $this->test_block_name, + 'attrs' => array( + 'style' => array( + 'dimensions' => array( + 'aspectRatio' => 'auto', + ), + ), + ), + ) + ); + + $this->assertStringNotContainsString( 'height:unset', $actual ); + $this->assertStringNotContainsString( 'min-height:unset', $actual ); + } } diff --git a/tests/phpunit/tests/style-engine/styleEngine.php b/tests/phpunit/tests/style-engine/styleEngine.php index f6e0444faf74b..0a0f12b47e968 100644 --- a/tests/phpunit/tests/style-engine/styleEngine.php +++ b/tests/phpunit/tests/style-engine/styleEngine.php @@ -122,16 +122,18 @@ public function data_wp_style_engine_get_styles() { 'inline_valid_dimension_preset_style' => array( 'block_styles' => array( 'dimensions' => array( - 'width' => 'var:preset|dimension|large', - 'height' => 'var:preset|dimension|modestly-small', + 'width' => 'var:preset|dimension|large', + 'height' => 'var:preset|dimension|modestly-small', + 'objectFit' => 'cover', ), ), 'options' => null, 'expected_output' => array( - 'css' => 'height:var(--wp--preset--dimension--modestly-small);width:var(--wp--preset--dimension--large);', + 'css' => 'height:var(--wp--preset--dimension--modestly-small);object-fit:cover;width:var(--wp--preset--dimension--large);', 'declarations' => array( - 'height' => 'var(--wp--preset--dimension--modestly-small)', - 'width' => 'var(--wp--preset--dimension--large)', + 'height' => 'var(--wp--preset--dimension--modestly-small)', + 'object-fit' => 'cover', + 'width' => 'var(--wp--preset--dimension--large)', ), ), ), From 1caffb527744a65090bdd546bee3d7f27d2ed332 Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Wed, 17 Jun 2026 03:37:58 +0000 Subject: [PATCH 212/327] Editor: fix responsive element styles front end output. Outputs viewport-specific state styles for elements such as Link or Heading that are part of a block. Props isabel_brison, ramonopoly. Fixes #65164. git-svn-id: https://develop.svn.wordpress.org/trunk@62514 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/states.php | 156 ++++++++++++++++-- tests/phpunit/tests/block-supports/states.php | 43 +++++ 2 files changed, 185 insertions(+), 14 deletions(-) diff --git a/src/wp-includes/block-supports/states.php b/src/wp-includes/block-supports/states.php index d283dc2b4acf3..82f6b43a9b2a6 100644 --- a/src/wp-includes/block-supports/states.php +++ b/src/wp-includes/block-supports/states.php @@ -295,6 +295,91 @@ function wp_get_root_state_style( $state_style, $nested_keys ) { return $root_style; } +/** + * Generates all element selectors for a block root selector. + * + * @since 7.1.0 + * + * @param string $root_selector The block root CSS selector. + * @return string[] Element selectors keyed by element name. + */ +function wp_get_block_state_element_selectors( $root_selector ) { + if ( ! is_string( $root_selector ) || '' === trim( $root_selector ) ) { + return array(); + } + + $block_selectors = wp_split_selector_list( $root_selector ); + $element_selectors = array(); + + foreach ( WP_Theme_JSON::ELEMENTS as $element_name => $element_selector ) { + $selectors = array(); + + foreach ( $block_selectors as $block_selector ) { + $block_selector = trim( $block_selector ); + if ( '' === $block_selector ) { + continue; + } + + if ( $block_selector === $element_selector ) { + $selectors = array( $element_selector ); + break; + } + + $selector_prefix = "$block_selector "; + if ( ! str_contains( $element_selector, ',' ) ) { + $selectors[] = $selector_prefix . $element_selector; + continue; + } + + $prepended_selectors = array(); + foreach ( wp_split_selector_list( $element_selector ) as $selector ) { + $prepended_selectors[] = $selector_prefix . $selector; + } + $selectors[] = implode( ',', $prepended_selectors ); + } + + if ( ! empty( $selectors ) ) { + $element_selectors[ $element_name ] = implode( ',', $selectors ); + } + } + + return $element_selectors; +} + +/** + * Adds a compiled state style rule to a rule list. + * + * @since 7.1.0 + * + * @param array $css_rules Style rules. + * @param string $state Pseudo-state selector. + * @param string|null $selector Block, feature, or element selector. + * @param array $style Style object. + * @param string|null $rules_group Optional CSS grouping rule, e.g. a media query. + */ +function wp_add_block_state_style_rule( &$css_rules, $state, $selector, $style, $rules_group = null ) { + if ( empty( $style ) || ! is_array( $style ) ) { + return; + } + + $compiled = wp_style_engine_get_styles( + wp_normalize_state_style_for_css_output( $style ) + ); + + if ( empty( $compiled['declarations'] ) ) { + return; + } + + $css_rules[] = array( + 'state' => $state, + 'selector' => $selector, + 'declarations' => $compiled['declarations'], + ); + if ( ! empty( $rules_group ) ) { + $css_rules[ count( $css_rules ) - 1 ]['rules_group'] = $rules_group; + } +} + /** * Builds compiled state style rules, preserving the selector each rule targets. * @@ -317,21 +402,13 @@ function wp_get_block_state_style_rules( $state_styles, $block_type, $rules_grou } foreach ( wp_get_state_style_groups( $state_style, $block_selectors ) as $group ) { - $style = wp_get_state_style_with_fallback_dimension_styles( $group['style'] ); - $compiled = wp_style_engine_get_styles( - wp_normalize_state_style_for_css_output( $style ) + wp_add_block_state_style_rule( + $css_rules, + $state, + $group['selector'], + $group['style'], + $rules_group ); - - if ( ! empty( $compiled['declarations'] ) ) { - $css_rules[] = array( - 'state' => $state, - 'selector' => $group['selector'], - 'declarations' => $compiled['declarations'], - ); - if ( ! empty( $rules_group ) ) { - $css_rules[ count( $css_rules ) - 1 ]['rules_group'] = $rules_group; - } - } } } @@ -503,6 +580,57 @@ function wp_render_block_states_support( $block_content, $block ) { ); } + if ( + ! empty( $style[ $breakpoint ]['elements'] ) && + is_array( $style[ $breakpoint ]['elements'] ) + ) { + $element_selectors = wp_get_block_state_element_selectors( + wp_get_block_css_selector( $block_type ) + ); + + foreach ( $style[ $breakpoint ]['elements'] as $element_name => $element_style ) { + if ( + empty( $element_style ) || + ! is_array( $element_style ) || + empty( $element_selectors[ $element_name ] ) + ) { + continue; + } + + $element_pseudo_states = WP_Theme_JSON::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] + ?? array(); + $root_element_style = wp_get_root_state_style( + $element_style, + $element_pseudo_states + ); + + wp_add_block_state_style_rule( + $css_rules, + '', + $element_selectors[ $element_name ], + $root_element_style, + $media_query + ); + + foreach ( $element_pseudo_states as $pseudo_state ) { + if ( + empty( $element_style[ $pseudo_state ] ) || + ! is_array( $element_style[ $pseudo_state ] ) + ) { + continue; + } + + wp_add_block_state_style_rule( + $css_rules, + $pseudo_state, + $element_selectors[ $element_name ], + $element_style[ $pseudo_state ], + $media_query + ); + } + } + } + foreach ( $supported_pseudo_states as $pseudo_state ) { if ( empty( $style[ $breakpoint ][ $pseudo_state ] ) || ! is_array( $style[ $breakpoint ][ $pseudo_state ] ) ) { continue; diff --git a/tests/phpunit/tests/block-supports/states.php b/tests/phpunit/tests/block-supports/states.php index 3c8fa6951d20d..122c1c3ea5fcf 100644 --- a/tests/phpunit/tests/block-supports/states.php +++ b/tests/phpunit/tests/block-supports/states.php @@ -964,6 +964,49 @@ public function test_responsive_root_state_generates_media_query_scoped_css() { ); } + /** + * Tests that a responsive element color generates media-query scoped CSS. + * + * @covers ::wp_render_block_states_support + * + * @ticket 65164 + */ + public function test_responsive_element_color_generates_media_query_scoped_css() { + $this->ensure_block_registered( 'core/group' ); + + $block_content = '<div class="wp-block-group"><p><a href="#">Link</a></p></div>'; + $block = array( + 'blockName' => 'core/group', + 'attrs' => array( + 'style' => array( + 'mobile' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => '#00ff00', + ), + ), + ), + ), + ), + ), + ); + + $actual = wp_render_block_states_support( $block_content, $block ); + + $this->assertMatchesRegularExpression( + '/^<div class="wp-block-group (wp-states-[a-f0-9]{8})"><p><a href="#">Link<\/a><\/p><\/div>$/', + $actual + ); + preg_match( '/wp-states-[a-f0-9]{8}/', $actual, $matches ); + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + $this->assertStringContainsString( + '@media (width <= 480px){.' . $matches[0] . ' a:where(:not(.wp-element-button)){color:#00ff00 !important;}}', + $actual_stylesheet + ); + } + /** * Tests that a responsive pseudo-state generates media-query scoped CSS. * From 46f8f73aad2dc5e603f9b71811e945f9ee1fd96a Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Wed, 17 Jun 2026 10:34:52 +0000 Subject: [PATCH 213/327] Icons: Enforce strict name validation in the register method. Reject icon names that use uppercase letters, that lack a namespace prefix, or that have already been registered. Add tests covering these cases. Props im3dabasia1, mukesh27, wildworks. See #64847. git-svn-id: https://develop.svn.wordpress.org/trunk@62515 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-icons-registry.php | 28 +++++ tests/phpunit/tests/icons/wpIconsRegistry.php | 110 ++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 tests/phpunit/tests/icons/wpIconsRegistry.php diff --git a/src/wp-includes/class-wp-icons-registry.php b/src/wp-includes/class-wp-icons-registry.php index f82739fc5d91d..b096610c1b04f 100644 --- a/src/wp-includes/class-wp-icons-registry.php +++ b/src/wp-includes/class-wp-icons-registry.php @@ -115,6 +115,34 @@ protected function register( $icon_name, $icon_properties ) { return false; } + if ( preg_match( '/[A-Z]/', $icon_name ) ) { + _doing_it_wrong( + __METHOD__, + __( 'Icon names must not contain uppercase characters.' ), + '7.1.0' + ); + return false; + } + + $name_matcher = '/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/'; + if ( ! preg_match( $name_matcher, $icon_name ) ) { + _doing_it_wrong( + __METHOD__, + __( 'Icon names must contain a namespace prefix. Example: my-plugin/my-custom-icon' ), + '7.1.0' + ); + return false; + } + + if ( $this->is_registered( $icon_name ) ) { + _doing_it_wrong( + __METHOD__, + __( 'Icon is already registered.' ), + '7.1.0' + ); + return false; + } + $allowed_keys = array_fill_keys( array( 'label', 'content', 'filePath' ), 1 ); foreach ( array_keys( $icon_properties ) as $key ) { if ( ! array_key_exists( $key, $allowed_keys ) ) { diff --git a/tests/phpunit/tests/icons/wpIconsRegistry.php b/tests/phpunit/tests/icons/wpIconsRegistry.php new file mode 100644 index 0000000000000..fba2eacde43f5 --- /dev/null +++ b/tests/phpunit/tests/icons/wpIconsRegistry.php @@ -0,0 +1,110 @@ +<?php +/** + * Tests for WP_Icons_Registry::register(). + * + * @package WordPress + * @subpackage Icons + * + * @group icons + * @covers WP_Icons_Registry::register + * @covers WP_Icons_Registry::is_registered + */ +class Tests_Icons_WpIconsRegistry extends WP_UnitTestCase { + + /** + * Registry instance for testing. + * + * @var WP_Icons_Registry + */ + private $registry; + + public function set_up() { + parent::set_up(); + $this->registry = WP_Icons_Registry::get_instance(); + } + + public function tear_down() { + $instance_property = new ReflectionProperty( WP_Icons_Registry::class, 'instance' ); + + if ( PHP_VERSION_ID < 80100 ) { + $instance_property->setAccessible( true ); + } + + $instance_property->setValue( null, null ); + + $this->registry = null; + parent::tear_down(); + } + + /** + * Invokes WP_Icons_Registry::register despite it being private + * + * @param string $icon_name Icon name including namespace. + * @param array $icon_properties Icon properties (label, content, filePath). + * @return bool True if the icon was registered successfully. + */ + private function register( $icon_name, $icon_properties ) { + $method = new ReflectionMethod( $this->registry, 'register' ); + + if ( PHP_VERSION_ID < 80100 ) { + $method->setAccessible( true ); + } + + return $method->invoke( $this->registry, $icon_name, $icon_properties ); + } + + /** + * Provides invalid icon names. + * + * @return array[] + */ + public function data_invalid_icon_names() { + return array( + 'non-string name' => array( 1 ), + 'no namespace' => array( 'plus' ), + 'uppercase characters' => array( 'Test/Plus' ), + 'invalid characters' => array( 'test/_doing_it_wrong' ), + ); + } + + /** + * Should fail to re-register the same icon. + * + * @ticket 64847 + * + * @expectedIncorrectUsage WP_Icons_Registry::register + */ + public function test_register_icon_twice() { + $name = 'test-plugin/duplicate'; + $settings = array( + 'label' => 'Icon', + 'content' => '<svg></svg>', + ); + + $result = $this->register( $name, $settings ); + $this->assertTrue( $result ); + $result2 = $this->register( $name, $settings ); + $this->assertFalse( $result2 ); + } + + + /** + * Should fail to register icon with invalid names. + * + * @ticket 64847 + * + * @dataProvider data_invalid_icon_names + * @expectedIncorrectUsage WP_Icons_Registry::register + * + * @param mixed $icon_name Icon name to register. + */ + public function test_register_invalid_name( $icon_name ) { + $settings = array( + 'label' => 'Icon', + 'content' => '<svg></svg>', + ); + + $result = $this->register( $icon_name, $settings ); + $this->assertFalse( $result ); + } +} From 86a7239abaa4ff72ab9642be75f7c721da21fa50 Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Wed, 17 Jun 2026 10:56:19 +0000 Subject: [PATCH 214/327] Admin Reskin: Fix interactive control heights on mobile. Give interactive elements a consistent 40px height in the admin mobile viewport on the Add Plugins, Media Library grid, Settings > General, and Add Themes screens. Follow-up to [61645]. Props abcd95, wildworks. Fixes #64999. git-svn-id: https://develop.svn.wordpress.org/trunk@62516 602fd350-edb4-49c9-b593-d223f7449a82 --- .../media/views/button/select-mode-toggle.js | 2 +- src/wp-admin/css/common.css | 11 +++++ src/wp-admin/css/forms.css | 4 +- src/wp-admin/css/list-tables.css | 7 --- src/wp-admin/css/media.css | 19 +++++++- src/wp-admin/css/themes.css | 5 +-- .../includes/class-wp-media-list-table.php | 4 +- src/wp-admin/includes/plugin-install.php | 16 +++---- src/wp-admin/theme-install.php | 34 +++++++------- src/wp-admin/themes.php | 44 +++++++++---------- 10 files changed, 84 insertions(+), 62 deletions(-) diff --git a/src/js/media/views/button/select-mode-toggle.js b/src/js/media/views/button/select-mode-toggle.js index 2c2335bcd56f6..858c0e16cb2e4 100644 --- a/src/js/media/views/button/select-mode-toggle.js +++ b/src/js/media/views/button/select-mode-toggle.js @@ -40,7 +40,7 @@ SelectModeToggle = Button.extend(/** @lends wp.media.view.SelectModeToggle.proto render: function() { Button.prototype.render.apply( this, arguments ); - this.$el.addClass( 'select-mode-toggle-button' ); + this.$el.addClass( 'select-mode-toggle-button button-compact' ); return this; }, diff --git a/src/wp-admin/css/common.css b/src/wp-admin/css/common.css index 63e960b482c00..f48b8048c76e5 100644 --- a/src/wp-admin/css/common.css +++ b/src/wp-admin/css/common.css @@ -1417,6 +1417,17 @@ th.action-links { padding: 0; width: 50%; } + + .wp-filter .search-form input[type="search"] { + min-height: 40px; + padding: 0 12px; + } + + .wp-filter .search-form select, + .wp-filter .filter-items select { + min-height: 40px; + padding: 0 24px 0 12px; + } } @media only screen and (max-width: 320px) { diff --git a/src/wp-admin/css/forms.css b/src/wp-admin/css/forms.css index f2e5f9dcc5b53..c17d038c5d2c6 100644 --- a/src/wp-admin/css/forms.css +++ b/src/wp-admin/css/forms.css @@ -1798,9 +1798,10 @@ table.form-table td .updated p { p.search-box input[type="search"], p.search-box input[type="text"] { min-height: 40px; + padding: 0 12px; } - p.search-box input[type="submit"] { + p.search-box input[type="submit"].button { margin-bottom: 10px; } @@ -1944,6 +1945,7 @@ table.form-table td .updated p { .options-general-php input[type="text"].small-text { max-width: 6.25em; margin: 0; + min-height: 40px; } /* Privacy Policy settings screen */ diff --git a/src/wp-admin/css/list-tables.css b/src/wp-admin/css/list-tables.css index 56d88d6801ddb..4eaa682127cc0 100644 --- a/src/wp-admin/css/list-tables.css +++ b/src/wp-admin/css/list-tables.css @@ -1537,13 +1537,6 @@ div.action-links, margin: 0; /* Override existing margins */ } -/* Use compact size for space-constrained plugin cards */ -.plugin-action-buttons li .button { - min-height: 32px; - line-height: 2.30769231; /* 30px for 32px min-height */ - padding: 0 12px; -} - .plugin-card h3 { margin: 0 12px 16px 0; font-size: 18px; diff --git a/src/wp-admin/css/media.css b/src/wp-admin/css/media.css index 805868a286304..5a169cfde9e01 100644 --- a/src/wp-admin/css/media.css +++ b/src/wp-admin/css/media.css @@ -374,6 +374,10 @@ .find-box-inside { bottom: 57px; } + + #delete_all { + margin-bottom: 0; + } } @media screen and (max-width: 660px) { @@ -1396,7 +1400,6 @@ audio, video { .wp-filter p.search-box { float: none; width: 100%; - margin-bottom: 20px; display: flex; flex-wrap: nowrap; column-gap: 0; @@ -1413,6 +1416,20 @@ audio, video { top: 46px; right: 10px; } + + .media-frame.mode-grid .media-toolbar select { + min-height: 40px; + padding: 0 24px 0 12px; + } + + .media-frame.mode-grid .media-toolbar input[type="search"] { + min-height: 40px; + padding: 0 12px; + } + + .wp-filter p.search-box { + margin-bottom: 0; + } } @media only screen and (max-width: 600px) { diff --git a/src/wp-admin/css/themes.css b/src/wp-admin/css/themes.css index 4a644974c50c4..e7eadd7f6941d 100644 --- a/src/wp-admin/css/themes.css +++ b/src/wp-admin/css/themes.css @@ -119,9 +119,6 @@ body.js .theme-browser.search-loading { .theme-browser .theme .theme-actions .button { float: none; margin-left: 3px; - min-height: 32px; - line-height: 2.30769231; /* 30px for 32px min-height */ - padding: 0 12px; } .theme-browser .theme .theme-actions .button.updated-message::before, @@ -1968,6 +1965,8 @@ body.full-overlay-active { .theme-install-overlay .wp-full-overlay-header .button { float: right; margin: 7px 10px 0 0; /* Vertically center 32px button in 45px header */ + min-height: 32px; + line-height: 2.30769231; /* 30px for 32px height with 13px font */ } .theme-install-overlay .wp-full-overlay-sidebar { diff --git a/src/wp-admin/includes/class-wp-media-list-table.php b/src/wp-admin/includes/class-wp-media-list-table.php index 572dc154de639..152ca94c6800d 100644 --- a/src/wp-admin/includes/class-wp-media-list-table.php +++ b/src/wp-admin/includes/class-wp-media-list-table.php @@ -247,7 +247,7 @@ protected function extra_tablenav( $which ) { if ( $this->is_trash && $this->has_items() && current_user_can( 'edit_others_posts' ) ) { - submit_button( __( 'Empty Trash' ), 'apply', 'delete_all', false ); + submit_button( __( 'Empty Trash' ), 'apply button-compact', 'delete_all', false ); } ?> </div> @@ -351,7 +351,7 @@ public function views() { ?> </label> <input type="search" id="media-search-input" class="search" name="s" value="<?php _admin_search_query(); ?>"> - <input id="search-submit" type="submit" class="button" value="<?php esc_attr_e( 'Search Media' ); ?>"> + <input id="search-submit" type="submit" class="button button-compact" value="<?php esc_attr_e( 'Search Media' ); ?>"> </p> </div> </div> diff --git a/src/wp-admin/includes/plugin-install.php b/src/wp-admin/includes/plugin-install.php index 7607b8823bb99..6b1a615a57ab8 100644 --- a/src/wp-admin/includes/plugin-install.php +++ b/src/wp-admin/includes/plugin-install.php @@ -940,7 +940,7 @@ function wp_get_plugin_action_button( $name, $data, $compatible_php, $compatible if ( $status['url'] ) { if ( $compatible_php && $compatible_wp && $all_plugin_dependencies_installed && ! empty( $data->download_link ) ) { $button = sprintf( - '<a class="install-now button" data-slug="%s" href="%s" aria-label="%s" data-name="%s" role="button">%s</a>', + '<a class="install-now button button-compact" data-slug="%s" href="%s" aria-label="%s" data-name="%s" role="button">%s</a>', esc_attr( $data->slug ), esc_url( $status['url'] ), /* translators: %s: Plugin name and version. */ @@ -950,7 +950,7 @@ function wp_get_plugin_action_button( $name, $data, $compatible_php, $compatible ); } else { $button = sprintf( - '<button type="button" class="install-now button button-disabled" disabled="disabled">%s</button>', + '<button type="button" class="install-now button button-compact button-disabled" disabled="disabled">%s</button>', _x( 'Install Now', 'plugin' ) ); } @@ -961,7 +961,7 @@ function wp_get_plugin_action_button( $name, $data, $compatible_php, $compatible if ( $status['url'] ) { if ( $compatible_php && $compatible_wp ) { $button = sprintf( - '<a class="update-now button aria-button-if-js" data-plugin="%s" data-slug="%s" href="%s" aria-label="%s" data-name="%s" role="button">%s</a>', + '<a class="update-now button button-compact aria-button-if-js" data-plugin="%s" data-slug="%s" href="%s" aria-label="%s" data-name="%s" role="button">%s</a>', esc_attr( $status['file'] ), esc_attr( $data->slug ), esc_url( $status['url'] ), @@ -972,7 +972,7 @@ function wp_get_plugin_action_button( $name, $data, $compatible_php, $compatible ); } else { $button = sprintf( - '<button type="button" class="button button-disabled" disabled="disabled">%s</button>', + '<button type="button" class="button button-compact button-disabled" disabled="disabled">%s</button>', _x( 'Update Now', 'plugin' ) ); } @@ -983,7 +983,7 @@ function wp_get_plugin_action_button( $name, $data, $compatible_php, $compatible case 'newer_installed': if ( is_plugin_active( $status['file'] ) ) { $button = sprintf( - '<button type="button" class="button button-disabled" disabled="disabled">%s</button>', + '<button type="button" class="button button-compact button-disabled" disabled="disabled">%s</button>', _x( 'Active', 'plugin' ) ); } elseif ( current_user_can( 'activate_plugin', $status['file'] ) ) { @@ -1008,7 +1008,7 @@ function wp_get_plugin_action_button( $name, $data, $compatible_php, $compatible } $button = sprintf( - '<a href="%1$s" data-name="%2$s" data-slug="%3$s" data-plugin="%4$s" class="button button-primary activate-now" aria-label="%5$s" role="button">%6$s</a>', + '<a href="%1$s" data-name="%2$s" data-slug="%3$s" data-plugin="%4$s" class="button button-compact button-primary activate-now" aria-label="%5$s" role="button">%6$s</a>', esc_url( $activate_url ), esc_attr( $name ), esc_attr( $data->slug ), @@ -1018,13 +1018,13 @@ function wp_get_plugin_action_button( $name, $data, $compatible_php, $compatible ); } else { $button = sprintf( - '<button type="button" class="button button-disabled" disabled="disabled">%s</button>', + '<button type="button" class="button button-compact button-disabled" disabled="disabled">%s</button>', is_network_admin() ? _x( 'Network Activate', 'plugin' ) : _x( 'Activate', 'plugin' ) ); } } else { $button = sprintf( - '<button type="button" class="button button-disabled" disabled="disabled">%s</button>', + '<button type="button" class="button button-compact button-disabled" disabled="disabled">%s</button>', _x( 'Installed', 'plugin' ) ); } diff --git a/src/wp-admin/theme-install.php b/src/wp-admin/theme-install.php index 5723f8e6244cc..fc24334abff85 100644 --- a/src/wp-admin/theme-install.php +++ b/src/wp-admin/theme-install.php @@ -408,21 +408,21 @@ ?> <# if ( data.activate_url ) { #> <# if ( ! data.active ) { #> - <a class="button button-primary activate" href="{{ data.activate_url }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Activate' ); ?></a> + <a class="button button-primary button-compact activate" href="{{ data.activate_url }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Activate' ); ?></a> <# } else { #> - <button class="button button-primary disabled"><?php _ex( 'Activated', 'theme' ); ?></button> + <button class="button button-primary button-compact disabled"><?php _ex( 'Activated', 'theme' ); ?></button> <# } #> <# } #> <# if ( data.customize_url ) { #> <# if ( ! data.active ) { #> <# if ( ! data.block_theme ) { #> - <a class="button load-customize" href="{{ data.customize_url }}"><?php _e( 'Live Preview' ); ?></a> + <a class="button button-compact load-customize" href="{{ data.customize_url }}"><?php _e( 'Live Preview' ); ?></a> <# } #> <# } else { #> - <a class="button load-customize" href="{{ data.customize_url }}"><?php _e( 'Customize' ); ?></a> + <a class="button button-compact load-customize" href="{{ data.customize_url }}"><?php _e( 'Customize' ); ?></a> <# } #> <# } else { #> - <button class="button preview install-theme-preview"><?php echo esc_html_x( 'Preview', 'verb' ); ?></button> + <button class="button button-compact preview install-theme-preview"><?php echo esc_html_x( 'Preview', 'verb' ); ?></button> <# } #> <# } else { #> <?php @@ -430,12 +430,12 @@ $aria_label = sprintf( _x( 'Cannot Activate %s', 'theme' ), '{{ data.name }}' ); ?> <# if ( data.activate_url ) { #> - <a class="button button-primary disabled" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _ex( 'Cannot Activate', 'theme' ); ?></a> + <a class="button button-primary button-compact disabled" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _ex( 'Cannot Activate', 'theme' ); ?></a> <# } #> <# if ( data.customize_url ) { #> - <a class="button disabled"><?php _e( 'Live Preview' ); ?></a> + <a class="button button-compact disabled"><?php _e( 'Live Preview' ); ?></a> <# } else { #> - <button class="button disabled"><?php echo esc_html_x( 'Preview', 'verb' ); ?></button> + <button class="button button-compact disabled"><?php echo esc_html_x( 'Preview', 'verb' ); ?></button> <# } #> <# } #> <# } else { #> @@ -444,15 +444,15 @@ /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Install %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary theme-install" data-name="{{ data.name }}" data-slug="{{ data.id }}" href="{{ data.install_url }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Install' ); ?></a> - <button class="button preview install-theme-preview"><?php echo esc_html_x( 'Preview', 'verb' ); ?></button> + <a class="button button-primary button-compact theme-install" data-name="{{ data.name }}" data-slug="{{ data.id }}" href="{{ data.install_url }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Install' ); ?></a> + <button class="button button-compact preview install-theme-preview"><?php echo esc_html_x( 'Preview', 'verb' ); ?></button> <# } else { #> <?php /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Cannot Install %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary disabled" data-name="{{ data.name }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _ex( 'Cannot Install', 'theme' ); ?></a> - <button class="button disabled"><?php echo esc_html_x( 'Preview', 'verb' ); ?></button> + <a class="button button-primary button-compact disabled" data-name="{{ data.name }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _ex( 'Cannot Install', 'theme' ); ?></a> + <button class="button button-compact disabled"><?php echo esc_html_x( 'Preview', 'verb' ); ?></button> <# } #> <# } #> </div> @@ -487,18 +487,18 @@ $aria_label = sprintf( _x( 'Activate %s', 'theme' ), '{{ data.name }}' ); ?> <# if ( ! data.active ) { #> - <a class="button button-primary button-compact activate" href="{{ data.activate_url }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Activate' ); ?></a> + <a class="button button-primary activate" href="{{ data.activate_url }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Activate' ); ?></a> <# } else { #> - <button class="button button-primary button-compact disabled"><?php _ex( 'Activated', 'theme' ); ?></button> + <button class="button button-primary disabled"><?php _ex( 'Activated', 'theme' ); ?></button> <# } #> <# } else { #> - <a class="button button-primary button-compact disabled" ><?php _ex( 'Cannot Activate', 'theme' ); ?></a> + <a class="button button-primary disabled" ><?php _ex( 'Cannot Activate', 'theme' ); ?></a> <# } #> <# } else { #> <# if ( data.compatible_wp && data.compatible_php ) { #> - <a href="{{ data.install_url }}" class="button button-primary button-compact theme-install" data-name="{{ data.name }}" data-slug="{{ data.id }}"><?php _e( 'Install' ); ?></a> + <a href="{{ data.install_url }}" class="button button-primary theme-install" data-name="{{ data.name }}" data-slug="{{ data.id }}"><?php _e( 'Install' ); ?></a> <# } else { #> - <a class="button button-primary button-compact disabled" ><?php _ex( 'Cannot Install', 'theme' ); ?></a> + <a class="button button-primary disabled" ><?php _ex( 'Cannot Install', 'theme' ); ?></a> <# } #> <# } #> </div> diff --git a/src/wp-admin/themes.php b/src/wp-admin/themes.php index ca9f52b2a164f..a9f24765ce742 100644 --- a/src/wp-admin/themes.php +++ b/src/wp-admin/themes.php @@ -381,18 +381,18 @@ $menu_hook = get_plugin_page_hook( $submenu[ $item[2] ][0][2], $item[2] ); if ( file_exists( WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}" ) || ! empty( $menu_hook ) ) { - $current_theme_actions[] = "<a class='button$class' href='admin.php?page={$submenu[$item[2]][0][2]}'>{$item[0]}</a>"; + $current_theme_actions[] = "<a class='button button-compact$class' href='admin.php?page={$submenu[$item[2]][0][2]}'>{$item[0]}</a>"; } else { - $current_theme_actions[] = "<a class='button$class' href='{$submenu[$item[2]][0][2]}'>{$item[0]}</a>"; + $current_theme_actions[] = "<a class='button button-compact$class' href='{$submenu[$item[2]][0][2]}'>{$item[0]}</a>"; } } elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) { $menu_file = $item[2]; if ( current_user_can( 'customize' ) ) { if ( 'custom-header' === $menu_file ) { - $current_theme_actions[] = "<a class='button hide-if-no-customize$class' href='customize.php?autofocus[control]=header_image'>{$item[0]}</a>"; + $current_theme_actions[] = "<a class='button button-compact hide-if-no-customize$class' href='customize.php?autofocus[control]=header_image'>{$item[0]}</a>"; } elseif ( 'custom-background' === $menu_file ) { - $current_theme_actions[] = "<a class='button hide-if-no-customize$class' href='customize.php?autofocus[control]=background_image'>{$item[0]}</a>"; + $current_theme_actions[] = "<a class='button button-compact hide-if-no-customize$class' href='customize.php?autofocus[control]=background_image'>{$item[0]}</a>"; } } @@ -402,9 +402,9 @@ } if ( file_exists( ABSPATH . "wp-admin/$menu_file" ) ) { - $current_theme_actions[] = "<a class='button$class' href='{$item[2]}'>{$item[0]}</a>"; + $current_theme_actions[] = "<a class='button button-compact$class' href='{$item[2]}'>{$item[0]}</a>"; } else { - $current_theme_actions[] = "<a class='button$class' href='themes.php?page={$item[2]}'>{$item[0]}</a>"; + $current_theme_actions[] = "<a class='button button-compact$class' href='themes.php?page={$item[2]}'>{$item[0]}</a>"; } } } @@ -609,7 +609,7 @@ /* translators: %s: Theme name. */ $customize_aria_label = sprintf( _x( 'Customize %s', 'theme' ), $theme['name'] ); ?> - <a class="button button-primary customize load-customize hide-if-no-customize" + <a class="button button-compact button-primary customize load-customize hide-if-no-customize" href="<?php echo esc_url( $theme['actions']['customize'] ); ?>" aria-label="<?php echo esc_attr( $customize_aria_label ); ?>" ><?php _e( 'Customize' ); ?></a> @@ -619,7 +619,7 @@ /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Activate %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button activate" + <a class="button button-compact activate" href="<?php echo esc_url( $theme['actions']['activate'] ); ?>" aria-label="<?php echo esc_attr( $aria_label ); ?>" ><?php _e( 'Activate' ); ?></a> @@ -630,7 +630,7 @@ /* translators: %s: Theme name. */ $live_preview_aria_label = sprintf( _x( 'Live Preview %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary load-customize hide-if-no-customize" + <a class="button button-compact button-primary load-customize hide-if-no-customize" href="<?php echo esc_url( $theme['actions']['customize'] ); ?>" aria-label="<?php echo esc_attr( $live_preview_aria_label ); ?>" ><?php _e( 'Live Preview' ); ?></a> @@ -640,7 +640,7 @@ /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Cannot Activate %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button disabled" + <a class="button button-compact disabled" aria-label="<?php echo esc_attr( $aria_label ); ?>" ><?php _ex( 'Cannot Activate', 'theme' ); ?></a> @@ -649,7 +649,7 @@ /* translators: %s: Theme name. */ $live_preview_aria_label = sprintf( _x( 'Live Preview %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary hide-if-no-customize disabled" + <a class="button button-compact button-primary hide-if-no-customize disabled" aria-label="<?php echo esc_attr( $live_preview_aria_label ); ?>" ><?php _e( 'Live Preview' ); ?></a> <?php } ?> @@ -1001,7 +1001,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $customize_aria_label = sprintf( _x( 'Customize %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary customize load-customize hide-if-no-customize" + <a class="button button-compact button-primary customize load-customize hide-if-no-customize" href="{{{ data.actions.customize }}}" aria-label="<?php echo esc_attr( $customize_aria_label ); ?>" ><?php _e( 'Customize' ); ?></a> @@ -1012,7 +1012,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Activate %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button activate" + <a class="button button-compact activate" href="{{{ data.actions.activate }}}" aria-label="<?php echo esc_attr( $aria_label ); ?>" ><?php _e( 'Activate' ); ?></a> @@ -1021,7 +1021,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $live_preview_aria_label = sprintf( _x( 'Live Preview %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary load-customize hide-if-no-customize" + <a class="button button-compact button-primary load-customize hide-if-no-customize" href="{{{ data.actions.customize }}}" aria-label="<?php echo esc_attr( $live_preview_aria_label ); ?>" ><?php _e( 'Live Preview' ); ?></a> @@ -1030,7 +1030,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Cannot Activate %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button disabled" + <a class="button button-compact disabled" aria-label="<?php echo esc_attr( $aria_label ); ?>" ><?php _ex( 'Cannot Activate', 'theme' ); ?></a> @@ -1038,7 +1038,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $live_preview_aria_label = sprintf( _x( 'Live Preview %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary hide-if-no-customize disabled" + <a class="button button-compact button-primary hide-if-no-customize disabled" aria-label="<?php echo esc_attr( $live_preview_aria_label ); ?>" ><?php _e( 'Live Preview' ); ?></a> <# } #> @@ -1251,7 +1251,7 @@ function wp_theme_auto_update_setting_template() { <div class="theme-actions"> <div class="active-theme"> - <a class="button button-primary customize load-customize hide-if-no-customize" + <a class="button button-compact button-primary customize load-customize hide-if-no-customize" href="{{{ data.actions.customize }}}" ><?php _e( 'Customize' ); ?></a> <?php echo implode( ' ', $current_theme_actions ); ?> @@ -1263,7 +1263,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $live_preview_aria_label = sprintf( _x( 'Live Preview %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary load-customize hide-if-no-customize" + <a class="button button-compact button-primary load-customize hide-if-no-customize" href="{{{ data.actions.customize }}}" aria-label="<?php echo esc_attr( $live_preview_aria_label ); ?>" ><?php _e( 'Live Preview' ); ?></a> @@ -1273,7 +1273,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Activate %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button activate" + <a class="button button-compact activate" href="{{{ data.actions.activate }}}" aria-label="<?php echo esc_attr( $aria_label ); ?>" ><?php _e( 'Activate' ); ?></a> @@ -1283,7 +1283,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $live_preview_aria_label = sprintf( _x( 'Live Preview %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button button-primary hide-if-no-customize disabled" + <a class="button button-compact button-primary hide-if-no-customize disabled" aria-label="<?php echo esc_attr( $live_preview_aria_label ); ?>" ><?php _e( 'Live Preview' ); ?></a> @@ -1292,7 +1292,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Cannot Activate %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button disabled" + <a class="button button-compact disabled" aria-label="<?php echo esc_attr( $aria_label ); ?>" ><?php _ex( 'Cannot Activate', 'theme' ); ?></a> <# } #> @@ -1304,7 +1304,7 @@ function wp_theme_auto_update_setting_template() { /* translators: %s: Theme name. */ $aria_label = sprintf( _x( 'Delete %s', 'theme' ), '{{ data.name }}' ); ?> - <a class="button delete-theme" + <a class="button button-compact delete-theme" href="{{{ data.actions['delete'] }}}" aria-label="<?php echo esc_attr( $aria_label ); ?>" ><?php _e( 'Delete' ); ?></a> From e7b0faf1674cb1a626d1763715dc1dea51be1437 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Wed, 17 Jun 2026 11:34:55 +0000 Subject: [PATCH 215/327] Media: Make `::update_size()` parameters consistent across image editors. Includes: * Standardizing default values on `null` vs. `false`. * Updating the documentation to correct parameter types. * Adding missing parameter descriptions. Follow-up to [22094]. Props Soean, mukesh27, SergeyBiryukov. See #64897. git-svn-id: https://develop.svn.wordpress.org/trunk@62517 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-image-editor-gd.php | 6 +++--- src/wp-includes/class-wp-image-editor-imagick.php | 5 +++-- src/wp-includes/class-wp-image-editor.php | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/wp-includes/class-wp-image-editor-gd.php b/src/wp-includes/class-wp-image-editor-gd.php index d89d366d71baf..3d93b5bd8a2c1 100644 --- a/src/wp-includes/class-wp-image-editor-gd.php +++ b/src/wp-includes/class-wp-image-editor-gd.php @@ -144,11 +144,11 @@ function_exists( 'imagecreatefromavif' ) && ( 'image/avif' === wp_get_image_mime * * @since 3.5.0 * - * @param int $width - * @param int $height + * @param int|null $width Image width. + * @param int|null $height Image height. * @return true */ - protected function update_size( $width = false, $height = false ) { + protected function update_size( $width = null, $height = null ) { if ( ! $width ) { $width = imagesx( $this->image ); } diff --git a/src/wp-includes/class-wp-image-editor-imagick.php b/src/wp-includes/class-wp-image-editor-imagick.php index 19b27ba12e2ae..2cb3a694c567b 100644 --- a/src/wp-includes/class-wp-image-editor-imagick.php +++ b/src/wp-includes/class-wp-image-editor-imagick.php @@ -247,12 +247,13 @@ public function set_quality( $quality = null, $dims = array() ) { * * @since 3.5.0 * - * @param int $width - * @param int $height + * @param int|null $width Image width. + * @param int|null $height Image height. * @return true|WP_Error */ protected function update_size( $width = null, $height = null ) { $size = null; + if ( ! $width || ! $height ) { try { $size = $this->image->getImageGeometry(); diff --git a/src/wp-includes/class-wp-image-editor.php b/src/wp-includes/class-wp-image-editor.php index d7fe151a0d94a..8401117836ebc 100644 --- a/src/wp-includes/class-wp-image-editor.php +++ b/src/wp-includes/class-wp-image-editor.php @@ -201,8 +201,8 @@ public function get_size() { * * @since 3.5.0 * - * @param int $width - * @param int $height + * @param int|null $width Image width. + * @param int|null $height Image height. * @return true */ protected function update_size( $width = null, $height = null ) { From 91e53dcc18701e9d34c838463122573713e0bf3d Mon Sep 17 00:00:00 2001 From: Carlos Bravo <cbravobernal@git.wordpress.org> Date: Wed, 17 Jun 2026 14:48:28 +0000 Subject: [PATCH 216/327] Block Bindings: Add List Item Block Support. Add `core/list-item` to the block attributes supported by block bindings so its `content` rich text can be bound, and cover the basic (non-nested) case in the render tests. This is a clean enablement with no render-side changes. A List Item that contains a nested List keeps both inside the same `<li>`; preserving that nested list when `content` is bound is handled separately by the `WP_Block::replace_html()` inner-block fix. Props sauliusv, cbravobernal. See #65406. git-svn-id: https://develop.svn.wordpress.org/trunk@62518 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-bindings.php | 2 ++ tests/phpunit/tests/block-bindings/render.php | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/wp-includes/block-bindings.php b/src/wp-includes/block-bindings.php index 268bb6afa66bb..5a20c023149d7 100644 --- a/src/wp-includes/block-bindings.php +++ b/src/wp-includes/block-bindings.php @@ -134,6 +134,7 @@ function get_block_bindings_source( string $source_name ) { * Retrieves the list of block attributes supported by block bindings. * * @since 6.9.0 + * @since 7.1.0 Added support for the List Item block. * * @param string $block_type The block type whose supported attributes are being retrieved. * @return array The list of block attributes that are supported by block bindings. @@ -142,6 +143,7 @@ function get_block_bindings_supported_attributes( $block_type ) { $block_bindings_supported_attributes = array( 'core/paragraph' => array( 'content' ), 'core/heading' => array( 'content' ), + 'core/list-item' => array( 'content' ), 'core/image' => array( 'id', 'url', 'title', 'alt', 'caption' ), 'core/button' => array( 'url', 'text', 'linkTarget', 'rel' ), 'core/post-date' => array( 'datetime' ), diff --git a/tests/phpunit/tests/block-bindings/render.php b/tests/phpunit/tests/block-bindings/render.php index 77b0975105dc5..172bdff71315d 100644 --- a/tests/phpunit/tests/block-bindings/render.php +++ b/tests/phpunit/tests/block-bindings/render.php @@ -122,6 +122,16 @@ public function data_update_block_with_value_from_source() { , '<p>test source value</p>', ), + 'list item block' => array( + 'content', + <<<HTML +<!-- wp:list-item --> +<li>This should not appear</li> +<!-- /wp:list-item --> +HTML + , + '<li>test source value</li>', + ), ); } From 2192530bb6e0c3ea17546e8f715133316ba00a8a Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Wed, 17 Jun 2026 14:55:58 +0000 Subject: [PATCH 217/327] HTML API: Improve comment about HTML syntax characters. Developed in https://github.com/WordPress/wordpress-develop/pull/12207. Follow-up to [62507]. Props dmsnell. See #64896. git-svn-id: https://develop.svn.wordpress.org/trunk@62519 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/html-api/wpHtmlTagProcessor.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php index fd73ddc43a4ba..185d93b7a652c 100644 --- a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php +++ b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php @@ -890,7 +890,8 @@ public function test_attribute_ops_on_tag_closer_do_not_change_the_markup() { * // <div class="" onclick="alert"></div> * ``` * - * To prevent it, `set_attribute` escapes dangerous characters (`"`, `'`, `<`, `>`, `&`) using HTML character references. + * To prevent it, `set_attribute` escapes HTML syntax characters like `"` using + * HTML character references. * * ```php * <div class="" onclick="alert"></div> From fc826ae8a79b5ad11fa3aad4aea37c2a897a99e8 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Thu, 18 Jun 2026 00:09:23 +0000 Subject: [PATCH 218/327] Editor: Fix `wp-elements-*` CSS class name collisions for identical blocks. The `wp_get_elements_class_name()` function previously generated CSS class names by hashing the serialized block data via `md5()`. Identical blocks received the same `wp-elements-*` class name and the Style Engine deduplicated their CSS rules into one, causing a parent block's element style (e.g. link color) to cascade down and override a child block's identical style due to CSS source order. The function is updated to use `wp_unique_prefixed_id()` instead, generating sequential unique class names (`wp-elements-1`, `wp-elements-2`, etc.) that match the block editor's JavaScript implementation. The now-unused `$parsed_block` parameter is removed from the function signature. PHPStan rule level 10 errors are also resolved in the related code. See #64898. Developed in https://github.com/WordPress/wordpress-develop/pull/12126. Follow-up to r53260, r58074. Props tusharbharti, westonruter, wildworks. Fixes #65435. git-svn-id: https://develop.svn.wordpress.org/trunk@62520 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/elements.php | 39 ++++++++-- .../wpRenderElementsSupport.php | 74 ++++++++++++++++-- .../wpRenderElementsSupportStyles.php | 76 ++++++++++++++++--- 3 files changed, 167 insertions(+), 22 deletions(-) diff --git a/src/wp-includes/block-supports/elements.php b/src/wp-includes/block-supports/elements.php index 54b96aa1dc064..d765a2c2b4b5a 100644 --- a/src/wp-includes/block-supports/elements.php +++ b/src/wp-includes/block-supports/elements.php @@ -12,11 +12,10 @@ * @since 6.0.0 * @access private * - * @param array $block Block object. * @return string The unique class name. */ -function wp_get_elements_class_name( $block ) { - return 'wp-elements-' . md5( serialize( $block ) ); +function wp_get_elements_class_name(): string { + return wp_unique_prefixed_id( 'wp-elements-' ); } /** @@ -109,6 +108,29 @@ function wp_should_add_elements_class_name( $block, $options ) { * * @param array $parsed_block The parsed block. * @return array The same parsed block with elements classname added if appropriate. + * + * @phpstan-param array{ + * blockName: string, + * attrs: array{ + * className?: string, + * style?: array{ + * elements?: array<string, array{ + * ":hover"?: array<string, string>, + * ... + * }>, + * }, + * ... + * }, + * ... + * } $parsed_block + * @phpstan-return array{ + * blockName: string, + * attrs: array{ + * className?: string, + * ... + * }, + * ... + * } */ function wp_render_elements_support_styles( $parsed_block ) { /* @@ -129,9 +151,12 @@ function wp_render_elements_support_styles( $parsed_block ) { ); } - $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $parsed_block['blockName'] ); - $element_block_styles = $parsed_block['attrs']['style']['elements'] ?? null; + $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $parsed_block['blockName'] ); + if ( ! $block_type ) { + return $parsed_block; + } + $element_block_styles = $parsed_block['attrs']['style']['elements'] ?? null; if ( ! $element_block_styles ) { return $parsed_block; } @@ -157,7 +182,7 @@ function wp_render_elements_support_styles( $parsed_block ) { return $parsed_block; } - $class_name = wp_get_elements_class_name( $parsed_block ); + $class_name = wp_get_elements_class_name(); $updated_class_name = isset( $parsed_block['attrs']['className'] ) ? $parsed_block['attrs']['className'] . " $class_name" : $class_name; _wp_array_set( $parsed_block, array( 'attrs', 'className' ), $updated_class_name ); @@ -197,7 +222,7 @@ function wp_render_elements_support_styles( $parsed_block ) { ) ); - if ( isset( $element_style_object[':hover'] ) ) { + if ( isset( $element_style_object[':hover'], $element_config['hover_selector'] ) ) { wp_style_engine_get_styles( $element_style_object[':hover'], array( diff --git a/tests/phpunit/tests/block-supports/wpRenderElementsSupport.php b/tests/phpunit/tests/block-supports/wpRenderElementsSupport.php index 007ba8312e495..ad60844813188 100644 --- a/tests/phpunit/tests/block-supports/wpRenderElementsSupport.php +++ b/tests/phpunit/tests/block-supports/wpRenderElementsSupport.php @@ -159,6 +159,70 @@ public function test_elements_block_support_class_with_invalid_elements_prefix() ); } + /** + * Tests that duplicate blocks get distinct elements class names + * on their rendered markup to avoid CSS cascade conflicts. + * + * @ticket 65435 + * + * @covers ::wp_get_elements_class_name + */ + public function test_elements_block_support_class_with_duplicate_blocks(): void { + $this->test_block_name = 'test/element-block-supports'; + + register_block_type( + $this->test_block_name, + array( + 'api_version' => 3, + 'attributes' => array( + 'style' => array( + 'type' => 'object', + ), + ), + 'supports' => array( + 'color' => array( + 'link' => true, + ), + ), + ) + ); + + $block = array( + 'blockName' => $this->test_block_name, + 'attrs' => array( + 'style' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'var:preset|color|vivid-red', + ), + ), + ), + ), + ), + ); + + $block_markup = '<p>Hello <a href="http://www.wordpress.org/">WordPress</a>!</p>'; + $elements_class_names = array(); + $count = 2; + for ( $i = 0; $i < $count; $i++ ) { + $rendered_block = wp_render_elements_class_name( $block_markup, wp_render_elements_support_styles( $block ) ); + + $processor = new WP_HTML_Tag_Processor( $rendered_block ); + $this->assertTrue( $processor->next_tag( 'P' ), "Expected paragraph in block #$i." ); + $elements_class_name = array_first( + array_filter( + iterator_to_array( $processor->class_list() ), + fn( string $class_name ) => (bool) preg_match( '/^wp-elements-\d+$/', $class_name ) + ) + ); + $this->assertIsString( $elements_class_name, "Expected wp-elements class in block #$i." ); + $elements_class_names[] = $elements_class_name; + } + + $this->assertSame( $count, count( array_unique( $elements_class_names ) ), 'Expected each rendered block to have a unique wp-elements class name.' ); + } + /** * Data provider. * @@ -238,7 +302,7 @@ public function data_elements_block_support_class() { 'button' => array( 'color' => $color_styles ), ), 'block_markup' => '<p>Hello <a href="http://www.wordpress.org/">WordPress</a>!</p>', - 'expected_markup' => '/^<p class="wp-elements-[a-f0-9]{32}">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', + 'expected_markup' => '/^<p class="wp-elements-\d+">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', ), 'link element styles apply class to wrapper' => array( 'color_settings' => array( 'link' => true ), @@ -246,7 +310,7 @@ public function data_elements_block_support_class() { 'link' => array( 'color' => $color_styles ), ), 'block_markup' => '<p>Hello <a href="http://www.wordpress.org/">WordPress</a>!</p>', - 'expected_markup' => '/^<p class="wp-elements-[a-f0-9]{32}">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', + 'expected_markup' => '/^<p class="wp-elements-\d+">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', ), 'heading element styles apply class to wrapper' => array( 'color_settings' => array( 'heading' => true ), @@ -254,7 +318,7 @@ public function data_elements_block_support_class() { 'heading' => array( 'color' => $color_styles ), ), 'block_markup' => '<p>Hello <a href="http://www.wordpress.org/">WordPress</a>!</p>', - 'expected_markup' => '/^<p class="wp-elements-[a-f0-9]{32}">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', + 'expected_markup' => '/^<p class="wp-elements-\d+">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', ), 'element styles apply class to wrapper when it has other classes' => array( 'color_settings' => array( 'link' => true ), @@ -262,7 +326,7 @@ public function data_elements_block_support_class() { 'link' => array( 'color' => $color_styles ), ), 'block_markup' => '<p class="has-dark-gray-background-color has-background">Hello <a href="http://www.wordpress.org/">WordPress</a>!</p>', - 'expected_markup' => '/^<p class="has-dark-gray-background-color has-background wp-elements-[a-f0-9]{32}">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', + 'expected_markup' => '/^<p class="has-dark-gray-background-color has-background wp-elements-\d+">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', ), 'element styles apply class to wrapper when it has other attributes' => array( 'color_settings' => array( 'link' => true ), @@ -270,7 +334,7 @@ public function data_elements_block_support_class() { 'link' => array( 'color' => $color_styles ), ), 'block_markup' => '<p id="anchor">Hello <a href="http://www.wordpress.org/">WordPress</a>!</p>', - 'expected_markup' => '/^<p class="wp-elements-[a-f0-9]{32}" id="anchor">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', + 'expected_markup' => '/^<p class="wp-elements-\d+" id="anchor">Hello <a href="http:\/\/www.wordpress.org\/">WordPress<\/a>!<\/p>$/', ), ); } diff --git a/tests/phpunit/tests/block-supports/wpRenderElementsSupportStyles.php b/tests/phpunit/tests/block-supports/wpRenderElementsSupportStyles.php index 16ed26fc9c7bc..5c9fc8af5819d 100644 --- a/tests/phpunit/tests/block-supports/wpRenderElementsSupportStyles.php +++ b/tests/phpunit/tests/block-supports/wpRenderElementsSupportStyles.php @@ -68,6 +68,62 @@ public function test_elements_block_support_styles( $color_settings, $elements_s ); } + /** + * Tests that identical blocks with different elements styles + * generate distinct class names to avoid CSS cascade conflicts. + * + * @ticket 65435 + * + * @covers ::wp_get_elements_class_name + */ + public function test_elements_block_support_styles_with_duplicate_blocks(): void { + $this->test_block_name = 'test/element-block-supports'; + + register_block_type( + $this->test_block_name, + array( + 'api_version' => 3, + 'attributes' => array( + 'style' => array( + 'type' => 'object', + ), + ), + 'supports' => array( + 'color' => array( + 'link' => true, + ), + ), + ) + ); + + $block = array( + 'blockName' => $this->test_block_name, + 'attrs' => array( + 'style' => array( + 'elements' => array( + 'link' => array( + 'color' => array( + 'text' => 'blue', + ), + ), + ), + ), + ), + ); + + // Process two identical blocks with the same elements styles. + $count = 2; + for ( $i = 0; $i < $count; $i++ ) { + wp_render_elements_support_styles( $block ); + } + $actual_stylesheet = wp_style_engine_get_stylesheet_from_context( 'block-supports', array( 'prettify' => false ) ); + + // Count the number of distinct class names to confirm uniqueness. + $this->assertSame( $count, preg_match_all( '/\.wp-elements-(\d+)/', $actual_stylesheet, $matches ) ); + $unique_classes = array_unique( $matches[1] ); + $this->assertCount( $count, $unique_classes, 'Both blocks should produce distinct class names' ); + } + /** * Data provider. * @@ -127,7 +183,7 @@ public function data_elements_block_support_styles() { 'elements_styles' => array( 'button' => array( 'color' => $color_styles ), ), - 'expected_styles' => '/^.wp-elements-[a-f0-9]{32} .wp-element-button, .wp-elements-[a-f0-9]{32} .wp-block-button__link' . $color_css_rules . '$/', + 'expected_styles' => '/^.wp-elements-\d+ .wp-element-button, .wp-elements-\d+ .wp-block-button__link' . $color_css_rules . '$/', ), 'link element styles are applied' => array( 'color_settings' => array( 'link' => true ), @@ -139,15 +195,15 @@ public function data_elements_block_support_styles() { ), ), ), - 'expected_styles' => '/^.wp-elements-[a-f0-9]{32} a:where\(:not\(.wp-element-button\)\)' . $color_css_rules . - '.wp-elements-[a-f0-9]{32} a:where\(:not\(.wp-element-button\)\):hover' . $color_css_rules . '$/', + 'expected_styles' => '/^.wp-elements-\d+ a:where\(:not\(.wp-element-button\)\)' . $color_css_rules . + '.wp-elements-\d+ a:where\(:not\(.wp-element-button\)\):hover' . $color_css_rules . '$/', ), 'generic heading element styles are applied' => array( 'color_settings' => array( 'heading' => true ), 'elements_styles' => array( 'heading' => array( 'color' => $color_styles ), ), - 'expected_styles' => '/^.wp-elements-[a-f0-9]{32} h1, .wp-elements-[a-f0-9]{32} h2, .wp-elements-[a-f0-9]{32} h3, .wp-elements-[a-f0-9]{32} h4, .wp-elements-[a-f0-9]{32} h5, .wp-elements-[a-f0-9]{32} h6' . $color_css_rules . '$/', + 'expected_styles' => '/^.wp-elements-\d+ h1, .wp-elements-\d+ h2, .wp-elements-\d+ h3, .wp-elements-\d+ h4, .wp-elements-\d+ h5, .wp-elements-\d+ h6' . $color_css_rules . '$/', ), 'individual heading element styles are applied' => array( 'color_settings' => array( 'heading' => true ), @@ -159,12 +215,12 @@ public function data_elements_block_support_styles() { 'h5' => array( 'color' => $color_styles ), 'h6' => array( 'color' => $color_styles ), ), - 'expected_styles' => '/^.wp-elements-[a-f0-9]{32} h1' . $color_css_rules . - '.wp-elements-[a-f0-9]{32} h2' . $color_css_rules . - '.wp-elements-[a-f0-9]{32} h3' . $color_css_rules . - '.wp-elements-[a-f0-9]{32} h4' . $color_css_rules . - '.wp-elements-[a-f0-9]{32} h5' . $color_css_rules . - '.wp-elements-[a-f0-9]{32} h6' . $color_css_rules . '$/', + 'expected_styles' => '/^.wp-elements-\d+ h1' . $color_css_rules . + '.wp-elements-\d+ h2' . $color_css_rules . + '.wp-elements-\d+ h3' . $color_css_rules . + '.wp-elements-\d+ h4' . $color_css_rules . + '.wp-elements-\d+ h5' . $color_css_rules . + '.wp-elements-\d+ h6' . $color_css_rules . '$/', ), ); } From c710ca6b53db970d1b59b4e34ba130b25458ec1b Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Thu, 18 Jun 2026 02:04:14 +0000 Subject: [PATCH 219/327] Embeds: Replace the blue site icon fallback with the gray WordPress logo. Adds gray WordPress logo image files (`w-logo-gray-white-bg.png` and `w-logo-gray-white-bg.svg`) to `wp-includes/images/`, and updates `the_embed_site_title()` and `do_favicon()` to use the new images as the fallback site icon, maintaining visual consistency with the login screen logo updated in r61989. Replaces CSS custom property references for focus styles in the embed template (`--wp-admin-theme-color` and `--wp-admin-border-width-focus`) with their literal values, as these admin-theme variables are not defined in the oEmbed template context. Developed in https://github.com/WordPress/wordpress-develop/pull/11293. Follow-up to r61652, r61989, r62502. Props sabernhardt, huzaifaalmesbah, westonruter, jamesbregenzer. See #64708. Fixes #64877. git-svn-id: https://develop.svn.wordpress.org/trunk@62521 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/css/wp-embed-template.css | 2 +- src/wp-includes/embed.php | 2 +- src/wp-includes/functions.php | 2 +- src/wp-includes/images/w-logo-gray-white-bg.png | Bin 0 -> 3241 bytes src/wp-includes/images/w-logo-gray-white-bg.svg | 1 + tests/phpunit/tests/general/template.php | 4 ++-- 6 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 src/wp-includes/images/w-logo-gray-white-bg.png create mode 100644 src/wp-includes/images/w-logo-gray-white-bg.svg diff --git a/src/wp-includes/css/wp-embed-template.css b/src/wp-includes/css/wp-embed-template.css index 6118ab4d2b6d1..9bf606589a773 100644 --- a/src/wp-includes/css/wp-embed-template.css +++ b/src/wp-includes/css/wp-embed-template.css @@ -217,7 +217,7 @@ p.wp-embed-heading { .wp-embed-share-dialog-open:focus .dashicons, .wp-embed-share-dialog-close:focus .dashicons { - box-shadow: 0 0 0 var(--wp-admin-border-width-focus, 1.5px) var(--wp-admin-theme-color, #3858e9); + box-shadow: 0 0 0 1.5px #3858e9; /* Only visible in Windows High Contrast mode */ outline: 2px solid transparent; border-radius: 100%; diff --git a/src/wp-includes/embed.php b/src/wp-includes/embed.php index 636f6acd94e6b..10558caed6f8c 100644 --- a/src/wp-includes/embed.php +++ b/src/wp-includes/embed.php @@ -1233,7 +1233,7 @@ function print_embed_sharing_dialog() { * @since 4.5.0 */ function the_embed_site_title(): void { - $fallback_icon_url = includes_url( 'images/w-logo-blue.png' ); + $fallback_icon_url = includes_url( 'images/w-logo-gray-white-bg.svg' ); $site_icon_url = get_site_icon_url( 32, $fallback_icon_url ); $icon_img = ''; diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index c297864859aa4..d7d2ff3fed89a 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -1752,7 +1752,7 @@ function do_favicon() { */ do_action( 'do_faviconico' ); - wp_redirect( get_site_icon_url( 32, includes_url( 'images/w-logo-blue-white-bg.png' ) ) ); + wp_redirect( get_site_icon_url( 32, includes_url( 'images/w-logo-gray-white-bg.png' ) ) ); exit; } diff --git a/src/wp-includes/images/w-logo-gray-white-bg.png b/src/wp-includes/images/w-logo-gray-white-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..0adbfad427550458fbaf46ba929a119201daed27 GIT binary patch literal 3241 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 bzW@UO^iA1I4jy`S00000NkvXXu0mjfq?$19 literal 0 HcmV?d00001 diff --git a/src/wp-includes/images/w-logo-gray-white-bg.svg b/src/wp-includes/images/w-logo-gray-white-bg.svg new file mode 100644 index 0000000000000..6cb698ca9a607 --- /dev/null +++ b/src/wp-includes/images/w-logo-gray-white-bg.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><circle fill="#ffffff" cx="32" cy="32" r="32"/><path fill="#464442" d="M4.548 31.999c0 10.9 6.3 20.3 15.5 24.706L6.925 20.827C5.402 24.2 4.5 28 4.5 31.999z M50.531 30.614c0-3.394-1.219-5.742-2.264-7.57c-1.391-2.263-2.695-4.177-2.695-6.439c0-2.523 1.912-4.872 4.609-4.872 c0.121 0 0.2 0 0.4 0.022C45.653 7.3 39.1 4.5 32 4.548c-9.591 0-18.027 4.921-22.936 12.4 c0.645 0 1.3 0 1.8 0.033c2.871 0 7.316-0.349 7.316-0.349c1.479-0.086 1.7 2.1 0.2 2.3 c0 0-1.487 0.174-3.142 0.261l9.997 29.735l6.008-18.017l-4.276-11.718c-1.479-0.087-2.879-0.261-2.879-0.261 c-1.48-0.087-1.306-2.349 0.174-2.262c0 0 4.5 0.3 7.2 0.349c2.87 0 7.317-0.349 7.317-0.349 c1.479-0.086 1.7 2.1 0.2 2.262c0 0-1.489 0.174-3.142 0.261l9.92 29.508l2.739-9.148 C49.628 35.7 50.5 33 50.5 30.614z M32.481 34.4l-8.237 23.934c2.46 0.7 5.1 1.1 7.8 1.1 c3.197 0 6.262-0.552 9.116-1.556c-0.072-0.118-0.141-0.243-0.196-0.379L32.481 34.4z M56.088 18.8 c0.119 0.9 0.2 1.8 0.2 2.823c0 2.785-0.521 5.916-2.088 9.832l-8.385 24.242c8.161-4.758 13.65-13.6 13.65-23.728 C59.451 27.2 58.2 22.7 56.1 18.83z M32 0c-17.645 0-32 14.355-32 32C0 49.6 14.4 64 32 64s32-14.355 32-32.001 C64 14.4 49.6 0 32 0z M32 62.533c-16.835 0-30.533-13.698-30.533-30.534C1.467 15.2 15.2 1.5 32 1.5 s30.534 13.7 30.5 30.532C62.533 48.8 48.8 62.5 32 62.533z"/></svg> \ No newline at end of file diff --git a/tests/phpunit/tests/general/template.php b/tests/phpunit/tests/general/template.php index 20f6d0012b3a7..00b683971a6a0 100644 --- a/tests/phpunit/tests/general/template.php +++ b/tests/phpunit/tests/general/template.php @@ -860,7 +860,7 @@ public function test_the_embed_site_title_uses_fallback_when_attachment_url_fail add_filter( 'wp_get_attachment_image_src', '__return_false' ); $output = get_echo( 'the_embed_site_title' ); - $fallback = includes_url( 'images/w-logo-blue.png' ); + $fallback = includes_url( 'images/w-logo-gray-white-bg.svg' ); $processor = new WP_HTML_Tag_Processor( $output ); $this->assertTrue( $processor->next_tag( 'IMG' ), 'Expected IMG tag with fallback.' ); @@ -914,7 +914,7 @@ public function test_the_embed_site_title_omits_srcset_when_1x_and_2x_urls_are_i */ public function test_the_embed_site_title_uses_fallback_without_srcset_when_no_site_icon_set(): void { $output = get_echo( 'the_embed_site_title' ); - $fallback = includes_url( 'images/w-logo-blue.png' ); + $fallback = includes_url( 'images/w-logo-gray-white-bg.svg' ); $processor = new WP_HTML_Tag_Processor( $output ); From 2237e05a15e29954206463db55b4734cfbe2e948 Mon Sep 17 00:00:00 2001 From: Carlos Bravo <cbravobernal@git.wordpress.org> Date: Thu, 18 Jun 2026 10:36:34 +0000 Subject: [PATCH 220/327] Block Bindings: Preserve nested inner blocks when binding rich text. `WP_Block::replace_html()` replaced the entire element matched by a rich-text attribute's selector, dropping any markup produced by inner blocks rendered inside that element (e.g. a List nested inside a List Item). Props cbravobernal, jonsurrell. Fixes #65406. git-svn-id: https://develop.svn.wordpress.org/trunk@62522 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-block.php | 87 +++- tests/phpunit/tests/block-bindings/render.php | 484 +++++++++++++++++- .../wp-block-get-block-bindings-processor.php | 27 + 3 files changed, 586 insertions(+), 12 deletions(-) diff --git a/src/wp-includes/class-wp-block.php b/src/wp-includes/class-wp-block.php index f59b770d93b5b..8baf0f99bacde 100644 --- a/src/wp-includes/class-wp-block.php +++ b/src/wp-includes/class-wp-block.php @@ -364,13 +364,16 @@ private function process_block_bindings() { * Depending on the block attribute name, replace its value in the HTML based on the value provided. * * @since 6.5.0 + * @since 7.1.0 Added the optional `$inner_block_offsets` parameter. * - * @param string $block_content Block content. - * @param string $attribute_name The attribute name to replace. - * @param mixed $source_value The value used to replace in the HTML. + * @param string $block_content Block content. + * @param string $attribute_name The attribute name to replace. + * @param mixed $source_value The value used to replace in the HTML. + * @param int[] $inner_block_offsets Optional. Byte offsets where each inner block's + * rendered output begins. Default empty array. * @return string The modified block content. */ - private function replace_html( string $block_content, string $attribute_name, $source_value ) { + private function replace_html( string $block_content, string $attribute_name, $source_value, array $inner_block_offsets = array() ) { $block_type = $this->block_type; if ( ! isset( $block_type->attributes[ $attribute_name ]['source'] ) ) { return $block_content; @@ -396,9 +399,16 @@ private function replace_html( string $block_content, string $attribute_name, $s 'tag_name' => $selector, ) ) ) { - // TODO: Use `WP_HTML_Processor::set_inner_html` method once it's available. + /* + * TODO: Use `WP_HTML_Processor::set_inner_html()` once it's available. + * Any replacement must preserve already-rendered inner block + * markup verbatim (it may come from dynamic blocks), so it + * cannot re-serialize the element's contents. Until an API with + * that guarantee exists, the replacement is spliced by byte + * offset, leaving inner block output untouched. + */ $block_reader->release_bookmark( 'iterate-selectors' ); - $block_reader->replace_rich_text( wp_kses_post( $source_value ) ); + $block_reader->replace_rich_text( wp_kses_post( $source_value ), $inner_block_offsets ); return $block_reader->get_updated_html(); } else { $block_reader->seek( 'iterate-selectors' ); @@ -433,10 +443,17 @@ private static function get_block_bindings_processor( string $block_content ) { * When stopped on a tag opener, replace the content enclosed by it and its * matching closer with the provided rich text. * - * @param string $rich_text The rich text to replace the original content with. + * If byte offsets of inner blocks' rendered output are provided, the + * replacement stops at the first inner block found inside the element, + * preserving any markup produced by nested inner blocks (e.g. a List + * block nested inside a List Item). + * + * @param string $rich_text The rich text to replace the original content with. + * @param int[] $inner_block_offsets Optional. Byte offsets in the source HTML where + * inner blocks' rendered output begins. Default empty array. * @return bool True on success. */ - public function replace_rich_text( $rich_text ) { + public function replace_rich_text( $rich_text, $inner_block_offsets = array() ) { if ( $this->is_tag_closer() || ! $this->expects_closer() ) { return false; } @@ -461,6 +478,25 @@ public function replace_rich_text( $rich_text ) { $tag_closer = $this->bookmarks['__wp_block_bindings']; $end = $tag_closer->start; + /* + * Stop at the first inner block that renders inside this element so + * its markup is preserved. The block's own rich text always precedes + * its inner blocks, so replacing up to the first inner block offset + * replaces only that rich text. Offsets are recorded during render in + * the same byte coordinates as this fragment, and are in ascending + * order, so the first match is the earliest inner block. + * + * The lower bound is inclusive of `$start`: when an inner block + * begins immediately, with no leading rich text, the (empty) rich + * text is still replaced instead of the inner block markup. + */ + foreach ( $inner_block_offsets as $inner_block_offset ) { + if ( $inner_block_offset >= $start && $inner_block_offset < $end ) { + $end = $inner_block_offset; + break; + } + } + $this->lexical_updates[] = new WP_HTML_Text_Replacement( $start, $end - $start, @@ -479,6 +515,7 @@ public function replace_rich_text( $rich_text ) { * * @since 5.5.0 * @since 6.5.0 Added block bindings processing. + * @since 7.1.0 Preserve inner blocks when binding a rich text attribute. * * @global WP_Post $post Global post object. * @@ -538,6 +575,19 @@ public function render( $options = array() ) { $is_dynamic = $options['dynamic'] && $this->name && null !== $this->block_type && $this->block_type->is_dynamic(); $block_content = ''; + /* + * Byte offsets in $block_content where each inner block's rendered output + * begins. Block bindings rich-text replacement uses these to stop at the + * first inner block inside a selector, so it replaces only the block's own + * rich text and never the markup produced by nested inner blocks. + * + * They are only collected when the block has bound attributes to resolve; + * otherwise they are never read, so recording them would add work to every + * block render for no benefit. + */ + $inner_block_offsets = array(); + $collect_offsets = ! empty( $computed_attributes ); + if ( ! $options['dynamic'] || empty( $this->block_type->skip_inner_blocks ) ) { $index = 0; @@ -545,6 +595,9 @@ public function render( $options = array() ) { if ( is_string( $chunk ) ) { $block_content .= $chunk; } else { + if ( $collect_offsets ) { + $inner_block_offsets[] = strlen( $block_content ); + } $inner_block = $this->inner_blocks[ $index ]; $parent_block = $this; @@ -583,7 +636,23 @@ public function render( $options = array() ) { if ( ! empty( $computed_attributes ) && ! empty( $block_content ) ) { foreach ( $computed_attributes as $attribute_name => $source_value ) { - $block_content = $this->replace_html( $block_content, $attribute_name, $source_value ); + $updated_block_content = $this->replace_html( $block_content, $attribute_name, $source_value, $inner_block_offsets ); + + /* + * The offsets describe $block_content as it was assembled. A + * replacement that modifies the markup shifts byte positions, so + * once the content changes the remaining attributes fall back to + * offset-free replacement rather than clamp at a stale position. + * Attributes that leave the markup untouched keep the offsets + * valid: the computed `metadata` attribute produced by a pattern + * overrides `__default` binding has no HTML source, so it must + * not invalidate the offsets for the rich text that follows it. + */ + if ( $updated_block_content !== $block_content ) { + $inner_block_offsets = array(); + } + + $block_content = $updated_block_content; } } diff --git a/tests/phpunit/tests/block-bindings/render.php b/tests/phpunit/tests/block-bindings/render.php index 172bdff71315d..3ce1993e4c351 100644 --- a/tests/phpunit/tests/block-bindings/render.php +++ b/tests/phpunit/tests/block-bindings/render.php @@ -12,9 +12,7 @@ class WP_Block_Bindings_Render extends WP_UnitTestCase { const SOURCE_NAME = 'test/source'; - const SOURCE_LABEL = array( - 'label' => 'Test source', - ); + const SOURCE_LABEL = 'Test source'; /** * Sets up shared fixtures. @@ -433,4 +431,484 @@ public function test_filter_block_bindings_source_value() { 'The block content should show the filtered value.' ); } + + /** + * Provides fuzz-style nested list fixtures for rich text binding tests. + * + * The fixtures vary whether fallback rich text exists before the first inner + * block, whether that fallback contains raw markup or multibyte text, whether + * nested lists are ordered, and whether siblings surround the bound item. + * + * @return array[] + */ + public function data_rich_text_binding_preserves_nested_inner_blocks() { + $child_list = self::build_list_block( + array( + self::build_list_item_block( 'Nested child' ), + ) + ); + + $deep_child_list = self::build_list_block( + array( + self::build_list_item_block( + 'Nested parent' . self::build_list_block( + array( + self::build_list_item_block( 'Nested grandchild' ), + ) + ) + ), + ) + ); + + $ordered_child_list = self::build_list_block( + array( + self::build_list_item_block( 'Ordered child' ), + self::build_list_item_block( 'Second ordered child' ), + ), + array( + 'ordered' => true, + 'start' => 3, + ) + ); + + return array( + 'nested list after fallback text' => array( + 'block_content' => self::build_list_block( + array( + self::build_list_item_block( 'Default content' . $child_list, true ), + ) + ), + 'bound_value' => 'Bound list item', + 'expected_rendered_block' => <<<HTML +<ul class="wp-block-list"> +<li>Bound list item +<ul class="wp-block-list"> +<li>Nested child</li> +</ul> +</li> +</ul> +HTML + , + 'removed_strings' => array( 'Default content' ), + 'preserved_strings' => array( 'Nested child' ), + ), + 'raw markup before nested list' => array( + 'block_content' => self::build_list_block( + array( + self::build_list_item_block( 'Default content<ul><li>Raw markup to replace</li></ul>' . $child_list, true ), + ) + ), + 'bound_value' => 'Bound list item', + 'expected_rendered_block' => <<<HTML +<ul class="wp-block-list"> +<li>Bound list item +<ul class="wp-block-list"> +<li>Nested child</li> +</ul> +</li> +</ul> +HTML + , + 'removed_strings' => array( 'Default content', 'Raw markup to replace' ), + 'preserved_strings' => array( 'Nested child' ), + ), + 'inner block starts at rich text boundary' => array( + 'block_content' => self::build_list_block( + array( + self::build_list_item_block( $child_list, true ), + ) + ), + 'bound_value' => 'Bound list item', + 'expected_rendered_block' => <<<HTML +<ul class="wp-block-list"> +<li>Bound list item +<ul class="wp-block-list"> +<li>Nested child</li> +</ul> +</li> +</ul> +HTML + , + 'removed_strings' => array(), + 'preserved_strings' => array( 'Nested child' ), + ), + 'multibyte fallback before nested list' => array( + 'block_content' => self::build_list_block( + array( + self::build_list_item_block( 'Café fallback before <strong>nested</strong> list' . $child_list, true ), + ) + ), + 'bound_value' => 'Bound <em>línea</em>', + 'expected_rendered_block' => <<<HTML +<ul class="wp-block-list"> +<li>Bound <em>línea</em> +<ul class="wp-block-list"> +<li>Nested child</li> +</ul> +</li> +</ul> +HTML + , + 'removed_strings' => array( 'Café fallback', '<strong>nested</strong>' ), + 'preserved_strings' => array( 'Nested child', 'Bound <em>línea</em>' ), + ), + 'deep nested list with sibling item' => array( + 'block_content' => self::build_list_block( + array( + self::build_list_item_block( 'Default parent' . $deep_child_list, true ), + self::build_list_item_block( 'Sibling stays' ), + ) + ), + 'bound_value' => 'Bound parent', + 'expected_rendered_block' => <<<HTML +<ul class="wp-block-list"> +<li>Bound parent +<ul class="wp-block-list"> +<li>Nested parent +<ul class="wp-block-list"> +<li>Nested grandchild</li> +</ul> +</li> +</ul> +</li> + +<li>Sibling stays</li> +</ul> +HTML + , + 'removed_strings' => array( 'Default parent' ), + 'preserved_strings' => array( 'Nested parent', 'Nested grandchild', 'Sibling stays' ), + ), + 'ordered nested list with attributes' => array( + 'block_content' => self::build_list_block( + array( + self::build_list_item_block( '<span>Default ordered parent</span>' . $ordered_child_list, true ), + ) + ), + 'bound_value' => 'Bound ordered parent', + 'expected_rendered_block' => <<<HTML +<ul class="wp-block-list"> +<li>Bound ordered parent +<ol class="wp-block-list" start="3"> +<li>Ordered child</li> + +<li>Second ordered child</li> +</ol> +</li> +</ul> +HTML + , + 'removed_strings' => array( 'Default ordered parent' ), + 'preserved_strings' => array( 'Ordered child', 'Second ordered child', 'start="3"' ), + ), + ); + } + + /** + * Tests that binding a List Item block's rich text preserves nested List + * inner blocks rendered inside the same `<li>` element. + * + * @ticket 65406 + * + * @covers WP_Block::render + * + * @dataProvider data_rich_text_binding_preserves_nested_inner_blocks + */ + public function test_rich_text_binding_preserves_nested_inner_blocks( $block_content, $bound_value, $expected_rendered_block, $removed_strings, $preserved_strings ) { + register_block_bindings_source( + self::SOURCE_NAME, + array( + 'label' => self::SOURCE_LABEL, + 'get_value_callback' => static function () use ( $bound_value ) { + return $bound_value; + }, + ) + ); + + $parsed_blocks = parse_blocks( $block_content ); + $block = new WP_Block( $parsed_blocks[0] ); + $result = $block->render(); + + foreach ( $removed_strings as $removed_string ) { + $this->assertStringNotContainsString( + $removed_string, + $result, + "Fallback content '{$removed_string}' should be replaced by the source value." + ); + } + + foreach ( $preserved_strings as $preserved_string ) { + $this->assertStringContainsString( + $preserved_string, + $result, + "Nested inner block content '{$preserved_string}' should be preserved." + ); + } + + $this->assertEqualHTML( + $expected_rendered_block, + trim( $result ), + '<body>', + 'The bound list item rich text should be replaced without dropping nested inner blocks.' + ); + $this->assertSame( + $bound_value, + $block->inner_blocks[0]->attributes['content'], + 'The bound list item content attribute should be updated with the source value.' + ); + } + + /** + * Tests that inner-block preservation is block-agnostic. + * + * The replacement logic has no block-specific handling: it relies only on + * where inner blocks render. This registers an arbitrary block whose bound + * rich text and an inner block share the same element, and confirms the inner + * block is preserved exactly as it is for `core/list-item`. + * + * @ticket 65406 + * + * @covers WP_Block::render + */ + public function test_rich_text_binding_preserves_inner_blocks_for_any_block() { + register_block_type( + 'test/rich-text-with-inner-blocks', + array( + 'attributes' => array( + 'content' => array( + 'type' => 'rich-text', + 'source' => 'rich-text', + 'selector' => 'div', + ), + ), + ) + ); + + $supported_attributes_filter = static function ( $supported_attributes, $block_type ) { + if ( 'test/rich-text-with-inner-blocks' === $block_type ) { + $supported_attributes[] = 'content'; + } + return $supported_attributes; + }; + + add_filter( + 'block_bindings_supported_attributes', + $supported_attributes_filter, + 10, + 2 + ); + + register_block_bindings_source( + self::SOURCE_NAME, + array( + 'label' => self::SOURCE_LABEL, + 'get_value_callback' => static function () { + return 'Bound value'; + }, + ) + ); + + $block_content = <<<HTML +<!-- wp:test/rich-text-with-inner-blocks {"metadata":{"bindings":{"content":{"source":"test/source"}}}} --> +<div><!-- wp:paragraph --> +<p>Inner paragraph stays</p> +<!-- /wp:paragraph --></div> +<!-- /wp:test/rich-text-with-inner-blocks --> +HTML; + + $parsed_blocks = parse_blocks( $block_content ); + $block = new WP_Block( $parsed_blocks[0] ); + $result = $block->render(); + + remove_filter( 'block_bindings_supported_attributes', $supported_attributes_filter, 10 ); + unregister_block_type( 'test/rich-text-with-inner-blocks' ); + + $expected_rendered_block = <<<HTML +<div>Bound value +<p class="wp-block-paragraph">Inner paragraph stays</p> +</div> +HTML; + + $this->assertEqualHTML( + $expected_rendered_block, + trim( $result ), + '<body>', + 'The inner block should be preserved for any block, not just core/list-item.' + ); + } + + /** + * Tests that a pattern overrides `__default` binding preserves nested List + * inner blocks. + * + * Pattern overrides expand the `__default` binding into computed attributes + * that include the rewritten `metadata` attribute alongside `content`. The + * `metadata` attribute has no HTML source, so its no-op replacement must not + * invalidate the inner-block offsets used to preserve the nested list when + * `content` is replaced afterwards. + * + * @ticket 65406 + * + * @covers WP_Block::render + */ + public function test_pattern_overrides_binding_preserves_nested_inner_blocks() { + $block_content = <<<HTML +<!-- wp:list --> +<ul class="wp-block-list"><!-- wp:list-item {"metadata":{"bindings":{"__default":{"source":"core/pattern-overrides"}},"name":"Editable List Item"}} --> +<li>Default content<!-- wp:list --> +<ul class="wp-block-list"><!-- wp:list-item --> +<li>Nested child</li> +<!-- /wp:list-item --></ul> +<!-- /wp:list --></li> +<!-- /wp:list-item --></ul> +<!-- /wp:list --> +HTML; + + $parsed_blocks = parse_blocks( $block_content ); + $block = new WP_Block( + $parsed_blocks[0], + array( + 'pattern/overrides' => array( + 'Editable List Item' => array( 'content' => 'Pattern <em>override</em>' ), + ), + ) + ); + $result = $block->render(); + + $expected_rendered_block = <<<HTML +<ul class="wp-block-list"> +<li>Pattern <em>override</em> +<ul class="wp-block-list"> +<li>Nested child</li> +</ul> +</li> +</ul> +HTML; + + $this->assertEqualHTML( + $expected_rendered_block, + trim( $result ), + '<body>', + 'The pattern override should replace the list item rich text without dropping the nested list.' + ); + $this->assertSame( + 'Pattern <em>override</em>', + $block->inner_blocks[0]->attributes['content'], + 'The list item content attribute should be updated with the pattern override value.' + ); + } + + /** + * Tests that binding degrades safely when rich text does not precede the + * inner block. + * + * The replacement assumes a block's own rich text comes before its inner + * blocks, which holds for a normally authored List Item. When markup is + * authored with the nested list first, the replacement stops at that inner + * block: the bound value is written ahead of it and the trailing rich text + * is left in place. The result is an incomplete replacement, never broken + * structure, and the nested inner block is still preserved. + * + * @ticket 65406 + * + * @covers WP_Block::render + */ + public function test_rich_text_binding_with_inner_block_before_text() { + $block_content = <<<HTML +<!-- wp:list --> +<ul class="wp-block-list"><!-- wp:list-item {"metadata":{"bindings":{"content":{"source":"test/source"}}}} --> +<li><!-- wp:list --> +<ul class="wp-block-list"><!-- wp:list-item --> +<li>Nested child</li> +<!-- /wp:list-item --></ul> +<!-- /wp:list -->trailing text</li> +<!-- /wp:list-item --></ul> +<!-- /wp:list --> +HTML; + + register_block_bindings_source( + self::SOURCE_NAME, + array( + 'label' => self::SOURCE_LABEL, + 'get_value_callback' => static function () { + return 'Bound value'; + }, + ) + ); + + $parsed_blocks = parse_blocks( $block_content ); + $block = new WP_Block( $parsed_blocks[0] ); + $result = $block->render(); + + $expected_rendered_block = <<<HTML +<ul class="wp-block-list"> +<li>Bound value +<ul class="wp-block-list"> +<li>Nested child</li> +</ul> +trailing text</li> +</ul> +HTML; + + $this->assertEqualHTML( + $expected_rendered_block, + trim( $result ), + '<body>', + 'The bound value should be written before the inner block while preserving the nested list and the trailing rich text.' + ); + $this->assertStringContainsString( + 'Nested child', + $result, + 'The nested list inner block should be preserved.' + ); + $this->assertStringContainsString( + 'trailing text', + $result, + 'Rich text after the inner block should be left untouched.' + ); + } + + /** + * Builds List block markup. + * + * @param string[] $items Serialized List Item blocks. + * @param array $attributes Optional List block attributes. + * @return string Serialized List block markup. + */ + private static function build_list_block( $items, $attributes = array() ) { + $is_ordered = ! empty( $attributes['ordered'] ); + $tag_name = $is_ordered ? 'ol' : 'ul'; + $block_attributes = $attributes ? ' ' . wp_json_encode( $attributes ) : ''; + $html_attributes = ' class="wp-block-list"'; + + if ( isset( $attributes['start'] ) ) { + $html_attributes .= ' start="' . (int) $attributes['start'] . '"'; + } + + return sprintf( + "<!-- wp:list%s -->\n<%s%s>%s</%s>\n<!-- /wp:list -->", + $block_attributes, + $tag_name, + $html_attributes, + implode( '', $items ), + $tag_name + ); + } + + /** + * Builds List Item block markup. + * + * @param string $content List item inner HTML. + * @param bool $is_bound Optional. Whether to bind the content attribute. + * @return string Serialized List Item block markup. + */ + private static function build_list_item_block( $content, $is_bound = false ) { + $block_attributes = $is_bound ? ' {"metadata":{"bindings":{"content":{"source":"test/source"}}}}' : ''; + + return sprintf( + "<!-- wp:list-item%s -->\n<li>%s</li>\n<!-- /wp:list-item -->", + $block_attributes, + $content + ); + } } diff --git a/tests/phpunit/tests/block-bindings/wp-block-get-block-bindings-processor.php b/tests/phpunit/tests/block-bindings/wp-block-get-block-bindings-processor.php index afdad9bd28512..f7f65b56738a9 100644 --- a/tests/phpunit/tests/block-bindings/wp-block-get-block-bindings-processor.php +++ b/tests/phpunit/tests/block-bindings/wp-block-get-block-bindings-processor.php @@ -40,6 +40,33 @@ public function test_replace_rich_text() { ); } + /** + * @ticket 65406 + */ + public function test_replace_rich_text_stops_at_inner_block_offset() { + $item_opener = '<li>'; + $rich_text = 'This should not appear'; + $nested_list = '<ul class="wp-block-list"><li>Nested child</li></ul>'; + $item_closer = '</li>'; + + $processor = self::$get_block_bindings_processor_method->invoke( + null, + $item_opener . $rich_text . $nested_list . $item_closer + ); + $processor->next_tag( array( 'tag_name' => 'li' ) ); + + $this->assertTrue( + $processor->replace_rich_text( + 'New list item content', + array( strlen( $item_opener . $rich_text ) ) + ) + ); + $this->assertEquals( + $item_opener . 'New list item content' . $nested_list . $item_closer, + $processor->get_updated_html() + ); + } + /** * @ticket 63840 */ From 54eca7b249db88ab7991dcf8c7a7832ad2f9830e Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Thu, 18 Jun 2026 16:45:40 +0000 Subject: [PATCH 221/327] Charset: Limit _wp_scan_utf8() ASCII scan to remaining code points. The ASCII fast-path in `_wp_scan_utf8()` uses `strspn()` to skip past ASCII bytes. When a code point limit was provided without a byte limit, the scan would include the rest of the input even when there was a code point limit. Because ASCII characters are single-byte code points, the fast-path scan length can be bounded by the number of remaining code points. This improves performance when working with some large documents. Developed in https://github.com/WordPress/wordpress-develop/pull/12214. Follow-up to [60768]. Props jonsurrell, dmsnell, zieladam. Fixes #65483. See #63863. git-svn-id: https://develop.svn.wordpress.org/trunk@62523 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/compat-utf8.php | 2 +- .../tests/compat/wpUtf8CodePointSpan.php | 103 ++++++++++++++++++ 2 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 tests/phpunit/tests/compat/wpUtf8CodePointSpan.php diff --git a/src/wp-includes/compat-utf8.php b/src/wp-includes/compat-utf8.php index e1cab36ea3244..5fa8cde158789 100644 --- a/src/wp-includes/compat-utf8.php +++ b/src/wp-includes/compat-utf8.php @@ -65,7 +65,7 @@ function _wp_scan_utf8( string $bytes, int &$at, int &$invalid_length, ?int $max "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" . " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f", $i, - $end - $i + min( $end - $i, $max_count - $count ) ); if ( $count + $ascii_byte_count >= $max_count ) { diff --git a/tests/phpunit/tests/compat/wpUtf8CodePointSpan.php b/tests/phpunit/tests/compat/wpUtf8CodePointSpan.php new file mode 100644 index 0000000000000..4bb5e0c272223 --- /dev/null +++ b/tests/phpunit/tests/compat/wpUtf8CodePointSpan.php @@ -0,0 +1,103 @@ +<?php +/** + * Unit tests covering fallback UTF-8 code-point span detection. + * + * @package WordPress + * @subpackage Charset + * + * @group compat + * + * @covers ::_wp_utf8_codepoint_span() + */ +class Tests_Compat_wpUtf8CodePointSpan extends WP_UnitTestCase { + /** + * Ensures that the span accounts for the requested number of code points. + * + * @dataProvider data_codepoint_spans + * + * @ticket 65483 + * @ticket 63863 + * + * @param string $text + * @param int $byte_offset + * @param int $max_code_points + * @param int $expected_span + * @param int $expected_found + */ + public function test_finds_codepoint_spans( string $text, int $byte_offset, int $max_code_points, int $expected_span, int $expected_found ) { + $found_code_points = null; + + $this->assertSame( + $expected_span, + _wp_utf8_codepoint_span( $text, $byte_offset, $max_code_points, $found_code_points ), + 'Should have found the expected byte span.' + ); + + $this->assertSame( + $expected_found, + $found_code_points, + 'Should have reported the expected number of code points.' + ); + } + + /** + * Data provider. + * + * @return array<string, array{0: string, 1: int, 2: int, 3: int, 4: int}> + */ + public static function data_codepoint_spans() { + $long_ascii_run = str_repeat( 'a', 1024 ); + + return array( + 'zero code point budget' => array( + 'abcdef', + 0, + 0, + 0, + 0, + ), + 'long ASCII run at start' => array( + $long_ascii_run, + 0, + 5, + 5, + 5, + ), + 'long ASCII run from non-zero offset' => array( + "zz{$long_ascii_run}", + 2, + 5, + 5, + 5, + ), + 'multibyte character before the boundary' => array( + "ab\u{1F170}cd", + 0, + 2, + 2, + 2, + ), + 'multibyte character at the boundary' => array( + "ab\u{1F170}cd", + 0, + 3, + strlen( "ab\u{1F170}" ), + 3, + ), + 'invalid span after the boundary' => array( + "ab\xF0\x9Fzz", + 0, + 2, + 2, + 2, + ), + 'invalid span at the boundary' => array( + "ab\xF0\x9Fzz", + 0, + 3, + 4, + 3, + ), + ); + } +} From 9569f228755792542f0e10047b991c82f5b07e5f Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Thu, 18 Jun 2026 17:49:04 +0000 Subject: [PATCH 222/327] Performance: avoid over-allocation in wp_is_numeric_array() When a trace of allocations revealed that `wp_is_numeric_array()` accounted for a significant fraction of the allocations in a page render, it was observed that the function eagerly allocates and copies array keys and then filters them when all it wants to know is whether a single key in the array meets a condition. In this patch the `array_filter( array_keys() )` invocation is replaced with early-aborting iteration to avoid the memory allocation and copying. This patch was prepared as part of WCEU 2026 Contributor Day. Developed in: https://github.com/WordPress/wordpress-develop/pull/12100 Discussed in: https://core.trac.wordpress.org/ticket/65467 Follow-up to [34927]. Props dmsnell, westonruter, yusufmudagal. Fixes #65467. git-svn-id: https://develop.svn.wordpress.org/trunk@62524 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/functions.php | 29 ++++++++++++++++--- .../tests/functions/wpIsNumericArray.php | 23 ++++++++++----- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index d7d2ff3fed89a..355d9f8a1ec37 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -5290,20 +5290,41 @@ function _wp_to_kebab_case( $input_string ) { /** * Determines if the variable is a numeric-indexed array. * + * Note! This answers a different question than {@see array_is_list()} and is + * more flexible to handle situations where some numeric array indices + * have been removed. A numeric-indexed array is only a “list” when the + * array keys form a contiguous range from zero to the highest key. + * + * Example: + * + * true === wp_is_numeric_array( array( 1, 2, 3, 4 ) ); + * false === wp_is_numeric_array( array( 'name' => 'WordPress' ) ); + * + * // All-numeric keys vs. list. + * $above_two = array_filter( array( 1, 2, 8, 9 ), fn ( $v ) => $v > 2 ); + * $above_two === array( '2' => 8, '3' => 9 ); + * true === wp_is_numeric_array( $above_two ); + * false === array_is_list( $above_two ); + * * @since 4.4.0 * * @param mixed $data Variable to check. * @return bool Whether the variable is a list. + * + * @phpstan-assert-if-true array<int, mixed> $data */ -function wp_is_numeric_array( $data ) { +function wp_is_numeric_array( $data ): bool { if ( ! is_array( $data ) ) { return false; } - $keys = array_keys( $data ); - $string_keys = array_filter( $keys, 'is_string' ); + foreach ( $data as $key => $value ) { + if ( is_string( $key ) ) { + return false; + } + } - return count( $string_keys ) === 0; + return true; } /** diff --git a/tests/phpunit/tests/functions/wpIsNumericArray.php b/tests/phpunit/tests/functions/wpIsNumericArray.php index 4eeab0af81f2a..4bf7b0cc1695b 100644 --- a/tests/phpunit/tests/functions/wpIsNumericArray.php +++ b/tests/phpunit/tests/functions/wpIsNumericArray.php @@ -26,27 +26,34 @@ public function test_wp_is_numeric_array( $input, $expected ) { */ public function data_wp_is_numeric_array() { return array( - 'no index' => array( + 'no index' => array( 'test_array' => array( 'www', 'eee' ), 'expected' => true, ), - 'text index' => array( + 'text index' => array( 'test_array' => array( 'www' => 'eee' ), 'expected' => false, ), - 'numeric index' => array( + 'numeric index' => array( 'test_array' => array( 99 => 'eee' ), 'expected' => true, ), - '- numeric index' => array( + 'filtered list (missing numeric keys)' => array( + 'test_array' => array_filter( + array( 1, 12, 13, 15, 16, 17, 20 ), + fn ( $v ) => 0 === $v % 2 + ), + 'expected' => true, + ), + '- numeric index' => array( 'test_array' => array( -11 => 'eee' ), 'expected' => true, ), - 'numeric string index' => array( + 'numeric string index' => array( 'test_array' => array( '11' => 'eee' ), 'expected' => true, ), - 'nested number index' => array( + 'nested number index' => array( 'test_array' => array( 'next' => array( 11 => 'vvv', @@ -54,7 +61,7 @@ public function data_wp_is_numeric_array() { ), 'expected' => false, ), - 'nested string index' => array( + 'nested string index' => array( 'test_array' => array( '11' => array( 'eee' => 'vvv', @@ -62,7 +69,7 @@ public function data_wp_is_numeric_array() { ), 'expected' => true, ), - 'not an array' => array( + 'not an array' => array( 'test_array' => null, 'expected' => false, ), From 1dd2210986616c5a67fbd65d01b1b20411106aa0 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Thu, 18 Jun 2026 21:08:09 +0000 Subject: [PATCH 223/327] Build/Test Tools: Ensure all built files are deleted as expected. Block editor-related files can currently become stale or are not always deleted from `src` through the relevant `grunt clean` commands reliably. In the past, this primarily caused issues locally when a CSS file was copied from the `@wordpress/block-library` npm package into `src` and later removed from the package entirely. The result was a failing `grunt verify:old-files` task until the `grunt clean` command was run with the `--dev` flag. After [61438] this issue presented in new ways. Mainly, files would remain in the core.svn.wordpress.org build repository indefinitely unless explicitly deleted. [62051] brought the `grunt clean` tasks up to date, but there are still paths where files remain unexpectedly or have outdated contents after rebuilding. This can cause incomplete or inaccurate commits where built files subject to version control are not updated correctly, especially when changing the `gutenberg.sha` value in `package.json`. This change improves the build script to ensure that all files sourced from the zip file with assets built by the Gutenberg repository are always fresh and up to date, and any files that are deleted from the built zip file are also deleted from version control appropriately (in both the `develop` and `core` repositories). A handful of changes were required to accomplish this: - All Gutenberg-sourced outputs are written to `src/` regardless of `--dev`. In production builds, `build:gutenberg` runs before `build:files`, and `copy:files` propagates the tree to `build/`. - `gutenbergFiles` has been split into two different arrays: `gutenbergUnversionedFiles` and `gutenbergVersionedFiles`. The `src` argument for the `clean:gutenberg` task is dynamically populated at run time with a bare `grunt clean` cleaning only the unversioned subset (so version-controlled files are not unexpectedly deleted), and explicit `clean:gutenberg` (or any chain through `build:gutenberg`) cleans both, removing files deleted upstream from version control. - `clean:gutenberg` no longer wipes non-Gutenberg sourced files from `wp-includes/js/`. All file/path lists have been updated to only match files the related tasks are directly responsible for managing. - `tools/gutenberg/copy.js` has been added to `tsconfig.json` and brought under `tsc --build` strict-mode checking. The large `copyBlockAssets()` function was broken into one named function per asset type, each typed against the relevant `COPY_CONFIG` slice. The split is a code-clarity improvement, not a bug fix. Props desrosj, westonruter, jorbin, adamsilverstein. Fixes #65452. git-svn-id: https://develop.svn.wordpress.org/trunk@62525 602fd350-edb4-49c9-b593-d223f7449a82 --- Gruntfile.js | 128 +++++++---- package.json | 2 +- tools/gutenberg/copy.js | 458 +++++++++++++++++++++++---------------- tools/gutenberg/utils.js | 4 +- tsconfig.json | 1 + 5 files changed, 371 insertions(+), 222 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 2ce79d03bddc6..dae8c3e972e4c 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -41,18 +41,43 @@ module.exports = function(grunt) { 'wp-admin/css/colors/**/*.css', ], - // Built js files, in /src or /build. + // Built JavaScript files that do not belong to a more specific group. jsFiles = [ 'wp-admin/js/', - 'wp-includes/js/', + 'wp-includes/js/*', + /* + * This directory has shared responsibility and is managed through + * gutenbergUnversionedFiles, webpackFiles, and copy:vendor-js. + */ + '!wp-includes/js/dist', + 'wp-includes/js/dist/vendor/*.js', + // Managed by the Gutenberg-related tasks. + '!wp-includes/js/dist/vendor/react-jsx-runtime*', + ], + + // Files sourced from the Gutenberg repository built asset that are ignored by version control. + gutenbergUnversionedFiles = [ + SOURCE_DIR + 'wp-includes/blocks/*/*.css', + SOURCE_DIR + 'wp-includes/css/dist', + SOURCE_DIR + 'wp-includes/js/dist/*.js', + SOURCE_DIR + 'wp-includes/js/dist/script-modules', + SOURCE_DIR + 'wp-includes/js/dist/vendor/react-jsx-runtime*', ], - // All files copied from the Gutenberg repository excluded from version control. - gutenbergFiles = [ - 'wp-includes/js/dist', - 'wp-includes/css/dist', - // Old location kept temporarily to ensure they are cleaned up. - 'wp-includes/icons', + // Files sourced from the Gutenberg repository built asset that are managed through version control. + gutenbergVersionedFiles = [ + // Block assets (block.json, top-level PHP, nested PHP helpers). + SOURCE_DIR + 'wp-includes/blocks/*', + '!' + SOURCE_DIR + 'wp-includes/blocks/index.php', + SOURCE_DIR + 'wp-includes/images/icon-library', + SOURCE_DIR + 'wp-includes/theme.json', + SOURCE_DIR + 'wp-includes/theme-i18n.json', + // Routes and pages. + SOURCE_DIR + 'wp-includes/build', + // PHP manifests generated by gutenberg:copy. + SOURCE_DIR + 'wp-includes/assets/icon-library-manifest.php', + SOURCE_DIR + 'wp-includes/assets/script-loader-packages.php', + SOURCE_DIR + 'wp-includes/assets/script-modules-packages.php', ], // All files built by Webpack, in /src or /build. @@ -241,10 +266,32 @@ module.exports = function(grunt) { return setFilePath( WORKING_DIR, file ); } ), - // Clean files built by the tools/gutenberg scripts. - gutenberg: gutenbergFiles.map( function( file ) { - return setFilePath( WORKING_DIR, file ); - }), + /* + * Clean files sourced from the downloaded zip file built by the Gutenberg repository. + * + * All files originating from the Gutenberg repository's built assets (both tracked and untracked by version + * control) are deleted when `clean:gutenberg` is explicitly called. This ensures that versioned files that + * have been deleted upstream are also removed from version control in this repository. + * + * When `clean:gutenberg` is not explicitly called and run through `grunt clean`, only ignored files are + * cleaned. + */ + gutenberg: { + get src() { + const cli = grunt.cli.tasks; + // Preserve versioned files only when running bare `grunt clean`. + const isBareCleanSweep = + cli.includes( 'clean' ) && + ! cli.includes( 'clean:gutenberg' ); + + if ( isBareCleanSweep ) { + return gutenbergUnversionedFiles; + } else { + return gutenbergUnversionedFiles.concat( gutenbergVersionedFiles ); + } + }, + }, + dynamic: { dot: true, expand: true, @@ -289,7 +336,6 @@ module.exports = function(grunt) { expand: true, cwd: SOURCE_DIR, src: buildFiles.concat( [ - '!wp-includes/assets/**', // Assets is extracted into separate copy tasks. '!js/**', // JavaScript is extracted into separate copy tasks. '!.{svn,git}', // Exclude version control folders. '!wp-includes/version.php', // Exclude version.php. @@ -666,24 +712,18 @@ module.exports = function(grunt) { 'constants.php', 'pages/**/*.php', ], - dest: WORKING_DIR + 'wp-includes/build/', + dest: SOURCE_DIR + 'wp-includes/build/', } ], }, /* - * Only copy files relevant to the routes specified in the registry file. - * - * While the registry file does not contain any experimental routes, the `gutenberg/build/routes` directory - * includes the files for all registered routes. Only the files related to the routes specified in the - * registry should be included in the WordPress build. - * - * The `src` list is populated at task runtime by `routes:setup`, which reads the registry after - * `gutenberg:download` has run. See the `routes:setup` task registration for implementation details. + * The list of route source files is populated from the contents of the registry.php file at task runtime by + * `routes:setup`. */ routes: { expand: true, cwd: 'gutenberg/build', src: [], - dest: WORKING_DIR + 'wp-includes/build/', + dest: SOURCE_DIR + 'wp-includes/build/', }, 'gutenberg-js': { files: [ { @@ -692,7 +732,7 @@ module.exports = function(grunt) { src: [ 'pages/**/*.js', ], - dest: WORKING_DIR + 'wp-includes/build/', + dest: SOURCE_DIR + 'wp-includes/build/', } ], }, 'gutenberg-modules': { @@ -706,7 +746,7 @@ module.exports = function(grunt) { // with no debugging value over the minified versions. '!vips/!(*.min).js', ], - dest: WORKING_DIR + 'wp-includes/js/dist/script-modules/', + dest: SOURCE_DIR + 'wp-includes/js/dist/script-modules/', } ], }, 'gutenberg-styles': { @@ -719,7 +759,7 @@ module.exports = function(grunt) { // Per-block CSS is copied to wp-includes/blocks/ by tools/gutenberg/copy.js. '!block-library/*/**', ], - dest: WORKING_DIR + 'wp-includes/css/dist/', + dest: SOURCE_DIR + 'wp-includes/css/dist/', } ], }, 'gutenberg-theme-json': { @@ -738,11 +778,11 @@ module.exports = function(grunt) { files: [ { src: 'gutenberg/lib/theme.json', - dest: WORKING_DIR + 'wp-includes/theme.json', + dest: SOURCE_DIR + 'wp-includes/theme.json', }, { src: 'gutenberg/lib/theme-i18n.json', - dest: WORKING_DIR + 'wp-includes/theme-i18n.json', + dest: SOURCE_DIR + 'wp-includes/theme-i18n.json', }, ], }, @@ -750,8 +790,8 @@ module.exports = function(grunt) { files: [ { expand: true, cwd: 'gutenberg/packages/icons/src/library', - src: '*.svg', - dest: WORKING_DIR + 'wp-includes/images/icon-library', + src: [ '*.svg' ], + dest: SOURCE_DIR + 'wp-includes/images/icon-library', } ], }, 'icon-library-manifest': { @@ -773,7 +813,7 @@ module.exports = function(grunt) { }, files: [ { src: 'gutenberg/packages/icons/src/manifest.php', - dest: WORKING_DIR + 'wp-includes/assets/icon-library-manifest.php', + dest: SOURCE_DIR + 'wp-includes/assets/icon-library-manifest.php', } ], }, }, @@ -1667,7 +1707,7 @@ module.exports = function(grunt) { */ grunt.util.spawn( { grunt: true, - args: [ 'build:gutenberg', '--dev' ], + args: [ 'build:gutenberg' ], opts: { stdio: 'inherit' } }, function( buildError ) { done( ! buildError ); @@ -1677,10 +1717,9 @@ module.exports = function(grunt) { grunt.registerTask( 'gutenberg:copy', 'Copies Gutenberg JS packages and block assets to WordPress Core.', function() { const done = this.async(); - const buildDir = grunt.option( 'dev' ) ? 'src' : 'build'; grunt.util.spawn( { cmd: 'node', - args: [ 'tools/gutenberg/copy.js', `--build-dir=${ buildDir }` ], + args: [ 'tools/gutenberg/copy.js' ], opts: { stdio: 'inherit' } }, function( error ) { done( ! error ); @@ -2164,10 +2203,23 @@ module.exports = function(grunt) { } ); } ); - grunt.registerTask( 'build:gutenberg', [ - 'copy:gutenberg-php', + // Detects and copies stable routes. + grunt.registerTask( 'build:routes', [ 'routes:setup', 'copy:routes', + ] ); + + /* + * Refresh the Gutenberg-sourced content in src/. + * + * clean:gutenberg must run first to ensure files removed upstream are purged. + * + * Because all of these tasks write to src/, the outcome is identical for build and build:dev. + */ + grunt.registerTask( 'build:gutenberg', [ + 'clean:gutenberg', + 'copy:gutenberg-php', + 'build:routes', 'copy:gutenberg-js', 'gutenberg:copy', 'copy:gutenberg-modules', @@ -2181,21 +2233,21 @@ module.exports = function(grunt) { if ( grunt.option( 'dev' ) ) { grunt.task.run( [ 'gutenberg:verify', + 'build:gutenberg', 'build:js', 'build:css', 'build:codemirror', - 'build:gutenberg', 'build:certificates' ] ); } else { grunt.task.run( [ 'gutenberg:verify', + 'build:gutenberg', 'build:certificates', 'build:files', 'build:js', 'build:css', 'build:codemirror', - 'build:gutenberg', 'replace:source-maps', 'verify:build' ] ); diff --git a/package.json b/package.json index 430efdd2fba85..429e0469dd491 100644 --- a/package.json +++ b/package.json @@ -141,6 +141,6 @@ "typecheck:php": "node ./tools/local-env/scripts/docker.js run --rm php composer phpstan", "gutenberg:copy": "node tools/gutenberg/copy.js", "gutenberg:verify": "node tools/gutenberg/utils.js", - "gutenberg:download": "node tools/gutenberg/download.js && grunt build:gutenberg --dev" + "gutenberg:download": "node tools/gutenberg/download.js && grunt build:gutenberg" } } diff --git a/tools/gutenberg/copy.js b/tools/gutenberg/copy.js index 8589c9581bed1..3da78e4b14611 100644 --- a/tools/gutenberg/copy.js +++ b/tools/gutenberg/copy.js @@ -6,32 +6,59 @@ * This script copies and transforms Gutenberg's build output to WordPress Core. * It handles path transformations from plugin structure to Core structure. * + * Since a number of files sourced from the downloaded zip file are subject to + * version control, the `src/` directory is used as the destination for all + * outputs of this file (both versioned and unversioned). + * + * Grunt will copy the files appropriately when running `build` instead of + * `build:dev`, and the repository's configured ignore rules will manage what + * can be committed. + * * @package WordPress */ const fs = require( 'fs' ); const path = require( 'path' ); -const json2php = require( 'json2php' ); +const json2php = /** @type {typeof import('json2php').default} */ ( + /** @type {unknown} */ ( require( 'json2php' ) ) +); const { fromString } = require( 'php-array-reader' ); -// Paths. const rootDir = path.resolve( __dirname, '../..' ); const gutenbergDir = path.join( rootDir, 'gutenberg' ); const gutenbergBuildDir = path.join( gutenbergDir, 'build' ); +const wpIncludesDir = path.join( rootDir, 'src', 'wp-includes' ); + +/** + * JS package copy configuration. + * + * @typedef ScriptsConfig + * @type {object} + * @property {string} source - Gutenberg-relative source directory (e.g. `'scripts'`). + * @property {string} destination - Subpath under `wp-includes/` where packages land (e.g. `'js/dist'`). + * @property {boolean} copyDirectories - Whether to copy whole directories (with optional renames) as-is. + * @property {Record<string, string>} directoryRenames - Map of source directory name → destination directory name. + */ -/* - * Determine build target from command line argument (--dev or --build-dir). - * Default to 'src' for development. +/** + * One block family entry — block library, widget blocks, etc. + * + * @typedef BlockConfigSource + * @type {object} + * @property {string} name - Human-readable label (e.g. `'block-library'`, `'widgets'`). + * @property {string} scripts - Gutenberg-relative path to the block scripts directory. + * @property {string} styles - Gutenberg-relative path to the block styles directory. + * @property {string} php - Gutenberg-relative path to the block PHP directory. */ -const args = process.argv.slice( 2 ); -const buildDirArg = args.find( ( arg ) => arg.startsWith( '--build-dir=' ) ); -const buildTarget = buildDirArg - ? buildDirArg.split( '=' )[ 1 ] - : args.includes( '--dev' ) - ? 'src' - : 'build'; -const wpIncludesDir = path.join( rootDir, buildTarget, 'wp-includes' ); +/** + * Block copy configuration. + * + * @typedef BlockConfig + * @type {object} + * @property {string} destination - Subpath under `wp-includes/` where blocks land (e.g. `'blocks'`). + * @property {BlockConfigSource[]} sources - One entry per block family. + */ /** * Copy configuration. @@ -81,7 +108,7 @@ const COPY_CONFIG = { * @throws Error when PHP source file unable to be read or parsed. * * @param {string} phpFilepath Absolute path of PHP file returning a single value. - * @return {Object|Array} JavaScript representation of value from input file. + * @return {any} JavaScript representation of value from input file. */ function readReturnedValueFromPHPFile( phpFilepath ) { const content = fs.readFileSync( phpFilepath, 'utf8' ); @@ -109,104 +136,244 @@ function isExperimentalBlock( blockJsonPath ) { } /** - * Copy all assets for blocks from Gutenberg to Core. - * Handles scripts, styles, PHP, and JSON for all block types in a unified way. + * Generate a list of stable blocks. * - * @param {Object} config - Block configuration from COPY_CONFIG.blocks + * Blocks marked as `"__experimental": true` in a `block.json` file are excluded. + * + * @param {string} scriptsSrc - Path to the Gutenberg scripts source (e.g. `scripts/block-library`). + * @return {string[]} Stable block directory names. */ -function copyBlockAssets( config ) { - const blocksDest = path.join( wpIncludesDir, config.destination ); +function getStableBlocks( scriptsSrc ) { + if ( ! fs.existsSync( scriptsSrc ) ) { + return []; + } + return fs + .readdirSync( scriptsSrc, { withFileTypes: true } ) + .filter( ( entry ) => entry.isDirectory() ) + .map( ( entry ) => entry.name ) + .filter( ( blockName ) => ! isExperimentalBlock( + path.join( scriptsSrc, blockName, 'block.json' ) + ) ); +} - for ( const source of config.sources ) { - const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); - const stylesSrc = path.join( gutenbergBuildDir, source.styles ); - const phpSrc = path.join( gutenbergBuildDir, source.php ); +/** + * Copy JavaScript files. + * + * @param {ScriptsConfig} config - Scripts configuration from `COPY_CONFIG.scripts`. + */ +function copyScripts( config ) { + const scriptsSrc = path.join( gutenbergBuildDir, config.source ); + const scriptsDest = path.join( wpIncludesDir, config.destination ); - if ( ! fs.existsSync( scriptsSrc ) ) { - continue; - } + if ( ! fs.existsSync( scriptsSrc ) ) { + return; + } - // Get all block directories from the scripts source. - const blockDirs = fs - .readdirSync( scriptsSrc, { withFileTypes: true } ) - .filter( ( entry ) => entry.isDirectory() ) - .map( ( entry ) => entry.name ); - - for ( const blockName of blockDirs ) { - // Skip experimental blocks. - const blockJsonPath = path.join( - scriptsSrc, - blockName, - 'block.json' - ); - if ( isExperimentalBlock( blockJsonPath ) ) { - continue; + const entries = fs.readdirSync( scriptsSrc, { withFileTypes: true } ); + + for ( const entry of entries ) { + const src = path.join( scriptsSrc, entry.name ); + + if ( entry.isDirectory() ) { + // Check if this should be copied as a directory (like vendors/). + if ( + config.copyDirectories && + config.directoryRenames && + config.directoryRenames[ entry.name ] + ) { + /* + * Copy special directories with rename (vendors/ → vendor/). + * Only copy react-jsx-runtime from vendors (react and react-dom come from Core's node_modules). + */ + const destName = config.directoryRenames[ entry.name ]; + const dest = path.join( scriptsDest, destName ); + + if ( entry.name === 'vendors' ) { + // Only copy react-jsx-runtime files, skip react and react-dom. + const vendorFiles = fs.readdirSync( src ); + let copiedCount = 0; + fs.mkdirSync( dest, { recursive: true } ); + for ( const file of vendorFiles ) { + if ( + file.startsWith( 'react-jsx-runtime' ) && + file.endsWith( '.js' ) + ) { + const srcFile = path.join( src, file ); + const destFile = path.join( dest, file ); + + fs.copyFileSync( srcFile, destFile ); + copiedCount++; + } + } + console.log( + ` ✅ ${ entry.name }/ → ${ destName }/ (react-jsx-runtime only, ${ copiedCount } files)` + ); + } + } else { + /* + * Flatten package structure: package-name/index.js → package-name.js. + * This matches Core's expected file structure. + */ + const packageFiles = fs.readdirSync( src ); + + for ( const file of packageFiles ) { + if ( /^index\.(js|min\.js)$/.test( file ) ) { + const srcFile = path.join( src, file ); + // Replace 'index.' with 'package-name.'. + const destFile = file.replace( + /^index\./, + `${ entry.name }.` + ); + const destPath = path.join( scriptsDest, destFile ); + + fs.mkdirSync( path.dirname( destPath ), { + recursive: true, + } ); + + fs.copyFileSync( srcFile, destPath ); + } + } } + } else if ( entry.isFile() && entry.name.endsWith( '.js' ) ) { + // Copy root-level JS files. + const dest = path.join( scriptsDest, entry.name ); + fs.mkdirSync( path.dirname( dest ), { recursive: true } ); + fs.copyFileSync( src, dest ); + } + } + + console.log( ' ✅ JavaScript packages copied' ); +} +/** + * Copy `block.json` files for every stable block. + * + * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. + */ +function copyBlockJson( config ) { + const blocksDest = path.join( wpIncludesDir, config.destination ); + + for ( const source of config.sources ) { + const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); + const blocks = getStableBlocks( scriptsSrc ); + + for ( const blockName of blocks ) { + const blockSrc = path.join( scriptsSrc, blockName ); const blockDest = path.join( blocksDest, blockName ); fs.mkdirSync( blockDest, { recursive: true } ); - // 1. Copy scripts/JSON (everything except PHP) - const blockScriptsSrc = path.join( scriptsSrc, blockName ); - if ( fs.existsSync( blockScriptsSrc ) ) { - fs.cpSync( - blockScriptsSrc, - blockDest, - { - recursive: true, - // Skip PHP, copied from build in steps 3 & 4. - filter: f => ! f.endsWith( '.php' ), - } + const blockJsonSrc = path.join( blockSrc, 'block.json' ); + if ( fs.existsSync( blockJsonSrc ) ) { + fs.copyFileSync( + blockJsonSrc, + path.join( blockDest, 'block.json' ) ); } + } - // 2. Copy styles (if they exist in per-block directory) - const blockStylesSrc = path.join( stylesSrc, blockName ); - if ( fs.existsSync( blockStylesSrc ) ) { - const cssFiles = fs - .readdirSync( blockStylesSrc ) - .filter( ( file ) => file.endsWith( '.css' ) ); - for ( const cssFile of cssFiles ) { - fs.copyFileSync( - path.join( blockStylesSrc, cssFile ), - path.join( blockDest, cssFile ) - ); - } - } + console.log( + ` ✅ ${ source.name } block.json copied (${ blocks.length } blocks)` + ); + } +} - // 3. Copy PHP from build - const blockPhpSrc = path.join( phpSrc, `${ blockName }.php` ); - const phpDest = path.join( - wpIncludesDir, - config.destination, - `${ blockName }.php` - ); - if ( fs.existsSync( blockPhpSrc ) ) { - fs.copyFileSync( blockPhpSrc, phpDest ); +/** + * Copy block PHP files for every stable block. + * + * Handles both the top-level `<block>.php` dynamic block files and any nested + * `*.php` helpers under `<block>/` (e.g. `navigation-link/shared/render-submenu-icon.php`). + * + * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. + */ +function copyBlockPhp( config ) { + const blocksDest = path.join( wpIncludesDir, config.destination ); + + for ( const source of config.sources ) { + const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); + const phpSrc = path.join( gutenbergBuildDir, source.php ); + const blocks = getStableBlocks( scriptsSrc ); + + for ( const blockName of blocks ) { + // Top-level <block>.php (dynamic block file). + const topLevelPhpSrc = path.join( phpSrc, `${ blockName }.php` ); + const topLevelPhpDest = path.join( blocksDest, `${ blockName }.php` ); + if ( fs.existsSync( topLevelPhpSrc ) ) { + fs.mkdirSync( blocksDest, { recursive: true } ); + fs.copyFileSync( topLevelPhpSrc, topLevelPhpDest ); } - // 4. Copy PHP subdirectories from build (e.g., navigation-link/shared/*.php) + // Nested PHP helpers under <block>/, excluding the block's own index.php. const blockPhpDir = path.join( phpSrc, blockName ); if ( fs.existsSync( blockPhpDir ) ) { + const blockDest = path.join( blocksDest, blockName ); const rootIndex = path.join( blockPhpDir, 'index.php' ); + + /** + * @param {string} src + * @return {boolean} + */ + function hasPhpFiles( src ) { + const stat = fs.statSync( src ); + if ( stat.isDirectory() ) { + return fs.readdirSync( src, { withFileTypes: true } ).some( + ( entry ) => hasPhpFiles( path.join( src, entry.name ) ) + ); + } + return src.endsWith( '.php' ) && src !== rootIndex; + } + fs.cpSync( blockPhpDir, blockDest, { recursive: true, - filter: function hasPhpFiles( src ) { - const stat = fs.statSync( src ); - if ( stat.isDirectory() ) { - return fs.readdirSync( src, { withFileTypes: true } ).some( - ( entry ) => hasPhpFiles( path.join( src, entry.name ) ) - ); - } - // Copy PHP files, but skip root index.php (handled by step 3). - return src.endsWith( '.php' ) && src !== rootIndex; - }, + filter: hasPhpFiles, } ); } } console.log( - ` ✅ ${ source.name } blocks copied (${ blockDirs.length } blocks)` + ` ✅ ${ source.name } block PHP copied (${ blocks.length } blocks)` + ); + } +} + +/** + * Copy per-block CSS files for every stable block. + * + * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. + */ +function copyBlockStyles( config ) { + const blocksDest = path.join( wpIncludesDir, config.destination ); + + for ( const source of config.sources ) { + const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); + const stylesSrc = path.join( gutenbergBuildDir, source.styles ); + const blocks = getStableBlocks( scriptsSrc ); + + let stylesCopied = 0; + for ( const blockName of blocks ) { + const blockStylesSrc = path.join( stylesSrc, blockName ); + if ( ! fs.existsSync( blockStylesSrc ) ) { + continue; + } + + const blockDest = path.join( blocksDest, blockName ); + fs.mkdirSync( blockDest, { recursive: true } ); + + const cssFiles = fs + .readdirSync( blockStylesSrc ) + .filter( ( file ) => file.endsWith( '.css' ) ); + for ( const cssFile of cssFiles ) { + fs.copyFileSync( + path.join( blockStylesSrc, cssFile ), + path.join( blockDest, cssFile ) + ); + } + if ( cssFiles.length > 0 ) { + stylesCopied++; + } + } + + console.log( + ` ✅ ${ source.name } block CSS copied (${ stylesCopied } blocks)` ); } } @@ -218,6 +385,7 @@ function copyBlockAssets( config ) { */ function generateScriptModulesPackages() { const modulesDir = path.join( gutenbergBuildDir, 'modules' ); + /** @type {Record<string, any>} */ const assets = {}; /** @@ -254,7 +422,7 @@ function generateScriptModulesPackages() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ relativePath }:`, - error.message + error instanceof Error ? error.message : String( error ) ); } } @@ -291,6 +459,7 @@ function generateScriptModulesPackages() { */ function generateScriptLoaderPackages() { const scriptsDir = path.join( gutenbergBuildDir, 'scripts' ); + /** @type {Record<string, any>} */ const assets = {}; if ( ! fs.existsSync( scriptsDir ) ) { @@ -326,7 +495,7 @@ function generateScriptLoaderPackages() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ entry.name }/index.min.asset.php:`, - error.message + error instanceof Error ? error.message : String( error ) ); } } @@ -354,9 +523,10 @@ function generateScriptLoaderPackages() { } /** - * Generate require-dynamic-blocks.php and require-static-blocks.php. - * Reads all block.json files from wp-includes/blocks and categorizes them. - * Only includes blocks from block-library, not widgets. + * Generate `require-*-blocks.php` files. + * + * Reads all `block.json` files from the block-library (widgets are ignored) and + * creates `require-dynamic-blocks.php` and `require-static-blocks.php` files. */ function generateBlockRegistrationFiles() { const blocksDir = path.join( wpIncludesDir, 'blocks' ); @@ -447,12 +617,15 @@ ${ staticBlocks.map( ( name ) => `\t'${ name }',` ).join( '\n' ) } } /** - * Generate blocks-json.php from all block.json files. - * Reads all block.json files and combines them into a single PHP array. - * Uses json2php to maintain consistency with Core's formatting. + * Generate a `blocks-json.php` file. + * + * Reads all `block.json` files and combines them into a single PHP array. + * + * This must run after `copyBlockJson` has populated `wp-includes/blocks/`. */ function generateBlocksJson() { const blocksDir = path.join( wpIncludesDir, 'blocks' ); + /** @type {Record<string, any>} */ const blocks = {}; if ( ! fs.existsSync( blocksDir ) ) { @@ -478,7 +651,7 @@ function generateBlocksJson() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ entry.name }/block.json:`, - error.message + error instanceof Error ? error.message : String( error ) ); } } @@ -508,7 +681,7 @@ function generateBlocksJson() { * Main execution function. */ async function main() { - console.log( `📦 Copying Gutenberg build to ${ buildTarget }/...` ); + console.log( '📦 Copying Gutenberg build to src/...' ); if ( ! fs.existsSync( gutenbergBuildDir ) ) { console.error( '❌ Gutenberg build directory not found' ); @@ -518,95 +691,18 @@ async function main() { // 1. Copy JavaScript packages. console.log( '\n📦 Copying JavaScript packages...' ); - const scriptsConfig = COPY_CONFIG.scripts; - const scriptsSrc = path.join( gutenbergBuildDir, scriptsConfig.source ); - const scriptsDest = path.join( wpIncludesDir, scriptsConfig.destination ); + copyScripts( COPY_CONFIG.scripts ); - if ( fs.existsSync( scriptsSrc ) ) { - const entries = fs.readdirSync( scriptsSrc, { withFileTypes: true } ); + console.log( '\n📦 Copying block.json files...' ); + copyBlockJson( COPY_CONFIG.blocks ); - for ( const entry of entries ) { - const src = path.join( scriptsSrc, entry.name ); - - if ( entry.isDirectory() ) { - // Check if this should be copied as a directory (like vendors/). - if ( - scriptsConfig.copyDirectories && - scriptsConfig.directoryRenames && - scriptsConfig.directoryRenames[ entry.name ] - ) { - /* - * Copy special directories with rename (vendors/ → vendor/). - * Only copy react-jsx-runtime from vendors (react and react-dom come from Core's node_modules). - */ - const destName = - scriptsConfig.directoryRenames[ entry.name ]; - const dest = path.join( scriptsDest, destName ); - - if ( entry.name === 'vendors' ) { - // Only copy react-jsx-runtime files, skip react and react-dom. - const vendorFiles = fs.readdirSync( src ); - let copiedCount = 0; - fs.mkdirSync( dest, { recursive: true } ); - for ( const file of vendorFiles ) { - if ( - file.startsWith( 'react-jsx-runtime' ) && - file.endsWith( '.js' ) - ) { - const srcFile = path.join( src, file ); - const destFile = path.join( dest, file ); - - fs.copyFileSync( srcFile, destFile ); - copiedCount++; - } - } - console.log( - ` ✅ ${ entry.name }/ → ${ destName }/ (react-jsx-runtime only, ${ copiedCount } files)` - ); - } - } else { - /* - * Flatten package structure: package-name/index.js → package-name.js. - * This matches Core's expected file structure. - */ - const packageFiles = fs.readdirSync( src ); - - for ( const file of packageFiles ) { - if ( - /^index\.(js|min\.js)$/.test( file ) - ) { - const srcFile = path.join( src, file ); - // Replace 'index.' with 'package-name.'. - const destFile = file.replace( - /^index\./, - `${ entry.name }.` - ); - const destPath = path.join( scriptsDest, destFile ); - - fs.mkdirSync( path.dirname( destPath ), { - recursive: true, - } ); - - fs.copyFileSync( srcFile, destPath ); - } - } - } - } else if ( entry.isFile() && entry.name.endsWith( '.js' ) ) { - // Copy root-level JS files. - const dest = path.join( scriptsDest, entry.name ); - fs.mkdirSync( path.dirname( dest ), { recursive: true } ); - fs.copyFileSync( src, dest ); - } - } - - console.log( ' ✅ JavaScript packages copied' ); - } + console.log( '\n📦 Copying block PHP files...' ); + copyBlockPhp( COPY_CONFIG.blocks ); - // 2. Copy blocks (unified: scripts, styles, PHP, JSON). - console.log( '\n📦 Copying blocks...' ); - copyBlockAssets( COPY_CONFIG.blocks ); + console.log( '\n📦 Copying block CSS files...' ); + copyBlockStyles( COPY_CONFIG.blocks ); - // 3. Generate script-modules-packages.php from individual asset files. + // 3. Generate script-modules-packages.php. console.log( '\n📦 Generating script-modules-packages.php...' ); generateScriptModulesPackages(); diff --git a/tools/gutenberg/utils.js b/tools/gutenberg/utils.js index 43047b5ee5dd7..3ba95199578b4 100644 --- a/tools/gutenberg/utils.js +++ b/tools/gutenberg/utils.js @@ -139,7 +139,7 @@ async function resolveExpectedSha( { ref, ghcrRepo, isMutable } ) { /** * Trigger a fresh download of the Gutenberg artifact by spawning download.js, - * then run `grunt build:gutenberg --dev` to copy the build to src/. + * then run `grunt build:gutenberg` to copy the build into src/. * Exits the process if either step fails. */ function downloadGutenberg() { @@ -148,7 +148,7 @@ function downloadGutenberg() { process.exit( downloadResult.status ?? 1 ); } - const buildResult = spawnSync( 'grunt', [ 'build:gutenberg', '--dev' ], { stdio: 'inherit', shell: true } ); + const buildResult = spawnSync( 'grunt', [ 'build:gutenberg' ], { stdio: 'inherit', shell: true } ); if ( buildResult.status !== 0 ) { process.exit( buildResult.status ?? 1 ); } diff --git a/tsconfig.json b/tsconfig.json index 87abe9fb7a42b..e9f36c374ac89 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,6 +30,7 @@ "src/js/_enqueues/wp/code-editor.js", "src/js/_enqueues/lib/codemirror/javascript-lint.js", "src/js/_enqueues/lib/codemirror/htmlhint-kses.js", + "tools/gutenberg/copy.js", "tools/gutenberg/download.js", "tools/gutenberg/utils.js" ] From 57eb8729ec94efc6f6062d6a3ba7a9e4bad2cdc9 Mon Sep 17 00:00:00 2001 From: Aaron Jorbin <jorbin@git.wordpress.org> Date: Thu, 18 Jun 2026 21:20:32 +0000 Subject: [PATCH 224/327] Editor: Allow publish meta box action row to wrap. Instead of crowding the row, actions added by extenders should wrap to new lines. This change has been tested in both the classic editor plugin and hotfix plugin. Follow-up to [61645]. Props abhishekfdd, masteradhoc, rlucian, sabernhardt, cogdesign, threadi, darshitrajyaguru97, desrosj, davidbaumwald, jorbin. Fixes #65286. git-svn-id: https://develop.svn.wordpress.org/trunk@62526 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/common.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/wp-admin/css/common.css b/src/wp-admin/css/common.css index f48b8048c76e5..53933f0ac28a2 100644 --- a/src/wp-admin/css/common.css +++ b/src/wp-admin/css/common.css @@ -934,6 +934,7 @@ a#remove-post-thumbnail:hover, border-top: 1px solid #dcdcde; background: #f6f7f7; display: flex; + flex-wrap: wrap; align-items: center; justify-content: space-between; } From 58dc4e345f4b92c6cb93055aee86f9a6f322a0d5 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Thu, 18 Jun 2026 22:19:27 +0000 Subject: [PATCH 225/327] Docs: Correct variable reference in `wpdb::delete()` DocBlock. Follow-up to [47740]. Props nareshbheda, manishxdp. Fixes #65470. git-svn-id: https://develop.svn.wordpress.org/trunk@62527 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wpdb.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/class-wpdb.php b/src/wp-includes/class-wpdb.php index e5300e6d75122..babd45a885f1c 100644 --- a/src/wp-includes/class-wpdb.php +++ b/src/wp-includes/class-wpdb.php @@ -2758,7 +2758,7 @@ public function update( $table, $data, $where, $format = null, $where_format = n * @param string[]|string $where_format Optional. An array of formats to be mapped to each of the values in $where. * If string, that format will be used for all of the items in $where. * A format is one of '%d', '%f', '%s' (integer, float, string). - * If omitted, all values in $data will be treated as strings unless otherwise + * If omitted, all values in $where will be treated as strings unless otherwise * specified in wpdb::$field_types. Default null. * @return int|false The number of rows deleted, or false on error. */ From 4e804fb8551571e8b7102359feca334414bb84ab Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Thu, 18 Jun 2026 23:23:35 +0000 Subject: [PATCH 226/327] Docs: Clarify return value semantics of `wpdb` query methods. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This eliminates over 400 PHPStan errors from the core codebase. * Clarify the inline documentation for the four `wpdb` query methods — `get_results()`, `get_row()`, `get_col()`, and `get_var()`. * Add `@phpstan-return` conditional types that mirror each method's runtime dispatch on `$query` and `$output`. * Add `@phpstan-param` tags narrowing `$output` to the documented constants. * Document that `get_var()` returns `null` both on failure and when the matched cell value is an empty string, directing consumers to `$this->last_error` to distinguish the two cases. * Tighten the `@return` in `get_results()` from `array|object|null` to `array|null`, since the method never returns a bare `stdClass`; the `object` was a copy/paste artifact from `get_row()`. * Fix a deprecated use of `null` as an array offset (PHP 8.5) in the `OBJECT_K` branch when a row's first column is SQL `NULL`. * Gather `get_col()` data as a true list. * Suggest `ext-mysqli` in `composer.json`, which `wpdb` requires at runtime. Developed in https://github.com/WordPress/wordpress-develop/pull/11855. Props apermo, westonruter. See #30257, #64898. Fixes #65261. git-svn-id: https://develop.svn.wordpress.org/trunk@62529 602fd350-edb4-49c9-b593-d223f7449a82 --- composer.json | 3 +- src/wp-includes/class-wpdb.php | 94 +++++++++++++++++++++++++++++----- 2 files changed, 83 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index 5c016d37316c1..6500e7ccbf8af 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,8 @@ "php": ">=7.4" }, "suggest": { - "ext-dom": "*" + "ext-dom": "*", + "ext-mysqli": "*" }, "require-dev": { "composer/ca-bundle": "1.5.12", diff --git a/src/wp-includes/class-wpdb.php b/src/wp-includes/class-wpdb.php index babd45a885f1c..e9d7f986d5801 100644 --- a/src/wp-includes/class-wpdb.php +++ b/src/wp-includes/class-wpdb.php @@ -3019,12 +3019,16 @@ protected function process_field_lengths( $data, $table ) { * the value in the column and row specified is returned. If $query is null, * the value in the specified column and row from the previous SQL result is returned. * + * Returns null both on failure and when the matched cell value is an empty + * string. To distinguish the two cases, check {@see self::$last_error}. + * * @since 0.71 * * @param string|null $query Optional. SQL query. Defaults to null, use the result from the previous query. * @param int $x Optional. Column of value to return. Indexed from 0. Default 0. * @param int $y Optional. Row of value to return. Indexed from 0. Default 0. - * @return string|null Database query result (as string), or null on failure. + * @return string|null Database query result (as string), or null on failure or when the value is an empty string. + * @phpstan-return non-empty-string|null */ public function get_var( $query = null, $x = 0, $y = 0 ) { $this->func_call = "\$db->get_var(\"$query\", $x, $y)"; @@ -3039,6 +3043,14 @@ public function get_var( $query = null, $x = 0, $y = 0 ) { // Extract var out of cached results based on x,y vals. if ( ! empty( $this->last_result[ $y ] ) ) { + /** + * Column values. + * + * These are returned from the database as strings, or null for SQL NULL, but get_object_vars() types the + * property values as mixed. + * + * @var list<string|null> $values + */ $values = array_values( get_object_vars( $this->last_result[ $y ] ) ); } @@ -3059,6 +3071,24 @@ public function get_var( $query = null, $x = 0, $y = 0 ) { * respectively. Default OBJECT. * @param int $y Optional. Row to return. Indexed from 0. Default 0. * @return array|object|null Database query result in format specified by $output or null on failure. + * @phpstan-param 'OBJECT'|'ARRAY_A'|'ARRAY_N' $output + * @phpstan-return ( + * $query is non-falsy-string + * ? ( + * $output is 'OBJECT' + * ? stdClass|null + * : ( + * $output is 'ARRAY_A' + * ? array<array-key, mixed>|null + * : ( + * $output is 'ARRAY_N' + * ? list<mixed>|null + * : null + * ) + * ) + * ) + * : null + * ) */ public function get_row( $query = null, $output = OBJECT, $y = 0 ) { $this->func_call = "\$db->get_row(\"$query\",$output,$y)"; @@ -3104,6 +3134,7 @@ public function get_row( $query = null, $output = OBJECT, $y = 0 ) { * @param string|null $query Optional. SQL query. Defaults to previous query. * @param int $x Optional. Column to return. Indexed from 0. Default 0. * @return array Database query result. Array indexed from 0 by SQL result row number. + * @phpstan-return list<non-empty-string|null> */ public function get_col( $query = null, $x = 0 ) { if ( $query ) { @@ -3118,7 +3149,7 @@ public function get_col( $query = null, $x = 0 ) { // Extract the column values. if ( $this->last_result ) { for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) { - $new_array[ $i ] = $this->get_var( null, $x, $i ); + $new_array[] = $this->get_var( null, $x, $i ); } } return $new_array; @@ -3129,18 +3160,47 @@ public function get_col( $query = null, $x = 0 ) { * * Executes a SQL query and returns the entire SQL result. * + * Returns an empty array when no rows match or when the database + * reports an error for the query. Returns null when $query is empty, + * when $output is not one of the recognized constants, or when the + * query cannot run because the connection is not ready. + * * @since 0.71 * - * @param string $query SQL query. - * @param string $output Optional. Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. - * With one of the first three, return an array of rows indexed - * from 0 by SQL result row number. Each row is an associative array - * (column => value, ...), a numerically indexed array (0 => value, ...), - * or an object ( ->column = value ), respectively. With OBJECT_K, - * return an associative array of row objects keyed by the value - * of each row's first column's value. Duplicate keys are discarded. - * Default OBJECT. - * @return array|object|null Database query results. + * @param string|null $query SQL query. + * @param string $output Optional. Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. + * With one of the first three, return an array of rows indexed + * from 0 by SQL result row number. Each row is an associative array + * (column => value, ...), a numerically indexed array (0 => value, ...), + * or an object ( ->column = value ), respectively. With OBJECT_K, + * return an associative array of row objects keyed by the value + * of each row's first column's value. Duplicate keys are discarded. + * Default OBJECT. + * @return array|null Database query results. Empty array when no rows match + * or on database error. Null when $query is empty, when + * $output is invalid, or when the connection is not ready. + * @phpstan-param 'OBJECT'|'OBJECT_K'|'ARRAY_A'|'ARRAY_N' $output + * @phpstan-return ( + * $query is non-falsy-string + * ? ( + * $output is 'OBJECT' + * ? list<stdClass>|null + * : ( + * $output is 'OBJECT_K' + * ? array<array-key, stdClass> + * : ( + * $output is 'ARRAY_A' + * ? list<array<array-key, mixed>> + * : ( + * $output is 'ARRAY_N' + * ? list<list<mixed>> + * : null + * ) + * ) + * ) + * ) + * : null + * ) */ public function get_results( $query = null, $output = OBJECT ) { $this->func_call = "\$db->get_results(\"$query\", $output)"; @@ -3167,7 +3227,15 @@ public function get_results( $query = null, $output = OBJECT ) { if ( $this->last_result ) { foreach ( $this->last_result as $row ) { $var_by_ref = get_object_vars( $row ); - $key = array_shift( $var_by_ref ); + /** + * The first column's value is used as the key. + * + * A SQL NULL value surfaces as null here, so coerce it to an empty string to avoid the deprecated + * use of null as an array offset (PHP 8.5+). + * + * @var array-key $key + */ + $key = array_shift( $var_by_ref ) ?? ''; if ( ! isset( $new_array[ $key ] ) ) { $new_array[ $key ] = $row; } From e904e28cdd953271df416d2fb93e00af77e04eba Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Fri, 19 Jun 2026 06:41:13 +0000 Subject: [PATCH 227/327] KSES: Allow SVG presentation attributes in safe_style_css. Add SVG presentation attributes to the list of CSS properties allowed by `safecss_filter_attr()`, so inline SVG markup can be styled via the `style` attribute. This ports Gutenberg PR #79172 to Core. Props afercia, westonruter, wildworks. Fixes #65457. git-svn-id: https://develop.svn.wordpress.org/trunk@62530 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/kses.php | 66 ++++++++++++++++++++++++++++++++++++ tests/phpunit/tests/kses.php | 38 +++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/src/wp-includes/kses.php b/src/wp-includes/kses.php index a45d1697ea40a..b6c24b77e2695 100644 --- a/src/wp-includes/kses.php +++ b/src/wp-includes/kses.php @@ -2579,6 +2579,7 @@ function safecss_filter_attr( $css, $deprecated = '' ) { * Filters the list of allowed CSS attributes. * * @since 2.8.1 + * @since 7.1.0 Added support for SVG presentation attributes. * * @param string[] $attr Array of allowed CSS attributes. */ @@ -2737,6 +2738,71 @@ function safecss_filter_attr( $css, $deprecated = '' ) { 'aspect-ratio', 'container-type', + 'fill', + 'fill-opacity', + 'fill-rule', + + 'stroke', + 'stroke-dasharray', + 'stroke-dashoffset', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-miterlimit', + 'stroke-opacity', + 'stroke-width', + + 'color-interpolation', + 'color-interpolation-filters', + 'paint-order', + 'stop-color', + 'stop-opacity', + 'flood-color', + 'flood-opacity', + 'lighting-color', + + 'marker', + 'marker-end', + 'marker-mid', + 'marker-start', + + 'clip-path', + 'clip-rule', + 'mask', + 'mask-type', + + 'cx', + 'cy', + 'r', + 'rx', + 'ry', + 'x', + 'y', + 'd', + + 'alignment-baseline', + 'baseline-shift', + 'dominant-baseline', + 'glyph-orientation-horizontal', + 'glyph-orientation-vertical', + 'text-anchor', + 'unicode-bidi', + 'word-spacing', + + 'font-size-adjust', + 'font-stretch', + + 'color-rendering', + 'image-rendering', + 'shape-rendering', + 'text-rendering', + 'vector-effect', + + 'transform', + 'transform-origin', + + 'pointer-events', + 'visibility', + // Custom CSS properties. '--*', ) diff --git a/tests/phpunit/tests/kses.php b/tests/phpunit/tests/kses.php index db507a6b26550..871723b98361c 100644 --- a/tests/phpunit/tests/kses.php +++ b/tests/phpunit/tests/kses.php @@ -1000,6 +1000,7 @@ public function test_wp_kses_attr_no_attributes_allowed_with_false() { * @ticket 58551 * @ticket 60132 * @ticket 64414 + * @ticket 65457 * * @dataProvider data_safecss_filter_attr * @@ -1473,6 +1474,43 @@ public function data_safecss_filter_attr() { 'css' => 'display: grid', 'expected' => 'display: grid', ), + // SVG presentation attributes introduced in 7.1.0. + array( + 'css' => 'fill: none', + 'expected' => 'fill: none', + ), + array( + 'css' => 'fill-rule: evenodd', + 'expected' => 'fill-rule: evenodd', + ), + array( + 'css' => 'stroke: red', + 'expected' => 'stroke: red', + ), + array( + 'css' => 'stroke-width: 2', + 'expected' => 'stroke-width: 2', + ), + array( + 'css' => 'stroke-linecap: round', + 'expected' => 'stroke-linecap: round', + ), + array( + 'css' => 'paint-order: stroke', + 'expected' => 'paint-order: stroke', + ), + array( + 'css' => 'vector-effect: non-scaling-stroke', + 'expected' => 'vector-effect: non-scaling-stroke', + ), + array( + 'css' => 'clip-rule: evenodd', + 'expected' => 'clip-rule: evenodd', + ), + array( + 'css' => 'text-anchor: middle', + 'expected' => 'text-anchor: middle', + ), ); } From e3c26545b12e18865366d98081384db5216cf4d5 Mon Sep 17 00:00:00 2001 From: Andrea Fercia <afercia@git.wordpress.org> Date: Fri, 19 Jun 2026 11:02:30 +0000 Subject: [PATCH 228/327] KSES: Add command and commandfor to the list of allowed attributes for buttons. Developed in: https://github.com/WordPress/wordpress-develop/pull/11483 Props pratiknawkar94, joedolson, westonruter, afercia. Fixes #64576. git-svn-id: https://develop.svn.wordpress.org/trunk@62531 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/kses.php | 2 ++ tests/phpunit/tests/kses.php | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/wp-includes/kses.php b/src/wp-includes/kses.php index b6c24b77e2695..0edb36d9c80bb 100644 --- a/src/wp-includes/kses.php +++ b/src/wp-includes/kses.php @@ -109,6 +109,8 @@ ), 'br' => array(), 'button' => array( + 'command' => true, + 'commandfor' => true, 'disabled' => true, 'name' => true, 'type' => true, diff --git a/tests/phpunit/tests/kses.php b/tests/phpunit/tests/kses.php index 871723b98361c..9ed3a45b2d90e 100644 --- a/tests/phpunit/tests/kses.php +++ b/tests/phpunit/tests/kses.php @@ -1928,6 +1928,17 @@ public function test_wp_kses_main_tag_standard_attributes() { $this->assertEqualHTML( $html, wp_kses_post( $html ) ); } + /** + * Test that Invoker Commands API attributes are preserved on buttons in post content. + * + * @ticket 64576 + */ + public function test_wp_kses_button_invoker_command_attributes() { + $html = '<button type="button" commandfor="my-popover" command="toggle-popover">Toggle</button><div id="my-popover" popover>Content</div>'; + + $this->assertEqualHTML( $html, wp_kses_post( $html ) ); + } + /** * Test that object tags are allowed under limited circumstances. * From b7eb73b71eb2f1aaf25d4f2814b584af27654514 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Fri, 19 Jun 2026 12:45:59 +0000 Subject: [PATCH 229/327] Docs: Correct typo in a comment in `WP_Upgrader::install_package()`. Follow-up to [59039], [59291]. Props harishtewari, salmanshafiq8630, amitjoel85, SergeyBiryukov. Fixes #65492. git-svn-id: https://develop.svn.wordpress.org/trunk@62532 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-upgrader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-admin/includes/class-wp-upgrader.php b/src/wp-admin/includes/class-wp-upgrader.php index 695ce50bf0d7e..ba27113ff73de 100644 --- a/src/wp-admin/includes/class-wp-upgrader.php +++ b/src/wp-admin/includes/class-wp-upgrader.php @@ -528,7 +528,7 @@ public function install_package( $args = array() ) { /* * Give the upgrade an additional 300 seconds (5 minutes) to ensure the install * doesn't prematurely timeout having used up the maximum script execution time - * upacking and downloading in WP_Upgrader->run(). + * downloading and unpacking in WP_Upgrader->run(). */ if ( function_exists( 'set_time_limit' ) ) { set_time_limit( 300 ); From ff9c07e0d2b5c447a03f53e3fb5bb1d0efe58446 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Fri, 19 Jun 2026 19:22:14 +0000 Subject: [PATCH 230/327] Build/Test Tools: Include unversioned and binary files in change detection. Every GitHub Actions workflow performing operations that may modify versioned files ends with a `git diff` check for uncommitted changes. The workflow run fails when changes exist to ensure requried changes are not missed in a given commit. Because the `git diff` only detects unstaged changes to tracked files, newly created files that were not also added to version control can easily go undetected. `git diff` also does not include changes to binary files by default. This commit makes the following changes to improve the related steps in workflow files: - The command used for detecting is changed to `git status --porcelain`, which only reports as clean when there are no changes to tracked files (both staged or unstaged) and there are no untracked files. - The related workflows have been updated to include `git add -A` before creating any patches to ensure that all new, modified, and deleted files are represented in the diff files created. - The `--binary` flag has been added to all `git diff` commands creating patches to ensure those changes are also included. Props desrosj. See #64893. git-svn-id: https://develop.svn.wordpress.org/trunk@62533 602fd350-edb4-49c9-b593-d223f7449a82 --- .../workflows/reusable-check-built-files.yml | 21 +++++++----- .../reusable-coding-standards-javascript.yml | 11 +++++-- .../reusable-coding-standards-php.yml | 11 +++++-- .../workflows/reusable-end-to-end-tests.yml | 11 +++++-- .../workflows/reusable-javascript-tests.yml | 11 +++++-- .../reusable-javascript-type-checking-v1.yml | 11 +++++-- .../reusable-performance-test-v2.yml | 11 +++++-- .../workflows/reusable-php-compatibility.yml | 11 +++++-- .../reusable-phpstan-static-analysis-v1.yml | 11 +++++-- .../workflows/reusable-phpunit-tests-v2.yml | 11 +++++-- .../workflows/reusable-phpunit-tests-v3.yml | 11 +++++-- .../reusable-test-core-build-process.yml | 32 ++++++++++++++---- .../reusable-test-gutenberg-build-process.yml | 12 +++++-- ...sable-test-local-docker-environment-v1.yml | 11 +++++-- .../workflows/test-and-zip-default-themes.yml | 33 ++++++++++++++----- .gitignore | 5 +++ 16 files changed, 166 insertions(+), 58 deletions(-) diff --git a/.github/workflows/reusable-check-built-files.yml b/.github/workflows/reusable-check-built-files.yml index 033b2a46ac3e9..5a673bf496ace 100644 --- a/.github/workflows/reusable-check-built-files.yml +++ b/.github/workflows/reusable-check-built-files.yml @@ -24,9 +24,10 @@ jobs: # - Builds Emoji files. # - Builds bundled Root Certificate files. # - Builds WordPress. - # - Checks for changes to versioned files. - # - Displays the result of git diff for debugging purposes. - # - Saves the diff to a patch file. + # - Checks for uncommitted changes. + # - Stages all uncommitted changes and adds any unversioned files. + # - Displays a diff of all staged changes. + # - Saves staged changes to a .diff file. # - Uploads the patch file as an artifact. update-built-files: name: Check and update built files @@ -78,22 +79,26 @@ jobs: - name: Build WordPress run: npm run build:dev - - name: Check for changes to versioned files + - name: Check for uncommitted changes id: built-file-check run: | - if git diff --quiet; then + if [ -z "$(git status --porcelain)" ]; then echo "uncommitted_changes=false" >> "$GITHUB_OUTPUT" else echo "uncommitted_changes=true" >> "$GITHUB_OUTPUT" fi - - name: Display changes to versioned files + - name: Stage all changes for diff generation if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git diff + run: git add -A + + - name: Display all uncommitted changes + if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} + run: git diff --cached - name: Save diff to a file if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git diff > ./changes.diff + run: git diff --cached --binary > ./changes.diff # Uploads the diff file as an artifact. - name: Upload diff file as artifact diff --git a/.github/workflows/reusable-coding-standards-javascript.yml b/.github/workflows/reusable-coding-standards-javascript.yml index eac5bbdc352f2..b15a5bacf6d46 100644 --- a/.github/workflows/reusable-coding-standards-javascript.yml +++ b/.github/workflows/reusable-coding-standards-javascript.yml @@ -24,7 +24,7 @@ jobs: # - Logs debug information about the GitHub Action runner. # - Installs npm dependencies. # - Run the WordPress JSHint checks. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. jshint: name: JavaScript checks runs-on: ubuntu-24.04 @@ -57,5 +57,10 @@ jobs: - name: Run JSHint run: npm run grunt jshint - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-coding-standards-php.yml b/.github/workflows/reusable-coding-standards-php.yml index fab8bffb31e11..980d20b75f4b6 100644 --- a/.github/workflows/reusable-coding-standards-php.yml +++ b/.github/workflows/reusable-coding-standards-php.yml @@ -37,7 +37,7 @@ jobs: # - Generate a report for displaying issues as pull request annotations. # - Runs PHPCS on the `tests` directory without (warnings included). # - Generate a report for displaying `test` directory issues as pull request annotations. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. phpcs: name: PHP checks runs-on: ubuntu-24.04 @@ -105,5 +105,10 @@ jobs: if: ${{ inputs.old-branch }} run: phpcbf - - name: Ensure version-controlled files are not modified during the tests - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-end-to-end-tests.yml b/.github/workflows/reusable-end-to-end-tests.yml index 87f90f1b53039..c39e03a6c0ab0 100644 --- a/.github/workflows/reusable-end-to-end-tests.yml +++ b/.github/workflows/reusable-end-to-end-tests.yml @@ -61,7 +61,7 @@ jobs: # - Install additional languages. # - Run the E2E tests. # - Uploads screenshots and HTML snapshots as an artifact. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. e2e-tests: name: SCRIPT_DEBUG ${{ inputs.LOCAL_SCRIPT_DEBUG && 'enabled' || 'disabled' }} runs-on: ubuntu-24.04 @@ -153,5 +153,10 @@ jobs: if-no-files-found: ignore include-hidden-files: true - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-javascript-tests.yml b/.github/workflows/reusable-javascript-tests.yml index 3988ec9d6b055..d260dd71c4c11 100644 --- a/.github/workflows/reusable-javascript-tests.yml +++ b/.github/workflows/reusable-javascript-tests.yml @@ -25,7 +25,7 @@ jobs: # - Logs debug information about the GitHub Action runner. # - Installs npm dependencies. # - Run the WordPress QUnit tests. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. test-js: name: Run QUnit tests runs-on: ubuntu-24.04 @@ -67,5 +67,10 @@ jobs: - name: Run QUnit tests run: npm run grunt qunit:compiled - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-javascript-type-checking-v1.yml b/.github/workflows/reusable-javascript-type-checking-v1.yml index 9dabd01e27fa0..d1f484c39c36c 100644 --- a/.github/workflows/reusable-javascript-type-checking-v1.yml +++ b/.github/workflows/reusable-javascript-type-checking-v1.yml @@ -23,7 +23,7 @@ jobs: # - Configures caching for TypeScript build info. # - Runs JavaScript type checking. # - Saves the TypeScript build info. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. typecheck: name: Run JavaScript type checking runs-on: ubuntu-24.04 @@ -72,5 +72,10 @@ jobs: *.tsbuildinfo key: "ts-build-info-${{ github.run_id }}" - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-performance-test-v2.yml b/.github/workflows/reusable-performance-test-v2.yml index c0279c37fe64b..7bafb8fff4894 100644 --- a/.github/workflows/reusable-performance-test-v2.yml +++ b/.github/workflows/reusable-performance-test-v2.yml @@ -102,7 +102,7 @@ jobs: # - Install MU plugin. # - Run performance tests. # - Archive artifacts. - # - Ensure version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. performance: name: Test ${{ inputs.subject == 'base' && inputs.BASE_TAG || inputs.subject }} runs-on: ubuntu-24.04 @@ -272,5 +272,10 @@ jobs: if-no-files-found: error include-hidden-files: true - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-php-compatibility.yml b/.github/workflows/reusable-php-compatibility.yml index 7756330282e6f..ed7cf3abbfae2 100644 --- a/.github/workflows/reusable-php-compatibility.yml +++ b/.github/workflows/reusable-php-compatibility.yml @@ -30,7 +30,7 @@ jobs: # - Make Composer packages available globally. # - Runs the PHP compatibility tests. # - Generate a report for displaying issues as pull request annotations. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. php-compatibility: name: Run compatibility checks runs-on: ubuntu-24.04 @@ -86,5 +86,10 @@ jobs: if: ${{ always() && steps.phpcs.outcome == 'failure' }} run: cs2pr ./.cache/phpcs-compat-report.xml - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-phpstan-static-analysis-v1.yml b/.github/workflows/reusable-phpstan-static-analysis-v1.yml index c73c1e5e692fe..e2976df943817 100644 --- a/.github/workflows/reusable-phpstan-static-analysis-v1.yml +++ b/.github/workflows/reusable-phpstan-static-analysis-v1.yml @@ -33,7 +33,7 @@ jobs: # - Configures caching for PHPStan static analysis scans. # - Runs PHPStan static analysis (with Pull Request annotations). # - Saves the PHPStan result cache. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. phpstan: name: Run PHP static analysis runs-on: ubuntu-24.04 @@ -102,5 +102,10 @@ jobs: path: .cache key: "phpstan-result-cache-${{ github.run_id }}" - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-phpunit-tests-v2.yml b/.github/workflows/reusable-phpunit-tests-v2.yml index 5e078b6ef0c2e..21f71546bdb2d 100644 --- a/.github/workflows/reusable-phpunit-tests-v2.yml +++ b/.github/workflows/reusable-phpunit-tests-v2.yml @@ -84,7 +84,7 @@ jobs: # - Logs debug information from inside the WordPress Docker container. # - Install WordPress within the Docker container. # - Run the PHPUnit tests. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. test-php: name: PHP ${{ inputs.php }} / ${{ inputs.multisite && ' Multisite' || 'Single Site' }}${{ inputs.split_slow && ' slow tests' || '' }}${{ inputs.memcached && ' with memcached' || '' }} runs-on: ${{ inputs.os }} @@ -208,5 +208,10 @@ jobs: if: ${{ ! inputs.split_slow }} run: LOCAL_PHP_XDEBUG=true npm run "test:${PHPUNIT_SCRIPT}" -- -v --group xdebug --exclude-group __fakegroup__ - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-phpunit-tests-v3.yml b/.github/workflows/reusable-phpunit-tests-v3.yml index 64507323a617b..e08ef2d3c6824 100644 --- a/.github/workflows/reusable-phpunit-tests-v3.yml +++ b/.github/workflows/reusable-phpunit-tests-v3.yml @@ -113,7 +113,7 @@ jobs: # - Install WordPress within the Docker container. # - Run the PHPUnit tests. # - Upload the code coverage report to Codecov.io. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. # - Checks out the WordPress Test reporter repository. # - Submit the test results to the WordPress.org host test results. phpunit-tests: @@ -268,8 +268,13 @@ jobs: flags: ${{ inputs.multisite && 'multisite' || 'single' }},php fail_ci_if_error: true - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi - name: Checkout the WordPress Test Reporter if: ${{ github.ref == 'refs/heads/trunk' && inputs.report }} diff --git a/.github/workflows/reusable-test-core-build-process.yml b/.github/workflows/reusable-test-core-build-process.yml index 1566d1583a807..e931f43145050 100644 --- a/.github/workflows/reusable-test-core-build-process.yml +++ b/.github/workflows/reusable-test-core-build-process.yml @@ -49,15 +49,16 @@ jobs: # Verifies that installing npm dependencies and building WordPress works as expected. # # Performs the following steps: + # - Prevent line ending conversions (Windows only). # - Checks out the repository. # - Sets up Node.js. # - Logs debug information about the GitHub Action runner. # - Installs npm dependencies. # - Builds WordPress to run from the desired location (src or build). - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes after building. # - Creates a ZIP of the built WordPress files (when building to the build directory). # - Cleans up after building WordPress. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes after cleaning. # - Uploads the ZIP as a GitHub Actions artifact (when building to the build directory). # - Saves the pull request number to a text file. # - Uploads the pull request number as an artifact. @@ -69,6 +70,13 @@ jobs: timeout-minutes: 20 steps: + # Windows can convert LF to CRLF on checkout, which can make built/generated files appear as modified. + - name: Prevent line ending conversions on Windows + if: ${{ contains( inputs.os, 'windows-' ) }} + run: | + git config --global core.autocrlf false + git config --global core.eol lf + - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: @@ -119,8 +127,14 @@ jobs: - name: Build WordPress to run from ${{ inputs.directory }} run: npm run ${{ inputs.directory == 'src' && 'build:dev' || 'build' }} - - name: Ensure version-controlled files are not modified or deleted during building - run: git diff --exit-code + - name: Check for uncommitted changes after building + shell: bash + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi - name: Create ZIP of built files if: ${{ inputs.directory == 'build' && contains( inputs.os, 'ubuntu-' ) }} @@ -129,8 +143,14 @@ jobs: - name: Clean after building to run from ${{ inputs.directory }} run: npm run grunt ${{ inputs.directory == 'src' && 'clean -- --dev' || 'clean' }} - - name: Ensure version-controlled files are not modified or deleted during cleaning - run: git diff --exit-code + - name: Check for uncommitted changes after cleaning + shell: bash + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi - name: Upload ZIP as a GitHub Actions artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/.github/workflows/reusable-test-gutenberg-build-process.yml b/.github/workflows/reusable-test-gutenberg-build-process.yml index 4a780d08ee07f..ae5e4cd74d298 100644 --- a/.github/workflows/reusable-test-gutenberg-build-process.yml +++ b/.github/workflows/reusable-test-gutenberg-build-process.yml @@ -39,7 +39,7 @@ jobs: # - Installs Core npm dependencies. # - Builds WordPress to run from the relevant location (src or build). # - Builds Gutenberg. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes after building. build-process-tests: name: ${{ contains( inputs.os, 'macos-' ) && 'MacOS' || contains( inputs.os, 'windows-' ) && 'Windows' || 'Linux' }} permissions: @@ -96,5 +96,11 @@ jobs: run: npm run build working-directory: ${{ env.GUTENBERG_DIRECTORY }} - - name: Ensure version-controlled files are not modified or deleted during building - run: git diff --exit-code + - name: Check for uncommitted changes after building + shell: bash + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/reusable-test-local-docker-environment-v1.yml b/.github/workflows/reusable-test-local-docker-environment-v1.yml index 8f1a556afa2b4..50118d45045ee 100644 --- a/.github/workflows/reusable-test-local-docker-environment-v1.yml +++ b/.github/workflows/reusable-test-local-docker-environment-v1.yml @@ -71,7 +71,7 @@ jobs: # - Runs a WP CLI command. # - Tests the logs command. # - Tests the reset command. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for any uncommitted changes. local-docker-environment-tests: name: ${{ 'mariadb' == inputs.db-type && 'MariaDB' || 'MySQL' }} ${{ inputs.db-version }}${{ inputs.memcached && ' with memcached' || '' }}${{ 'example.org' != inputs.tests-domain && format( ' {0}', inputs.tests-domain ) || '' }} permissions: @@ -166,5 +166,10 @@ jobs: - name: Reset the Docker environment run: npm run env:reset - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected:" + git status --porcelain + exit 1 + fi diff --git a/.github/workflows/test-and-zip-default-themes.yml b/.github/workflows/test-and-zip-default-themes.yml index 1a44a8ff12e3a..604f531462a67 100644 --- a/.github/workflows/test-and-zip-default-themes.yml +++ b/.github/workflows/test-and-zip-default-themes.yml @@ -112,7 +112,12 @@ jobs: # - Sets up Node.js. # - Installs npm dependencies. # - Runs the theme build script. - # - Ensures version-controlled files are not modified or deleted. + # - Checks for uncommitted changes. + # - Stages all uncommitted changes and adds any unversioned files. + # - Displays a diff of all staged changes. + # - Saves staged changes to a .diff file. + # - Uploads the diff file as an artifact. + # - Fails the job when uncommitted changes are detected. test-build-scripts: name: Test ${{ matrix.theme }} build script runs-on: ubuntu-24.04 @@ -156,23 +161,27 @@ jobs: - name: Build theme run: npm run build - - name: Check for changes to versioned files + - name: Check for uncommitted changes id: built-file-check if: ${{ github.event_name == 'pull_request' }} run: | - if git diff --quiet; then + if [ -z "$(git status --porcelain)" ]; then echo "uncommitted_changes=false" >> "$GITHUB_OUTPUT" else echo "uncommitted_changes=true" >> "$GITHUB_OUTPUT" fi - - name: Display changes to versioned files + - name: Stage all changes for diff generation if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git diff + run: git add -A + + - name: Display all uncommitted changes + if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} + run: git diff --cached - name: Save diff to a file if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git diff > ./changes.diff + run: git diff --cached --binary > ./changes.diff # Uploads the diff file as an artifact. - name: Upload diff file as artifact @@ -182,13 +191,21 @@ jobs: name: pr-built-file-changes path: src/wp-content/themes/${{ matrix.theme }}/changes.diff - - name: Ensure version-controlled files are not modified or deleted - run: git diff --exit-code + - name: Check for uncommitted changes after building + run: | + if [ -n "$(git status --porcelain)" ]; then + echo "Uncommitted changes detected after build:" + git status --porcelain + exit 1 + fi # Prepares bundled themes for release. # # Performs the following steps: # - Checks out the repository. + # - Sets up Node.js. + # - Installs npm dependencies. + # - Runs the theme build script. # - Uploads the theme files as a workflow artifact (files uploaded as an artifact are automatically zipped). bundle-theme: name: Create ${{ matrix.theme }} ZIP file diff --git a/.gitignore b/.gitignore index 15876fa47fee8..5a7f9b5aef66e 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,11 @@ wp-tests-config.php /artifacts /setup.log /coverage +/codecov +codecov.* +before.zip +wordpress.zip +wp-code-coverage-*.xml # Files and folders that get created in wp-content /src/wp-content/blogs.dir From 63b6c46da7a5dc1aaa131171bda4f4a843860b4d Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Fri, 19 Jun 2026 20:07:18 +0000 Subject: [PATCH 231/327] Build/Test Tools: Account for old branches in file checks. Because old branches reference the reusable workflow files in `trunk` and their respective `.gitignore` files were not updated, some adjustments are needed to prevent failures in numbered branches. Follow up to [62533]. See #64893. git-svn-id: https://develop.svn.wordpress.org/trunk@62534 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/reusable-phpunit-tests-v2.yml | 7 +------ .github/workflows/reusable-test-core-build-process.yml | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/reusable-phpunit-tests-v2.yml b/.github/workflows/reusable-phpunit-tests-v2.yml index 21f71546bdb2d..275166661a3d0 100644 --- a/.github/workflows/reusable-phpunit-tests-v2.yml +++ b/.github/workflows/reusable-phpunit-tests-v2.yml @@ -209,9 +209,4 @@ jobs: run: LOCAL_PHP_XDEBUG=true npm run "test:${PHPUNIT_SCRIPT}" -- -v --group xdebug --exclude-group __fakegroup__ - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + run: git diff --exit-code diff --git a/.github/workflows/reusable-test-core-build-process.yml b/.github/workflows/reusable-test-core-build-process.yml index e931f43145050..8792b586d7a9f 100644 --- a/.github/workflows/reusable-test-core-build-process.yml +++ b/.github/workflows/reusable-test-core-build-process.yml @@ -146,7 +146,7 @@ jobs: - name: Check for uncommitted changes after cleaning shell: bash run: | - if [ -n "$(git status --porcelain)" ]; then + if [ -z "$(git status --porcelain -- . ':!wordpress.zip')" ]; then echo "Uncommitted changes detected:" git status --porcelain exit 1 From 49f3e9d77e6f59a1dfe2ce3a2ecbe62217612393 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Fri, 19 Jun 2026 20:09:32 +0000 Subject: [PATCH 232/327] Build/Test Tools: Change file filters for testing old branches. This adds the `reusable-phpunit-tests-v3.yml` file to the list of changes that will run the `test-old-branches.yml` workflow. There are several numbered branches that reference this reusable workflow, so any changes should be verified across all calling branches. See #64893. git-svn-id: https://develop.svn.wordpress.org/trunk@62535 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/test-old-branches.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-old-branches.yml b/.github/workflows/test-old-branches.yml index 74f9c2d43d54c..ae651290d9cd8 100644 --- a/.github/workflows/test-old-branches.yml +++ b/.github/workflows/test-old-branches.yml @@ -7,7 +7,7 @@ on: - trunk paths: - '.github/workflows/test-old-branches.yml' - - '.github/workflows/reusable-phpunit-tests-v[1-2].yml' + - '.github/workflows/reusable-phpunit-tests-v[1-3].yml' # Run twice a month on the 1st and 15th at 00:00 UTC. schedule: - cron: '0 0 1 * *' From e2699982f230d0679640cebdf374f994327ed695 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Fri, 19 Jun 2026 20:33:02 +0000 Subject: [PATCH 233/327] Build/Test Tools: Revert [62533], [62534]. More work is needed to ensure these changes do not introduce failures in old branches. Reverts [62533], [62534]. See #64893. git-svn-id: https://develop.svn.wordpress.org/trunk@62536 602fd350-edb4-49c9-b593-d223f7449a82 --- .../workflows/reusable-check-built-files.yml | 21 +++++------- .../reusable-coding-standards-javascript.yml | 11 ++----- .../reusable-coding-standards-php.yml | 11 ++----- .../workflows/reusable-end-to-end-tests.yml | 11 ++----- .../workflows/reusable-javascript-tests.yml | 11 ++----- .../reusable-javascript-type-checking-v1.yml | 11 ++----- .../reusable-performance-test-v2.yml | 11 ++----- .../workflows/reusable-php-compatibility.yml | 11 ++----- .../reusable-phpstan-static-analysis-v1.yml | 11 ++----- .../workflows/reusable-phpunit-tests-v2.yml | 4 +-- .../workflows/reusable-phpunit-tests-v3.yml | 11 ++----- .../reusable-test-core-build-process.yml | 32 ++++-------------- .../reusable-test-gutenberg-build-process.yml | 12 ++----- ...sable-test-local-docker-environment-v1.yml | 11 ++----- .../workflows/test-and-zip-default-themes.yml | 33 +++++-------------- .gitignore | 5 --- 16 files changed, 57 insertions(+), 160 deletions(-) diff --git a/.github/workflows/reusable-check-built-files.yml b/.github/workflows/reusable-check-built-files.yml index 5a673bf496ace..033b2a46ac3e9 100644 --- a/.github/workflows/reusable-check-built-files.yml +++ b/.github/workflows/reusable-check-built-files.yml @@ -24,10 +24,9 @@ jobs: # - Builds Emoji files. # - Builds bundled Root Certificate files. # - Builds WordPress. - # - Checks for uncommitted changes. - # - Stages all uncommitted changes and adds any unversioned files. - # - Displays a diff of all staged changes. - # - Saves staged changes to a .diff file. + # - Checks for changes to versioned files. + # - Displays the result of git diff for debugging purposes. + # - Saves the diff to a patch file. # - Uploads the patch file as an artifact. update-built-files: name: Check and update built files @@ -79,26 +78,22 @@ jobs: - name: Build WordPress run: npm run build:dev - - name: Check for uncommitted changes + - name: Check for changes to versioned files id: built-file-check run: | - if [ -z "$(git status --porcelain)" ]; then + if git diff --quiet; then echo "uncommitted_changes=false" >> "$GITHUB_OUTPUT" else echo "uncommitted_changes=true" >> "$GITHUB_OUTPUT" fi - - name: Stage all changes for diff generation + - name: Display changes to versioned files if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git add -A - - - name: Display all uncommitted changes - if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git diff --cached + run: git diff - name: Save diff to a file if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git diff --cached --binary > ./changes.diff + run: git diff > ./changes.diff # Uploads the diff file as an artifact. - name: Upload diff file as artifact diff --git a/.github/workflows/reusable-coding-standards-javascript.yml b/.github/workflows/reusable-coding-standards-javascript.yml index b15a5bacf6d46..eac5bbdc352f2 100644 --- a/.github/workflows/reusable-coding-standards-javascript.yml +++ b/.github/workflows/reusable-coding-standards-javascript.yml @@ -24,7 +24,7 @@ jobs: # - Logs debug information about the GitHub Action runner. # - Installs npm dependencies. # - Run the WordPress JSHint checks. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. jshint: name: JavaScript checks runs-on: ubuntu-24.04 @@ -57,10 +57,5 @@ jobs: - name: Run JSHint run: npm run grunt jshint - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/reusable-coding-standards-php.yml b/.github/workflows/reusable-coding-standards-php.yml index 980d20b75f4b6..fab8bffb31e11 100644 --- a/.github/workflows/reusable-coding-standards-php.yml +++ b/.github/workflows/reusable-coding-standards-php.yml @@ -37,7 +37,7 @@ jobs: # - Generate a report for displaying issues as pull request annotations. # - Runs PHPCS on the `tests` directory without (warnings included). # - Generate a report for displaying `test` directory issues as pull request annotations. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. phpcs: name: PHP checks runs-on: ubuntu-24.04 @@ -105,10 +105,5 @@ jobs: if: ${{ inputs.old-branch }} run: phpcbf - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified during the tests + run: git diff --exit-code diff --git a/.github/workflows/reusable-end-to-end-tests.yml b/.github/workflows/reusable-end-to-end-tests.yml index c39e03a6c0ab0..87f90f1b53039 100644 --- a/.github/workflows/reusable-end-to-end-tests.yml +++ b/.github/workflows/reusable-end-to-end-tests.yml @@ -61,7 +61,7 @@ jobs: # - Install additional languages. # - Run the E2E tests. # - Uploads screenshots and HTML snapshots as an artifact. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. e2e-tests: name: SCRIPT_DEBUG ${{ inputs.LOCAL_SCRIPT_DEBUG && 'enabled' || 'disabled' }} runs-on: ubuntu-24.04 @@ -153,10 +153,5 @@ jobs: if-no-files-found: ignore include-hidden-files: true - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/reusable-javascript-tests.yml b/.github/workflows/reusable-javascript-tests.yml index d260dd71c4c11..3988ec9d6b055 100644 --- a/.github/workflows/reusable-javascript-tests.yml +++ b/.github/workflows/reusable-javascript-tests.yml @@ -25,7 +25,7 @@ jobs: # - Logs debug information about the GitHub Action runner. # - Installs npm dependencies. # - Run the WordPress QUnit tests. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. test-js: name: Run QUnit tests runs-on: ubuntu-24.04 @@ -67,10 +67,5 @@ jobs: - name: Run QUnit tests run: npm run grunt qunit:compiled - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/reusable-javascript-type-checking-v1.yml b/.github/workflows/reusable-javascript-type-checking-v1.yml index d1f484c39c36c..9dabd01e27fa0 100644 --- a/.github/workflows/reusable-javascript-type-checking-v1.yml +++ b/.github/workflows/reusable-javascript-type-checking-v1.yml @@ -23,7 +23,7 @@ jobs: # - Configures caching for TypeScript build info. # - Runs JavaScript type checking. # - Saves the TypeScript build info. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. typecheck: name: Run JavaScript type checking runs-on: ubuntu-24.04 @@ -72,10 +72,5 @@ jobs: *.tsbuildinfo key: "ts-build-info-${{ github.run_id }}" - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/reusable-performance-test-v2.yml b/.github/workflows/reusable-performance-test-v2.yml index 7bafb8fff4894..c0279c37fe64b 100644 --- a/.github/workflows/reusable-performance-test-v2.yml +++ b/.github/workflows/reusable-performance-test-v2.yml @@ -102,7 +102,7 @@ jobs: # - Install MU plugin. # - Run performance tests. # - Archive artifacts. - # - Checks for any uncommitted changes. + # - Ensure version-controlled files are not modified or deleted. performance: name: Test ${{ inputs.subject == 'base' && inputs.BASE_TAG || inputs.subject }} runs-on: ubuntu-24.04 @@ -272,10 +272,5 @@ jobs: if-no-files-found: error include-hidden-files: true - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/reusable-php-compatibility.yml b/.github/workflows/reusable-php-compatibility.yml index ed7cf3abbfae2..7756330282e6f 100644 --- a/.github/workflows/reusable-php-compatibility.yml +++ b/.github/workflows/reusable-php-compatibility.yml @@ -30,7 +30,7 @@ jobs: # - Make Composer packages available globally. # - Runs the PHP compatibility tests. # - Generate a report for displaying issues as pull request annotations. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. php-compatibility: name: Run compatibility checks runs-on: ubuntu-24.04 @@ -86,10 +86,5 @@ jobs: if: ${{ always() && steps.phpcs.outcome == 'failure' }} run: cs2pr ./.cache/phpcs-compat-report.xml - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/reusable-phpstan-static-analysis-v1.yml b/.github/workflows/reusable-phpstan-static-analysis-v1.yml index e2976df943817..c73c1e5e692fe 100644 --- a/.github/workflows/reusable-phpstan-static-analysis-v1.yml +++ b/.github/workflows/reusable-phpstan-static-analysis-v1.yml @@ -33,7 +33,7 @@ jobs: # - Configures caching for PHPStan static analysis scans. # - Runs PHPStan static analysis (with Pull Request annotations). # - Saves the PHPStan result cache. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. phpstan: name: Run PHP static analysis runs-on: ubuntu-24.04 @@ -102,10 +102,5 @@ jobs: path: .cache key: "phpstan-result-cache-${{ github.run_id }}" - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/reusable-phpunit-tests-v2.yml b/.github/workflows/reusable-phpunit-tests-v2.yml index 275166661a3d0..5e078b6ef0c2e 100644 --- a/.github/workflows/reusable-phpunit-tests-v2.yml +++ b/.github/workflows/reusable-phpunit-tests-v2.yml @@ -84,7 +84,7 @@ jobs: # - Logs debug information from inside the WordPress Docker container. # - Install WordPress within the Docker container. # - Run the PHPUnit tests. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. test-php: name: PHP ${{ inputs.php }} / ${{ inputs.multisite && ' Multisite' || 'Single Site' }}${{ inputs.split_slow && ' slow tests' || '' }}${{ inputs.memcached && ' with memcached' || '' }} runs-on: ${{ inputs.os }} @@ -208,5 +208,5 @@ jobs: if: ${{ ! inputs.split_slow }} run: LOCAL_PHP_XDEBUG=true npm run "test:${PHPUNIT_SCRIPT}" -- -v --group xdebug --exclude-group __fakegroup__ - - name: Check for uncommitted changes + - name: Ensure version-controlled files are not modified or deleted run: git diff --exit-code diff --git a/.github/workflows/reusable-phpunit-tests-v3.yml b/.github/workflows/reusable-phpunit-tests-v3.yml index e08ef2d3c6824..64507323a617b 100644 --- a/.github/workflows/reusable-phpunit-tests-v3.yml +++ b/.github/workflows/reusable-phpunit-tests-v3.yml @@ -113,7 +113,7 @@ jobs: # - Install WordPress within the Docker container. # - Run the PHPUnit tests. # - Upload the code coverage report to Codecov.io. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. # - Checks out the WordPress Test reporter repository. # - Submit the test results to the WordPress.org host test results. phpunit-tests: @@ -268,13 +268,8 @@ jobs: flags: ${{ inputs.multisite && 'multisite' || 'single' }},php fail_ci_if_error: true - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code - name: Checkout the WordPress Test Reporter if: ${{ github.ref == 'refs/heads/trunk' && inputs.report }} diff --git a/.github/workflows/reusable-test-core-build-process.yml b/.github/workflows/reusable-test-core-build-process.yml index 8792b586d7a9f..1566d1583a807 100644 --- a/.github/workflows/reusable-test-core-build-process.yml +++ b/.github/workflows/reusable-test-core-build-process.yml @@ -49,16 +49,15 @@ jobs: # Verifies that installing npm dependencies and building WordPress works as expected. # # Performs the following steps: - # - Prevent line ending conversions (Windows only). # - Checks out the repository. # - Sets up Node.js. # - Logs debug information about the GitHub Action runner. # - Installs npm dependencies. # - Builds WordPress to run from the desired location (src or build). - # - Checks for any uncommitted changes after building. + # - Ensures version-controlled files are not modified or deleted. # - Creates a ZIP of the built WordPress files (when building to the build directory). # - Cleans up after building WordPress. - # - Checks for any uncommitted changes after cleaning. + # - Ensures version-controlled files are not modified or deleted. # - Uploads the ZIP as a GitHub Actions artifact (when building to the build directory). # - Saves the pull request number to a text file. # - Uploads the pull request number as an artifact. @@ -70,13 +69,6 @@ jobs: timeout-minutes: 20 steps: - # Windows can convert LF to CRLF on checkout, which can make built/generated files appear as modified. - - name: Prevent line ending conversions on Windows - if: ${{ contains( inputs.os, 'windows-' ) }} - run: | - git config --global core.autocrlf false - git config --global core.eol lf - - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: @@ -127,14 +119,8 @@ jobs: - name: Build WordPress to run from ${{ inputs.directory }} run: npm run ${{ inputs.directory == 'src' && 'build:dev' || 'build' }} - - name: Check for uncommitted changes after building - shell: bash - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted during building + run: git diff --exit-code - name: Create ZIP of built files if: ${{ inputs.directory == 'build' && contains( inputs.os, 'ubuntu-' ) }} @@ -143,14 +129,8 @@ jobs: - name: Clean after building to run from ${{ inputs.directory }} run: npm run grunt ${{ inputs.directory == 'src' && 'clean -- --dev' || 'clean' }} - - name: Check for uncommitted changes after cleaning - shell: bash - run: | - if [ -z "$(git status --porcelain -- . ':!wordpress.zip')" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted during cleaning + run: git diff --exit-code - name: Upload ZIP as a GitHub Actions artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/.github/workflows/reusable-test-gutenberg-build-process.yml b/.github/workflows/reusable-test-gutenberg-build-process.yml index ae5e4cd74d298..4a780d08ee07f 100644 --- a/.github/workflows/reusable-test-gutenberg-build-process.yml +++ b/.github/workflows/reusable-test-gutenberg-build-process.yml @@ -39,7 +39,7 @@ jobs: # - Installs Core npm dependencies. # - Builds WordPress to run from the relevant location (src or build). # - Builds Gutenberg. - # - Checks for any uncommitted changes after building. + # - Ensures version-controlled files are not modified or deleted. build-process-tests: name: ${{ contains( inputs.os, 'macos-' ) && 'MacOS' || contains( inputs.os, 'windows-' ) && 'Windows' || 'Linux' }} permissions: @@ -96,11 +96,5 @@ jobs: run: npm run build working-directory: ${{ env.GUTENBERG_DIRECTORY }} - - name: Check for uncommitted changes after building - shell: bash - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted during building + run: git diff --exit-code diff --git a/.github/workflows/reusable-test-local-docker-environment-v1.yml b/.github/workflows/reusable-test-local-docker-environment-v1.yml index 50118d45045ee..8f1a556afa2b4 100644 --- a/.github/workflows/reusable-test-local-docker-environment-v1.yml +++ b/.github/workflows/reusable-test-local-docker-environment-v1.yml @@ -71,7 +71,7 @@ jobs: # - Runs a WP CLI command. # - Tests the logs command. # - Tests the reset command. - # - Checks for any uncommitted changes. + # - Ensures version-controlled files are not modified or deleted. local-docker-environment-tests: name: ${{ 'mariadb' == inputs.db-type && 'MariaDB' || 'MySQL' }} ${{ inputs.db-version }}${{ inputs.memcached && ' with memcached' || '' }}${{ 'example.org' != inputs.tests-domain && format( ' {0}', inputs.tests-domain ) || '' }} permissions: @@ -166,10 +166,5 @@ jobs: - name: Reset the Docker environment run: npm run env:reset - - name: Check for uncommitted changes - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/test-and-zip-default-themes.yml b/.github/workflows/test-and-zip-default-themes.yml index 604f531462a67..1a44a8ff12e3a 100644 --- a/.github/workflows/test-and-zip-default-themes.yml +++ b/.github/workflows/test-and-zip-default-themes.yml @@ -112,12 +112,7 @@ jobs: # - Sets up Node.js. # - Installs npm dependencies. # - Runs the theme build script. - # - Checks for uncommitted changes. - # - Stages all uncommitted changes and adds any unversioned files. - # - Displays a diff of all staged changes. - # - Saves staged changes to a .diff file. - # - Uploads the diff file as an artifact. - # - Fails the job when uncommitted changes are detected. + # - Ensures version-controlled files are not modified or deleted. test-build-scripts: name: Test ${{ matrix.theme }} build script runs-on: ubuntu-24.04 @@ -161,27 +156,23 @@ jobs: - name: Build theme run: npm run build - - name: Check for uncommitted changes + - name: Check for changes to versioned files id: built-file-check if: ${{ github.event_name == 'pull_request' }} run: | - if [ -z "$(git status --porcelain)" ]; then + if git diff --quiet; then echo "uncommitted_changes=false" >> "$GITHUB_OUTPUT" else echo "uncommitted_changes=true" >> "$GITHUB_OUTPUT" fi - - name: Stage all changes for diff generation + - name: Display changes to versioned files if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git add -A - - - name: Display all uncommitted changes - if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git diff --cached + run: git diff - name: Save diff to a file if: ${{ steps.built-file-check.outputs.uncommitted_changes == 'true' }} - run: git diff --cached --binary > ./changes.diff + run: git diff > ./changes.diff # Uploads the diff file as an artifact. - name: Upload diff file as artifact @@ -191,21 +182,13 @@ jobs: name: pr-built-file-changes path: src/wp-content/themes/${{ matrix.theme }}/changes.diff - - name: Check for uncommitted changes after building - run: | - if [ -n "$(git status --porcelain)" ]; then - echo "Uncommitted changes detected after build:" - git status --porcelain - exit 1 - fi + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code # Prepares bundled themes for release. # # Performs the following steps: # - Checks out the repository. - # - Sets up Node.js. - # - Installs npm dependencies. - # - Runs the theme build script. # - Uploads the theme files as a workflow artifact (files uploaded as an artifact are automatically zipped). bundle-theme: name: Create ${{ matrix.theme }} ZIP file diff --git a/.gitignore b/.gitignore index 5a7f9b5aef66e..15876fa47fee8 100644 --- a/.gitignore +++ b/.gitignore @@ -48,11 +48,6 @@ wp-tests-config.php /artifacts /setup.log /coverage -/codecov -codecov.* -before.zip -wordpress.zip -wp-code-coverage-*.xml # Files and folders that get created in wp-content /src/wp-content/blogs.dir From a5fc0989a512f4b6dd6227577869291998ed6bb0 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sat, 20 Jun 2026 23:33:35 +0000 Subject: [PATCH 234/327] Docs: Correct typo in a comment in `wp_create_image_subsizes()`. Follow-up to [59317]. Props khokansardar, nimeshatxecurify, sabernhardt, SergeyBiryukov. Fixes #65468. git-svn-id: https://develop.svn.wordpress.org/trunk@62537 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/image.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-admin/includes/image.php b/src/wp-admin/includes/image.php index 95084b1db0576..935c613d561e9 100644 --- a/src/wp-admin/includes/image.php +++ b/src/wp-admin/includes/image.php @@ -316,7 +316,7 @@ function wp_create_image_subsizes( $file, $attachment_id ) { } if ( $scale_down ) { - // Resize the image. This will also convet it if needed. + // Resize the image. This will also convert it if needed. $resized = $editor->resize( $threshold, $threshold ); } elseif ( $convert ) { // The image will be converted (if possible) when saved. From eb77bc6ac07623d0f06572595c3df6846403159d Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sun, 21 Jun 2026 23:33:16 +0000 Subject: [PATCH 235/327] Site Health: Correct the anchor in object cache documentation link. Follow-up to [57793], [58113], [58332]. Props jdy68, mohamedahamed, sabernhardt, jeffgreendesign, Presskopp, audrasjb, stevenlinx, JavierCasares, westonruter, SergeyBiryukov. Fixes #65477, #58518. git-svn-id: https://develop.svn.wordpress.org/trunk@62538 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-site-health.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-admin/includes/class-wp-site-health.php b/src/wp-admin/includes/class-wp-site-health.php index 75e046ef8ffa7..9a888f231816c 100644 --- a/src/wp-admin/includes/class-wp-site-health.php +++ b/src/wp-admin/includes/class-wp-site-health.php @@ -2578,7 +2578,7 @@ public function get_test_persistent_object_cache() { $action_url = apply_filters( 'site_status_persistent_object_cache_url', /* translators: Localized Support reference. */ - __( 'https://developer.wordpress.org/advanced-administration/performance/optimization/#persistent-object-cache' ) + __( 'https://developer.wordpress.org/advanced-administration/performance/optimization/#object-caching' ) ); $result = array( From 18bf5273071a0e1bba3b74649416db15430c0f13 Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Mon, 22 Jun 2026 09:37:59 +0000 Subject: [PATCH 236/327] Excerpt: Honor the block visibility metadata in generated excerpts. When an excerpt is auto-generated, the `metadata.blockVisibility` attribute was ignored, so blocks marked as hidden still leaked their text into the excerpt even though they are not rendered on the front end. Skip any block whose `metadata.blockVisibility` attribute is boolean `false`, for both top-level blocks and inner blocks. Props n8finch, ramonopoly, wildworks. Fixes #65456. git-svn-id: https://develop.svn.wordpress.org/trunk@62539 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/blocks.php | 16 ++++ .../tests/formatting/excerptRemoveBlocks.php | 78 +++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/src/wp-includes/blocks.php b/src/wp-includes/blocks.php index 6a6418d966457..eeb2a9ae5c3e5 100644 --- a/src/wp-includes/blocks.php +++ b/src/wp-includes/blocks.php @@ -2238,6 +2238,14 @@ function excerpt_remove_blocks( $content ) { $output = ''; foreach ( $blocks as $block ) { + // Hide the block whenever the value is boolean false, regardless of the + // block's current visibility support. This prevents blocks that previously + // supported visibility from unintentionally appearing on the front end + // after their support was disabled. + if ( false === ( $block['attrs']['metadata']['blockVisibility'] ?? null ) ) { + continue; + } + if ( in_array( $block['blockName'], $allowed_blocks, true ) ) { if ( ! empty( $block['innerBlocks'] ) ) { if ( in_array( $block['blockName'], $allowed_wrapper_blocks, true ) ) { @@ -2299,6 +2307,14 @@ function _excerpt_render_inner_blocks( $parsed_block, $allowed_blocks ) { $output = ''; foreach ( $parsed_block['innerBlocks'] as $inner_block ) { + // Hide the block whenever the value is boolean false, regardless of the + // block's current visibility support. This prevents blocks that previously + // supported visibility from unintentionally appearing on the front end + // after their support was disabled. + if ( false === ( $inner_block['attrs']['metadata']['blockVisibility'] ?? null ) ) { + continue; + } + if ( ! in_array( $inner_block['blockName'], $allowed_blocks, true ) ) { continue; } diff --git a/tests/phpunit/tests/formatting/excerptRemoveBlocks.php b/tests/phpunit/tests/formatting/excerptRemoveBlocks.php index 2097c35bbf5b8..ae4ea76378f62 100644 --- a/tests/phpunit/tests/formatting/excerptRemoveBlocks.php +++ b/tests/phpunit/tests/formatting/excerptRemoveBlocks.php @@ -129,4 +129,82 @@ public function test_excerpt_infinite_loop() { $query->the_post(); $this->assertEmpty( do_blocks( '<!-- wp:core/fake /-->' ) ); } + + /** + * Tests that a top-level block hidden via the visibility block support + * is removed from the excerpt. + * + * @ticket 65456 + */ + public function test_excerpt_remove_blocks_skips_hidden_block() { + $content = '<!-- wp:paragraph {"metadata":{"blockVisibility":false}} --> +<p>hidden</p> +<!-- /wp:paragraph --> +<!-- wp:paragraph --><p>visible</p><!-- /wp:paragraph -->'; + + $output = excerpt_remove_blocks( $content ); + + $this->assertStringNotContainsString( 'hidden', $output ); + $this->assertStringContainsString( 'visible', $output ); + } + + /** + * Tests that a hidden wrapper block (group/columns/column) is removed + * from the excerpt, including its inner blocks. + * + * @ticket 65456 + * + * @covers ::_excerpt_render_inner_blocks + */ + public function test_excerpt_remove_blocks_skips_hidden_wrapper_block() { + $content = '<!-- wp:group {"metadata":{"blockVisibility":false}} --> +<div class="wp-block-group"> +<!-- wp:paragraph --><p>hidden inside group</p><!-- /wp:paragraph --> +</div> +<!-- /wp:group --> +<!-- wp:paragraph --><p>visible</p><!-- /wp:paragraph -->'; + + $output = excerpt_remove_blocks( $content ); + + $this->assertStringNotContainsString( 'hidden inside group', $output ); + $this->assertStringContainsString( 'visible', $output ); + } + + /** + * Tests that a hidden block nested inside a visible wrapper is removed. + * + * @ticket 65456 + * + * @covers ::_excerpt_render_inner_blocks + */ + public function test_excerpt_remove_blocks_skips_hidden_inner_block() { + $content = '<!-- wp:group --> +<div class="wp-block-group"> +<!-- wp:paragraph {"metadata":{"blockVisibility":false}} --><p>hidden inner</p><!-- /wp:paragraph --> +<!-- wp:paragraph --><p>visible inner</p><!-- /wp:paragraph --> +</div> +<!-- /wp:group -->'; + + $output = excerpt_remove_blocks( $content ); + + $this->assertStringNotContainsString( 'hidden inner', $output ); + $this->assertStringContainsString( 'visible inner', $output ); + } + + /** + * Tests that a block hidden only on a specific viewport is kept in the + * excerpt. Viewport visibility only affects the rendered display via CSS, + * so it must not strip the block's text from the excerpt. + * + * @ticket 65456 + */ + public function test_excerpt_remove_blocks_keeps_viewport_hidden_block() { + $content = '<!-- wp:paragraph {"metadata":{"blockVisibility":{"viewport":{"desktop":false}}}} --> +<p>Hello World</p> +<!-- /wp:paragraph -->'; + + $output = excerpt_remove_blocks( $content ); + + $this->assertStringContainsString( 'Hello World', $output ); + } } From fb76cccf79d7336d47729f791513c1b5c201350a Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Mon, 22 Jun 2026 13:57:25 +0000 Subject: [PATCH 237/327] Icons: Use snake_case `file_path` key in icon registry. Rename the `filePath` icon property to `file_path` in `WP_Icons_Registry` to follow WordPress PHP coding standards. Because the API to register icons has not yet shipped, consumers are not using this parameter, so there is no backward compatibility impact. Props mehul0810, mukesh27, tyxla, wildworks. See #64847. git-svn-id: https://develop.svn.wordpress.org/trunk@62540 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-icons-registry.php | 24 +++---- tests/phpunit/tests/icons/wpIconsRegistry.php | 72 ++++++++++++++++++- 2 files changed, 83 insertions(+), 13 deletions(-) diff --git a/src/wp-includes/class-wp-icons-registry.php b/src/wp-includes/class-wp-icons-registry.php index b096610c1b04f..2e2c2ca2956b4 100644 --- a/src/wp-includes/class-wp-icons-registry.php +++ b/src/wp-includes/class-wp-icons-registry.php @@ -81,8 +81,8 @@ protected function __construct() { $this->register( 'core/' . $icon_name, array( - 'label' => $icon_data['label'], - 'filePath' => $icons_directory . $icon_data['filePath'], + 'label' => $icon_data['label'], + 'file_path' => $icons_directory . $icon_data['filePath'], ) ); } @@ -97,11 +97,11 @@ protected function __construct() { * @param array $icon_properties { * List of properties for the icon. * - * @type string $label Required. A human-readable label for the icon. - * @type string $content Optional. SVG markup for the icon. - * If not provided, the content will be retrieved from the `filePath` if set. - * If both `content` and `filePath` are not set, the icon will not be registered. - * @type string $filePath Optional. The full path to the file containing the icon content. + * @type string $label Required. A human-readable label for the icon. + * @type string $content Optional. SVG markup for the icon. + * If not provided, the content will be retrieved from the `file_path` if set. + * If both `content` and `file_path` are not set, the icon will not be registered. + * @type string $file_path Optional. The full path to the file containing the icon content. * } * @return bool True if the icon was registered with success and false otherwise. */ @@ -143,7 +143,7 @@ protected function register( $icon_name, $icon_properties ) { return false; } - $allowed_keys = array_fill_keys( array( 'label', 'content', 'filePath' ), 1 ); + $allowed_keys = array_fill_keys( array( 'label', 'content', 'file_path' ), 1 ); foreach ( array_keys( $icon_properties ) as $key ) { if ( ! array_key_exists( $key, $allowed_keys ) ) { _doing_it_wrong( @@ -169,12 +169,12 @@ protected function register( $icon_name, $icon_properties ) { } if ( - ( ! isset( $icon_properties['content'] ) && ! isset( $icon_properties['filePath'] ) ) || - ( isset( $icon_properties['content'] ) && isset( $icon_properties['filePath'] ) ) + ( ! isset( $icon_properties['content'] ) && ! isset( $icon_properties['file_path'] ) ) || + ( isset( $icon_properties['content'] ) && isset( $icon_properties['file_path'] ) ) ) { _doing_it_wrong( __METHOD__, - __( 'Icons must provide either `content` or `filePath`.' ), + __( 'Icons must provide either `content` or `file_path`.' ), '7.0.0' ); return false; @@ -262,7 +262,7 @@ protected function sanitize_icon_content( $icon_content ) { protected function get_content( $icon_name ) { if ( ! isset( $this->registered_icons[ $icon_name ]['content'] ) ) { $content = file_get_contents( - $this->registered_icons[ $icon_name ]['filePath'] + $this->registered_icons[ $icon_name ]['file_path'] ); $content = $this->sanitize_icon_content( $content ); diff --git a/tests/phpunit/tests/icons/wpIconsRegistry.php b/tests/phpunit/tests/icons/wpIconsRegistry.php index fba2eacde43f5..23352964db0f5 100644 --- a/tests/phpunit/tests/icons/wpIconsRegistry.php +++ b/tests/phpunit/tests/icons/wpIconsRegistry.php @@ -40,7 +40,7 @@ public function tear_down() { * Invokes WP_Icons_Registry::register despite it being private * * @param string $icon_name Icon name including namespace. - * @param array $icon_properties Icon properties (label, content, filePath). + * @param array $icon_properties Icon properties (label, content, file_path). * @return bool True if the icon was registered successfully. */ private function register( $icon_name, $icon_properties ) { @@ -107,4 +107,74 @@ public function test_register_invalid_name( $icon_name ) { $result = $this->register( $icon_name, $settings ); $this->assertFalse( $result ); } + + /** + * Should register an icon that provides its content through `file_path`. + * + * @ticket 64847 + * + * @covers ::register + */ + public function test_register_icon_with_file_path() { + $file_path = tempnam( get_temp_dir(), 'wp-icon-' ); + file_put_contents( $file_path, '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg>' ); + + $name = 'test-plugin/file-path-icon'; + $settings = array( + 'label' => 'Icon', + 'file_path' => $file_path, + ); + + $result = $this->register( $name, $settings ); + $this->assertTrue( $result ); + $this->assertTrue( $this->registry->is_registered( $name ) ); + + $registered_icons = $this->registry->get_registered_icons( $name ); + $this->assertCount( 1, $registered_icons ); + $this->assertStringContainsString( '<svg', $registered_icons[0]['content'] ); + + unlink( $file_path ); + } + + /** + * Should fail to register an icon that provides both `content` and `file_path`. + * + * @ticket 64847 + * + * @covers ::register + * + * @expectedIncorrectUsage WP_Icons_Registry::register + */ + public function test_register_icon_with_content_and_file_path() { + $name = 'test-plugin/content-and-file-path'; + $settings = array( + 'label' => 'Icon', + 'content' => '<svg></svg>', + 'file_path' => '/path/to/icon.svg', + ); + + $result = $this->register( $name, $settings ); + $this->assertFalse( $result ); + $this->assertFalse( $this->registry->is_registered( $name ) ); + } + + /** + * Should fail to register an icon that provides neither `content` nor `file_path`. + * + * @ticket 64847 + * + * @covers ::register + * + * @expectedIncorrectUsage WP_Icons_Registry::register + */ + public function test_register_icon_without_content_or_file_path() { + $name = 'test-plugin/no-content'; + $settings = array( + 'label' => 'Icon', + ); + + $result = $this->register( $name, $settings ); + $this->assertFalse( $result ); + $this->assertFalse( $this->registry->is_registered( $name ) ); + } } From 2cde404609010c73017a07f08caf4831f41e7fdc Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Mon, 22 Jun 2026 14:58:59 +0000 Subject: [PATCH 238/327] Build/Test Tools: Run the `external-http` test group first. Tests in the `external-http` group are skipped by default and only run when explicitly specified using the `--group` flag. In the PHPUnit test workflow, this group is run after the full test suite. Because HTTP requests are made to external sites and APIs, there are occasionally failures due to service or network outatges. This changes the order of the PHPUnit test commands so that the `external-http` group runs first. This ensures the run fails early when there are issues within the `external-http` tests and avoids needlessly running the full test suite. Props desrosj, mukesh27, johnbillion. See #64893, #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62541 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/reusable-phpunit-tests-v3.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/reusable-phpunit-tests-v3.yml b/.github/workflows/reusable-phpunit-tests-v3.yml index 64507323a617b..7e10a030953a4 100644 --- a/.github/workflows/reusable-phpunit-tests-v3.yml +++ b/.github/workflows/reusable-phpunit-tests-v3.yml @@ -225,6 +225,11 @@ jobs: php -m | grep -i pcov ' + - name: Run external HTTP tests + if: ${{ ! inputs.multisite && ! inputs.phpunit-test-groups && ! inputs.coverage-report }} + continue-on-error: ${{ inputs.allow-errors }} + run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c "${PHPUNIT_CONFIG}" --group external-http + - name: Run PHPUnit tests${{ inputs.phpunit-test-groups && format( ' ({0} groups)', inputs.phpunit-test-groups ) || '' }}${{ inputs.coverage-report && ' with coverage report' || '' }} continue-on-error: ${{ inputs.allow-errors }} run: | @@ -248,11 +253,6 @@ jobs: continue-on-error: ${{ inputs.allow-errors }} run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c "${PHPUNIT_CONFIG}" --group ms-files - - name: Run external HTTP tests - if: ${{ ! inputs.multisite && ! inputs.phpunit-test-groups && ! inputs.coverage-report }} - continue-on-error: ${{ inputs.allow-errors }} - run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c "${PHPUNIT_CONFIG}" --group external-http - # __fakegroup__ is excluded to force PHPUnit to ignore the <exclude> settings in phpunit.xml.dist. - name: Run (Xdebug) tests if: ${{ ! inputs.phpunit-test-groups && ! inputs.coverage-report }} From bcf665d94c08dc85ed262dc7bb25c1f3a664b95f Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Mon, 22 Jun 2026 19:38:52 +0000 Subject: [PATCH 239/327] HTML API: Ensure correct serialization of XMP contents. The `xmp` element is parsed with the generic raw text element parsing algorithm, so its text content must be appended literally when serializing rather than escaped with HTML character references. Developed in https://github.com/WordPress/wordpress-develop/pull/12193. Props jonsurrell. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62542 602fd350-edb4-49c9-b593-d223f7449a82 --- .../html-api/class-wp-html-processor.php | 1 + .../html-api/wpHtmlProcessor-serialize.php | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/wp-includes/html-api/class-wp-html-processor.php b/src/wp-includes/html-api/class-wp-html-processor.php index 967d616129647..1828123ff879d 100644 --- a/src/wp-includes/html-api/class-wp-html-processor.php +++ b/src/wp-includes/html-api/class-wp-html-processor.php @@ -1505,6 +1505,7 @@ public function serialize_token(): string { case 'SCRIPT': case 'STYLE': + case 'XMP': break; default: diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php index 5afe37a010a41..d9d7d7c13394a 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php @@ -257,6 +257,22 @@ public function test_style_contents_are_not_escaped() { ); } + /** + * XMP contents are parsed using the generic raw text element parsing algorithm. + * Their contents should not be escaped with HTML character references on normalization. + * + * @ticket 65372 + */ + public function test_xmp_contents_are_not_escaped() { + $normalized = WP_HTML_Processor::normalize( "<xmp> < > & \" ' \x00 </xmp>" ); + + $this->assertSame( + "<xmp> < > & \" ' \u{FFFD} </xmp>", + $normalized, + 'Should have preserved text inside an XMP element, except for replacing NULL bytes.' + ); + } + public function test_unexpected_closing_tags_are_removed() { $this->assertSame( WP_HTML_Processor::normalize( 'one</div>two</span>three' ), @@ -404,6 +420,7 @@ public static function data_tokens_with_null_bytes() { 'Foreign content text' => array( "<svg>one\x00two</svg>", "<svg>one\u{FFFD}two</svg>" ), 'SCRIPT content' => array( "<script>alert(\x00)</script>", "<script>alert(\u{FFFD})</script>" ), 'STYLE content' => array( "<style>\x00 {}</style>", "<style>\u{FFFD} {}</style>" ), + 'XMP content' => array( "<xmp>a\x00b</xmp>", "<xmp>a\u{FFFD}b</xmp>" ), 'Comment text' => array( "<!-- \x00 -->", "<!-- \u{FFFD} -->" ), ); } @@ -629,6 +646,7 @@ public static function data_provider_normalized_fuzzer_cases_that_should_be_idem 'Duplicate ALT boundary' => array( '<r alt=\'\'d alt=""=>' ), 'NULL byte in SVG child tag' => array( "<svg><l\x00 '>" ), 'NULL byte before slash in SVG child tag' => array( "<svg><l\x00/r>" ), + 'XMP generic raw text' => array( "<xmp> < > & \" ' \x00 </xmp>" ), ); } From 16951889f9ad4c00122a4a91c686f90981b8e5d6 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Mon, 22 Jun 2026 23:13:49 +0000 Subject: [PATCH 240/327] Docs: Update wording in a comment in `admin-bar.css` for consistency. Follow-up to [26595]. Props salmanshafiq8630, sabernhardt, harishtewari, dhruvang21, SergeyBiryukov. Fixes #65514. git-svn-id: https://develop.svn.wordpress.org/trunk@62543 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/css/admin-bar.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/css/admin-bar.css b/src/wp-includes/css/admin-bar.css index fb6986e7ecbed..7601fd2ef9b83 100644 --- a/src/wp-includes/css/admin-bar.css +++ b/src/wp-includes/css/admin-bar.css @@ -969,7 +969,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-my-account > a { position: relative; white-space: nowrap; - text-indent: 150%; /* More than 100% indention is needed since this element has padding */ + text-indent: 150%; /* More than 100% indentation is needed since this element has padding */ width: 28px; padding: 0 10px; overflow: hidden; /* Prevent link text from forcing horizontal scrolling on mobile */ From 638a82cb141b146a6348d350dfb97a650aa40891 Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Tue, 23 Jun 2026 05:13:34 +0000 Subject: [PATCH 241/327] Site Health: Fix missing error icon in dot org status test. The error indicator in the WordPress.org communication test lost its icon class, so no icon appeared when the check failed. Restore the icon class on the error element. Props sabernhardt, valani9099, wildworks. Fixes #65014. git-svn-id: https://develop.svn.wordpress.org/trunk@62545 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-site-health.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-admin/includes/class-wp-site-health.php b/src/wp-admin/includes/class-wp-site-health.php index 9a888f231816c..8274f8bd01b3c 100644 --- a/src/wp-admin/includes/class-wp-site-health.php +++ b/src/wp-admin/includes/class-wp-site-health.php @@ -1357,7 +1357,7 @@ public function get_test_dotorg_communication() { $result['description'] .= sprintf( '<p>%s</p>', sprintf( - '<span class="error"><span class="screen-reader-text">%s</span></span> %s', + '<span class="dashicons error" aria-hidden="true"></span><span class="screen-reader-text">%s</span> %s', /* translators: Hidden accessibility text. */ __( 'Error' ), sprintf( From 2e7900a96c3fdbeefce99710389b1daf64da3f11 Mon Sep 17 00:00:00 2001 From: Marin Atanasov <tyxla@git.wordpress.org> Date: Tue, 23 Jun 2026 08:26:54 +0000 Subject: [PATCH 242/327] Editor: Hide Classic Block from inserter. Hide the Classic block in the block editor inserter by default, since classic content is largely a legacy editing path and should not be surfaced as a primary insertion option. Introduce a new `wp_classic_block_supports_inserter` filter that allows re-enabling the Classic block in the inserter, either globally or on a per-post basis. Existing classic content (the `core/freeform` block) continues to render and remain editable; only its visibility in the inserter is affected. This ports Gutenberg PR #77911 to Core. Developed in: https://github.com/WordPress/wordpress-develop/pull/11712 Props desrosj, mamaduka, mukesh27, tyxla, westonruter, wildworks, yuliyan. Fixes #65166. git-svn-id: https://develop.svn.wordpress.org/trunk@62546 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/default-filters.php | 1 + src/wp-includes/script-loader.php | 26 +++++++ tests/phpunit/tests/dependencies/scripts.php | 73 ++++++++++++++++++++ 3 files changed, 100 insertions(+) diff --git a/src/wp-includes/default-filters.php b/src/wp-includes/default-filters.php index 5581828a10b61..2479b6f173110 100644 --- a/src/wp-includes/default-filters.php +++ b/src/wp-includes/default-filters.php @@ -644,6 +644,7 @@ add_action( 'enqueue_block_editor_assets', 'wp_enqueue_block_editor_script_modules' ); add_action( 'enqueue_block_editor_assets', 'wp_enqueue_global_styles_css_custom_properties' ); add_action( 'enqueue_block_editor_assets', '_wp_enqueue_auto_register_blocks' ); +add_action( 'enqueue_block_editor_assets', 'wp_declare_classic_block_necessary' ); add_action( 'wp_print_scripts', 'wp_just_in_time_script_localization' ); add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' ); add_action( 'customize_controls_print_styles', 'wp_resource_hints', 1 ); diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index 134d86c26a08a..299e8dc9b750f 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -2646,6 +2646,32 @@ function wp_enqueue_global_styles() { wp_add_global_styles_for_blocks(); } +/** + * Declares a flag that the Classic block is necessary for the current post. + * + * @since 7.1.0 + * @access private + */ +function wp_declare_classic_block_necessary(): void { + /** + * Filters whether the Classic block should be available in the inserter. + * + * Defaults to false. Use this filter to opt in (globally or per post). + * + * @param bool $supports_inserter Whether the Classic block is available in the inserter. + * @param WP_Post|null $post The post being edited, or null if not in the post editor. + */ + if ( ! (bool) apply_filters( 'wp_classic_block_supports_inserter', false, get_post() ) ) { + return; + } + + wp_add_inline_script( + 'wp-block-library', + 'window.__needsClassicBlock = true;', + 'before' + ); +} + /** * Checks if the editor scripts and styles for all registered block types * should be enqueued on the current screen. diff --git a/tests/phpunit/tests/dependencies/scripts.php b/tests/phpunit/tests/dependencies/scripts.php index 41c9673915b93..73c60dcffa8c0 100644 --- a/tests/phpunit/tests/dependencies/scripts.php +++ b/tests/phpunit/tests/dependencies/scripts.php @@ -4542,6 +4542,79 @@ public function data_varying_versions_handle_args() { ); } + /** + * Tests that the Classic block is hidden from the inserter by default. + * + * @ticket 65166 + * + * @covers ::wp_declare_classic_block_necessary + */ + public function test_wp_declare_classic_block_necessary_does_nothing_by_default() { + wp_register_script( 'wp-block-library', 'https://example.org/wp-block-library.js' ); + + wp_declare_classic_block_necessary(); + + $this->assertFalse( + wp_scripts()->get_data( 'wp-block-library', 'before' ), + 'No inline script should be enqueued when the filter is not used.' + ); + } + + /** + * Tests that the Classic block can be opted into the inserter via the filter. + * + * @ticket 65166 + * + * @covers ::wp_declare_classic_block_necessary + */ + public function test_wp_declare_classic_block_necessary_enqueues_flag_when_filter_enabled() { + wp_register_script( 'wp-block-library', 'https://example.org/wp-block-library.js' ); + add_filter( 'wp_classic_block_supports_inserter', '__return_true' ); + + wp_declare_classic_block_necessary(); + + $before = wp_scripts()->get_data( 'wp-block-library', 'before' ); + $this->assertIsArray( + $before, + 'An inline script should be enqueued when the filter opts in.' + ); + $this->assertContains( + 'window.__needsClassicBlock = true;', + $before, + 'The Classic block flag should be added to the wp-block-library inline scripts.' + ); + } + + /** + * Tests that the current post is passed to the filter. + * + * @ticket 65166 + * + * @covers ::wp_declare_classic_block_necessary + */ + public function test_wp_declare_classic_block_necessary_passes_post_to_filter() { + wp_register_script( 'wp-block-library', 'https://example.org/wp-block-library.js' ); + + $post_id = self::factory()->post->create(); + $GLOBALS['post'] = get_post( $post_id ); + + $filter_post = false; + add_filter( + 'wp_classic_block_supports_inserter', + static function ( $supports_inserter, $post ) use ( &$filter_post ) { + $filter_post = $post; + return $supports_inserter; + }, + 10, + 2 + ); + + wp_declare_classic_block_necessary(); + + $this->assertInstanceOf( WP_Post::class, $filter_post, 'The post should be passed to the filter.' ); + $this->assertSame( $post_id, $filter_post->ID, 'The current post should be passed to the filter.' ); + } + /** * Normalizes markup for snapshot. * From 36cc6e9c061601f5a3ebb8969a9696a75ef198e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Maneiro?= <oandregal@git.wordpress.org> Date: Tue, 23 Jun 2026 11:31:21 +0000 Subject: [PATCH 243/327] Add view config API and REST endpoint. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce wp_get_entity_view_config( $kind, $name ) to build the shared DataViews/DataForm configuration for an entity (default view, layouts, view list, and form), exposed through a dynamic get_entity_view_config_{$kind}_{$name} filter so core and plugins can provide per-entity configuration. Core registers default providers for the page, post, wp_block, wp_template_part, and wp_template post types. Add WP_REST_View_Config_Controller, which exposes the configuration at GET /wp/v2/view-config?kind=…&name=…, delegating to the API and handling schema, the edit_posts permission check, and empty-object serialization. Include PHPUnit coverage for both the API and the controller. This ports the View Config REST API from the Gutenberg plugin. See https://github.com/WordPress/gutenberg/issues/76544. Props ntsekouras, oandregal. Fixes #65516. git-svn-id: https://develop.svn.wordpress.org/trunk@62547 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/default-filters.php | 12 +- src/wp-includes/rest-api.php | 4 + .../class-wp-rest-view-config-controller.php | 843 ++++++++++++++++++ src/wp-includes/view-config.php | 783 ++++++++++++++++ src/wp-settings.php | 2 + .../tests/rest-api/rest-schema-setup.php | 1 + .../rest-api/rest-view-config-controller.php | 381 ++++++++ tests/phpunit/tests/view-config.php | 225 +++++ tests/qunit/fixtures/wp-api-generated.js | 32 + 9 files changed, 2282 insertions(+), 1 deletion(-) create mode 100644 src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php create mode 100644 src/wp-includes/view-config.php create mode 100644 tests/phpunit/tests/rest-api/rest-view-config-controller.php create mode 100644 tests/phpunit/tests/view-config.php diff --git a/src/wp-includes/default-filters.php b/src/wp-includes/default-filters.php index 2479b6f173110..3d00e5ae1ba22 100644 --- a/src/wp-includes/default-filters.php +++ b/src/wp-includes/default-filters.php @@ -818,4 +818,14 @@ add_filter( 'rest_pre_insert_wp_template', 'inject_ignored_hooked_blocks_metadata_attributes' ); add_filter( 'rest_pre_insert_wp_template_part', 'inject_ignored_hooked_blocks_metadata_attributes' ); -unset( $filter, $action ); +// View Config API. +foreach ( array( 'page', 'post', 'wp_block', 'wp_template_part', 'wp_template' ) as $post_type ) { + add_filter( + "get_entity_view_config_postType_{$post_type}", + "_wp_get_entity_view_config_post_type_{$post_type}", + 10, + 1 + ); +} + +unset( $filter, $action, $post_type ); diff --git a/src/wp-includes/rest-api.php b/src/wp-includes/rest-api.php index a4c22e8f1cca1..e81de0ab281ee 100644 --- a/src/wp-includes/rest-api.php +++ b/src/wp-includes/rest-api.php @@ -428,6 +428,10 @@ function create_initial_rest_routes() { // Icons. $icons_controller = new WP_REST_Icons_Controller(); $icons_controller->register_routes(); + + // View Config. + $view_config_controller = new WP_REST_View_Config_Controller(); + $view_config_controller->register_routes(); } /** diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php new file mode 100644 index 0000000000000..e8aac4ccfafff --- /dev/null +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php @@ -0,0 +1,843 @@ +<?php +/** + * REST API: WP_REST_View_Config_Controller class + * + * @package WordPress + * @subpackage REST_API + * @since 7.1.0 + */ + +/** + * Controller which provides a REST endpoint for retrieving the default + * view configuration for a given entity type. + * + * @since 7.1.0 + * + * @see WP_REST_Controller + */ +class WP_REST_View_Config_Controller extends WP_REST_Controller { + + /** + * Constructor. + * + * @since 7.1.0 + */ + public function __construct() { + $this->namespace = 'wp/v2'; + $this->rest_base = 'view-config'; + } + + /** + * Registers the routes for the controller. + * + * @since 7.1.0 + */ + public function register_routes() { + register_rest_route( + $this->namespace, + '/' . $this->rest_base, + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => array( + 'kind' => array( + 'description' => __( 'Entity kind.' ), + 'type' => 'string', + 'required' => true, + ), + 'name' => array( + 'description' => __( 'Entity name.' ), + 'type' => 'string', + 'required' => true, + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) + ); + } + + /** + * Checks if a given request has access to read view config. + * + * @since 7.1.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has read access, WP_Error object otherwise. + */ + public function get_items_permissions_check( $request ) { + $kind = $request->get_param( 'kind' ); + $name = $request->get_param( 'name' ); + + $capability = $this->get_required_capability( $kind, $name ); + + if ( null === $capability ) { + return new WP_Error( + 'rest_view_config_invalid_entity', + __( 'Invalid entity kind or name.' ), + array( 'status' => 404 ) + ); + } + + if ( ! current_user_can( $capability ) ) { + return new WP_Error( + 'rest_cannot_read', + __( 'Sorry, you are not allowed to read view config.' ), + array( 'status' => rest_authorization_required_code() ) + ); + } + + return true; + } + + /** + * Resolves the capability required to read the view config for an entity. + * + * Known kinds map to the capability that gates managing that entity's list: + * post types use their own `edit_posts` capability (which honors custom + * `capability_type` registrations), taxonomies use `manage_terms`, and + * root-level entities use `manage_options`. A post type or taxonomy that is + * not registered, or not exposed to the REST API, resolves to `null` so the + * request is treated as referencing an unknown entity. + * + * Any other kind falls back to `edit_posts`. This keeps entities registered + * through the `get_entity_view_config_{$kind}_{$name}` filter readable behind + * a baseline capability. + * + * @since 7.1.0 + * + * @param string $kind The entity kind (e.g. `postType`). + * @param string $name The entity name (e.g. `page`). + * @return string|null Capability required to read the config, or null if the + * entity is not registered. + */ + protected function get_required_capability( $kind, $name ) { + switch ( $kind ) { + case 'postType': + $post_type = get_post_type_object( $name ); + if ( $post_type && $post_type->show_in_rest ) { + return $post_type->cap->edit_posts; + } + return null; + + case 'taxonomy': + $taxonomy = get_taxonomy( $name ); + if ( $taxonomy && $taxonomy->show_in_rest ) { + return $taxonomy->cap->manage_terms; + } + return null; + + case 'root': + return 'manage_options'; + } + + return 'edit_posts'; + } + + /** + * Returns the default view configuration for the given entity type. + * + * @since 7.1.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + $kind = $request->get_param( 'kind' ); + $name = $request->get_param( 'name' ); + + $config = wp_get_entity_view_config( $kind, $name ); + $schema = $this->get_item_schema(); + + $response = array( + 'kind' => $kind, + 'name' => $name, + 'default_view' => $this->cast_empty_objects( $config['default_view'], $schema['properties']['default_view'] ), + 'default_layouts' => $this->cast_empty_objects( $config['default_layouts'], $schema['properties']['default_layouts'] ), + 'view_list' => $this->cast_empty_objects( $config['view_list'], $schema['properties']['view_list'] ), + 'form' => $this->cast_empty_objects( $config['form'], $schema['properties']['form'] ), + ); + + return rest_ensure_response( $response ); + } + + /** + * Recursively casts empty arrays to objects where the schema types them as + * objects. + * + * PHP cannot distinguish an empty associative array from an empty list, so + * `json_encode()` always serializes `array()` as a JSON array (`[]`). The + * REST schema, however, types several values as objects, which must encode + * as `{}`. This walks the value against its schema and casts any empty, + * object-typed array to an object. Non-empty associative arrays already + * encode as objects, so they are left as arrays and only recursed into to + * fix any nested empty objects. + * + * Union schemas (`oneOf`/`anyOf`) are handled only for the empty-array case: + * an empty value is cast to an object when any branch allows an object. Such + * values are not recursed into, which is sufficient for the form schema + * where they never contain empty nested objects. + * + * @since 7.1.0 + * + * @param mixed $value The value to normalize. + * @param array $schema The schema node describing the value. + * @return mixed The normalized value, with empty object-typed arrays cast to objects. + */ + protected function cast_empty_objects( $value, $schema ) { + if ( ! is_array( $value ) || ! is_array( $schema ) ) { + return $value; + } + + if ( isset( $schema['oneOf'] ) || isset( $schema['anyOf'] ) ) { + $branches = isset( $schema['oneOf'] ) ? $schema['oneOf'] : $schema['anyOf']; + if ( array() === $value ) { + foreach ( $branches as $branch ) { + if ( is_array( $branch ) && in_array( 'object', (array) ( isset( $branch['type'] ) ? $branch['type'] : array() ), true ) ) { + return (object) array(); + } + } + } + return $value; + } + + $types = (array) ( isset( $schema['type'] ) ? $schema['type'] : array() ); + + if ( in_array( 'array', $types, true ) && isset( $schema['items'] ) ) { + foreach ( $value as $index => $item ) { + $value[ $index ] = $this->cast_empty_objects( $item, $schema['items'] ); + } + return $value; + } + + if ( in_array( 'object', $types, true ) ) { + if ( isset( $schema['properties'] ) ) { + foreach ( $schema['properties'] as $property => $property_schema ) { + if ( array_key_exists( $property, $value ) ) { + $value[ $property ] = $this->cast_empty_objects( $value[ $property ], $property_schema ); + } + } + } + if ( isset( $schema['additionalProperties'] ) && is_array( $schema['additionalProperties'] ) ) { + foreach ( $value as $key => $item ) { + if ( isset( $schema['properties'][ $key ] ) ) { + continue; + } + $value[ $key ] = $this->cast_empty_objects( $item, $schema['additionalProperties'] ); + } + } + + // Empty object-typed arrays must serialize as {} to match the schema. + if ( array() === $value ) { + return (object) array(); + } + } + + return $value; + } + + /** + * Retrieves the item's schema, conforming to JSON Schema. + * + * @since 7.1.0 + * + * @return array Item schema data. + */ + public function get_item_schema() { + if ( $this->schema ) { + return $this->add_additional_fields_schema( $this->schema ); + } + + $view_base_properties = $this->get_view_base_schema(); + + $this->schema = array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'view-config', + 'type' => 'object', + 'properties' => array( + 'kind' => array( + 'description' => __( 'Entity kind.' ), + 'type' => 'string', + 'readonly' => true, + ), + 'name' => array( + 'description' => __( 'Entity name.' ), + 'type' => 'string', + 'readonly' => true, + ), + 'default_view' => array( + 'description' => __( 'Default view configuration.' ), + 'type' => 'object', + 'readonly' => true, + 'properties' => array_merge( + array( + 'type' => array( + 'type' => 'string', + ), + 'layout' => $this->get_combined_layout_schema(), + ), + $view_base_properties + ), + ), + 'default_layouts' => array( + 'description' => __( 'Default layout configurations.' ), + 'type' => 'object', + 'readonly' => true, + 'properties' => array( + 'table' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_table_layout_schema(), + ) + ), + ), + 'list' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_list_layout_schema(), + ) + ), + ), + 'grid' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_grid_layout_schema(), + ) + ), + ), + 'activity' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_list_layout_schema(), + ) + ), + ), + 'pickerGrid' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_grid_layout_schema(), + ) + ), + ), + 'pickerTable' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_table_layout_schema(), + ) + ), + ), + ), + ), + 'view_list' => array( + 'description' => __( 'List of default views.' ), + 'type' => 'array', + 'readonly' => true, + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'title' => array( + 'type' => 'string', + ), + 'slug' => array( + 'type' => 'string', + ), + 'view' => array( + 'type' => 'object', + 'properties' => array_merge( + array( + 'type' => array( + 'type' => 'string', + ), + 'layout' => $this->get_combined_layout_schema(), + ), + $view_base_properties + ), + ), + ), + ), + ), + 'form' => array( + 'description' => __( 'Default form configuration.' ), + 'type' => 'object', + 'readonly' => true, + 'properties' => $this->get_form_schema(), + ), + ), + ); + + return $this->add_additional_fields_schema( $this->schema ); + } + + /** + * Returns the schema properties shared by all view types (ViewBase), excluding 'type'. + * + * @since 7.1.0 + * + * @return array Schema properties for the base view configuration. + */ + protected function get_view_base_schema() { + return array( + 'search' => array( + 'type' => 'string', + ), + 'filters' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'field' => array( + 'type' => 'string', + ), + 'operator' => array( + 'type' => 'string', + 'enum' => array( + 'is', + 'isNot', + 'isAny', + 'isNone', + 'isAll', + 'isNotAll', + 'lessThan', + 'greaterThan', + 'lessThanOrEqual', + 'greaterThanOrEqual', + 'before', + 'after', + ), + ), + 'value' => array(), + 'isLocked' => array( + 'type' => 'boolean', + ), + ), + ), + ), + 'sort' => array( + 'type' => 'object', + 'properties' => array( + 'field' => array( + 'type' => 'string', + ), + 'direction' => array( + 'type' => 'string', + 'enum' => array( 'asc', 'desc' ), + ), + ), + ), + 'page' => array( + 'type' => 'integer', + ), + 'perPage' => array( + 'type' => 'integer', + ), + 'fields' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + ), + 'titleField' => array( + 'type' => 'string', + ), + 'mediaField' => array( + 'type' => 'string', + ), + 'descriptionField' => array( + 'type' => 'string', + ), + 'showTitle' => array( + 'type' => 'boolean', + ), + 'showMedia' => array( + 'type' => 'boolean', + ), + 'showDescription' => array( + 'type' => 'boolean', + ), + 'showLevels' => array( + 'type' => 'boolean', + ), + 'groupBy' => array( + 'type' => 'object', + 'properties' => array( + 'field' => array( + 'type' => 'string', + ), + 'direction' => array( + 'type' => 'string', + 'enum' => array( 'asc', 'desc' ), + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true, + ), + ), + ), + 'infiniteScrollEnabled' => array( + 'type' => 'boolean', + ), + ); + } + + /** + * Returns the schema for the ColumnStyle type. + * + * @since 7.1.0 + * + * @return array Schema for a column style object. + */ + protected function get_column_style_schema() { + return array( + 'type' => 'object', + 'properties' => array( + 'width' => array( + 'type' => array( 'string', 'number' ), + ), + 'maxWidth' => array( + 'type' => array( 'string', 'number' ), + ), + 'minWidth' => array( + 'type' => array( 'string', 'number' ), + ), + 'align' => array( + 'type' => 'string', + 'enum' => array( 'start', 'center', 'end' ), + ), + ), + ); + } + + /** + * Returns the layout schema for table-type views (ViewTable, ViewPickerTable). + * + * @since 7.1.0 + * + * @return array Schema for a table layout object. + */ + protected function get_table_layout_schema() { + return array( + 'type' => 'object', + 'properties' => array( + 'styles' => array( + 'type' => 'object', + 'additionalProperties' => $this->get_column_style_schema(), + ), + 'density' => array( + 'type' => 'string', + 'enum' => array( 'compact', 'balanced', 'comfortable' ), + ), + 'enableMoving' => array( + 'type' => 'boolean', + ), + ), + ); + } + + /** + * Returns the layout schema for list-type views (ViewList, ViewActivity). + * + * @since 7.1.0 + * + * @return array Schema for a list layout object. + */ + protected function get_list_layout_schema() { + return array( + 'type' => 'object', + 'properties' => array( + 'density' => array( + 'type' => 'string', + 'enum' => array( 'compact', 'balanced', 'comfortable' ), + ), + ), + ); + } + + /** + * Returns a combined layout schema that accepts properties from all view types. + * + * This is useful for contexts where the view type is not known ahead of time + * (e.g. the `view` override in a view list item), so all possible layout + * properties must be accepted. + * + * @since 7.1.0 + * + * @return array Schema for a combined layout object. + */ + protected function get_combined_layout_schema() { + return array( + 'type' => 'object', + 'properties' => array_merge( + $this->get_table_layout_schema()['properties'], + $this->get_grid_layout_schema()['properties'], + $this->get_list_layout_schema()['properties'] + ), + ); + } + + /** + * Returns the layout schema for grid-type views (ViewGrid, ViewPickerGrid). + * + * @since 7.1.0 + * + * @return array Schema for a grid layout object. + */ + protected function get_grid_layout_schema() { + return array( + 'type' => 'object', + 'properties' => array( + 'badgeFields' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + ), + 'previewSize' => array( + 'type' => 'number', + ), + 'density' => array( + 'type' => 'string', + 'enum' => array( 'compact', 'balanced', 'comfortable' ), + ), + ), + ); + } + + /** + * Returns the schema for a form layout object as a discriminated union. + * + * Each variant is discriminated by a single-value enum on its `type` property, + * matching the TypeScript Layout union in dataviews/src/types/dataform.ts. + * + * @since 7.1.0 + * + * @return array Schema for a form layout object. + */ + protected function get_form_layout_schema() { + return array( + 'oneOf' => array( + // RegularLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'regular' ), + ), + 'labelPosition' => array( + 'type' => 'string', + 'enum' => array( 'top', 'side', 'none' ), + ), + ), + ), + // PanelLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'panel' ), + ), + 'labelPosition' => array( + 'type' => 'string', + 'enum' => array( 'top', 'side', 'none' ), + ), + 'openAs' => array( + 'oneOf' => array( + array( + 'type' => 'string', + 'enum' => array( 'dropdown', 'modal' ), + ), + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'dropdown', 'modal' ), + ), + 'applyLabel' => array( + 'type' => 'string', + ), + 'cancelLabel' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'summary' => array( + 'oneOf' => array( + array( 'type' => 'string' ), + array( + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + ), + ), + ), + 'editVisibility' => array( + 'type' => 'string', + 'enum' => array( 'always', 'on-hover' ), + ), + ), + ), + // CardLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'card' ), + ), + 'withHeader' => array( + 'type' => 'boolean', + ), + 'isOpened' => array( + 'type' => 'boolean', + ), + 'isCollapsible' => array( + 'type' => 'boolean', + ), + 'summary' => array( + 'oneOf' => array( + array( 'type' => 'string' ), + array( + 'type' => 'array', + 'items' => array( + 'oneOf' => array( + array( 'type' => 'string' ), + array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'type' => 'string', + ), + 'visibility' => array( + 'type' => 'string', + 'enum' => array( 'always', 'when-collapsed' ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + // RowLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'row' ), + ), + 'alignment' => array( + 'type' => 'string', + 'enum' => array( 'start', 'center', 'end' ), + ), + 'styles' => array( + 'type' => 'object', + 'additionalProperties' => array( + 'type' => 'object', + 'properties' => array( + 'flex' => array( + 'type' => array( 'string', 'number' ), + ), + ), + ), + ), + ), + ), + // DetailsLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'details' ), + ), + 'summary' => array( + 'type' => 'string', + ), + ), + ), + ), + ); + } + + /** + * Returns the schema for a form field item (string or object). + * + * @since 7.1.0 + * + * @return array Schema for a form field. + */ + protected function get_form_field_schema() { + return array( + 'oneOf' => array( + array( 'type' => 'string' ), + array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'type' => 'string', + ), + 'label' => array( + 'type' => 'string', + ), + 'description' => array( + 'type' => 'string', + ), + 'layout' => $this->get_form_layout_schema(), + 'children' => array( + 'type' => 'array', + 'items' => array( + 'oneOf' => array( + array( 'type' => 'string' ), + // This object can have the shape of a form field itself, + // allowing for recursive nesting of form fields. + // There's no easy way to codify this recursion via the JSON Schema draft-04 + // supported by the REST API. + array( 'type' => 'object' ), + ), + ), + ), + ), + ), + ), + ); + } + + /** + * Returns the schema for the form configuration object. + * + * @since 7.1.0 + * + * @return array Schema properties for the form configuration. + */ + protected function get_form_schema() { + return array( + 'layout' => $this->get_form_layout_schema(), + 'fields' => array( + 'type' => 'array', + 'items' => $this->get_form_field_schema(), + ), + ); + } +} diff --git a/src/wp-includes/view-config.php b/src/wp-includes/view-config.php new file mode 100644 index 0000000000000..810fafb840384 --- /dev/null +++ b/src/wp-includes/view-config.php @@ -0,0 +1,783 @@ +<?php +/** + * Entity view configuration API. + * + * Builds the default view configuration for an entity and exposes it through + * the dynamic `get_entity_view_config_{$kind}_{$name}` filter so core and third + * parties can provide the configuration for a specific entity. + * + * @package WordPress + * @since 7.1.0 + */ + +/** + * Returns the view configuration for the given entity. + * + * Builds the default configuration shared by all entities and then exposes it + * through the dynamic `get_entity_view_config_{$kind}_{$name}` filter so that core + * and third parties can provide the configuration for a specific entity. + * + * @since 7.1.0 + * + * @param string $kind The entity kind (e.g. `postType`). + * @param string $name The entity name (e.g. `page`). + * @return array { + * The view configuration for the entity. + * + * @type array $default_view Default view configuration. + * @type array $default_layouts Default layouts configuration. + * @type array $view_list List of available views. + * @type array $form Form configuration. + * } + */ +function wp_get_entity_view_config( $kind, $name ) { + $default_view = array( + 'type' => 'table', + 'filters' => array(), + 'sort' => array( + 'field' => 'title', + 'direction' => 'asc', + ), + 'perPage' => 20, + 'fields' => array( 'author', 'status' ), + 'titleField' => 'title', + ); + $default_layouts = array( + 'table' => array(), + 'grid' => array(), + 'list' => array(), + ); + $all_items_title = __( 'All items' ); + if ( 'postType' === $kind ) { + $post_type_object = get_post_type_object( $name ); + if ( $post_type_object && ! empty( $post_type_object->labels->all_items ) ) { + $all_items_title = $post_type_object->labels->all_items; + } + } + $view_list = array( + array( + 'title' => $all_items_title, + 'slug' => 'all', + ), + ); + + $config = array( + 'default_view' => $default_view, + 'default_layouts' => $default_layouts, + 'view_list' => $view_list, + 'form' => array(), + ); + + /** + * Filters the view configuration for a given entity. + * + * The dynamic portions of the hook name, `$kind` and `$name`, refer to the + * entity kind (e.g. `postType`) and the entity name (e.g. `page`). + * + * @since 7.1.0 + * + * @param array $config { + * The view configuration for the entity. + * + * @type array $default_view Default view configuration. + * @type array $default_layouts Default layouts configuration. + * @type array $view_list List of available views. + * @type array $form Form configuration. + * } + * @param array $entity { + * The entity the configuration is built for. + * + * @type string $kind The entity kind. + * @type string $name The entity name. + * } + */ + $filtered_config = apply_filters( + "get_entity_view_config_{$kind}_{$name}", + $config, + array( + 'kind' => $kind, + 'name' => $name, + ) + ); + + if ( ! is_array( $filtered_config ) ) { + return $config; + } + + // Backfill any dropped keys with their defaults, then discard any keys the + // filter introduced that are not part of the documented configuration shape. + $filtered_config = array_merge( $config, $filtered_config ); + return array_intersect_key( $filtered_config, $config ); +} + +/** + * Provides the view configuration for the `page` post type. + * + * @since 7.1.0 + * + * @param array $config { + * The view configuration for the entity. + * } + * @return array The filtered view configuration. + */ +function _wp_get_entity_view_config_post_type_page( $config ) { + $config['default_layouts'] = array( + 'table' => array( + 'layout' => array( + 'styles' => array( + 'author' => array( + 'align' => 'start', + ), + ), + ), + ), + 'grid' => array(), + 'list' => array(), + ); + + $config['default_view'] = array( + 'type' => 'list', + 'filters' => array(), + 'perPage' => 20, + 'sort' => array( + 'field' => 'title', + 'direction' => 'asc', + ), + 'showLevels' => true, + 'titleField' => 'title', + 'mediaField' => 'featured_media', + 'fields' => array( 'author', 'status' ), + ); + + $config['view_list'] = array( + // Reuse the base "all items" view, whose title is derived from the post + // type's `all_items` label in wp_get_entity_view_config(). + $config['view_list'][0], + array( + 'title' => __( 'Published' ), + 'slug' => 'published', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'publish', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Scheduled' ), + 'slug' => 'future', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'future', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Drafts' ), + 'slug' => 'drafts', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'draft', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Pending' ), + 'slug' => 'pending', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'pending', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Private' ), + 'slug' => 'private', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'private', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Trash' ), + 'slug' => 'trash', + 'view' => array( + 'type' => 'table', + 'layout' => $config['default_layouts']['table']['layout'], + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'trash', + 'isLocked' => true, + ), + ), + ), + ), + ); + + $config['form'] = array( + 'layout' => array( 'type' => 'panel' ), + 'fields' => array( + array( + 'id' => 'featured_media', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + array( + 'id' => 'post-content-info', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + array( + 'id' => 'excerpt', + 'layout' => array( + 'type' => 'panel', + 'labelPosition' => 'top', + ), + ), + array( + 'id' => 'status', + 'label' => __( 'Status' ), + 'children' => array( + array( + 'id' => 'status', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'scheduled_date', + 'password', + 'sticky', + ), + ), + 'date', + 'slug', + 'author', + 'template', + array( + 'id' => 'discussion', + 'label' => __( 'Discussion' ), + 'children' => array( + array( + 'id' => 'comment_status', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'ping_status', + ), + ), + 'parent', + 'format', + 'revisions', + ), + ); + + return $config; +} + +/** + * Provides the view configuration for the `post` post type. + * + * @since 7.1.0 + * + * @param array $config { + * The view configuration for the entity. + * } + * @return array The filtered view configuration. + */ +function _wp_get_entity_view_config_post_type_post( $config ) { + $config['form'] = array( + 'layout' => array( 'type' => 'panel' ), + 'fields' => array( + array( + 'id' => 'featured_media', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + array( + 'id' => 'post-content-info', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + array( + 'id' => 'excerpt', + 'layout' => array( + 'type' => 'panel', + 'labelPosition' => 'top', + ), + ), + array( + 'id' => 'status', + 'label' => __( 'Status' ), + 'children' => array( + array( + 'id' => 'status', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'scheduled_date', + 'password', + 'sticky', + ), + ), + 'date', + 'slug', + 'author', + 'template', + array( + 'id' => 'discussion', + 'label' => __( 'Discussion' ), + 'children' => array( + array( + 'id' => 'comment_status', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'ping_status', + ), + ), + 'parent', + 'format', + 'revisions', + ), + ); + + return $config; +} + +/** + * Provides the view configuration for the `wp_block` post type. + * + * @since 7.1.0 + * + * @param array $config { + * The view configuration for the entity. + * } + * @return array The filtered view configuration. + */ +function _wp_get_entity_view_config_post_type_wp_block( $config ) { + $config['default_layouts'] = array( + 'table' => array( + 'layout' => array( + 'styles' => array( + 'author' => array( + 'width' => '1%', + ), + ), + ), + ), + 'grid' => array( + 'layout' => array( + 'badgeFields' => array( 'sync-status' ), + ), + ), + ); + + $config['default_view'] = array( + 'type' => 'grid', + 'perPage' => 20, + 'titleField' => 'title', + 'mediaField' => 'preview', + 'fields' => array( 'sync-status' ), + 'filters' => array(), + 'layout' => $config['default_layouts']['grid']['layout'], + ); + + $view_list = array( + array( + 'title' => __( 'All patterns' ), + 'slug' => 'all-patterns', + ), + array( + 'title' => __( 'My patterns' ), + 'slug' => 'my-patterns', + ), + ); + + // Gather categories from the block pattern categories registry. + $registry = WP_Block_Pattern_Categories_Registry::get_instance(); + $categories = array(); + + foreach ( $registry->get_all_registered() as $category ) { + $categories[ $category['name'] ] = $category['label']; + } + + // Ensure "Uncategorized" is always included for patterns + // that have no category assigned. + $categories['uncategorized'] ??= __( 'Uncategorized' ); + + // Also gather user-created pattern categories (wp_pattern_category taxonomy). + $user_terms = get_terms( + array( + 'taxonomy' => 'wp_pattern_category', + 'hide_empty' => false, + ) + ); + + if ( ! is_wp_error( $user_terms ) ) { + foreach ( $user_terms as $term ) { + $categories[ $term->slug ] = $term->name; + } + } + + // Sort categories alphabetically by label. + asort( $categories, SORT_NATURAL | SORT_FLAG_CASE ); + + foreach ( $categories as $category_name => $label ) { + $view_list[] = array( + 'title' => $label, + 'slug' => $category_name, + ); + } + + $config['view_list'] = $view_list; + + return $config; +} + +/** + * Provides the view configuration for the `wp_template_part` post type. + * + * @since 7.1.0 + * + * @param array $config { + * The view configuration for the entity. + * } + * @return array The filtered view configuration. + */ +function _wp_get_entity_view_config_post_type_wp_template_part( $config ) { + $config['default_layouts'] = array( + 'table' => array( + 'layout' => array( + 'styles' => array( + 'author' => array( + 'width' => '1%', + ), + ), + ), + ), + 'grid' => array( + 'layout' => array(), + ), + ); + + $config['default_view'] = array( + 'type' => 'grid', + 'perPage' => 20, + 'titleField' => 'title', + 'mediaField' => 'preview', + 'fields' => array( 'author' ), + 'filters' => array(), + 'layout' => $config['default_layouts']['grid']['layout'], + ); + + $view_list = array( + array( + 'title' => __( 'All template parts' ), + 'slug' => 'all-parts', + ), + ); + + $areas = get_allowed_block_template_part_areas(); + + // Ensure default areas appear in a consistent order. + $preferred_order = array( 'header', 'footer', 'sidebar', 'navigation-overlay', 'uncategorized' ); + $ordered_areas = array(); + $remaining_areas = array(); + foreach ( $areas as $area ) { + $position = array_search( $area['area'], $preferred_order, true ); + if ( false !== $position ) { + $ordered_areas[ $position ] = $area; + } else { + $remaining_areas[] = $area; + } + } + ksort( $ordered_areas ); + $areas = array_merge( array_values( $ordered_areas ), $remaining_areas ); + + foreach ( $areas as $area ) { + $view_list[] = array( + 'title' => $area['label'], + 'slug' => $area['area'], + 'view' => array( + 'filters' => array( + array( + 'field' => 'area', + 'operator' => 'is', + 'value' => $area['area'], + 'isLocked' => true, + ), + ), + ), + ); + } + + $config['view_list'] = $view_list; + + $config['form'] = array( + 'layout' => array( 'type' => 'panel' ), + 'fields' => array( + array( + 'id' => 'last_edited_date', + 'layout' => array( + 'type' => 'panel', + 'labelPosition' => 'none', + ), + ), + 'revisions', + ), + ); + + return $config; +} + +/** + * Provides the view configuration for the `wp_template` post type. + * + * @since 7.1.0 + * + * @param array $config { + * The view configuration for the entity. + * } + * @return array The filtered view configuration. + */ +function _wp_get_entity_view_config_post_type_wp_template( $config ) { + $config['default_view'] = array( + 'type' => 'grid', + 'perPage' => 20, + 'sort' => array( + 'field' => 'title', + 'direction' => 'asc', + ), + 'titleField' => 'title', + 'descriptionField' => 'description', + 'mediaField' => 'preview', + 'fields' => array( 'author', 'active', 'slug', 'theme' ), + 'filters' => array(), + 'showMedia' => true, + ); + + $config['default_layouts'] = array( + 'table' => array( 'showMedia' => false ), + 'grid' => array( 'showMedia' => true ), + 'list' => array( 'showMedia' => false ), + ); + + $view_list = array( + array( + 'title' => __( 'All templates' ), + 'slug' => 'all', + ), + ); + + $templates = get_block_templates( array(), 'wp_template' ); + + // Collect unique authors, tracking whether they come from a registered + // source (theme, plugin, site) so we can sort those before user ones. + $seen_authors = array(); + $registered_authors = array(); + $user_authors = array(); + foreach ( $templates as $template ) { + /* + * Determine the original source of the template ('theme', 'plugin', + * 'site', or 'user'). + */ + $original_source = 'user'; + if ( 'wp_template' === $template->type || 'wp_template_part' === $template->type ) { + if ( $template->has_theme_file && + ( 'theme' === $template->origin || ( + empty( $template->origin ) && in_array( + $template->source, + array( + 'theme', + 'custom', + ), + true + ) ) + ) + ) { + /* + * Added by theme. + * Template originally provided by a theme, but customized by a user. + * Templates originally didn't have the 'origin' field so identify + * older customized templates by checking for no origin and a 'theme' + * or 'custom' source. + */ + $original_source = 'theme'; + } elseif ( 'plugin' === $template->origin ) { + // Added by plugin. + $original_source = 'plugin'; + } elseif ( empty( $template->has_theme_file ) && 'custom' === $template->source && empty( $template->author ) ) { + /* + * Added by site. + * Template was created from scratch, but has no author. Author support + * was only added to templates in WordPress 5.9. Fallback to showing the + * site logo and title. + */ + $original_source = 'site'; + } + } + + // Determine a human readable text for the author of the template. + $author_text = ''; + switch ( $original_source ) { + case 'theme': + $theme_name = wp_get_theme( $template->theme )->get( 'Name' ); + $author_text = empty( $theme_name ) ? $template->theme : $theme_name; + break; + case 'plugin': + if ( ! function_exists( 'get_plugins' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + $plugin_name = ''; + if ( isset( $template->plugin ) ) { + $plugins = wp_get_active_and_valid_plugins(); + + foreach ( $plugins as $plugin_file ) { + $plugin_basename = plugin_basename( $plugin_file ); + list( $plugin_slug, ) = explode( '/', $plugin_basename ); + + if ( $plugin_slug === $template->plugin ) { + $plugin_data = get_plugin_data( $plugin_file ); + + if ( ! empty( $plugin_data['Name'] ) ) { + $plugin_name = $plugin_data['Name']; + } + + break; + } + } + } + + /* + * Fall back to the theme name if the plugin is not defined. That's needed to keep backwards + * compatibility with templates that were registered before the plugin attribute was added. + */ + if ( '' === $plugin_name ) { + $plugins = get_plugins(); + $plugin_basename = plugin_basename( sanitize_text_field( $template->theme . '.php' ) ); + if ( isset( $plugins[ $plugin_basename ] ) && isset( $plugins[ $plugin_basename ]['Name'] ) ) { + $plugin_name = $plugins[ $plugin_basename ]['Name']; + } else { + $plugin_name = $template->plugin ?? $template->theme; + } + } + $author_text = $plugin_name; + break; + case 'site': + $author_text = get_bloginfo( 'name' ); + break; + case 'user': + $author = get_user_by( 'id', $template->author ); + if ( ! $author ) { + $author_text = __( 'Unknown author' ); + } else { + $author_text = $author->get( 'display_name' ); + } + break; + } + + if ( ! empty( $author_text ) && ! isset( $seen_authors[ $author_text ] ) ) { + $seen_authors[ $author_text ] = true; + $entry = array( + 'title' => $author_text, + 'slug' => $author_text, + 'view' => array( + 'filters' => array( + array( + 'field' => 'author', + 'operator' => 'is', + 'value' => $author_text, + 'isLocked' => true, + ), + ), + ), + ); + if ( 'user' === $original_source ) { + $user_authors[] = $entry; + } else { + $registered_authors[] = $entry; + } + } + } + + $config['view_list'] = array_merge( $view_list, $registered_authors, $user_authors ); + + $config['form'] = array( + 'layout' => array( 'type' => 'panel' ), + 'fields' => array( + array( + 'id' => 'description', + 'layout' => array( + 'type' => 'panel', + 'labelPosition' => 'top', + ), + ), + array( + 'id' => 'description_readonly', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + array( + 'id' => 'last_edited_date', + 'layout' => array( + 'type' => 'panel', + 'labelPosition' => 'none', + ), + ), + 'revisions', + // The following fields are only meaningful in the `home`/`index` + // template summary. They edit other entities (`root/site` and the + // posts page); the editor merges those records into the form data + // under a namespace and controls when the fields are shown. + 'posts_page_title', + 'posts_per_page', + 'default_comment_status', + ), + ); + + return $config; +} diff --git a/src/wp-settings.php b/src/wp-settings.php index ef5c7784ee561..58df5ad190539 100644 --- a/src/wp-settings.php +++ b/src/wp-settings.php @@ -205,6 +205,7 @@ require ABSPATH . WPINC . '/theme-templates.php'; require ABSPATH . WPINC . '/theme-previews.php'; require ABSPATH . WPINC . '/template.php'; +require ABSPATH . WPINC . '/view-config.php'; require ABSPATH . WPINC . '/https-detection.php'; require ABSPATH . WPINC . '/https-migration.php'; require ABSPATH . WPINC . '/class-wp-user-request.php'; @@ -357,6 +358,7 @@ require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-faces-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-collections-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-icons-controller.php'; +require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-view-config-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-categories-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-run-controller.php'; diff --git a/tests/phpunit/tests/rest-api/rest-schema-setup.php b/tests/phpunit/tests/rest-api/rest-schema-setup.php index 89bf2c481c567..2b99a10fecca2 100644 --- a/tests/phpunit/tests/rest-api/rest-schema-setup.php +++ b/tests/phpunit/tests/rest-api/rest-schema-setup.php @@ -202,6 +202,7 @@ public function test_expected_routes_in_schema() { '/wp/v2/font-families/(?P<id>[\d]+)', '/wp/v2/icons', '/wp/v2/icons/(?P<name>[a-z][a-z0-9-]*/[a-z][a-z0-9-]*)', + '/wp/v2/view-config', '/wp-abilities/v1', '/wp-abilities/v1/categories', '/wp-abilities/v1/categories/(?P<slug>[a-z0-9]+(?:-[a-z0-9]+)*)', diff --git a/tests/phpunit/tests/rest-api/rest-view-config-controller.php b/tests/phpunit/tests/rest-api/rest-view-config-controller.php new file mode 100644 index 0000000000000..b487055ff14d8 --- /dev/null +++ b/tests/phpunit/tests/rest-api/rest-view-config-controller.php @@ -0,0 +1,381 @@ +<?php +/** + * Unit tests covering WP_REST_View_Config_Controller functionality. + * + * @package WordPress + * @subpackage REST API + * + * @group restapi + * @group view-config + * + * @coversDefaultClass WP_REST_View_Config_Controller + */ +class WP_REST_View_Config_Controller_Test extends WP_Test_REST_TestCase { + + /** + * The REST route the controller registers. + */ + const ROUTE = '/wp/v2/view-config'; + + /** + * Administrator user id (has `edit_theme_options` and `manage_options`). + * + * @var int + */ + protected static $admin_id; + + /** + * Editor user id (has `edit_posts` and `manage_categories`, lacks `manage_options`). + * + * @var int + */ + protected static $editor_id; + + /** + * Subscriber user id (lacks `edit_posts`). + * + * @var int + */ + protected static $subscriber_id; + + /** + * Creates shared users. + * + * @param WP_UnitTest_Factory $factory Factory instance. + */ + public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) { + self::$admin_id = $factory->user->create( array( 'role' => 'administrator' ) ); + self::$editor_id = $factory->user->create( array( 'role' => 'editor' ) ); + self::$subscriber_id = $factory->user->create( array( 'role' => 'subscriber' ) ); + } + + /** + * Deletes shared users. + */ + public static function wpTearDownAfterClass() { + self::delete_user( self::$admin_id ); + self::delete_user( self::$editor_id ); + self::delete_user( self::$subscriber_id ); + } + + /** + * Dispatches a request to the view-config route. + * + * @param string $kind Entity kind. + * @param string $name Entity name. + * @return WP_REST_Response + */ + private function dispatch_request( $kind = 'postType', $name = 'page' ) { + $request = new WP_REST_Request( 'GET', self::ROUTE ); + if ( null !== $kind ) { + $request->set_param( 'kind', $kind ); + } + if ( null !== $name ) { + $request->set_param( 'name', $name ); + } + return rest_get_server()->dispatch( $request ); + } + + /** + * The route is registered. + * + * @covers ::register_routes + */ + public function test_register_routes() { + $routes = rest_get_server()->get_routes(); + $this->assertArrayHasKey( self::ROUTE, $routes ); + } + + /** + * Editors (with `edit_posts`) can read the view config. + * + * @covers ::get_items_permissions_check + * @covers ::get_items + */ + public function test_get_items_allows_users_with_edit_posts() { + wp_set_current_user( self::$editor_id ); + + $response = $this->dispatch_request(); + + $this->assertSame( 200, $response->get_status() ); + } + + /** + * Subscribers (without `edit_posts`) are forbidden. + * + * @covers ::get_items_permissions_check + */ + public function test_get_items_forbids_users_without_edit_posts() { + wp_set_current_user( self::$subscriber_id ); + + $response = $this->dispatch_request(); + + $this->assertErrorResponse( 'rest_cannot_read', $response, 403 ); + } + + /** + * Logged-out users are unauthorized. + * + * @covers ::get_items_permissions_check + */ + public function test_get_items_requires_authentication() { + wp_set_current_user( 0 ); + + $response = $this->dispatch_request(); + + $this->assertErrorResponse( 'rest_cannot_read', $response, 401 ); + } + + /** + * Post type config is gated by that post type's own `edit_posts` capability, + * honoring custom capability registrations. + * + * `wp_template_part` maps `edit_posts` to `edit_theme_options`, which editors + * lack but administrators have. + * + * @covers ::get_items_permissions_check + * @covers ::get_required_capability + */ + public function test_get_items_uses_post_type_specific_capability() { + wp_set_current_user( self::$editor_id ); + $this->assertErrorResponse( + 'rest_cannot_read', + $this->dispatch_request( 'postType', 'wp_template_part' ), + 403 + ); + + wp_set_current_user( self::$admin_id ); + $this->assertSame( + 200, + $this->dispatch_request( 'postType', 'wp_template_part' )->get_status() + ); + } + + /** + * An unregistered post type is treated as an unknown entity (404). + * + * @covers ::get_items_permissions_check + * @covers ::get_required_capability + */ + public function test_get_items_unknown_post_type_is_not_found() { + wp_set_current_user( self::$admin_id ); + + $response = $this->dispatch_request( 'postType', 'does_not_exist' ); + + $this->assertErrorResponse( 'rest_view_config_invalid_entity', $response, 404 ); + } + + /** + * Taxonomy config is gated by the taxonomy's `manage_terms` capability. + * + * @covers ::get_items_permissions_check + * @covers ::get_required_capability + */ + public function test_get_items_uses_taxonomy_capability() { + // Editors have `manage_categories` (the `manage_terms` cap for `category`). + wp_set_current_user( self::$editor_id ); + $this->assertSame( + 200, + $this->dispatch_request( 'taxonomy', 'category' )->get_status() + ); + + // Subscribers do not. + wp_set_current_user( self::$subscriber_id ); + $this->assertErrorResponse( + 'rest_cannot_read', + $this->dispatch_request( 'taxonomy', 'category' ), + 403 + ); + } + + /** + * An unregistered taxonomy is treated as an unknown entity (404). + * + * @covers ::get_items_permissions_check + * @covers ::get_required_capability + */ + public function test_get_items_unknown_taxonomy_is_not_found() { + wp_set_current_user( self::$admin_id ); + + $response = $this->dispatch_request( 'taxonomy', 'does_not_exist' ); + + $this->assertErrorResponse( 'rest_view_config_invalid_entity', $response, 404 ); + } + + /** + * Root-level config requires `manage_options`. + * + * @covers ::get_items_permissions_check + * @covers ::get_required_capability + */ + public function test_get_items_root_requires_manage_options() { + // Editors lack `manage_options`. + wp_set_current_user( self::$editor_id ); + $this->assertErrorResponse( + 'rest_cannot_read', + $this->dispatch_request( 'root', 'site' ), + 403 + ); + + wp_set_current_user( self::$admin_id ); + $this->assertSame( + 200, + $this->dispatch_request( 'root', 'site' )->get_status() + ); + } + + /** + * Unknown kinds fall back to the baseline `edit_posts` capability so that + * entities registered through the view config filter remain readable. + * + * @covers ::get_items_permissions_check + * @covers ::get_required_capability + */ + public function test_get_items_unknown_kind_falls_back_to_edit_posts() { + wp_set_current_user( self::$editor_id ); + $this->assertSame( + 200, + $this->dispatch_request( 'custom_kind', 'custom_name' )->get_status() + ); + + wp_set_current_user( self::$subscriber_id ); + $this->assertErrorResponse( + 'rest_cannot_read', + $this->dispatch_request( 'custom_kind', 'custom_name' ), + 403 + ); + } + + /** + * Both `kind` and `name` are required. + * + * @covers ::register_routes + */ + public function test_get_items_requires_kind_and_name() { + wp_set_current_user( self::$editor_id ); + + $missing_name = $this->dispatch_request( 'postType', null ); + $this->assertErrorResponse( 'rest_missing_callback_param', $missing_name, 400 ); + + $missing_kind = $this->dispatch_request( null, 'page' ); + $this->assertErrorResponse( 'rest_missing_callback_param', $missing_kind, 400 ); + } + + /** + * The response echoes the requested entity and the documented config keys. + * + * @covers ::get_items + */ + public function test_get_items_returns_entity_and_config_shape() { + wp_set_current_user( self::$editor_id ); + + $response = $this->dispatch_request( 'postType', 'page' ); + $data = $response->get_data(); + + $this->assertSame( 200, $response->get_status() ); + $this->assertSame( 'postType', $data['kind'] ); + $this->assertSame( 'page', $data['name'] ); + $this->assertArrayHasKey( 'default_view', $data ); + $this->assertArrayHasKey( 'default_layouts', $data ); + $this->assertArrayHasKey( 'view_list', $data ); + $this->assertArrayHasKey( 'form', $data ); + } + + /** + * The response body matches wp_get_entity_view_config() for the entity. + * + * @covers ::get_items + */ + public function test_get_items_matches_underlying_config() { + wp_set_current_user( self::$editor_id ); + + $response = $this->dispatch_request( 'postType', 'page' ); + // Normalize through JSON to compare what a client actually receives: + // the response's object casts collapse back to the source arrays. + $data = json_decode( wp_json_encode( $response->get_data() ), true ); + $config = wp_get_entity_view_config( 'postType', 'page' ); + + $this->assertSame( $config['default_view'], $data['default_view'] ); + $this->assertSame( $config['default_layouts'], $data['default_layouts'] ); + $this->assertSame( $config['view_list'], $data['view_list'] ); + $this->assertSame( $config['form'], $data['form'] ); + } + + /** + * Empty object-typed config values serialize as JSON objects ({}), not arrays ([]). + * + * @covers ::get_items + */ + public function test_empty_object_fields_serialize_as_json_objects() { + // Admin: reading wp_template_part config requires `edit_theme_options`. + wp_set_current_user( self::$admin_id ); + + // An entity with no provider yields empty default_layouts entries and form. + $decoded = json_decode( wp_json_encode( $this->dispatch_request( 'custom_kind', 'custom_name' )->get_data() ) ); + + $this->assertIsObject( $decoded->form ); + $this->assertIsObject( $decoded->default_layouts->table ); + $this->assertIsObject( $decoded->default_layouts->grid ); + $this->assertIsObject( $decoded->default_layouts->list ); + + // wp_template_part yields an empty default_view.layout and grid layout. + $decoded = json_decode( wp_json_encode( $this->dispatch_request( 'postType', 'wp_template_part' )->get_data() ) ); + + $this->assertIsObject( $decoded->default_view->layout ); + $this->assertIsObject( $decoded->default_layouts->grid->layout ); + } + + /** + * Empty object-typed values nested inside a `view_list` item's `view` + * override serialize as JSON objects ({}), not arrays ([]). + * + * The `view.layout` (and its `styles` map) are typed as objects by the + * schema but are not produced by core data, so this exercises the + * schema-driven cast against a value supplied through the documented + * `get_entity_view_config_{$kind}_{$name}` filter. + * + * @covers ::get_items + */ + public function test_empty_objects_inside_view_list_view_serialize_as_json_objects() { + wp_set_current_user( self::$editor_id ); + + $filter = static function ( $config ) { + $config['view_list'][] = array( + 'title' => 'Custom', + 'slug' => 'custom', + 'view' => array( + 'type' => 'table', + 'layout' => array( + 'styles' => array(), + ), + ), + ); + return $config; + }; + add_filter( 'get_entity_view_config_custom_kind_custom_name', $filter ); + + $decoded = json_decode( wp_json_encode( $this->dispatch_request( 'custom_kind', 'custom_name' )->get_data() ) ); + + remove_filter( 'get_entity_view_config_custom_kind_custom_name', $filter ); + + $view = end( $decoded->view_list ); + $this->assertIsObject( $view->view->layout ); + $this->assertIsObject( $view->view->layout->styles ); + } + + /** + * The item schema exposes the documented top-level properties. + * + * @covers ::get_item_schema + */ + public function test_get_item_schema() { + $controller = new WP_REST_View_Config_Controller(); + $schema = $controller->get_item_schema(); + + $this->assertSame( 'view-config', $schema['title'] ); + $this->assertSameSets( + array( 'kind', 'name', 'default_view', 'default_layouts', 'view_list', 'form' ), + array_keys( $schema['properties'] ) + ); + } +} diff --git a/tests/phpunit/tests/view-config.php b/tests/phpunit/tests/view-config.php new file mode 100644 index 0000000000000..8aa4ace4eb592 --- /dev/null +++ b/tests/phpunit/tests/view-config.php @@ -0,0 +1,225 @@ +<?php +/** + * Tests for the entity view configuration API. + * + * @package WordPress + * @subpackage REST API + * + * @group view-config + * + * @covers ::wp_get_entity_view_config + */ +class Tests_View_Config_API extends WP_UnitTestCase { + + /** + * The documented top-level keys of a view configuration. + * + * @var string[] + */ + const CONFIG_KEYS = array( 'default_view', 'default_layouts', 'view_list', 'form' ); + + /** + * The default view configuration shared by all entities. + * + * @var array + */ + const DEFAULT_VIEW = array( + 'type' => 'table', + 'filters' => array(), + 'sort' => array( + 'field' => 'title', + 'direction' => 'asc', + ), + 'perPage' => 20, + 'fields' => array( 'author', 'status' ), + 'titleField' => 'title', + ); + + /** + * The default layouts shared by all entities. + * + * @var array + */ + const DEFAULT_LAYOUTS = array( + 'table' => array(), + 'grid' => array(), + 'list' => array(), + ); + + /** + * The default view list for an entity with no specific provider. + * + * @var array + */ + const DEFAULT_VIEW_LIST = array( + array( + 'title' => 'All items', + 'slug' => 'all', + ), + ); + + /** + * The default form configuration shared by all entities. + * + * @var array + */ + const DEFAULT_FORM = array(); + + /** + * Tears down each test. + */ + public function tear_down() { + remove_all_filters( 'get_entity_view_config_postType_unregistered_cpt' ); + remove_all_filters( 'get_entity_view_config_custom_kind_custom_name' ); + parent::tear_down(); + } + + /** + * The default configuration exposes the documented shape for an unknown entity. + */ + public function test_returns_default_config_shape_for_unknown_entity() { + $config = wp_get_entity_view_config( 'custom_kind', 'custom_name' ); + + $this->assertIsArray( $config ); + $this->assertSameSets( self::CONFIG_KEYS, array_keys( $config ) ); + $this->assertSame( self::DEFAULT_VIEW, $config['default_view'] ); + $this->assertSame( self::DEFAULT_LAYOUTS, $config['default_layouts'] ); + $this->assertSame( self::DEFAULT_VIEW_LIST, $config['view_list'] ); + $this->assertSame( self::DEFAULT_FORM, $config['form'] ); + } + + /** + * The base "all items" view falls back to a generic title for an unknown post type. + */ + public function test_view_list_falls_back_to_generic_all_items_title() { + $config = wp_get_entity_view_config( 'postType', 'does_not_exist' ); + + $this->assertCount( 1, $config['view_list'] ); + $this->assertSame( 'all', $config['view_list'][0]['slug'] ); + $this->assertSame( 'All items', $config['view_list'][0]['title'] ); + } + + /** + * For a registered post type, the "all items" view uses the post type's label. + */ + public function test_view_list_uses_post_type_all_items_label() { + register_post_type( + 'view_config_cpt', + array( + 'labels' => array( + 'all_items' => 'All Custom Things', + ), + ) + ); + + $config = wp_get_entity_view_config( 'postType', 'view_config_cpt' ); + + $this->assertSame( 'All Custom Things', $config['view_list'][0]['title'] ); + + unregister_post_type( 'view_config_cpt' ); + } + + /** + * The dynamic filter receives the default config and the entity descriptor. + */ + public function test_filter_receives_config_and_entity() { + $received_entity = null; + add_filter( + 'get_entity_view_config_custom_kind_custom_name', + function ( $config, $entity ) use ( &$received_entity ) { + $received_entity = $entity; + return $config; + }, + 10, + 2 + ); + + wp_get_entity_view_config( 'custom_kind', 'custom_name' ); + + $this->assertSame( + array( + 'kind' => 'custom_kind', + 'name' => 'custom_name', + ), + $received_entity + ); + } + + /** + * A filter can override the configuration values. + */ + public function test_filter_can_override_config() { + add_filter( + 'get_entity_view_config_custom_kind_custom_name', + function ( $config ) { + $config['default_view']['type'] = 'grid'; + return $config; + } + ); + + $config = wp_get_entity_view_config( 'custom_kind', 'custom_name' ); + + $this->assertSame( 'grid', $config['default_view']['type'] ); + } + + /** + * Dropped keys are backfilled with their defaults. + */ + public function test_filter_dropped_keys_are_backfilled() { + add_filter( + 'get_entity_view_config_custom_kind_custom_name', + function () { + // Return a config that is missing most of the documented keys. + return array( 'form' => array( 'custom' => true ) ); + } + ); + + $config = wp_get_entity_view_config( 'custom_kind', 'custom_name' ); + + $this->assertSameSets( self::CONFIG_KEYS, array_keys( $config ) ); + $this->assertSame( array( 'custom' => true ), $config['form'] ); + // Backfilled from defaults. + $this->assertSame( self::DEFAULT_VIEW, $config['default_view'] ); + $this->assertSame( self::DEFAULT_LAYOUTS, $config['default_layouts'] ); + $this->assertSame( self::DEFAULT_VIEW_LIST, $config['view_list'] ); + } + + /** + * Keys introduced by a filter that are not part of the documented shape are discarded. + */ + public function test_filter_unknown_keys_are_discarded() { + add_filter( + 'get_entity_view_config_custom_kind_custom_name', + function ( $config ) { + $config['not_a_real_key'] = 'nope'; + return $config; + } + ); + + $config = wp_get_entity_view_config( 'custom_kind', 'custom_name' ); + + $this->assertArrayNotHasKey( 'not_a_real_key', $config ); + $this->assertSameSets( self::CONFIG_KEYS, array_keys( $config ) ); + } + + /** + * A non-array filter return falls back to the default config. + */ + public function test_non_array_filter_return_falls_back_to_default() { + add_filter( + 'get_entity_view_config_custom_kind_custom_name', + function () { + return 'not an array'; + } + ); + + $config = wp_get_entity_view_config( 'custom_kind', 'custom_name' ); + + $this->assertIsArray( $config ); + $this->assertSameSets( self::CONFIG_KEYS, array_keys( $config ) ); + $this->assertSame( self::DEFAULT_VIEW, $config['default_view'] ); + $this->assertSame( self::DEFAULT_LAYOUTS, $config['default_layouts'] ); + $this->assertSame( self::DEFAULT_VIEW_LIST, $config['view_list'] ); + $this->assertSame( self::DEFAULT_FORM, $config['form'] ); + } +} diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js index fa03d9751fe99..16067d33edbe4 100644 --- a/tests/qunit/fixtures/wp-api-generated.js +++ b/tests/qunit/fixtures/wp-api-generated.js @@ -12771,6 +12771,38 @@ mockedApiResponse.Schema = { } } ] + }, + "/wp/v2/view-config": { + "namespace": "wp/v2", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "kind": { + "description": "Entity kind.", + "type": "string", + "required": true + }, + "name": { + "description": "Entity name.", + "type": "string", + "required": true + } + } + } + ], + "_links": { + "self": [ + { + "href": "http://example.org/index.php?rest_route=/wp/v2/view-config" + } + ] + } } }, "image_sizes": { From 27a0d863fefe3893b7cc9e411033c06bad4cc5a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Tue, 23 Jun 2026 11:33:20 +0000 Subject: [PATCH 244/327] Abilities API: Refine filtering and expose `meta` over REST. Follow-up to [62420]. The `category` argument now takes a single slug, matching `namespace`; callers needing multiple values can use `item_include_callback`. This keeps the public surface simple and leaves room to accept arrays later without a break. The list endpoint (`/wp-abilities/v1/abilities`) gains a `meta` query parameter alongside `category` and `namespace`. Conditions combine with AND logic, may be nested, and known annotations (`readonly`, `destructive`, `idempotent`) are coerced to booleans before matching. The endpoint always forces `meta[show_in_rest] => true`, so `meta` cannot reveal hidden abilities. Props gziolo, jorgefilipecosta, apermo. Fixes #64990. git-svn-id: https://develop.svn.wordpress.org/trunk@62548 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/abilities-api.php | 16 +- ...s-wp-rest-abilities-v1-list-controller.php | 67 +++++- .../tests/abilities-api/wpGetAbilities.php | 17 +- .../wpRestAbilitiesV1ListController.php | 217 ++++++++++++++++++ tests/qunit/fixtures/wp-api-generated.js | 36 +++ 5 files changed, 337 insertions(+), 16 deletions(-) diff --git a/src/wp-includes/abilities-api.php b/src/wp-includes/abilities-api.php index 4b95cddf5b111..5f3001a680ff0 100644 --- a/src/wp-includes/abilities-api.php +++ b/src/wp-includes/abilities-api.php @@ -404,7 +404,7 @@ function wp_get_ability( string $name ): ?WP_Ability { * Filtering pipeline (executed in order): * * 1. Declarative filters (`category`, `namespace`, `meta`) — per-item, AND logic between - * arg types, OR logic within multi-value `category` arrays. + * arg types. * 2. `item_include_callback` — per-item, caller-scoped. Return true to include, false to exclude. * 3. `wp_get_abilities_item_include` filter — per-item, ecosystem-scoped. Plugins can enforce * universal inclusion rules regardless of what the caller passed. @@ -421,9 +421,6 @@ function wp_get_ability( string $name ): ?WP_Ability { * // Filter by category. * $abilities = wp_get_abilities( array( 'category' => 'content' ) ); * - * // Filter by multiple categories (OR logic). - * $abilities = wp_get_abilities( array( 'category' => array( 'content', 'settings' ) ) ); - * * // Filter by namespace. * $abilities = wp_get_abilities( array( 'namespace' => 'woocommerce' ) ); * @@ -466,9 +463,8 @@ function wp_get_ability( string $name ): ?WP_Ability { * @param array $args { * Optional. Arguments to filter the returned abilities. Default empty array (returns all). * - * @type string|string[] $category Filter by category slug. A single string or an array of - * slugs — abilities matching any of the given slugs are - * included (OR logic within this arg type). + * @type string $category Filter by category slug. Only abilities whose category + * exactly matches the given slug are included. * @type string $namespace Filter by ability namespace prefix. Pass the namespace * without a trailing slash, e.g. `'woocommerce'` matches * `'woocommerce/create-order'`. @@ -495,7 +491,7 @@ function wp_get_abilities( array $args = array() ): array { $abilities = $registry->get_all_registered(); - $category = isset( $args['category'] ) ? (array) $args['category'] : array(); + $category = isset( $args['category'] ) && is_string( $args['category'] ) ? $args['category'] : ''; $namespace = isset( $args['namespace'] ) && is_string( $args['namespace'] ) ? rtrim( $args['namespace'], '/' ) . '/' : ''; $meta = isset( $args['meta'] ) && is_array( $args['meta'] ) ? $args['meta'] : array(); $item_include_callback = isset( $args['item_include_callback'] ) && is_callable( $args['item_include_callback'] ) ? $args['item_include_callback'] : null; @@ -504,8 +500,8 @@ function wp_get_abilities( array $args = array() ): array { $matched = array(); foreach ( $abilities as $name => $ability ) { - // Step 1a: Filter by category (OR logic within the arg). - if ( ! empty( $category ) && ! in_array( $ability->get_category(), $category, true ) ) { + // Step 1a: Filter by category. + if ( '' !== $category && $ability->get_category() !== $category ) { continue; } diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php index 9fd251815b383..b3d94be28c4f3 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php @@ -98,6 +98,11 @@ public function get_items( $request ) { $query_args['namespace'] = $request['namespace']; } + if ( ! empty( $request['meta'] ) ) { + // Merge caller meta first so the forced show_in_rest filter wins. This keeps a caller from using meta to reveal abilities hidden from REST. + $query_args['meta'] = array_merge( $request['meta'], $query_args['meta'] ); + } + $abilities = wp_get_abilities( $query_args ); $page = $request['page']; @@ -447,9 +452,23 @@ public function get_item_schema(): array { 'type' => 'object', 'properties' => array( 'annotations' => array( - 'description' => __( 'Annotations for the ability.' ), - 'type' => array( 'boolean', 'null' ), - 'default' => null, + 'description' => __( 'Behavioral annotations for the ability.' ), + 'type' => 'object', + 'properties' => array( + 'readonly' => array( + 'description' => __( 'Whether the ability does not modify its environment.' ), + 'type' => array( 'boolean', 'null' ), + ), + 'destructive' => array( + 'description' => __( 'Whether the ability may perform destructive updates to its environment.' ), + 'type' => array( 'boolean', 'null' ), + ), + 'idempotent' => array( + 'description' => __( 'Whether repeated calls with the same arguments have no additional effect.' ), + 'type' => array( 'boolean', 'null' ), + ), + ), + 'additionalProperties' => true, ), ), 'context' => array( 'view', 'edit' ), @@ -469,7 +488,7 @@ public function get_item_schema(): array { * @return array<string, mixed> Collection parameters. */ public function get_collection_params(): array { - return array( + $query_params = array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), 'page' => array( 'description' => __( 'Current page of the collection.' ), @@ -496,6 +515,46 @@ public function get_collection_params(): array { 'sanitize_callback' => 'sanitize_key', 'validate_callback' => 'rest_validate_request_arg', ), + 'meta' => array( + 'description' => __( 'Limit results to abilities matching all of the given meta fields.' ), + 'type' => 'object', + 'properties' => array( + // show_in_rest is omitted on purpose. It is forced on and cannot be filtered by a caller. + 'annotations' => array( + 'description' => __( 'Limit results to abilities matching the given behavioral annotations.' ), + 'type' => 'object', + 'properties' => array( + 'readonly' => array( + 'description' => __( 'Whether the ability does not modify its environment.' ), + 'type' => array( 'boolean', 'null' ), + ), + 'destructive' => array( + 'description' => __( 'Whether the ability may perform destructive updates to its environment.' ), + 'type' => array( 'boolean', 'null' ), + ), + 'idempotent' => array( + 'description' => __( 'Whether repeated calls with the same arguments have no additional effect.' ), + 'type' => array( 'boolean', 'null' ), + ), + ), + 'additionalProperties' => true, + ), + ), + 'additionalProperties' => true, + ), ); + + /** + * Filters REST API collection parameters for the abilities controller. + * + * Use this to declare the schema type of a custom meta key. A declared + * type lets REST coerce a query-string value, for example "true" to a + * boolean, before the meta filter matches it. + * + * @since 7.1.0 + * + * @param array $query_params JSON Schema-formatted collection parameters. + */ + return apply_filters( 'rest_abilities_collection_params', $query_params ); } } diff --git a/tests/phpunit/tests/abilities-api/wpGetAbilities.php b/tests/phpunit/tests/abilities-api/wpGetAbilities.php index db3fc6856beaf..475ef341d869f 100644 --- a/tests/phpunit/tests/abilities-api/wpGetAbilities.php +++ b/tests/phpunit/tests/abilities-api/wpGetAbilities.php @@ -39,6 +39,13 @@ public function set_up(): void { 'description' => 'Text operations.', ) ); + wp_register_ability_category( + 'media', + array( + 'label' => 'Media', + 'description' => 'Media operations.', + ) + ); } /** @@ -53,6 +60,7 @@ public function tear_down(): void { wp_unregister_ability_category( 'math' ); wp_unregister_ability_category( 'text' ); + wp_unregister_ability_category( 'media' ); parent::tear_down(); } @@ -135,15 +143,19 @@ static function ( WP_Ability $a ) { } /** - * Tests that passing an array of categories uses OR logic. + * Tests that a non-string category is ignored rather than treated as a multi-value filter. + * + * The declarative filters accept a single slug. Anything other than a string is ignored, + * matching how the `namespace` and `meta` args guard their own types. * * @ticket 64990 */ - public function test_filter_by_category_array_uses_or_logic(): void { + public function test_filter_by_non_string_category_is_ignored(): void { $this->simulate_wp_abilities_init(); $this->register_test_ability( 'test/math-add', array( 'category' => 'math' ) ); $this->register_test_ability( 'test/text-upper', array( 'category' => 'text' ) ); + $this->register_test_ability( 'test/media-crop', array( 'category' => 'media' ) ); $result = wp_get_abilities( array( 'category' => array( 'math', 'text' ) ) ); $names = array_map( @@ -155,6 +167,7 @@ static function ( WP_Ability $a ) { $this->assertContains( 'test/math-add', $names ); $this->assertContains( 'test/text-upper', $names ); + $this->assertContains( 'test/media-crop', $names ); } /** diff --git a/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php b/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php index 20a773bea1628..56987fa57e36b 100644 --- a/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php +++ b/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php @@ -142,6 +142,30 @@ private function register_test_ability( string $name, array $args ): void { array_pop( $wp_current_filter ); } + /** + * Helper to register an ability with a custom boolean meta key. + * + * The `featured` key stands in for any plugin-defined meta. It is not part + * of the well-defined annotations, so the meta schema does not declare its + * type by default. + */ + private function register_featured_ability(): void { + $this->register_test_ability( + 'test/featured', + array( + 'label' => 'Featured', + 'description' => 'Declares a custom boolean meta value.', + 'category' => 'general', + 'execute_callback' => '__return_true', + 'permission_callback' => '__return_true', + 'meta' => array( + 'show_in_rest' => true, + 'featured' => true, + ), + ) + ); + } + /** * Register test abilities for testing. */ @@ -828,6 +852,199 @@ public function test_filter_by_namespace_still_respects_show_in_rest(): void { $this->assertNotContains( 'test/not-show-in-rest', $names ); } + /** + * Test filtering abilities by a well-defined behavioral annotation. + * + * The 'test/system-info' fixture is the only ability marked read only. The + * value is passed as a string, the way it arrives over the query string, so + * this also confirms the meta schema coerces it to a boolean before matching. + * + * @ticket 64990 + */ + public function test_filter_by_annotation(): void { + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities' ); + $request->set_param( 'meta', array( 'annotations' => array( 'readonly' => 'true' ) ) ); + $request->set_param( 'per_page', 100 ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $names = wp_list_pluck( $response->get_data(), 'name' ); + + $this->assertContains( 'test/system-info', $names ); + $this->assertNotContains( 'test/calculator', $names, 'Abilities not marked read only should be excluded.' ); + } + + /** + * Test that a non-matching annotation returns empty results. + * + * No fixture marks itself destructive, so the result set is empty. + * + * @ticket 64990 + */ + public function test_filter_by_non_matching_annotation(): void { + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities' ); + $request->set_param( 'meta', array( 'annotations' => array( 'destructive' => true ) ) ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + $this->assertEmpty( $response->get_data() ); + } + + /** + * Test filtering abilities by several meta conditions at once. + * + * All conditions must match (AND logic). + * + * @ticket 64990 + */ + public function test_filter_by_multiple_meta_conditions(): void { + $this->register_test_ability( + 'test/read-only-idempotent', + array( + 'label' => 'Read Only and Idempotent', + 'description' => 'Marked both read only and idempotent.', + 'category' => 'general', + 'execute_callback' => '__return_true', + 'permission_callback' => '__return_true', + 'meta' => array( + 'show_in_rest' => true, + 'annotations' => array( + 'readonly' => true, + 'idempotent' => true, + ), + ), + ) + ); + + $this->register_test_ability( + 'test/read-only-only', + array( + 'label' => 'Read Only', + 'description' => 'Marked read only but not idempotent.', + 'category' => 'general', + 'execute_callback' => '__return_true', + 'permission_callback' => '__return_true', + 'meta' => array( + 'show_in_rest' => true, + 'annotations' => array( + 'readonly' => true, + ), + ), + ) + ); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities' ); + $request->set_param( + 'meta', + array( + 'annotations' => array( + 'readonly' => 'true', + 'idempotent' => 'true', + ), + ) + ); + $request->set_param( 'per_page', 100 ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $names = wp_list_pluck( $response->get_data(), 'name' ); + + $this->assertContains( 'test/read-only-idempotent', $names, 'An ability matching every condition should be included.' ); + $this->assertNotContains( 'test/read-only-only', $names, 'An ability matching only one condition should be excluded.' ); + } + + /** + * Test that a caller cannot use the meta filter to reveal abilities hidden from REST. + * + * The forced `show_in_rest => true` condition must always win, even when the + * caller passes `show_in_rest => false` through the meta parameter. + * + * @ticket 64990 + */ + public function test_filter_by_meta_cannot_override_show_in_rest(): void { + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities' ); + $request->set_param( 'meta', array( 'show_in_rest' => false ) ); + $request->set_param( 'per_page', 100 ); + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $names = wp_list_pluck( $response->get_data(), 'name' ); + $this->assertNotContains( 'test/not-show-in-rest', $names, 'A caller must not reveal hidden abilities through meta.' ); + } + + /** + * Test the default behavior for a custom meta key with no declared type. + * + * Open-ended meta keys arrive over the query string as strings. The meta + * schema declares only the well-defined annotations, so a custom key such as + * `featured` has no declared type. REST leaves the value "true" as a string, + * and the strict meta match never equals the stored boolean. The ability is + * excluded. + * + * @ticket 64990 + */ + public function test_filter_by_custom_meta_without_declared_type_is_not_coerced(): void { + $this->register_featured_ability(); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities' ); + // The value is passed as a string, the way it arrives over the query string. + $request->set_param( 'meta', array( 'featured' => 'true' ) ); + $request->set_param( 'per_page', 100 ); + + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $names = wp_list_pluck( $response->get_data(), 'name' ); + $this->assertNotContains( 'test/featured', $names, 'A custom meta key without a declared type should not coerce the query-string value.' ); + } + + /** + * Test that a filter can declare a custom meta key's type so its value coerces. + * + * A plugin can declare the type for its own meta key through the + * `rest_abilities_collection_params` filter. REST then coerces the value + * "true" to a boolean before matching, so the ability is included. This is + * the supported way to make a custom meta key filterable. + * + * @ticket 64990 + */ + public function test_filter_can_declare_custom_meta_type_for_coercion(): void { + $this->register_featured_ability(); + + // Declare the type for the custom meta key so REST coerces the value first. + add_filter( + 'rest_abilities_collection_params', + static function ( array $query_params ): array { + $query_params['meta']['properties']['featured'] = array( + 'type' => array( 'boolean', 'null' ), + ); + return $query_params; + } + ); + + // Re-register the routes on a fresh server so the collection parameters pick up the filter. + global $wp_rest_server; + $wp_rest_server = new WP_REST_Server(); + $this->server = $wp_rest_server; + do_action( 'rest_api_init' ); + + $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities' ); + // The value is passed as a string, the way it arrives over the query string. + $request->set_param( 'meta', array( 'featured' => 'true' ) ); + $request->set_param( 'per_page', 100 ); + + $response = $this->server->dispatch( $request ); + + $this->assertSame( 200, $response->get_status() ); + + $names = wp_list_pluck( $response->get_data(), 'name' ); + $this->assertContains( 'test/featured', $names, 'A declared schema type should coerce the query-string value before matching.' ); + } + /** * Test that schema keywords outside the allow-list are stripped from ability schemas in REST response. * diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js index 16067d33edbe4..644bd808b6897 100644 --- a/tests/qunit/fixtures/wp-api-generated.js +++ b/tests/qunit/fixtures/wp-api-generated.js @@ -12655,6 +12655,42 @@ mockedApiResponse.Schema = { "description": "Limit results to abilities in a specific namespace.", "type": "string", "required": false + }, + "meta": { + "description": "Limit results to abilities matching all of the given meta fields.", + "type": "object", + "properties": { + "annotations": { + "description": "Limit results to abilities matching the given behavioral annotations.", + "type": "object", + "properties": { + "readonly": { + "description": "Whether the ability does not modify its environment.", + "type": [ + "boolean", + "null" + ] + }, + "destructive": { + "description": "Whether the ability may perform destructive updates to its environment.", + "type": [ + "boolean", + "null" + ] + }, + "idempotent": { + "description": "Whether repeated calls with the same arguments have no additional effect.", + "type": [ + "boolean", + "null" + ] + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true, + "required": false } } } From 859d7fea0e316b1bfc6bdfe8efa88e4e9402666b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Tue, 23 Jun 2026 11:40:49 +0000 Subject: [PATCH 245/327] REST API: Add a shared helper for JSON Schema allowed keywords. Introduce `wp_get_json_schema_allowed_keywords()` as the single place to decide which JSON Schema keywords may stay in schema output. It supports two profiles: `rest-api` (the default, used for REST route output) and `draft-04` (a wider draft-04 set used when publishing schemas to clients such as the Abilities API). Route schema output now flows through the helper and the new `wp_json_schema_allowed_keywords` filter, replacing the Abilities-specific special casing in the REST list controller. Validation internals still call `rest_get_allowed_schema_keywords()` directly, so REST validation behavior does not change. Props gziolo, apermo. See #64955. git-svn-id: https://develop.svn.wordpress.org/trunk@62549 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/json-schema.php | 72 +++++++++++++++++++ .../rest-api/class-wp-rest-server.php | 2 +- ...s-wp-rest-abilities-v1-list-controller.php | 64 +++++++++-------- src/wp-settings.php | 1 + .../abilities-api/wpRegisterCoreAbilities.php | 4 +- tests/phpunit/tests/json-schema.php | 57 +++++++++++++++ tests/phpunit/tests/rest-api/rest-server.php | 41 +++++++++++ 7 files changed, 206 insertions(+), 35 deletions(-) create mode 100644 src/wp-includes/json-schema.php create mode 100644 tests/phpunit/tests/json-schema.php diff --git a/src/wp-includes/json-schema.php b/src/wp-includes/json-schema.php new file mode 100644 index 0000000000000..9832a479a7d3b --- /dev/null +++ b/src/wp-includes/json-schema.php @@ -0,0 +1,72 @@ +<?php +/** + * JSON Schema API: shared functions for working with JSON Schema. + * + * @package WordPress + * @subpackage JSON_Schema + * @since 7.1.0 + */ + +/** + * Gets the JSON Schema keywords allowed for a given schema profile. + * + * Use the returned list to decide which keywords to keep when a schema is + * output as JSON. Both profiles describe JSON Schema draft-04 output, also + * called JSON Schema Version 4. They differ only in how much of the keyword + * vocabulary stays in the result. + * + * - 'rest-api' returns the subset of draft-04 that the WordPress REST API + * uses for route output. This is the default. + * - 'draft-04' returns the larger draft-04 set used when publishing a schema + * as a standalone document to clients, such as the Abilities API. It keeps + * documentation and passthrough keywords like '$ref', 'definitions', + * 'allOf', 'not', 'dependencies', and 'additionalItems'. + * + * The keywords are allowed to stay in the schema output. This does not mean + * WordPress validates or sanitizes values against them. + * + * @since 7.1.0 + * + * @param string $schema_profile Optional. Name of the schema profile to get keywords for. + * Accepts 'rest-api' or 'draft-04'. Any other value falls + * back to the 'rest-api' profile. Default 'rest-api'. + * @return string[] Allowed JSON Schema keywords. + */ +function wp_get_json_schema_allowed_keywords( string $schema_profile = 'rest-api' ): array { + $rest_keywords = rest_get_allowed_schema_keywords(); + + $keywords_by_profile = array( + 'rest-api' => $rest_keywords, + 'draft-04' => array_merge( + array( + '$schema', + 'id', + '$ref', + ), + $rest_keywords, + array( + 'required', + 'allOf', + 'not', + 'definitions', + 'dependencies', + 'additionalItems', + ) + ), + ); + + $allowed_keywords = $keywords_by_profile[ $schema_profile ] ?? $rest_keywords; + + /** + * Filters the JSON Schema keywords allowed for a given schema profile. + * + * Adding a keyword lets it stay in the schema output for that profile. + * It does not make WordPress validate or sanitize values against the keyword. + * + * @since 7.1.0 + * + * @param string[] $allowed_keywords Allowed JSON Schema keywords. + * @param string $schema_profile The schema profile the keywords are for. + */ + return apply_filters( 'wp_json_schema_allowed_keywords', $allowed_keywords, $schema_profile ); +} diff --git a/src/wp-includes/rest-api/class-wp-rest-server.php b/src/wp-includes/rest-api/class-wp-rest-server.php index f58f3aa1b0095..9655b59af3b95 100644 --- a/src/wp-includes/rest-api/class-wp-rest-server.php +++ b/src/wp-includes/rest-api/class-wp-rest-server.php @@ -1649,7 +1649,7 @@ public function get_data_for_route( $route, $callbacks, $context = 'view' ) { } } - $allowed_schema_keywords = array_flip( rest_get_allowed_schema_keywords() ); + $allowed_schema_keywords = array_flip( wp_get_json_schema_allowed_keywords( 'rest-api' ) ); $route = preg_replace( '#\(\?P<(\w+?)>.*?\)#', '{$1}', $route ); diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php index b3d94be28c4f3..36cd249c55d6f 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php @@ -34,6 +34,18 @@ class WP_REST_Abilities_V1_List_Controller extends WP_REST_Controller { */ protected $rest_base = 'abilities'; + /** + * Lookup map of allowed schema keywords for preparing ability schemas in REST responses. + * + * Keyword names are stored as keys so they can be matched with + * array_intersect_key(). Computed lazily on first use and reused while + * preparing nested schemas. + * + * @since 7.1.0 + * @var array<string, true> + */ + private array $allowed_schema_keyword_lookup; + /** * Registers the routes for abilities. * @@ -193,26 +205,6 @@ public function get_item_permissions_check( $request ) { return current_user_can( 'read' ); } - /** - * Additional schema keywords to preserve in REST responses. - * - * Ability schemas are exposed to clients as JSON Schema. Preserve additional - * draft-04 keywords so clients can validate richer schemas, even when some - * of those keywords are not enforced by the server-side REST schema validator. - * - * @since 7.1.0 - * @var string[] - */ - private const ADDITIONAL_ALLOWED_SCHEMA_KEYWORDS = array( - 'required', - 'allOf', - 'not', - '$ref', - 'definitions', - 'dependencies', - 'additionalItems', - ); - /** * Determines whether the value is an associative array. * @@ -227,6 +219,26 @@ private function is_associative_array( $value ): bool { return is_array( $value ) && ! wp_is_numeric_array( $value ); } + /** + * Gets the allowed schema keywords for preparing ability schemas in REST responses. + * + * Uses the fuller draft-04 keyword set, not the smaller REST API subset. + * The published schema is consumed by clients that re-validate values + * against standard draft-04, so it keeps the keywords those validators + * expect. + * + * @since 7.1.0 + * + * @return array<string, true> Allowed schema keywords. + */ + private function get_allowed_schema_keywords_for_response(): array { + if ( ! isset( $this->allowed_schema_keyword_lookup ) ) { + $this->allowed_schema_keyword_lookup = array_fill_keys( wp_get_json_schema_allowed_keywords( 'draft-04' ), true ); + } + + return $this->allowed_schema_keyword_lookup; + } + /** * Transforms an ability schema for REST response output. * @@ -258,17 +270,7 @@ private function prepare_schema_for_response( array $schema ): array { } } - // Computed once and reused across the recursive calls for every schema node. - static $allowed_keywords = null; - $allowed_keywords ??= array_fill_keys( - array_merge( - rest_get_allowed_schema_keywords(), - self::ADDITIONAL_ALLOWED_SCHEMA_KEYWORDS - ), - true - ); - - $schema = array_intersect_key( $schema, $allowed_keywords ); + $schema = array_intersect_key( $schema, $this->get_allowed_schema_keywords_for_response() ); // Collect draft-03 per-property `required: true` flags into a draft-04 // `required` array of property names on the parent object schema. diff --git a/src/wp-settings.php b/src/wp-settings.php index 58df5ad190539..7e951681e4d53 100644 --- a/src/wp-settings.php +++ b/src/wp-settings.php @@ -313,6 +313,7 @@ require ABSPATH . WPINC . '/abilities-api.php'; require ABSPATH . WPINC . '/abilities.php'; require ABSPATH . WPINC . '/rest-api.php'; +require ABSPATH . WPINC . '/json-schema.php'; require ABSPATH . WPINC . '/rest-api/class-wp-rest-server.php'; require ABSPATH . WPINC . '/rest-api/class-wp-rest-response.php'; require ABSPATH . WPINC . '/rest-api/class-wp-rest-request.php'; diff --git a/tests/phpunit/tests/abilities-api/wpRegisterCoreAbilities.php b/tests/phpunit/tests/abilities-api/wpRegisterCoreAbilities.php index c85174406ea95..83011b727a994 100644 --- a/tests/phpunit/tests/abilities-api/wpRegisterCoreAbilities.php +++ b/tests/phpunit/tests/abilities-api/wpRegisterCoreAbilities.php @@ -385,9 +385,7 @@ public function test_core_get_environment_info_rejects_invalid_fields(): void { * @ticket 64384 */ public function test_core_abilities_schemas_use_only_valid_keywords(): void { - $allowed_keywords = rest_get_allowed_schema_keywords(); - // Add 'required' which is valid at the property level for draft-04. - $allowed_keywords[] = 'required'; + $allowed_keywords = wp_get_json_schema_allowed_keywords( 'draft-04' ); $abilities = wp_get_abilities(); diff --git a/tests/phpunit/tests/json-schema.php b/tests/phpunit/tests/json-schema.php new file mode 100644 index 0000000000000..445a03a6c1cfa --- /dev/null +++ b/tests/phpunit/tests/json-schema.php @@ -0,0 +1,57 @@ +<?php +/** + * JSON Schema functions. + * + * @package WordPress + * @subpackage JSON_Schema + */ + +/** + * @group json-schema + */ +class Tests_JSON_Schema extends WP_UnitTestCase { + + /** + * @ticket 64955 + */ + public function test_wp_get_json_schema_allowed_keywords_uses_rest_keywords_by_default() { + $this->assertSame( rest_get_allowed_schema_keywords(), wp_get_json_schema_allowed_keywords() ); + $this->assertSame( rest_get_allowed_schema_keywords(), wp_get_json_schema_allowed_keywords( 'rest-api' ) ); + $this->assertSame( rest_get_allowed_schema_keywords(), wp_get_json_schema_allowed_keywords( 'unknown-context' ) ); + } + + /** + * @ticket 64955 + */ + public function test_wp_get_json_schema_allowed_keywords_includes_draft_04_keywords() { + $keywords = wp_get_json_schema_allowed_keywords( 'draft-04' ); + + // Keywords the draft-04 profile adds on top of the REST keyword set. + foreach ( array( '$schema', 'id', '$ref', 'required', 'allOf', 'not', 'definitions', 'dependencies', 'additionalItems' ) as $keyword ) { + $this->assertContains( $keyword, $keywords ); + } + + // 'type' is a base REST keyword, not a draft-04 addition. Checking it + // confirms the draft-04 profile is a superset that keeps the REST keywords. + $this->assertContains( 'type', $keywords ); + } + + /** + * @ticket 64955 + */ + public function test_wp_get_json_schema_allowed_keywords_filter_receives_schema_profile() { + $schema_profiles = array(); + $filter = static function ( $keywords, $schema_profile ) use ( &$schema_profiles ) { + $schema_profiles[] = $schema_profile; + $keywords[] = 'xCustomKeyword'; + + return $keywords; + }; + + add_filter( 'wp_json_schema_allowed_keywords', $filter, 10, 2 ); + $keywords = wp_get_json_schema_allowed_keywords( 'draft-04' ); + + $this->assertContains( 'xCustomKeyword', $keywords ); + $this->assertSame( array( 'draft-04' ), $schema_profiles ); + } +} diff --git a/tests/phpunit/tests/rest-api/rest-server.php b/tests/phpunit/tests/rest-api/rest-server.php index 57b7bbb38abcd..f61d2fc745d99 100644 --- a/tests/phpunit/tests/rest-api/rest-server.php +++ b/tests/phpunit/tests/rest-api/rest-server.php @@ -2519,6 +2519,47 @@ public function test_get_data_for_route_includes_permitted_schema_keywords() { $this->assertSameSetsWithIndex( $expected, $args['param'] ); } + /** + * @ticket 64955 + */ + public function test_get_data_for_route_includes_filtered_json_schema_keywords() { + $filter = static function ( $keywords, $schema_profile ) { + if ( 'rest-api' === $schema_profile ) { + $keywords[] = 'xRestApiKeyword'; + } + + return $keywords; + }; + + add_filter( 'wp_json_schema_allowed_keywords', $filter, 10, 2 ); + + register_rest_route( + 'test-ns/v1', + '/test', + array( + 'methods' => 'POST', + 'callback' => static function () { + return new WP_REST_Response( 'test' ); + }, + 'permission_callback' => '__return_true', + 'args' => array( + 'param' => array( + 'type' => 'string', + 'xRestApiKeyword' => true, + 'invalid' => true, + ), + ), + ) + ); + + $response = rest_do_request( new WP_REST_Request( 'OPTIONS', '/test-ns/v1/test' ) ); + + $args = $response->get_data()['endpoints'][0]['args']; + + $this->assertArrayHasKey( 'xRestApiKeyword', $args['param'] ); + $this->assertArrayNotHasKey( 'invalid', $args['param'] ); + } + /** * @ticket 53056 */ From a1314bbebc533ab2a457d3ca4440ca2e02c91d7f Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Tue, 23 Jun 2026 13:53:35 +0000 Subject: [PATCH 246/327] Code Modernization: Use `array_any()` where appropriate. This commit replaces several `foreach` loops that iterate an array, return `true` as soon as an element matches a condition, and otherwise fall through to `false`. That is exactly what PHP 8.4's `array_any()` expresses in a single, more readable call. WordPress core includes a polyfill for `array_any()` on PHP < 8.4 as of WordPress 6.8, so the change works on every supported PHP version without raising the minimum requirement. Follow-up to [59783]. Props Soean, mukesh27, SergeyBiryukov. See #65519. git-svn-id: https://develop.svn.wordpress.org/trunk@62550 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-site-health.php | 8 +------- src/wp-admin/includes/post.php | 9 ++------- src/wp-includes/block-template-utils.php | 8 +------- src/wp-includes/class-wp-block-processor.php | 8 +------- src/wp-includes/class-wp-scripts.php | 7 +------ src/wp-includes/class-wp-styles.php | 7 +------ src/wp-includes/kses.php | 8 +------- 7 files changed, 8 insertions(+), 47 deletions(-) diff --git a/src/wp-admin/includes/class-wp-site-health.php b/src/wp-admin/includes/class-wp-site-health.php index 8274f8bd01b3c..415004cff4845 100644 --- a/src/wp-admin/includes/class-wp-site-health.php +++ b/src/wp-admin/includes/class-wp-site-health.php @@ -3834,13 +3834,7 @@ public function should_suggest_persistent_object_cache() { 'users_count' => $wpdb->users, ); - foreach ( $threshold_map as $threshold => $table ) { - if ( $thresholds[ $threshold ] <= $results[ $table ]->rows ) { - return true; - } - } - - return false; + return array_any( $threshold_map, fn( $table, $threshold ) => $thresholds[ $threshold ] <= $results[ $table ]->rows ); } /** diff --git a/src/wp-admin/includes/post.php b/src/wp-admin/includes/post.php index d32f5d6889e58..04341f3a41cba 100644 --- a/src/wp-admin/includes/post.php +++ b/src/wp-admin/includes/post.php @@ -1980,13 +1980,8 @@ function wp_create_post_autosave( $post_data ) { $post = get_post( $post_id ); // If the new autosave has the same content as the post, delete the autosave. - $autosave_is_different = false; - foreach ( array_intersect( array_keys( $new_autosave ), array_keys( _wp_post_revision_fields( $post ) ) ) as $field ) { - if ( normalize_whitespace( $new_autosave[ $field ] ) !== normalize_whitespace( $post->$field ) ) { - $autosave_is_different = true; - break; - } - } + $fields = array_intersect( array_keys( $new_autosave ), array_keys( _wp_post_revision_fields( $post ) ) ); + $autosave_is_different = array_any( $fields, fn( $field ) => normalize_whitespace( $new_autosave[ $field ] ) !== normalize_whitespace( $post->$field ) ); if ( ! $autosave_is_different ) { wp_delete_post_revision( $old_autosave->ID ); diff --git a/src/wp-includes/block-template-utils.php b/src/wp-includes/block-template-utils.php index dfda03f3c6bfc..7aa8cbf8c241e 100644 --- a/src/wp-includes/block-template-utils.php +++ b/src/wp-includes/block-template-utils.php @@ -1461,13 +1461,7 @@ function block_footer_area() { function wp_is_theme_directory_ignored( $path ) { $directories_to_ignore = array( '.DS_Store', '.svn', '.git', '.hg', '.bzr', 'node_modules', 'vendor' ); - foreach ( $directories_to_ignore as $directory ) { - if ( str_starts_with( $path, $directory ) ) { - return true; - } - } - - return false; + return array_any( $directories_to_ignore, fn( $directory ) => str_starts_with( $path, $directory ) ); } /** diff --git a/src/wp-includes/class-wp-block-processor.php b/src/wp-includes/class-wp-block-processor.php index fc157fc5c83f9..1716fabf859ea 100644 --- a/src/wp-includes/class-wp-block-processor.php +++ b/src/wp-includes/class-wp-block-processor.php @@ -1598,13 +1598,7 @@ public function opens_block( string ...$block_type ): bool { return true; } - foreach ( $block_type as $block ) { - if ( $this->is_block_type( $block ) ) { - return true; - } - } - - return false; + return array_any( $block_type, fn( $block ) => $this->is_block_type( $block ) ); } /** diff --git a/src/wp-includes/class-wp-scripts.php b/src/wp-includes/class-wp-scripts.php index 6f633d465bb2c..e48658a1e7f7c 100644 --- a/src/wp-includes/class-wp-scripts.php +++ b/src/wp-includes/class-wp-scripts.php @@ -850,12 +850,7 @@ public function in_default_dir( $src ) { return false; } - foreach ( (array) $this->default_dirs as $test ) { - if ( str_starts_with( $src, $test ) ) { - return true; - } - } - return false; + return array_any( (array) $this->default_dirs, fn( $test ) => str_starts_with( $src, $test ) ); } /** diff --git a/src/wp-includes/class-wp-styles.php b/src/wp-includes/class-wp-styles.php index 1edaeedb2660b..20487ca9b7068 100644 --- a/src/wp-includes/class-wp-styles.php +++ b/src/wp-includes/class-wp-styles.php @@ -459,12 +459,7 @@ public function in_default_dir( $src ) { return true; } - foreach ( (array) $this->default_dirs as $test ) { - if ( str_starts_with( $src, $test ) ) { - return true; - } - } - return false; + return array_any( (array) $this->default_dirs, fn( $test ) => str_starts_with( $src, $test ) ); } /** diff --git a/src/wp-includes/kses.php b/src/wp-includes/kses.php index 0edb36d9c80bb..d1e3552f4e91b 100644 --- a/src/wp-includes/kses.php +++ b/src/wp-includes/kses.php @@ -2056,13 +2056,7 @@ function wp_kses_bad_protocol_once2( $scheme, $allowed_protocols ) { $scheme = wp_kses_no_null( $scheme ); $scheme = strtolower( $scheme ); - $allowed = false; - foreach ( (array) $allowed_protocols as $one_protocol ) { - if ( strtolower( $one_protocol ) === $scheme ) { - $allowed = true; - break; - } - } + $allowed = array_any( (array) $allowed_protocols, fn( $protocol ) => strtolower( $protocol ) === $scheme ); if ( $allowed ) { return "$scheme:"; From a2d90ce260d5d20c4a5a0ab56b9f1c06053af060 Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Wed, 24 Jun 2026 07:14:53 +0000 Subject: [PATCH 247/327] Icons: Add label search support to `WP_Icons_Registry`. When filtering registered icons by a search term, the registry now matches the term against each icon's `label` in addition to its `name`. Previously only the `name` was searched, so icons whose human-readable label differed from their name could not be found. Props mcsf, wildworks. See #64847. git-svn-id: https://develop.svn.wordpress.org/trunk@62551 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-icons-registry.php | 5 ++++- .../tests/icons/wpRestIconsController.php | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-icons-registry.php b/src/wp-includes/class-wp-icons-registry.php index 2e2c2ca2956b4..6753231345f31 100644 --- a/src/wp-includes/class-wp-icons-registry.php +++ b/src/wp-includes/class-wp-icons-registry.php @@ -310,7 +310,10 @@ public function get_registered_icons( $search = '' ) { $icons = array(); foreach ( $this->registered_icons as $icon ) { - if ( ! empty( $search ) && false === stripos( $icon['name'], $search ) ) { + if ( ! empty( $search ) + && false === stripos( $icon['name'], $search ) + && false === stripos( $icon['label'] ?? '', $search ) + ) { continue; } diff --git a/tests/phpunit/tests/icons/wpRestIconsController.php b/tests/phpunit/tests/icons/wpRestIconsController.php index f6fd935061f0e..a3e0c1d96a063 100644 --- a/tests/phpunit/tests/icons/wpRestIconsController.php +++ b/tests/phpunit/tests/icons/wpRestIconsController.php @@ -296,6 +296,27 @@ public function test_get_items_search_filters_results() { $this->assertContains( 'core/arrow-left', $icon_names, 'Search results should include core/arrow-left icon' ); } + /** + * Test that GET /wp/v2/icons/?search= searches icon labels too. + * + * @ticket 64847 + * + * @covers ::get_items + */ + public function test_get_items_search_includes_label() { + wp_set_current_user( self::$editor_id ); + + $request = new WP_REST_Request( 'GET', '/wp/v2/icons' ); + + // The '@' character is only found in the *label* for core/at-symbol + $request->set_param( 'search', '@' ); + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + + $this->assertSame( 200, $response->get_status() ); + $this->assertEquals( array( 'core/at-symbol' ), array_column( $data, 'name' ) ); + } + /** * Test that search is case-insensitive. * From 434c7704f00d9d3a4c99375e95f2a974c54e1f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Wed, 24 Jun 2026 14:33:54 +0000 Subject: [PATCH 248/327] Docs: Document exceptions in `WP_Ability_Category` Adds a missing `@throws` annotation to `WP_Ability_Category::__construct()` and normalizes capitalization for the existing `@throws` description in `WP_Ability_Category::prepare_properties()`. Props igar-bhanushali. Fixes #65512. git-svn-id: https://develop.svn.wordpress.org/trunk@62552 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/abilities-api/class-wp-ability-category.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/abilities-api/class-wp-ability-category.php b/src/wp-includes/abilities-api/class-wp-ability-category.php index d1d5b32004408..406aa9f89a772 100644 --- a/src/wp-includes/abilities-api/class-wp-ability-category.php +++ b/src/wp-includes/abilities-api/class-wp-ability-category.php @@ -71,6 +71,7 @@ final class WP_Ability_Category { * @type string $description A description of the ability category. * @type array<string, mixed> $meta Optional. Additional metadata for the ability category. * } + * @throws InvalidArgumentException If an argument is invalid. */ public function __construct( string $slug, array $args ) { if ( empty( $slug ) ) { @@ -122,7 +123,7 @@ public function __construct( string $slug, array $args ) { * @type string $description A description of the ability category. * @type array<string, mixed> $meta Optional. Additional metadata for the ability category. * } - * @throws InvalidArgumentException if an argument is invalid. + * @throws InvalidArgumentException If an argument is invalid. */ protected function prepare_properties( array $args ): array { // Required args must be present and of the correct type. From 3fccf83eb7e86e6068a8cac360dec8539899bfb2 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Wed, 24 Jun 2026 21:37:19 +0000 Subject: [PATCH 249/327] Code Modernization: Use `array_all()` where appropriate. This commit replaces several `foreach` loops that iterate an array, return `false` as soon as an element fails a condition, and otherwise fall through to `true`. That is exactly what PHP 8.4's `array_all()` expresses in a single, more readable call. WordPress core includes a polyfill for `array_all()` on PHP < 8.4 as of WordPress 6.8, so the change works on every supported PHP version without raising the minimum requirement. Follow-up to [59783], [62550]. Props Soean, mukesh27, westonruter, SergeyBiryukov. See #65519. git-svn-id: https://develop.svn.wordpress.org/trunk@62553 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-user.php | 8 +------- src/wp-includes/functions.php | 8 +------- src/wp-includes/rest-api.php | 11 ++++------- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/src/wp-includes/class-wp-user.php b/src/wp-includes/class-wp-user.php index 63c3f8d04bf6a..980c435d92bc6 100644 --- a/src/wp-includes/class-wp-user.php +++ b/src/wp-includes/class-wp-user.php @@ -827,13 +827,7 @@ public function has_cap( $cap, ...$args ) { unset( $capabilities['do_not_allow'] ); // Must have ALL requested caps. - foreach ( (array) $caps as $cap ) { - if ( empty( $capabilities[ $cap ] ) ) { - return false; - } - } - - return true; + return array_all( (array) $caps, fn( $cap, $key ) => ! empty( $capabilities[ $cap ] ) ); } /** diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index 355d9f8a1ec37..64dce4a159755 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -5318,13 +5318,7 @@ function wp_is_numeric_array( $data ): bool { return false; } - foreach ( $data as $key => $value ) { - if ( is_string( $key ) ) { - return false; - } - } - - return true; + return array_all( $data, fn( $value, $key ) => ! is_string( $key ) ); } /** diff --git a/src/wp-includes/rest-api.php b/src/wp-includes/rest-api.php index e81de0ab281ee..9710ffaf6a21b 100644 --- a/src/wp-includes/rest-api.php +++ b/src/wp-includes/rest-api.php @@ -2095,13 +2095,10 @@ function rest_are_values_equal( $value1, $value2 ) { return false; } - foreach ( $value1 as $index => $value ) { - if ( ! array_key_exists( $index, $value2 ) || ! rest_are_values_equal( $value, $value2[ $index ] ) ) { - return false; - } - } - - return true; + return array_all( + $value1, + fn( $value, $index ) => array_key_exists( $index, $value2 ) && rest_are_values_equal( $value, $value2[ $index ] ) + ); } if ( is_int( $value1 ) && is_float( $value2 ) From 3cbba1694fc13daea49b0c8d2b5fa38864ba00a4 Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Thu, 25 Jun 2026 06:55:11 +0000 Subject: [PATCH 250/327] =?UTF-8?q?Editor:=20add=20=E2=80=9Cfill=20availab?= =?UTF-8?q?le=20space=E2=80=9D=20option=20to=20grid=20layout.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allows grid columns to stretch and fill available space instead of leaving empty tracks by using the autoFit keyword. Props shreya0shrivastava, isabel_brison. Fixes #65531. git-svn-id: https://develop.svn.wordpress.org/trunk@62554 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/layout.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/block-supports/layout.php b/src/wp-includes/block-supports/layout.php index 6d0ec7b917f13..c10da1f8db04b 100644 --- a/src/wp-includes/block-supports/layout.php +++ b/src/wp-includes/block-supports/layout.php @@ -828,7 +828,7 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $responsive_gap_value = '0px'; } - $should_output_grid_columns = null === $viewport_overrides || $has_viewport_property_override( 'minimumColumnWidth' ) || $has_viewport_property_override( 'columnCount' ); + $should_output_grid_columns = null === $viewport_overrides || $has_viewport_property_override( 'minimumColumnWidth' ) || $has_viewport_property_override( 'columnCount' ) || $has_viewport_property_override( 'autoFit' ); $uses_gap_in_grid_columns = ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['minimumColumnWidth'] ); if ( $has_block_gap_override && $uses_gap_in_grid_columns ) { $should_output_grid_columns = true; @@ -837,14 +837,18 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $should_output_grid_rows = ( null === $viewport_overrides || $has_viewport_property_override( 'rowCount' ) ) && ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['rowCount'] ); $grid_declarations = array(); + // When enabled, columns stretch to fill the available space using + // `auto-fit`; otherwise empty tracks are preserved with `auto-fill`. + $auto_placement = ! empty( $layout_for_styles['autoFit'] ) ? 'auto-fit' : 'auto-fill'; + if ( $should_output_grid_columns && ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['minimumColumnWidth'] ) ) { $max_value = 'max(min(' . $layout_for_styles['minimumColumnWidth'] . ', 100%), (100% - (' . $responsive_gap_value . ' * (' . $layout_for_styles['columnCount'] . ' - 1))) /' . $layout_for_styles['columnCount'] . ')'; - $grid_declarations['grid-template-columns'] = 'repeat(auto-fill, minmax(' . $max_value . ', 1fr))'; + $grid_declarations['grid-template-columns'] = 'repeat(' . $auto_placement . ', minmax(' . $max_value . ', 1fr))'; } elseif ( $should_output_grid_columns && ! empty( $layout_for_styles['columnCount'] ) ) { $grid_declarations['grid-template-columns'] = 'repeat(' . $layout_for_styles['columnCount'] . ', minmax(0, 1fr))'; } elseif ( $should_output_grid_columns ) { $minimum_column_width = ! empty( $layout_for_styles['minimumColumnWidth'] ) ? $layout_for_styles['minimumColumnWidth'] : '12rem'; - $grid_declarations['grid-template-columns'] = 'repeat(auto-fill, minmax(min(' . $minimum_column_width . ', 100%), 1fr))'; + $grid_declarations['grid-template-columns'] = 'repeat(' . $auto_placement . ', minmax(min(' . $minimum_column_width . ', 100%), 1fr))'; } if ( ! empty( $grid_declarations ) ) { From f56b7f7869a0061ddd0988f7630258635bcb3268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Thu, 25 Jun 2026 07:57:55 +0000 Subject: [PATCH 251/327] AI Client: Skip non-ability function calls in `execute_abilities()` `WP_AI_Client_Ability_Function_Resolver::execute_abilities()` should only respond to function calls that are ability calls. Previously, non-ability tool calls were passed to `execute_ability()` and received an `invalid_ability_call` response, preventing other tool handlers from processing them. This updates `execute_abilities()` to mirror `has_ability_calls()` by checking `is_ability_call()` before executing, and adds regression coverage for mixed ability and non-ability calls. Props khokansardar, jigar-bhanushali. Fixes #65504. git-svn-id: https://develop.svn.wordpress.org/trunk@62555 602fd350-edb4-49c9-b593-d223f7449a82 --- ...wp-ai-client-ability-function-resolver.php | 2 +- .../wpAiClientAbilityFunctionResolver.php | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/ai-client/class-wp-ai-client-ability-function-resolver.php b/src/wp-includes/ai-client/class-wp-ai-client-ability-function-resolver.php index 6057a2828ad72..596656d36f516 100644 --- a/src/wp-includes/ai-client/class-wp-ai-client-ability-function-resolver.php +++ b/src/wp-includes/ai-client/class-wp-ai-client-ability-function-resolver.php @@ -190,7 +190,7 @@ public function execute_abilities( Message $message ): Message { foreach ( $message->getParts() as $part ) { if ( $part->getType()->isFunctionCall() ) { $function_call = $part->getFunctionCall(); - if ( $function_call instanceof FunctionCall ) { + if ( $function_call instanceof FunctionCall && $this->is_ability_call( $function_call ) ) { $function_response = $this->execute_ability( $function_call ); $response_parts[] = new MessagePart( $function_response ); } diff --git a/tests/phpunit/tests/ai-client/wpAiClientAbilityFunctionResolver.php b/tests/phpunit/tests/ai-client/wpAiClientAbilityFunctionResolver.php index 37ed36951c5ae..92eadebf95963 100644 --- a/tests/phpunit/tests/ai-client/wpAiClientAbilityFunctionResolver.php +++ b/tests/phpunit/tests/ai-client/wpAiClientAbilityFunctionResolver.php @@ -666,6 +666,54 @@ public function test_execute_abilities_with_mixed_content() { $this->assertInstanceOf( FunctionResponse::class, $response ); } + /** + * Test execute_abilities ignores non-ability function calls. + * + * A message may contain function calls for tools handled elsewhere (not + * prefixed with `wpab__`). Those must be left untouched rather than answered + * with a spurious `invalid_ability_call` error response, matching the parts + * that has_ability_calls() reports. + * + * @ticket 65504 + */ + public function test_execute_abilities_ignores_non_ability_function_calls() { + $resolver = new WP_AI_Client_Ability_Function_Resolver( 'wpaiclienttests/simple' ); + + $ability_call = new FunctionCall( + 'call-ability', + 'wpab__wpaiclienttests__simple', + array() + ); + + $other_call = new FunctionCall( + 'call-other', + 'some_other_tool', + array() + ); + + $message = new ModelMessage( + array( + new MessagePart( $ability_call ), + new MessagePart( $other_call ), + ) + ); + + $result = $resolver->execute_abilities( $message ); + + $this->assertInstanceOf( UserMessage::class, $result ); + $parts = $result->getParts(); + // Only the ability call should produce a response; the other tool is left alone. + $this->assertCount( 1, $parts ); + + $response = $parts[0]->getFunctionResponse(); + $this->assertInstanceOf( FunctionResponse::class, $response ); + $this->assertSame( 'wpab__wpaiclienttests__simple', $response->getName() ); + $data = $response->getResponse(); + $this->assertArrayNotHasKey( 'code', $data ); + $this->assertArrayHasKey( 'success', $data ); + $this->assertTrue( $data['success'] ); + } + /** * Test execute_abilities with ability that has parameters. * From 50ad4247efc91cb7d046234d5cbe9701f1ce16f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Thu, 25 Jun 2026 08:49:42 +0000 Subject: [PATCH 252/327] Tests: Add coverage for AI Client prompts when AI is unsupported Adds a test to ensure `WP_AI_Client_Prompt_Builder::generate_result()` returns a `WP_Error` with the `prompt_prevented` code and the AI-disabled message when `wp_supports_ai()` returns false. Follow-up for #64591. Props nimeshatxecurify. Fixes #65422. git-svn-id: https://develop.svn.wordpress.org/trunk@62556 602fd350-edb4-49c9-b593-d223f7449a82 --- .../tests/ai-client/wpAiClientPromptBuilder.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php b/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php index e758a6868aa42..9e8fa8d8f2a86 100644 --- a/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php +++ b/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php @@ -2561,6 +2561,23 @@ public function test_generate_result_returns_wp_error_when_filter_prevents_promp $this->assertSame( 'Prompt execution was prevented by a filter.', $result->get_error_message() ); } + /** + * Tests that generate_result returns WP_Error when AI is not supported. + * + * @ticket 65422 + */ + public function test_generate_result_returns_wp_error_when_ai_not_supported() { + add_filter( 'wp_supports_ai', '__return_false' ); + + $builder = new WP_AI_Client_Prompt_Builder( AiClient::defaultRegistry(), 'Test prompt' ); + + $result = $builder->generate_result(); + + $this->assertWPError( $result ); + $this->assertSame( 'prompt_prevented', $result->get_error_code() ); + $this->assertSame( 'AI features are not supported in this environment.', $result->get_error_message() ); + } + /** * Tests that prevent prompt filter receives a clone of the builder instance. * From 87a5738363f2c11b4e090149276fc2e6ab94e143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Thu, 25 Jun 2026 09:08:14 +0000 Subject: [PATCH 253/327] Allow customization of the AI Client object cache group Introduces the `wp_ai_client_cache_group` filter to allow developers to customize the object cache group used by `WP_AI_Client_Cache`. Includes tests for using a custom cache group and casting non-string filter values to strings. Props baikaresandeep007-1, apermo. Fixes #65127. git-svn-id: https://develop.svn.wordpress.org/trunk@62557 602fd350-edb4-49c9-b593-d223f7449a82 --- .../adapters/class-wp-ai-client-cache.php | 38 ++++++++++++++---- .../tests/ai-client/wpAiClientCache.php | 40 +++++++++++++++++++ 2 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php b/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php index 45504897485f7..11c544d2f42e6 100644 --- a/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php +++ b/src/wp-includes/ai-client/adapters/class-wp-ai-client-cache.php @@ -29,6 +29,28 @@ class WP_AI_Client_Cache implements CacheInterface { */ private const CACHE_GROUP = 'wp_ai_client'; + /** + * Retrieves the cache group used for cache operations, applying a filter for customization. + * + * @since 7.1.0 + * + * @return string Cache group name. + */ + private function get_cache_group(): string { + /** + * Filters the cache group used by the WP AI Client cache adapter. + * + * Allows integrators to change the object cache group under which AI client + * items are stored. This is useful for avoiding key collisions, creating + * environment-specific caches, or adapting to backend constraints. + * + * @since 7.1.0 + * + * @param string $group The cache group. + */ + return (string) apply_filters( 'wp_ai_client_cache_group', self::CACHE_GROUP ); + } + /** * Fetches a value from the cache. * @@ -40,7 +62,7 @@ class WP_AI_Client_Cache implements CacheInterface { */ public function get( $key, $default_value = null ) { $found = false; - $value = wp_cache_get( $key, self::CACHE_GROUP, false, $found ); + $value = wp_cache_get( $key, $this->get_cache_group(), false, $found ); if ( ! $found ) { return $default_value; @@ -62,7 +84,7 @@ public function get( $key, $default_value = null ) { public function set( $key, $value, $ttl = null ): bool { $expire = $this->ttl_to_seconds( $ttl ); - return wp_cache_set( $key, $value, self::CACHE_GROUP, $expire ); + return wp_cache_set( $key, $value, $this->get_cache_group(), $expire ); } /** @@ -74,7 +96,7 @@ public function set( $key, $value, $ttl = null ): bool { * @return bool True if the item was successfully removed. False if there was an error. */ public function delete( $key ): bool { - return wp_cache_delete( $key, self::CACHE_GROUP ); + return wp_cache_delete( $key, $this->get_cache_group() ); } /** @@ -92,7 +114,7 @@ public function clear(): bool { return false; } - return wp_cache_flush_group( self::CACHE_GROUP ); + return wp_cache_flush_group( $this->get_cache_group() ); } /** @@ -111,7 +133,7 @@ public function getMultiple( $keys, $default_value = null ): array { * @var array<string> $keys_array */ $keys_array = $this->iterable_to_array( $keys ); - $values = wp_cache_get_multiple( $keys_array, self::CACHE_GROUP ); + $values = wp_cache_get_multiple( $keys_array, $this->get_cache_group() ); $result = array(); foreach ( $keys_array as $key ) { @@ -138,7 +160,7 @@ public function getMultiple( $keys, $default_value = null ): array { public function setMultiple( $values, $ttl = null ): bool { $values_array = $this->iterable_to_array( $values ); $expire = $this->ttl_to_seconds( $ttl ); - $results = wp_cache_set_multiple( $values_array, self::CACHE_GROUP, $expire ); + $results = wp_cache_set_multiple( $values_array, $this->get_cache_group(), $expire ); // Return true only if all operations succeeded. return ! in_array( false, $results, true ); @@ -154,7 +176,7 @@ public function setMultiple( $values, $ttl = null ): bool { */ public function deleteMultiple( $keys ): bool { $keys_array = $this->iterable_to_array( $keys ); - $results = wp_cache_delete_multiple( $keys_array, self::CACHE_GROUP ); + $results = wp_cache_delete_multiple( $keys_array, $this->get_cache_group() ); // Return true only if all operations succeeded. return ! in_array( false, $results, true ); @@ -170,7 +192,7 @@ public function deleteMultiple( $keys ): bool { */ public function has( $key ): bool { $found = false; - wp_cache_get( $key, self::CACHE_GROUP, false, $found ); + wp_cache_get( $key, $this->get_cache_group(), false, $found ); return (bool) $found; } diff --git a/tests/phpunit/tests/ai-client/wpAiClientCache.php b/tests/phpunit/tests/ai-client/wpAiClientCache.php index 690b8b9668981..d1dc9d22b036d 100644 --- a/tests/phpunit/tests/ai-client/wpAiClientCache.php +++ b/tests/phpunit/tests/ai-client/wpAiClientCache.php @@ -218,4 +218,44 @@ public function test_ttl_with_date_interval() { $this->assertTrue( $this->cache->set( 'key1', 'value1', $ttl ) ); $this->assertSame( 'value1', $this->cache->get( 'key1' ) ); } + + /** + * Test that the cache group filter is respected. + * + * @ticket 65127 + */ + public function test_cache_group_filter_is_respected() { + add_filter( + 'wp_ai_client_cache_group', + function ( $group ) { + return 'wp_ai_client_tests_group'; + } + ); + + $set = $this->cache->set( 'ai_test_key', 'ai_value', 3600 ); + $this->assertTrue( $set ); + + $value = wp_cache_get( 'ai_test_key', 'wp_ai_client_tests_group' ); + $this->assertSame( 'ai_value', $value ); + } + + /** + * Test that a non-string cache group filter value is cast to string. + * + * @ticket 65127 + */ + public function test_cache_group_filter_returns_non_string() { + add_filter( + 'wp_ai_client_cache_group', + function ( $group ) { + return 12345; + } + ); + + $set = $this->cache->set( 'ai_test_key', 'ai_value', 3600 ); + $this->assertTrue( $set ); + + $value = wp_cache_get( 'ai_test_key', '12345' ); + $this->assertSame( 'ai_value', $value ); + } } From 25850a6911e7a44d7b68047e461d21802fc072a8 Mon Sep 17 00:00:00 2001 From: Daniel Richards <talldanwp@git.wordpress.org> Date: Thu, 25 Jun 2026 10:03:54 +0000 Subject: [PATCH 254/327] Editor: Use `@` symbol prefix for responsive style states. Prefix responsive style state keys with `@` to avoid clashes with other style properties. Props talldanwp, isabel_brison. Fixes #65503. git-svn-id: https://develop.svn.wordpress.org/trunk@62559 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/states.php | 2 +- src/wp-includes/class-wp-theme-json.php | 6 ++-- tests/phpunit/tests/block-supports/states.php | 26 +++++++------- tests/phpunit/tests/theme/wpThemeJson.php | 36 +++++++++---------- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/wp-includes/block-supports/states.php b/src/wp-includes/block-supports/states.php index 82f6b43a9b2a6..3a64b410dbdc7 100644 --- a/src/wp-includes/block-supports/states.php +++ b/src/wp-includes/block-supports/states.php @@ -4,7 +4,7 @@ * * Generates scoped CSS for per-instance state styles declared in block attributes, * including pseudo-states (e.g., `style[':hover']`) and responsive states - * (e.g., `style['mobile']` and `style['mobile'][':hover']`). + * (e.g., `style['@mobile']` and `style['@mobile'][':hover']`). * * @package WordPress * @since 7.1.0 diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index d464e19ec879c..26faf057459ef 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -653,8 +653,8 @@ class WP_Theme_JSON { * @var array */ const RESPONSIVE_BREAKPOINTS = array( - 'mobile' => '@media (width <= 480px)', - 'tablet' => '@media (480px < width <= 782px)', + '@mobile' => '@media (width <= 480px)', + '@tablet' => '@media (480px < width <= 782px)', ); /** @@ -1072,7 +1072,7 @@ protected static function sanitize( $input, $valid_block_names, $valid_element_n * e.g. * - top level elements: `$schema['styles']['elements']['link'][':hover']`. * - block level elements: `$schema['styles']['blocks']['core/button']['elements']['link'][':hover']`. - * - block responsive elements: `$schema['styles']['blocks']['core/button']['tablet']['elements']['link'][':hover']`. + * - block responsive elements: `$schema['styles']['blocks']['core/button']['@tablet']['elements']['link'][':hover']`. */ foreach ( $valid_element_names as $element ) { $schema_styles_elements[ $element ] = $styles_non_top_level; diff --git a/tests/phpunit/tests/block-supports/states.php b/tests/phpunit/tests/block-supports/states.php index 122c1c3ea5fcf..7ee87cf938084 100644 --- a/tests/phpunit/tests/block-supports/states.php +++ b/tests/phpunit/tests/block-supports/states.php @@ -940,7 +940,7 @@ public function test_responsive_root_state_generates_media_query_scoped_css() { 'blockName' => 'test/responsive-root-state', 'attrs' => array( 'style' => array( - 'mobile' => array( + '@mobile' => array( 'color' => array( 'text' => '#ff0000', ), @@ -979,7 +979,7 @@ public function test_responsive_element_color_generates_media_query_scoped_css() 'blockName' => 'core/group', 'attrs' => array( 'style' => array( - 'mobile' => array( + '@mobile' => array( 'elements' => array( 'link' => array( 'color' => array( @@ -1025,7 +1025,7 @@ public function test_responsive_pseudo_state_generates_media_query_scoped_css() 'blockName' => 'core/button', 'attrs' => array( 'style' => array( - 'mobile' => array( + '@mobile' => array( ':hover' => array( 'color' => array( 'background' => '#ff00d0', @@ -1091,7 +1091,7 @@ public function test_responsive_block_gap_state_generates_layout_spacing_css() { 'type' => 'default', ), 'style' => array( - 'mobile' => array( + '@mobile' => array( 'spacing' => array( 'blockGap' => '12px', ), @@ -1156,7 +1156,7 @@ public function test_responsive_block_gap_state_uses_active_layout_type() { 'type' => 'flex', ), 'style' => array( - 'mobile' => array( + '@mobile' => array( 'spacing' => array( 'blockGap' => '12px', ), @@ -1210,7 +1210,7 @@ public function test_responsive_layout_state_generates_grid_layout_css() { 'type' => 'grid', ), 'style' => array( - 'mobile' => array( + '@mobile' => array( 'layout' => array( 'minimumColumnWidth' => '8rem', ), @@ -1260,7 +1260,7 @@ public function test_responsive_layout_state_generates_grid_column_count_css() { 'type' => 'grid', ), 'style' => array( - 'mobile' => array( + '@mobile' => array( 'layout' => array( 'columnCount' => 3, ), @@ -1317,7 +1317,7 @@ public function test_responsive_layout_state_generates_distinct_container_classe array( 'attrs' => array( 'style' => array( - 'mobile' => array( + '@mobile' => array( 'layout' => array( 'columnCount' => 3, ), @@ -1331,7 +1331,7 @@ public function test_responsive_layout_state_generates_distinct_container_classe array( 'attrs' => array( 'style' => array( - 'mobile' => array( + '@mobile' => array( 'layout' => array( 'columnCount' => 4, ), @@ -1403,7 +1403,7 @@ public function test_responsive_layout_state_generates_grid_columns_and_gap_css( 'type' => 'grid', ), 'style' => array( - 'mobile' => array( + '@mobile' => array( 'layout' => array( 'columnCount' => 3, ), @@ -1469,7 +1469,7 @@ public function test_responsive_grid_block_gap_state_only_outputs_changed_layout 'minimumColumnWidth' => '12rem', ), 'style' => array( - 'tablet' => array( + '@tablet' => array( 'spacing' => array( 'blockGap' => '12px', ), @@ -1518,7 +1518,7 @@ public function test_responsive_child_layout_state_generates_grid_span_css() { 'innerContent' => array( '<p>Some text.</p>' ), 'attrs' => array( 'style' => array( - 'mobile' => array( + '@mobile' => array( 'layout' => array( 'columnSpan' => '2', ), @@ -1581,7 +1581,7 @@ public function test_responsive_layout_state_targets_inner_wrapper_for_wrapper_b 'type' => 'grid', ), 'style' => array( - 'mobile' => array( + '@mobile' => array( 'layout' => array( 'columnCount' => 3, ), diff --git a/tests/phpunit/tests/theme/wpThemeJson.php b/tests/phpunit/tests/theme/wpThemeJson.php index 7eda511e1d9ec..4421e214a57e2 100644 --- a/tests/phpunit/tests/theme/wpThemeJson.php +++ b/tests/phpunit/tests/theme/wpThemeJson.php @@ -957,7 +957,7 @@ public function test_get_styles_for_block_responsive_feature_selector_not_duplic 'styles' => array( 'blocks' => array( 'test/responsive-feature' => array( - 'mobile' => array( + '@mobile' => array( 'color' => array( 'text' => 'red', ), @@ -979,7 +979,7 @@ public function test_get_styles_for_block_responsive_feature_selector_not_duplic $mobile_metadata = array( 'name' => 'test/responsive-feature', - 'path' => array( 'styles', 'blocks', 'test/responsive-feature', 'mobile' ), + 'path' => array( 'styles', 'blocks', 'test/responsive-feature', '@mobile' ), 'selector' => '.wp-block-test-responsive-feature', 'selectors' => array( 'color' => '.wp-block-test-responsive-feature .color-target', @@ -1020,7 +1020,7 @@ public function test_get_styles_for_block_outputs_responsive_block_gap_after_def 'spacing' => array( 'blockGap' => '5rem', ), - 'mobile' => array( + '@mobile' => array( 'spacing' => array( 'blockGap' => '2rem', ), @@ -1040,7 +1040,7 @@ public function test_get_styles_for_block_outputs_responsive_block_gap_after_def $mobile_metadata = array( 'name' => 'core/group', - 'path' => array( 'styles', 'blocks', 'core/group', 'mobile' ), + 'path' => array( 'styles', 'blocks', 'core/group', '@mobile' ), 'selector' => '.wp-block-group', 'css' => '.wp-block-group', 'media_query' => '@media (width <= 480px)', @@ -1080,7 +1080,7 @@ public function test_get_styles_for_block_responsive_element_pseudo_styles_prese ), ), ), - 'mobile' => array( + '@mobile' => array( 'elements' => array( 'link' => array( 'color' => array( @@ -1109,7 +1109,7 @@ public function test_get_styles_for_block_responsive_element_pseudo_styles_prese ); $mobile_link_node = array( - 'path' => array( 'styles', 'blocks', 'core/group', 'mobile', 'elements', 'link' ), + 'path' => array( 'styles', 'blocks', 'core/group', '@mobile', 'elements', 'link' ), 'selector' => $link_selector, 'media_query' => '@media (width <= 480px)', ); @@ -1120,7 +1120,7 @@ public function test_get_styles_for_block_responsive_element_pseudo_styles_prese ); $mobile_hover_node = array( - 'path' => array( 'styles', 'blocks', 'core/group', 'mobile', 'elements', 'link' ), + 'path' => array( 'styles', 'blocks', 'core/group', '@mobile', 'elements', 'link' ), 'selector' => $link_selector . ':hover', 'media_query' => '@media (width <= 480px)', ); @@ -1174,7 +1174,7 @@ public function test_get_styles_for_block_with_style_variations_and_responsive_b 'spacing' => array( 'blockGap' => '5rem', ), - 'mobile' => array( + '@mobile' => array( 'spacing' => array( 'blockGap' => '2rem', ), @@ -1230,7 +1230,7 @@ public function test_get_styles_for_block_outputs_tablet_responsive_styles_only( 'styles' => array( 'blocks' => array( 'test/tablet-only' => array( - 'tablet' => array( + '@tablet' => array( 'color' => array( 'text' => 'purple', ), @@ -1243,7 +1243,7 @@ public function test_get_styles_for_block_outputs_tablet_responsive_styles_only( $tablet_metadata = array( 'name' => 'test/tablet-only', - 'path' => array( 'styles', 'blocks', 'test/tablet-only', 'tablet' ), + 'path' => array( 'styles', 'blocks', 'test/tablet-only', '@tablet' ), 'selector' => '.wp-block-test-tablet-only', 'media_query' => '@media (480px < width <= 782px)', ); @@ -3196,15 +3196,15 @@ public function test_remove_insecure_properties_preserves_responsive_block_eleme 'core/group' => array( 'elements' => array( 'link' => array( - 'color' => array( + 'color' => array( 'text' => 'var:preset|color|dark-gray', ), - 'mobile' => array( + '@mobile' => array( 'color' => array( 'text' => 'var:preset|color|dark-pink', ), ), - 'tablet' => array( + '@tablet' => array( 'color' => array( 'text' => 'var:preset|color|dark-red', ), @@ -3224,15 +3224,15 @@ public function test_remove_insecure_properties_preserves_responsive_block_eleme 'core/group' => array( 'elements' => array( 'link' => array( - 'color' => array( + 'color' => array( 'text' => 'var(--wp--preset--color--dark-gray)', ), - 'mobile' => array( + '@mobile' => array( 'color' => array( 'text' => 'var(--wp--preset--color--dark-pink)', ), ), - 'tablet' => array( + '@tablet' => array( 'color' => array( 'text' => 'var(--wp--preset--color--dark-red)', ), @@ -3259,7 +3259,7 @@ public function test_remove_insecure_properties_preserves_responsive_elements_wi 'styles' => array( 'blocks' => array( 'core/group' => array( - 'mobile' => array( + '@mobile' => array( 'elements' => array( 'link' => array( 'color' => array( @@ -3279,7 +3279,7 @@ public function test_remove_insecure_properties_preserves_responsive_elements_wi 'styles' => array( 'blocks' => array( 'core/group' => array( - 'mobile' => array( + '@mobile' => array( 'elements' => array( 'link' => array( 'color' => array( From 5908f03bd8bd0150919780966cbfd6a34709c491 Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Thu, 25 Jun 2026 13:15:16 +0000 Subject: [PATCH 255/327] HTML API: Move "any other end tag" handling to a separate method. Extract the _in body_ insertion mode's "any other end tag" steps into their own method so they can be invoked directly, such as from the adoption agency algorithm. Developed in https://github.com/WordPress/wordpress-develop/pull/12267. Props jonsurrell, dmsnell. See #65383. git-svn-id: https://develop.svn.wordpress.org/trunk@62563 602fd350-edb4-49c9-b593-d223f7449a82 --- .../html-api/class-wp-html-processor.php | 68 ++++++++++++------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/src/wp-includes/html-api/class-wp-html-processor.php b/src/wp-includes/html-api/class-wp-html-processor.php index 1828123ff879d..10f3ee3e2dd0f 100644 --- a/src/wp-includes/html-api/class-wp-html-processor.php +++ b/src/wp-includes/html-api/class-wp-html-processor.php @@ -3257,38 +3257,60 @@ private function step_in_body(): bool { /* * > Any other end tag */ + return $this->in_body_any_other_end_tag(); + } - /* - * Find the corresponding tag opener in the stack of open elements, if - * it exists before reaching a special element, which provides a kind - * of boundary in the stack. For example, a `</custom-tag>` should not - * close anything beyond its containing `P` or `DIV` element. - */ - foreach ( $this->state->stack_of_open_elements->walk_up() as $node ) { - if ( 'html' === $node->namespace && $token_name === $node->node_name ) { - break; - } + $this->bail( 'Should not have been able to reach end of IN BODY processing. Check HTML API code.' ); + // This unnecessary return prevents tools from inaccurately reporting type errors. + return false; + } - if ( self::is_special( $node ) ) { - // This is a parse error, ignore the token. - return $this->step(); - } + /** + * Applies the "any other end tag" parsing instructions for the IN BODY insertion mode. + * + * @since 7.1.0 + * @ignore + * + * @throws WP_HTML_Unsupported_Exception When encountering unsupported HTML input. + * + * @see https://html.spec.whatwg.org/#parsing-main-inbody + * @see WP_HTML_Processor::step_in_body + * + * @return bool Whether an element was found. + */ + private function in_body_any_other_end_tag(): bool { + $token_name = $this->get_token_name(); + + /* + * Find the corresponding tag opener in the stack of open elements, if + * it exists before reaching a special element, which provides a kind + * of boundary in the stack. For example, a `</custom-tag>` should not + * close anything beyond its containing `P` or `DIV` element. + */ + foreach ( $this->state->stack_of_open_elements->walk_up() as $node ) { + if ( 'html' === $node->namespace && $token_name === $node->node_name ) { + break; } - $this->generate_implied_end_tags( $token_name ); - if ( $node !== $this->state->stack_of_open_elements->current_node() ) { - // @todo Record parse error: this error doesn't impact parsing. + if ( self::is_special( $node ) ) { + // This is a parse error, ignore the token. + return $this->step(); } + } - foreach ( $this->state->stack_of_open_elements->walk_up() as $item ) { - $this->state->stack_of_open_elements->pop(); - if ( $node === $item ) { - return true; - } + $this->generate_implied_end_tags( $token_name ); + if ( $node !== $this->state->stack_of_open_elements->current_node() ) { + // @todo Record parse error: this error doesn't impact parsing. + } + + foreach ( $this->state->stack_of_open_elements->walk_up() as $item ) { + $this->state->stack_of_open_elements->pop(); + if ( $node === $item ) { + return true; } } - $this->bail( 'Should not have been able to reach end of IN BODY processing. Check HTML API code.' ); + $this->bail( 'Should not have been able to reach end of "any other end tag" IN BODY processing. Check HTML API code.' ); // This unnecessary return prevents tools from inaccurately reporting type errors. return false; } From 260fcbea3475459052c3ed3338c880a4d365ff5f Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Thu, 25 Jun 2026 19:43:05 +0000 Subject: [PATCH 256/327] Code Modernization: Use `array_any()` in `WP_REST_Comments_Controller`. This commit replaces a `foreach` loop in `::check_post_type_supports_notes()` that iterates the editor supports, returns `true` as soon as an element has non-empty notes, and otherwise falls through to `false`. That is exactly what PHP 8.4's `array_any()` expresses in a single, more readable call. WordPress core includes a polyfill for `array_any()` on PHP < 8.4 as of WordPress 6.8, so the change works on every supported PHP version without raising the minimum requirement. Follow-up to [59783], [62550], [62553]. Props Soean. See #65519. git-svn-id: https://develop.svn.wordpress.org/trunk@62564 602fd350-edb4-49c9-b593-d223f7449a82 --- .../endpoints/class-wp-rest-comments-controller.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php index f462928847c77..d14aefb1f6308 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php @@ -2049,17 +2049,15 @@ protected function check_is_comment_content_allowed( $prepared_comment ) { */ private function check_post_type_supports_notes( $post_type ) { $supports = get_all_post_type_supports( $post_type ); + if ( ! isset( $supports['editor'] ) ) { return false; } + if ( ! is_array( $supports['editor'] ) ) { return false; } - foreach ( $supports['editor'] as $item ) { - if ( ! empty( $item['notes'] ) ) { - return true; - } - } - return false; + + return array_any( $supports['editor'], fn( $item ) => ! empty( $item['notes'] ) ); } } From 752d544e9ab7bb5bd9948203dc65a2f97bc43015 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Fri, 26 Jun 2026 22:49:12 +0000 Subject: [PATCH 257/327] Docs: Correct `$format` default in `get_next_post_link()` and `next_post_link()`. Follow-up to [37254]. Props ishihara-takashi, sabernhardt, khokansardar, mindctrl, SergeyBiryukov. Fixes #65541. git-svn-id: https://develop.svn.wordpress.org/trunk@62565 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/link-template.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/link-template.php b/src/wp-includes/link-template.php index cfff8b6525e10..223d6b5548fc6 100644 --- a/src/wp-includes/link-template.php +++ b/src/wp-includes/link-template.php @@ -2291,7 +2291,7 @@ function previous_post_link( $format = '« %link', $link = '%title', $in_sa * * @since 3.7.0 * - * @param string $format Optional. Link anchor format. Default '« %link'. + * @param string $format Optional. Link anchor format. Default '%link »'. * @param string $link Optional. Link permalink format. Default '%title'. * @param bool $in_same_term Optional. Whether link should be in the same taxonomy term. * Default false. @@ -2311,7 +2311,7 @@ function get_next_post_link( $format = '%link »', $link = '%title', $in_sa * * @see get_next_post_link() * - * @param string $format Optional. Link anchor format. Default '« %link'. + * @param string $format Optional. Link anchor format. Default '%link »'. * @param string $link Optional. Link permalink format. Default '%title'. * @param bool $in_same_term Optional. Whether link should be in the same taxonomy term. * Default false. From 2a5a37e54b1474f24e3f49a9345b22c49ff6e2e4 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sat, 27 Jun 2026 22:17:32 +0000 Subject: [PATCH 258/327] Build/Test Tools: Correct `git pull` command for syncing with upstream. Follow-up to [61202]. Props mkrndmane, mukesh27, khokansardar, dhruvang21, SergeyBiryukov. Fixes #65540. git-svn-id: https://develop.svn.wordpress.org/trunk@62566 602fd350-edb4-49c9-b593-d223f7449a82 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5201a5180c1da..820b54759c907 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ You can get started using the local development environment with these steps: 1. Then clone the forked repository to your computer using `git clone https://github.com/<your-username>/wordpress-develop.git`. 1. Navigate into the directory for the cloned repository using `cd wordpress-develop`. 1. Add the origin repo as an `upstream` remote via `git remote add upstream https://github.com/WordPress/wordpress-develop.git`. -1. Then you can keep your branches up to date via `git pull --ff upstream/trunk`, for example. +1. Then you can keep your branches up to date via `git pull --ff upstream trunk`, for example. Alternatively, if you have the [GitHub CLI](https://cli.github.com/) installed, you can simply run `gh repo fork WordPress/wordpress-develop --clone --remote` ([docs](https://cli.github.com/manual/gh_repo_fork)). This command will: 1. Fork the repository to your account (use the `--org` flag to clone into an organization). From e0e6680d69097e330921898e1747030e7d204f48 Mon Sep 17 00:00:00 2001 From: Joe Dolson <joedolson@git.wordpress.org> Date: Sun, 28 Jun 2026 20:38:14 +0000 Subject: [PATCH 259/327] Administration: Fix selected/active buttons in High Contrast Mode. Follow up to [62467]. Replaces original fix, which turned out to be insufficient. Replaces pseudo-elements with more standard outlines, shifted in scale for visibility. Props sabernhardt, wildworks, apermo, joedolson. Fixes #65153. git-svn-id: https://develop.svn.wordpress.org/trunk@62567 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/css/buttons.css | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/wp-includes/css/buttons.css b/src/wp-includes/css/buttons.css index 09457ce6a4dc5..967970a9ba461 100644 --- a/src/wp-includes/css/buttons.css +++ b/src/wp-includes/css/buttons.css @@ -194,7 +194,8 @@ TABLE OF CONTENTS: color: var(--wp-admin-theme-color-darker-20, #183ad6); border-color: var(--wp-admin-theme-color, #3858e9); box-shadow: inset 0 2px 6px -2px var(--wp-admin-theme-color-darker-20); - position: relative; + outline: 3px solid transparent; + outline-offset: -3px; } .wp-core-ui .button.active:focus { @@ -202,19 +203,7 @@ TABLE OF CONTENTS: color: var(--wp-admin-theme-color-darker-20, #183ad6); border-color: var(--wp-admin-theme-color-darker-20, #183ad6); box-shadow: inset 0 2px 6px -2px var(--wp-admin-theme-color-darker-20), 0 0 0 var(--wp-admin-border-width-focus, 1.5px) var(--wp-admin-theme-color, #3858e9); -} - -/* Only visible in Windows High Contrast mode */ -.wp-core-ui .button.active:before { - content: ""; - display: block; - position: absolute; - width: 100%; - height: 0; - border-top: 3px solid transparent; - bottom: 0; - left: 0; - box-sizing: border-box; + outline-width: 4px; } .wp-core-ui .button[disabled], From 8b36984e643a15ca94a9bffff3f9e92d29ac12e9 Mon Sep 17 00:00:00 2001 From: Joe Dolson <joedolson@git.wordpress.org> Date: Sun, 28 Jun 2026 21:41:22 +0000 Subject: [PATCH 260/327] Administration: Fix cursor on first submenu list item in admin menu. The first submenu item in the collapsed view of the admin menu accepts a click event to navigate, but does not have `cursor: pointer` to indicate that it's interactive. These were removed in [51684], but this specific case (JS activate, menu collapsed, first list item) should remain. Props mazharulrobeen, sumitsingh, sabernhardt, swapnil1010, joedolson. Fixes #65250. git-svn-id: https://develop.svn.wordpress.org/trunk@62568 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/admin-menu.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/wp-admin/css/admin-menu.css b/src/wp-admin/css/admin-menu.css index c4b32ac4b9e87..2b665f583484f 100644 --- a/src/wp-admin/css/admin-menu.css +++ b/src/wp-admin/css/admin-menu.css @@ -417,6 +417,10 @@ ul#adminmenu > li.current > a.current:after { border-color: transparent; } +.js #adminmenu .wp-submenu .wp-submenu-head { + cursor: pointer; +} + #adminmenu li.current, .folded #adminmenu li.wp-menu-open { border: 0 none; From cdf2433e06650ac5d007ccbffbe03c089bd7573a Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sun, 28 Jun 2026 23:21:09 +0000 Subject: [PATCH 261/327] Build/Test Tools: Update GitHub CLI fork command in `README.md`. This resolves an error when running the documented command as of GitHub CLI 2.88.0: {{{ the `--remote` flag is unsupported when a repository argument is provided. }}} Reference: [https://github.com/cli/cli/pull/12375 GitHub CLI: fix: error when --remote flag used with repo argument]. Follow-up to [61202]. Props mkrndmane, khokansardar. Fixes #65542. git-svn-id: https://develop.svn.wordpress.org/trunk@62569 602fd350-edb4-49c9-b593-d223f7449a82 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 820b54759c907..bb6d06c034651 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ You can get started using the local development environment with these steps: 1. Add the origin repo as an `upstream` remote via `git remote add upstream https://github.com/WordPress/wordpress-develop.git`. 1. Then you can keep your branches up to date via `git pull --ff upstream trunk`, for example. -Alternatively, if you have the [GitHub CLI](https://cli.github.com/) installed, you can simply run `gh repo fork WordPress/wordpress-develop --clone --remote` ([docs](https://cli.github.com/manual/gh_repo_fork)). This command will: +Alternatively, if you have the [GitHub CLI](https://cli.github.com/) installed, you can simply run `gh repo fork WordPress/wordpress-develop --clone` ([docs](https://cli.github.com/manual/gh_repo_fork)). This command will: 1. Fork the repository to your account (use the `--org` flag to clone into an organization). 1. Clone the repository to your machine. 1. Add `WordPress/wordpress-develop` as `upstream` and set it to the default `remote` repository From f5523819aa419d97a9bade437a7bbe7d685e9505 Mon Sep 17 00:00:00 2001 From: Carlos Bravo <cbravobernal@git.wordpress.org> Date: Mon, 29 Jun 2026 08:34:46 +0000 Subject: [PATCH 262/327] Build Tools: Replace deprecated browserslist --update-db command. Replaces the deprecated `--update-db` command in the `browserslist:update` Grunt task with `update-browserslist-db@latest`. Props ekla, sergeybiryukov, masteradhoc. Fixes #64900. git-svn-id: https://develop.svn.wordpress.org/trunk@62570 602fd350-edb4-49c9-b593-d223f7449a82 --- Gruntfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index dae8c3e972e4c..ab56358b8f60d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2370,7 +2370,7 @@ module.exports = function(grunt) { grunt.registerTask( 'browserslist:update', 'Update the local database of browser supports', function() { grunt.log.writeln( `Updating browsers list` ); - spawn( 'npx', [ 'browserslist@latest', '--update-db' ], { + spawn( 'npx', [ 'update-browserslist-db@latest' ], { cwd: __dirname, stdio: 'inherit', } ); From 0853070fca4911a2ac979befa3d94f0cd1921d9a Mon Sep 17 00:00:00 2001 From: Nik Tsekouras <ntsekouras@git.wordpress.org> Date: Mon, 29 Jun 2026 12:21:10 +0000 Subject: [PATCH 263/327] Editor: Add a `date` field to templates and template parts. Templates and template parts previously exposed only a `modified` date. This adds a `date` property to the `WP_Block_Template` class, populated from the post's publish date (`post_date`), and exposes it as a read-only `date` field through the templates REST API controller. Having the publish date available alongside `modified` simplifies revisions handling for these post types, removing workarounds that previously relied on the `modified` date alone. Props ntsekouras, audrasjb, wildworks, mamaduka. Fixes #65049. git-svn-id: https://develop.svn.wordpress.org/trunk@62571 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-template-utils.php | 3 +++ src/wp-includes/class-wp-block-template.php | 8 ++++++++ .../class-wp-rest-templates-controller.php | 12 ++++++++++++ .../wpRestTemplateAutosavesController.php | 5 +++-- .../wpRestTemplateRevisionsController.php | 5 +++-- .../rest-api/wpRestTemplatesController.php | 17 ++++++++++++++++- 6 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/block-template-utils.php b/src/wp-includes/block-template-utils.php index 7aa8cbf8c241e..bb04f7767c171 100644 --- a/src/wp-includes/block-template-utils.php +++ b/src/wp-includes/block-template-utils.php @@ -595,6 +595,7 @@ function _remove_theme_attribute_from_template_part_block( &$block ) { * * @since 5.9.0 * @since 6.3.0 Added `modified` property to template objects. + * @since 7.1.0 Added `date` property to template objects. * @access private * * @param array $template_file Theme file. @@ -617,6 +618,7 @@ function _build_block_template_result_from_file( $template_file, $template_type $template->has_theme_file = true; $template->is_custom = true; $template->modified = null; + $template->date = null; if ( 'wp_template' === $template_type ) { $registered_template = WP_Block_Templates_Registry::get_instance()->get_by_slug( $template_file['slug'] ); @@ -867,6 +869,7 @@ function _build_block_template_object_from_post_object( $post, $terms = array(), $template->is_custom = empty( $meta['is_wp_suggestion'] ); $template->author = $post->post_author; $template->modified = $post->post_modified; + $template->date = $post->post_date; if ( 'wp_template' === $post->post_type && $has_theme_file && isset( $template_file['postTypes'] ) ) { $template->post_types = $template_file['postTypes']; diff --git a/src/wp-includes/class-wp-block-template.php b/src/wp-includes/class-wp-block-template.php index 822302d4c4d85..532180d05f4c3 100644 --- a/src/wp-includes/class-wp-block-template.php +++ b/src/wp-includes/class-wp-block-template.php @@ -162,4 +162,12 @@ class WP_Block_Template { * @var string|null */ public $modified; + + /** + * Date. + * + * @since 7.1.0 + * @var string|null + */ + public $date; } diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php index e7d6b97934a84..b821ca09453e3 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php @@ -667,6 +667,7 @@ protected function prepare_item_for_database( $request ) { * @since 5.8.0 * @since 5.9.0 Renamed `$template` to `$item` to match parent class for PHP 8 named parameter support. * @since 6.3.0 Added `modified` property to the response. + * @since 7.1.0 Added `date` property to the response. * * @param WP_Block_Template $item Template instance. * @param WP_REST_Request $request Request object. @@ -778,6 +779,10 @@ public function prepare_item_for_response( $item, $request ) { $data['modified'] = mysql_to_rfc3339( $template->modified ); } + if ( rest_is_field_included( 'date', $fields ) ) { + $data['date'] = mysql_to_rfc3339( $template->date ); + } + if ( rest_is_field_included( 'author_text', $fields ) ) { $data['author_text'] = self::get_wp_templates_author_text_field( $template ); } @@ -1172,6 +1177,13 @@ public function get_item_schema() { 'user', ), ), + 'date' => array( + 'description' => __( "The date the template was published, in the site's timezone." ), + 'type' => array( 'string', 'null' ), + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), ), ); diff --git a/tests/phpunit/tests/rest-api/wpRestTemplateAutosavesController.php b/tests/phpunit/tests/rest-api/wpRestTemplateAutosavesController.php index d3cbf91260488..9ea5c5abc5f60 100644 --- a/tests/phpunit/tests/rest-api/wpRestTemplateAutosavesController.php +++ b/tests/phpunit/tests/rest-api/wpRestTemplateAutosavesController.php @@ -682,6 +682,7 @@ public function test_get_item_schema_with_data_provider( $rest_base, $template_i $this->assertArrayHasKey( 'has_theme_file', $properties, 'has_theme_file key should exist in properties.' ); $this->assertArrayHasKey( 'author', $properties, 'author key should exist in properties.' ); $this->assertArrayHasKey( 'modified', $properties, 'modified key should exist in properties.' ); + $this->assertArrayHasKey( 'date', $properties, 'date key should exist in properties.' ); $this->assertArrayHasKey( 'parent', $properties, 'Parent key should exist in properties.' ); $this->assertArrayHasKey( 'author_text', $properties, 'author_text key should exist in properties.' ); $this->assertArrayHasKey( 'original_source', $properties, 'original_source key should exist in properties.' ); @@ -700,13 +701,13 @@ public function data_get_item_schema_with_data_provider() { 'templates' => array( 'templates', self::TEST_THEME . '//' . self::TEMPLATE_NAME, - 19, + 20, array( 'is_custom', 'plugin' ), ), 'template parts' => array( 'template-parts', self::TEST_THEME . '//' . self::TEMPLATE_PART_NAME, - 18, + 19, array( 'area' ), ), ); diff --git a/tests/phpunit/tests/rest-api/wpRestTemplateRevisionsController.php b/tests/phpunit/tests/rest-api/wpRestTemplateRevisionsController.php index e8a18b275e7cd..b5c4c79b00c70 100644 --- a/tests/phpunit/tests/rest-api/wpRestTemplateRevisionsController.php +++ b/tests/phpunit/tests/rest-api/wpRestTemplateRevisionsController.php @@ -928,6 +928,7 @@ public function test_get_item_schema_with_data_provider( $rest_base, $template_i $this->assertArrayHasKey( 'has_theme_file', $properties, 'has_theme_file key should exist in properties.' ); $this->assertArrayHasKey( 'author', $properties, 'author key should exist in properties.' ); $this->assertArrayHasKey( 'modified', $properties, 'modified key should exist in properties.' ); + $this->assertArrayHasKey( 'date', $properties, 'date key should exist in properties.' ); $this->assertArrayHasKey( 'parent', $properties, 'Parent key should exist in properties.' ); $this->assertArrayHasKey( 'author_text', $properties, 'author_text key should exist in properties.' ); $this->assertArrayHasKey( 'original_source', $properties, 'original_source key should exist in properties.' ); @@ -947,13 +948,13 @@ public function data_get_item_schema_with_data_provider() { 'templates' => array( 'templates', self::TEST_THEME . '//' . self::TEMPLATE_NAME, - 19, + 20, array( 'is_custom', 'plugin' ), ), 'template parts' => array( 'template-parts', self::TEST_THEME . '//' . self::TEMPLATE_PART_NAME, - 18, + 19, array( 'area' ), ), ); diff --git a/tests/phpunit/tests/rest-api/wpRestTemplatesController.php b/tests/phpunit/tests/rest-api/wpRestTemplatesController.php index 0bbd6b151c6c0..42eed8dfa9c35 100644 --- a/tests/phpunit/tests/rest-api/wpRestTemplatesController.php +++ b/tests/phpunit/tests/rest-api/wpRestTemplatesController.php @@ -168,6 +168,7 @@ public function test_get_items() { 'is_custom' => true, 'author' => 0, 'modified' => mysql_to_rfc3339( self::$template_post->post_modified ), + 'date' => mysql_to_rfc3339( self::$template_post->post_date ), 'author_text' => 'Test Blog', 'original_source' => 'site', ), @@ -247,6 +248,7 @@ public function test_get_items_editor() { 'is_custom' => true, 'author' => 0, 'modified' => mysql_to_rfc3339( self::$template_post->post_modified ), + 'date' => mysql_to_rfc3339( self::$template_post->post_date ), 'author_text' => 'Test Blog', 'original_source' => 'site', ), @@ -304,6 +306,7 @@ public function test_get_item() { 'is_custom' => true, 'author' => 0, 'modified' => mysql_to_rfc3339( self::$template_post->post_modified ), + 'date' => mysql_to_rfc3339( self::$template_post->post_date ), 'author_text' => 'Test Blog', 'original_source' => 'site', ), @@ -355,6 +358,7 @@ public function test_get_item_editor() { 'is_custom' => true, 'author' => 0, 'modified' => mysql_to_rfc3339( self::$template_post->post_modified ), + 'date' => mysql_to_rfc3339( self::$template_post->post_date ), 'author_text' => 'Test Blog', 'original_source' => 'site', ), @@ -404,6 +408,7 @@ public function test_get_item_works_with_a_single_slash( $endpoint_url ) { 'is_custom' => true, 'author' => 0, 'modified' => mysql_to_rfc3339( self::$template_post->post_modified ), + 'date' => mysql_to_rfc3339( self::$template_post->post_date ), 'author_text' => 'Test Blog', 'original_source' => 'site', ), @@ -469,6 +474,7 @@ public function test_get_item_with_valid_theme_dirname( $theme_dir, $template, a 'modified' => mysql_to_rfc3339( $post->post_modified ), 'author_text' => $author_name, 'original_source' => 'user', + 'date' => mysql_to_rfc3339( $post->post_date ), ), $data ); @@ -673,6 +679,7 @@ public function test_create_item() { $response = rest_get_server()->dispatch( $request ); $data = $response->get_data(); $modified = get_post( $data['wp_id'] )->post_modified; + $date = get_post( $data['wp_id'] )->post_date; unset( $data['_links'] ); unset( $data['wp_id'] ); @@ -699,6 +706,7 @@ public function test_create_item() { 'is_custom' => true, 'author' => self::$admin_id, 'modified' => mysql_to_rfc3339( $modified ), + 'date' => mysql_to_rfc3339( $date ), 'author_text' => $author_name, 'original_source' => 'user', ), @@ -725,6 +733,7 @@ public function test_create_item_with_numeric_slug() { $response = rest_get_server()->dispatch( $request ); $data = $response->get_data(); $modified = get_post( $data['wp_id'] )->post_modified; + $date = get_post( $data['wp_id'] )->post_date; unset( $data['_links'] ); unset( $data['wp_id'] ); @@ -751,6 +760,7 @@ public function test_create_item_with_numeric_slug() { 'is_custom' => false, 'author' => self::$admin_id, 'modified' => mysql_to_rfc3339( $modified ), + 'date' => mysql_to_rfc3339( $date ), 'author_text' => $author_name, 'original_source' => 'user', ), @@ -781,6 +791,7 @@ public function test_create_item_raw() { $response = rest_get_server()->dispatch( $request ); $data = $response->get_data(); $modified = get_post( $data['wp_id'] )->post_modified; + $date = get_post( $data['wp_id'] )->post_date; unset( $data['_links'] ); unset( $data['wp_id'] ); @@ -807,6 +818,7 @@ public function test_create_item_raw() { 'is_custom' => true, 'author' => self::$admin_id, 'modified' => mysql_to_rfc3339( $modified ), + 'date' => mysql_to_rfc3339( $date ), 'author_text' => $author_name, 'original_source' => 'user', ), @@ -967,7 +979,7 @@ public function test_get_item_schema() { $response = rest_get_server()->dispatch( $request ); $data = $response->get_data(); $properties = $data['schema']['properties']; - $this->assertCount( 18, $properties ); + $this->assertCount( 19, $properties ); $this->assertArrayHasKey( 'id', $properties ); $this->assertArrayHasKey( 'description', $properties ); $this->assertArrayHasKey( 'slug', $properties ); @@ -984,6 +996,7 @@ public function test_get_item_schema() { $this->assertArrayHasKey( 'is_custom', $properties ); $this->assertArrayHasKey( 'author', $properties ); $this->assertArrayHasKey( 'modified', $properties ); + $this->assertArrayHasKey( 'date', $properties ); $this->assertArrayHasKey( 'author_text', $properties ); $this->assertArrayHasKey( 'original_source', $properties ); $this->assertArrayHasKey( 'plugin', $properties ); @@ -1020,7 +1033,9 @@ public function test_create_item_with_is_wp_suggestion( array $body_params, arra $response = rest_get_server()->dispatch( $request ); $data = $response->get_data(); $modified = get_post( $data['wp_id'] )->post_modified; + $date = get_post( $data['wp_id'] )->post_date; $expected['modified'] = mysql_to_rfc3339( $modified ); + $expected['date'] = mysql_to_rfc3339( $date ); $expected['author_text'] = get_user_by( 'id', self::$admin_id )->get( 'display_name' ); $expected['original_source'] = 'user'; From cb14d226fd341f24e351976e93aab7c6561752b0 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Mon, 29 Jun 2026 14:12:06 +0000 Subject: [PATCH 264/327] XML-RPC: Correct argument mismatch in `::_multisite_getUsersBlogs()`. This ensures that `::wp_getUsersBlogs()` receives the valid authentication arguments when called from `::blogger_getUsersBlogs()` via `::_multisite_getUsersBlogs()`. Follow-up to [54468]. Props sainathpoojary, SergeyBiryukov. Fixes #65536. git-svn-id: https://develop.svn.wordpress.org/trunk@62572 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-xmlrpc-server.php | 2 +- .../tests/xmlrpc/blogger/getUsersBlogs.php | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 tests/phpunit/tests/xmlrpc/blogger/getUsersBlogs.php diff --git a/src/wp-includes/class-wp-xmlrpc-server.php b/src/wp-includes/class-wp-xmlrpc-server.php index 8cbf6d977f5a2..1fff1bba65adf 100644 --- a/src/wp-includes/class-wp-xmlrpc-server.php +++ b/src/wp-includes/class-wp-xmlrpc-server.php @@ -4892,7 +4892,7 @@ protected function _multisite_getUsersBlogs( $args ) { $domain = $current_blog->domain; $path = $current_blog->path . 'xmlrpc.php'; - $blogs = $this->wp_getUsersBlogs( $args ); + $blogs = $this->wp_getUsersBlogs( array( $args[1], $args[2] ) ); if ( $blogs instanceof IXR_Error ) { return $blogs; } diff --git a/tests/phpunit/tests/xmlrpc/blogger/getUsersBlogs.php b/tests/phpunit/tests/xmlrpc/blogger/getUsersBlogs.php new file mode 100644 index 0000000000000..5ca31c9da2495 --- /dev/null +++ b/tests/phpunit/tests/xmlrpc/blogger/getUsersBlogs.php @@ -0,0 +1,28 @@ +<?php + +/** + * @group xmlrpc + * @group user + */ +class Tests_XMLRPC_blogger_getUsersBlogs extends WP_XMLRPC_UnitTestCase { + + /** + * @ticket 65536 + * @group ms-required + * @group multisite + */ + public function test_multisite_argument_parsing() { + $subscriber_id = $this->make_user_by_role( 'subscriber' ); + + $result = $this->myxmlrpcserver->blogger_getUsersBlogs( array( 1, 'subscriber', 'subscriber' ) ); + + $this->assertNotIXRError( $result, 'The result should not be an instance of IXR_Error.' ); + $this->assertIsArray( $result, 'The result should be an array.' ); + $this->assertNotEmpty( $result, 'The result should not be empty.' ); + + $blog = $result[0]; + $this->assertArrayHasKey( 'url', $blog, 'The result should include the url field.' ); + $this->assertArrayHasKey( 'blogid', $blog, 'The result should include the blogid field.' ); + $this->assertArrayHasKey( 'blogName', $blog, 'The result should include the blogName field.' ); + } +} From db48dcfc2636fe84c913cadfc5ba1ed94dea21b7 Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Mon, 29 Jun 2026 14:33:42 +0000 Subject: [PATCH 265/327] HTML API: Replace locale-dependent ctype check in HTML decoder. `ctype_alnum()` behaves differently depending on the host system and locale. Replace it with a direct ASCII byte comparison that behaves consistently across environments. Developed in https://github.com/WordPress/wordpress-develop/pull/12286. Props jonsurrell, dmsnell. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62573 602fd350-edb4-49c9-b593-d223f7449a82 --- .../html-api/class-wp-html-decoder.php | 72 +++++--- .../phpunit/tests/html-api/wpHtmlDecoder.php | 158 ++++++++++++++++++ 2 files changed, 207 insertions(+), 23 deletions(-) diff --git a/src/wp-includes/html-api/class-wp-html-decoder.php b/src/wp-includes/html-api/class-wp-html-decoder.php index b6c240bdcff5f..e4634f8fa23ed 100644 --- a/src/wp-includes/html-api/class-wp-html-decoder.php +++ b/src/wp-includes/html-api/class-wp-html-decoder.php @@ -367,34 +367,60 @@ public static function read_character_reference( $context, $text, $at = 0, &$mat $after_name = $name_at + $name_length; - // If the match ended with a semicolon then it should always be decoded. - if ( ';' === $text[ $name_at + $name_length - 1 ] ) { - $match_byte_length = $after_name - $at; - return $replacement; - } - - /* - * At this point though there's a match for an entry in the named - * character reference table but the match doesn't end in `;`. - * It may be allowed if it's followed by something unambiguous. + /** + * For historical reasons, a matched named character reference is left as literal + * text (its decoded replacement is not used) when all of the following hold: + * + * 1. It was matched in attribute context. + * 2. The match does not end in U+003B SEMICOLON (;) — i.e. it is one of the + * legacy forms recognized without a trailing semicolon. + * 3. The next input character is U+003D EQUALS SIGN (=) or an ASCII alphanumeric. + * + * Some illustrative examples follow. Note that both `not` and `not;` appear in the + * named character references list. References start with `&` and typically end with + * `;`, but the legacy forms are recognized without one. + * + * - In _data context_, "¬me" is decoded to "¬me": condition 1 fails (not an + * attribute), so the reference is decoded. + * - In _attribute context_, "¬me" is decoded to "¬me": the longest match is + * "not;", which ends in a semicolon, so condition 2 fails. + * - In _attribute context_, "¬己" is decoded to "¬己": the following character + * "己" is a letter but not an ASCII alphanumeric (nor "="), so condition 3 fails. + * - In _attribute context_, "¬" is decoded to "¬": there is no next input + * character, so condition 3 fails. + * - In _attribute context_, "¬=me" is left as the literal text "¬=me": all + * three conditions hold. + * - In _attribute context_, "¬me" is left as the literal text "¬me": all + * three conditions hold. + * + * Without these special rules, ordinary URL query strings could have surprising + * replacements applied. Consider: + * + * <a href="/?random°ree>=0<=360¬=90"> + * + * The literal attribute value `/?random°ree>=0<=360¬=90` is preserved + * by the special handling. Otherwise, the value would decode to + * `/?random°ree>=0<=360¬=90`, which is unlikely to be the author's intent. + * + * (Authors should not rely on this. Escaping the example as + * `/?random&degree&gt=0&lt=360&not=90` produces the intended + * value regardless of the following character.) + * + * @see https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + * @see https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references */ - $ambiguous_follower = ( - $after_name < $length && - $name_at < $length && - ( - ctype_alnum( $text[ $after_name ] ) || - '=' === $text[ $after_name ] - ) - ); - - // It's non-ambiguous, safe to leave it in. - if ( ! $ambiguous_follower ) { + if ( 'attribute' !== $context || ';' === $text[ $after_name - 1 ] || $after_name >= $length ) { $match_byte_length = $after_name - $at; return $replacement; } - // It's ambiguous, which isn't allowed inside attributes. - if ( 'attribute' === $context ) { + $follower_byte = ord( $text[ $after_name ] ); + if ( + 0x3D === $follower_byte || // EQUALS SIGN + ( $follower_byte >= 0x30 && $follower_byte <= 0x39 ) || // ASCII digits 0-9 + ( $follower_byte >= 0x41 && $follower_byte <= 0x5A ) || // ASCII upper alpha A-Z + ( $follower_byte >= 0x61 && $follower_byte <= 0x7A ) // ASCII lower alpha a-z + ) { return null; } diff --git a/tests/phpunit/tests/html-api/wpHtmlDecoder.php b/tests/phpunit/tests/html-api/wpHtmlDecoder.php index 97954f4eb3e30..158115cdfbf06 100644 --- a/tests/phpunit/tests/html-api/wpHtmlDecoder.php +++ b/tests/phpunit/tests/html-api/wpHtmlDecoder.php @@ -12,6 +12,55 @@ * @coversDefaultClass WP_HTML_Decoder */ class Tests_HtmlApi_WpHtmlDecoder extends WP_UnitTestCase { + /** + * Original LC_CTYPE locale. + * + * @var string|bool + */ + private static $original_lc_ctype = false; + + /** + * Locale where ctype_alnum() classifies high-bit bytes as alphanumeric. + * + * @var string|null + */ + private static ?string $problematic_lc_ctype = null; + + public static function set_up_before_class() { + parent::set_up_before_class(); + + self::$original_lc_ctype = setlocale( LC_CTYPE, 0 ); + + // Find a locale where ctype_alnum() classifies high-bit bytes as alphanumeric. + $locale_candidates = array( + 'C.UTF-8', + 'C.utf8', + 'en_US.UTF-8', + 'en_US.utf8', + 'en_GB.UTF-8', + 'en_GB.utf8', + ); + foreach ( $locale_candidates as $locale ) { + $candidate_locale = setlocale( LC_CTYPE, $locale ); + + if ( false !== $candidate_locale && ctype_alnum( "\xC2" ) ) { + self::$problematic_lc_ctype = $candidate_locale; + break; + } + } + + if ( self::$original_lc_ctype ) { + setlocale( LC_CTYPE, self::$original_lc_ctype ); + } + } + + public function tear_down() { + if ( self::$original_lc_ctype ) { + setlocale( LC_CTYPE, self::$original_lc_ctype ); + } + parent::tear_down(); + } + /** * Ensures proper decoding of edge cases. * @@ -61,6 +110,115 @@ static function ( int $errno, string $errstr ) use ( &$errors ) { $this->assertSame( "&\x00b", $decoded, 'Should have decoded the text without changing it.' ); } + /** + * Ensures semicolonless legacy references decode before non-ASCII UTF-8 bytes in attributes. + * + * @dataProvider data_semicolonless_attribute_behaviors + * + * @ticket 65372 + */ + public function test_semicolonless_legacy_reference_before_multibyte_attribute_follower( string $encoded_attribute_value, string $expected, string $expected_decode, int $expected_byte_length ): void { + if ( null !== self::$problematic_lc_ctype ) { + setlocale( LC_CTYPE, self::$problematic_lc_ctype ); + } + + $this->assertSame( + $expected, + WP_HTML_Decoder::decode_attribute( $encoded_attribute_value ), + 'Failed to decode the full attribute value as expected.' + ); + + $match_byte_length = null; + $this->assertSame( + $expected_decode, + WP_HTML_Decoder::read_character_reference( 'attribute', $encoded_attribute_value, 0, $match_byte_length ), + 'Failed to decode the character reference as expected.' + ); + $this->assertSame( $expected_byte_length, $match_byte_length, 'Failed to produce expected byte length.' ); + } + + /** + * Data provider. + * + * Attribute values encoded with character references including followers that are + * treated as alphanumerics by `ctype_alnum()` on some systems, but should never + * be recognized as ASCII Alphanumerics according to the HTML standards. + * + * @see https://html.spec.whatwg.org/#named-character-reference-state + * + * @return array<array{ + * string, // Encoded attribute value. + * string, // Expected full decode. + * string, // Expected character decode. + * int, // Replaced character reference byte length. + * }> Test cases. + */ + public static function data_semicolonless_attribute_behaviors(): array { + return array( + array( '©¯\_(ツ)_/¯', '©¯\_(ツ)_/¯', '©', 5 ), + array( '¬ಠ_ಠ', '¬ಠ_ಠ', '¬', 4 ), + array( ' £20', "\u{00A0}£20", "\u{00A0}", 5 ), + array( ' 🎉', "\u{00A0}🎉", "\u{00A0}", 5 ), + array( '®™', '®™', '®', 4 ), + ); + } + + /** + * Ensures ambiguous ampersand is recognized with trailing ASCII alphanumerics. + * + * @dataProvider data_semicolonless_attribute_character_reference_no_decode_followers + * + * @ticket 65372 + * + * @param string $raw_attribute Raw attribute value with an ambiguous legacy reference follower. + */ + public function test_ascii_alphanumeric_attribute_follower_is_ambiguous( string $raw_attribute ): void { + $this->assertSame( + $raw_attribute, + WP_HTML_Decoder::decode_attribute( $raw_attribute ), + 'Should not have decoded an ambiguous semicolonless legacy reference.' + ); + + $match_byte_length = 'sentinel'; + $this->assertNull( + WP_HTML_Decoder::read_character_reference( 'attribute', $raw_attribute, 0, $match_byte_length ), + 'Should not have matched an ambiguous semicolonless legacy reference.' + ); + $this->assertSame( 'sentinel', $match_byte_length ); + } + + /** + * Data provider. + * + * HTML character references with followers that trigger the literal flush behavior + * when parsing attribute values. HTML defines this as `=` or an ASCII alphanumeric character. + * + * > An ASCII alphanumeric is an ASCII digit or ASCII alpha. + * > An ASCII alpha is an ASCII upper alpha or ASCII lower alpha. + * + * @see https://html.spec.whatwg.org/#named-character-reference-state + * + * @return Generator<string, array{ string }> Test cases. + */ + public static function data_semicolonless_attribute_character_reference_no_decode_followers(): Generator { + yield "Equals sign follower '='" => array( 'Á=' ); + // > An ASCII digit is a code point in the range U+0030 (0) to U+0039 (9), inclusive. + for ( $i = 0x30; $i <= 0x39; $i++ ) { + $char = chr( $i ); + yield "ASCII digit follower '{$char}'" => array( "Á{$char}" ); + } + // > An ASCII upper alpha is a code point in the range U+0041 (A) to U+005A (Z), inclusive. + for ( $i = 0x41; $i <= 0x5A; $i++ ) { + $char = chr( $i ); + yield "ASCII upper alpha follower '{$char}'" => array( "Á{$char}" ); + } + // > An ASCII lower alpha is a code point in the range U+0061 (a) to U+007A (z), inclusive. + for ( $i = 0x61; $i <= 0x7A; $i++ ) { + $char = chr( $i ); + yield "ASCII lower alpha follower '{$char}'" => array( "Á{$char}" ); + } + } + /** * Ensures proper detection of attribute prefixes ignoring ASCII case. * From 23a6bbf248a826ae213a012e91441c4e29d5f34c Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Mon, 29 Jun 2026 15:06:56 +0000 Subject: [PATCH 266/327] HTML API: Prevent HTML newline normalization on foreign elements. HTML and foreign element normalization differ in some cases. Ensure the HTML-specific newline injection is not applied to foreign elements like `svg:textarea`. Developed in https://github.com/WordPress/wordpress-develop/pull/12322. Follow-up to [61747]. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62574 602fd350-edb4-49c9-b593-d223f7449a82 --- .../html-api/class-wp-html-processor.php | 6 +-- .../html-api/wpHtmlProcessor-serialize.php | 49 ++++++++++++++----- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/src/wp-includes/html-api/class-wp-html-processor.php b/src/wp-includes/html-api/class-wp-html-processor.php index 10f3ee3e2dd0f..5f15da5383f34 100644 --- a/src/wp-includes/html-api/class-wp-html-processor.php +++ b/src/wp-includes/html-api/class-wp-html-processor.php @@ -1468,8 +1468,8 @@ public function serialize_token(): string { /* * The HTML parser strips a leading newline immediately after the start - * tag of TEXTAREA, PRE, and LISTING elements. When serializing, prepend - * a leading newline to ensure the semantic HTML content is preserved. + * tag of TEXTAREA, PRE, and LISTING elements in HTML content. When serializing, + * prepend a leading newline to ensure the semantic HTML content is preserved. * * For example, `<pre>\n\nX</pre>` must not become `<pre>\nX</pre>` because its content * has changed. However, `<pre>X</pre>` and `<pre>\nX</pre>` are _equivalent_. @@ -1488,7 +1488,7 @@ public function serialize_token(): string { * * @see https://html.spec.whatwg.org/multipage/parsing.html */ - if ( 'TEXTAREA' === $tag_name || 'PRE' === $tag_name || 'LISTING' === $tag_name ) { + if ( $in_html && ( 'TEXTAREA' === $tag_name || 'PRE' === $tag_name || 'LISTING' === $tag_name ) ) { $html .= "\n"; } diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php index d9d7d7c13394a..e332ec12a0a91 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessor-serialize.php @@ -463,21 +463,30 @@ public static function data_provider_serialize_doctype() { } /** - * Ensures that leading newlines in PRE, LISTING, and TEXTAREA elements are preserved upon normalization, - * and that normalization is idempotent in these cases. + * Ensures that leading newlines in PRE, LISTING, and TEXTAREA elements are normalized + * according to their parsing namespace, and that normalization is idempotent in these cases. * * @ticket 64607 * * @dataProvider data_provider_normalize_special_leading_newline_cases * * @param string $input HTML input containing leading newlines in PRE, LISTING, or TEXTAREA elements. - * @param string $expected Expected output after normalization, which should preserve leading newlines. + * @param string $expected Expected exact output after normalization. */ public function test_normalize_special_leading_newline_handling( string $input, string $expected ) { $normalized = WP_HTML_Processor::normalize( $input ); - $this->assertEqualHTML( $expected, $normalized ); + + /* + * Byte equality pins normalize()'s serialized form; HTML equality verifies + * semantic equivalence. This distinction matters because HTML parsing ignores + * one leading LF after PRE, LISTING, and TEXTAREA start tags. + */ + $this->assertSame( $expected, $normalized ); + $this->assertEqualHTML( $input, $normalized ); + $normalized_twice = WP_HTML_Processor::normalize( $normalized ); - $this->assertEqualHTML( $expected, $normalized_twice ); + $this->assertSame( $expected, $normalized_twice ); + $this->assertEqualHTML( $normalized, $normalized_twice ); } /** @@ -653,13 +662,13 @@ public static function data_provider_normalized_fuzzer_cases_that_should_be_idem /** * Data provider. * - * @return array[] + * @return array<string, array{string, string}> */ - public static function data_provider_normalize_special_leading_newline_cases() { + public static function data_provider_normalize_special_leading_newline_cases(): array { return array( 'Leading newline in PRE' => array( "<pre>\nline 1\nline 2</pre>", - "<pre>line 1\nline 2</pre>", + "<pre>\nline 1\nline 2</pre>", ), 'Double leading newline in PRE' => array( "<pre>\n\nline 2\nline 3</pre>", @@ -667,7 +676,7 @@ public static function data_provider_normalize_special_leading_newline_cases() { ), 'Multiple text nodes inside PRE' => array( "<pre>\nline 1<!--comment--> still line 1</pre>", - '<pre>line 1<!--comment--> still line 1</pre>', + "<pre>\nline 1<!--comment--> still line 1</pre>", ), 'Multiple text nodes inside PRE with leading newlines' => array( "<pre>\n\nline 2<!--comment--> still line 2</pre>", @@ -675,7 +684,7 @@ public static function data_provider_normalize_special_leading_newline_cases() { ), 'Leading newline in LISTING' => array( "<listing>\nline 1\nline 2</listing>", - "<listing>line 1\nline 2</listing>", + "<listing>\nline 1\nline 2</listing>", ), 'Double leading newline in LISTING' => array( "<listing>\n\nline 2\nline 3</listing>", @@ -683,7 +692,7 @@ public static function data_provider_normalize_special_leading_newline_cases() { ), 'Multiple text nodes inside LISTING' => array( "<listing>\nline 1<!--comment--> still line 1</listing>", - '<listing>line 1<!--comment--> still line 1</listing>', + "<listing>\nline 1<!--comment--> still line 1</listing>", ), 'Multiple text nodes inside LISTING with leading newlines' => array( "<listing>\n\nline 2<!--comment--> still line 2</listing>", @@ -691,12 +700,28 @@ public static function data_provider_normalize_special_leading_newline_cases() { ), 'Leading newline in TEXTAREA' => array( "<textarea>\nline 1\nline 2</textarea>", - "<textarea>line 1\nline 2</textarea>", + "<textarea>\nline 1\nline 2</textarea>", ), 'Double leading newline in TEXTAREA' => array( "<textarea>\n\nline 2\nline 3</textarea>", "<textarea>\n\nline 2\nline 3</textarea>", ), + 'Foreign MathML TEXTAREA does not ignore leading newlines' => array( + '<math><textarea>X</textarea></math>', + '<math><textarea>X</textarea></math>', + ), + 'Foreign MathML TEXTAREA preserves leading newline' => array( + "<math><textarea>\nX</textarea></math>", + "<math><textarea>\nX</textarea></math>", + ), + 'Foreign SVG TEXTAREA does not ignore leading newlines' => array( + '<svg><textarea>X</textarea></svg>', + '<svg><textarea>X</textarea></svg>', + ), + 'Foreign SVG TEXTAREA preserves leading newline' => array( + "<svg><textarea>\nX</textarea></svg>", + "<svg><textarea>\nX</textarea></svg>", + ), ); } } From f149add5b5196da9c23c93bb9fdea6c787b55c21 Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Mon, 29 Jun 2026 17:54:32 +0000 Subject: [PATCH 267/327] HTML API: Respect namespace in open element lookup. Prevent foreign elements from incorrectly satisfying checks for open HTML elements. Developed in https://github.com/WordPress/wordpress-develop/pull/12353. Props jonsurrell, dmsnell. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62575 602fd350-edb4-49c9-b593-d223f7449a82 --- .../html-api/class-wp-html-open-elements.php | 6 +++--- .../tests/html-api/wpHtmlProcessor.php | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/html-api/class-wp-html-open-elements.php b/src/wp-includes/html-api/class-wp-html-open-elements.php index aeee107250895..5c99db6d5eb4e 100644 --- a/src/wp-includes/html-api/class-wp-html-open-elements.php +++ b/src/wp-includes/html-api/class-wp-html-open-elements.php @@ -128,16 +128,16 @@ public function at( int $nth ): ?WP_HTML_Token { } /** - * Reports if a node of a given name is in the stack of open elements. + * Reports if an HTML element of a given name is on the stack of open elements. * * @since 6.7.0 * - * @param string $node_name Name of node for which to check. + * @param string $node_name Name of HTML element for which to check. * @return bool Whether a node of the given name is in the stack of open elements. */ public function contains( string $node_name ): bool { foreach ( $this->walk_up() as $item ) { - if ( $node_name === $item->node_name ) { + if ( 'html' === $item->namespace && $node_name === $item->node_name ) { return true; } } diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessor.php b/tests/phpunit/tests/html-api/wpHtmlProcessor.php index bb18629563493..1e1ca7f6f8c39 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessor.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessor.php @@ -642,6 +642,26 @@ public function test_template_tag_closes_html_template_element() { $this->assertSame( array( 'HTML', 'BODY', 'DIV' ), $processor->get_breadcrumbs() ); } + /** + * Ensures foreign TEMPLATE elements do not satisfy HTML template handling. + * + * @ticket 65372 + */ + public function test_unmatched_template_closer_after_mathml_template_is_ignored() { + $processor = WP_HTML_Processor::create_fragment( '<math><template><mi><c></template>here' ); + + $this->assertTrue( $processor->next_tag( 'C' ), 'Failed to find C tag.' ); + $this->assertTrue( $processor->next_token(), 'Failed to advance past the C tag.' ); + + // Closing HTML </template> tag should be ignored, advancing to "here" text without modifying breadcrumbs. + $this->assertSame( '#text', $processor->get_token_type(), 'Failed to reach text node.' ); + $this->assertSame( 'here', $processor->get_modifiable_text() ); + $this->assertSame( + array( 'HTML', 'BODY', 'MATH', 'TEMPLATE', 'MI', 'C', '#text' ), + $processor->get_breadcrumbs(), + ); + } + /** * Ensures that the tag processor is case sensitive when removing CSS classes in no-quirks mode. * From 8071b4a9e668e423e6bd3989efb7e73d4902cb3c Mon Sep 17 00:00:00 2001 From: Dennis Snell <dmsnell@git.wordpress.org> Date: Mon, 29 Jun 2026 18:00:26 +0000 Subject: [PATCH 268/327] Compat: Fix mb_substr() polyfill for out-of-range offsets. The delegation to `substr()` in the `_mb_substr()` polyfill left some results returning `false` on PHP < 8.0, but `mb_substr()` always returns an empty string in these cases. This patch updates the behavior to match `mb_substr()`. Some issues were not detected due to duplicate test names that appeared in the [60969] refactor. These have been corrected as part of this patch. Developed in: https://github.com/WordPress/wordpress-develop/pull/12302 Discussed in: https://core.trac.wordpress.org/ticket/64894 Follow-up to [60969]. Props dmsnell, soean. See #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62576 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/compat.php | 9 ++++++++- tests/phpunit/tests/compat/mbSubstr.php | 24 ++++++++++++------------ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/wp-includes/compat.php b/src/wp-includes/compat.php index 3387b1d85c935..7b1ff5eb3f6a9 100644 --- a/src/wp-includes/compat.php +++ b/src/wp-includes/compat.php @@ -298,7 +298,14 @@ function _mb_substr( $str, $start, $length = null, $encoding = null ) { // The solution below works only for UTF-8; treat all other encodings as byte streams. if ( ! _is_utf8_charset( $encoding ?? get_option( 'blog_charset' ) ) ) { - return is_null( $length ) ? substr( $str, $start ) : substr( $str, $start, $length ); + $result = is_null( $length ) ? substr( $str, $start ) : substr( $str, $start, $length ); + + /* + * For an out-of-range start, substr() returns false on PHP < 8.0 but an + * empty string on PHP >= 8.0. mb_substr() always returns an empty string, + * so normalize to match its behavior across all supported PHP versions. + */ + return false === $result ? '' : $result; } $total_length = ( $start < 0 || $length < 0 ) diff --git a/tests/phpunit/tests/compat/mbSubstr.php b/tests/phpunit/tests/compat/mbSubstr.php index 8e64716c0aca6..5cc4b3d6778a7 100644 --- a/tests/phpunit/tests/compat/mbSubstr.php +++ b/tests/phpunit/tests/compat/mbSubstr.php @@ -46,18 +46,18 @@ public function test_8bit_mb_substr( $input_string, $start, $length ) { */ public function data_utf8_substrings() { return array( - 'баба' => array( 'баба', 0, 3 ), - 'баба' => array( 'баба', 0, -1 ), - 'баба' => array( 'баба', 1, null ), - 'баба' => array( 'баба', -3, null ), - 'баба' => array( 'баба', -3, 2 ), - 'баба' => array( 'баба', -2, 1 ), - 'баба' => array( 'баба', 30, 1 ), - 'баба' => array( 'баба', 15, -30 ), - 'баба' => array( 'баба', -5, -5 ), - 'баба' => array( 'баба', 5, -3 ), - 'баба' => array( 'баба', -3, 5 ), - 'I am your баба' => array( 'I am your баба', 0, 11 ), + 'positive start, positive length' => array( 'баба', 0, 3 ), + 'positive start, negative length' => array( 'баба', 0, -1 ), + 'positive start, null length' => array( 'баба', 1, null ), + 'negative start, null length' => array( 'баба', -3, null ), + 'negative start, positive length' => array( 'баба', -3, 2 ), + 'negative start near end, positive length' => array( 'баба', -2, 1 ), + 'start beyond length, positive length' => array( 'баба', 30, 1 ), + 'start beyond length, large negative length' => array( 'баба', 15, -30 ), + 'negative start beyond start, negative length' => array( 'баба', -5, -5 ), + 'start beyond length, negative length' => array( 'баба', 5, -3 ), + 'negative start, length beyond end' => array( 'баба', -3, 5 ), + 'multibyte character in longer string' => array( 'I am your баба', 0, 11 ), ); } From 669e710bef77263c13ca4e5914a88b8c62d6dca7 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 30 Jun 2026 00:02:24 +0000 Subject: [PATCH 269/327] General: Bump the pinned hash for Gutenberg to `v22.8.0`. This updates the pinned commit hash of the Gutenberg repository from `a2a354cf35e5b69c3330d6c1cfd42d8dc2efb9fd` to `3166ad3c587b4091f77b0e16affeed5762e193f1` (version `22.8.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/a2a354cf35e5b69c3330d6c1cfd42d8dc2efb9fd..v22.8.0. The following commits are included: - Add useBlocker to private APIs for enhanced routing control (https://github.com/WordPress/gutenberg/pull/75687) - Add components team as codeowners for components package (https://github.com/WordPress/gutenberg/pull/75641) - DataForm: Fix focus loss and refactor Card layout (https://github.com/WordPress/gutenberg/pull/75689) - Remove IS_GUTENBERG_PLUGIN checks for collaborative editing (https://github.com/WordPress/gutenberg/pull/75699) - RTC: Add cap check for single taxonomy term entities (https://github.com/WordPress/gutenberg/pull/75708) - Only show dot divider for parent selector in top toolbar (https://github.com/WordPress/gutenberg/pull/75710) - Re-enable Font Library e2e tests (https://github.com/WordPress/gutenberg/pull/75712) - Fix flaky Quick Edit e2e test (https://github.com/WordPress/gutenberg/pull/75714) - Post Navigation Link : Migrate to Text-Align Block Support (https://github.com/WordPress/gutenberg/pull/75557) - Add phpMyAdmin support to wp-env Playground runtime (https://github.com/WordPress/gutenberg/pull/75532) - wp-env: Enable pretty permalinks by default in Docker runtime (https://github.com/WordPress/gutenberg/pull/75688) - DataViews: fix spacing for title in patterns page (https://github.com/WordPress/gutenberg/pull/75693) - MediaEdit: Auto-fill columns based on minimum item width (https://github.com/WordPress/gutenberg/pull/75509) - Add Field and Fieldset details tests (https://github.com/WordPress/gutenberg/pull/75696) - UI: Update `@base-ui/react` from 1.0.0 to 1.2.0 (https://github.com/WordPress/gutenberg/pull/75698) - Theme: Add design token for interactive non-link elements (https://github.com/WordPress/gutenberg/pull/75697) - Media: Graduate client-side media processing from experimental (https://github.com/WordPress/gutenberg/pull/75112) - Remove experimental property from Icon block (https://github.com/WordPress/gutenberg/pull/75742) - Real-time collab editing: Fix undo E2E test (https://github.com/WordPress/gutenberg/pull/75740) - Snackbar: Fix scaling issue with snackbars that update their content via a common id (https://github.com/WordPress/gutenberg/pull/75709) - Vips and worker-threads packages: remove private flag so that packages can be published to npm (https://github.com/WordPress/gutenberg/pull/75752) - Update wordpress/vips in root package.json to use a relative path (https://github.com/WordPress/gutenberg/pull/75758) - Fix change-detection and new-post E2E tests after RTC enabled by default (https://github.com/WordPress/gutenberg/pull/75751) - Try fix failing patterns e2e test (https://github.com/WordPress/gutenberg/pull/75759) - Client-side media processing: Disable in Gutenberg just for now (https://github.com/WordPress/gutenberg/pull/75756) - Skip cross origin isolation e2e tests (https://github.com/WordPress/gutenberg/pull/75764) - Post featured image: Simplify background class assignment. (https://github.com/WordPress/gutenberg/pull/75745) - Block Editor: Avoid block removal when calling 'moveBlockToPosition' (https://github.com/WordPress/gutenberg/pull/75728) - Icon: Improve parameter documentation (https://github.com/WordPress/gutenberg/pull/75768) - Query: Remove content role from block (https://github.com/WordPress/gutenberg/pull/75760) - DataViews: Adjust column spacing in `table` layout when no titleField is provided (https://github.com/WordPress/gutenberg/pull/75410) - IconButton: Hide tooltip when truly disabled (https://github.com/WordPress/gutenberg/pull/75754) - `ToggleGroupControl`: Make unselected item color consistent across all variants (https://github.com/WordPress/gutenberg/pull/75737) - Center navigation preview content in preview pane (https://github.com/WordPress/gutenberg/pull/75741) - Real-time collaboration: Fix comment syncing on site editor (https://github.com/WordPress/gutenberg/pull/75746) - Navigation Overlay Close: Set Close as default text, rather than using a placeholder (https://github.com/WordPress/gutenberg/pull/75692) - Components: Refactor ColorPicker to preserve hue/saturation at achromatic colors (https://github.com/WordPress/gutenberg/pull/75493) - Icon-block: fix global-styles selectors (https://github.com/WordPress/gutenberg/pull/75724) - Revert "Try fix failing patterns e2e test (https://github.com/WordPress/gutenberg/pull/75759)" (https://github.com/WordPress/gutenberg/pull/75771) - Theme: Add design token fallback generation (https://github.com/WordPress/gutenberg/pull/75586) - Core Data: Create icons entity (https://github.com/WordPress/gutenberg/pull/75773) - Workflows: Use pull_request_target for cherry-pick workflow (https://github.com/WordPress/gutenberg/pull/75775) - Revert "CI: Use http-get in Storybook check wait-on" (https://github.com/WordPress/gutenberg/pull/75781) - REST API: Make filter_wp_unique_filename() static to match core, plus avoid duplicate routes (https://github.com/WordPress/gutenberg/pull/75782) - Tabs: Remove custom state styling (https://github.com/WordPress/gutenberg/pull/75731) - Sort registry files by handle/ID. (https://github.com/WordPress/gutenberg/pull/75755) - Real-time Collaboration: Bug fix for CRDT user selection and add tests (https://github.com/WordPress/gutenberg/pull/75075) - Post Title : Migrate to Text-Align Block Support (https://github.com/WordPress/gutenberg/pull/75629) - Query Title: Migrate to Text-Align Block Support (https://github.com/WordPress/gutenberg/pull/75802) - Pattern Editing: Fix nested patterns/sections (https://github.com/WordPress/gutenberg/pull/75772) - Add core/icon block to theme.json schema (https://github.com/WordPress/gutenberg/pull/75813) - Changelog: Curate entries for GB 22.6.0 RC1 (https://github.com/WordPress/gutenberg/pull/75738) - QuickEdit: rename status label and remove extra labels in popup (https://github.com/WordPress/gutenberg/pull/75824) - BlockListBlock: fix crash when selectedProps are null (https://github.com/WordPress/gutenberg/pull/75826) - RTC: Updates from backport PR (https://github.com/WordPress/gutenberg/pull/75711) - Merge document meta into state map (https://github.com/WordPress/gutenberg/pull/75830) - NumberControl: merge two state reducers into one (https://github.com/WordPress/gutenberg/pull/75822) - Real-time collaboration: Remove block client IDs from Awareness, fix "Show Template" view (https://github.com/WordPress/gutenberg/pull/75590) - RTC: Fix entity save call / initial persistence. (https://github.com/WordPress/gutenberg/pull/75841) - Fix block editing modes not recomputing when isolated editor value changes (https://github.com/WordPress/gutenberg/pull/75821) - DataViews: Fix search input losing characters during debounce when externally synced (https://github.com/WordPress/gutenberg/pull/75810) - Synced patterns: Fix block editing mode of synced pattern content when nested in an unsynced pattern (https://github.com/WordPress/gutenberg/pull/75818) - Add wp_ prefix to real time collaberation option. (https://github.com/WordPress/gutenberg/pull/75837) - Block Support: Fix custom CSS not saved when style schema is not defined (https://github.com/WordPress/gutenberg/pull/75797) - Site Tagline : Migrate to Text-Align Block Support (https://github.com/WordPress/gutenberg/pull/75690) - Site Title : Migrate to Text-Align Block Support (https://github.com/WordPress/gutenberg/pull/75551) - Try enabling style variation transforms for blocks in contentOnly mode (https://github.com/WordPress/gutenberg/pull/75761) - Fix error when undoing newly added pattern (https://github.com/WordPress/gutenberg/pull/75850) - Block Editor: Invalid block selected style (https://github.com/WordPress/gutenberg/pull/75796) - Add e2e test for sorting patterns (https://github.com/WordPress/gutenberg/pull/75823) - Gallery: Fixes keyboard focus escaping the lightbox overlay when navigating a gallery with Tab/Shift+Tab. (https://github.com/WordPress/gutenberg/pull/75852) - wp-build: Do not remove Core's default script modules registration (https://github.com/WordPress/gutenberg/pull/75705) - Fix: Suppress spinner output when using --json flag in wp-env (https://github.com/WordPress/gutenberg/pull/75743) - Docs: Fix incorrect use of wp_interactivity_state in getServerState example (https://github.com/WordPress/gutenberg/pull/75857) - Env: Improve help screen (https://github.com/WordPress/gutenberg/pull/75783) - iAPI Docs: Introduce reactive vs non-reactive distinction early in the state/context guide (https://github.com/WordPress/gutenberg/pull/75357) - Fix client-side media file naming (https://github.com/WordPress/gutenberg/pull/75817) - Plugin: Include Icons assets in ZIP (https://github.com/WordPress/gutenberg/pull/75866) - Prevent CSS modules in build from breaking Jest tests (https://github.com/WordPress/gutenberg/pull/75792) - Bump the github-actions group across 2 directories with 7 updates (https://github.com/WordPress/gutenberg/pull/75725) - Re-enable client-side media processing (https://github.com/WordPress/gutenberg/pull/75848) - RTC: Fix undefined array_first() call in sync storage (https://github.com/WordPress/gutenberg/pull/75869) - Real-time collaboration: Improve collaboration within the same rich text (https://github.com/WordPress/gutenberg/pull/75703) - Media Thumbnail Field: Optimise image loading (https://github.com/WordPress/gutenberg/pull/75811) - Grid block: Improve Visualizer responsiveness (https://github.com/WordPress/gutenberg/pull/75820) - Custom CSS: Allow defining custom selector for this global styles feature (https://github.com/WordPress/gutenberg/pull/75799) - Fix DataForm card summary vertical alignment (https://github.com/WordPress/gutenberg/pull/75864) - Update README for DataViews, DataForm, Field API (https://github.com/WordPress/gutenberg/pull/75881) - Client Side Media: Add device/browser capability detection (https://github.com/WordPress/gutenberg/pull/75863) - Navigation editing: simplify edit/view buttons (https://github.com/WordPress/gutenberg/pull/75819) - DataViews: Remove menu divider again. (https://github.com/WordPress/gutenberg/pull/75893) - Page List Item: Replace RawHTML with dangerouslySetInnerHTML for label and title (https://github.com/WordPress/gutenberg/pull/75890) - Theme: Add build plugins to inject design token fallbacks (https://github.com/WordPress/gutenberg/pull/75589) - Cover block: Add e2e test coverage for bugfixes (https://github.com/WordPress/gutenberg/pull/75483) - Fix flaky template-revert e2e tests (https://github.com/WordPress/gutenberg/pull/75894) - Accordion: Remove Down Arrow, Up Arrow, Home, End naviagtion (https://github.com/WordPress/gutenberg/pull/75891) - Dialog: Add legacy z-index compatibility (https://github.com/WordPress/gutenberg/pull/75874) - Cover: Replace strpos() with str_contains() for improved readability (https://github.com/WordPress/gutenberg/pull/75907) - Block editor: Force LTR direction in block HTML editing mode (https://github.com/WordPress/gutenberg/pull/75904) - Navigation overlay: Prevent duplicate area registration (https://github.com/WordPress/gutenberg/pull/75906) - RichText: useAnchor: Fix TypeError in virtual element (https://github.com/WordPress/gutenberg/pull/75900) - Navigation: Extract NavigationLinkUI and NavigationListViewHeader into separate files (https://github.com/WordPress/gutenberg/pull/75865) - DataViews: minimize padding for primary action buttons (https://github.com/WordPress/gutenberg/pull/75721) - DataForm: fix label colors (https://github.com/WordPress/gutenberg/pull/75730) - ESLint: Add `no-ds-tokens` rule (https://github.com/WordPress/gutenberg/pull/75872) - Theme: Remove global stylesheet (https://github.com/WordPress/gutenberg/pull/75879) - Automated Testing: Merge reports into HTML artifact (https://github.com/WordPress/gutenberg/pull/75633) - wp-build: Deregister script modules before re-registering (https://github.com/WordPress/gutenberg/pull/75909) - Move WordPress meta key from sync package to core-data (https://github.com/WordPress/gutenberg/pull/75846) - Real-time collaboration: Remove ghost awareness state explicitly when refreshing (https://github.com/WordPress/gutenberg/pull/75883) - Bugfix: Fix casing of getPersistedCRDTDoc (https://github.com/WordPress/gutenberg/pull/75922) - Add: Connectors screen (https://github.com/WordPress/gutenberg/pull/75833) - Real-time collaboration: Expand mergeCrdtBlocks() automated testing (https://github.com/WordPress/gutenberg/pull/75923) - Add previews for style variation transforms (https://github.com/WordPress/gutenberg/pull/75889) - Convert focus on mount hook to TypeScript (https://github.com/WordPress/gutenberg/pull/75442) - Add debug logging to SyncManager (https://github.com/WordPress/gutenberg/pull/75924) - Show transform dropdown previews on focus as well as hover (https://github.com/WordPress/gutenberg/pull/75940) - Custom CSS: Prevent duplicate custom css styles (https://github.com/WordPress/gutenberg/pull/75892) - Docs: Correct parameter name `$content` for query title render function. (https://github.com/WordPress/gutenberg/pull/75945) - DataViews: Avoid flickering while refreshing (https://github.com/WordPress/gutenberg/pull/74572) - Connectors: Add `_ai_` prefix to connector setting names and fix naming inconsistencies (https://github.com/WordPress/gutenberg/pull/75948) - Connectors: Unhook Core callbacks in Gutenberg coexistence (https://github.com/WordPress/gutenberg/pull/75935) - Editor: Remove View dropdown and pinned items from revisions header (https://github.com/WordPress/gutenberg/pull/75951) - Unsynced patterns: Rename 'Disconnect pattern' to 'Detach pattern' in context menu (https://github.com/WordPress/gutenberg/pull/75807) - ui guidelines: add custom properties and disabled state guidance (https://github.com/WordPress/gutenberg/pull/75912) - Fix: Template revisions infinite spinner (https://github.com/WordPress/gutenberg/pull/75953) - Docs: Fix broken link to `autoRegister` block-supports (https://github.com/WordPress/gutenberg/pull/75956) - Add documentation for contentRole and listView block supports (https://github.com/WordPress/gutenberg/pull/75903) - Build: Clean top-level build/ directory during clean:packages (https://github.com/WordPress/gutenberg/pull/75961) - Interactivity Router: fix back and forward navigation after refresh (https://github.com/WordPress/gutenberg/pull/75927) - ESLint: Add no-i18n-in-save rule (https://github.com/WordPress/gutenberg/pull/75617) - Components: Specify line-height to avoid inheriting default values (https://github.com/WordPress/gutenberg/pull/75880) - Real-time collaboration: Fix disconnect dialog on navigate (https://github.com/WordPress/gutenberg/pull/75886) - Navigation: Remove internal 'useNavigationEntities' hook (https://github.com/WordPress/gutenberg/pull/75943) - Directly inject styles in overlay to make styles stay consistently mounted (https://github.com/WordPress/gutenberg/pull/75700) - Real Time Collab: Throttle syncing for inactive tabs. (https://github.com/WordPress/gutenberg/pull/75843) - Content Guidelines: Add experimental REST API and custom post type (https://github.com/WordPress/gutenberg/pull/75164) - Core Data: Simplify actions dispatched by 'canUser' resolver (https://github.com/WordPress/gutenberg/pull/75974) - Pattern Editing: Fix sibling blocks to edited pattern not being disabled (https://github.com/WordPress/gutenberg/pull/75994) - Sync connector PHP behavior with Core backport changes (https://github.com/WordPress/gutenberg/pull/75968) - Use the same context for font library tabs translations (https://github.com/WordPress/gutenberg/pull/75930) - Connectors: Avoid manual string concatenation (https://github.com/WordPress/gutenberg/pull/75997) - DataForm: fix field label for panel (should not be uppercase) (https://github.com/WordPress/gutenberg/pull/75944) - Unify block settings dropdown menu items across list views (https://github.com/WordPress/gutenberg/pull/75979) - Views: add support for more overrides (all developer-defined config) (https://github.com/WordPress/gutenberg/pull/75971) - Preserve note selection on browser tab switch (https://github.com/WordPress/gutenberg/pull/75955) - ESLint: Broaden `no-unknown-ds-tokens` to all strings and catch dynamic construction (https://github.com/WordPress/gutenberg/pull/75905) - Use homeUrl instead of siteUrl for link badge evaluations (https://github.com/WordPress/gutenberg/pull/75978) - Block Editor: Display custom block labels in Block Inspector and List View (https://github.com/WordPress/gutenberg/pull/75607) - DataViews: Fix focus transfer while searching in `list` layout (https://github.com/WordPress/gutenberg/pull/75999) - UI: Add Notice component (https://github.com/WordPress/gutenberg/pull/75981) - Playlist Block: Add WaveformPlayer visualization (https://github.com/WordPress/gutenberg/pull/75203) - DataViews: Right-align `integer` and `number` fields (https://github.com/WordPress/gutenberg/pull/75917) - Navigation Link: Compare internal links by host instead of origin (https://github.com/WordPress/gutenberg/pull/76015) - Bump the github-actions group across 2 directories with 3 updates (https://github.com/WordPress/gutenberg/pull/76006) - Block Supports: Define CSS vars for blocks based on feature selectors (https://github.com/WordPress/gutenberg/pull/75226) - Button: Migrate to width block support (https://github.com/WordPress/gutenberg/pull/74242) - Fix: Skip scaled image sideload for images below big image threshold (https://github.com/WordPress/gutenberg/pull/75990) - ToolsPanel: Remove unnecessary label prop from dropdownMenuProps type (https://github.com/WordPress/gutenberg/pull/76027) - Make inspector style transform previews consistent with toolbar transforms (https://github.com/WordPress/gutenberg/pull/75989) - Fix: Set quality and strip metadata in client-side image resize (https://github.com/WordPress/gutenberg/pull/76029) - Search block: double-encodes apostrophes in the input value (https://github.com/WordPress/gutenberg/pull/76023) - Post Title: Add placeholder attribute (https://github.com/WordPress/gutenberg/pull/76016) - wp-env: Add opt-in --auto-port flag for automatic port selection (https://github.com/WordPress/gutenberg/pull/74472) - RichText: useAnchor: Enable type checking, fix errors (https://github.com/WordPress/gutenberg/pull/75910) - DataForm: Fix `card` layout's toggle button screen reader text (https://github.com/WordPress/gutenberg/pull/76039) - [Real-time Collaboration] Fix sync issue on refresh (https://github.com/WordPress/gutenberg/pull/76017) - RTC: Fix syncing of emoji / surrogate pairs (https://github.com/WordPress/gutenberg/pull/76049) - InputLayout: Replace slot context with data attributes (https://github.com/WordPress/gutenberg/pull/76011) - RTC: Fix stale CRDT document persisted on save (https://github.com/WordPress/gutenberg/pull/75975) - Real-time collaboration: Improve disconnect dialog (https://github.com/WordPress/gutenberg/pull/75970) - Media Notices: Bump global snackbar z-index, re-use global notices for media modal (https://github.com/WordPress/gutenberg/pull/76063) - RTC: Prevent duplicate poll cycles (https://github.com/WordPress/gutenberg/pull/76059) - RTC: Disable multiple collaborators if meta boxes are present (https://github.com/WordPress/gutenberg/pull/75939) - DataViews: Fix filter toggle flickering when there are locked or primary filters (https://github.com/WordPress/gutenberg/pull/75913) - Revert global snackbar z-index bump, implement alternative fix for Media Upload Modal notices (https://github.com/WordPress/gutenberg/pull/76067) - DataViews: Improve UI in `list` layout when we render only title and/or media fields (https://github.com/WordPress/gutenberg/pull/76042) - `Button`: Add `word-break: break-word` (https://github.com/WordPress/gutenberg/pull/76071) - DataForm: Fix text overflow for long unhyphenated text in panel layout (https://github.com/WordPress/gutenberg/pull/76073) - Interactivity: Fix incomplete Window.scheduler type causing TS2430 (https://github.com/WordPress/gutenberg/pull/76070) - Connectors: Dynamically register providers from WP AI Client registry (https://github.com/WordPress/gutenberg/pull/76014) - Remove Core's full-page render interceptors for boot-based pages (https://github.com/WordPress/gutenberg/pull/76036) - PHP-only Blocks: Reflect bound attribute values in inspector controls (https://github.com/WordPress/gutenberg/pull/76040) - Admin UI: Fix type mismatch between Page title and NavigableRegion ariaLabel (https://github.com/WordPress/gutenberg/pull/75899) - Remove unused deps: wordpress/dom, wordpress/theme, wordpress/url (https://github.com/WordPress/gutenberg/pull/76075) - RTC: Fix fallthrough for sync update switch statement (https://github.com/WordPress/gutenberg/pull/76060) - Extract inserter-toggle mixin from duplicated button styles (https://github.com/WordPress/gutenberg/pull/76087) - RTC: Add session activity notifications (https://github.com/WordPress/gutenberg/pull/76065) - DateTimePicker: Fix day text wrapping (https://github.com/WordPress/gutenberg/pull/76084) - iAPI Docs: Add client-side navigation guide under "Core Concepts" (https://github.com/WordPress/gutenberg/pull/75263) - Move block css vars selectors backport changelog to correct WP version (https://github.com/WordPress/gutenberg/pull/76102) - Fix writing flow navigation for annotation style, or any other block with border radius (https://github.com/WordPress/gutenberg/pull/76072) - Block toolbar and context menu: hide pattern actions in Revisions UI (https://github.com/WordPress/gutenberg/pull/76066) - Prevent non-reproducible Sass/CSS builds. (https://github.com/WordPress/gutenberg/pull/76098) - Block toolbar: hide styles dropdown in Revisions UI (https://github.com/WordPress/gutenberg/pull/76119) - Image: Hide 'Set as featured image' for in-editor revisions (https://github.com/WordPress/gutenberg/pull/76123) - Image block: fix lightbox srcset size (https://github.com/WordPress/gutenberg/pull/76092) - DataViews: Fix last column classname in `table` layout (https://github.com/WordPress/gutenberg/pull/76133) - Data: Update documentation for global 'dispatch' and 'select' methods (https://github.com/WordPress/gutenberg/pull/76134) - Connectors: Gate unavailable install actions behind install capability (https://github.com/WordPress/gutenberg/pull/75980) - Auto Cherry-Pick: Fix race condition by using pull_request_target closed event (https://github.com/WordPress/gutenberg/pull/76083) - build: Exclude experimental pages from Core builds (https://github.com/WordPress/gutenberg/pull/76038) - Playlist: Move getTrackAttributes to utils (https://github.com/WordPress/gutenberg/pull/76096) - HTML & Shortcode: Disable viewport visibility support (https://github.com/WordPress/gutenberg/pull/76138) - Navigation: Allow creating new links in site editor sidebar List View (https://github.com/WordPress/gutenberg/pull/75918) - DataForm: Consolidate `date` and `datetime` input placement (https://github.com/WordPress/gutenberg/pull/76136) - Remove `! function_exists()` checks from PHP templates (https://github.com/WordPress/gutenberg/pull/76062) - Playlist: Clip content to respect border-radius (https://github.com/WordPress/gutenberg/pull/76146) - Connectors: Update page identifier to options-connectors (https://github.com/WordPress/gutenberg/pull/76142) - RTC: Verify client ID to avoid awareness mutation (https://github.com/WordPress/gutenberg/pull/76056) - Move backport changelog PR for Gutenberg https://github.com/WordPress/gutenberg/pull/75746 to correct matching backport PR (https://github.com/WordPress/gutenberg/pull/76154) - Connectors: Align init hook priorities with Core overrides (https://github.com/WordPress/gutenberg/pull/76161) - Icons: Fix incorrect icon slug (https://github.com/WordPress/gutenberg/pull/76074) - Icon Block: Clean up selectors config (https://github.com/WordPress/gutenberg/pull/75786) - Add support for linting annotations and other static analysis workflow improvements (https://github.com/WordPress/gutenberg/pull/76120) - Bump the github-actions group across 2 directories with 1 update (https://github.com/WordPress/gutenberg/pull/76144) - Image: Replace 'getEntityRecordPermissions` with 'canUser' (https://github.com/WordPress/gutenberg/pull/76125) - RTC: Enable RTC by default (https://github.com/WordPress/gutenberg/pull/75739) - Fix backport changelog for https://github.com/WordPress/gutenberg/pull/76060 (https://github.com/WordPress/gutenberg/pull/76174) - Rename and visibility modals: gate shortcuts behind canEditBlock to prevent triggering in revisions UI (https://github.com/WordPress/gutenberg/pull/76168) - Hide template part replace button when viewing revisions (https://github.com/WordPress/gutenberg/pull/76169) - Fix: Block style variations not rendering in Site Editor Patterns page (https://github.com/WordPress/gutenberg/pull/76122) - Content Guidelines: Add UX for site, copy, image, and internal guidelines (https://github.com/WordPress/gutenberg/pull/75420) - Client-side media processing: only use media upload provider when not in preview mode (https://github.com/WordPress/gutenberg/pull/76124) - Notes: Disable for in-editor revisions (https://github.com/WordPress/gutenberg/pull/76180) - Core Data: Support reading revision data in useEntityProp (fixes footnotes in revisions UI) (https://github.com/WordPress/gutenberg/pull/76106) - Client-side media processing: Try plumbing invalidation to the block-editor's mediaUpload onSuccess callback (https://github.com/WordPress/gutenberg/pull/76173) - Interactivity API: Fix router initialization race condition on Safari/Firefox (https://github.com/WordPress/gutenberg/pull/76053) - Connectors: Improve responsive layout on small screens (https://github.com/WordPress/gutenberg/pull/76186) - Interactivity: Fix crypto.randomUUID crash in non-secure contexts (https://github.com/WordPress/gutenberg/pull/76151) - Duotone: lazily load settings (https://github.com/WordPress/gutenberg/pull/74748) - Media: Use Document-Isolation-Policy for cross-origin isolation on Chromium 137+ (https://github.com/WordPress/gutenberg/pull/75991) - DataForm `datetime` control: fix date handling (https://github.com/WordPress/gutenberg/pull/76193) - Field.Label, Fieldset.Legend: Add `visuallyHidden` prop (https://github.com/WordPress/gutenberg/pull/76052) - Extensible Site Editor: Make canvas previews full height (https://github.com/WordPress/gutenberg/pull/76201) - Storybook: Deduplicate injected package stylesheets (https://github.com/WordPress/gutenberg/pull/76158) - Temp: Disable RTC in the site editor (https://github.com/WordPress/gutenberg/pull/76223) - Obey undoIgnore flag in editEntityRecord (https://github.com/WordPress/gutenberg/pull/76206) - RTC: Fix `post-editor-template-mode` E2E test (https://github.com/WordPress/gutenberg/pull/76209) - Pattern Editing and Block Fields: Highlight selected block (https://github.com/WordPress/gutenberg/pull/74841) - Menu: Fix `RadioItem` controlled checked state (https://github.com/WordPress/gutenberg/pull/76041) - Revert `word-break: break-word` addition (https://github.com/WordPress/gutenberg/pull/76230) - Fix: QuickEdit: consolidate how "Status > Scheduled" works (https://github.com/WordPress/gutenberg/pull/76129) - Add experiment: render the editor inspector with DataForm (https://github.com/WordPress/gutenberg/pull/76244) - Fields: Hide `scheduledDateField` from the list and filters (https://github.com/WordPress/gutenberg/pull/76247) - DataForm: Add customizable button text to panel modal (https://github.com/WordPress/gutenberg/pull/76099) - Components: Add styles for outside days in Calendar components (https://github.com/WordPress/gutenberg/pull/76199) - Add Site Logo & Icon screen to Design panel (https://github.com/WordPress/gutenberg/pull/76116) - Tooltip: Change default placement from bottom to top (https://github.com/WordPress/gutenberg/pull/76131) - `@wordpress/ui`: add `Card` and `CollapsibleCard` components (https://github.com/WordPress/gutenberg/pull/76252) - Refactor admin-ui Page component to use @wordpress/theme tokens and @wordpress/ui layout primitive (https://github.com/WordPress/gutenberg/pull/75963) - RTC: Fix 'networkidle' and other e2e tests that are flaky (https://github.com/WordPress/gutenberg/pull/76214) - Move site editor preview CSS to boot package (https://github.com/WordPress/gutenberg/pull/76211) - Publish built Gutenberg plugin to the GitHub Container Registry (https://github.com/WordPress/gutenberg/pull/75844) - Scripts: Relax @wordpress/env peer dependency to allow newer versions (https://github.com/WordPress/gutenberg/pull/76192) - Connectors: Improve placeholder text and make it translatable (https://github.com/WordPress/gutenberg/pull/75996) - Block context menu: context menu not closing for disconnecting unsynced pattern menu items (https://github.com/WordPress/gutenberg/pull/75405) - UI Notice: let description and actions span icon column at narrow widths (https://github.com/WordPress/gutenberg/pull/76202) - Convert data package fully to TS (https://github.com/WordPress/gutenberg/pull/76149) - RTC updates: use apiFetch capabilities, allow nonce refresh (https://github.com/WordPress/gutenberg/pull/76283) - Interactivity: Make Window.scheduler required to match DOM lib (https://github.com/WordPress/gutenberg/pull/76271) - fix(block-library): use add_filter for filter hook (https://github.com/WordPress/gutenberg/pull/76297) - Add word-break property, update CHANGELOG, and update snapshots (https://github.com/WordPress/gutenberg/pull/75539) - Storybook: Redesign Icon library page (https://github.com/WordPress/gutenberg/pull/76034) - Connectors: Improve responsive layout for small viewports (https://github.com/WordPress/gutenberg/pull/76231) - Compose: Implement useCopyToClipboard and useCopyOnClick with native clipboard API (https://github.com/WordPress/gutenberg/pull/75723) - theme.json schema: fix pseudo-class definition for button block (https://github.com/WordPress/gutenberg/pull/76272) - Sync some post list changes with Extensible Site Editor (https://github.com/WordPress/gutenberg/pull/76243) - Only run label enforcement workflow on open PRs. (https://github.com/WordPress/gutenberg/pull/76274) - API Fetch: Respect caller-provided Content-Type in httpV1 middleware (https://github.com/WordPress/gutenberg/pull/76285) - Raw handling: fix shortcode conversion when separated by <br /> tags (https://github.com/WordPress/gutenberg/pull/76213) - Navigation block: fix submenu chevron toggle on touch devices (https://github.com/WordPress/gutenberg/pull/76197) - Core Data: Fix 'canUser' returning 'undefined' when the allow header is missing (https://github.com/WordPress/gutenberg/pull/76307) - Connectors: Show API key source for env vars and wp-config constants (https://github.com/WordPress/gutenberg/pull/76266) - Update block registration methods in documentation for WordPress 6.8+ (https://github.com/WordPress/gutenberg/pull/76324) - Theme: Document build plugins in README (https://github.com/WordPress/gutenberg/pull/76003) - Block Visibility: Add `fetchpriority=auto` to `IMG` tags in blocks with conditional viewport visibility to prevent potential erroneous high loading priority (https://github.com/WordPress/gutenberg/pull/76302) - Add primitive Text component to @wordpress/ui (https://github.com/WordPress/gutenberg/pull/75870) - Editor: Polish real-time collaboration presence UI and move Avatar to editor package (https://github.com/WordPress/gutenberg/pull/75652) - Navigation: Disable Mobile Menu in Isolated Editor or Site Editor Preview (https://github.com/WordPress/gutenberg/pull/76203) - Connectors: Show API key source for env vars and wp-config constants (https://github.com/WordPress/gutenberg/pull/76266) - Use V2 Yjs methods for HTTP Polling (https://github.com/WordPress/gutenberg/pull/76304) - Ensure consistent, repeatable build results when inlining WASM files via `wasmInlinePlugin` (https://github.com/WordPress/gutenberg/pull/76113) - Account `IS_WORDPRESS_CORE` is set. (https://github.com/WordPress/gutenberg/pull/76334) - Navigation Editor: Allow any blocks to be inserted by gating contentOnly insertion rules to section blocks (https://github.com/WordPress/gutenberg/pull/76189) - Add `fetchpriority=low` to `IMG` tags in collapsed Details blocks (https://github.com/WordPress/gutenberg/pull/76269) - Content Guidelines: Add block guidelines management (https://github.com/WordPress/gutenberg/pull/76187) - Connectors: Add logo URL support for custom AI providers (https://github.com/WordPress/gutenberg/pull/76190) - Fields: Add `format` field (https://github.com/WordPress/gutenberg/pull/76308) - Cover Block: Add a playlist parameter to loop YouTube background videos. (https://github.com/WordPress/gutenberg/pull/76004) - Connectors: Memoize getConnectors selector (https://github.com/WordPress/gutenberg/pull/76339) - HTML Block: Fix broken layout (https://github.com/WordPress/gutenberg/pull/76278) - Tests: Skip connector logo URL tests when AI Client is unavailable (https://github.com/WordPress/gutenberg/pull/76343) - Navigation Overlay: Explicitly set fetchpriority for images (https://github.com/WordPress/gutenberg/pull/76208) - Fields: Add post content information field (https://github.com/WordPress/gutenberg/pull/76309) - Core Data: Treat single-item responses specially (https://github.com/WordPress/gutenberg/pull/76318) - Editor canvas iframe: use load event and default body element (https://github.com/WordPress/gutenberg/pull/76314) - Set placeholder to featured image field (https://github.com/WordPress/gutenberg/pull/76342) - Post Excerpt: Migrate to textAlign block support (https://github.com/WordPress/gutenberg/pull/75860) - Add Client-Side Navigation documentation to manifest and table of contents (https://github.com/WordPress/gutenberg/pull/76351) - Connectors: Move API key validation and masking to REST dispatch level (https://github.com/WordPress/gutenberg/pull/76327) - Connectors: Replace apiFetch with core-data store selectors (https://github.com/WordPress/gutenberg/pull/76333) - DataForm: Reduce `panel`'s dialog `min-width` (https://github.com/WordPress/gutenberg/pull/76345) - Do not sync local attributes (https://github.com/WordPress/gutenberg/pull/76267) - Storybook: Add basic accent color guidance. (https://github.com/WordPress/gutenberg/pull/76340) - Navigation link: add support to style current menu item via theme.json (https://github.com/WordPress/gutenberg/pull/75736) - Add `fetchpriority=low` to `IMG` tags in collapsed Accordion Item blocks (https://github.com/WordPress/gutenberg/pull/76336) - Add `Link` primitive to `@wordpress/ui` (https://github.com/WordPress/gutenberg/pull/76013) - wp-build: Stop bundling Core packages, generate prerequisites asset instead (https://github.com/WordPress/gutenberg/pull/75987) - Implement disconnection debounce after initial connection (https://github.com/WordPress/gutenberg/pull/76114) - DataViews Grid and Picker Grid: Add density option for gap between items (https://github.com/WordPress/gutenberg/pull/75887) - Guidelines: Add actions for Import, Export and Revisions of guidelines (https://github.com/WordPress/gutenberg/pull/76155) - Allow Post Content to be edited when 'Show template' is active and Post content is nested in a Template Part (https://github.com/WordPress/gutenberg/pull/76305) - Correct input of setIsLoading (https://github.com/WordPress/gutenberg/pull/76381) - Fix: Document Bar: Back button flickers (https://github.com/WordPress/gutenberg/pull/76320) - RTC: Move event hooks from editor to core-data (https://github.com/WordPress/gutenberg/pull/76358) - Page Parent: Change the default value of 'fieldValue' state (https://github.com/WordPress/gutenberg/pull/76354) - Core Data: Avoid stale values when in autosave payloads (https://github.com/WordPress/gutenberg/pull/76337) - fix(navigation): prevent right-justified submenu overflow in custom overlays (https://github.com/WordPress/gutenberg/pull/76360) - Core Data: Optimize revision selectors (https://github.com/WordPress/gutenberg/pull/76043) - Fix: Block pseudo-state styles incorrectly applied to default state (https://github.com/WordPress/gutenberg/pull/76326) - Add client-side navigation block with interactive features (https://github.com/WordPress/gutenberg/pull/76331) - Connectors: Add empty state when no connectors are registered (https://github.com/WordPress/gutenberg/pull/76375) - Storybook: Change the default font. (https://github.com/WordPress/gutenberg/pull/76366) - CI: Don't build release notes during plugin build workflow for WP Core sync (https://github.com/WordPress/gutenberg/pull/76398) - Add Router type export to @wordpress/route (https://github.com/WordPress/gutenberg/pull/76139) - Implement state UI for pseudo selectors on Global styles (https://github.com/WordPress/gutenberg/pull/75627) - Storybook: Rename "Components (Deprecated)" to "Deprecated" (https://github.com/WordPress/gutenberg/pull/76362) - Connectors: Add connectors registry for extensibility (https://github.com/WordPress/gutenberg/pull/76364) - Icons API: Support searching in labels; extend classes post-7.0 work (https://github.com/WordPress/gutenberg/pull/75878) - RTC: Add collaborator selection highlighting in rich text (https://github.com/WordPress/gutenberg/pull/76107) - Connectors: Add AI Experiments plugin callout with install/activate functionality (https://github.com/WordPress/gutenberg/pull/76379) - Add [Package] UI label to PR labeler config (https://github.com/WordPress/gutenberg/pull/76411) - Sync changes from `wp_enqueue_global_styles()` to Gutenberg override (https://github.com/WordPress/gutenberg/pull/76127) - [RTC] Fix performance regression on post save (https://github.com/WordPress/gutenberg/pull/76370) - Core Data: Add 'supportsPagination' flag for Font Collection entity (https://github.com/WordPress/gutenberg/pull/76404) - E2E Tests: Fix flaky autocomplete and mentions test (https://github.com/WordPress/gutenberg/pull/76407) - Media: Enable AVIF support for client-side uploads (https://github.com/WordPress/gutenberg/pull/76371) - Add backport changelog entry for https://github.com/WordPress/gutenberg/pull/75878 (https://github.com/WordPress/gutenberg/pull/76426) - Editor: Show own presence in collaborative editing sessions (https://github.com/WordPress/gutenberg/pull/76413) - Connectors: Move plugin status computation to script module data (https://github.com/WordPress/gutenberg/pull/76409) - Navigation: Use the shared icon rendering functions for all navigation blocks (https://github.com/WordPress/gutenberg/pull/76372) - Simplify require statements for navigation files (https://github.com/WordPress/gutenberg/pull/76373) - Revisions: Skip rendered fields in REST API responses (https://github.com/WordPress/gutenberg/pull/76347) - E2E Tests: Add connector setup flow tests with test AI provider (https://github.com/WordPress/gutenberg/pull/76433) - Tabs: Restructure Tabs Menu and inner blocks (https://github.com/WordPress/gutenberg/pull/75954) - RTC: Place sync connection modal in front of popover (https://github.com/WordPress/gutenberg/pull/76431) - DataViews: Add border to sticky table headers (https://github.com/WordPress/gutenberg/pull/76396) - Connectors: Sync PHP code with WordPress Core (https://github.com/WordPress/gutenberg/pull/76443) - Disables anchor support for the Page Break block. (https://github.com/WordPress/gutenberg/pull/76434) - WP Admin: Update Connectors screen footer text for consistency. (https://github.com/WordPress/gutenberg/pull/76382) - Show spinner when replacing media via drag-and-drop in image, cover, and media-text blocks (https://github.com/WordPress/gutenberg/pull/76245) - E2E Tests: Add coverage for AI plugin callout banner on Connectors page (https://github.com/WordPress/gutenberg/pull/76432) - Update sync docs (https://github.com/WordPress/gutenberg/pull/75972) - RTC: Add preference for collaborator notifications (https://github.com/WordPress/gutenberg/pull/76460) - Fix "should undo bold" flaky test (https://github.com/WordPress/gutenberg/pull/76464) - Include AI tools disclosure in PR template (https://github.com/WordPress/gutenberg/pull/76425) - TimePicker: Clamp month day to valid day for month (https://github.com/WordPress/gutenberg/pull/76400) - Add isNavigationPostEditorKey symbol to fix menu display context (https://github.com/WordPress/gutenberg/pull/76461) - Fix: update the playlist-track file permissions from 755 to 644 (https://github.com/WordPress/gutenberg/pull/76315) - Theme_JSON: Prevent implicit coercion in `to_ruleset` (https://github.com/WordPress/gutenberg/pull/76392) - CI: Simplify strategy matrix in Build Gutenberg Plugin Zip workflow (https://github.com/WordPress/gutenberg/pull/76435) - Core Data: Fix selectors returning stale results for different 'per_page' queries (https://github.com/WordPress/gutenberg/pull/76422) - Fields: Add support for classic themes (https://github.com/WordPress/gutenberg/pull/76441) - TemplateContentPanel: fix useSelect warning (https://github.com/WordPress/gutenberg/pull/76421) - Tabs: Disable anchor support on Tab Menu Item (https://github.com/WordPress/gutenberg/pull/76442) - Core Data: Fix the list of properties persisted in autosaves (https://github.com/WordPress/gutenberg/pull/76451) - RTC: Fix error when entity record doesn't have 'meta' property (https://github.com/WordPress/gutenberg/pull/76311) - Navigation: Update close button size. (https://github.com/WordPress/gutenberg/pull/76482) - UI/Badge: Add border and neutral-strong background to `none` intent (https://github.com/WordPress/gutenberg/pull/76356) - Theme package: Add surface width design tokens (https://github.com/WordPress/gutenberg/pull/76047) - DataViews: Add spinner in `DataViewsLayout` in initial load of data (https://github.com/WordPress/gutenberg/pull/76486) - Fix: Rewrite the license check scripts to use Node's native module resolution (https://github.com/WordPress/gutenberg/pull/75039) - ESLint: Add `use-recommended-components` rule (https://github.com/WordPress/gutenberg/pull/76222) - Update Node version to v24 for flaky test reporter (https://github.com/WordPress/gutenberg/pull/76492) - ui/Card: increase padding, align with legacy Card (https://github.com/WordPress/gutenberg/pull/76368) - Docs: document controlled/uncontrolled prop naming conventions for `@wordpress/ui` (https://github.com/WordPress/gutenberg/pull/76281) - @wordpress/ui: add Collapsible component (https://github.com/WordPress/gutenberg/pull/76280) - CollapsibleCard: move trigger to the whole header (https://github.com/WordPress/gutenberg/pull/76265) - Link Picker: Use Homepage badge instead of Page if Homepage (https://github.com/WordPress/gutenberg/pull/75929) - RTC: Fix TypeError in areEditorStatesEqual when selection is undefined (https://github.com/WordPress/gutenberg/pull/76163) - Upgrade actionlint and run linting when composite actions are modified (https://github.com/WordPress/gutenberg/pull/76503) - Revisions: use useSubRegistry={false} to fix global store selectors (https://github.com/WordPress/gutenberg/pull/76152) - wp-env: Update JSON Schema with missing properties and add README docs (https://github.com/WordPress/gutenberg/pull/76115) - Patterns: add confirmation dialog before disconnecting/detaching (https://github.com/WordPress/gutenberg/pull/75713) - Page/Post Content Focus Mode: Fix insertion into Post Content block (https://github.com/WordPress/gutenberg/pull/76477) - Remove redundant onNavigateToEntityRecord filter and assignment (https://github.com/WordPress/gutenberg/pull/76523) - Feat: Block Library: Improve the design of MediaControlPreview and MediaControl (https://github.com/WordPress/gutenberg/pull/76430) - Add e2e test for date field in QuickEdit (https://github.com/WordPress/gutenberg/pull/76528) - Fix RTL styling on Connectors, Font Library, and boot-based admin pages (https://github.com/WordPress/gutenberg/pull/76496) - DataViews: Fix layout scrolling in constrained-height containers (https://github.com/WordPress/gutenberg/pull/76453) - Bump the github-actions group across 1 directory with 5 updates (https://github.com/WordPress/gutenberg/pull/76530) - RTC: Auto-register custom taxonomy rest_base values for CRDT sync (https://github.com/WordPress/gutenberg/pull/75983) - Modernize eslint-plugin rule APIs for ESLint v10 compatibility (https://github.com/WordPress/gutenberg/pull/76507) - Remove alexstine from codeowners (https://github.com/WordPress/gutenberg/pull/76551) - RTC: Add a limit for the default provider (https://github.com/WordPress/gutenberg/pull/76437) - Media Upload Modal: Try an uploading state with popover in the footer (https://github.com/WordPress/gutenberg/pull/76228) - Fix RTL styling on AI plugin callout banner (https://github.com/WordPress/gutenberg/pull/76497) - Add command palette trigger button to admin bar (https://github.com/WordPress/gutenberg/pull/75757) - Block Bindings: Remove source items constrained by enums (https://github.com/WordPress/gutenberg/pull/76200) - Connectors: Improve accessibility (https://github.com/WordPress/gutenberg/pull/76456) - Post Date: Migrate to textAlign block support (https://github.com/WordPress/gutenberg/pull/75856) - Dataviews: improve storybook infinite loading (https://github.com/WordPress/gutenberg/pull/76566) - HTML Block: Remove "unsaved changes" check (https://github.com/WordPress/gutenberg/pull/76086) - `CollapsibleCard`: add animations (https://github.com/WordPress/gutenberg/pull/76378) - Theme: Fix tags in Storybook (https://github.com/WordPress/gutenberg/pull/76500) - InputLayout.Slot: Forward className prop (https://github.com/WordPress/gutenberg/pull/76459) - Storybook: Upgrade to 10.2 (https://github.com/WordPress/gutenberg/pull/76403) - UI: Use `--wpds-cursor-control` design token (https://github.com/WordPress/gutenberg/pull/76218) - Media: Add hooks and extension points for client-side media processing (https://github.com/WordPress/gutenberg/pull/74913) - ESLint: Broaden `no-setting-ds-tokens` to all object property keys (https://github.com/WordPress/gutenberg/pull/76212) - Remove manual fallbacks from --wpds-* token usages in boot package (https://github.com/WordPress/gutenberg/pull/76414) - Fix token fallback plugins breaking JS strings with quoted font names (https://github.com/WordPress/gutenberg/pull/76254) - Connectors: Add unregisterConnector and upsert support (https://github.com/WordPress/gutenberg/pull/76541) - Add ExampleApplication story for ThemeProvider to better demonstrate component theme-ability (https://github.com/WordPress/gutenberg/pull/76463) - Admin UI: Add Storybook stories for Breadcrumbs and Page components (https://github.com/WordPress/gutenberg/pull/76467) - RTC: Fix list sidebar reset during real-time collaboration (https://github.com/WordPress/gutenberg/pull/76025) - Collapsible.Card: make contents hidden until found (https://github.com/WordPress/gutenberg/pull/76498) - Adopt surface-width design tokens for Dialog, Notice, and Modal widths (https://github.com/WordPress/gutenberg/pull/76494) - RTC: Fix CRDT serialization of nested RichText attributes (https://github.com/WordPress/gutenberg/pull/76597) - ESLint: Replace eslint-plugin-ssr-friendly with custom rules (https://github.com/WordPress/gutenberg/pull/76508) - Theme: Add `no-token-fallback-values` stylelint rule (https://github.com/WordPress/gutenberg/pull/76415) - ESLint: Add bare token check to `no-unknown-ds-tokens` (https://github.com/WordPress/gutenberg/pull/76210) - RTC: Remove post list lock icon and replace user-specific lock text (https://github.com/WordPress/gutenberg/pull/76322) - Fix HEIC upload error handling and sub-size format (https://github.com/WordPress/gutenberg/pull/76514) - RTC: Fix cursor index sync with rich text formatting (https://github.com/WordPress/gutenberg/pull/76418) - RTC: Allow filtering of `SyncConnectionModal` (https://github.com/WordPress/gutenberg/pull/76554) - RTC: Implement front-end peer limits (https://github.com/WordPress/gutenberg/pull/76565) - Content Guidelines: Rename route and use the right `Notice` component (https://github.com/WordPress/gutenberg/pull/76427) - Core Data: Fix per_page query logic for when offset is present in the query (https://github.com/WordPress/gutenberg/pull/76613) - useMediaQuery: support in-iframe queries via new `WindowContext` (https://github.com/WordPress/gutenberg/pull/76446) - Navigation overlay close button may be displayed twice (https://github.com/WordPress/gutenberg/pull/76585) - Fix script module dequeue race condition (https://github.com/WordPress/gutenberg/pull/76170) - Template field: match exactly the behavior of post template panel (https://github.com/WordPress/gutenberg/pull/76596) - Connectors: Fetch specific plugin instead of all plugins (https://github.com/WordPress/gutenberg/pull/76594) - Admin UI: update font size for title and breadcrumbs to match (https://github.com/WordPress/gutenberg/pull/76452) - Admin UI: Use hasPadding prop in Page stories instead of inline styles (https://github.com/WordPress/gutenberg/pull/76601) - Site Editor > Templates: fix author filter (https://github.com/WordPress/gutenberg/pull/76625) - Site Title Block: Fix preview display (https://github.com/WordPress/gutenberg/pull/76614) - Editor: Fix autosaves for draft and auto-draft posts (https://github.com/WordPress/gutenberg/pull/76624) - Revisions: Show changed block attributes in inspector sidebar (https://github.com/WordPress/gutenberg/pull/76550) - Fix IS_GUTENBERG_PLUGIN env var override in build config (https://github.com/WordPress/gutenberg/pull/76605) - Loosen client-side media processing requirements (https://github.com/WordPress/gutenberg/pull/76616) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65555. git-svn-id: https://develop.svn.wordpress.org/trunk@62577 602fd350-edb4-49c9-b593-d223f7449a82 --- package.json | 2 +- .../assets/script-loader-packages.php | 60 +- .../assets/script-modules-packages.php | 20 +- src/wp-includes/blocks/accordion-item.php | 1 - src/wp-includes/blocks/blocks-json.php | 58 +- src/wp-includes/blocks/button.php | 68 ++ src/wp-includes/blocks/button/block.json | 14 +- src/wp-includes/blocks/cover.php | 8 +- src/wp-includes/blocks/icon.php | 4 +- src/wp-includes/blocks/image.php | 8 +- src/wp-includes/blocks/navigation-link.php | 20 +- .../blocks/navigation-link/block.json | 5 + src/wp-includes/blocks/navigation-submenu.php | 28 +- src/wp-includes/blocks/navigation.php | 23 +- src/wp-includes/blocks/page-list.php | 2 +- src/wp-includes/blocks/post-date/block.json | 4 +- .../blocks/post-excerpt/block.json | 4 +- .../blocks/post-featured-image.php | 6 +- .../blocks/post-navigation-link/block.json | 4 +- src/wp-includes/blocks/post-title/block.json | 7 +- src/wp-includes/blocks/query-title.php | 2 +- src/wp-includes/blocks/query-title/block.json | 4 +- src/wp-includes/blocks/search.php | 2 +- .../blocks/site-tagline/block.json | 10 +- src/wp-includes/blocks/site-title/block.json | 4 +- src/wp-includes/build/constants.php | 2 +- src/wp-includes/build/pages.php | 2 + .../pages/font-library/page-wp-admin.php | 29 +- .../options-connectors/page-wp-admin.php | 29 +- src/wp-includes/build/routes.php | 19 + .../build/routes/connectors-home/content.js | 801 ++++++------------ .../connectors-home/content.min.asset.php | 2 +- .../routes/connectors-home/content.min.js | 2 +- .../build/routes/font-list/content.js | 454 +++++----- .../routes/font-list/content.min.asset.php | 2 +- .../build/routes/font-list/content.min.js | 8 +- src/wp-includes/build/routes/registry.php | 7 + src/wp-includes/theme.json | 24 + 38 files changed, 795 insertions(+), 954 deletions(-) diff --git a/package.json b/package.json index 429e0469dd491..b2d50f1112093 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://develop.svn.wordpress.org/trunk" }, "gutenberg": { - "sha": "a2a354cf35e5b69c3330d6c1cfd42d8dc2efb9fd", + "sha": "3166ad3c587b4091f77b0e16affeed5762e193f1", "ghcrRepo": "WordPress/gutenberg/gutenberg-wp-develop-build" }, "engines": { diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php index 5dccb121dbb83..269bc43203f3d 100644 --- a/src/wp-includes/assets/script-loader-packages.php +++ b/src/wp-includes/assets/script-loader-packages.php @@ -4,7 +4,7 @@ 'wp-dom-ready', 'wp-i18n' ), - 'version' => 'af934e5259bc51b8718e' + 'version' => '483af07a6016f640f456' ), 'annotations.js' => array( 'dependencies' => array( @@ -20,7 +20,7 @@ 'wp-i18n', 'wp-url' ), - 'version' => 'd7efe4dc1468d36c39b8' + 'version' => 'b76aeca1c88ecc790e48' ), 'autop.js' => array( 'dependencies' => array( @@ -61,7 +61,7 @@ 'wp-primitives', 'wp-url' ), - 'version' => '23207f52d0d266f6e1c4' + 'version' => '9170d925439ce315b76e' ), 'block-editor.js' => array( 'dependencies' => array( @@ -100,7 +100,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '93c3566b7f24c15b7e17' + 'version' => '3a14d64019e67a581568' ), 'block-library.js' => array( 'dependencies' => array( @@ -142,7 +142,7 @@ 'import' => 'dynamic' ) ), - 'version' => '2dffdfe77b9c5cba960e' + 'version' => '5449ab60eb22aaa1f668' ), 'block-serialization-default-parser.js' => array( 'dependencies' => array( @@ -175,7 +175,7 @@ 'wp-shortcode', 'wp-warning' ), - 'version' => 'ef38e42500165bfda301' + 'version' => '901495b507ad42be941e' ), 'commands.js' => array( 'dependencies' => array( @@ -214,7 +214,7 @@ 'wp-rich-text', 'wp-warning' ), - 'version' => '5dedfe13f08880193a28' + 'version' => '5415b6194c44da6987ba' ), 'compose.js' => array( 'dependencies' => array( @@ -228,7 +228,7 @@ 'wp-priority-queue', 'wp-undo-manager' ), - 'version' => 'edb5a8c0b5bf71686403' + 'version' => '81a6b4dad8bafab56102' ), 'core-commands.js' => array( 'dependencies' => array( @@ -257,16 +257,16 @@ 'wp-data', 'wp-deprecated', 'wp-element', - 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-private-apis', 'wp-rich-text', + 'wp-sync', 'wp-undo-manager', 'wp-url', 'wp-warning' ), - 'version' => '89931f90e4df5eb5f8a3' + 'version' => '2723b9b8cef3a26eac5e' ), 'customize-widgets.js' => array( 'dependencies' => array( @@ -304,7 +304,7 @@ 'wp-private-apis', 'wp-redux-routine' ), - 'version' => '1756b6a2676c1b3369ab' + 'version' => '827870cbde5326e4e88e' ), 'data-controls.js' => array( 'dependencies' => array( @@ -381,7 +381,7 @@ 'import' => 'static' ) ), - 'version' => '28ef50b859708963e197' + 'version' => '012ef18791dcc2fc8895' ), 'edit-site.js' => array( 'dependencies' => array( @@ -409,6 +409,7 @@ 'wp-i18n', 'wp-keyboard-shortcuts', 'wp-keycodes', + 'wp-media-utils', 'wp-notices', 'wp-patterns', 'wp-plugins', @@ -420,7 +421,8 @@ 'wp-theme', 'wp-url', 'wp-warning', - 'wp-widgets' + 'wp-widgets', + 'wp-wordcount' ), 'module_dependencies' => array( array( @@ -428,7 +430,7 @@ 'import' => 'static' ) ), - 'version' => 'dfd078032a67983c4d32' + 'version' => 'beef8ec9558e9f14f5f5' ), 'edit-widgets.js' => array( 'dependencies' => array( @@ -469,7 +471,7 @@ 'import' => 'static' ) ), - 'version' => '899c5ac5dcb94e19d378' + 'version' => 'd45dfe7a91d82507fb71' ), 'editor.js' => array( 'dependencies' => array( @@ -519,7 +521,7 @@ 'import' => 'static' ) ), - 'version' => '37faadbdf6c40cb0c71c' + 'version' => 'b90a3f5c0a9b0a2fe692' ), 'element.js' => array( 'dependencies' => array( @@ -527,7 +529,7 @@ 'react-dom', 'wp-escape-html' ), - 'version' => '15ba804677f72a8db97b' + 'version' => '9d8168aa5622eac7f17a' ), 'escape-html.js' => array( 'dependencies' => array( @@ -608,7 +610,7 @@ 'wp-element', 'wp-i18n' ), - 'version' => '2e35ebd5dbaccb5a90c5' + 'version' => 'd42cff283dbd5effd14c' ), 'media-utils.js' => array( 'dependencies' => array( @@ -634,7 +636,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '85f1375ab5f23cd5d13c' + 'version' => '63b8c642509adc7afa30' ), 'notices.js' => array( 'dependencies' => array( @@ -642,7 +644,7 @@ 'wp-components', 'wp-data' ), - 'version' => '218d0173a31ae7269246' + 'version' => '503ec5a02578aed590d7' ), 'nux.js' => array( 'dependencies' => array( @@ -675,7 +677,7 @@ 'wp-private-apis', 'wp-url' ), - 'version' => '714c49ed2942c98d088f' + 'version' => '71e91fc63676088fcd47' ), 'plugins.js' => array( 'dependencies' => array( @@ -728,7 +730,7 @@ 'dependencies' => array( ), - 'version' => '835912f0086b9e59aed4' + 'version' => 'ecfdb1e08ae3f6ce27d1' ), 'react-i18n.js' => array( 'dependencies' => array( @@ -773,7 +775,7 @@ 'wp-keycodes', 'wp-private-apis' ), - 'version' => '16449e6108f48327f368' + 'version' => '262898c1e2003840b59f' ), 'router.js' => array( 'dependencies' => array( @@ -809,7 +811,15 @@ 'dependencies' => array( ), - 'version' => 'faa37ce61b7ec8394b2a' + 'version' => 'a59233ad9478f1a5b0c4' + ), + 'sync.js' => array( + 'dependencies' => array( + 'wp-api-fetch', + 'wp-hooks', + 'wp-private-apis' + ), + 'version' => '25e87dccd85c405f28c7' ), 'theme.js' => array( 'dependencies' => array( @@ -817,7 +827,7 @@ 'wp-element', 'wp-private-apis' ), - 'version' => 'e22ce547a4420507b323' + 'version' => 'd707d5b6847d96124e02' ), 'token-list.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php index 30b248da04fc1..f2fae3d08b764 100644 --- a/src/wp-includes/assets/script-modules-packages.php +++ b/src/wp-includes/assets/script-modules-packages.php @@ -34,7 +34,7 @@ 'import' => 'static' ) ), - 'version' => '2af01b43d30739c3fb8d' + 'version' => 'f77b871ece5a791f449e' ), 'block-library/file/view.js' => array( 'dependencies' => array( @@ -88,7 +88,7 @@ 'import' => 'static' ) ), - 'version' => '99f747d731f80246db11' + 'version' => '1ecf748f10b95c76b349' ), 'block-library/query/view.js' => array( 'dependencies' => array( @@ -166,7 +166,7 @@ 'import' => 'static' ) ), - 'version' => '54bb5a420026a61c7e4f' + 'version' => 'ef4ac69a586a1281a620' ), 'connectors/index.js' => array( 'dependencies' => array( @@ -177,7 +177,7 @@ 'wp-i18n', 'wp-private-apis' ), - 'version' => '274797868955a828dfdc' + 'version' => '70a0f074705f10920f9a' ), 'core-abilities/index.js' => array( 'dependencies' => array( @@ -190,7 +190,7 @@ 'import' => 'static' ) ), - 'version' => '012760fd849397dd0031' + 'version' => '7cd8fe3a80dded97579b' ), 'edit-site-init/index.js' => array( 'dependencies' => array( @@ -205,13 +205,13 @@ 'import' => 'static' ) ), - 'version' => 'e57f44d1a9f69e75d2d9' + 'version' => '1a0581e64b050d2d1474' ), 'interactivity/index.js' => array( 'dependencies' => array( ), - 'version' => 'efaa5193bbad9c60ffd1' + 'version' => '4d2a3a72c7410d548881' ), 'interactivity-router/full-page.js' => array( 'dependencies' => array( @@ -273,7 +273,7 @@ 'wp-private-apis', 'wp-style-engine' ), - 'version' => '30ab62f45bfe9f971ea0' + 'version' => '184e1479cff9c6206281' ), 'route/index.js' => array( 'dependencies' => array( @@ -282,7 +282,7 @@ 'react-jsx-runtime', 'wp-private-apis' ), - 'version' => 'c5843b6c5e84b352f43b' + 'version' => '48a77bfa70722b4254e4' ), 'vips/loader.js' => array( 'dependencies' => array( @@ -300,7 +300,7 @@ 'dependencies' => array( ), - 'version' => 'aff5e5c5b28ae6b73aaa' + 'version' => '61b86a5f5540ba666280' ), 'workflow/index.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/blocks/accordion-item.php b/src/wp-includes/blocks/accordion-item.php index a16a1426e346d..8530b34de12d8 100644 --- a/src/wp-includes/blocks/accordion-item.php +++ b/src/wp-includes/blocks/accordion-item.php @@ -39,7 +39,6 @@ function block_core_accordion_item_render( array $attributes, string $content ): if ( $p->next_tag( array( 'class_name' => 'wp-block-accordion-heading__toggle' ) ) ) { $p->set_attribute( 'data-wp-on--click', 'actions.toggle' ); - $p->set_attribute( 'data-wp-on--keydown', 'actions.handleKeyDown' ); $p->set_attribute( 'id', $unique_id ); $p->set_attribute( 'aria-controls', $unique_id . '-panel' ); $p->set_attribute( 'data-wp-bind--aria-expanded', 'state.isOpen' ); diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php index e905b113502ac..8843ec707d90a 100644 --- a/src/wp-includes/blocks/blocks-json.php +++ b/src/wp-includes/blocks/blocks-json.php @@ -759,9 +759,6 @@ ), 'gradient' => array( 'type' => 'string' - ), - 'width' => array( - 'type' => 'number' ) ), 'supports' => array( @@ -777,6 +774,15 @@ 'text' => true ) ), + 'dimensions' => array( + 'width' => true, + '__experimentalSkipSerialization' => array( + 'width' + ), + '__experimentalDefaultControls' => array( + 'width' => true + ) + ), 'typography' => array( '__experimentalSkipSerialization' => array( 'fontSize', @@ -851,6 +857,10 @@ 'root' => '.wp-block-button .wp-block-button__link', 'typography' => array( 'writingMode' => '.wp-block-button' + ), + 'dimensions' => array( + 'root' => '.wp-block-button', + 'width' => '.wp-block-button' ) ) ), @@ -4378,6 +4388,11 @@ 'clientNavigation' => true ) ), + 'selectors' => array( + 'states' => array( + '@current' => '.wp-block-navigation .current-menu-item' + ) + ), 'editorStyle' => 'wp-block-navigation-link-editor', 'style' => 'wp-block-navigation-link' ), @@ -5348,9 +5363,6 @@ 'type' => 'string', 'role' => 'content' ), - 'textAlign' => array( - 'type' => 'string' - ), 'format' => array( 'type' => 'string' ), @@ -5387,6 +5399,7 @@ 'typography' => array( 'fontSize' => true, 'lineHeight' => true, + 'textAlign' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, @@ -5423,9 +5436,6 @@ 'description' => 'Display the excerpt.', 'textdomain' => 'default', 'attributes' => array( - 'textAlign' => array( - 'type' => 'string' - ), 'moreText' => array( 'type' => 'string', 'role' => 'content' @@ -5466,6 +5476,7 @@ 'typography' => array( 'fontSize' => true, 'lineHeight' => true, + 'textAlign' => true, 'textColumns' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, @@ -5624,9 +5635,6 @@ 'description' => 'Displays the next or previous post link that is adjacent to the current post.', 'textdomain' => 'default', 'attributes' => array( - 'textAlign' => array( - 'type' => 'string' - ), 'type' => array( 'type' => 'string', 'default' => 'next' @@ -5665,6 +5673,7 @@ 'typography' => array( 'fontSize' => true, 'lineHeight' => true, + 'textAlign' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, @@ -5922,9 +5931,6 @@ 'queryId' ), 'attributes' => array( - 'textAlign' => array( - 'type' => 'string' - ), 'level' => array( 'type' => 'number', 'default' => 2 @@ -5947,6 +5953,9 @@ 'type' => 'string', 'default' => '_self', 'role' => 'content' + ), + 'placeholder' => array( + 'type' => 'string' ) ), 'example' => array( @@ -5975,6 +5984,7 @@ 'typography' => array( 'fontSize' => true, 'lineHeight' => true, + 'textAlign' => true, '__experimentalFontFamily' => true, '__experimentalFontWeight' => true, '__experimentalFontStyle' => true, @@ -6523,9 +6533,6 @@ 'type' => array( 'type' => 'string' ), - 'textAlign' => array( - 'type' => 'string' - ), 'level' => array( 'type' => 'number', 'default' => 1 @@ -6571,6 +6578,7 @@ 'typography' => array( 'fontSize' => true, 'lineHeight' => true, + 'textAlign' => true, '__experimentalFontFamily' => true, '__experimentalFontStyle' => true, '__experimentalFontWeight' => true, @@ -7224,9 +7232,6 @@ ), 'textdomain' => 'default', 'attributes' => array( - 'textAlign' => array( - 'type' => 'string' - ), 'level' => array( 'type' => 'number', 'default' => 0 @@ -7247,7 +7252,11 @@ 'example' => array( 'viewportWidth' => 350, 'attributes' => array( - 'textAlign' => 'center' + 'style' => array( + 'typography' => array( + 'textAlign' => 'center' + ) + ) ) ), 'supports' => array( @@ -7276,6 +7285,7 @@ 'typography' => array( 'fontSize' => true, 'lineHeight' => true, + 'textAlign' => true, '__experimentalFontFamily' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, @@ -7325,9 +7335,6 @@ 6 ) ), - 'textAlign' => array( - 'type' => 'string' - ), 'isLink' => array( 'type' => 'boolean', 'default' => true, @@ -7369,6 +7376,7 @@ 'typography' => array( 'fontSize' => true, 'lineHeight' => true, + 'textAlign' => true, '__experimentalFontFamily' => true, '__experimentalTextTransform' => true, '__experimentalTextDecoration' => true, diff --git a/src/wp-includes/blocks/button.php b/src/wp-includes/blocks/button.php index 0d03440b1cb0f..8a7b43a2df315 100644 --- a/src/wp-includes/blocks/button.php +++ b/src/wp-includes/blocks/button.php @@ -60,6 +60,74 @@ function render_block_core_button( $attributes, $content ) { return ''; } + $width = $attributes['style']['dimensions']['width'] ?? null; + + if ( $width ) { + // Resolve preset references to their actual values. + $resolved_width = $width; + $is_preset = str_starts_with( $width, 'var:preset|dimension|' ); + + if ( $is_preset ) { + $slug = substr( $width, strlen( 'var:preset|dimension|' ) ); + $dimension_presets = wp_get_global_settings( + array( 'dimensions', 'dimensionSizes' ), + array( 'block_name' => 'core/button' ) + ); + + // Search origins in priority order: custom > theme > default. + if ( is_array( $dimension_presets ) ) { + foreach ( array( 'custom', 'theme', 'default' ) as $origin ) { + if ( empty( $dimension_presets[ $origin ] ) || ! is_array( $dimension_presets[ $origin ] ) ) { + continue; + } + foreach ( $dimension_presets[ $origin ] as $preset ) { + if ( isset( $preset['slug'] ) && $preset['slug'] === $slug ) { + $resolved_width = $preset['size'] ?? $width; + break 2; + } + } + } + } + } + + $is_percentage = str_ends_with( $resolved_width, '%' ); + + $processor = new WP_HTML_Tag_Processor( $content ); + // Target the outer wrapper div. + if ( $processor->next_tag( array( 'class_name' => 'wp-block-button' ) ) ) { + $processor->add_class( 'has-custom-width' ); + $existing_style = $processor->get_attribute( 'style' ); + $existing_style = is_string( $existing_style ) ? $existing_style : ''; + + if ( $is_percentage ) { + $numeric_width = (float) $resolved_width; + $processor->add_class( 'wp-block-button__width' ); + + // Maintain legacy class for the standard percentage widths. + $legacy_widths = array( + '25%' => 'wp-block-button__width-25', + '50%' => 'wp-block-button__width-50', + '75%' => 'wp-block-button__width-75', + '100%' => 'wp-block-button__width-100', + ); + if ( isset( $legacy_widths[ $resolved_width ] ) ) { + $processor->add_class( $legacy_widths[ $resolved_width ] ); + } + + $width_style = "--wp--block-button--width: $numeric_width;"; + $processor->set_attribute( 'style', $width_style . ( $existing_style ? ' ' . $existing_style : '' ) ); + } else { + $css_value = $is_preset + ? 'var(--wp--preset--dimension--' . _wp_to_kebab_case( $slug ) . ')' + : $width; + $width_style = "width: $css_value;"; + $processor->set_attribute( 'style', $width_style . ( $existing_style ? ' ' . $existing_style : '' ) ); + } + + $content = $processor->get_updated_html(); + } + } + return $content; } diff --git a/src/wp-includes/blocks/button/block.json b/src/wp-includes/blocks/button/block.json index 50ba4cda9c688..2e23a64c8f559 100644 --- a/src/wp-includes/blocks/button/block.json +++ b/src/wp-includes/blocks/button/block.json @@ -63,9 +63,6 @@ }, "gradient": { "type": "string" - }, - "width": { - "type": "number" } }, "supports": { @@ -81,6 +78,13 @@ "text": true } }, + "dimensions": { + "width": true, + "__experimentalSkipSerialization": [ "width" ], + "__experimentalDefaultControls": { + "width": true + } + }, "typography": { "__experimentalSkipSerialization": [ "fontSize", @@ -145,6 +149,10 @@ "root": ".wp-block-button .wp-block-button__link", "typography": { "writingMode": ".wp-block-button" + }, + "dimensions": { + "root": ".wp-block-button", + "width": ".wp-block-button" } } } diff --git a/src/wp-includes/blocks/cover.php b/src/wp-includes/blocks/cover.php index 8da5db23ddc3f..16533acacd764 100644 --- a/src/wp-includes/blocks/cover.php +++ b/src/wp-includes/blocks/cover.php @@ -39,13 +39,13 @@ function render_block_core_cover( $attributes, $content ) { $lower_src = strtolower( $iframe_src ); $provider = null; - if ( strpos( $lower_src, 'youtube.com' ) !== false || strpos( $lower_src, 'youtu.be' ) !== false ) { + if ( str_contains( $lower_src, 'youtube.com' ) || str_contains( $lower_src, 'youtu.be' ) ) { $provider = 'youtube'; - } elseif ( strpos( $lower_src, 'vimeo.com' ) !== false ) { + } elseif ( str_contains( $lower_src, 'vimeo.com' ) ) { $provider = 'vimeo'; - } elseif ( strpos( $lower_src, 'videopress.com' ) !== false ) { + } elseif ( str_contains( $lower_src, 'videopress.com' ) ) { $provider = 'videopress'; - } elseif ( strpos( $lower_src, 'wordpress.tv' ) !== false ) { + } elseif ( str_contains( $lower_src, 'wordpress.tv' ) ) { $provider = 'wordpress-tv'; } diff --git a/src/wp-includes/blocks/icon.php b/src/wp-includes/blocks/icon.php index e09319cffea3b..1b7a27a147698 100644 --- a/src/wp-includes/blocks/icon.php +++ b/src/wp-includes/blocks/icon.php @@ -10,9 +10,7 @@ * * @since 7.0.0 * - * @param array $attributes The block attributes. - * @param string $content The block content. - * @param WP_Block $block The block instance. + * @param array $attributes The block attributes. * * @return string Returns the Icon. */ diff --git a/src/wp-includes/blocks/image.php b/src/wp-includes/blocks/image.php index 22b0ecc2aea33..02b60f91c030a 100644 --- a/src/wp-includes/blocks/image.php +++ b/src/wp-includes/blocks/image.php @@ -205,8 +205,8 @@ function block_core_image_render_lightbox( $block_content, $block, $block_instan array( 'defaultAriaLabel' => __( 'Enlarged image' ), 'closeButtonText' => esc_html__( 'Close' ), - 'prevButtonText' => esc_html_x( 'Previous', 'previous image in lightbox' ), - 'nextButtonText' => esc_html_x( 'Next', 'next image in lightbox' ), + 'prevButtonText' => esc_html__( 'Previous' ), + 'nextButtonText' => esc_html__( 'Next' ), ) ); @@ -323,8 +323,8 @@ class="lightbox-trigger" function block_core_image_print_lightbox_overlay() { $dialog_label = esc_attr__( 'Enlarged images' ); $close_button_text = esc_attr__( 'Close' ); - $prev_button_text = esc_attr_x( 'Previous', 'previous image in lightbox' ); - $next_button_text = esc_attr_x( 'Next', 'next image in lightbox' ); + $prev_button_text = esc_attr__( 'Previous' ); + $next_button_text = esc_attr__( 'Next' ); $close_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" focusable="false"><path d="m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"></path></svg>'; $prev_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" aria-hidden="true" focusable="false"><path d="M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"></path></svg>'; $next_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" aria-hidden="true" focusable="false"><path d="M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"></path></svg>'; diff --git a/src/wp-includes/blocks/navigation-link.php b/src/wp-includes/blocks/navigation-link.php index 0888d7b5acebd..541f154879467 100644 --- a/src/wp-includes/blocks/navigation-link.php +++ b/src/wp-includes/blocks/navigation-link.php @@ -5,14 +5,8 @@ * @package WordPress */ -// Path differs between source and build: './shared/' in source, './navigation-link/shared/' in build. -if ( file_exists( __DIR__ . '/shared/item-should-render.php' ) ) { - require_once __DIR__ . '/shared/item-should-render.php'; - require_once __DIR__ . '/shared/render-submenu-icon.php'; -} else { - require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; - require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; -} +require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; +require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; /** * Build an array with CSS classes and inline styles defining the colors @@ -262,7 +256,13 @@ function render_block_core_navigation_link( $attributes, $content, $block ) { if ( isset( $block->context['showSubmenuIcon'] ) && $block->context['showSubmenuIcon'] && $has_submenu ) { // The submenu icon can be hidden by a CSS rule on the Navigation Block. - $html .= '<span class="wp-block-navigation__submenu-icon">' . block_core_navigation_render_submenu_icon() . '</span>'; + $html .= '<span class="wp-block-navigation__submenu-icon">'; + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + $html .= gutenberg_block_core_shared_navigation_render_submenu_icon(); + } else { + $html .= block_core_shared_navigation_render_submenu_icon(); + } + $html .= '</span>'; } if ( $has_submenu ) { @@ -485,4 +485,4 @@ function register_block_core_navigation_link() { * Creates all variations for post types / taxonomies dynamically (= each time when variations are requested). * Do not use variation_callback, to also account for unregistering post types/taxonomies later on. */ -add_action( 'get_block_type_variations', 'block_core_navigation_link_filter_variations', 10, 2 ); +add_filter( 'get_block_type_variations', 'block_core_navigation_link_filter_variations', 10, 2 ); diff --git a/src/wp-includes/blocks/navigation-link/block.json b/src/wp-includes/blocks/navigation-link/block.json index 997275574f1ac..0735461d0b29a 100644 --- a/src/wp-includes/blocks/navigation-link/block.json +++ b/src/wp-includes/blocks/navigation-link/block.json @@ -85,6 +85,11 @@ "clientNavigation": true } }, + "selectors": { + "states": { + "@current": ".wp-block-navigation .current-menu-item" + } + }, "editorStyle": "wp-block-navigation-link-editor", "style": "wp-block-navigation-link" } diff --git a/src/wp-includes/blocks/navigation-submenu.php b/src/wp-includes/blocks/navigation-submenu.php index 9138b5a5e08da..89cacd3f78655 100644 --- a/src/wp-includes/blocks/navigation-submenu.php +++ b/src/wp-includes/blocks/navigation-submenu.php @@ -5,6 +5,9 @@ * @package WordPress */ +require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; +require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; + /** * Returns the submenu visibility value with backward compatibility * for the deprecated openSubmenusOnClick attribute. @@ -46,15 +49,6 @@ function block_core_navigation_submenu_get_submenu_visibility( $context ) { return $submenu_visibility ?? 'hover'; } -// Path differs between source and build: '../navigation-link/shared/' in source, './navigation-link/shared/' in build. -if ( file_exists( __DIR__ . '/../navigation-link/shared/item-should-render.php' ) ) { - require_once __DIR__ . '/../navigation-link/shared/item-should-render.php'; - require_once __DIR__ . '/../navigation-link/shared/render-submenu-icon.php'; -} else { - require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; - require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; -} - /** * Build an array with CSS classes and inline styles defining the font sizes * which will be applied to the navigation markup in the front-end. @@ -240,7 +234,13 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) { if ( $show_submenu_indicators && $has_submenu ) { // The submenu icon is rendered in a button here // so that there's a clickable element to open the submenu. - $html .= '<button aria-label="' . esc_attr( $aria_label ) . '" class="wp-block-navigation__submenu-icon wp-block-navigation-submenu__toggle" aria-expanded="false">' . block_core_navigation_render_submenu_icon() . '</button>'; + $html .= '<button aria-label="' . esc_attr( $aria_label ) . '" class="wp-block-navigation__submenu-icon wp-block-navigation-submenu__toggle" aria-expanded="false">'; + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + $html .= gutenberg_block_core_shared_navigation_render_submenu_icon(); + } else { + $html .= block_core_shared_navigation_render_submenu_icon(); + } + $html .= '</button>'; } } else { $html .= '<button aria-label="' . esc_attr( $aria_label ) . '" class="wp-block-navigation-item__content wp-block-navigation-submenu__toggle" aria-expanded="false">'; @@ -262,7 +262,13 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) { $html .= '</button>'; if ( $has_submenu ) { - $html .= '<span class="wp-block-navigation__submenu-icon">' . block_core_navigation_render_submenu_icon() . '</span>'; + $html .= '<span class="wp-block-navigation__submenu-icon">'; + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + $html .= gutenberg_block_core_shared_navigation_render_submenu_icon(); + } else { + $html .= block_core_shared_navigation_render_submenu_icon(); + } + $html .= '</span>'; } } diff --git a/src/wp-includes/blocks/navigation.php b/src/wp-includes/blocks/navigation.php index 71e8d85b035dc..8602373837009 100644 --- a/src/wp-includes/blocks/navigation.php +++ b/src/wp-includes/blocks/navigation.php @@ -425,11 +425,7 @@ private static function get_overlay_blocks_from_template_part( $overlay_template $full_template_part_id = $theme . '//' . $slug; $block_template = get_block_file_template( $full_template_part_id, 'wp_template_part' ); if ( isset( $block_template->content ) ) { - // Expand shortcodes before parsing blocks, matching the order in - // `render_block_core_template_part()`. - $content = shortcode_unautop( $block_template->content ); - $content = do_shortcode( $content ); - $parsed_blocks = parse_blocks( $content ); + $parsed_blocks = parse_blocks( $block_template->content ); $blocks = block_core_navigation_filter_out_empty_blocks( $parsed_blocks ); // Disable overlay menu for any navigation blocks within the overlay to prevent nested overlays. $blocks = static::disable_overlay_menu_for_nested_navigation_blocks( $blocks ); @@ -453,12 +449,6 @@ private static function get_overlay_blocks_from_template_part( $overlay_template // Re-serialize, and run Block Hooks algorithm to inject hooked blocks. $markup = serialize_blocks( $blocks ); $markup = apply_block_hooks_to_content_from_post_object( $markup, $template_part_post ); - - // Expand shortcodes before parsing blocks, matching the order in - // `render_block_core_template_part()`. - $markup = shortcode_unautop( $markup ); - $markup = do_shortcode( $markup ); - $blocks = parse_blocks( $markup ); // Disable overlay menu for any navigation blocks within the overlay to prevent nested overlays. @@ -1354,17 +1344,6 @@ function block_core_navigation_build_css_font_sizes( $attributes ) { return $font_sizes; } -/** - * Returns the top-level submenu SVG chevron icon. - * - * @since 5.9.0 - * - * @return string - */ -function block_core_navigation_render_submenu_icon() { - return '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" focusable="false"><path d="M1.50002 4L6.00002 8L10.5 4" stroke-width="1.5"></path></svg>'; -} - /** * Filter out empty "null" blocks from the block list. * 'parse_blocks' includes a null block with '\n\n' as the content when diff --git a/src/wp-includes/blocks/page-list.php b/src/wp-includes/blocks/page-list.php index 27e63f250a811..348381f32ecfb 100644 --- a/src/wp-includes/blocks/page-list.php +++ b/src/wp-includes/blocks/page-list.php @@ -166,7 +166,7 @@ function block_core_page_list_build_css_font_sizes( $context ) { * * @since 5.8.0 * - * @param boolean $open_submenus_on_click Whether to open submenus on click instead of hover. + * @param string $submenu_visibility The submenu visibility mode: 'hover', 'click', or 'always'. * @param boolean $show_submenu_icons Whether to show submenu indicator icons. * @param boolean $is_navigation_child If block is a child of Navigation block. * @param array $nested_pages The array of nested pages. diff --git a/src/wp-includes/blocks/post-date/block.json b/src/wp-includes/blocks/post-date/block.json index 7952e36af3661..75eb1eda38d8f 100644 --- a/src/wp-includes/blocks/post-date/block.json +++ b/src/wp-includes/blocks/post-date/block.json @@ -11,9 +11,6 @@ "type": "string", "role": "content" }, - "textAlign": { - "type": "string" - }, "format": { "type": "string" }, @@ -46,6 +43,7 @@ "typography": { "fontSize": true, "lineHeight": true, + "textAlign": true, "__experimentalFontFamily": true, "__experimentalFontWeight": true, "__experimentalFontStyle": true, diff --git a/src/wp-includes/blocks/post-excerpt/block.json b/src/wp-includes/blocks/post-excerpt/block.json index 99f6d5dcc99ed..17678a35c2950 100644 --- a/src/wp-includes/blocks/post-excerpt/block.json +++ b/src/wp-includes/blocks/post-excerpt/block.json @@ -7,9 +7,6 @@ "description": "Display the excerpt.", "textdomain": "default", "attributes": { - "textAlign": { - "type": "string" - }, "moreText": { "type": "string", "role": "content" @@ -46,6 +43,7 @@ "typography": { "fontSize": true, "lineHeight": true, + "textAlign": true, "textColumns": true, "__experimentalFontFamily": true, "__experimentalFontWeight": true, diff --git a/src/wp-includes/blocks/post-featured-image.php b/src/wp-includes/blocks/post-featured-image.php index e9fc60f7038f5..56cf9a66e4e03 100644 --- a/src/wp-includes/blocks/post-featured-image.php +++ b/src/wp-includes/blocks/post-featured-image.php @@ -166,10 +166,8 @@ function get_block_core_post_featured_image_overlay_element_markup( $attributes } // Apply overlay and gradient classes. - if ( $has_dim_background ) { - $class_names[] = 'has-background-dim'; - $class_names[] = "has-background-dim-{$attributes['dimRatio']}"; - } + $class_names[] = 'has-background-dim'; + $class_names[] = "has-background-dim-{$attributes['dimRatio']}"; if ( $has_solid_overlay ) { $class_names[] = "has-{$attributes['overlayColor']}-background-color"; diff --git a/src/wp-includes/blocks/post-navigation-link/block.json b/src/wp-includes/blocks/post-navigation-link/block.json index 6d51d619637c9..83cf63af7841b 100644 --- a/src/wp-includes/blocks/post-navigation-link/block.json +++ b/src/wp-includes/blocks/post-navigation-link/block.json @@ -7,9 +7,6 @@ "description": "Displays the next or previous post link that is adjacent to the current post.", "textdomain": "default", "attributes": { - "textAlign": { - "type": "string" - }, "type": { "type": "string", "default": "next" @@ -46,6 +43,7 @@ "typography": { "fontSize": true, "lineHeight": true, + "textAlign": true, "__experimentalFontFamily": true, "__experimentalFontWeight": true, "__experimentalFontStyle": true, diff --git a/src/wp-includes/blocks/post-title/block.json b/src/wp-includes/blocks/post-title/block.json index 1fb7efcf82db5..d1ded484486bd 100644 --- a/src/wp-includes/blocks/post-title/block.json +++ b/src/wp-includes/blocks/post-title/block.json @@ -8,9 +8,6 @@ "textdomain": "default", "usesContext": [ "postId", "postType", "queryId" ], "attributes": { - "textAlign": { - "type": "string" - }, "level": { "type": "number", "default": 2 @@ -33,6 +30,9 @@ "type": "string", "default": "_self", "role": "content" + }, + "placeholder": { + "type": "string" } }, "example": { @@ -58,6 +58,7 @@ "typography": { "fontSize": true, "lineHeight": true, + "textAlign": true, "__experimentalFontFamily": true, "__experimentalFontWeight": true, "__experimentalFontStyle": true, diff --git a/src/wp-includes/blocks/query-title.php b/src/wp-includes/blocks/query-title.php index d26a3d08ae42a..845a4bdc05aa7 100644 --- a/src/wp-includes/blocks/query-title.php +++ b/src/wp-includes/blocks/query-title.php @@ -13,7 +13,7 @@ * @since 5.8.0 * * @param array $attributes Block attributes. - * @param array $_content Block content. + * @param array $content Block content. * @param object $block Block instance. * * @return string Returns the query title based on the queried object. diff --git a/src/wp-includes/blocks/query-title/block.json b/src/wp-includes/blocks/query-title/block.json index 41e9e3fd29b62..786a46fe5cb1b 100644 --- a/src/wp-includes/blocks/query-title/block.json +++ b/src/wp-includes/blocks/query-title/block.json @@ -10,9 +10,6 @@ "type": { "type": "string" }, - "textAlign": { - "type": "string" - }, "level": { "type": "number", "default": 1 @@ -53,6 +50,7 @@ "typography": { "fontSize": true, "lineHeight": true, + "textAlign": true, "__experimentalFontFamily": true, "__experimentalFontStyle": true, "__experimentalFontWeight": true, diff --git a/src/wp-includes/blocks/search.php b/src/wp-includes/blocks/search.php index 7073d6ce8ab3f..02158c3b8a277 100644 --- a/src/wp-includes/blocks/search.php +++ b/src/wp-includes/blocks/search.php @@ -72,7 +72,7 @@ function render_block_core_search( $attributes ) { if ( $input->next_tag() ) { $input->add_class( implode( ' ', $input_classes ) ); $input->set_attribute( 'id', $input_id ); - $input->set_attribute( 'value', get_search_query() ); + $input->set_attribute( 'value', get_search_query( false ) ); $input->set_attribute( 'placeholder', $attributes['placeholder'] ); // If it's interactive, enqueue the script module and add the directives. diff --git a/src/wp-includes/blocks/site-tagline/block.json b/src/wp-includes/blocks/site-tagline/block.json index 756b2dcb8183a..1b2764d0cfa9a 100644 --- a/src/wp-includes/blocks/site-tagline/block.json +++ b/src/wp-includes/blocks/site-tagline/block.json @@ -8,9 +8,6 @@ "keywords": [ "description" ], "textdomain": "default", "attributes": { - "textAlign": { - "type": "string" - }, "level": { "type": "number", "default": 0 @@ -23,7 +20,11 @@ "example": { "viewportWidth": 350, "attributes": { - "textAlign": "center" + "style": { + "typography": { + "textAlign": "center" + } + } } }, "supports": { @@ -49,6 +50,7 @@ "typography": { "fontSize": true, "lineHeight": true, + "textAlign": true, "__experimentalFontFamily": true, "__experimentalTextTransform": true, "__experimentalTextDecoration": true, diff --git a/src/wp-includes/blocks/site-title/block.json b/src/wp-includes/blocks/site-title/block.json index ac6a3c10e086a..0631de6560ba4 100644 --- a/src/wp-includes/blocks/site-title/block.json +++ b/src/wp-includes/blocks/site-title/block.json @@ -15,9 +15,6 @@ "type": "array", "default": [ 0, 1, 2, 3, 4, 5, 6 ] }, - "textAlign": { - "type": "string" - }, "isLink": { "type": "boolean", "default": true, @@ -56,6 +53,7 @@ "typography": { "fontSize": true, "lineHeight": true, + "textAlign": true, "__experimentalFontFamily": true, "__experimentalTextTransform": true, "__experimentalTextDecoration": true, diff --git a/src/wp-includes/build/constants.php b/src/wp-includes/build/constants.php index 37c81b5ccc21b..878c021e01f8a 100644 --- a/src/wp-includes/build/constants.php +++ b/src/wp-includes/build/constants.php @@ -9,6 +9,6 @@ */ return array( - 'version' => '22.6.0-rc.1', + 'version' => '22.8.0', 'build_url' => includes_url( 'build/' ), ); diff --git a/src/wp-includes/build/pages.php b/src/wp-includes/build/pages.php index 14ca6a08fbbc1..b8084ed2032f9 100644 --- a/src/wp-includes/build/pages.php +++ b/src/wp-includes/build/pages.php @@ -10,3 +10,5 @@ require_once __DIR__ . '/pages/font-library/page-wp-admin.php'; require_once __DIR__ . '/pages/options-connectors/page.php'; require_once __DIR__ . '/pages/options-connectors/page-wp-admin.php'; +require_once __DIR__ . '/pages/guidelines/page.php'; +require_once __DIR__ . '/pages/guidelines/page-wp-admin.php'; diff --git a/src/wp-includes/build/pages/font-library/page-wp-admin.php b/src/wp-includes/build/pages/font-library/page-wp-admin.php index b5974ceca1e53..4d41be02ae892 100644 --- a/src/wp-includes/build/pages/font-library/page-wp-admin.php +++ b/src/wp-includes/build/pages/font-library/page-wp-admin.php @@ -153,35 +153,12 @@ function wp_font_library_wp_admin_enqueue_scripts( $hook_suffix ) { // 2. It initializes the boot module as an inline script. wp_register_script( 'font-library-wp-admin-prerequisites', '', $asset['dependencies'], $asset['version'], true ); - /* - * Add inline script to initialize the app using initSinglePage (no menuItems). - * The dynamic import is deferred until DOMContentLoaded so that all classic - * script dependencies of @wordpress/boot (wp-private-apis, wp-components, - * wp-theme, etc.) have finished parsing and executing before the boot module - * evaluates. Otherwise, a modulepreloaded @wordpress/boot can win the race - * against the classic-script-printing pass on fast CDN-fronted hosts in - * Chrome, evaluating before wp.theme.privateApis is defined and throwing - * "Cannot unlock an undefined object". See <https://core.trac.wordpress.org/ticket/65103>. - */ - $init_js_function = <<<'JS' - ( mountId, routes ) => { - const run = async () => { - const mod = await import( "@wordpress/boot" ); - mod.initSinglePage( { mountId, routes } ); - }; - if ( document.readyState === "loading" ) { - document.addEventListener( "DOMContentLoaded", run ); - } else { - run(); - } - } - JS; + // Add inline script to initialize the app using initSinglePage (no menuItems) wp_add_inline_script( 'font-library-wp-admin-prerequisites', sprintf( - '( %s )( %s, %s );', - $init_js_function, - wp_json_encode( 'font-library-wp-admin-app', JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ), + 'import("@wordpress/boot").then(mod => mod.initSinglePage({mountId: "%s", routes: %s}));', + 'font-library-wp-admin-app', wp_json_encode( $routes, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ) ) ); diff --git a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php index b8937db2e2b91..3f3048b8fb98b 100644 --- a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php +++ b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php @@ -153,35 +153,12 @@ function wp_options_connectors_wp_admin_enqueue_scripts( $hook_suffix ) { // 2. It initializes the boot module as an inline script. wp_register_script( 'options-connectors-wp-admin-prerequisites', '', $asset['dependencies'], $asset['version'], true ); - /* - * Add inline script to initialize the app using initSinglePage (no menuItems). - * The dynamic import is deferred until DOMContentLoaded so that all classic - * script dependencies of @wordpress/boot (wp-private-apis, wp-components, - * wp-theme, etc.) have finished parsing and executing before the boot module - * evaluates. Otherwise, a modulepreloaded @wordpress/boot can win the race - * against the classic-script-printing pass on fast CDN-fronted hosts in - * Chrome, evaluating before wp.theme.privateApis is defined and throwing - * "Cannot unlock an undefined object". See <https://core.trac.wordpress.org/ticket/65103>. - */ - $init_js_function = <<<'JS' - ( mountId, routes ) => { - const run = async () => { - const mod = await import( "@wordpress/boot" ); - mod.initSinglePage( { mountId, routes } ); - }; - if ( document.readyState === "loading" ) { - document.addEventListener( "DOMContentLoaded", run ); - } else { - run(); - } - } - JS; + // Add inline script to initialize the app using initSinglePage (no menuItems) wp_add_inline_script( 'options-connectors-wp-admin-prerequisites', sprintf( - '( %s )( %s, %s );', - $init_js_function, - wp_json_encode( 'options-connectors-wp-admin-app', JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ), + 'import("@wordpress/boot").then(mod => mod.initSinglePage({mountId: "%s", routes: %s}));', + 'options-connectors-wp-admin-app', wp_json_encode( $routes, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ) ) ); diff --git a/src/wp-includes/build/routes.php b/src/wp-includes/build/routes.php index 2d87344225949..f470e6f4cd89f 100644 --- a/src/wp-includes/build/routes.php +++ b/src/wp-includes/build/routes.php @@ -111,6 +111,25 @@ function wp_register_options_connectors_wp_admin_page_routes() { } add_action( 'options-connectors-wp-admin_init', 'wp_register_options_connectors_wp_admin_page_routes' ); +// Page-specific route registration functions for guidelines +/** + * Register routes for guidelines page (full-page mode). + */ +function wp_register_guidelines_page_routes() { + global $wp_guidelines_routes_data; + wp_register_page_routes( $wp_guidelines_routes_data, 'wp_register_guidelines_route' ); +} +add_action( 'guidelines_init', 'wp_register_guidelines_page_routes' ); + +/** + * Register routes for guidelines page (wp-admin mode). + */ +function wp_register_guidelines_wp_admin_page_routes() { + global $wp_guidelines_routes_data; + wp_register_page_routes( $wp_guidelines_routes_data, 'wp_register_guidelines_wp_admin_route' ); +} +add_action( 'guidelines-wp-admin_init', 'wp_register_guidelines_wp_admin_page_routes' ); + // Page-specific route registration functions for font-library /** * Register routes for font-library page (full-page mode). diff --git a/src/wp-includes/build/routes/connectors-home/content.js b/src/wp-includes/build/routes/connectors-home/content.js index f248d626abc2d..83f675a15a8ce 100644 --- a/src/wp-includes/build/routes/connectors-home/content.js +++ b/src/wp-includes/build/routes/connectors-home/content.js @@ -7,10 +7,6 @@ var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) @@ -63,13 +59,6 @@ var require_react = __commonJS({ } }); -// package-external:@wordpress/primitives -var require_primitives = __commonJS({ - "package-external:@wordpress/primitives"(exports, module) { - module.exports = window.wp.primitives; - } -}); - // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { @@ -91,20 +80,6 @@ var require_core_data = __commonJS({ } }); -// package-external:@wordpress/notices -var require_notices = __commonJS({ - "package-external:@wordpress/notices"(exports, module) { - module.exports = window.wp.notices; - } -}); - -// package-external:@wordpress/url -var require_url = __commonJS({ - "package-external:@wordpress/url"(exports, module) { - module.exports = window.wp.url; - } -}); - // node_modules/clsx/dist/clsx.mjs function r(e) { var t, f, n = ""; @@ -489,6 +464,7 @@ function useRenderElementProps(componentProps, params = {}) { } return outProps; } +var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); function evaluateRenderProp(element, render, props, state) { if (render) { if (typeof render === "function") { @@ -496,7 +472,17 @@ function evaluateRenderProp(element, render, props, state) { } const mergedProps = mergeProps(props, render.props); mergedProps.ref = props.ref; - return /* @__PURE__ */ React5.cloneElement(render, mergedProps); + let newElement = render; + if (newElement?.$$typeof === REACT_LAZY_TYPE) { + const children = React5.Children.toArray(render); + newElement = children[0]; + } + if (true) { + if (!/* @__PURE__ */ React5.isValidElement(newElement)) { + throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join("\n")); + } + } + return /* @__PURE__ */ React5.cloneElement(newElement, mergedProps); } if (element) { if (typeof element === "string") { @@ -530,10 +516,10 @@ function useRender(params) { // packages/ui/build-module/badge/badge.mjs var import_element2 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='244b5c59c0']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='d16010fae9']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "244b5c59c0"); - style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral,#f8f8f8);color:var(--wpds-color-fg-content-neutral-weak,#6d6d6d)}}')); + style.setAttribute("data-wp-hash", "d16010fae9"); + style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#d8d8d8);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}')); document.head.appendChild(style); } var style_default = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; @@ -554,47 +540,9 @@ var Badge = (0, import_element2.forwardRef)(function Badge2({ children, intent = return element; }); -// packages/ui/build-module/icon/icon.mjs -var import_element3 = __toESM(require_element(), 1); -var import_primitives = __toESM(require_primitives(), 1); -var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); -var Icon = (0, import_element3.forwardRef)(function Icon2({ icon, size = 24, ...restProps }, ref) { - return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( - import_primitives.SVG, - { - ref, - fill: "currentColor", - ...icon.props, - ...restProps, - width: size, - height: size - } - ); -}); - -// packages/icons/build-module/library/caution.mjs -var import_primitives2 = __toESM(require_primitives(), 1); -var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); -var caution_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z" }) }); - -// packages/icons/build-module/library/error.mjs -var import_primitives3 = __toESM(require_primitives(), 1); -var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); -var error_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z" }) }); - -// packages/icons/build-module/library/info.mjs -var import_primitives4 = __toESM(require_primitives(), 1); -var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); -var info_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z" }) }); - -// packages/icons/build-module/library/published.mjs -var import_primitives5 = __toESM(require_primitives(), 1); -var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); -var published_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z" }) }); - // packages/ui/build-module/stack/stack.mjs -var import_element4 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { +var import_element3 = __toESM(require_element(), 1); +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "71d20935c2"); style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); @@ -610,7 +558,7 @@ var gapTokens = { "2xl": "var(--wpds-dimension-gap-2xl, 32px)", "3xl": "var(--wpds-dimension-gap-3xl, 40px)" }; -var Stack = (0, import_element4.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { +var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { const style = { gap: gap && gapTokens[gap], alignItems: align, @@ -626,157 +574,14 @@ var Stack = (0, import_element4.forwardRef)(function Stack2({ direction, gap, al return element; }); -// packages/ui/build-module/notice/index.mjs -var notice_exports = {}; -__export(notice_exports, { - Description: () => Description, - Root: () => Root -}); - -// packages/ui/build-module/notice/root.mjs -var import_element5 = __toESM(require_element(), 1); -import { speak } from "@wordpress/a11y"; -var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='671ebfc62d']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "671ebfc62d"); - style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}")); - document.head.appendChild(style); -} -var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='a66a881fc5']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "a66a881fc5"); - style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-font-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#d8d8d8);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{text-wrap:pretty;color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f2f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b381);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#eaffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#007f30)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}}")); - document.head.appendChild(style); -} -var style_default3 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; -var icons = { - neutral: null, - info: info_default, - warning: caution_default, - success: published_default, - error: error_default -}; -function getDefaultPoliteness(intent) { - return intent === "error" ? "assertive" : "polite"; -} -function safeRenderToString(message) { - if (!message) { - return void 0; - } - if (typeof message === "string") { - return message; - } - try { - return (0, import_element5.renderToString)(message); - } catch { - return void 0; - } -} -function useSpokenMessage(message, politeness) { - const spokenMessage = safeRenderToString(message); - (0, import_element5.useEffect)(() => { - if (spokenMessage) { - speak(spokenMessage, politeness); - } - }, [spokenMessage, politeness]); -} -var Root = (0, import_element5.forwardRef)(function Notice({ - intent = "neutral", - children, - icon, - spokenMessage = children, - politeness = getDefaultPoliteness(intent), - render, - ...restProps -}, ref) { - useSpokenMessage(spokenMessage, politeness); - const iconElement = icon === null ? null : icon ?? icons[intent]; - const mergedClassName = clsx_default( - style_default3.notice, - style_default3[`is-${intent}`], - resets_default["box-sizing"] - ); - const element = useRender({ - defaultTagName: "div", - render, - ref, - props: mergeProps( - { - className: mergedClassName, - children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [ - children, - iconElement && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - Icon, - { - className: style_default3.icon, - icon: iconElement - } - ) - ] }) - }, - restProps - ) - }); - return element; -}); - -// packages/ui/build-module/notice/description.mjs -var import_element7 = __toESM(require_element(), 1); - -// packages/ui/build-module/text/text.mjs -var import_element6 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='6675f7d310']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "6675f7d310"); - style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{font-size:var(--wpds-font-size-2xl,32px);line-height:var(--wpds-font-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{font-size:var(--wpds-font-size-xl,20px);line-height:var(--wpds-font-line-height-md,24px)}.aa58f227716bcde2__heading-lg{font-size:var(--wpds-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{font-size:var(--wpds-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-xs,11px);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{font-size:var(--wpds-font-size-xl,20px);line-height:var(--wpds-font-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{font-size:var(--wpds-font-size-lg,15px);line-height:var(--wpds-font-line-height-md,24px)}._131101940be12424__body-md{font-size:var(--wpds-font-size-md,13px);line-height:var(--wpds-font-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{font-size:var(--wpds-font-size-sm,12px);line-height:var(--wpds-font-line-height-xs,16px)}}')); - document.head.appendChild(style); -} -var style_default4 = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; -var Text = (0, import_element6.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { - const element = useRender({ - render, - defaultTagName: "span", - ref, - props: mergeProps(props, { - className: clsx_default(style_default4.text, style_default4[variant], className) - }) - }); - return element; -}); - -// packages/ui/build-module/notice/description.mjs -var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='a66a881fc5']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "a66a881fc5"); - style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-font-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#d8d8d8);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{text-wrap:pretty;color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f2f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b381);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#eaffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#007f30)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}}")); - document.head.appendChild(style); -} -var style_default5 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; -var Description = (0, import_element7.forwardRef)( - function NoticeDescription({ className, ...props }, ref) { - return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( - Text, - { - ref, - variant: "body-md", - className: clsx_default(style_default5.description, className), - ...props - } - ); - } -); - // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs var import_components = __toESM(require_components(), 1); var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); // packages/admin-ui/build-module/page/header.mjs -var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); function Header({ - headingLevel = 1, + headingLevel = 2, breadcrumbs, badges, title, @@ -785,38 +590,46 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Stack, { direction: "column", className: "admin-ui-page__header", children: [ - /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( - SidebarToggleSlot, - { - bubblesVirtually: true, - className: "admin-ui-page__sidebar-toggle-slot" - } - ), - title && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), - breadcrumbs, - badges - ] }), - /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( - Stack, - { - direction: "row", - gap: "sm", - style: { width: "auto", flexShrink: 0 }, - className: "admin-ui-page__header-actions", - align: "center", - children: actions - } - ) - ] }), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) - ] }); + return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)( + Stack, + { + direction: "column", + className: "admin-ui-page__header", + render: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("header", {}), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + Stack, + { + direction: "row", + gap: "sm", + style: { width: "auto", flexShrink: 0 }, + className: "admin-ui-page__header-actions", + align: "center", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] + } + ); } // packages/admin-ui/build-module/page/index.mjs -var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); function Page({ headingLevel, breadcrumbs, @@ -826,12 +639,14 @@ function Page({ children, className, actions, + ariaLabel, hasPadding = false, showSidebarToggle = true }) { const classes = clsx_default("admin-ui-page", className); - return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ - (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( + const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); + return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( Header, { headingLevel, @@ -843,7 +658,7 @@ function Page({ showSidebarToggle } ), - hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children ] }); } Page.SidebarToggleFill = SidebarToggleFill; @@ -851,58 +666,48 @@ var page_default = Page; // routes/connectors-home/stage.tsx var import_components4 = __toESM(require_components()); -var import_data4 = __toESM(require_data()); -var import_element11 = __toESM(require_element()); +var import_data3 = __toESM(require_data()); +var import_element7 = __toESM(require_element()); var import_i18n4 = __toESM(require_i18n()); var import_core_data3 = __toESM(require_core_data()); import { - privateApis as connectorsPrivateApis2 + privateApis as connectorsPrivateApis } from "@wordpress/connectors"; // routes/connectors-home/style.scss -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='eb5f96e519']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='eb296b7e99']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "eb5f96e519"); - style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 92% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 58% -10%,#aa82b873 0,#aa82b800 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 8% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 42% -10%,#aa82b873 0,#aa82b800 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); + style.setAttribute("data-wp-hash", "eb296b7e99"); + style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__actions{align-items:center;display:flex;gap:12px}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); document.head.appendChild(style); } // routes/connectors-home/ai-plugin-callout.tsx var import_components3 = __toESM(require_components()); var import_core_data2 = __toESM(require_core_data()); -var import_data3 = __toESM(require_data()); -var import_element10 = __toESM(require_element()); +var import_data2 = __toESM(require_data()); +var import_element6 = __toESM(require_element()); var import_i18n3 = __toESM(require_i18n()); -var import_notices2 = __toESM(require_notices()); -var import_url = __toESM(require_url()); +import { speak as speak2 } from "@wordpress/a11y"; // routes/connectors-home/default-connectors.tsx var import_components2 = __toESM(require_components()); -var import_element9 = __toESM(require_element()); -var import_data2 = __toESM(require_data()); +var import_element5 = __toESM(require_element()); var import_i18n2 = __toESM(require_i18n()); import { __experimentalRegisterConnector as registerConnector, __experimentalConnectorItem as ConnectorItem, - __experimentalDefaultConnectorSettings as DefaultConnectorSettings, - privateApis as connectorsPrivateApis + __experimentalDefaultConnectorSettings as DefaultConnectorSettings } from "@wordpress/connectors"; -// routes/lock-unlock.ts -var import_private_apis = __toESM(require_private_apis()); -var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( - "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", - "@wordpress/routes" -); - // routes/connectors-home/use-connector-plugin.ts var import_core_data = __toESM(require_core_data()); var import_data = __toESM(require_data()); -var import_element8 = __toESM(require_element()); +var import_element4 = __toESM(require_element()); var import_i18n = __toESM(require_i18n()); -var import_notices = __toESM(require_notices()); +import { speak } from "@wordpress/a11y"; function useConnectorPlugin({ - file: pluginFileFromServer, + pluginSlug, settingName, connectorName, isInstalled, @@ -910,27 +715,25 @@ function useConnectorPlugin({ keySource = "none", initialIsConnected = false }) { - const [isExpanded, setIsExpanded] = (0, import_element8.useState)(false); - const [isBusy, setIsBusy] = (0, import_element8.useState)(false); - const [connectedState, setConnectedState] = (0, import_element8.useState)(initialIsConnected); - const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element8.useState)(null); - const pluginBasename = pluginFileFromServer?.replace(/\.php$/, ""); - const pluginSlug = pluginBasename?.includes("/") ? pluginBasename.split("/")[0] : pluginBasename; + const [isExpanded, setIsExpanded] = (0, import_element4.useState)(false); + const [isBusy, setIsBusy] = (0, import_element4.useState)(false); + const [connectedState, setConnectedState] = (0, import_element4.useState)(initialIsConnected); + const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element4.useState)(null); const { derivedPluginStatus, canManagePlugins, currentApiKey, canInstallPlugins } = (0, import_data.useSelect)( - (select2) => { - const store2 = select2(import_core_data.store); + (select) => { + const store2 = select(import_core_data.store); const siteSettings = store2.getEntityRecord("root", "site"); const apiKey = siteSettings?.[settingName] ?? ""; const canCreate = !!store2.canUser("create", { kind: "root", name: "plugin" }); - if (!pluginFileFromServer) { + if (!pluginSlug) { const hasLoaded = store2.hasFinishedResolution( "getEntityRecord", ["root", "site"] @@ -942,14 +745,15 @@ function useConnectorPlugin({ canInstallPlugins: canCreate }; } + const pluginId = `${pluginSlug}/plugin`; const plugin = store2.getEntityRecord( "root", "plugin", - pluginBasename + pluginId ); const hasFinished = store2.hasFinishedResolution( "getEntityRecord", - ["root", "plugin", pluginBasename] + ["root", "plugin", pluginId] ); if (!hasFinished) { return { @@ -960,9 +764,8 @@ function useConnectorPlugin({ }; } if (plugin) { - const isPluginActive = plugin.status === "active" || plugin.status === "network-active"; return { - derivedPluginStatus: isPluginActive ? "active" : "inactive", + derivedPluginStatus: plugin.status === "active" ? "active" : "inactive", canManagePlugins: true, currentApiKey: apiKey, canInstallPlugins: canCreate @@ -981,7 +784,7 @@ function useConnectorPlugin({ canInstallPlugins: canCreate }; }, - [pluginBasename, settingName, isInstalled, isActivated] + [pluginSlug, settingName, isInstalled, isActivated] ); const pluginStatus = pluginStatusOverride ?? derivedPluginStatus; const canActivatePlugins = canManagePlugins; @@ -989,7 +792,6 @@ function useConnectorPlugin({ // update connected state (mirrors what the server would report on page load). pluginStatusOverride === "active" && !!currentApiKey; const { saveEntityRecord, invalidateResolution } = (0, import_data.useDispatch)(import_core_data.store); - const { createSuccessNotice, createErrorNotice } = (0, import_data.useDispatch)(import_notices.store); const installPlugin = async () => { if (!pluginSlug) { return; @@ -1005,35 +807,28 @@ function useConnectorPlugin({ setPluginStatusOverride("active"); invalidateResolution("getEntityRecord", ["root", "site"]); setIsExpanded(true); - createSuccessNotice( + speak( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Plugin for %s installed and activated successfully."), connectorName - ), - { - id: "connector-plugin-install-success", - type: "snackbar" - } + ) ); } catch { - createErrorNotice( + speak( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Failed to install plugin for %s."), connectorName ), - { - id: "connector-plugin-install-error", - type: "snackbar" - } + "assertive" ); } finally { setIsBusy(false); } }; const activatePlugin = async () => { - if (!pluginFileFromServer) { + if (!pluginSlug) { return; } setIsBusy(true); @@ -1041,37 +836,27 @@ function useConnectorPlugin({ await saveEntityRecord( "root", "plugin", - { - plugin: pluginBasename, - status: "active" - }, + { plugin: `${pluginSlug}/plugin`, status: "active" }, { throwOnError: true } ); setPluginStatusOverride("active"); invalidateResolution("getEntityRecord", ["root", "site"]); setIsExpanded(true); - createSuccessNotice( + speak( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Plugin for %s activated successfully."), connectorName - ), - { - id: "connector-plugin-activate-success", - type: "snackbar" - } + ) ); } catch { - createErrorNotice( + speak( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Failed to activate plugin for %s."), connectorName ), - { - id: "connector-plugin-activate-error", - type: "snackbar" - } + "assertive" ); } finally { setIsBusy(false); @@ -1130,16 +915,12 @@ function useConnectorPlugin({ ); } setConnectedState(true); - createSuccessNotice( + speak( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("%s connected successfully."), connectorName - ), - { - id: "connector-connect-success", - type: "snackbar" - } + ) ); } catch (error) { console.error("Failed to save API key:", error); @@ -1155,29 +936,22 @@ function useConnectorPlugin({ { throwOnError: true } ); setConnectedState(false); - createSuccessNotice( + speak( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("%s disconnected."), connectorName - ), - { - id: "connector-disconnect-success", - type: "snackbar" - } + ) ); } catch (error) { console.error("Failed to remove API key:", error); - createErrorNotice( + speak( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Failed to disconnect %s."), connectorName ), - { - id: "connector-disconnect-error", - type: "snackbar" - } + "assertive" ); throw error; } @@ -1261,27 +1035,6 @@ var DefaultConnectorLogo = () => /* @__PURE__ */ React.createElement( } ) ); -var AkismetLogo = () => /* @__PURE__ */ React.createElement( - "svg", - { - width: "40", - height: "40", - viewBox: "0 0 44 44", - fill: "none", - xmlns: "http://www.w3.org/2000/svg", - "aria-hidden": "true" - }, - /* @__PURE__ */ React.createElement("rect", { width: "44", height: "44", fill: "#357B49", rx: "6" }), - /* @__PURE__ */ React.createElement( - "path", - { - fill: "#fff", - fillRule: "evenodd", - d: "m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z", - clipRule: "evenodd" - } - ) -); var GeminiLogo = () => /* @__PURE__ */ React.createElement( "svg", { @@ -1360,29 +1113,22 @@ var GeminiLogo = () => /* @__PURE__ */ React.createElement( ); // routes/connectors-home/default-connectors.tsx -var { store: connectorsStore } = unlock(connectorsPrivateApis); -function getConnectorScriptModuleData() { +function getConnectorData() { try { - return JSON.parse( + const parsed = JSON.parse( document.getElementById( "wp-script-module-data-options-connectors-wp-admin" - )?.textContent ?? "{}" + )?.textContent ?? "" ); + return parsed?.connectors ?? {}; } catch { return {}; } } -function getConnectorData() { - return getConnectorScriptModuleData().connectors ?? {}; -} -function getIsFileModDisabled() { - return !!getConnectorScriptModuleData().isFileModDisabled; -} var CONNECTOR_LOGOS = { google: GeminiLogo, openai: OpenAILogo, - anthropic: ClaudeLogo, - akismet: AkismetLogo + anthropic: ClaudeLogo }; function getConnectorLogo(connectorId, logoUrl) { if (logoUrl) { @@ -1409,30 +1155,19 @@ var ConnectedBadge = () => /* @__PURE__ */ React.createElement( }, (0, import_i18n2.__)("Connected") ); -var PluginDirectoryLink = ({ slug }) => /* @__PURE__ */ React.createElement( - import_components2.ExternalLink, - { - href: (0, import_i18n2.sprintf)( - /* translators: %s: plugin slug. */ - (0, import_i18n2.__)("https://wordpress.org/plugins/%s/"), - slug - ) - }, - (0, import_i18n2.__)("Learn more") -); var UnavailableActionBadge = () => /* @__PURE__ */ React.createElement(Badge, null, (0, import_i18n2.__)("Not available")); function ApiKeyConnector({ - name, + label, description, - logo, - authentication, - plugin + pluginSlug, + settingName, + helpUrl, + icon, + isInstalled, + isActivated, + keySource: initialKeySource, + initialIsConnected }) { - const auth = authentication?.method === "api_key" ? authentication : void 0; - const settingName = auth?.settingName ?? ""; - const helpUrl = auth?.credentialsUrl ?? void 0; - const pluginFile = plugin?.file?.replace(/\.php$/, ""); - const pluginSlug = pluginFile?.includes("/") ? pluginFile.split("/")[0] : pluginFile; let helpLabel; try { if (helpUrl) { @@ -1455,35 +1190,47 @@ function ApiKeyConnector({ saveApiKey, removeApiKey } = useConnectorPlugin({ - file: plugin?.file, + pluginSlug, settingName, - connectorName: name, - isInstalled: plugin?.isInstalled, - isActivated: plugin?.isActivated, - keySource: auth?.keySource, - initialIsConnected: auth?.isConnected + connectorName: label, + isInstalled, + isActivated, + keySource: initialKeySource, + initialIsConnected }); const isExternallyConfigured = keySource === "env" || keySource === "constant"; const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; const showActionButton = !showUnavailableBadge; - const actionButtonRef = (0, import_element9.useRef)(null); + const actionButtonRef = (0, import_element5.useRef)(null); + const pendingFocusRef = (0, import_element5.useRef)(false); + (0, import_element5.useEffect)(() => { + if (pendingFocusRef.current && !isBusy) { + pendingFocusRef.current = false; + actionButtonRef.current?.focus(); + } + }, [isBusy, isExpanded, isConnected]); + const handleActionClick = () => { + if (pluginStatus === "not-installed" || pluginStatus === "inactive") { + pendingFocusRef.current = true; + } + handleButtonClick(); + }; return /* @__PURE__ */ React.createElement( ConnectorItem, { className: pluginSlug ? `connector-item--${pluginSlug}` : void 0, - logo, - name, + icon, + name: label, description, - actionArea: /* @__PURE__ */ React.createElement(import_components2.__experimentalHStack, { spacing: 3, expanded: false }, isConnected && /* @__PURE__ */ React.createElement(ConnectedBadge, null), showUnavailableBadge && (pluginSlug ? /* @__PURE__ */ React.createElement(PluginDirectoryLink, { slug: pluginSlug }) : /* @__PURE__ */ React.createElement(UnavailableActionBadge, null)), showActionButton && /* @__PURE__ */ React.createElement( + actionArea: /* @__PURE__ */ React.createElement(import_components2.__experimentalHStack, { spacing: 3, expanded: false }, isConnected && /* @__PURE__ */ React.createElement(ConnectedBadge, null), showUnavailableBadge && /* @__PURE__ */ React.createElement(UnavailableActionBadge, null), showActionButton && /* @__PURE__ */ React.createElement( import_components2.Button, { ref: actionButtonRef, variant: isExpanded || isConnected ? "tertiary" : "secondary", - size: "compact", - onClick: handleButtonClick, + size: isExpanded || isConnected ? void 0 : "compact", + onClick: handleActionClick, disabled: pluginStatus === "checking" || isBusy, - isBusy, - accessibleWhenDisabled: true + isBusy }, getButtonLabel() )) @@ -1498,13 +1245,17 @@ function ApiKeyConnector({ readOnly: isConnected || isExternallyConfigured, keySource, onRemove: isExternallyConfigured ? void 0 : async () => { - await removeApiKey(); - actionButtonRef.current?.focus(); + pendingFocusRef.current = true; + try { + await removeApiKey(); + } catch { + pendingFocusRef.current = false; + } }, onSave: async (apiKey) => { await saveApiKey(apiKey); + pendingFocusRef.current = true; setIsExpanded(false); - actionButtonRef.current?.focus(); } } ) @@ -1512,28 +1263,33 @@ function ApiKeyConnector({ } function registerDefaultConnectors() { const connectors = getConnectorData(); - const sanitize = (s) => s.replace(/[^a-z0-9-_]/gi, "-"); + const sanitize = (s) => s.replace(/[^a-z0-9-]/gi, "-"); for (const [connectorId, data] of Object.entries(connectors)) { - if (connectorId === "akismet" && !data.plugin?.isInstalled) { + const { authentication } = data; + if (data.type !== "ai_provider" || authentication.method !== "api_key") { continue; } - const { authentication } = data; - const connectorName = sanitize(connectorId); - const args = { - name: data.name, + const connectorName = `${sanitize(data.type)}/${sanitize( + connectorId + )}`; + registerConnector(connectorName, { + label: data.name, description: data.description, - type: data.type, - logo: getConnectorLogo(connectorId, data.logoUrl), - authentication, - plugin: data.plugin - }; - const existing = unlock((0, import_data2.select)(connectorsStore)).getConnector( - connectorName - ); - if (authentication.method === "api_key" && !existing?.render) { - args.render = ApiKeyConnector; - } - registerConnector(connectorName, args); + icon: getConnectorLogo(connectorId, data.logoUrl), + render: (props) => /* @__PURE__ */ React.createElement( + ApiKeyConnector, + { + ...props, + pluginSlug: data.plugin?.slug, + settingName: authentication.settingName, + helpUrl: authentication.credentialsUrl ?? void 0, + isInstalled: data.plugin?.isInstalled, + isActivated: data.plugin?.isActivated, + keySource: authentication.keySource, + initialIsConnected: authentication.isConnected + } + ) + }); } } @@ -1551,18 +1307,35 @@ function WpLogoDecoration() { /* @__PURE__ */ React.createElement( "image", { - href: "data:image/png;base64,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", + href: "data:image/png;base64,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", width: "248", height: "248", style: { mixBlendMode: "multiply" } } - ) + ), + /* @__PURE__ */ React.createElement("rect", { x: "184.055", y: "54.995", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "170.059", y: "44.06", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "200.238", y: "77.302", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "212.048", y: "87.8", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "206.799", y: "83.425", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "204.175", y: "85.612", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "219.046", y: "103.108", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "154.751", y: "30.064", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "188.866", y: "63.742", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "148.189", y: "34", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "134.051", y: "31.707", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "126.124", y: "24.771", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "115.385", y: "29.19", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "95.702", y: "31.376", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "91.766", y: "27.002", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "90.454", y: "32.688", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "184.389", y: "45.58", width: "2.187", height: "2.187" }), + /* @__PURE__ */ React.createElement("rect", { x: "162.185", y: "41.873", width: "2.187", height: "2.187" }) )); } // routes/connectors-home/ai-plugin-callout.tsx var AI_PLUGIN_SLUG = "ai"; -var AI_PLUGIN_PAGE_SLUG = "ai-wp-admin"; var AI_PLUGIN_ID = "ai/ai"; var AI_PLUGIN_URL = "https://wordpress.org/plugins/ai/"; var connectorDataValues = Object.values(getConnectorData()); @@ -1576,15 +1349,15 @@ for (const c of connectorDataValues) { } } function AiPluginCallout() { - const [isBusy, setIsBusy] = (0, import_element10.useState)(false); - const [justActivated, setJustActivated] = (0, import_element10.useState)(false); - const actionButtonRef = (0, import_element10.useRef)(null); - (0, import_element10.useEffect)(() => { + const [isBusy, setIsBusy] = (0, import_element6.useState)(false); + const [justActivated, setJustActivated] = (0, import_element6.useState)(false); + const actionButtonRef = (0, import_element6.useRef)(null); + (0, import_element6.useEffect)(() => { if (justActivated) { actionButtonRef.current?.focus(); } }, [justActivated]); - const initialHasConnectedProvider = (0, import_element10.useRef)( + const initialHasConnectedProvider = (0, import_element6.useRef)( connectorDataValues.some( (c) => c.type === "ai_provider" && c.authentication.method === "api_key" && c.authentication.isConnected ) @@ -1594,8 +1367,8 @@ function AiPluginCallout() { canInstallPlugins, canManagePlugins, hasConnectedProvider - } = (0, import_data3.useSelect)((select2) => { - const store2 = select2(import_core_data2.store); + } = (0, import_data2.useSelect)((select) => { + const store2 = select(import_core_data2.store); const canCreate = !!store2.canUser("create", { kind: "root", name: "plugin" @@ -1637,8 +1410,7 @@ function AiPluginCallout() { hasConnectedProvider: hasConnected }; }, []); - const { saveEntityRecord } = (0, import_data3.useDispatch)(import_core_data2.store); - const { createSuccessNotice, createErrorNotice } = (0, import_data3.useDispatch)(import_notices2.store); + const { saveEntityRecord } = (0, import_data2.useDispatch)(import_core_data2.store); const installPlugin = async () => { setIsBusy(true); try { @@ -1649,18 +1421,9 @@ function AiPluginCallout() { { throwOnError: true } ); setJustActivated(true); - createSuccessNotice( - (0, import_i18n3.__)("AI plugin installed and activated successfully."), - { - id: "ai-plugin-install-success", - type: "snackbar" - } - ); + speak2((0, import_i18n3.__)("AI plugin installed and activated successfully.")); } catch { - createErrorNotice((0, import_i18n3.__)("Failed to install the AI plugin."), { - id: "ai-plugin-install-error", - type: "snackbar" - }); + speak2((0, import_i18n3.__)("Failed to install the AI plugin."), "assertive"); } finally { setIsBusy(false); } @@ -1675,15 +1438,9 @@ function AiPluginCallout() { { throwOnError: true } ); setJustActivated(true); - createSuccessNotice((0, import_i18n3.__)("AI plugin activated successfully."), { - id: "ai-plugin-activate-success", - type: "snackbar" - }); + speak2((0, import_i18n3.__)("AI plugin activated successfully.")); } catch { - createErrorNotice((0, import_i18n3.__)("Failed to activate the AI plugin."), { - id: "ai-plugin-activate-error", - type: "snackbar" - }); + speak2((0, import_i18n3.__)("Failed to activate the AI plugin."), "assertive"); } finally { setIsBusy(false); } @@ -1697,49 +1454,50 @@ function AiPluginCallout() { if (pluginStatus === "active" && initialHasConnectedProvider && !justActivated) { return null; } + if (pluginStatus === "not-installed" && canInstallPlugins === false) { + return null; + } if (pluginStatus === "inactive" && canManagePlugins === false) { return null; } const isActiveNoProvider = pluginStatus === "active" && !hasConnectedProvider; const isJustConnected = pluginStatus === "active" && hasConnectedProvider && (!initialHasConnectedProvider || justActivated); const showInstallActivate = pluginStatus === "not-installed" || pluginStatus === "inactive"; - const hideButtons = pluginStatus === "not-installed" && canInstallPlugins === false; const getMessage = () => { if (isJustConnected) { return (0, import_i18n3.__)( - "The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" + "The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more." ); } if (isActiveNoProvider) { return (0, import_i18n3.__)( - "The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>" + "The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more." ); } return (0, import_i18n3.__)( - "The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" + "The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more." ); }; const getPrimaryButtonProps = () => { if (pluginStatus === "not-installed") { return { - label: isBusy ? (0, import_i18n3.__)("Installing\u2026") : (0, import_i18n3.__)("Install the AI plugin"), + label: isBusy ? (0, import_i18n3.__)("Installing\u2026") : (0, import_i18n3.__)("Install AI Experiments"), disabled: isBusy, onClick: isBusy ? void 0 : installPlugin }; } return { - label: isBusy ? (0, import_i18n3.__)("Activating\u2026") : (0, import_i18n3.__)("Activate the AI plugin"), + label: isBusy ? (0, import_i18n3.__)("Activating\u2026") : (0, import_i18n3.__)("Activate AI Experiments"), disabled: isBusy, onClick: isBusy ? void 0 : activatePlugin }; }; - return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element10.createInterpolateElement)(getMessage(), { - strong: /* @__PURE__ */ React.createElement("strong", null), - // @ts-ignore children are injected by createInterpolateElement at runtime. - a: /* @__PURE__ */ React.createElement(import_components3.ExternalLink, { href: AI_PLUGIN_URL }) - })), !hideButtons && (showInstallActivate ? /* @__PURE__ */ React.createElement( + return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element6.createInterpolateElement)(getMessage(), { + strong: /* @__PURE__ */ React.createElement("strong", null) + })), /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__actions" }, showInstallActivate ? /* @__PURE__ */ React.createElement( import_components3.Button, { + ref: actionButtonRef, variant: "primary", size: "compact", isBusy, @@ -1748,80 +1506,46 @@ function AiPluginCallout() { onClick: getPrimaryButtonProps().onClick }, getPrimaryButtonProps().label - ) : /* @__PURE__ */ React.createElement( + ) : justActivated && /* @__PURE__ */ React.createElement( import_components3.Button, { ref: actionButtonRef, variant: "secondary", size: "compact", - href: (0, import_url.addQueryArgs)("options-general.php", { - page: AI_PLUGIN_PAGE_SLUG - }) + disabled: true, + accessibleWhenDisabled: true }, - (0, import_i18n3.__)("Control features in the AI plugin") - ))), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); + (0, import_i18n3.__)("AI Experiments enabled") + ), /* @__PURE__ */ React.createElement(import_components3.ExternalLink, { href: AI_PLUGIN_URL }, (0, import_i18n3.__)("Learn more")))), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); } +// routes/lock-unlock.ts +var import_private_apis = __toESM(require_private_apis()); +var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( + "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", + "@wordpress/routes" +); + // routes/connectors-home/stage.tsx -var { store } = unlock(connectorsPrivateApis2); +var { store } = unlock(connectorsPrivateApis); registerDefaultConnectors(); function ConnectorsPage() { - const isFileModDisabled = getIsFileModDisabled(); - const { connectors, canInstallPlugins, isAiPluginInstalled } = (0, import_data4.useSelect)( - (select2) => { - const coreSelect = select2(import_core_data3.store); - const aiPlugin = coreSelect.getEntityRecord( - "root", - "plugin", - "ai/ai" - ); - return { - connectors: unlock(select2(store)).getConnectors(), - canInstallPlugins: coreSelect.canUser("create", { - kind: "root", - name: "plugin" - }), - isAiPluginInstalled: !!aiPlugin - }; - }, + const { connectors, canInstallPlugins } = (0, import_data3.useSelect)( + (select) => ({ + connectors: unlock(select(store)).getConnectors(), + canInstallPlugins: select(import_core_data3.store).canUser("create", { + kind: "root", + name: "plugin" + }) + }), [] ); - const renderableConnectors = connectors.filter( - (connector) => connector.render - ); - const aiProviderPluginSlugs = Array.from( - new Set( - connectors.filter( - (connector) => connector.type === "ai_provider" - ).map( - (connector) => connector.plugin?.file?.split("/")[0] - ).filter((slug) => !!slug) - ) - ).sort(); - const installedPluginSlugs = new Set( - connectors.filter( - (connector) => connector.plugin?.isInstalled - ).map( - (connector) => connector.plugin?.file?.split("/")[0] - ).filter((slug) => !!slug) - ); - if (isAiPluginInstalled) { - installedPluginSlugs.add("ai"); - } - const manualInstallPluginSlugs = ["ai", ...aiProviderPluginSlugs].filter( - (slug) => !installedPluginSlugs.has(slug) - ); - const isEmpty = renderableConnectors.length === 0; - const showFileModsNotice = manualInstallPluginSlugs.length > 0 && (isFileModDisabled || !canInstallPlugins); - const fileModsNoticeMessage = isFileModDisabled ? (0, import_i18n4.__)( - "Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow." - ) : (0, import_i18n4.__)( - "You do not have permission to install plugins. Please ask a site administrator to install them for you." - ); + const isEmpty = connectors.length === 0; return /* @__PURE__ */ React.createElement( page_default, { title: (0, import_i18n4.__)("Connectors"), + headingLevel: 1, subTitle: (0, import_i18n4.__)( "All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere." ) @@ -1831,14 +1555,6 @@ function ConnectorsPage() { { className: `connectors-page${isEmpty ? " connectors-page--empty" : ""}` }, - showFileModsNotice && /* @__PURE__ */ React.createElement( - notice_exports.Root, - { - intent: "info", - className: "connectors-page__file-mods-notice" - }, - /* @__PURE__ */ React.createElement(notice_exports.Description, null, fileModsNoticeMessage) - ), isEmpty ? /* @__PURE__ */ React.createElement( import_components4.__experimentalVStack, { @@ -1850,27 +1566,22 @@ function ConnectorsPage() { "Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place." ))), /* @__PURE__ */ React.createElement(import_components4.Button, { variant: "secondary", href: "plugin-install.php" }, (0, import_i18n4.__)("Learn more")) - ) : /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3 }, /* @__PURE__ */ React.createElement(AiPluginCallout, null), /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3, role: "list" }, connectors.map( - (connector) => { - if (connector.render) { - return /* @__PURE__ */ React.createElement( - connector.render, - { - key: connector.slug, - slug: connector.slug, - name: connector.name, - description: connector.description, - type: connector.type, - logo: connector.logo, - authentication: connector.authentication, - plugin: connector.plugin - } - ); - } - return null; + ) : /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3 }, /* @__PURE__ */ React.createElement(AiPluginCallout, null), connectors.map((connector) => { + if (connector.render) { + return /* @__PURE__ */ React.createElement( + connector.render, + { + key: connector.slug, + slug: connector.slug, + label: connector.label, + description: connector.description, + icon: connector.icon + } + ); } - ))), - canInstallPlugins && !isFileModDisabled && /* @__PURE__ */ React.createElement("p", null, (0, import_element11.createInterpolateElement)( + return null; + })), + canInstallPlugins && /* @__PURE__ */ React.createElement("p", null, (0, import_element7.createInterpolateElement)( (0, import_i18n4.__)( "If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available." ), diff --git a/src/wp-includes/build/routes/connectors-home/content.min.asset.php b/src/wp-includes/build/routes/connectors-home/content.min.asset.php index 6580252cd27a6..65c91308c6e0e 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.asset.php +++ b/src/wp-includes/build/routes/connectors-home/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'b614fcaf0d408b3eff9d'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-private-apis', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'b6e4888addae6d5fef18'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/connectors-home/content.min.js b/src/wp-includes/build/routes/connectors-home/content.min.js index 1cedc12752760..fdcf39c4346e2 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.js +++ b/src/wp-includes/build/routes/connectors-home/content.min.js @@ -1 +1 @@ -var pa=Object.create;var Ae=Object.defineProperty;var ma=Object.getOwnPropertyDescriptor;var ga=Object.getOwnPropertyNames;var wa=Object.getPrototypeOf,ha=Object.prototype.hasOwnProperty;var y=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),va=(e,t)=>{for(var a in t)Ae(e,a,{get:t[a],enumerable:!0})},xa=(e,t,a,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ga(t))!ha.call(e,r)&&r!==a&&Ae(e,r,{get:()=>t[r],enumerable:!(o=ma(t,r))||o.enumerable});return e};var i=(e,t,a)=>(a=e!=null?pa(wa(e)):{},xa(t||!e||!e.__esModule?Ae(a,"default",{value:e,enumerable:!0}):a,e));var te=y((go,qe)=>{qe.exports=window.wp.i18n});var ae=y((wo,Ue)=>{Ue.exports=window.wp.components});var A=y((ho,Qe)=>{Qe.exports=window.ReactJSXRuntime});var x=y((xo,$e)=>{$e.exports=window.wp.element});var G=y((Ao,rt)=>{rt.exports=window.React});var Z=y((ar,yt)=>{yt.exports=window.wp.primitives});var Bt=y((gr,Nt)=>{Nt.exports=window.wp.privateApis});var le=y((as,jt)=>{jt.exports=window.wp.data});var xe=y((os,Yt)=>{Yt.exports=window.wp.coreData});var Ve=y((rs,Rt)=>{Rt.exports=window.wp.notices});var Vt=y((ss,Wt)=>{Wt.exports=window.wp.url});function Je(e){var t,a,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(a=Je(e[t]))&&(o&&(o+=" "),o+=a)}else for(a in e)e[a]&&(o&&(o+=" "),o+=a);return o}function ba(){for(var e,t,a=0,o="",r=arguments.length;a<r;a++)(e=arguments[a])&&(t=Je(e))&&(o&&(o+=" "),o+=t);return o}var v=ba;var et=i(x(),1),tt=i(A(),1),at=(0,et.forwardRef)(({children:e,className:t,ariaLabel:a,as:o="div",...r},s)=>(0,tt.jsx)(o,{ref:s,className:v("admin-ui-navigable-region",t),"aria-label":a,role:"region",tabIndex:"-1",...r,children:e}));at.displayName="NavigableRegion";var ot=at;var it=i(G(),1),st={};function Pe(e,t){let a=it.useRef(st);return a.current===st&&(a.current=e(t)),a}function Le(e,...t){let a=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(o=>a.searchParams.append("args[]",o)),`Base UI error #${e}; visit ${a} for the full message.`}var me=i(G(),1);function Ne(e,t,a,o){let r=Pe(lt).current;return ya(r,e,t,a,o)&&ft(r,[e,t,a,o]),r.callback}function nt(e){let t=Pe(lt).current;return Aa(t,e)&&ft(t,e),t.callback}function lt(){return{callback:null,cleanup:null,refs:[]}}function ya(e,t,a,o,r){return e.refs[0]!==t||e.refs[1]!==a||e.refs[2]!==o||e.refs[3]!==r}function Aa(e,t){return e.refs.length!==t.length||e.refs.some((a,o)=>a!==t[o])}function ft(e,t){if(e.refs=t,t.every(a=>a==null)){e.callback=null;return}e.callback=a=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),a!=null){let o=Array(t.length).fill(null);for(let r=0;r<t.length;r+=1){let s=t[r];if(s!=null)switch(typeof s){case"function":{let l=s(a);typeof l=="function"&&(o[r]=l);break}case"object":{s.current=a;break}default:}}e.cleanup=()=>{for(let r=0;r<t.length;r+=1){let s=t[r];if(s!=null)switch(typeof s){case"function":{let l=o[r];typeof l=="function"?l():s(null);break}case"object":{s.current=null;break}default:}}}}}}var ct=i(G(),1);var dt=i(G(),1),Pa=parseInt(dt.version,10);function ut(e){return Pa>=e}function Be(e){if(!ct.isValidElement(e))return null;let t=e,a=t.props;return(ut(19)?a?.ref:t.ref)??null}function oe(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function pt(e,t){let a={};for(let o in e){let r=e[o];if(t?.hasOwnProperty(o)){let s=t[o](r);s!=null&&Object.assign(a,s);continue}r===!0?a[`data-${o.toLowerCase()}`]="":r&&(a[`data-${o.toLowerCase()}`]=r.toString())}return a}function mt(e,t){return typeof e=="function"?e(t):e}function gt(e,t){return typeof e=="function"?e(t):e}var se={};function N(e,t,a,o,r){let s={...Ce(e,se)};return t&&(s=re(s,t)),a&&(s=re(s,a)),o&&(s=re(s,o)),r&&(s=re(s,r)),s}function wt(e){if(e.length===0)return se;if(e.length===1)return Ce(e[0],se);let t={...Ce(e[0],se)};for(let a=1;a<e.length;a+=1)t=re(t,e[a]);return t}function re(e,t){return ht(t)?t(e):La(e,t)}function La(e,t){if(!t)return e;for(let a in t){let o=t[a];switch(a){case"style":{e[a]=oe(e.style,o);break}case"className":{e[a]=He(e.className,o);break}default:Na(a,o)?e[a]=Ba(e[a],o):e[a]=o}}return e}function Na(e,t){let a=e.charCodeAt(0),o=e.charCodeAt(1),r=e.charCodeAt(2);return a===111&&o===110&&r>=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function ht(e){return typeof e=="function"}function Ce(e,t){return ht(e)?e(t):e??se}function Ba(e,t){return t?e?a=>{if(Ha(a)){let r=a;Ca(r);let s=t(r);return r.baseUIHandlerPrevented||e?.(r),s}let o=t(a);return e?.(a),o}:t:e}function Ca(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function He(e,t){return t?e?t+" "+e:t:e}function Ha(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Oa=Object.freeze([]),I=Object.freeze({});var Oe=i(G(),1);function vt(e,t,a={}){let o=t.render,r=Da(t,a);if(a.enabled===!1)return null;let s=a.state??I;return Ta(e,o,r,s)}function Da(e,t={}){let{className:a,style:o,render:r}=e,{state:s=I,ref:l,props:f,stateAttributesMapping:c,enabled:d=!0}=t,p=d?mt(a,s):void 0,n=d?gt(o,s):void 0,h=d?pt(s,c):I,m=d?oe(h,Array.isArray(f)?wt(f):f)??I:I;return typeof document<"u"&&(d?Array.isArray(l)?m.ref=nt([m.ref,Be(r),...l]):m.ref=Ne(m.ref,Be(r),l):Ne(null,null)),d?(p!==void 0&&(m.className=He(m.className,p)),n!==void 0&&(m.style=oe(m.style,n)),m):I}function Ta(e,t,a,o){if(t){if(typeof t=="function")return t(a,o);let r=N(a,t.props);return r.ref=a.ref,me.cloneElement(t,r)}if(e&&typeof e=="string")return za(e,a);throw new Error(Le(8))}function za(e,t){return e==="button"?(0,Oe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Oe.createElement)("img",{alt:"",...t,key:t.key}):me.createElement(e,t)}function M(e){return vt(e.defaultTagName??"div",e,e)}var bt=i(x(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='244b5c59c0']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","244b5c59c0"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral,#f8f8f8);color:var(--wpds-color-fg-content-neutral-weak,#6d6d6d)}}')),document.head.appendChild(e)}var xt={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},De=(0,bt.forwardRef)(function({children:t,intent:a="none",render:o,className:r,...s},l){return M({render:o,defaultTagName:"span",ref:l,props:N(s,{className:v(xt.badge,xt[`is-${a}-intent`],r),children:t})})});var At=i(x(),1),Pt=i(Z(),1),Lt=i(A(),1),Te=(0,At.forwardRef)(function({icon:t,size:a=24,...o},r){return(0,Lt.jsx)(Pt.SVG,{ref:r,fill:"currentColor",...t.props,...o,width:a,height:a})});var ge=i(Z(),1),ze=i(A(),1),ke=(0,ze.jsx)(ge.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ze.jsx)(ge.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})});var we=i(Z(),1),Se=i(A(),1),_e=(0,Se.jsx)(we.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Se.jsx)(we.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})});var he=i(Z(),1),Ee=i(A(),1),Ie=(0,Ee.jsx)(he.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ee.jsx)(he.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})});var ve=i(Z(),1),Me=i(A(),1),je=(0,Me.jsx)(ve.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Me.jsx)(ve.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"})});var Ct=i(x(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","71d20935c2"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var ka={stack:"_19ce0419607e1896__stack"},Sa={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},X=(0,Ct.forwardRef)(function({direction:t,gap:a,align:o,justify:r,wrap:s,render:l,...f},c){let d={gap:a&&Sa[a],alignItems:o,justifyContent:r,flexDirection:t,flexWrap:s};return M({render:l,ref:c,props:N(f,{style:d,className:ka.stack})})});var ie={};va(ie,{Description:()=>kt,Root:()=>Ht});var K=i(x(),1);import{speak as _a}from"@wordpress/a11y";var q=i(A(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='671ebfc62d']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","671ebfc62d"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}")),document.head.appendChild(e)}var Ea={"box-sizing":"_336cd3e4e743482f__box-sizing"};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='a66a881fc5']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","a66a881fc5"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-font-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#d8d8d8);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{text-wrap:pretty;color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f2f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b381);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#eaffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#007f30)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}}")),document.head.appendChild(e)}var Ye={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",description:"_1904b570a89bb815__description","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error"},Ia={neutral:null,info:Ie,warning:ke,success:je,error:_e};function Ma(e){return e==="error"?"assertive":"polite"}function ja(e){if(e){if(typeof e=="string")return e;try{return(0,K.renderToString)(e)}catch{return}}}function Ya(e,t){let a=ja(e);(0,K.useEffect)(()=>{a&&_a(a,t)},[a,t])}var Ht=(0,K.forwardRef)(function({intent:t="neutral",children:a,icon:o,spokenMessage:r=a,politeness:s=Ma(t),render:l,...f},c){Ya(r,s);let d=o===null?null:o??Ia[t],p=v(Ye.notice,Ye[`is-${t}`],Ea["box-sizing"]);return M({defaultTagName:"div",render:l,ref:c,props:N({className:p,children:(0,q.jsxs)(q.Fragment,{children:[a,d&&(0,q.jsx)(Te,{className:Ye.icon,icon:d})]})},f)})});var Tt=i(x(),1);var Dt=i(x(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='6675f7d310']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","6675f7d310"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{font-size:var(--wpds-font-size-2xl,32px);line-height:var(--wpds-font-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{font-size:var(--wpds-font-size-xl,20px);line-height:var(--wpds-font-line-height-md,24px)}.aa58f227716bcde2__heading-lg{font-size:var(--wpds-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{font-size:var(--wpds-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{font-family:var(--wpds-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-xs,11px);font-weight:var(--wpds-font-weight-medium,499);line-height:var(--wpds-font-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{font-size:var(--wpds-font-size-xl,20px);line-height:var(--wpds-font-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{font-size:var(--wpds-font-size-lg,15px);line-height:var(--wpds-font-line-height-md,24px)}._131101940be12424__body-md{font-size:var(--wpds-font-size-md,13px);line-height:var(--wpds-font-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{font-size:var(--wpds-font-size-sm,12px);line-height:var(--wpds-font-line-height-xs,16px)}}')),document.head.appendChild(e)}var Ot={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"},Re=(0,Dt.forwardRef)(function({variant:t="body-md",render:a,className:o,...r},s){return M({render:a,defaultTagName:"span",ref:s,props:N(r,{className:v(Ot.text,Ot[t],o)})})});var zt=i(A(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='a66a881fc5']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","a66a881fc5"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-font-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#d8d8d8);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{text-wrap:pretty;color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f2f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e0);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b381);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#eaffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#007f30)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}}")),document.head.appendChild(e)}var Ra={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",description:"_1904b570a89bb815__description","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error"},kt=(0,Tt.forwardRef)(function({className:t,...a},o){return(0,zt.jsx)(Re,{ref:o,variant:"body-md",className:v(Ra.description,t),...a})});var St=i(ae(),1),{Fill:_t,Slot:Et}=(0,St.createSlotFill)("SidebarToggle");var z=i(A(),1);function It({headingLevel:e=1,breadcrumbs:t,badges:a,title:o,subTitle:r,actions:s,showSidebarToggle:l=!0}){let f=`h${e}`;return(0,z.jsxs)(X,{direction:"column",className:"admin-ui-page__header",children:[(0,z.jsxs)(X,{direction:"row",justify:"space-between",gap:"sm",children:[(0,z.jsxs)(X,{direction:"row",gap:"sm",align:"center",justify:"start",children:[l&&(0,z.jsx)(Et,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,z.jsx)(f,{className:"admin-ui-page__header-title",children:o}),t,a]}),(0,z.jsx)(X,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:s})]}),r&&(0,z.jsx)("p",{className:"admin-ui-page__header-subtitle",children:r})]})}var ne=i(A(),1);function Mt({headingLevel:e,breadcrumbs:t,badges:a,title:o,subTitle:r,children:s,className:l,actions:f,hasPadding:c=!1,showSidebarToggle:d=!0}){let p=v("admin-ui-page",l);return(0,ne.jsxs)(ot,{className:p,ariaLabel:o,children:[(o||t||a)&&(0,ne.jsx)(It,{headingLevel:e,breadcrumbs:t,badges:a,title:o,subTitle:r,actions:f,showSidebarToggle:d}),c?(0,ne.jsx)("div",{className:"admin-ui-page__content has-padding",children:s}):s]})}Mt.SidebarToggleFill=_t;var We=Mt;var P=i(ae()),la=i(le()),fa=i(x()),k=i(te()),da=i(xe());import{privateApis as oo}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='eb5f96e519']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","eb5f96e519"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 92% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 58% -10%,#aa82b873 0,#aa82b800 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 8% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 42% -10%,#aa82b873 0,#aa82b800 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var ue=i(ae()),Xe=i(xe()),ce=i(le()),B=i(x()),w=i(te()),ra=i(Ve()),sa=i(Vt());var Q=i(ae()),Jt=i(x()),$t=i(le()),F=i(te());import{__experimentalRegisterConnector as Wa,__experimentalConnectorItem as Va,__experimentalDefaultConnectorSettings as Fa,privateApis as Ga}from"@wordpress/connectors";var Ft=i(Bt()),{lock:is,unlock:U}=(0,Ft.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Fe=i(xe()),de=i(le()),fe=i(x()),u=i(te()),Gt=i(Ve());function Zt({file:e,settingName:t,connectorName:a,isInstalled:o,isActivated:r,keySource:s="none",initialIsConnected:l=!1}){let[f,c]=(0,fe.useState)(!1),[d,p]=(0,fe.useState)(!1),[n,h]=(0,fe.useState)(l),[m,j]=(0,fe.useState)(null),b=e?.replace(/\.php$/,""),Y=b?.includes("/")?b.split("/")[0]:b,{derivedPluginStatus:S,canManagePlugins:J,currentApiKey:C,canInstallPlugins:_}=(0,de.useSelect)(R=>{let W=R(Fe.store),ee=W.getEntityRecord("root","site")?.[t]??"",V=!!W.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:W.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:ee,canInstallPlugins:V};let be=W.getEntityRecord("root","plugin",b);if(!W.hasFinishedResolution("getEntityRecord",["root","plugin",b]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:ee,canInstallPlugins:V};if(be)return{derivedPluginStatus:be.status==="active"||be.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:ee,canInstallPlugins:V};let ye="not-installed";return r?ye="active":o&&(ye="inactive"),{derivedPluginStatus:ye,canManagePlugins:!1,currentApiKey:ee,canInstallPlugins:V}},[b,t,o,r]),g=m??S,H=J,O=g==="active"&&n||m==="active"&&!!C,{saveEntityRecord:L,invalidateResolution:D}=(0,de.useDispatch)(Fe.store),{createSuccessNotice:T,createErrorNotice:E}=(0,de.useDispatch)(Gt.store),$=async()=>{if(Y){p(!0);try{await L("root","plugin",{slug:Y,status:"active"},{throwOnError:!0}),j("active"),D("getEntityRecord",["root","site"]),c(!0),T((0,u.sprintf)((0,u.__)("Plugin for %s installed and activated successfully."),a),{id:"connector-plugin-install-success",type:"snackbar"})}catch{E((0,u.sprintf)((0,u.__)("Failed to install plugin for %s."),a),{id:"connector-plugin-install-error",type:"snackbar"})}finally{p(!1)}}},ua=async()=>{if(e){p(!0);try{await L("root","plugin",{plugin:b,status:"active"},{throwOnError:!0}),j("active"),D("getEntityRecord",["root","site"]),c(!0),T((0,u.sprintf)((0,u.__)("Plugin for %s activated successfully."),a),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{E((0,u.sprintf)((0,u.__)("Failed to activate plugin for %s."),a),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{p(!1)}}};return{pluginStatus:g,canInstallPlugins:_,canActivatePlugins:H,isExpanded:f,setIsExpanded:c,isBusy:d,isConnected:O,currentApiKey:C,keySource:s,handleButtonClick:()=>{if(g==="not-installed"){if(_===!1)return;$()}else if(g==="inactive"){if(H===!1)return;ua()}else c(!f)},getButtonLabel:()=>{if(d)return g==="not-installed"?(0,u.__)("Installing\u2026"):(0,u.__)("Activating\u2026");if(f)return(0,u.__)("Cancel");if(O)return(0,u.__)("Edit");switch(g){case"checking":return(0,u.__)("Checking\u2026");case"not-installed":return(0,u.__)("Install");case"inactive":return(0,u.__)("Activate");case"active":return(0,u.__)("Set up")}},saveApiKey:async R=>{let W=C;try{let V=(await L("root","site",{[t]:R},{throwOnError:!0}))?.[t];if(R&&(V===W||!V))throw new Error("It was not possible to connect to the provider using this key.");h(!0),T((0,u.sprintf)((0,u.__)("%s connected successfully."),a),{id:"connector-connect-success",type:"snackbar"})}catch(pe){throw console.error("Failed to save API key:",pe),pe}},removeApiKey:async()=>{try{await L("root","site",{[t]:""},{throwOnError:!0}),h(!1),T((0,u.sprintf)((0,u.__)("%s disconnected."),a),{id:"connector-disconnect-success",type:"snackbar"})}catch(R){throw console.error("Failed to remove API key:",R),E((0,u.sprintf)((0,u.__)("Failed to disconnect %s."),a),{id:"connector-disconnect-error",type:"snackbar"}),R}}}}var Xt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Kt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),qt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Ut=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),Qt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:Za}=U(Ga);function ea(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"{}")}catch{return{}}}function Ge(){return ea().connectors??{}}function ta(){return!!ea().isFileModDisabled}var Xa={google:Qt,openai:Xt,anthropic:Kt,akismet:Ut};function Ka(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let a=Xa[e];return React.createElement(a||qt,null)}var qa=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,F.__)("Connected")),Ua=({slug:e})=>React.createElement(Q.ExternalLink,{href:(0,F.sprintf)((0,F.__)("https://wordpress.org/plugins/%s/"),e)},(0,F.__)("Learn more")),Qa=()=>React.createElement(De,null,(0,F.__)("Not available"));function Ja({name:e,description:t,logo:a,authentication:o,plugin:r}){let s=o?.method==="api_key"?o:void 0,l=s?.settingName??"",f=s?.credentialsUrl??void 0,c=r?.file?.replace(/\.php$/,""),d=c?.includes("/")?c.split("/")[0]:c,p;try{f&&(p=new URL(f).hostname)}catch{}let{pluginStatus:n,canInstallPlugins:h,canActivatePlugins:m,isExpanded:j,setIsExpanded:b,isBusy:Y,isConnected:S,currentApiKey:J,keySource:C,handleButtonClick:_,getButtonLabel:g,saveApiKey:H,removeApiKey:O}=Zt({file:r?.file,settingName:l,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:s?.keySource,initialIsConnected:s?.isConnected}),L=C==="env"||C==="constant",D=n==="not-installed"&&h===!1||n==="inactive"&&m===!1,T=!D,E=(0,Jt.useRef)(null);return React.createElement(Va,{className:d?`connector-item--${d}`:void 0,logo:a,name:e,description:t,actionArea:React.createElement(Q.__experimentalHStack,{spacing:3,expanded:!1},S&&React.createElement(qa,null),D&&(d?React.createElement(Ua,{slug:d}):React.createElement(Qa,null)),T&&React.createElement(Q.Button,{ref:E,variant:j||S?"tertiary":"secondary",size:"compact",onClick:_,disabled:n==="checking"||Y,isBusy:Y,accessibleWhenDisabled:!0},g()))},j&&n==="active"&&React.createElement(Fa,{key:S?"connected":"setup",initialValue:L?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":J,helpUrl:f,helpLabel:p,readOnly:S||L,keySource:C,onRemove:L?void 0:async()=>{await O(),E.current?.focus()},onSave:async $=>{await H($),b(!1),E.current?.focus()}}))}function aa(){let e=Ge(),t=a=>a.replace(/[^a-z0-9-_]/gi,"-");for(let[a,o]of Object.entries(e)){if(a==="akismet"&&!o.plugin?.isInstalled)continue;let{authentication:r}=o,s=t(a),l={name:o.name,description:o.description,type:o.type,logo:Ka(a,o.logoUrl),authentication:r,plugin:o.plugin},f=U((0,$t.select)(Za)).getConnector(s);r.method==="api_key"&&!f?.render&&(l.render=Ja),Wa(s,l)}}function oa(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}})))}var $a="ai",eo="ai-wp-admin",Ze="ai/ai",to="https://wordpress.org/plugins/ai/",Ke=Object.values(Ge()),ao=Ke.some(e=>e.type==="ai_provider"),ia=[];for(let e of Ke)e.type==="ai_provider"&&e.authentication.method==="api_key"&&ia.push(e.authentication.settingName);function na(){let[e,t]=(0,B.useState)(!1),[a,o]=(0,B.useState)(!1),r=(0,B.useRef)(null);(0,B.useEffect)(()=>{a&&r.current?.focus()},[a]);let s=(0,B.useRef)(Ke.some(g=>g.type==="ai_provider"&&g.authentication.method==="api_key"&&g.authentication.isConnected)).current,{pluginStatus:l,canInstallPlugins:f,canManagePlugins:c,hasConnectedProvider:d}=(0,ce.useSelect)(g=>{let H=g(Xe.store),O=!!H.canUser("create",{kind:"root",name:"plugin"}),L=H.getEntityRecord("root","site"),D=s||ia.some($=>!!L?.[$]),T=H.getEntityRecord("root","plugin",Ze);return H.hasFinishedResolution("getEntityRecord",["root","plugin",Ze])?T?{pluginStatus:T.status==="active"?"active":"inactive",canInstallPlugins:O,canManagePlugins:!0,hasConnectedProvider:D}:{pluginStatus:"not-installed",canInstallPlugins:O,canManagePlugins:O,hasConnectedProvider:D}:{pluginStatus:"checking",canInstallPlugins:O,canManagePlugins:void 0,hasConnectedProvider:D}},[]),{saveEntityRecord:p}=(0,ce.useDispatch)(Xe.store),{createSuccessNotice:n,createErrorNotice:h}=(0,ce.useDispatch)(ra.store),m=async()=>{t(!0);try{await p("root","plugin",{slug:$a,status:"active"},{throwOnError:!0}),o(!0),n((0,w.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{h((0,w.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},j=async()=>{t(!0);try{await p("root","plugin",{plugin:Ze,status:"active"},{throwOnError:!0}),o(!0),n((0,w.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{h((0,w.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!ao||l==="checking"||l==="active"&&s&&!a||l==="inactive"&&c===!1)return null;let b=l==="active"&&!d,Y=l==="active"&&d&&(!s||a),S=l==="not-installed"||l==="inactive",J=l==="not-installed"&&f===!1,C=()=>Y?(0,w.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):b?(0,w.__)("The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,w.__)("The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),_=()=>l==="not-installed"?{label:e?(0,w.__)("Installing\u2026"):(0,w.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:m}:{label:e?(0,w.__)("Activating\u2026"):(0,w.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:j};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,B.createInterpolateElement)(C(),{strong:React.createElement("strong",null),a:React.createElement(ue.ExternalLink,{href:to})})),!J&&(S?React.createElement(ue.Button,{variant:"primary",size:"compact",isBusy:e,disabled:_().disabled,accessibleWhenDisabled:!0,onClick:_().onClick},_().label):React.createElement(ue.Button,{ref:r,variant:"secondary",size:"compact",href:(0,sa.addQueryArgs)("options-general.php",{page:eo})},(0,w.__)("Control features in the AI plugin")))),React.createElement(oa,null))}var{store:ro}=U(oo);aa();function so(){let e=ta(),{connectors:t,canInstallPlugins:a,isAiPluginInstalled:o}=(0,la.useSelect)(n=>{let h=n(da.store),m=h.getEntityRecord("root","plugin","ai/ai");return{connectors:U(n(ro)).getConnectors(),canInstallPlugins:h.canUser("create",{kind:"root",name:"plugin"}),isAiPluginInstalled:!!m}},[]),r=t.filter(n=>n.render),s=Array.from(new Set(t.filter(n=>n.type==="ai_provider").map(n=>n.plugin?.file?.split("/")[0]).filter(n=>!!n))).sort(),l=new Set(t.filter(n=>n.plugin?.isInstalled).map(n=>n.plugin?.file?.split("/")[0]).filter(n=>!!n));o&&l.add("ai");let f=["ai",...s].filter(n=>!l.has(n)),c=r.length===0,d=f.length>0&&(e||!a),p=e?(0,k.__)("Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow."):(0,k.__)("You do not have permission to install plugins. Please ask a site administrator to install them for you.");return React.createElement(We,{title:(0,k.__)("Connectors"),subTitle:(0,k.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${c?" connectors-page--empty":""}`},d&&React.createElement(ie.Root,{intent:"info",className:"connectors-page__file-mods-notice"},React.createElement(ie.Description,null,p)),c?React.createElement(P.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(P.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(P.__experimentalHeading,{level:2,size:15,weight:600},(0,k.__)("No connectors yet")),React.createElement(P.__experimentalText,{size:12},(0,k.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(P.Button,{variant:"secondary",href:"plugin-install.php"},(0,k.__)("Learn more"))):React.createElement(P.__experimentalVStack,{spacing:3},React.createElement(na,null),React.createElement(P.__experimentalVStack,{spacing:3,role:"list"},t.map(n=>n.render?React.createElement(n.render,{key:n.slug,slug:n.slug,name:n.name,description:n.description,type:n.type,logo:n.logo,authentication:n.authentication,plugin:n.plugin}):null))),a&&!e&&React.createElement("p",null,(0,fa.createInterpolateElement)((0,k.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function io(){return React.createElement(so,null)}var no=io;export{no as stage}; +var jt=Object.create;var qe=Object.defineProperty;var Bt=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var Ht=Object.getPrototypeOf,qt=Object.prototype.hasOwnProperty;var D=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Tt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Rt(t))!qt.call(e,o)&&o!==n&&qe(e,o,{get:()=>t[o],enumerable:!(r=Bt(t,o))||r.enumerable});return e};var s=(e,t,n)=>(n=e!=null?jt(Ht(e)):{},Tt(t||!e||!e.__esModule?qe(n,"default",{value:e,enumerable:!0}):n,e));var k=D((hn,Te)=>{Te.exports=window.wp.i18n});var U=D((bn,Ve)=>{Ve.exports=window.wp.components});var re=D((Pn,Ne)=>{Ne.exports=window.ReactJSXRuntime});var j=D((Ln,Ye)=>{Ye.exports=window.wp.element});var Z=D((Gn,Ce)=>{Ce.exports=window.React});var st=D((or,it)=>{it.exports=window.wp.privateApis});var ae=D((wr,gt)=>{gt.exports=window.wp.data});var ie=D((Lr,mt)=>{mt.exports=window.wp.coreData});function Xe(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=Xe(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function Vt(){for(var e,t,n=0,r="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=Xe(e))&&(r&&(r+=" "),r+=t);return r}var A=Vt;var Se=s(j(),1),Ee=s(re(),1),Ae=(0,Se.forwardRef)(({children:e,className:t,ariaLabel:n,as:r="div",...o},a)=>(0,Ee.jsx)(r,{ref:a,className:A("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...o,children:e}));Ae.displayName="NavigableRegion";var Ze=Ae;var Ke=s(Z(),1),We={};function pe(e,t){let n=Ke.useRef(We);return n.current===We&&(n.current=e(t)),n}function ge(e,...t){let n=new URL("https://base-ui.com/production-error");return n.searchParams.set("code",e.toString()),t.forEach(r=>n.searchParams.append("args[]",r)),`Base UI error #${e}; visit ${n} for the full message.`}var V=s(Z(),1);function me(e,t,n,r){let o=pe(ke).current;return Nt(o,e,t,n,r)&&Ue(o,[e,t,n,r]),o.callback}function Ie(e){let t=pe(ke).current;return Xt(t,e)&&Ue(t,e),t.callback}function ke(){return{callback:null,cleanup:null,refs:[]}}function Nt(e,t,n,r,o){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==o}function Xt(e,t){return e.refs.length!==t.length||e.refs.some((n,r)=>n!==t[r])}function Ue(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let r=Array(t.length).fill(null);for(let o=0;o<t.length;o+=1){let a=t[o];if(a!=null)switch(typeof a){case"function":{let i=a(n);typeof i=="function"&&(r[o]=i);break}case"object":{a.current=n;break}default:}}e.cleanup=()=>{for(let o=0;o<t.length;o+=1){let a=t[o];if(a!=null)switch(typeof a){case"function":{let i=r[o];typeof i=="function"?i():a(null);break}case"object":{a.current=null;break}default:}}}}}}var Fe=s(Z(),1);var Qe=s(Z(),1),Yt=parseInt(Qe.version,10);function Je(e){return Yt>=e}function ve(e){if(!Fe.isValidElement(e))return null;let t=e,n=t.props;return(Je(19)?n?.ref:t.ref)??null}function Q(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function _e(e,t){let n={};for(let r in e){let o=e[r];if(t?.hasOwnProperty(r)){let a=t[r](o);a!=null&&Object.assign(n,a);continue}o===!0?n[`data-${r.toLowerCase()}`]="":o&&(n[`data-${r.toLowerCase()}`]=o.toString())}return n}function $e(e,t){return typeof e=="function"?e(t):e}function et(e,t){return typeof e=="function"?e(t):e}var F={};function C(e,t,n,r,o){let a={...he(e,F)};return t&&(a=J(a,t)),n&&(a=J(a,n)),r&&(a=J(a,r)),o&&(a=J(a,o)),a}function tt(e){if(e.length===0)return F;if(e.length===1)return he(e[0],F);let t={...he(e[0],F)};for(let n=1;n<e.length;n+=1)t=J(t,e[n]);return t}function J(e,t){return nt(t)?t(e):St(e,t)}function St(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case"style":{e[n]=Q(e.style,r);break}case"className":{e[n]=be(e.className,r);break}default:Et(n,r)?e[n]=At(e[n],r):e[n]=r}}return e}function Et(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),o=e.charCodeAt(2);return n===111&&r===110&&o>=65&&o<=90&&(typeof t=="function"||typeof t>"u")}function nt(e){return typeof e=="function"}function he(e,t){return nt(e)?e(t):e??F}function At(e,t){return t?e?n=>{if(Ct(n)){let o=n;Zt(o);let a=t(o);return o.baseUIHandlerPrevented||e?.(o),a}let r=t(n);return e?.(n),r}:t:e}function Zt(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function be(e,t){return t?e?t+" "+e:t:e}function Ct(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Wt=Object.freeze([]),B=Object.freeze({});var Pe=s(Z(),1);function rt(e,t,n={}){let r=t.render,o=Kt(t,n);if(n.enabled===!1)return null;let a=n.state??B;return kt(e,r,o,a)}function Kt(e,t={}){let{className:n,style:r,render:o}=e,{state:a=B,ref:i,props:l,stateAttributesMapping:m,enabled:d=!0}=t,u=d?$e(n,a):void 0,p=d?et(r,a):void 0,x=d?_e(a,m):B,f=d?Q(x,Array.isArray(l)?tt(l):l)??B:B;return typeof document<"u"&&(d?Array.isArray(i)?f.ref=Ie([f.ref,ve(o),...i]):f.ref=me(f.ref,ve(o),i):me(null,null)),d?(u!==void 0&&(f.className=be(f.className,u)),p!==void 0&&(f.style=Q(f.style,p)),f):B}var It=Symbol.for("react.lazy");function kt(e,t,n,r){if(t){if(typeof t=="function")return t(n,r);let o=C(n,t.props);o.ref=n.ref;let a=t;return a?.$$typeof===It&&(a=V.Children.toArray(t)[0]),V.cloneElement(a,o)}if(e&&typeof e=="string")return Ut(e,n);throw new Error(ge(8))}function Ut(e,t){return e==="button"?(0,Pe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Pe.createElement)("img",{alt:"",...t,key:t.key}):V.createElement(e,t)}function oe(e){return rt(e.defaultTagName??"div",e,e)}var at=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='d16010fae9']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","d16010fae9"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#d8d8d8);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}')),document.head.appendChild(e)}var ot={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},we=(0,at.forwardRef)(function({children:t,intent:n="none",render:r,className:o,...a},i){return oe({render:r,defaultTagName:"span",ref:i,props:C(a,{className:A(ot.badge,ot[`is-${n}-intent`],o),children:t})})});var ct=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","71d20935c2"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var Qt={stack:"_19ce0419607e1896__stack"},Jt={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},W=(0,ct.forwardRef)(function({direction:t,gap:n,align:r,justify:o,wrap:a,render:i,...l},m){let d={gap:n&&Jt[n],alignItems:r,justifyContent:o,flexDirection:t,flexWrap:a};return oe({render:i,ref:m,props:C(l,{style:d,className:Qt.stack})})});var lt=s(U(),1),{Fill:dt,Slot:ut}=(0,lt.createSlotFill)("SidebarToggle");var w=s(re(),1);function ft({headingLevel:e=2,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:a,showSidebarToggle:i=!0}){let l=`h${e}`;return(0,w.jsxs)(W,{direction:"column",className:"admin-ui-page__header",render:(0,w.jsx)("header",{}),children:[(0,w.jsxs)(W,{direction:"row",justify:"space-between",gap:"sm",children:[(0,w.jsxs)(W,{direction:"row",gap:"sm",align:"center",justify:"start",children:[i&&(0,w.jsx)(ut,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,w.jsx)(l,{className:"admin-ui-page__header-title",children:r}),t,n]}),(0,w.jsx)(W,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),o&&(0,w.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var _=s(re(),1);function pt({headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,children:a,className:i,actions:l,ariaLabel:m,hasPadding:d=!1,showSidebarToggle:u=!0}){let p=A("admin-ui-page",i);return(0,_.jsxs)(Ze,{className:p,ariaLabel:m??(typeof r=="string"?r:""),children:[(r||t||n)&&(0,_.jsx)(ft,{headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:l,showSidebarToggle:u}),d?(0,_.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}pt.SidebarToggleFill=dt;var Le=pt;var y=s(U()),Ot=s(ae()),Mt=s(j()),X=s(k()),Dt=s(ie());import{privateApis as ln}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='eb296b7e99']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","eb296b7e99"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__actions{align-items:center;display:flex;gap:12px}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var te=s(U()),Oe=s(ie()),de=s(ae()),L=s(j()),h=s(k());import{speak as le}from"@wordpress/a11y";var ce=s(U()),ee=s(j()),xe=s(k());import{__experimentalRegisterConnector as Ft,__experimentalConnectorItem as _t,__experimentalDefaultConnectorSettings as $t}from"@wordpress/connectors";var ye=s(ie()),se=s(ae()),$=s(j()),c=s(k());import{speak as N}from"@wordpress/a11y";function vt({pluginSlug:e,settingName:t,connectorName:n,isInstalled:r,isActivated:o,keySource:a="none",initialIsConnected:i=!1}){let[l,m]=(0,$.useState)(!1),[d,u]=(0,$.useState)(!1),[p,x]=(0,$.useState)(i),[f,G]=(0,$.useState)(null),{derivedPluginStatus:K,canManagePlugins:M,currentApiKey:v,canInstallPlugins:b}=(0,se.useSelect)(O=>{let q=O(ye.store),I=q.getEntityRecord("root","site")?.[t]??"",T=!!q.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:q.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:I,canInstallPlugins:T};let Re=`${e}/plugin`,He=q.getEntityRecord("root","plugin",Re);if(!q.hasFinishedResolution("getEntityRecord",["root","plugin",Re]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:I,canInstallPlugins:T};if(He)return{derivedPluginStatus:He.status==="active"?"active":"inactive",canManagePlugins:!0,currentApiKey:I,canInstallPlugins:T};let fe="not-installed";return o?fe="active":r&&(fe="inactive"),{derivedPluginStatus:fe,canManagePlugins:!1,currentApiKey:I,canInstallPlugins:T}},[e,t,r,o]),g=f??K,z=M,Y=g==="active"&&p||f==="active"&&!!v,{saveEntityRecord:P,invalidateResolution:R}=(0,se.useDispatch)(ye.store),S=async()=>{if(e){u(!0);try{await P("root","plugin",{slug:e,status:"active"},{throwOnError:!0}),G("active"),R("getEntityRecord",["root","site"]),m(!0),N((0,c.sprintf)((0,c.__)("Plugin for %s installed and activated successfully."),n))}catch{N((0,c.sprintf)((0,c.__)("Failed to install plugin for %s."),n),"assertive")}finally{u(!1)}}},E=async()=>{if(e){u(!0);try{await P("root","plugin",{plugin:`${e}/plugin`,status:"active"},{throwOnError:!0}),G("active"),R("getEntityRecord",["root","site"]),m(!0),N((0,c.sprintf)((0,c.__)("Plugin for %s activated successfully."),n))}catch{N((0,c.sprintf)((0,c.__)("Failed to activate plugin for %s."),n),"assertive")}finally{u(!1)}}};return{pluginStatus:g,canInstallPlugins:b,canActivatePlugins:z,isExpanded:l,setIsExpanded:m,isBusy:d,isConnected:Y,currentApiKey:v,keySource:a,handleButtonClick:()=>{if(g==="not-installed"){if(b===!1)return;S()}else if(g==="inactive"){if(z===!1)return;E()}else m(!l)},getButtonLabel:()=>{if(d)return g==="not-installed"?(0,c.__)("Installing\u2026"):(0,c.__)("Activating\u2026");if(l)return(0,c.__)("Cancel");if(Y)return(0,c.__)("Edit");switch(g){case"checking":return(0,c.__)("Checking\u2026");case"not-installed":return(0,c.__)("Install");case"inactive":return(0,c.__)("Activate");case"active":return(0,c.__)("Set up")}},saveApiKey:async O=>{let q=v;try{let T=(await P("root","site",{[t]:O},{throwOnError:!0}))?.[t];if(O&&(T===q||!T))throw new Error("It was not possible to connect to the provider using this key.");x(!0),N((0,c.sprintf)((0,c.__)("%s connected successfully."),n))}catch(ne){throw console.error("Failed to save API key:",ne),ne}},removeApiKey:async()=>{try{await P("root","site",{[t]:""},{throwOnError:!0}),x(!1),N((0,c.sprintf)((0,c.__)("%s disconnected."),n))}catch(O){throw console.error("Failed to remove API key:",O),N((0,c.sprintf)((0,c.__)("Failed to disconnect %s."),n),"assertive"),O}}}}var ht=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),bt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Pt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),wt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));function Ge(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var en={google:wt,openai:ht,anthropic:bt};function tn(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=en[e];return React.createElement(n||Pt,null)}var nn=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,xe.__)("Connected")),rn=()=>React.createElement(we,null,(0,xe.__)("Not available"));function on({label:e,description:t,pluginSlug:n,settingName:r,helpUrl:o,icon:a,isInstalled:i,isActivated:l,keySource:m,initialIsConnected:d}){let u;try{o&&(u=new URL(o).hostname)}catch{}let{pluginStatus:p,canInstallPlugins:x,canActivatePlugins:f,isExpanded:G,setIsExpanded:K,isBusy:M,isConnected:v,currentApiKey:b,keySource:g,handleButtonClick:z,getButtonLabel:Y,saveApiKey:P,removeApiKey:R}=vt({pluginSlug:n,settingName:r,connectorName:e,isInstalled:i,isActivated:l,keySource:m,initialIsConnected:d}),S=g==="env"||g==="constant",E=p==="not-installed"&&x===!1||p==="inactive"&&f===!1,je=!E,ue=(0,ee.useRef)(null),H=(0,ee.useRef)(!1);(0,ee.useEffect)(()=>{H.current&&!M&&(H.current=!1,ue.current?.focus())},[M,G,v]);let Be=()=>{(p==="not-installed"||p==="inactive")&&(H.current=!0),z()};return React.createElement(_t,{className:n?`connector-item--${n}`:void 0,icon:a,name:e,description:t,actionArea:React.createElement(ce.__experimentalHStack,{spacing:3,expanded:!1},v&&React.createElement(nn,null),E&&React.createElement(rn,null),je&&React.createElement(ce.Button,{ref:ue,variant:G||v?"tertiary":"secondary",size:G||v?void 0:"compact",onClick:Be,disabled:p==="checking"||M,isBusy:M},Y()))},G&&p==="active"&&React.createElement($t,{key:v?"connected":"setup",initialValue:S?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":b,helpUrl:o,helpLabel:u,readOnly:v||S,keySource:g,onRemove:S?void 0:async()=>{H.current=!0;try{await R()}catch{H.current=!1}},onSave:async O=>{await P(O),H.current=!0,K(!1)}}))}function Lt(){let e=Ge(),t=n=>n.replace(/[^a-z0-9-]/gi,"-");for(let[n,r]of Object.entries(e)){let{authentication:o}=r;if(r.type!=="ai_provider"||o.method!=="api_key")continue;let a=`${t(r.type)}/${t(n)}`;Ft(a,{label:r.name,description:r.description,icon:tn(n,r.logoUrl),render:i=>React.createElement(on,{...i,pluginSlug:r.plugin?.slug,settingName:o.settingName,helpUrl:o.credentialsUrl??void 0,isInstalled:r.plugin?.isInstalled,isActivated:r.plugin?.isActivated,keySource:o.keySource,initialIsConnected:o.isConnected})})}}function yt(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var an="ai",ze="ai/ai",sn="https://wordpress.org/plugins/ai/",Me=Object.values(Ge()),cn=Me.some(e=>e.type==="ai_provider"),xt=[];for(let e of Me)e.type==="ai_provider"&&e.authentication.method==="api_key"&&xt.push(e.authentication.settingName);function Gt(){let[e,t]=(0,L.useState)(!1),[n,r]=(0,L.useState)(!1),o=(0,L.useRef)(null);(0,L.useEffect)(()=>{n&&o.current?.focus()},[n]);let a=(0,L.useRef)(Me.some(b=>b.type==="ai_provider"&&b.authentication.method==="api_key"&&b.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:l,canManagePlugins:m,hasConnectedProvider:d}=(0,de.useSelect)(b=>{let g=b(Oe.store),z=!!g.canUser("create",{kind:"root",name:"plugin"}),Y=g.getEntityRecord("root","site"),P=a||xt.some(E=>!!Y?.[E]),R=g.getEntityRecord("root","plugin",ze);return g.hasFinishedResolution("getEntityRecord",["root","plugin",ze])?R?{pluginStatus:R.status==="active"?"active":"inactive",canInstallPlugins:z,canManagePlugins:!0,hasConnectedProvider:P}:{pluginStatus:"not-installed",canInstallPlugins:z,canManagePlugins:z,hasConnectedProvider:P}:{pluginStatus:"checking",canInstallPlugins:z,canManagePlugins:void 0,hasConnectedProvider:P}},[]),{saveEntityRecord:u}=(0,de.useDispatch)(Oe.store),p=async()=>{t(!0);try{await u("root","plugin",{slug:an,status:"active"},{throwOnError:!0}),r(!0),le((0,h.__)("AI plugin installed and activated successfully."))}catch{le((0,h.__)("Failed to install the AI plugin."),"assertive")}finally{t(!1)}},x=async()=>{t(!0);try{await u("root","plugin",{plugin:ze,status:"active"},{throwOnError:!0}),r(!0),le((0,h.__)("AI plugin activated successfully."))}catch{le((0,h.__)("Failed to activate the AI plugin."),"assertive")}finally{t(!1)}};if(!cn||i==="checking"||i==="active"&&a&&!n||i==="not-installed"&&l===!1||i==="inactive"&&m===!1)return null;let f=i==="active"&&!d,G=i==="active"&&d&&(!a||n),K=i==="not-installed"||i==="inactive",M=()=>G?(0,h.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more."):f?(0,h.__)("The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more."):(0,h.__)("The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more."),v=()=>i==="not-installed"?{label:e?(0,h.__)("Installing\u2026"):(0,h.__)("Install AI Experiments"),disabled:e,onClick:e?void 0:p}:{label:e?(0,h.__)("Activating\u2026"):(0,h.__)("Activate AI Experiments"),disabled:e,onClick:e?void 0:x};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,L.createInterpolateElement)(M(),{strong:React.createElement("strong",null)})),React.createElement("div",{className:"ai-plugin-callout__actions"},K?React.createElement(te.Button,{ref:o,variant:"primary",size:"compact",isBusy:e,disabled:v().disabled,accessibleWhenDisabled:!0,onClick:v().onClick},v().label):n&&React.createElement(te.Button,{ref:o,variant:"secondary",size:"compact",disabled:!0,accessibleWhenDisabled:!0},(0,h.__)("AI Experiments enabled")),React.createElement(te.ExternalLink,{href:sn},(0,h.__)("Learn more")))),React.createElement(yt,null))}var zt=s(st()),{lock:Vr,unlock:De}=(0,zt.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var{store:dn}=De(ln);Lt();function un(){let{connectors:e,canInstallPlugins:t}=(0,Ot.useSelect)(r=>({connectors:De(r(dn)).getConnectors(),canInstallPlugins:r(Dt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),n=e.length===0;return React.createElement(Le,{title:(0,X.__)("Connectors"),headingLevel:1,subTitle:(0,X.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${n?" connectors-page--empty":""}`},n?React.createElement(y.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(y.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(y.__experimentalHeading,{level:2,size:15,weight:600},(0,X.__)("No connectors yet")),React.createElement(y.__experimentalText,{size:12},(0,X.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(y.Button,{variant:"secondary",href:"plugin-install.php"},(0,X.__)("Learn more"))):React.createElement(y.__experimentalVStack,{spacing:3},React.createElement(Gt,null),e.map(r=>r.render?React.createElement(r.render,{key:r.slug,slug:r.slug,label:r.label,description:r.description,icon:r.icon}):null)),t&&React.createElement("p",null,(0,Mt.createInterpolateElement)((0,X.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function fn(){return React.createElement(un,null)}var pn=fn;export{pn as stage}; diff --git a/src/wp-includes/build/routes/font-list/content.js b/src/wp-includes/build/routes/font-list/content.js index e6565158d7f48..1bfcf9c755eb0 100644 --- a/src/wp-includes/build/routes/font-list/content.js +++ b/src/wp-includes/build/routes/font-list/content.js @@ -692,6 +692,7 @@ function useRenderElementProps(componentProps, params = {}) { } return outProps; } +var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); function evaluateRenderProp(element, render, props, state) { if (render) { if (typeof render === "function") { @@ -699,7 +700,17 @@ function evaluateRenderProp(element, render, props, state) { } const mergedProps = mergeProps(props, render.props); mergedProps.ref = props.ref; - return /* @__PURE__ */ React5.cloneElement(render, mergedProps); + let newElement = render; + if (newElement?.$$typeof === REACT_LAZY_TYPE) { + const children = React5.Children.toArray(render); + newElement = children[0]; + } + if (true) { + if (!/* @__PURE__ */ React5.isValidElement(newElement)) { + throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join("\n")); + } + } + return /* @__PURE__ */ React5.cloneElement(newElement, mergedProps); } if (element) { if (typeof element === "string") { @@ -771,7 +782,7 @@ var previous_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primi // packages/ui/build-module/stack/stack.mjs var import_element3 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "71d20935c2"); style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); @@ -810,7 +821,7 @@ var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components // packages/admin-ui/build-module/page/header.mjs var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); function Header({ - headingLevel = 1, + headingLevel = 2, breadcrumbs, badges, title, @@ -819,34 +830,42 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "column", className: "admin-ui-page__header", children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - SidebarToggleSlot, - { - bubblesVirtually: true, - className: "admin-ui-page__sidebar-toggle-slot" - } - ), - title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), - breadcrumbs, - badges - ] }), - /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - Stack, - { - direction: "row", - gap: "sm", - style: { width: "auto", flexShrink: 0 }, - className: "admin-ui-page__header-actions", - align: "center", - children: actions - } - ) - ] }), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) - ] }); + return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( + Stack, + { + direction: "column", + className: "admin-ui-page__header", + render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("header", {}), + children: [ + /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Stack, + { + direction: "row", + gap: "sm", + style: { width: "auto", flexShrink: 0 }, + className: "admin-ui-page__header-actions", + align: "center", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] + } + ); } // packages/admin-ui/build-module/page/index.mjs @@ -860,11 +879,13 @@ function Page({ children, className, actions, + ariaLabel, hasPadding = false, showSidebarToggle = true }) { const classes = clsx_default("admin-ui-page", className); - return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); + return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( Header, { @@ -884,7 +905,7 @@ Page.SidebarToggleFill = SidebarToggleFill; var page_default = Page; // routes/font-list/stage.tsx -var import_i18n46 = __toESM(require_i18n()); +var import_i18n47 = __toESM(require_i18n()); var import_components62 = __toESM(require_components()); var import_editor = __toESM(require_editor()); var import_core_data12 = __toESM(require_core_data()); @@ -895,7 +916,7 @@ var import_element35 = __toESM(require_element()); var import_components61 = __toESM(require_components(), 1); var import_blocks5 = __toESM(require_blocks(), 1); var import_data12 = __toESM(require_data(), 1); -var import_block_editor13 = __toESM(require_block_editor(), 1); +var import_block_editor14 = __toESM(require_block_editor(), 1); var import_element34 = __toESM(require_element(), 1); var import_compose6 = __toESM(require_compose(), 1); @@ -1689,7 +1710,7 @@ function GlobalStylesProvider({ // packages/global-styles-ui/build-module/screen-root.mjs var import_components8 = __toESM(require_components(), 1); -var import_i18n4 = __toESM(require_i18n(), 1); +var import_i18n5 = __toESM(require_i18n(), 1); var import_data2 = __toESM(require_data(), 1); var import_core_data2 = __toESM(require_core_data(), 1); @@ -1733,7 +1754,7 @@ function NavigationButtonAsItem(props) { // packages/global-styles-ui/build-module/root-menu.mjs var import_components3 = __toESM(require_components(), 1); -var import_i18n2 = __toESM(require_i18n(), 1); +var import_i18n3 = __toESM(require_i18n(), 1); var import_block_editor = __toESM(require_block_editor(), 1); // node_modules/colord/plugins/a11y.mjs @@ -1762,9 +1783,38 @@ function a11y_default(o3) { var import_element6 = __toESM(require_element(), 1); var import_data = __toESM(require_data(), 1); var import_core_data = __toESM(require_core_data(), 1); -var import_i18n = __toESM(require_i18n(), 1); +var import_i18n2 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/utils.mjs +var import_i18n = __toESM(require_i18n(), 1); +var VALID_ELEMENT_STATES = { + link: [ + { value: ":link", label: (0, import_i18n.__)("Link") }, + { value: ":any-link", label: (0, import_i18n.__)("Any Link") }, + { value: ":visited", label: (0, import_i18n.__)("Visited") }, + { value: ":hover", label: (0, import_i18n.__)("Hover") }, + { value: ":focus", label: (0, import_i18n.__)("Focus") }, + { value: ":focus-visible", label: (0, import_i18n.__)("Focus Visible") }, + { value: ":active", label: (0, import_i18n.__)("Active") } + ], + button: [ + { value: ":link", label: (0, import_i18n.__)("Link") }, + { value: ":any-link", label: (0, import_i18n.__)("Any Link") }, + { value: ":visited", label: (0, import_i18n.__)("Visited") }, + { value: ":hover", label: (0, import_i18n.__)("Hover") }, + { value: ":focus", label: (0, import_i18n.__)("Focus") }, + { value: ":focus-visible", label: (0, import_i18n.__)("Focus Visible") }, + { value: ":active", label: (0, import_i18n.__)("Active") } + ] +}; +var VALID_BLOCK_STATES = { + "core/button": [ + { value: ":hover", label: (0, import_i18n.__)("Hover") }, + { value: ":focus", label: (0, import_i18n.__)("Focus") }, + { value: ":focus-visible", label: (0, import_i18n.__)("Focus Visible") }, + { value: ":active", label: (0, import_i18n.__)("Active") } + ] +}; function removePropertiesFromObject(object, properties) { if (!properties?.length) { return object; @@ -1907,7 +1957,7 @@ function hasThemeVariation({ settings, styles }) { - return title === (0, import_i18n.__)("Default") || Object.keys(settings || {}).length > 0 || Object.keys(styles || {}).length > 0; + return title === (0, import_i18n2.__)("Default") || Object.keys(settings || {}).length > 0 || Object.keys(styles || {}).length > 0; } function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) { const { variationsFromTheme } = (0, import_data.useSelect)((select) => { @@ -1925,7 +1975,7 @@ function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) { clonedUserVariation, properties ); - userVariationWithoutProperties.title = (0, import_i18n.__)("Default"); + userVariationWithoutProperties.title = (0, import_i18n2.__)("Default"); const variationsWithPropertiesAndBase = variationsFromTheme.filter((variation) => { return isVariationWithProperties(variation, properties); }).map((variation) => { @@ -1998,7 +2048,7 @@ function useStylesPreviewColors() { // packages/global-styles-ui/build-module/typography-example.mjs var import_element7 = __toESM(require_element(), 1); var import_components4 = __toESM(require_components(), 1); -var import_i18n3 = __toESM(require_i18n(), 1); +var import_i18n4 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/font-library/utils/preview-styles.mjs function findNearest(input, numbers) { @@ -2130,8 +2180,8 @@ function PreviewTypography({ lineHeight: 1 }, children: [ - /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n3._x)("A", "Uppercase letter A") }), - /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n3._x)("a", "Lowercase letter A") }) + /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n4._x)("A", "Uppercase letter A") }), + /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n4._x)("a", "Lowercase letter A") }) ] } ); @@ -2436,11 +2486,11 @@ var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-block-list.mjs var import_blocks2 = __toESM(require_blocks(), 1); -var import_i18n6 = __toESM(require_i18n(), 1); +var import_i18n7 = __toESM(require_i18n(), 1); var import_components11 = __toESM(require_components(), 1); var import_data4 = __toESM(require_data(), 1); var import_element9 = __toESM(require_element(), 1); -var import_block_editor2 = __toESM(require_block_editor(), 1); +var import_block_editor3 = __toESM(require_block_editor(), 1); var import_compose2 = __toESM(require_compose(), 1); import { speak } from "@wordpress/a11y"; @@ -2469,8 +2519,10 @@ function useBlockVariations(name2) { // packages/global-styles-ui/build-module/screen-header.mjs var import_components10 = __toESM(require_components(), 1); -var import_i18n5 = __toESM(require_i18n(), 1); +var import_i18n6 = __toESM(require_i18n(), 1); +var import_block_editor2 = __toESM(require_block_editor(), 1); var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); +var { StateControl } = unlock(import_block_editor2.privateApis); // packages/global-styles-ui/build-module/screen-block-list.mjs var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); @@ -2480,7 +2532,7 @@ var { useHasBorderPanel, useSettingsForBlockElement: useSettingsForBlockElement2, useHasColorPanel: useHasColorPanel2 -} = unlock(import_block_editor2.privateApis); +} = unlock(import_block_editor3.privateApis); function useSortedBlockTypes() { const blockItems = (0, import_data4.useSelect)( (select) => select(import_blocks2.store).getBlockTypes(), @@ -2520,7 +2572,7 @@ function BlockMenuItem({ block }) { { path: "/blocks/" + encodeURIComponent(block.name), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_components11.__experimentalHStack, { justify: "flex-start", children: [ - /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_block_editor2.BlockIcon, { icon: block.icon }), + /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_block_editor3.BlockIcon, { icon: block.icon }), /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components11.FlexItem, { children: block.title }) ] }) } @@ -2539,9 +2591,9 @@ function BlockList({ filterValue }) { return; } const count = blockTypesListRef.current?.childElementCount || 0; - const resultsFoundMessage = (0, import_i18n6.sprintf)( + const resultsFoundMessage = (0, import_i18n7.sprintf)( /* translators: %d: number of results. */ - (0, import_i18n6._n)("%d result found.", "%d results found.", count), + (0, import_i18n7._n)("%d result found.", "%d results found.", count), count ); debouncedSpeak(resultsFoundMessage, "polite"); @@ -2552,7 +2604,7 @@ function BlockList({ filterValue }) { ref: blockTypesListRef, className: "global-styles-ui-block-types-item-list", role: "list", - children: filteredBlockTypes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components11.__experimentalText, { align: "center", as: "p", children: (0, import_i18n6.__)("No blocks found.") }) : filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( + children: filteredBlockTypes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components11.__experimentalText, { align: "center", as: "p", children: (0, import_i18n7.__)("No blocks found.") }) : filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( BlockMenuItem, { block @@ -2566,15 +2618,15 @@ var MemoizedBlockList = (0, import_element9.memo)(BlockList); // packages/global-styles-ui/build-module/screen-block.mjs var import_blocks4 = __toESM(require_blocks(), 1); -var import_block_editor4 = __toESM(require_block_editor(), 1); +var import_block_editor5 = __toESM(require_block_editor(), 1); var import_element11 = __toESM(require_element(), 1); var import_data5 = __toESM(require_data(), 1); var import_core_data3 = __toESM(require_core_data(), 1); var import_components14 = __toESM(require_components(), 1); -var import_i18n7 = __toESM(require_i18n(), 1); +var import_i18n8 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/block-preview-panel.mjs -var import_block_editor3 = __toESM(require_block_editor(), 1); +var import_block_editor4 = __toESM(require_block_editor(), 1); var import_blocks3 = __toESM(require_blocks(), 1); var import_components12 = __toESM(require_components(), 1); var import_element10 = __toESM(require_element(), 1); @@ -2606,10 +2658,10 @@ var { FiltersPanel: StylesFiltersPanel, ImageSettingsPanel, AdvancedPanel: StylesAdvancedPanel -} = unlock(import_block_editor4.privateApis); +} = unlock(import_block_editor5.privateApis); // packages/global-styles-ui/build-module/screen-typography.mjs -var import_i18n21 = __toESM(require_i18n(), 1); +var import_i18n22 = __toESM(require_i18n(), 1); var import_components34 = __toESM(require_components(), 1); var import_element22 = __toESM(require_element(), 1); @@ -2618,7 +2670,7 @@ var import_components15 = __toESM(require_components(), 1); var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/typography-elements.mjs -var import_i18n8 = __toESM(require_i18n(), 1); +var import_i18n9 = __toESM(require_i18n(), 1); var import_components16 = __toESM(require_components(), 1); var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); @@ -2667,7 +2719,7 @@ var preview_typography_default = StylesPreviewTypography; var import_components18 = __toESM(require_components(), 1); var import_element12 = __toESM(require_element(), 1); var import_keycodes = __toESM(require_keycodes(), 1); -var import_i18n9 = __toESM(require_i18n(), 1); +var import_i18n10 = __toESM(require_i18n(), 1); var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); function Variation({ variation, @@ -2708,9 +2760,9 @@ function Variation({ ); let label = variation?.title; if (variation?.description) { - label = (0, import_i18n9.sprintf)( + label = (0, import_i18n10.sprintf)( /* translators: 1: variation title. 2: variation description. */ - (0, import_i18n9._x)("%1$s (%2$s)", "variation label"), + (0, import_i18n10._x)("%1$s (%2$s)", "variation label"), variation?.title, variation?.description ); @@ -2787,7 +2839,7 @@ function TypographyVariations({ } // packages/global-styles-ui/build-module/font-families.mjs -var import_i18n19 = __toESM(require_i18n(), 1); +var import_i18n20 = __toESM(require_i18n(), 1); var import_components32 = __toESM(require_components(), 1); var import_element21 = __toESM(require_element(), 1); @@ -2795,7 +2847,7 @@ var import_element21 = __toESM(require_element(), 1); var import_element13 = __toESM(require_element(), 1); var import_data6 = __toESM(require_data(), 1); var import_core_data5 = __toESM(require_core_data(), 1); -var import_i18n11 = __toESM(require_i18n(), 1); +var import_i18n12 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/font-library/api.mjs var import_api_fetch = __toESM(require_api_fetch(), 1); @@ -2844,22 +2896,22 @@ async function fetchInstallFontFace(fontFamilyId, data, registry) { var import_components20 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/font-library/utils/constants.mjs -var import_i18n10 = __toESM(require_i18n(), 1); +var import_i18n11 = __toESM(require_i18n(), 1); var ALLOWED_FILE_EXTENSIONS = ["otf", "ttf", "woff", "woff2"]; var FONT_WEIGHTS = { - 100: (0, import_i18n10._x)("Thin", "font weight"), - 200: (0, import_i18n10._x)("Extra-light", "font weight"), - 300: (0, import_i18n10._x)("Light", "font weight"), - 400: (0, import_i18n10._x)("Normal", "font weight"), - 500: (0, import_i18n10._x)("Medium", "font weight"), - 600: (0, import_i18n10._x)("Semi-bold", "font weight"), - 700: (0, import_i18n10._x)("Bold", "font weight"), - 800: (0, import_i18n10._x)("Extra-bold", "font weight"), - 900: (0, import_i18n10._x)("Black", "font weight") + 100: (0, import_i18n11._x)("Thin", "font weight"), + 200: (0, import_i18n11._x)("Extra-light", "font weight"), + 300: (0, import_i18n11._x)("Light", "font weight"), + 400: (0, import_i18n11._x)("Normal", "font weight"), + 500: (0, import_i18n11._x)("Medium", "font weight"), + 600: (0, import_i18n11._x)("Semi-bold", "font weight"), + 700: (0, import_i18n11._x)("Bold", "font weight"), + 800: (0, import_i18n11._x)("Extra-bold", "font weight"), + 900: (0, import_i18n11._x)("Black", "font weight") }; var FONT_STYLES = { - normal: (0, import_i18n10._x)("Normal", "font style"), - italic: (0, import_i18n10._x)("Italic", "font style") + normal: (0, import_i18n11._x)("Normal", "font style"), + italic: (0, import_i18n11._x)("Italic", "font style") }; // packages/global-styles-ui/build-module/font-library/utils/index.mjs @@ -3335,7 +3387,7 @@ function FontLibraryProvider({ children }) { await saveFontFamilies(activeFonts); } if (installationErrorMessages.length > 0) { - const installError = new Error((0, import_i18n11.__)("There was an error installing fonts.")); + const installError = new Error((0, import_i18n12.__)("There was an error installing fonts.")); installError.installationErrors = installationErrorMessages; throw installError; } @@ -3345,7 +3397,7 @@ function FontLibraryProvider({ children }) { } async function uninstallFontFamily(fontFamilyToUninstall) { if (!fontFamilyToUninstall?.id) { - throw new Error((0, import_i18n11.__)("Font family to uninstall is not defined.")); + throw new Error((0, import_i18n12.__)("Font family to uninstall is not defined.")); } try { await deleteEntityRecord( @@ -3478,7 +3530,7 @@ function FontLibraryProvider({ children }) { var context_default = FontLibraryProvider; // packages/global-styles-ui/build-module/font-library/modal.mjs -var import_i18n17 = __toESM(require_i18n(), 1); +var import_i18n18 = __toESM(require_i18n(), 1); var import_components30 = __toESM(require_components(), 1); var import_core_data8 = __toESM(require_core_data(), 1); var import_data8 = __toESM(require_data(), 1); @@ -3488,10 +3540,10 @@ var import_components24 = __toESM(require_components(), 1); var import_core_data6 = __toESM(require_core_data(), 1); var import_data7 = __toESM(require_data(), 1); var import_element16 = __toESM(require_element(), 1); -var import_i18n13 = __toESM(require_i18n(), 1); +var import_i18n14 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/font-library/font-card.mjs -var import_i18n12 = __toESM(require_i18n(), 1); +var import_i18n13 = __toESM(require_i18n(), 1); var import_components22 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/font-library/font-demo.mjs @@ -3608,16 +3660,16 @@ function FontCard({ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_components22.Flex, { justify: "space-between", wrap: false, children: [ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(font_demo_default, { font: font2 }), /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_components22.Flex, { justify: "flex-end", children: [ - /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.__experimentalText, { className: "font-library__font-card__count", children: variantsText || (0, import_i18n12.sprintf)( + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.__experimentalText, { className: "font-library__font-card__count", children: variantsText || (0, import_i18n13.sprintf)( /* translators: %d: Number of font variants. */ - (0, import_i18n12._n)( + (0, import_i18n13._n)( "%d variant", "%d variants", variantsCount ), variantsCount ) }) }), - /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(icon_default, { icon: (0, import_i18n12.isRTL)() ? chevron_left_default : chevron_right_default }) }) + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(icon_default, { icon: (0, import_i18n13.isRTL)() ? chevron_left_default : chevron_right_default }) }) ] }) ] }) } @@ -3757,14 +3809,14 @@ function InstalledFonts() { await saveFontFamilies(fontFamilies); setNotice({ type: "success", - message: (0, import_i18n13.__)("Font family updated successfully.") + message: (0, import_i18n14.__)("Font family updated successfully.") }); } catch (error) { setNotice({ type: "error", - message: (0, import_i18n13.sprintf)( + message: (0, import_i18n14.sprintf)( /* translators: %s: error message */ - (0, import_i18n13.__)("There was an error updating the font family. %s"), + (0, import_i18n14.__)("There was an error updating the font family. %s"), error.message ) }); @@ -3791,9 +3843,9 @@ function InstalledFonts() { font2.slug, font2.source ).length; - return (0, import_i18n13.sprintf)( + return (0, import_i18n14.sprintf)( /* translators: 1: Active font variants, 2: Total font variants. */ - (0, import_i18n13.__)("%1$d/%2$d variants active"), + (0, import_i18n14.__)("%1$d/%2$d variants active"), variantsActive, variantsInstalled ); @@ -3853,12 +3905,12 @@ function InstalledFonts() { children: notice.message } ), - !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalText, { as: "p", children: (0, import_i18n13.__)("No fonts installed.") }), + !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalText, { as: "p", children: (0, import_i18n14.__)("No fonts installed.") }), baseThemeFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { children: [ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", { className: "font-library__fonts-title", /* translators: Heading for a list of fonts provided by the theme. */ - children: (0, import_i18n13._x)("Theme", "font source") + children: (0, import_i18n14._x)("Theme", "font source") }), /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( "ul", @@ -3895,7 +3947,7 @@ function InstalledFonts() { /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", { className: "font-library__fonts-title", /* translators: Heading for a list of fonts installed by the user. */ - children: (0, import_i18n13._x)("Custom", "font source") + children: (0, import_i18n14._x)("Custom", "font source") }), /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( "ul", @@ -3945,7 +3997,7 @@ function InstalledFonts() { /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( import_components24.Navigator.BackButton, { - icon: (0, import_i18n13.isRTL)() ? chevron_right_default : chevron_left_default, + icon: (0, import_i18n14.isRTL)() ? chevron_right_default : chevron_left_default, size: "small", onClick: () => { handleSetLibraryFontSelected( @@ -3953,7 +4005,7 @@ function InstalledFonts() { ); setNotice(null); }, - label: (0, import_i18n13.__)("Back") + label: (0, import_i18n14.__)("Back") } ), /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( @@ -3979,7 +4031,7 @@ function InstalledFonts() { /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 1 }) ] }), /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 4 }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalText, { children: (0, import_i18n13.__)( + /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalText, { children: (0, import_i18n14.__)( "Choose font variants. Keep in mind that too many variants could make your site slower." ) }), /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 4 }), @@ -3988,7 +4040,7 @@ function InstalledFonts() { import_components24.CheckboxControl, { className: "font-library__select-all", - label: (0, import_i18n13.__)("Select all"), + label: (0, import_i18n14.__)("Select all"), checked: isSelectAllChecked, onChange: toggleSelectAll, indeterminate: isIndeterminate @@ -4033,7 +4085,7 @@ function InstalledFonts() { isDestructive: true, variant: "tertiary", onClick: handleUninstallClick, - children: (0, import_i18n13.__)("Delete") + children: (0, import_i18n14.__)("Delete") } ), /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( @@ -4044,7 +4096,7 @@ function InstalledFonts() { onClick: handleUpdate, disabled: !fontFamiliesHasChanges, accessibleWhenDisabled: true, - children: (0, import_i18n13.__)("Update") + children: (0, import_i18n14.__)("Update") } ) ] }) @@ -4069,12 +4121,12 @@ function ConfirmDeleteDialog({ handleSetLibraryFontSelected(void 0); setNotice({ type: "success", - message: (0, import_i18n13.__)("Font family uninstalled successfully.") + message: (0, import_i18n14.__)("Font family uninstalled successfully.") }); } catch (error) { setNotice({ type: "error", - message: (0, import_i18n13.__)("There was an error uninstalling the font family.") + error.message + message: (0, import_i18n14.__)("There was an error uninstalling the font family.") + error.message }); } }; @@ -4085,14 +4137,14 @@ function ConfirmDeleteDialog({ import_components24.__experimentalConfirmDialog, { isOpen, - cancelButtonText: (0, import_i18n13.__)("Cancel"), - confirmButtonText: (0, import_i18n13.__)("Delete"), + cancelButtonText: (0, import_i18n14.__)("Cancel"), + confirmButtonText: (0, import_i18n14.__)("Delete"), onCancel: handleCancelUninstall, onConfirm: handleConfirmUninstall, size: "medium", - children: font2 && (0, import_i18n13.sprintf)( + children: font2 && (0, import_i18n14.sprintf)( /* translators: %s: Name of the font. */ - (0, import_i18n13.__)( + (0, import_i18n14.__)( 'Are you sure you want to delete "%s" font and all its variants and assets?' ), font2.name @@ -4106,7 +4158,7 @@ var installed_fonts_default = InstalledFonts; var import_element18 = __toESM(require_element(), 1); var import_components27 = __toESM(require_components(), 1); var import_compose3 = __toESM(require_compose(), 1); -var import_i18n15 = __toESM(require_i18n(), 1); +var import_i18n16 = __toESM(require_i18n(), 1); var import_core_data7 = __toESM(require_core_data(), 1); // packages/global-styles-ui/build-module/font-library/utils/filter-fonts.mjs @@ -4150,7 +4202,7 @@ function isFontFontFaceInOutline(slug, face, outline) { } // packages/global-styles-ui/build-module/font-library/google-fonts-confirm-dialog.mjs -var import_i18n14 = __toESM(require_i18n(), 1); +var import_i18n15 = __toESM(require_i18n(), 1); var import_components25 = __toESM(require_components(), 1); var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); function GoogleFontsConfirmDialog() { @@ -4162,13 +4214,13 @@ function GoogleFontsConfirmDialog() { window.dispatchEvent(new Event("storage")); }; return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "font-library__google-fonts-confirm", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_components25.CardBody, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalHeading, { level: 2, children: (0, import_i18n14.__)("Connect to Google Fonts") }), + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalHeading, { level: 2, children: (0, import_i18n15.__)("Connect to Google Fonts") }), /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 6 }), - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n14.__)( + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n15.__)( "To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts." ) }), /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 3 }), - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n14.__)( + /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n15.__)( "You can alternatively upload files directly on the Upload tab." ) }), /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 6 }), @@ -4178,7 +4230,7 @@ function GoogleFontsConfirmDialog() { __next40pxDefaultSize: true, variant: "primary", onClick: handleConfirm, - children: (0, import_i18n14.__)("Allow access to Google Fonts") + children: (0, import_i18n15.__)("Allow access to Google Fonts") } ) ] }) }) }); @@ -4229,7 +4281,7 @@ var collection_font_variant_default = CollectionFontVariant; var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); var DEFAULT_CATEGORY = { slug: "all", - name: (0, import_i18n15._x)("All", "font categories") + name: (0, import_i18n16._x)("All", "font categories") }; var LOCAL_STORAGE_ITEM = "wp-font-library-google-fonts-permission"; var MIN_WINDOW_HEIGHT = 500; @@ -4333,7 +4385,7 @@ function FontCollection({ slug }) { } catch (error) { setNotice({ type: "error", - message: (0, import_i18n15.__)( + message: (0, import_i18n16.__)( "Error installing the fonts, could not be downloaded." ) }); @@ -4343,7 +4395,7 @@ function FontCollection({ slug }) { await installFonts([fontFamily]); setNotice({ type: "success", - message: (0, import_i18n15.__)("Fonts were installed successfully.") + message: (0, import_i18n16.__)("Fonts were installed successfully.") }); } catch (error) { setNotice({ @@ -4379,13 +4431,13 @@ function FontCollection({ slug }) { import_components27.DropdownMenu, { icon: more_vertical_default, - label: (0, import_i18n15.__)("Actions"), + label: (0, import_i18n16.__)("Actions"), popoverProps: { position: "bottom left" }, controls: [ { - title: (0, import_i18n15.__)("Revoke access to Google Fonts"), + title: (0, import_i18n16.__)("Revoke access to Google Fonts"), onClick: revokeAccess } ] @@ -4415,8 +4467,8 @@ function FontCollection({ slug }) { import_components27.SearchControl, { value: filters.search, - placeholder: (0, import_i18n15.__)("Font name\u2026"), - label: (0, import_i18n15.__)("Search"), + placeholder: (0, import_i18n16.__)("Font name\u2026"), + label: (0, import_i18n16.__)("Search"), onChange: debouncedUpdateSearchInput, hideLabelFromVision: false } @@ -4425,7 +4477,7 @@ function FontCollection({ slug }) { import_components27.SelectControl, { __next40pxDefaultSize: true, - label: (0, import_i18n15.__)("Category"), + label: (0, import_i18n16.__)("Category"), value: filters.category, onChange: handleCategoryFilter, children: categories && categories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( @@ -4440,7 +4492,7 @@ function FontCollection({ slug }) { ) ] }), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }), - !!selectedCollection?.font_families?.length && !fonts.length && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: (0, import_i18n15.__)( + !!selectedCollection?.font_families?.length && !fonts.length && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: (0, import_i18n16.__)( "No fonts found. Try with a different search term." ) }), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "font-library__fonts-grid__main", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( @@ -4475,13 +4527,13 @@ function FontCollection({ slug }) { /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( import_components27.Navigator.BackButton, { - icon: (0, import_i18n15.isRTL)() ? chevron_right_default : chevron_left_default, + icon: (0, import_i18n16.isRTL)() ? chevron_right_default : chevron_left_default, size: "small", onClick: () => { setSelectedFont(null); setNotice(null); }, - label: (0, import_i18n15.__)("Back") + label: (0, import_i18n16.__)("Back") } ), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( @@ -4507,13 +4559,13 @@ function FontCollection({ slug }) { /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 1 }) ] }), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: (0, import_i18n15.__)("Select font variants to install.") }), + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: (0, import_i18n16.__)("Select font variants to install.") }), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( import_components27.CheckboxControl, { className: "font-library__select-all", - label: (0, import_i18n15.__)("Select all"), + label: (0, import_i18n16.__)("Select all"), checked: isSelectAllChecked, onChange: toggleSelectAll, indeterminate: isIndeterminate @@ -4568,7 +4620,7 @@ function FontCollection({ slug }) { isBusy: isInstalling, disabled: fontsToInstall.length === 0 || isInstalling, accessibleWhenDisabled: true, - children: (0, import_i18n15.__)("Install") + children: (0, import_i18n16.__)("Install") } ) } @@ -4589,9 +4641,9 @@ function FontCollection({ slug }) { spacing: 1, className: "font-library__page-selection", children: (0, import_element18.createInterpolateElement)( - (0, import_i18n15.sprintf)( + (0, import_i18n16.sprintf)( // translators: 1: Current page number, 2: Total number of pages. - (0, import_i18n15._x)( + (0, import_i18n16._x)( "<div>Page</div>%1$s<div>of %2$d</div>", "paging" ), @@ -4603,7 +4655,7 @@ function FontCollection({ slug }) { CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( import_components27.SelectControl, { - "aria-label": (0, import_i18n15.__)( + "aria-label": (0, import_i18n16.__)( "Current page" ), value: page.toString(), @@ -4633,8 +4685,8 @@ function FontCollection({ slug }) { onClick: () => setPage(page - 1), disabled: page === 1, accessibleWhenDisabled: true, - label: (0, import_i18n15.__)("Previous page"), - icon: (0, import_i18n15.isRTL)() ? next_default : previous_default, + label: (0, import_i18n16.__)("Previous page"), + icon: (0, import_i18n16.isRTL)() ? next_default : previous_default, showTooltip: true, size: "compact", tooltipPosition: "top" @@ -4646,8 +4698,8 @@ function FontCollection({ slug }) { onClick: () => setPage(page + 1), disabled: page === totalPages, accessibleWhenDisabled: true, - label: (0, import_i18n15.__)("Next page"), - icon: (0, import_i18n15.isRTL)() ? previous_default : next_default, + label: (0, import_i18n16.__)("Next page"), + icon: (0, import_i18n16.isRTL)() ? previous_default : next_default, showTooltip: true, size: "compact", tooltipPosition: "top" @@ -4663,7 +4715,7 @@ function FontCollection({ slug }) { var font_collection_default = FontCollection; // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs -var import_i18n16 = __toESM(require_i18n(), 1); +var import_i18n17 = __toESM(require_i18n(), 1); var import_components29 = __toESM(require_components(), 1); var import_element19 = __toESM(require_element(), 1); @@ -7603,8 +7655,8 @@ var unbrotli_default = (function() { ringbuffer, ringbuffer_size ); - for (var _x9 = 0; _x9 < copy_dst - ringbuffer_end; _x9++) - ringbuffer[_x9] = ringbuffer[ringbuffer_end + _x9]; + for (var _x10 = 0; _x10 < copy_dst - ringbuffer_end; _x10++) + ringbuffer[_x10] = ringbuffer[ringbuffer_end + _x10]; } } else { throw new Error( @@ -8483,12 +8535,12 @@ var inflate_default = (function() { var STR_APPLY_UIA_OK = true; try { String.fromCharCode.apply(null, [0]); - } catch (__42) { + } catch (__43) { STR_APPLY_OK = false; } try { String.fromCharCode.apply(null, new Uint8Array(1)); - } catch (__42) { + } catch (__43) { STR_APPLY_UIA_OK = false; } var _utf8len = new utils.Buf8(256); @@ -14762,7 +14814,7 @@ function UploadFonts() { if (allowedFiles.length > 0) { loadFiles(allowedFiles); } else { - const message = hasInvalidFiles ? (0, import_i18n16.__)("Sorry, you are not allowed to upload this file type.") : (0, import_i18n16.__)("No fonts found to install."); + const message = hasInvalidFiles ? (0, import_i18n17.__)("Sorry, you are not allowed to upload this file type.") : (0, import_i18n17.__)("No fonts found to install."); setNotice({ type: "error", message @@ -14832,7 +14884,7 @@ function UploadFonts() { await installFonts(fontFamilies); setNotice({ type: "success", - message: (0, import_i18n16.__)("Fonts were installed successfully.") + message: (0, import_i18n17.__)("Fonts were installed successfully.") }); } catch (error) { const typedError = error; @@ -14874,12 +14926,12 @@ function UploadFonts() { __next40pxDefaultSize: true, className: "font-library__upload-area", onClick: openFileDialog, - children: (0, import_i18n16.__)("Upload font") + children: (0, import_i18n17.__)("Upload font") } ) } ), - /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.__experimentalText, { className: "font-library__upload-area__text", children: (0, import_i18n16.__)( + /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.__experimentalText, { className: "font-library__upload-area__text", children: (0, import_i18n17.__)( "Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2." ) }) ] }) @@ -14892,15 +14944,15 @@ var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); var { Tabs } = unlock(import_components30.privateApis); var DEFAULT_TAB = { id: "installed-fonts", - title: (0, import_i18n17._x)("Library", "Font library") + title: (0, import_i18n18._x)("Library", "Font library") }; var UPLOAD_TAB = { id: "upload-fonts", - title: (0, import_i18n17._x)("Upload", "noun") + title: (0, import_i18n18._x)("Upload", "noun") }; // packages/global-styles-ui/build-module/font-family-item.mjs -var import_i18n18 = __toESM(require_i18n(), 1); +var import_i18n19 = __toESM(require_i18n(), 1); var import_components31 = __toESM(require_components(), 1); var import_element20 = __toESM(require_element(), 1); var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); @@ -14909,7 +14961,7 @@ var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes-count.mjs -var import_i18n20 = __toESM(require_i18n(), 1); +var import_i18n21 = __toESM(require_i18n(), 1); var import_components33 = __toESM(require_components(), 1); var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); @@ -14917,14 +14969,14 @@ var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-typography-element.mjs -var import_i18n22 = __toESM(require_i18n(), 1); +var import_i18n23 = __toESM(require_i18n(), 1); var import_components35 = __toESM(require_components(), 1); var import_element23 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/typography-panel.mjs -var import_block_editor5 = __toESM(require_block_editor(), 1); +var import_block_editor6 = __toESM(require_block_editor(), 1); var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); -var { useSettingsForBlockElement: useSettingsForBlockElement4, TypographyPanel: StylesTypographyPanel2 } = unlock(import_block_editor5.privateApis); +var { useSettingsForBlockElement: useSettingsForBlockElement4, TypographyPanel: StylesTypographyPanel2 } = unlock(import_block_editor6.privateApis); // packages/global-styles-ui/build-module/typography-preview.mjs var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); @@ -14933,35 +14985,35 @@ var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); var elements = { text: { - description: (0, import_i18n22.__)("Manage the fonts used on the site."), - title: (0, import_i18n22.__)("Text") + description: (0, import_i18n23.__)("Manage the fonts used on the site."), + title: (0, import_i18n23.__)("Text") }, link: { - description: (0, import_i18n22.__)("Manage the fonts and typography used on the links."), - title: (0, import_i18n22.__)("Links") + description: (0, import_i18n23.__)("Manage the fonts and typography used on the links."), + title: (0, import_i18n23.__)("Links") }, heading: { - description: (0, import_i18n22.__)("Manage the fonts and typography used on headings."), - title: (0, import_i18n22.__)("Headings") + description: (0, import_i18n23.__)("Manage the fonts and typography used on headings."), + title: (0, import_i18n23.__)("Headings") }, caption: { - description: (0, import_i18n22.__)("Manage the fonts and typography used on captions."), - title: (0, import_i18n22.__)("Captions") + description: (0, import_i18n23.__)("Manage the fonts and typography used on captions."), + title: (0, import_i18n23.__)("Captions") }, button: { - description: (0, import_i18n22.__)("Manage the fonts and typography used on buttons."), - title: (0, import_i18n22.__)("Buttons") + description: (0, import_i18n23.__)("Manage the fonts and typography used on buttons."), + title: (0, import_i18n23.__)("Buttons") } }; // packages/global-styles-ui/build-module/screen-colors.mjs -var import_i18n24 = __toESM(require_i18n(), 1); +var import_i18n25 = __toESM(require_i18n(), 1); var import_components38 = __toESM(require_components(), 1); -var import_block_editor6 = __toESM(require_block_editor(), 1); +var import_block_editor7 = __toESM(require_block_editor(), 1); // packages/global-styles-ui/build-module/palette.mjs var import_components37 = __toESM(require_components(), 1); -var import_i18n23 = __toESM(require_i18n(), 1); +var import_i18n24 = __toESM(require_i18n(), 1); var import_element24 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/color-indicator-wrapper.mjs @@ -14974,17 +15026,17 @@ var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-colors.mjs var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); var { useSettingsForBlockElement: useSettingsForBlockElement5, ColorPanel: StylesColorPanel2 } = unlock( - import_block_editor6.privateApis + import_block_editor7.privateApis ); // packages/global-styles-ui/build-module/screen-color-palette.mjs -var import_i18n27 = __toESM(require_i18n(), 1); +var import_i18n28 = __toESM(require_i18n(), 1); var import_components43 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/color-palette-panel.mjs var import_compose4 = __toESM(require_compose(), 1); var import_components41 = __toESM(require_components(), 1); -var import_i18n25 = __toESM(require_i18n(), 1); +var import_i18n26 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/variations/variations-color.mjs var import_components40 = __toESM(require_components(), 1); @@ -15093,7 +15145,7 @@ var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/gradients-palette-panel.mjs var import_compose5 = __toESM(require_compose(), 1); var import_components42 = __toESM(require_components(), 1); -var import_i18n26 = __toESM(require_i18n(), 1); +var import_i18n27 = __toESM(require_i18n(), 1); var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-color-palette.mjs @@ -15101,29 +15153,29 @@ var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); var { Tabs: Tabs2 } = unlock(import_components43.privateApis); // packages/global-styles-ui/build-module/screen-background.mjs -var import_i18n28 = __toESM(require_i18n(), 1); -var import_block_editor8 = __toESM(require_block_editor(), 1); +var import_i18n29 = __toESM(require_i18n(), 1); +var import_block_editor9 = __toESM(require_block_editor(), 1); var import_components44 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/background-panel.mjs -var import_block_editor7 = __toESM(require_block_editor(), 1); +var import_block_editor8 = __toESM(require_block_editor(), 1); var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); var { BackgroundPanel: StylesBackgroundPanel2 } = unlock( - import_block_editor7.privateApis + import_block_editor8.privateApis ); // packages/global-styles-ui/build-module/screen-background.mjs var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); -var { useHasBackgroundPanel: useHasBackgroundPanel3 } = unlock(import_block_editor8.privateApis); +var { useHasBackgroundPanel: useHasBackgroundPanel3 } = unlock(import_block_editor9.privateApis); // packages/global-styles-ui/build-module/shadows-panel.mjs var import_components46 = __toESM(require_components(), 1); -var import_i18n30 = __toESM(require_i18n(), 1); +var import_i18n31 = __toESM(require_i18n(), 1); var import_element25 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/confirm-reset-shadow-dialog.mjs var import_components45 = __toESM(require_components(), 1); -var import_i18n29 = __toESM(require_i18n(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/shadows-panel.mjs @@ -15132,23 +15184,23 @@ var { Menu } = unlock(import_components46.privateApis); // packages/global-styles-ui/build-module/shadows-edit-panel.mjs var import_components47 = __toESM(require_components(), 1); -var import_i18n31 = __toESM(require_i18n(), 1); +var import_i18n32 = __toESM(require_i18n(), 1); var import_element26 = __toESM(require_element(), 1); var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu2 } = unlock(import_components47.privateApis); var customShadowMenuItems = [ { - label: (0, import_i18n31.__)("Rename"), + label: (0, import_i18n32.__)("Rename"), action: "rename" }, { - label: (0, import_i18n31.__)("Delete"), + label: (0, import_i18n32.__)("Delete"), action: "delete" } ]; var presetShadowMenuItems = [ { - label: (0, import_i18n31.__)("Reset"), + label: (0, import_i18n32.__)("Reset"), action: "reset" } ]; @@ -15157,27 +15209,27 @@ var presetShadowMenuItems = [ var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-layout.mjs -var import_i18n32 = __toESM(require_i18n(), 1); -var import_block_editor10 = __toESM(require_block_editor(), 1); +var import_i18n33 = __toESM(require_i18n(), 1); +var import_block_editor11 = __toESM(require_block_editor(), 1); // packages/global-styles-ui/build-module/dimensions-panel.mjs -var import_block_editor9 = __toESM(require_block_editor(), 1); +var import_block_editor10 = __toESM(require_block_editor(), 1); var import_element27 = __toESM(require_element(), 1); var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); -var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock(import_block_editor9.privateApis); +var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock(import_block_editor10.privateApis); // packages/global-styles-ui/build-module/screen-layout.mjs var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); var { useHasDimensionsPanel: useHasDimensionsPanel4, useSettingsForBlockElement: useSettingsForBlockElement7 } = unlock( - import_block_editor10.privateApis + import_block_editor11.privateApis ); // packages/global-styles-ui/build-module/screen-style-variations.mjs var import_components50 = __toESM(require_components(), 1); -var import_i18n35 = __toESM(require_i18n(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/style-variations-content.mjs -var import_i18n34 = __toESM(require_i18n(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); var import_components49 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/style-variations-container.mjs @@ -15185,7 +15237,7 @@ var import_core_data9 = __toESM(require_core_data(), 1); var import_data9 = __toESM(require_data(), 1); var import_element28 = __toESM(require_element(), 1); var import_components48 = __toESM(require_components(), 1); -var import_i18n33 = __toESM(require_i18n(), 1); +var import_i18n34 = __toESM(require_i18n(), 1); var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); function StyleVariationsContainer({ gap = 2 @@ -15209,7 +15261,7 @@ function StyleVariationsContainer({ const themeVariations = (0, import_element28.useMemo)(() => { const withEmptyVariation = [ { - title: (0, import_i18n33.__)("Default"), + title: (0, import_i18n34.__)("Default"), settings: {}, styles: {} }, @@ -15281,14 +15333,14 @@ var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-css.mjs -var import_i18n36 = __toESM(require_i18n(), 1); +var import_i18n37 = __toESM(require_i18n(), 1); var import_components51 = __toESM(require_components(), 1); -var import_block_editor11 = __toESM(require_block_editor(), 1); +var import_block_editor12 = __toESM(require_block_editor(), 1); var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); -var { AdvancedPanel: StylesAdvancedPanel2 } = unlock(import_block_editor11.privateApis); +var { AdvancedPanel: StylesAdvancedPanel2 } = unlock(import_block_editor12.privateApis); // packages/global-styles-ui/build-module/screen-revisions/index.mjs -var import_i18n39 = __toESM(require_i18n(), 1); +var import_i18n40 = __toESM(require_i18n(), 1); var import_components54 = __toESM(require_components(), 1); var import_element30 = __toESM(require_element(), 1); @@ -15298,7 +15350,7 @@ var import_core_data10 = __toESM(require_core_data(), 1); var import_element29 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-revisions/revisions-buttons.mjs -var import_i18n37 = __toESM(require_i18n(), 1); +var import_i18n38 = __toESM(require_i18n(), 1); var import_components52 = __toESM(require_components(), 1); var import_date = __toESM(require_date(), 1); var import_core_data11 = __toESM(require_core_data(), 1); @@ -15309,20 +15361,20 @@ var DAY_IN_MILLISECONDS = 60 * 60 * 1e3 * 24; // packages/global-styles-ui/build-module/pagination/index.mjs var import_components53 = __toESM(require_components(), 1); -var import_i18n38 = __toESM(require_i18n(), 1); +var import_i18n39 = __toESM(require_i18n(), 1); var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-revisions/index.mjs var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs -var import_i18n41 = __toESM(require_i18n(), 1); +var import_i18n42 = __toESM(require_i18n(), 1); var import_components56 = __toESM(require_components(), 1); var import_element31 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-sizes/confirm-reset-font-sizes-dialog.mjs var import_components55 = __toESM(require_components(), 1); -var import_i18n40 = __toESM(require_i18n(), 1); +var import_i18n41 = __toESM(require_i18n(), 1); var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs @@ -15330,23 +15382,23 @@ var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu3 } = unlock(import_components56.privateApis); // packages/global-styles-ui/build-module/font-sizes/font-size.mjs -var import_i18n45 = __toESM(require_i18n(), 1); +var import_i18n46 = __toESM(require_i18n(), 1); var import_components60 = __toESM(require_components(), 1); var import_element33 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-sizes/font-size-preview.mjs -var import_block_editor12 = __toESM(require_block_editor(), 1); -var import_i18n42 = __toESM(require_i18n(), 1); +var import_block_editor13 = __toESM(require_block_editor(), 1); +var import_i18n43 = __toESM(require_i18n(), 1); var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/confirm-delete-font-size-dialog.mjs var import_components57 = __toESM(require_components(), 1); -var import_i18n43 = __toESM(require_i18n(), 1); +var import_i18n44 = __toESM(require_i18n(), 1); var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/rename-font-size-dialog.mjs var import_components58 = __toESM(require_components(), 1); -var import_i18n44 = __toESM(require_i18n(), 1); +var import_i18n45 = __toESM(require_i18n(), 1); var import_element32 = __toESM(require_element(), 1); var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); @@ -15429,10 +15481,10 @@ var { unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPI ); // routes/font-list/style.scss -if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='4bbd4c3e39']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='89af99528f']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "4bbd4c3e39"); - style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); + style.setAttribute("data-wp-hash", "89af99528f"); + style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); document.head.appendChild(style); } @@ -15457,22 +15509,22 @@ function FontLibraryPage() { const tabs = [ { id: "installed-fonts", - title: (0, import_i18n46.__)("Library") + title: (0, import_i18n47._x)("Library", "Font library") } ]; if (canUserCreate) { tabs.push({ id: "upload-fonts", - title: (0, import_i18n46.__)("Upload") + title: (0, import_i18n47._x)("Upload", "noun") }); tabs.push( ...(collections || []).map(({ slug, name: name2 }) => ({ id: slug, - title: collections && collections.length === 1 && slug === "google-fonts" ? (0, import_i18n46.__)("Install Fonts") : name2 + title: collections && collections.length === 1 && slug === "google-fonts" ? (0, import_i18n47.__)("Install Fonts") : name2 })) ); } - return /* @__PURE__ */ React.createElement(page_default, { title: (0, import_i18n46.__)("Fonts") }, /* @__PURE__ */ React.createElement( + return /* @__PURE__ */ React.createElement(page_default, { title: (0, import_i18n47.__)("Fonts") }, /* @__PURE__ */ React.createElement( Tabs3, { selectedTabId: activeTab, diff --git a/src/wp-includes/build/routes/font-list/content.min.asset.php b/src/wp-includes/build/routes/font-list/content.min.asset.php index cc0fc7a6eb103..379a4ad1e1e3f 100644 --- a/src/wp-includes/build/routes/font-list/content.min.asset.php +++ b/src/wp-includes/build/routes/font-list/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'f4a76b3cfc58409a8d9c'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '29daf8630955185dfb8c'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/font-list/content.min.js b/src/wp-includes/build/routes/font-list/content.min.js index 576cc3541569e..4f393e4722364 100644 --- a/src/wp-includes/build/routes/font-list/content.min.js +++ b/src/wp-includes/build/routes/font-list/content.min.js @@ -1,12 +1,12 @@ -var Xu=Object.create;var ra=Object.defineProperty;var Ku=Object.getOwnPropertyDescriptor;var Ju=Object.getOwnPropertyNames;var Qu=Object.getPrototypeOf,$u=Object.prototype.hasOwnProperty;var ue=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var tf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ju(e))!$u.call(t,s)&&s!==r&&ra(t,s,{get:()=>e[s],enumerable:!(o=Ku(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Xu(Qu(t)):{},tf(e||!t||!t.__esModule?ra(r,"default",{value:t,enumerable:!0}):r,t));var ut=Ht((Jg,oa)=>{oa.exports=window.wp.i18n});var X=Ht((Qg,sa)=>{sa.exports=window.wp.components});var z=Ht(($g,na)=>{na.exports=window.ReactJSXRuntime});var yt=Ht((ey,ia)=>{ia.exports=window.wp.element});var _r=Ht((sy,da)=>{da.exports=window.React});var Pr=Ht((Iy,_a)=>{_a.exports=window.wp.primitives});var Vs=Ht((Xy,Pa)=>{Pa.exports=window.wp.privateApis});var cr=Ht((Ky,Aa)=>{Aa.exports=window.wp.compose});var Na=Ht((dv,Va)=>{Va.exports=window.wp.editor});var be=Ht((mv,za)=>{za.exports=window.wp.coreData});var fe=Ht((pv,Ma)=>{Ma.exports=window.wp.data});var Rr=Ht((hv,Ga)=>{Ga.exports=window.wp.blocks});var ce=Ht((gv,ja)=>{ja.exports=window.wp.blockEditor});var Ha=Ht((xv,Ua)=>{Ua.exports=window.wp.styleEngine});var Xa=Ht((Lv,Za)=>{"use strict";Za.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var $a=Ht((Dv,Qa)=>{"use strict";var Pf=function(e){return Af(e)&&!Rf(e)};function Af(t){return!!t&&typeof t=="object"}function Rf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Lf(t)}var Ef=typeof Symbol=="function"&&Symbol.for,If=Ef?Symbol.for("react.element"):60103;function Lf(t){return t.$$typeof===If}function Bf(t){return Array.isArray(t)?[]:{}}function so(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Ir(Bf(t),t,e):t}function Df(t,e,r){return t.concat(e).map(function(o){return so(o,r)})}function Vf(t,e){if(!e.customMerge)return Ir;var r=e.customMerge(t);return typeof r=="function"?r:Ir}function Nf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function Ka(t){return Object.keys(t).concat(Nf(t))}function Ja(t,e){try{return e in t}catch{return!1}}function zf(t,e){return Ja(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function Mf(t,e,r){var o={};return r.isMergeableObject(t)&&Ka(t).forEach(function(s){o[s]=so(t[s],r)}),Ka(e).forEach(function(s){zf(t,s)||(Ja(t,s)&&r.isMergeableObject(e[s])?o[s]=Vf(s,r)(t[s],e[s],r):o[s]=so(e[s],r))}),o}function Ir(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||Df,r.isMergeableObject=r.isMergeableObject||Pf,r.cloneUnlessOtherwiseSpecified=so;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):Mf(t,e,r):so(e,r)}Ir.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Ir(o,s,r)},{})};var Gf=Ir;Qa.exports=Gf});var dn=Ht((H0,Ki)=>{Ki.exports=window.wp.keycodes});var el=Ht((eb,tl)=>{tl.exports=window.wp.apiFetch});var _u=Ht((FF,Tu)=>{Tu.exports=window.wp.date});function aa(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e<s;e++)t[e]&&(r=aa(t[e]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}function ef(){for(var t,e,r=0,o="",s=arguments.length;r<s;r++)(t=arguments[r])&&(e=aa(t))&&(o&&(o+=" "),o+=e);return o}var ve=ef;var la=u(yt(),1),ua=u(z(),1),fa=(0,la.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...s},a)=>(0,ua.jsx)(o,{ref:a,className:ve("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));fa.displayName="NavigableRegion";var ca=fa;var pa=u(_r(),1),ma={};function Fs(t,e){let r=pa.useRef(ma);return r.current===ma&&(r.current=t(e)),r}function ks(t,...e){let r=new URL(`https://base-ui.com/production-error/${t}`);return e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var Oo=u(_r(),1);function Os(t,e,r,o){let s=Fs(ga).current;return rf(s,t,e,r,o)&&ya(s,[t,e,r,o]),s.callback}function ha(t){let e=Fs(ga).current;return of(e,t)&&ya(e,t),e.callback}function ga(){return{callback:null,cleanup:null,refs:[]}}function rf(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function of(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function ya(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}t.cleanup=()=>{for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var wa=u(_r(),1);var va=u(_r(),1),sf=parseInt(va.version,10);function ba(t){return sf>=t}function Ts(t){if(!wa.isValidElement(t))return null;let e=t,r=e.props;return(ba(19)?r?.ref:e.ref)??null}function Jr(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Sa(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function xa(t,e){return typeof t=="function"?t(e):t}function Ca(t,e){return typeof t=="function"?t(e):t}var $r={};function ko(t,e,r,o,s){let a={..._s(t,$r)};return e&&(a=Qr(a,e)),r&&(a=Qr(a,r)),o&&(a=Qr(a,o)),s&&(a=Qr(a,s)),a}function Fa(t){if(t.length===0)return $r;if(t.length===1)return _s(t[0],$r);let e={..._s(t[0],$r)};for(let r=1;r<t.length;r+=1)e=Qr(e,t[r]);return e}function Qr(t,e){return ka(e)?e(t):nf(t,e)}function nf(t,e){if(!e)return t;for(let r in e){let o=e[r];switch(r){case"style":{t[r]=Jr(t.style,o);break}case"className":{t[r]=Ps(t.className,o);break}default:af(r,o)?t[r]=lf(t[r],o):t[r]=o}}return t}function af(t,e){let r=t.charCodeAt(0),o=t.charCodeAt(1),s=t.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function ka(t){return typeof t=="function"}function _s(t,e){return ka(t)?t(e):t??$r}function lf(t,e){return e?t?r=>{if(ff(r)){let s=r;uf(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:e:t}function uf(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Ps(t,e){return e?t?e+" "+t:e:t}function ff(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var cf=Object.freeze([]),Ke=Object.freeze({});var As=u(_r(),1);function Oa(t,e,r={}){let o=e.render,s=df(e,r);if(r.enabled===!1)return null;let a=r.state??Ke;return mf(t,o,s,a)}function df(t,e={}){let{className:r,style:o,render:s}=t,{state:a=Ke,ref:n,props:l,stateAttributesMapping:m,enabled:f=!0}=e,c=f?xa(r,a):void 0,d=f?Ca(o,a):void 0,g=f?Sa(a,m):Ke,h=f?Jr(g,Array.isArray(l)?Fa(l):l)??Ke:Ke;return typeof document<"u"&&(f?Array.isArray(n)?h.ref=ha([h.ref,Ts(s),...n]):h.ref=Os(h.ref,Ts(s),n):Os(null,null)),f?(c!==void 0&&(h.className=Ps(h.className,c)),d!==void 0&&(h.style=Jr(h.style,d)),h):Ke}function mf(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=ko(r,e.props);return s.ref=r.ref,Oo.cloneElement(e,s)}if(t&&typeof t=="string")return pf(t,r);throw new Error(ks(8))}function pf(t,e){return t==="button"?(0,As.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,As.createElement)("img",{alt:"",...e,key:e.key}):Oo.createElement(t,e)}function Ta(t){return Oa(t.defaultTagName??"div",t,t)}var To=u(yt(),1),to=(0,To.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,To.cloneElement)(t,{width:e,height:e,...r,ref:o}));var _o=u(Pr(),1),Rs=u(z(),1),ur=(0,Rs.jsx)(_o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Rs.jsx)(_o.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Po=u(Pr(),1),Es=u(z(),1),fr=(0,Es.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Es.jsx)(Po.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Ao=u(Pr(),1),Is=u(z(),1),Ls=(0,Is.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Ao.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Ro=u(Pr(),1),Bs=u(z(),1),Eo=(0,Bs.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bs.jsx)(Ro.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Io=u(Pr(),1),Ds=u(z(),1),Lo=(0,Ds.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Io.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Ra=u(yt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","71d20935c2"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var hf={stack:"_19ce0419607e1896__stack"},gf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Ar=(0,Ra.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},m){let f={gap:r&&gf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return Ta({render:n,ref:m,props:ko(l,{style:f,className:hf.stack})})});var Ea=u(X(),1),{Fill:Ia,Slot:La}=(0,Ea.createSlotFill)("SidebarToggle");var Ge=u(z(),1);function Ba({headingLevel:t=1,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Ge.jsxs)(Ar,{direction:"column",className:"admin-ui-page__header",children:[(0,Ge.jsxs)(Ar,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Ge.jsxs)(Ar,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Ge.jsx)(La,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Ge.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Ge.jsx)(Ar,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Ge.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var eo=u(z(),1);function Da({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,hasPadding:m=!1,showSidebarToggle:f=!0}){let c=ve("admin-ui-page",n);return(0,eo.jsxs)(ca,{className:c,ariaLabel:o,children:[(o||e||r)&&(0,eo.jsx)(Ba,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:f}),m?(0,eo.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Da.SidebarToggleFill=Ia;var Ns=Da;var xo=u(ut()),Uu=u(X()),Hu=u(Na()),ws=u(be()),Wu=u(fe()),Yu=u(yt());var Mu=u(X(),1),Gu=u(Rr(),1),Mg=u(fe(),1),Gg=u(ce(),1),qn=u(yt(),1),jg=u(cr(),1);function Er(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var we=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var yf=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function zs(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return we(t,a)??we(t,n);let l={};return yf.forEach(m=>{let f=we(t,`settings${o}.${m}`)??we(t,`settings.${m}`);f!==void 0&&(l=Er(l,m.split("."),f))}),l}function Ms(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Er(t,n.split("."),r)}var kf=u(Ha(),1);var vf="1600px",bf="320px",wf=1,Sf=.25,xf=.75,Cf="14px";function Wa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=bf,maximumViewportWidth:s=vf,scaleFactor:a=wf,minimumFontSizeLimit:n}){if(n=Re(n)?n:Cf,r){let b=Re(r);if(!b?.unit||!b?.value)return null;let T=Re(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),Sf),xf),V=ro(b.value*I,3);T?.value&&V<T?.value?t=`${T.value}${T.unit}`:t=`${V}${b.unit}`}}let l=Re(t),m=l?.unit||"rem",f=Re(e,{coerceTo:m});if(!l||!f)return null;let c=Re(t,{coerceTo:"rem"}),d=Re(s,{coerceTo:m}),g=Re(o,{coerceTo:m});if(!d||!g||!c)return null;let h=d.value-g.value;if(!h)return null;let v=ro(g.value/100,3),_=ro(v,3)+m,A=100*((f.value-l.value)/h),k=ro((A||1)*a,3),x=`${c.value}${c.unit} + ((1vw - ${_}) * ${k})`;return`clamp(${t}, ${x}, ${e})`}function Re(t,e={}){if(typeof t!="string"&&typeof t!="number")return null;isFinite(t)&&(t=`${t}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...e},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=t.toString().match(n);if(!l||l.length<3)return null;let[,m,f]=l,c=parseFloat(m);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:ro(c,3),unit:f}:null}function ro(t,e=3){let r=Math.pow(10,e);return Math.round(t*r)/r}function Gs(t){let e=t?.fluid;return e===!0||e&&typeof e=="object"&&Object.keys(e).length>0}function Ff(t){let e=t?.typography??{},r=t?.layout,o=Re(r?.wideSize)?r?.wideSize:null;return Gs(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function Ya(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!Gs(e?.typography)&&!Gs(t))return r;let o=Ff(e)?.fluid??{},s=Wa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Of=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>Ya(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function qa(t,e,r=[],o="slug",s){let a=[e?we(t,["blocks",e,...r]):void 0,we(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let m of l){let f=n[m];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||qa(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Tf(t,e,r,[o,s]=[]){let a=Of.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=qa(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,m=n[l];return Bo(t,e,m)}return r}function _f(t,e,r,o=[]){let s=(e?we(t?.settings??{},["blocks",e,"custom",...o]):void 0)??we(t?.settings??{},["custom",...o]);return s?Bo(t,e,s):r}function Bo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=we(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...m]=n;return l==="preset"?Tf(t,e,r,m):l==="custom"?_f(t,e,r,m):r}function js(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=we(t,a);return o?Bo(t,r,n):n}function Us(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Er(t,a.split("."),r)}var Hs=u(Xa(),1);function oo(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Hs.default)(t?.styles,e?.styles)&&(0,Hs.default)(t?.settings,e?.settings)}var ri=u($a(),1);function ti(t){return Object.prototype.toString.call(t)==="[object Object]"}function ei(t){var e,r;return ti(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ti(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function dr(t,e){return(0,ri.default)(t,e,{isMergeableObject:ei,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var jf={grad:.9,turn:360,rad:360/(2*Math.PI)},je=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},qt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},Fe=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},fi=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},oi=function(t){return{r:Fe(t.r,0,255),g:Fe(t.g,0,255),b:Fe(t.b,0,255),a:Fe(t.a)}},Ws=function(t){return{r:qt(t.r),g:qt(t.g),b:qt(t.b),a:qt(t.a,3)}},Uf=/^#([0-9a-f]{3,8})$/i,Do=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},ci=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},di=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),m=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,m,o][f],g:255*[m,o,o,l,n,n][f],b:255*[n,n,m,o,o,l][f],a:s}},si=function(t){return{h:fi(t.h),s:Fe(t.s,0,100),l:Fe(t.l,0,100),a:Fe(t.a)}},ni=function(t){return{h:qt(t.h),s:qt(t.s),l:qt(t.l),a:qt(t.a,3)}},ai=function(t){return di((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},no=function(t){return{h:(e=ci(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},Hf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Wf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Yf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,qf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zs={string:[[function(t){var e=Uf.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?qt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?qt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=Yf.exec(t)||qf.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:oi({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Hf.exec(t)||Wf.exec(t);if(!e)return null;var r,o,s=si({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(jf[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return ai(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return je(e)&&je(r)&&je(o)?oi({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!je(e)||!je(r)||!je(o))return null;var n=si({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return ai(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!je(e)||!je(r)||!je(o))return null;var n=(function(l){return{h:fi(l.h),s:Fe(l.s,0,100),v:Fe(l.v,0,100),a:Fe(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return di(n)},"hsv"]]},ii=function(t,e){for(var r=0;r<e.length;r++){var o=e[r][0](t);if(o)return[o,e[r][1]]}return[null,void 0]},Zf=function(t){return typeof t=="string"?ii(t.trim(),Zs.string):typeof t=="object"&&t!==null?ii(t,Zs.object):[null,void 0]};var Ys=function(t,e){var r=no(t);return{h:r.h,s:Fe(r.s+100*e,0,100),l:r.l,a:r.a}},qs=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},li=function(t,e){var r=no(t);return{h:r.h,s:r.s,l:Fe(r.l+100*e,0,100),a:r.a}},Xs=(function(){function t(e){this.parsed=Zf(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return qt(qs(this.rgba),2)},t.prototype.isDark=function(){return qs(this.rgba)<.5},t.prototype.isLight=function(){return qs(this.rgba)>=.5},t.prototype.toHex=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?Do(qt(255*a)):"","#"+Do(r)+Do(o)+Do(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ws(this.rgba)},t.prototype.toRgbString=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return ni(no(this.rgba))},t.prototype.toHslString=function(){return e=ni(no(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=ci(this.rgba),{h:qt(e.h),s:qt(e.s),v:qt(e.v),a:qt(e.a,3)};var e},t.prototype.invert=function(){return Ee({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Ee(Ys(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Ee(Ys(this.rgba,-e))},t.prototype.grayscale=function(){return Ee(Ys(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Ee(li(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Ee(li(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Ee({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):qt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=no(this.rgba);return typeof e=="number"?Ee({h:e,s:r.s,l:r.l,a:r.a}):qt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Ee(e).toHex()},t})(),Ee=function(t){return t instanceof Xs?t:new Xs(t)},ui=[],mi=function(t){t.forEach(function(e){ui.indexOf(e)<0&&(e(Xs,Zs),ui.push(e))})};var Ks=u(yt(),1);var pi=u(yt(),1),Xt=(0,pi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var hi=u(z(),1);function ao({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Ks.useMemo)(()=>dr(r,e),[r,e]),n=(0,Ks.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,hi.jsx)(Xt.Provider,{value:n,children:t})}var Ue=u(X(),1),Li=u(ut(),1);var lc=u(fe(),1),uc=u(be(),1);var gi=u(z(),1);function Js({className:t,...e}){return(0,gi.jsx)(to,{className:ve(t,"global-styles-ui-icon-with-current-color"),...e})}var Je=u(X(),1);var mr=u(z(),1);function Xf({icon:t,children:e,...r}){return(0,mr.jsxs)(Je.__experimentalItem,{...r,children:[t&&(0,mr.jsxs)(Je.__experimentalHStack,{justify:"flex-start",children:[(0,mr.jsx)(Js,{icon:t,size:24}),(0,mr.jsx)(Je.FlexItem,{children:e})]}),!t&&e]})}function Ie(t){return(0,mr.jsx)(Je.Navigator.Button,{as:Xf,...t})}var Qf=u(X(),1);var $f=u(ut(),1),Ci=u(ce(),1);var Qs=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},$s=function(t){return .2126*Qs(t.r)+.7152*Qs(t.g)+.0722*Qs(t.b)};function yi(t){t.prototype.luminance=function(){return e=$s(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,m,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=$s(a),m=$s(n),r=l>m?(l+.05)/(m+.05):(m+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Pe=u(yt(),1),wi=u(fe(),1),Si=u(be(),1),en=u(ut(),1);function tn(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&tn(t[r],e);return t}var Vo=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=Vo(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function io(t,e){let r=Vo(structuredClone(t),e);return oo(r,t)}function vi(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function bi(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=vi(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=vi(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}mi([yi]);function kt(t,e,r="merged",o=!0){let{user:s,base:a,merged:n,onChange:l}=(0,Pe.useContext)(Xt),m=n;r==="base"?m=a:r==="user"&&(m=s);let f=(0,Pe.useMemo)(()=>js(m,t,e,o),[m,t,e,o]),c=(0,Pe.useCallback)(d=>{let g=Us(s,t,d,e);l(g)},[s,l,t,e]);return[f,c]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Pe.useContext)(Xt),l=a;r==="base"?l=s:r==="user"&&(l=o);let m=(0,Pe.useMemo)(()=>zs(l,t,e),[l,t,e]),f=(0,Pe.useCallback)(c=>{let d=Ms(o,t,c,e);n(d)},[o,n,t,e]);return[m,f]}var Kf=[];function Jf({title:t,settings:e,styles:r}){return t===(0,en.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function No(t=[]){let{variationsFromTheme:e}=(0,wi.useSelect)(o=>({variationsFromTheme:o(Si.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||Kf}),[]),{user:r}=(0,Pe.useContext)(Xt);return(0,Pe.useMemo)(()=>{let o=structuredClone(r),s=tn(o,t);s.title=(0,en.__)("Default");let a=e.filter(l=>io(l,t)).map(l=>dr(s,l)),n=[s,...a];return n?.length?n.filter(Jf):[]},[t,r,e])}var xi=u(Vs(),1),{lock:d1,unlock:vt}=(0,xi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var rn=u(z(),1),{useHasDimensionsPanel:y1,useHasTypographyPanel:v1,useHasColorPanel:b1,useSettingsForBlockElement:w1,useHasBackgroundPanel:S1}=vt(Ci.privateApis);var Le=u(X(),1);function Lr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],m=(n??[]).concat(l??[]).concat(a??[]),f=m.filter(({color:g})=>g===t),c=m.filter(({color:g})=>g===s),d=f.concat(c).concat(m).filter(({color:g})=>g!==e).slice(0,2);return{paletteColors:m,highlightedColors:d}}var Oi=u(yt(),1),Ti=u(X(),1),sn=u(ut(),1);function tc(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function ec(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Fi(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function on(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Br(t){let e={fontFamily:Fi(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=ec(r),s=tc(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function ki(t){return{fontFamily:Fi(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var lo=u(z(),1);function zo({fontSize:t,variation:e}){let{base:r}=(0,Oi.useContext)(Xt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=bi(o),l=a?Br(a):{},m=n?Br(n):{};return s&&(l.color=s,m.color=s),t&&(l.fontSize=t,m.fontSize=t),(0,lo.jsxs)(Ti.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,lo.jsx)("span",{style:m,children:(0,sn._x)("A","Uppercase letter A")}),(0,lo.jsx)("span",{style:l,children:(0,sn._x)("a","Lowercase letter A")})]})}var _i=u(X(),1);var Pi=u(z(),1);function Ai({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Lr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Pi.jsx)(_i.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Ii=u(X(),1),Dr=u(cr(),1),pr=u(yt(),1);var Qe=u(z(),1),Ri=248,Ei=152,rc={leading:!0,trailing:!0};function oc({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Dr.useReducedMotion)(),[l,m]=(0,pr.useState)(!1),[f,{width:c}]=(0,Dr.useResizeObserver)(),[d,g]=(0,pr.useState)(c),[h,v]=(0,pr.useState)(),_=(0,Dr.useThrottle)(g,250,rc);(0,pr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,pr.useLayoutEffect)(()=>{let b=d?d/Ri:1,T=b-(h||0);(Math.abs(T)>.1||!h)&&v(b)},[d,h]);let A=c?c/Ri:1,k=h||A;return(0,Qe.jsxs)(Qe.Fragment,{children:[(0,Qe.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qe.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:Ei*k},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),tabIndex:-1,children:(0,Qe.jsx)(Ii.__unstableMotion.div,{style:{height:Ei*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var Vr=oc;var de=u(z(),1),sc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},nc={hover:{opacity:1},start:{opacity:.5}},ac={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function ic({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[m="black"]=kt("color.text"),[f=m]=kt("elements.h1.color.text"),{paletteColors:c}=Lr();return(0,de.jsxs)(Vr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:g})=>(0,de.jsx)(Le.__unstableMotion.div,{variants:sc,style:{height:"100%",overflow:"hidden"},children:(0,de.jsxs)(Le.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,de.jsx)(zo,{fontSize:65*d,variation:o}),(0,de.jsx)(Le.__experimentalVStack,{spacing:4*d,children:(0,de.jsx)(Ai,{normalizedColorSwatchSize:32,ratio:d})})]})},g),({key:d})=>(0,de.jsx)(Le.__unstableMotion.div,{variants:r?nc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,de.jsx)(Le.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:g},h)=>(0,de.jsx)("div",{style:{height:"100%",background:g,flexGrow:1}},h))})},d),({ratio:d,key:g})=>(0,de.jsx)(Le.__unstableMotion.div,{variants:ac,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,de.jsx)(Le.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,de.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},g)]})}var nn=ic;var Bi=u(z(),1);var ln=u(Rr(),1),Nr=u(ut(),1),gr=u(X(),1),un=u(fe(),1),$e=u(yt(),1),Mo=u(ce(),1),Mi=u(cr(),1);import{speak as mc}from"@wordpress/a11y";var Di=u(Rr(),1),Vi=u(fe(),1),fc=u(X(),1);var cc=u(z(),1);function dc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function an(t){let e=(0,Vi.useSelect)(s=>{let{getBlockStyles:a}=s(Di.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return dc(e,o)}var hr=u(X(),1),Ni=u(ut(),1);var zi=u(z(),1);var Be=u(z(),1),{useHasDimensionsPanel:pc,useHasTypographyPanel:hc,useHasBorderPanel:gc,useSettingsForBlockElement:yc,useHasColorPanel:vc}=vt(Mo.privateApis);function bc(){let t=(0,un.useSelect)(s=>s(ln.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function wc(t){let[e]=_t("",t),r=yc(e,t),o=hc(r),s=vc(r),a=gc(r),n=pc(r),l=a||n,m=!!an(t)?.length;return o||s||l||m}function Sc({block:t}){return wc(t.name)?(0,Be.jsx)(Ie,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,Be.jsxs)(gr.__experimentalHStack,{justify:"flex-start",children:[(0,Be.jsx)(Mo.BlockIcon,{icon:t.icon}),(0,Be.jsx)(gr.FlexItem,{children:t.title})]})}):null}function xc({filterValue:t}){let e=bc(),r=(0,Mi.useDebounce)(mc,500),{isMatchingSearchTerm:o}=(0,un.useSelect)(ln.store),s=t?e.filter(n=>o(n,t)):e,a=(0,$e.useRef)(null);return(0,$e.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Nr.sprintf)((0,Nr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,Be.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,Be.jsx)(gr.__experimentalText,{align:"center",as:"p",children:(0,Nr.__)("No blocks found.")}):s.map(n=>(0,Be.jsx)(Sc,{block:n},"menu-itemblock-"+n.name))})}var o0=(0,$e.memo)(xc);var Tc=u(Rr(),1),Hi=u(ce(),1),Wi=u(yt(),1),_c=u(fe(),1),Pc=u(be(),1),fn=u(X(),1),Yi=u(ut(),1);var Cc=u(ce(),1),Gi=u(Rr(),1),Fc=u(X(),1),kc=u(yt(),1);var Oc=u(z(),1);var ji=u(X(),1),Ui=u(z(),1);function Se({children:t,level:e=2}){return(0,Ui.jsx)(ji.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var cn=u(z(),1);var{useHasDimensionsPanel:v0,useHasTypographyPanel:b0,useHasBorderPanel:w0,useSettingsForBlockElement:S0,useHasColorPanel:x0,useHasFiltersPanel:C0,useHasImageSettingsPanel:F0,useHasBackgroundPanel:k0,BackgroundPanel:O0,BorderPanel:T0,ColorPanel:_0,TypographyPanel:P0,DimensionsPanel:A0,FiltersPanel:R0,ImageSettingsPanel:E0,AdvancedPanel:I0}=vt(Hi.privateApis);var jh=u(ut(),1),Uh=u(X(),1),Hh=u(yt(),1);var Ac=u(X(),1);var Rc=u(z(),1);var Ec=u(ut(),1),Go=u(X(),1);var qi=u(z(),1);var Ho=u(X(),1);var Zi=u(X(),1);var jo=u(z(),1),Ic=({variation:t,isFocused:e,withHoverView:r})=>(0,jo.jsx)(Vr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,jo.jsx)(Zi.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,jo.jsx)(zo,{variation:t,fontSize:85*o})},s)}),Xi=Ic;var Ji=u(X(),1),yr=u(yt(),1),Qi=u(dn(),1),Uo=u(ut(),1);var uo=u(z(),1);function zr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,yr.useState)(!1),{base:l,user:m,onChange:f}=(0,yr.useContext)(Xt),c=(0,yr.useMemo)(()=>{let A=dr(l,t);return o&&(A=Vo(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),g=A=>{A.keyCode===Qi.ENTER&&(A.preventDefault(),d())},h=(0,yr.useMemo)(()=>oo(m,t),[m,t]),v=t?.title;t?.description&&(v=(0,Uo.sprintf)((0,Uo._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,uo.jsx)("div",{className:ve("global-styles-ui-variations_item",{"is-active":h}),role:"button",onClick:d,onKeyDown:g,tabIndex:0,"aria-label":v,"aria-current":h,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,uo.jsx)("div",{className:ve("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,uo.jsx)(Xt.Provider,{value:c,children:s?(0,uo.jsx)(Ji.Tooltip,{text:t?.title,children:_}):_})}var vr=u(z(),1),$i=["typography"];function Wo({title:t,gap:e=2}){let r=No($i);return r?.length<=1?null:(0,vr.jsxs)(Ho.__experimentalVStack,{spacing:3,children:[t&&(0,vr.jsx)(Se,{level:3,children:t}),(0,vr.jsx)(Ho.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,vr.jsx)(zr,{variation:o,properties:$i,showTooltip:!0,children:()=>(0,vr.jsx)(Xi,{variation:o})},s))})]})}var Mh=u(ut(),1),yo=u(X(),1);var Gh=u(yt(),1);var He=u(yt(),1),or=u(fe(),1),rr=u(be(),1),gn=u(ut(),1);var mn=u(el(),1),rl=u(be(),1),ol="/wp/v2/font-families";function sl(t){let{receiveEntityRecords:e}=t.dispatch(rl.store);e("postType","wp_font_family",[],void 0,!0)}async function nl(t,e){let o=await(0,mn.default)({path:ol,method:"POST",body:t});return sl(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function al(t,e,r){let o={path:`${ol}/${t}/font-faces`,method:"POST",body:e},s=await(0,mn.default)(o);return sl(r),{id:s.id,...s.font_face_settings}}var ul=u(X(),1);var ke=u(ut(),1),pn=["otf","ttf","woff","woff2"],il={100:(0,ke._x)("Thin","font weight"),200:(0,ke._x)("Extra-light","font weight"),300:(0,ke._x)("Light","font weight"),400:(0,ke._x)("Normal","font weight"),500:(0,ke._x)("Medium","font weight"),600:(0,ke._x)("Semi-bold","font weight"),700:(0,ke._x)("Bold","font weight"),800:(0,ke._x)("Extra-bold","font weight"),900:(0,ke._x)("Black","font weight")},ll={normal:(0,ke._x)("Normal","font style"),italic:(0,ke._x)("Italic","font style")};var{File:fl}=window,{kebabCase:Lc}=vt(ul.privateApis);function tr(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function Bc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function Yo(t){let e=il[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":ll[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function Dc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function cl(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=Dc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function er(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof fl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(on(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function fo(t,e="all"){let r=o=>{o.forEach(s=>{s.family===on(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Mr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return Bc(e)||(e=encodeURI(e)),e}function dl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Lc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function ml(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((m,f)=>{let c=`file-${o}-${f}`;a.append(c,m,m.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function pl(t,e,r){let o=[];for(let a of e)try{let n=await al(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function hl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new fl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function hn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function gl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function qo(t,e,r=[]){let o=m=>m.slug===t.slug,s=m=>m.find(o),a=m=>m?r.filter(f=>!o(f)):[...r,t],n=m=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!m)return[...r,{...t,fontFace:[e]}];let c=m.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var yl=u(z(),1),ne=(0,He.createContext)({});ne.displayName="FontLibraryContext";function Vc({children:t}){let e=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:E}=S(rr.store);return{globalStylesId:E()}},[]),a=(0,rr.useEntityRecord)("root","globalStyles",s),[n,l]=(0,He.useState)(!1),{records:m=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(m||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,g]=_t("typography.fontFamilies"),h=async S=>{if(!a.record)return;let E=a.record,et=gl(E??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[v,_]=(0,He.useState)(""),[A,k]=(0,He.useState)(void 0),x=d?.theme?d.theme.map(S=>tr(S,{source:"theme"})).sort((S,E)=>S.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(S=>tr(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[],T=c?c.map(S=>tr(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[];(0,He.useEffect)(()=>{v||k(void 0)},[v]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,He.useState)(new Set),V=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>V(S==="theme"?x:b),$=(S,E,et,ct)=>!E&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((E??"")+(et??"")),bt=(S,E)=>H(E)[S]||[];async function W(S){l(!0);try{let E=[],et=[];for(let at of S){let Ct=!1,Wt=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Wt&&Wt.length>0?Wt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await nl(dl(at),e));let St=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&hn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!hn(zt,J.fontFace)));let At=[],xe=[];if(at?.fontFace?.length??!1){let zt=await pl(J.id,ml(at),e);At=zt?.successes,xe=zt?.errors}(At?.length>0||St?.length>0)&&(J.fontFace=[...At],E.push(J)),J&&!at?.fontFace?.length&&E.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(xe)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(E.length>0){let at=it(E);await h(at)}if(ct.length>0){let at=new Error((0,gn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function y(S){if(!S?.id)throw new Error((0,gn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let E=L(S);return await h(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return g(ct),S.fontFace&&S.fontFace.forEach(at=>{fo(at,"all")}),ct},it=S=>{let E=ot(S),et={...d,custom:cl(d?.custom,E)};return g(et),K(E),et},ot=S=>S.map(({id:E,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(E=>{E.fontFace&&E.fontFace.forEach(et=>{let ct=Mr(et?.src??"");ct&&er(et,ct,"all")})})},gt=(S,E)=>{let et=d?.[S.source??""]??[],ct=qo(S,E,et);g({...d,[S.source??""]:ct});let at=$(S.slug,E?.fontStyle??"",E?.fontWeight??"",S.source??"custom");if(E&&at)fo(E,"all");else{let Ct=Mr(E?.src??"");E&&Ct&&er(E,Ct,"all")}},R=async S=>{if(!S.src)return;let E=Mr(S.src);!E||I.has(E)||(er(S,E,"document"),I.add(E))};return(0,yl.jsx)(ne.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:R,installFonts:W,uninstallFontFamily:y,toggleActivateFont:gt,getAvailableFontsOutline:V,modalTabOpen:v,setModalTabOpen:_,saveFontFamilies:h,isResolvingLibrary:f,isInstalling:n},children:t})}var Zo=Vc;var us=u(ut(),1),Sn=u(X(),1),$l=u(be(),1),Nh=u(fe(),1);var ht=u(X(),1),mo=u(be(),1),yn=u(fe(),1),wr=u(yt(),1),Et=u(ut(),1);var jr=u(ut(),1),Oe=u(X(),1);var vl=u(X(),1),De=u(yt(),1);var Xo=u(z(),1);function Nc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function zc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function Mc({font:t,text:e}){let r=(0,De.useRef)(null),o=zc(t),s=Br(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,De.useState)(!1),[m,f]=(0,De.useState)(!1),{loadFontFaceAsset:c}=(0,De.useContext)(ne),d=a??Nc(o),g=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),h=ki(o),v={fontSize:"18px",lineHeight:1,opacity:m?"1":"0",...s,...h};return(0,De.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,De.useEffect)(()=>{(async()=>n&&(!g&&o.src&&await c(o),f(!0)))()},[o,n,c,g]),(0,Xo.jsx)("div",{ref:r,children:g?(0,Xo.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Xo.jsx)(vl.__experimentalText,{style:v,className:"font-library__font-variant_demo-text",children:e})})}var Gr=Mc;var Ve=u(z(),1);function Gc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Oe.useNavigator)();return(0,Ve.jsx)(Oe.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,Ve.jsxs)(Oe.Flex,{justify:"space-between",wrap:!1,children:[(0,Ve.jsx)(Gr,{font:t}),(0,Ve.jsxs)(Oe.Flex,{justify:"flex-end",children:[(0,Ve.jsx)(Oe.FlexItem,{children:(0,Ve.jsx)(Oe.__experimentalText,{className:"font-library__font-card__count",children:r||(0,jr.sprintf)((0,jr._n)("%d variant","%d variants",s),s)})}),(0,Ve.jsx)(Oe.FlexItem,{children:(0,Ve.jsx)(to,{icon:(0,jr.isRTL)()?ur:fr})})]})]})})}var co=Gc;var Ko=u(yt(),1),Jo=u(X(),1);var br=u(z(),1);function jc({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Ko.useContext)(ne),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+Yo(t),l=(0,Ko.useId)();return(0,br.jsx)("div",{className:"font-library__font-card",children:(0,br.jsxs)(Jo.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,br.jsx)(Jo.CheckboxControl,{checked:s,onChange:a,id:l}),(0,br.jsx)("label",{htmlFor:l,children:(0,br.jsx)(Gr,{font:t,text:n,onClick:a})})]})})}var bl=jc;function wl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function Qo(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?wl(e.fontWeight?.toString()??"normal")-wl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function Uc(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,wr.useContext)(ne),[m,f]=_t("typography.fontFamilies"),[c,d]=(0,wr.useState)(!1),[g,h]=(0,wr.useState)(null),[v]=_t("typography.fontFamilies",void 0,"base"),_=(0,yn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:S}=R(mo.store);return S()},[]),k=!!(0,mo.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=m?.theme?m.theme.map(R=>tr(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name)):[],b=new Set(x.map(R=>R.slug)),T=v?.theme?x.concat(v.theme.filter(R=>!b.has(R.slug)).map(R=>tr(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,yn.useSelect)(R=>{let{canUser:S}=R(mo.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),V=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{h(null);try{await n(m),h({type:"success",message:(0,Et.__)("Font family updated successfully.")})}catch(R){h({type:"error",message:(0,Et.sprintf)((0,Et.__)("There was an error updating the font family. %s"),R.message)})}},bt=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:Qo(R.fontFace):[],W=R=>{let S=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Et.sprintf)((0,Et.__)("%1$d/%2$d variants active"),E,S)};(0,wr.useEffect)(()=>{r(e)},[]);let y=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),it=y>0&&y!==L,ot=y===L,K=()=>{if(!e||!e?.source)return;let R=m?.[e.source]?.filter(E=>E.slug!==e.slug)??[],S=ot?R:[...R,e];f({...m,[e.source]:S}),e.fontFace&&e.fontFace.forEach(E=>{if(ot)fo(E,"all");else{let et=Mr(E?.src??"");et&&er(E,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[g&&(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Et.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(co,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(co,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(Hc,{font:e,isOpen:c,setIsOpen:d,setNotice:h,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Et.isRTL)()?fr:ur,size:"small",onClick:()=>{r(void 0),h(null)},label:(0,Et.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),g&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Et.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ot,onChange:K,indeterminate:it}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((R,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(bl,{font:e,face:R},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),V&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Et.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Et.__)("Update")})]})]})]})}function Hc({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Et.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Et.__)("There was an error uninstalling the font family.")+f.message})}},m=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Et.__)("Cancel"),confirmButtonText:(0,Et.__)("Delete"),onCancel:m,onConfirm:l,size:"medium",children:t&&(0,Et.sprintf)((0,Et.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var $o=Uc;var Zt=u(yt(),1),nt=u(X(),1),_l=u(cr(),1),Rt=u(ut(),1);var Pl=u(be(),1);function Sl(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function xl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Cl(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var po=u(ut(),1),ae=u(X(),1),Te=u(z(),1);function Wc(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Te.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Te.jsx)(ae.Card,{children:(0,Te.jsxs)(ae.CardBody,{children:[(0,Te.jsx)(ae.__experimentalHeading,{level:2,children:(0,po.__)("Connect to Google Fonts")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:6}),(0,Te.jsx)(ae.__experimentalText,{as:"p",children:(0,po.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:3}),(0,Te.jsx)(ae.__experimentalText,{as:"p",children:(0,po.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Te.jsx)(ae.__experimentalSpacer,{margin:6}),(0,Te.jsx)(ae.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,po.__)("Allow access to Google Fonts")})]})})})}var Fl=Wc;var kl=u(yt(),1),ts=u(X(),1);var Sr=u(z(),1);function Yc({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+Yo(t),n=(0,kl.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(ts.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(ts.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Sr.jsx)("label",{htmlFor:n,children:(0,Sr.jsx)(Gr,{font:t,text:a,onClick:s})})]})})}var Ol=Yc;var tt=u(z(),1),qc={slug:"all",name:(0,Rt._x)("All","font categories")},Tl="wp-font-library-google-fonts-permission",Zc=500;function Xc({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Tl)==="true",[o,s]=(0,Zt.useState)(null),[a,n]=(0,Zt.useState)(null),[l,m]=(0,Zt.useState)([]),[f,c]=(0,Zt.useState)(1),[d,g]=(0,Zt.useState)({}),[h,v]=(0,Zt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Zt.useContext)(ne),{record:k,isResolving:x}=(0,Pl.useEntityRecord)("root","fontCollection",t);(0,Zt.useEffect)(()=>{let J=()=>{v(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Tl,"false"),window.dispatchEvent(new Event("storage"))};(0,Zt.useEffect)(()=>{s(null)},[t]),(0,Zt.useEffect)(()=>{m([])},[o]);let T=(0,Zt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[qc,...Y],V=(0,Zt.useMemo)(()=>Sl(T,d),[T,d]),H=Math.max(window.innerHeight,Zc),$=Math.floor((H-417)/61),bt=Math.ceil(V.length/$),W=(f-1)*$,y=f*$,L=V.slice(W,y),it=J=>{g({...d,category:J}),c(1)},K=(0,_l.debounce)(J=>{g({...d,search:J}),c(1)},300),gt=(J,St)=>{let At=qo(J,St,l);m(At)},R=xl(l),S=()=>{m([])},E=l.length>0?l[0]?.fontFace?.length??0:0,et=E>0&&E!==o?.fontFace?.length,ct=E===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),m(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async St=>{St.src&&(St.file=await hl(St.src))}))}catch{n({type:"error",message:(0,Rt.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Rt.__)("Fonts were installed successfully.")})}catch(St){n({type:"error",message:St.message})}S()},Wt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:Qo(J.fontFace):[];if(h)return(0,tt.jsx)(Fl,{});let Ot=()=>t!=="google-fonts"||h||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Ls,label:(0,Rt.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Rt.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Rt.__)("Font name\u2026"),label:(0,Rt.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Rt.__)("Category"),value:d.category,onChange:it,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!V.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(co,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Rt.isRTL)()?fr:ur,size:"small",onClick:()=>{s(null),n(null)},label:(0,Rt.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Wt(o).map((J,St)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(Ol,{font:o,face:J,handleToggleVariant:gt,selected:Cl(o.slug,o.fontFace?J:null,R)})},`face${St}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Rt.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Zt.createInterpolateElement)((0,Rt.sprintf)((0,Rt._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Rt.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,St)=>({label:(St+1).toString(),value:(St+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Rt.__)("Previous page"),icon:(0,Rt.isRTL)()?Eo:Lo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Rt.__)("Next page"),icon:(0,Rt.isRTL)()?Lo:Eo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var es=Xc;var Ur=u(ut(),1),$t=u(X(),1),go=u(yt(),1);var rs=(t=>typeof ue<"u"?ue:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ue<"u"?ue:e)[r]}):t)(function(t){if(typeof ue<"u")return ue.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Al=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof rs=="function"&&rs;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof rs=="function"&&rs,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,m=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=m,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,g=this.input_.read(this.buf_,d,n);if(g<0)throw new Error("Unexpected end of input");if(g<n){this.eos_=1;for(var h=0;h<32;h++)this.buf_[d+g+h]=0}if(d===0){for(var h=0;h<32;h++)this.buf_[(n<<1)+h]=this.buf_[h];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=g<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&m]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var g=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,g},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,m=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,m=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,g=o("./context"),h=o("./prefix"),v=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,V=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,y=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),it=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<<O)}return 0}function gt(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(N){var O=new gt,B,P,D;if(O.input_end=N.readBits(1),O.input_end&&N.readBits(1))return O;if(B=N.readBits(2)+4,B===7){if(O.is_metadata=!0,N.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=N.readBits(2),P===0)return O;for(D=0;D<P;D++){var dt=N.readBits(8);if(D+1===P&&P>1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<<D*8}}else for(D=0;D<B;++D){var rt=N.readBits(4);if(D+1===B&&B>4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<<D*4}return++O.meta_block_length,!O.input_end&&!O.is_metadata&&(O.is_uncompressed=N.readBits(1)),O}function S(N,O,B){var P=O,D;return B.fillBitWindow(),O+=B.val_>>>B.bit_pos_&V,D=N[O].bits-I,D>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<<D)-1),B.bit_pos_+=N[O].bits,N[O].value}function E(N,O,B,P){for(var D=0,dt=_,rt=0,st=0,wt=32768,lt=[],q=0;q<32;q++)lt.push(new c(0,0));for(d(lt,0,5,N,$);D<O&&wt>0;){var Ft=0,Kt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=lt[Ft].bits,Kt=lt[Ft].value&255,Kt<A)rt=0,B[D++]=Kt,Kt!==0&&(dt=Kt,wt-=32768>>Kt);else{var he=Kt-14,te,Jt,Dt=0;if(Kt===A&&(Dt=dt),st!==Dt&&(rt=0,st=Dt),te=rt,rt>0&&(rt-=2,rt<<=he),rt+=P.readBits(he)+3,Jt=rt-te,D+Jt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var Qt=0;Qt<Jt;Qt++)B[D+Qt]=st;D+=Jt,st!==0&&(wt-=Jt<<15-st)}}if(wt!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+wt);for(;D<O;D++)B[D]=0}function et(N,O,B,P){var D=0,dt,rt=new Uint8Array(N);if(P.readMoreInput(),dt=P.readBits(2),dt===1){for(var st,wt=N-1,lt=0,q=new Int32Array(4),Ft=P.readBits(2)+1;wt;)wt>>=1,++lt;for(st=0;st<Ft;++st)q[st]=P.readBits(lt)%N,rt[q[st]]=2;switch(rt[q[0]]=1,Ft){case 1:break;case 3:if(q[0]===q[1]||q[0]===q[2]||q[1]===q[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(q[0]===q[1])throw new Error("[ReadHuffmanCode] invalid symbols");rt[q[1]]=1;break;case 4:if(q[0]===q[1]||q[0]===q[2]||q[0]===q[3]||q[1]===q[2]||q[1]===q[3]||q[2]===q[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(rt[q[2]]=3,rt[q[3]]=3):rt[q[0]]=2;break}}else{var st,Kt=new Uint8Array($),he=32,te=0,Jt=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(st=dt;st<$&&he>0;++st){var Dt=bt[st],Qt=0,ee;P.fillBitWindow(),Qt+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Jt[Qt].bits,ee=Jt[Qt].value,Kt[Dt]=ee,ee!==0&&(he-=32>>ee,++te)}if(!(te===1||he===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Kt,N,rt,P)}if(D=d(O,B,I,rt,N),D===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return D}function ct(N,O,B){var P,D;return P=S(N,O,B),D=h.kBlockLengthPrefixCode[P].nbits,h.kBlockLengthPrefixCode[P].offset+B.readBits(D)}function at(N,O,B){var P;return N<W?(B+=y[N],B&=3,P=O[B]+L[N]):P=N-W+1,P}function Ct(N,O){for(var B=N[O],P=O;P;--P)N[P]=N[P-1];N[0]=B}function Wt(N,O){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<O;++P){var D=N[P];N[P]=B[D],D&&Ct(B,D)}}function Ot(N,O){this.alphabet_size=N,this.num_htrees=O,this.codes=new Array(O+O*it[N+31>>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O<this.num_htrees;++O)this.htrees[O]=P,B=et(this.alphabet_size,this.codes,P,N),P+=B};function J(N,O){var B={num_htrees:null,context_map:null},P,D=0,dt,rt;O.readMoreInput();var st=B.num_htrees=K(O)+1,wt=B.context_map=new Uint8Array(N);if(st<=1)return B;for(P=O.readBits(1),P&&(D=O.readBits(4)+1),dt=[],rt=0;rt<H;rt++)dt[rt]=new c(0,0);for(et(st+D,dt,0,O),rt=0;rt<N;){var lt;if(O.readMoreInput(),lt=S(dt,0,O),lt===0)wt[rt]=0,++rt;else if(lt<=D)for(var q=1+(1<<lt)+O.readBits(lt);--q;){if(rt>=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=lt-D,++rt}return O.readBits(1)&&Wt(wt,N),B}function St(N,O,B,P,D,dt,rt){var st=B*2,wt=B,lt=S(O,B*H,rt),q;lt===0?q=D[st+(dt[wt]&1)]:lt===1?q=D[st+(dt[wt]-1&1)]+1:q=lt-2,q>=N&&(q-=N),P[B]=q,D[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,D,dt){var rt=D+1,st=B&D,wt=dt.pos_&m.IBUF_MASK,lt;if(O<8||dt.bit_pos_+(O<<3)<dt.bit_end_pos_){for(;O-- >0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(lt=dt.bit_end_pos_-dt.bit_pos_>>3,wt+lt>m.IBUF_MASK){for(var q=m.IBUF_MASK+1-wt,Ft=0;Ft<q;Ft++)P[st+Ft]=dt.buf_[wt+Ft];lt-=q,st+=q,O-=q,wt=0}for(var Ft=0;Ft<lt;Ft++)P[st+Ft]=dt.buf_[wt+Ft];if(st+=lt,O-=lt,st>=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft<st;Ft++)P[Ft]=P[rt+Ft]}for(;st+O>=rt;){if(lt=rt-st,dt.input_.read(P,st,lt)<lt)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");N.write(P,rt),O-=lt,st=0}if(dt.input_.read(P,st,O)<O)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");dt.reset()}function xe(N){var O=N.bit_pos_+7&-8,B=N.readBits(O-N.bit_pos_);return B==0}function zt(N){var O=new n(N),B=new m(O);ot(B);var P=R(B);return P.meta_block_length}a.BrotliDecompressedSize=zt;function sr(N,O){var B=new n(N);O==null&&(O=zt(N));var P=new Uint8Array(O),D=new l(P);return Xe(B,D),D.pos<D.buffer.length&&(D.buffer=D.buffer.subarray(0,D.pos)),D.buffer}a.BrotliDecompressBuffer=sr;function Xe(N,O){var B,P=0,D=0,dt=0,rt,st=0,wt,lt,q,Ft,Kt=[16,15,11,4],he=0,te=0,Jt=0,Dt=[new Ot(0,0),new Ot(0,0),new Ot(0,0)],Qt,ee,pt,qr=128+m.READ_SIZE;pt=new m(N),dt=ot(pt),rt=(1<<dt)-16,wt=1<<dt,lt=wt-1,q=new Uint8Array(wt+qr+f.maxDictionaryWordLength),Ft=wt,Qt=[],ee=[];for(var kr=0;kr<3*H;kr++)Qt[kr]=new c(0,0),ee[kr]=new c(0,0);for(;!D;){var Mt=0,Co,Ce=[1<<28,1<<28,1<<28],Ae=[0],ge=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pt,G,re=null,j=null,Vt,F=null,C,nr=0,Tt=null,Q=0,ar=0,ir=null,It=0,xt=0,Gt=0,jt,Yt;for(B=0;B<3;++B)Dt[B].codes=null,Dt[B].htrees=null;pt.readMoreInput();var ze=R(pt);if(Mt=ze.meta_block_length,P+Mt>O.buffer.length){var lr=new Uint8Array(P+Mt);lr.set(O.buffer),O.buffer=lr}if(D=ze.input_end,Co=ze.is_uncompressed,ze.is_metadata){for(xe(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(Co){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,lt,pt),P+=Mt;continue}for(B=0;B<3;++B)ge[B]=K(pt)+1,ge[B]>=2&&(et(ge[B]+2,Qt,B*H,pt),et(b,ee,B*H,pt),Ce[B]=ct(ee,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<<i),Pt=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(ge[0]),B=0;B<ge[0];++B)pt.readMoreInput(),j[B]=pt.readBits(2)<<1;var Lt=J(ge[0]<<T,pt);Vt=Lt.num_htrees,re=Lt.context_map;var oe=J(ge[2]<<Y,pt);for(C=oe.num_htrees,F=oe.context_map,Dt[0]=new Ot(k,Vt),Dt[1]=new Ot(x,ge[1]),Dt[2]=new Ot(G,C),B=0;B<3;++B)Dt[B].decode(pt);for(Tt=0,ir=0,jt=j[Ae[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1],Yt=Dt[1].htrees[0];Mt>0;){var Nt,se,ie,Or,Ss,le,ye,Me,Zr,Tr,Xr;for(pt.readMoreInput(),Ce[1]===0&&(St(ge[1],Qt,1,Ae,w,M,pt),Ce[1]=ct(ee,H,pt),Yt=Dt[1].htrees[Ae[1]]),--Ce[1],Nt=S(Dt[1].codes,Yt,pt),se=Nt>>6,se>=2?(se-=2,ye=-1):ye=0,ie=h.kInsertRangeLut[se]+(Nt>>3&7),Or=h.kCopyRangeLut[se]+(Nt&7),Ss=h.kInsertLengthPrefixCode[ie].offset+pt.readBits(h.kInsertLengthPrefixCode[ie].nbits),le=h.kCopyLengthPrefixCode[Or].offset+pt.readBits(h.kCopyLengthPrefixCode[Or].nbits),te=q[P-1<],Jt=q[P-2<],Tr=0;Tr<Ss;++Tr)pt.readMoreInput(),Ce[0]===0&&(St(ge[0],Qt,0,Ae,w,M,pt),Ce[0]=ct(ee,0,pt),nr=Ae[0]<<T,Tt=nr,jt=j[Ae[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1]),Zr=g.lookup[xt+te]|g.lookup[Gt+Jt],Q=re[Tt+Zr],--Ce[0],Jt=te,te=S(Dt[0].codes,Dt[0].htrees[Q],pt),q[P<]=te,(P<)===lt&&O.write(q,wt),++P;if(Mt-=Ss,Mt<=0)break;if(ye<0){var Zr;if(pt.readMoreInput(),Ce[2]===0&&(St(ge[2],Qt,2,Ae,w,M,pt),Ce[2]=ct(ee,2*H,pt),ar=Ae[2]<<Y,ir=ar),--Ce[2],Zr=(le>4?3:le-2)&255,It=F[ir+Zr],ye=S(Dt[2].codes,Dt[2].htrees[It],pt),ye>=U){var xs,Qn,Kr;ye-=U,Qn=ye&Pt,ye>>=i,xs=(ye>>1)+1,Kr=(2+(ye&1)<<xs)-4,ye=U+(Kr+pt.readBits(xs)<<i)+Qn}}if(Me=at(ye,Kt,he),Me<0)throw new Error("[BrotliDecompress] invalid distance");if(P<rt&&st!==rt?st=P:st=rt,Xr=P<,Me>st)if(le>=f.minDictionaryWordLength&&le<=f.maxDictionaryWordLength){var Kr=f.offsetsByLength[le],$n=Me-st-1,ta=f.sizeBitsByLength[le],qu=(1<<ta)-1,Zu=$n&qu,ea=$n>>ta;if(Kr+=Zu*le,ea<v.kNumTransforms){var Cs=v.transformDictionaryWord(q,Xr,Kr,le,ea);if(Xr+=Cs,P+=Cs,Mt-=Cs,Xr>=Ft){O.write(q,wt);for(var Fo=0;Fo<Xr-Ft;Fo++)q[Fo]=q[Ft+Fo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+Me+" len: "+le+" bytes left: "+Mt)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+Me+" len: "+le+" bytes left: "+Mt);else{if(ye>0&&(Kt[he&3]=Me,++he),le>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+Me+" len: "+le+" bytes left: "+Mt);for(Tr=0;Tr<le;++Tr)q[P<]=q[P-Me<],(P<)===lt&&O.write(q,wt),++P,--Mt}te=q[P-1<],Jt=q[P-2<]}P&=1073741823}}O.write(q,P<)}a.BrotliDecompress=Xe,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,m=n.toByteArray(o("./dictionary.bin.js"));return l(m)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="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"},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,g){this.bits=d,this.value=g}a.HuffmanCode=n;var l=15;function m(d,g){for(var h=1<<g-1;d&h;)h>>=1;return(d&h-1)+h}function f(d,g,h,v,_){do v-=h,d[g+v]=new n(_.bits,_.value);while(v>0)}function c(d,g,h){for(var v=1<<g-h;g<l&&(v-=d[g],!(v<=0));)++g,v<<=1;return g-h}a.BrotliBuildHuffmanTable=function(d,g,h,v,_){var A=g,k,x,b,T,Y,I,V,H,$,bt,W,y=new Int32Array(l+1),L=new Int32Array(l+1);for(W=new Int32Array(_),b=0;b<_;b++)y[v[b]]++;for(L[1]=0,x=1;x<l;x++)L[x+1]=L[x]+y[x];for(b=0;b<_;b++)v[b]!==0&&(W[L[v[b]]++]=b);if(H=h,$=1<<H,bt=$,L[l]===1){for(T=0;T<bt;++T)d[g+T]=new n(0,W[0]&65535);return bt}for(T=0,b=0,x=1,Y=2;x<=h;++x,Y<<=1)for(;y[x]>0;--y[x])k=new n(x&255,W[b++]&65535),f(d,g+T,Y,$,k),T=m(T,x);for(V=bt-1,I=-1,x=h+1,Y=2;x<=l;++x,Y<<=1)for(;y[x]>0;--y[x])(T&V)!==I&&(g+=$,H=c(y,x,h),$=1<<H,bt+=$,I=T&V,d[A+I]=new n(H+h&255,g-A-I&65535)),k=new n(x-h&255,W[b++]&65535),f(d,g+(T>>h),Y,$,k),T=m(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=h,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],m=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function g(b){var T=b.length;if(T%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function h(b){var T=g(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function v(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=g(b),I=Y[0],V=Y[1],H=new m(v(b,I,V)),$=0,bt=V>0?I-4:I,W=0;W<bt;W+=4)T=l[b.charCodeAt(W)]<<18|l[b.charCodeAt(W+1)]<<12|l[b.charCodeAt(W+2)]<<6|l[b.charCodeAt(W+3)],H[$++]=T>>16&255,H[$++]=T>>8&255,H[$++]=T&255;return V===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),V===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,V=[],H=T;H<Y;H+=3)I=(b[H]<<16&16711680)+(b[H+1]<<8&65280)+(b[H+2]&255),V.push(A(I));return V.join("")}function x(b){for(var T,Y=b.length,I=Y%3,V=[],H=16383,$=0,bt=Y-I;$<bt;$+=H)V.push(k(b,$,$+H>bt?bt:$+H));return I===1?(T=b[Y-1],V.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],V.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),V.join("")}},{}],9:[function(o,s,a){function n(l,m){this.offset=l,this.nbits=m}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(m){this.buffer=m,this.pos=0}n.prototype.read=function(m,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)m[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(m){this.buffer=m,this.pos=0}l.prototype.write=function(m,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(m.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,m=1,f=2,c=3,d=4,g=5,h=6,v=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,V=16,H=17,$=18,bt=19,W=20;function y(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var R=0;R<ot.length;R++)this.prefix[R]=ot.charCodeAt(R);for(var R=0;R<gt.length;R++)this.suffix[R]=gt.charCodeAt(R)}var L=[new y("",l,""),new y("",l," "),new y(" ",l," "),new y("",b,""),new y("",k," "),new y("",l," the "),new y(" ",l,""),new y("s ",l," "),new y("",l," of "),new y("",k,""),new y("",l," and "),new y("",T,""),new y("",m,""),new y(", ",l," "),new y("",l,", "),new y(" ",k," "),new y("",l," in "),new y("",l," to "),new y("e ",l," "),new y("",l,'"'),new y("",l,"."),new y("",l,'">'),new y("",l,` -`),new y("",c,""),new y("",l,"]"),new y("",l," for "),new y("",Y,""),new y("",f,""),new y("",l," a "),new y("",l," that "),new y(" ",k,""),new y("",l,". "),new y(".",l,""),new y(" ",l,", "),new y("",I,""),new y("",l," with "),new y("",l,"'"),new y("",l," from "),new y("",l," by "),new y("",V,""),new y("",H,""),new y(" the ",l,""),new y("",d,""),new y("",l,". The "),new y("",x,""),new y("",l," on "),new y("",l," as "),new y("",l," is "),new y("",v,""),new y("",m,"ing "),new y("",l,` - `),new y("",l,":"),new y(" ",l,". "),new y("",l,"ed "),new y("",W,""),new y("",$,""),new y("",h,""),new y("",l,"("),new y("",k,", "),new y("",_,""),new y("",l," at "),new y("",l,"ly "),new y(" the ",l," of "),new y("",g,""),new y("",A,""),new y(" ",k,", "),new y("",k,'"'),new y(".",l,"("),new y("",x," "),new y("",k,'">'),new y("",l,'="'),new y(" ",l,"."),new y(".com/",l,""),new y(" the ",l," of the "),new y("",k,"'"),new y("",l,". This "),new y("",l,","),new y(".",l," "),new y("",k,"("),new y("",k,"."),new y("",l," not "),new y(" ",l,'="'),new y("",l,"er "),new y(" ",x," "),new y("",l,"al "),new y(" ",x,""),new y("",l,"='"),new y("",x,'"'),new y("",k,". "),new y(" ",l,"("),new y("",l,"ful "),new y(" ",k,". "),new y("",l,"ive "),new y("",l,"less "),new y("",x,"'"),new y("",l,"est "),new y(" ",k,"."),new y("",x,'">'),new y(" ",l,"='"),new y("",k,","),new y("",l,"ize "),new y("",x,"."),new y("\xC2\xA0",l,""),new y(" ",l,","),new y("",k,'="'),new y("",x,'="'),new y("",l,"ous "),new y("",x,", "),new y("",k,"='"),new y(" ",k,","),new y(" ",x,'="'),new y(" ",x,", "),new y("",x,","),new y("",x,"("),new y("",x,". "),new y(" ",x,"."),new y("",x,"='"),new y(" ",x,". "),new y(" ",k,'="'),new y(" ",x,"='"),new y(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function it(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,R,S){var E=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ct<b?0:ct-(b-1),Ct=0,Wt=K,Ot;at>R&&(at=R);for(var J=0;J<E.length;)ot[K++]=E[J++];for(gt+=at,R-=at,ct<=A&&(R-=ct),Ct=0;Ct<R;Ct++)ot[K++]=n.dictionary[gt+Ct];if(Ot=K-R,ct===k)it(ot,Ot);else if(ct===x)for(;R>0;){var St=it(ot,Ot);Ot+=St,R-=St}for(var At=0;At<et.length;)ot[K++]=et[At++];return K-Wt}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var os=(t=>typeof ue<"u"?ue:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ue<"u"?ue:e)[r]}):t)(function(t){if(typeof ue<"u")return ue.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Rl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof os=="function"&&os;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof os=="function"&&os,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var g=d.shift();if(g){if(typeof g!="object")throw new TypeError(g+"must be non-object");for(var h in g)l(g,h)&&(c[h]=g[h])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var m={arraySet:function(c,d,g,h,v){if(d.subarray&&c.subarray){c.set(d.subarray(g,g+h),v);return}for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){var d,g,h,v,_,A;for(h=0,d=0,g=c.length;d<g;d++)h+=c[d].length;for(A=new Uint8Array(h),v=0,d=0,g=c.length;d<g;d++)_=c[d],A.set(_,v),v+=_.length;return A}},f={arraySet:function(c,d,g,h,v){for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,m)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,m=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{m=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(g){var h,v,_,A,k,x=g.length,b=0;for(A=0;A<x;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),b+=v<128?1:v<2048?2:v<65536?3:4;for(h=new n.Buf8(b),k=0,A=0;k<b;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),v<128?h[k++]=v:v<2048?(h[k++]=192|v>>>6,h[k++]=128|v&63):v<65536?(h[k++]=224|v>>>12,h[k++]=128|v>>>6&63,h[k++]=128|v&63):(h[k++]=240|v>>>18,h[k++]=128|v>>>12&63,h[k++]=128|v>>>6&63,h[k++]=128|v&63);return h};function d(g,h){if(h<65534&&(g.subarray&&m||!g.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(g,h));for(var v="",_=0;_<h;_++)v+=String.fromCharCode(g[_]);return v}a.buf2binstring=function(g){return d(g,g.length)},a.binstring2buf=function(g){for(var h=new n.Buf8(g.length),v=0,_=h.length;v<_;v++)h[v]=g.charCodeAt(v);return h},a.buf2string=function(g,h){var v,_,A,k,x=h||g.length,b=new Array(x*2);for(_=0,v=0;v<x;){if(A=g[v++],A<128){b[_++]=A;continue}if(k=f[A],k>4){b[_++]=65533,v+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&v<x;)A=A<<6|g[v++]&63,k--;if(k>1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(g,h){var v;for(h=h||g.length,h>g.length&&(h=g.length),v=h-1;v>=0&&(g[v]&192)===128;)v--;return v<0||v===0?h:v+f[g[v]]>h?v:h}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,m,f,c){for(var d=l&65535|0,g=l>>>16&65535|0,h=0;f!==0;){h=f>2e3?2e3:f,f-=h;do d=d+m[c++]|0,g=g+d|0;while(--h);d%=65521,g%=65521}return d|g<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var g=0;g<8;g++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function m(f,c,d,g){var h=l,v=g+d;f^=-1;for(var _=g;_<v;_++)f=f>>>8^h[(f^c[_])&255];return f^-1}s.exports=m},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,g,h,v,_,A,k,x,b,T,Y,I,V,H,$,bt,W,y,L,it,ot,K,gt,R,S;d=f.state,g=f.next_in,R=f.input,h=g+(f.avail_in-5),v=f.next_out,S=f.output,_=v-(c-f.avail_out),A=v+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,V=d.bits,H=d.lencode,$=d.distcode,bt=(1<<d.lenbits)-1,W=(1<<d.distbits)-1;t:do{V<15&&(I+=R[g++]<<V,V+=8,I+=R[g++]<<V,V+=8),y=H[I&bt];e:for(;;){if(L=y>>>24,I>>>=L,V-=L,L=y>>>16&255,L===0)S[v++]=y&65535;else if(L&16){it=y&65535,L&=15,L&&(V<L&&(I+=R[g++]<<V,V+=8),it+=I&(1<<L)-1,I>>>=L,V-=L),V<15&&(I+=R[g++]<<V,V+=8,I+=R[g++]<<V,V+=8),y=$[I&W];r:for(;;){if(L=y>>>24,I>>>=L,V-=L,L=y>>>16&255,L&16){if(ot=y&65535,L&=15,V<L&&(I+=R[g++]<<V,V+=8,V<L&&(I+=R[g++]<<V,V+=8)),ot+=I&(1<<L)-1,ot>k){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,V-=L,L=v-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L<it){it-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}else if(T<L){if(K+=x+T-L,L-=T,L<it){it-=L;do S[v++]=Y[K++];while(--L);if(K=0,T<it){L=T,it-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}}else if(K+=T-L,L<it){it-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}for(;it>2;)S[v++]=gt[K++],S[v++]=gt[K++],S[v++]=gt[K++],it-=3;it&&(S[v++]=gt[K++],it>1&&(S[v++]=gt[K++]))}else{K=v-ot;do S[v++]=S[K++],S[v++]=S[K++],S[v++]=S[K++],it-=3;while(it>2);it&&(S[v++]=S[K++],it>1&&(S[v++]=S[K++]))}}else if((L&64)===0){y=$[(y&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break t}break}}else if((L&64)===0){y=H[(y&65535)+(I&(1<<L)-1)];continue e}else if(L&32){d.mode=l;break t}else{f.msg="invalid literal/length code",d.mode=n;break t}break}}while(g<h&&v<A);it=V>>3,g-=it,V-=it<<3,I&=(1<<V)-1,f.next_in=g,f.next_out=v,f.avail_in=g<h?5+(h-g):5-(g-h),f.avail_out=v<A?257+(A-v):257-(v-A),d.hold=I,d.bits=V}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),m=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,g=1,h=2,v=4,_=5,A=6,k=0,x=1,b=2,T=-2,Y=-3,I=-4,V=-5,H=8,$=1,bt=2,W=3,y=4,L=5,it=6,ot=7,K=8,gt=9,R=10,S=11,E=12,et=13,ct=14,at=15,Ct=16,Wt=17,Ot=18,J=19,St=20,At=21,xe=22,zt=23,sr=24,Xe=25,N=26,O=27,B=28,P=29,D=30,dt=31,rt=32,st=852,wt=592,lt=15,q=lt;function Ft(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Kt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function he(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function te(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,he(w))}function Jt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,te(w))}function Dt(w,M){var i,U;return w?(U=new Kt,w.state=U,U.window=null,i=Jt(w,M),i!==k&&(w.state=null),i):T}function Qt(w){return Dt(w,q)}var ee=!0,pt,qr;function kr(w){if(ee){var M;for(pt=new n.Buf32(512),qr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(g,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(h,w.lens,0,32,qr,0,w.work,{bits:5}),ee=!1}w.lencode=pt,w.lenbits=9,w.distcode=qr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pt))),0}function Co(w,M){var i,U,Pt,G,re,j,Vt,F,C,nr,Tt,Q,ar,ir,It=0,xt,Gt,jt,Yt,ze,lr,Lt,oe,Nt=new n.Buf8(4),se,ie,Or=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return T;i=w.state,i.mode===E&&(i.mode=et),re=w.next_out,Pt=w.output,Vt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,nr=j,Tt=Vt,oe=k;t:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=et;break}for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=D;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=D;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=D;break}i.dmax=1<<Lt,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case bt:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==H){w.msg="unknown compression method",i.mode=D;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=D;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=m(i.check,Nt,4,0)),F=0,C=0,i.mode=y;case y:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=it;case it:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.comment+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.comment=null);i.mode=gt;case gt:if(i.flags&512){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=D;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Ft(F),F=0,C=0,i.mode=S;case S:if(i.havedict===0)return w.next_out=re,w.avail_out=Vt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===_||M===A)break t;case et:if(i.last){F>>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(kr(i),i.mode=St,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Wt;break;case 3:w.msg="invalid block type",i.mode=D}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=D;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Vt&&(Q=Vt),Q===0)break t;n.arraySet(Pt,U,G,Q,re),j-=Q,G+=Q,Vt-=Q,re+=Q,i.length-=Q;break}i.mode=E;break;case Wt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=D;break}i.have=0,i.mode=Ot;case Ot:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.lens[Or[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[Or[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,se={bits:i.lenbits},oe=c(d,i.lens,0,19,i.lencode,0,i.work,se),i.lenbits=se.bits,oe){w.msg="invalid code lengths set",i.mode=D;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(jt<16)F>>>=xt,C-=xt,i.lens[i.have++]=jt;else{if(jt===16){for(ie=xt+2;C<ie;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F>>>=xt,C-=xt,i.have===0){w.msg="invalid bit length repeat",i.mode=D;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ie=xt+3;C<ie;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ie=xt+7;C<ie;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=D;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===D)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=D;break}if(i.lenbits=9,se={bits:i.lenbits},oe=c(g,i.lens,0,i.nlen,i.lencode,0,i.work,se),i.lenbits=se.bits,oe){w.msg="invalid literal/lengths set",i.mode=D;break}if(i.distbits=6,i.distcode=i.distdyn,se={bits:i.distbits},oe=c(h,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,se),i.distbits=se.bits,oe){w.msg="invalid distances set",i.mode=D;break}if(i.mode=St,M===A)break t;case St:i.mode=At;case At:if(j>=6&&Vt>=258){w.next_out=re,w.avail_out=Vt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),re=w.next_out,Pt=w.output,Vt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(Gt&&(Gt&240)===0){for(Yt=xt,ze=Gt,lr=jt;It=i.lencode[lr+((F&(1<<Yt+ze)-1)>>Yt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(Yt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=Yt,C-=Yt,i.back+=Yt}if(F>>>=xt,C-=xt,i.back+=xt,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=E;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=D;break}i.extra=Gt&15,i.mode=xe;case xe:if(i.extra){for(ie=i.extra;C<ie;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<<i.distbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((Gt&240)===0){for(Yt=xt,ze=Gt,lr=jt;It=i.distcode[lr+((F&(1<<Yt+ze)-1)>>Yt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(Yt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=Yt,C-=Yt,i.back+=Yt}if(F>>>=xt,C-=xt,i.back+=xt,Gt&64){w.msg="invalid distance code",i.mode=D;break}i.offset=jt,i.extra=Gt&15,i.mode=sr;case sr:if(i.extra){for(ie=i.extra;C<ie;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=D;break}i.mode=Xe;case Xe:if(Vt===0)break t;if(Q=Tt-Vt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=D;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pt,ar=re-i.offset,Q=i.length;Q>Vt&&(Q=Vt),Vt-=Q,i.length-=Q;do Pt[re++]=ir[ar++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Vt===0)break t;Pt[re++]=i.length,Vt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<<C,C+=8}if(Tt-=Vt,w.total_out+=Tt,i.total+=Tt,Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,re-Tt):l(i.check,Pt,Tt,re-Tt)),Tt=Vt,(i.flags?F:Ft(F))!==i.check){w.msg="incorrect data check",i.mode=D;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=D;break}F=0,C=0}i.mode=P;case P:oe=x;break t;case D:oe=Y;break t;case dt:return I;case rt:default:return T}return w.next_out=re,w.avail_out=Vt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Tt!==w.avail_out&&i.mode<D&&(i.mode<O||M!==v))&&Mt(w,w.output,w.next_out,Tt-w.avail_out)?(i.mode=dt,I):(nr-=w.avail_in,Tt-=w.avail_out,w.total_in+=nr,w.total_out+=Tt,i.total+=Tt,i.wrap&&Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,w.next_out-Tt):l(i.check,Pt,Tt,w.next_out-Tt)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===St||i.mode===at?256:0),(nr===0&&Tt===0||M===v)&&oe===k&&(oe=V),oe)}function Ce(w){if(!w||!w.state)return T;var M=w.state;return M.window&&(M.window=null),w.state=null,k}function Ae(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?T:(i.head=M,M.done=!1,k)}function ge(w,M){var i=M.length,U,Pt,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==S)?T:U.mode===S&&(Pt=1,Pt=l(Pt,M,i,0),Pt!==U.check)?Y:(G=Mt(w,M,i,i),G?(U.mode=dt,I):(U.havedict=1,k))}a.inflateReset=te,a.inflateReset2=Jt,a.inflateResetKeep=he,a.inflateInit=Qt,a.inflateInit2=Dt,a.inflate=Co,a.inflateEnd=Ce,a.inflateGetHeader=Ae,a.inflateSetDictionary=ge,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,m=852,f=592,c=0,d=1,g=2,h=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],v=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(x,b,T,Y,I,V,H,$){var bt=$.bits,W=0,y=0,L=0,it=0,ot=0,K=0,gt=0,R=0,S=0,E=0,et,ct,at,Ct,Wt,Ot=null,J=0,St,At=new n.Buf16(l+1),xe=new n.Buf16(l+1),zt=null,sr=0,Xe,N,O;for(W=0;W<=l;W++)At[W]=0;for(y=0;y<Y;y++)At[b[T+y]]++;for(ot=bt,it=l;it>=1&&At[it]===0;it--);if(ot>it&&(ot=it),it===0)return I[V++]=1<<24|64<<16|0,I[V++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<it&&At[L]===0;L++);for(ot<L&&(ot=L),R=1,W=1;W<=l;W++)if(R<<=1,R-=At[W],R<0)return-1;if(R>0&&(x===c||it!==1))return-1;for(xe[1]=0,W=1;W<l;W++)xe[W+1]=xe[W]+At[W];for(y=0;y<Y;y++)b[T+y]!==0&&(H[xe[b[T+y]]++]=y);if(x===c?(Ot=zt=H,St=19):x===d?(Ot=h,J-=257,zt=v,sr-=257,St=256):(Ot=_,zt=A,St=-1),E=0,y=0,W=L,Wt=V,K=ot,gt=0,at=-1,S=1<<ot,Ct=S-1,x===d&&S>m||x===g&&S>f)return 1;for(;;){Xe=W-gt,H[y]<St?(N=0,O=H[y]):H[y]>St?(N=zt[sr+H[y]],O=Ot[J+H[y]]):(N=96,O=0),et=1<<W-gt,ct=1<<K,L=ct;do ct-=et,I[Wt+(E>>gt)+ct]=Xe<<24|N<<16|O|0;while(ct!==0);for(et=1<<W-1;E&et;)et>>=1;if(et!==0?(E&=et-1,E+=et):E=0,y++,--At[W]===0){if(W===it)break;W=b[T+H[y]]}if(W>ot&&(E&Ct)!==at){for(gt===0&&(gt=ot),Wt+=L,K=W-gt,R=1<<K;K+gt<it&&(R-=At[K+gt],!(R<=0));)K++,R<<=1;if(S+=1<<K,x===d&&S>m||x===g&&S>f)return 1;at=E&Ct,I[at]=ot<<24|K<<16|Wt-V|0}}return E!==0&&(I[Wt+E]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),m=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),g=o("./zlib/gzheader"),h=Object.prototype.toString;function v(k){if(!(this instanceof v))return new v(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new g,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=m.string2buf(x.dictionary):h.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}v.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,V,H,$,bt,W=!1;if(this.ended)return!1;V=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=m.binstring2buf(k):h.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(V===f.Z_FINISH||V===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=m.utf8border(b.output,b.next_out),$=b.next_out-H,bt=m.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(V=f.Z_FINISH),V===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(V===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},v.prototype.onData=function(k){this.chunks.push(k)},v.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new v(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=v,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var nw=globalThis.fetch,ss=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},Kc=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;r<o&&t.__mayPropagate;r++)e[r](t)}},Jc=new Date("1904-01-01T00:00:00+0000").getTime();function Qc(t){return Array.from(t).map(e=>String.fromCharCode(e)).join("")}var $c=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return Qc([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(Jc+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new $c(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var td=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new ed(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},ed=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},El=Rl.inflate||void 0,Il=void 0,rd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new od(o)),sd(this,e,r)}},od=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function sd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(El)l=El(new Uint8Array(n));else if(Il)l=Il(new Uint8Array(n));else{let m="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(m),new Error(m)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Ll=Al,Bl=void 0,nd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new ad(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,m)=>{let f=this.directory[m+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Ll)a=Ll(new Uint8Array(n));else if(Bl)a=new Uint8Array(Bl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}id(this,a,r)}},ad=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=ld(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function id(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function ld(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var jl={},Ul=!1;Promise.all([Promise.resolve().then(function(){return Dd}),Promise.resolve().then(function(){return Nd}),Promise.resolve().then(function(){return Md}),Promise.resolve().then(function(){return Ud}),Promise.resolve().then(function(){return Wd}),Promise.resolve().then(function(){return Kd}),Promise.resolve().then(function(){return Qd}),Promise.resolve().then(function(){return tm}),Promise.resolve().then(function(){return fm}),Promise.resolve().then(function(){return Sm}),Promise.resolve().then(function(){return lp}),Promise.resolve().then(function(){return fp}),Promise.resolve().then(function(){return pp}),Promise.resolve().then(function(){return vp}),Promise.resolve().then(function(){return wp}),Promise.resolve().then(function(){return xp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return Tp}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Rp}),Promise.resolve().then(function(){return Ip}),Promise.resolve().then(function(){return Bp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Gp}),Promise.resolve().then(function(){return jp}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Yp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return Kp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return nh}),Promise.resolve().then(function(){return uh}),Promise.resolve().then(function(){return dh}),Promise.resolve().then(function(){return gh}),Promise.resolve().then(function(){return vh}),Promise.resolve().then(function(){return wh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Bh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];jl[r]=e[r]}),Ul=!0});function ud(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=jl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function fd(){let t=0;function e(r,o){if(!Ul)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(ud)}return new Promise((r,o)=>e(r))}function cd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function dd(t,e,r={}){if(!globalThis.document)return;let o=cd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` +var Ju=Object.create;var sa=Object.defineProperty;var Qu=Object.getOwnPropertyDescriptor;var $u=Object.getOwnPropertyNames;var tf=Object.getPrototypeOf,ef=Object.prototype.hasOwnProperty;var ce=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var rf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of $u(e))!ef.call(t,s)&&s!==r&&sa(t,s,{get:()=>e[s],enumerable:!(o=Qu(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Ju(tf(t)):{},rf(e||!t||!t.__esModule?sa(r,"default",{value:t,enumerable:!0}):r,t));var it=Ht((ty,na)=>{na.exports=window.wp.i18n});var X=Ht((ey,aa)=>{aa.exports=window.wp.components});var z=Ht((ry,ia)=>{ia.exports=window.ReactJSXRuntime});var vt=Ht((sy,ua)=>{ua.exports=window.wp.element});var Ar=Ht((iy,pa)=>{pa.exports=window.React});var Rr=Ht((Vy,Aa)=>{Aa.exports=window.wp.primitives});var Ns=Ht((Qy,Ra)=>{Ra.exports=window.wp.privateApis});var mr=Ht(($y,Ea)=>{Ea.exports=window.wp.compose});var Ma=Ht((hv,za)=>{za.exports=window.wp.editor});var we=Ht((gv,Ga)=>{Ga.exports=window.wp.coreData});var de=Ht((yv,ja)=>{ja.exports=window.wp.data});var Ir=Ht((vv,Ua)=>{Ua.exports=window.wp.blocks});var ae=Ht((bv,Ha)=>{Ha.exports=window.wp.blockEditor});var Ya=Ht((kv,Wa)=>{Wa.exports=window.wp.styleEngine});var Ja=Ht((Dv,Ka)=>{"use strict";Ka.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var ei=Ht((zv,ti)=>{"use strict";var Ef=function(e){return If(e)&&!Lf(e)};function If(t){return!!t&&typeof t=="object"}function Lf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Df(t)}var Bf=typeof Symbol=="function"&&Symbol.for,Vf=Bf?Symbol.for("react.element"):60103;function Df(t){return t.$$typeof===Vf}function Nf(t){return Array.isArray(t)?[]:{}}function io(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Br(Nf(t),t,e):t}function zf(t,e,r){return t.concat(e).map(function(o){return io(o,r)})}function Mf(t,e){if(!e.customMerge)return Br;var r=e.customMerge(t);return typeof r=="function"?r:Br}function Gf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function Qa(t){return Object.keys(t).concat(Gf(t))}function $a(t,e){try{return e in t}catch{return!1}}function jf(t,e){return $a(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function Uf(t,e,r){var o={};return r.isMergeableObject(t)&&Qa(t).forEach(function(s){o[s]=io(t[s],r)}),Qa(e).forEach(function(s){jf(t,s)||($a(t,s)&&r.isMergeableObject(e[s])?o[s]=Mf(s,r)(t[s],e[s],r):o[s]=io(e[s],r))}),o}function Br(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||zf,r.isMergeableObject=r.isMergeableObject||Ef,r.cloneUnlessOtherwiseSpecified=io;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):Uf(t,e,r):io(e,r)}Br.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Br(o,s,r)},{})};var Hf=Br;ti.exports=Hf});var pn=Ht(($0,Qi)=>{Qi.exports=window.wp.keycodes});var ol=Ht((fb,rl)=>{rl.exports=window.wp.apiFetch});var Au=Ht((IF,Pu)=>{Pu.exports=window.wp.date});function la(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e<s;e++)t[e]&&(r=la(t[e]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}function of(){for(var t,e,r=0,o="",s=arguments.length;r<s;r++)(t=arguments[r])&&(e=la(t))&&(o&&(o+=" "),o+=e);return o}var be=of;var fa=u(vt(),1),ca=u(z(),1),da=(0,fa.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...s},a)=>(0,ca.jsx)(o,{ref:a,className:be("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));da.displayName="NavigableRegion";var ma=da;var ga=u(Ar(),1),ha={};function ks(t,e){let r=ga.useRef(ha);return r.current===ha&&(r.current=t(e)),r}function Os(t,...e){let r=new URL("https://base-ui.com/production-error");return r.searchParams.set("code",t.toString()),e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var fr=u(Ar(),1);function Ts(t,e,r,o){let s=ks(va).current;return sf(s,t,e,r,o)&&ba(s,[t,e,r,o]),s.callback}function ya(t){let e=ks(va).current;return nf(e,t)&&ba(e,t),e.callback}function va(){return{callback:null,cleanup:null,refs:[]}}function sf(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function nf(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function ba(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}t.cleanup=()=>{for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var xa=u(Ar(),1);var wa=u(Ar(),1),af=parseInt(wa.version,10);function Sa(t){return af>=t}function _s(t){if(!xa.isValidElement(t))return null;let e=t,r=e.props;return(Sa(19)?r?.ref:e.ref)??null}function to(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Ca(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Fa(t,e){return typeof t=="function"?t(e):t}function ka(t,e){return typeof t=="function"?t(e):t}var ro={};function To(t,e,r,o,s){let a={...Ps(t,ro)};return e&&(a=eo(a,e)),r&&(a=eo(a,r)),o&&(a=eo(a,o)),s&&(a=eo(a,s)),a}function Oa(t){if(t.length===0)return ro;if(t.length===1)return Ps(t[0],ro);let e={...Ps(t[0],ro)};for(let r=1;r<t.length;r+=1)e=eo(e,t[r]);return e}function eo(t,e){return Ta(e)?e(t):lf(t,e)}function lf(t,e){if(!e)return t;for(let r in e){let o=e[r];switch(r){case"style":{t[r]=to(t.style,o);break}case"className":{t[r]=As(t.className,o);break}default:uf(r,o)?t[r]=ff(t[r],o):t[r]=o}}return t}function uf(t,e){let r=t.charCodeAt(0),o=t.charCodeAt(1),s=t.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function Ta(t){return typeof t=="function"}function Ps(t,e){return Ta(t)?t(e):t??ro}function ff(t,e){return e?t?r=>{if(df(r)){let s=r;cf(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:e:t}function cf(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function As(t,e){return e?t?e+" "+t:e:t}function df(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var mf=Object.freeze([]),Je=Object.freeze({});var Rs=u(Ar(),1);function _a(t,e,r={}){let o=e.render,s=pf(e,r);if(r.enabled===!1)return null;let a=r.state??Je;return gf(t,o,s,a)}function pf(t,e={}){let{className:r,style:o,render:s}=t,{state:a=Je,ref:n,props:l,stateAttributesMapping:m,enabled:f=!0}=e,c=f?Fa(r,a):void 0,d=f?ka(o,a):void 0,g=f?Ca(a,m):Je,h=f?to(g,Array.isArray(l)?Oa(l):l)??Je:Je;return typeof document<"u"&&(f?Array.isArray(n)?h.ref=ya([h.ref,_s(s),...n]):h.ref=Ts(h.ref,_s(s),n):Ts(null,null)),f?(c!==void 0&&(h.className=As(h.className,c)),d!==void 0&&(h.style=to(h.style,d)),h):Je}var hf=Symbol.for("react.lazy");function gf(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=To(r,e.props);s.ref=r.ref;let a=e;return a?.$$typeof===hf&&(a=fr.Children.toArray(e)[0]),fr.cloneElement(a,s)}if(t&&typeof t=="string")return yf(t,r);throw new Error(Os(8))}function yf(t,e){return t==="button"?(0,Rs.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,Rs.createElement)("img",{alt:"",...e,key:e.key}):fr.createElement(t,e)}function Pa(t){return _a(t.defaultTagName??"div",t,t)}var _o=u(vt(),1),oo=(0,_o.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,_o.cloneElement)(t,{width:e,height:e,...r,ref:o}));var Po=u(Rr(),1),Es=u(z(),1),cr=(0,Es.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Es.jsx)(Po.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Ao=u(Rr(),1),Is=u(z(),1),dr=(0,Is.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Ao.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Ro=u(Rr(),1),Ls=u(z(),1),Bs=(0,Ls.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ls.jsx)(Ro.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Eo=u(Rr(),1),Vs=u(z(),1),Io=(0,Vs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Vs.jsx)(Eo.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Lo=u(Rr(),1),Ds=u(z(),1),Bo=(0,Ds.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Lo.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Ia=u(vt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","71d20935c2"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var vf={stack:"_19ce0419607e1896__stack"},bf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Er=(0,Ia.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},m){let f={gap:r&&bf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return Pa({render:n,ref:m,props:To(l,{style:f,className:vf.stack})})});var La=u(X(),1),{Fill:Ba,Slot:Va}=(0,La.createSlotFill)("SidebarToggle");var Ee=u(z(),1);function Da({headingLevel:t=2,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Ee.jsxs)(Er,{direction:"column",className:"admin-ui-page__header",render:(0,Ee.jsx)("header",{}),children:[(0,Ee.jsxs)(Er,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Ee.jsxs)(Er,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Ee.jsx)(Va,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Ee.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Ee.jsx)(Er,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Ee.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var so=u(z(),1);function Na({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,ariaLabel:m,hasPadding:f=!1,showSidebarToggle:c=!0}){let d=be("admin-ui-page",n);return(0,so.jsxs)(ma,{className:d,ariaLabel:m??(typeof o=="string"?o:""),children:[(o||e||r)&&(0,so.jsx)(Da,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:c}),f?(0,so.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Na.SidebarToggleFill=Ba;var zs=Na;var Xr=u(it()),Wu=u(X()),Yu=u(Ma()),Ss=u(we()),qu=u(de()),Zu=u(vt());var ju=u(X(),1),Uu=u(Ir(),1),Ug=u(de(),1),Hg=u(ae(),1),Xn=u(vt(),1),Wg=u(mr(),1);function Lr(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var Se=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var wf=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function Ms(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return Se(t,a)??Se(t,n);let l={};return wf.forEach(m=>{let f=Se(t,`settings${o}.${m}`)??Se(t,`settings.${m}`);f!==void 0&&(l=Lr(l,m.split("."),f))}),l}function Gs(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Lr(t,n.split("."),r)}var _f=u(Ya(),1);var Sf="1600px",xf="320px",Cf=1,Ff=.25,kf=.75,Of="14px";function qa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=xf,maximumViewportWidth:s=Sf,scaleFactor:a=Cf,minimumFontSizeLimit:n}){if(n=Ie(n)?n:Of,r){let b=Ie(r);if(!b?.unit||!b?.value)return null;let T=Ie(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),Ff),kf),D=no(b.value*I,3);T?.value&&D<T?.value?t=`${T.value}${T.unit}`:t=`${D}${b.unit}`}}let l=Ie(t),m=l?.unit||"rem",f=Ie(e,{coerceTo:m});if(!l||!f)return null;let c=Ie(t,{coerceTo:"rem"}),d=Ie(s,{coerceTo:m}),g=Ie(o,{coerceTo:m});if(!d||!g||!c)return null;let h=d.value-g.value;if(!h)return null;let v=no(g.value/100,3),_=no(v,3)+m,A=100*((f.value-l.value)/h),k=no((A||1)*a,3),x=`${c.value}${c.unit} + ((1vw - ${_}) * ${k})`;return`clamp(${t}, ${x}, ${e})`}function Ie(t,e={}){if(typeof t!="string"&&typeof t!="number")return null;isFinite(t)&&(t=`${t}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...e},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=t.toString().match(n);if(!l||l.length<3)return null;let[,m,f]=l,c=parseFloat(m);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:no(c,3),unit:f}:null}function no(t,e=3){let r=Math.pow(10,e);return Math.round(t*r)/r}function js(t){let e=t?.fluid;return e===!0||e&&typeof e=="object"&&Object.keys(e).length>0}function Tf(t){let e=t?.typography??{},r=t?.layout,o=Ie(r?.wideSize)?r?.wideSize:null;return js(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function Za(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!js(e?.typography)&&!js(t))return r;let o=Tf(e)?.fluid??{},s=qa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Pf=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>Za(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function Xa(t,e,r=[],o="slug",s){let a=[e?Se(t,["blocks",e,...r]):void 0,Se(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let m of l){let f=n[m];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||Xa(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Af(t,e,r,[o,s]=[]){let a=Pf.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=Xa(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,m=n[l];return Vo(t,e,m)}return r}function Rf(t,e,r,o=[]){let s=(e?Se(t?.settings??{},["blocks",e,"custom",...o]):void 0)??Se(t?.settings??{},["custom",...o]);return s?Vo(t,e,s):r}function Vo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=Se(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...m]=n;return l==="preset"?Af(t,e,r,m):l==="custom"?Rf(t,e,r,m):r}function Us(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=Se(t,a);return o?Vo(t,r,n):n}function Hs(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Lr(t,a.split("."),r)}var Ws=u(Ja(),1);function ao(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Ws.default)(t?.styles,e?.styles)&&(0,Ws.default)(t?.settings,e?.settings)}var si=u(ei(),1);function ri(t){return Object.prototype.toString.call(t)==="[object Object]"}function oi(t){var e,r;return ri(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ri(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function pr(t,e){return(0,si.default)(t,e,{isMergeableObject:oi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var Wf={grad:.9,turn:360,rad:360/(2*Math.PI)},Ue=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Zt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},ke=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},di=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ni=function(t){return{r:ke(t.r,0,255),g:ke(t.g,0,255),b:ke(t.b,0,255),a:ke(t.a)}},Ys=function(t){return{r:Zt(t.r),g:Zt(t.g),b:Zt(t.b),a:Zt(t.a,3)}},Yf=/^#([0-9a-f]{3,8})$/i,Do=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},mi=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},pi=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),m=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,m,o][f],g:255*[m,o,o,l,n,n][f],b:255*[n,n,m,o,o,l][f],a:s}},ai=function(t){return{h:di(t.h),s:ke(t.s,0,100),l:ke(t.l,0,100),a:ke(t.a)}},ii=function(t){return{h:Zt(t.h),s:Zt(t.s),l:Zt(t.l),a:Zt(t.a,3)}},li=function(t){return pi((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},lo=function(t){return{h:(e=mi(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},qf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Xf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Kf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Xs={string:[[function(t){var e=Yf.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Zt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Zt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=Xf.exec(t)||Kf.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:ni({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=qf.exec(t)||Zf.exec(t);if(!e)return null;var r,o,s=ai({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(Wf[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return li(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return Ue(e)&&Ue(r)&&Ue(o)?ni({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=ai({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return li(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=(function(l){return{h:di(l.h),s:ke(l.s,0,100),v:ke(l.v,0,100),a:ke(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return pi(n)},"hsv"]]},ui=function(t,e){for(var r=0;r<e.length;r++){var o=e[r][0](t);if(o)return[o,e[r][1]]}return[null,void 0]},Jf=function(t){return typeof t=="string"?ui(t.trim(),Xs.string):typeof t=="object"&&t!==null?ui(t,Xs.object):[null,void 0]};var qs=function(t,e){var r=lo(t);return{h:r.h,s:ke(r.s+100*e,0,100),l:r.l,a:r.a}},Zs=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},fi=function(t,e){var r=lo(t);return{h:r.h,s:r.s,l:ke(r.l+100*e,0,100),a:r.a}},Ks=(function(){function t(e){this.parsed=Jf(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return Zt(Zs(this.rgba),2)},t.prototype.isDark=function(){return Zs(this.rgba)<.5},t.prototype.isLight=function(){return Zs(this.rgba)>=.5},t.prototype.toHex=function(){return e=Ys(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?Do(Zt(255*a)):"","#"+Do(r)+Do(o)+Do(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ys(this.rgba)},t.prototype.toRgbString=function(){return e=Ys(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return ii(lo(this.rgba))},t.prototype.toHslString=function(){return e=ii(lo(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=mi(this.rgba),{h:Zt(e.h),s:Zt(e.s),v:Zt(e.v),a:Zt(e.a,3)};var e},t.prototype.invert=function(){return Le({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Le(qs(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Le(qs(this.rgba,-e))},t.prototype.grayscale=function(){return Le(qs(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Le(fi(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Le(fi(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Le({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Zt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=lo(this.rgba);return typeof e=="number"?Le({h:e,s:r.s,l:r.l,a:r.a}):Zt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Le(e).toHex()},t})(),Le=function(t){return t instanceof Ks?t:new Ks(t)},ci=[],hi=function(t){t.forEach(function(e){ci.indexOf(e)<0&&(e(Ks,Xs),ci.push(e))})};var Js=u(vt(),1);var gi=u(vt(),1),Kt=(0,gi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var yi=u(z(),1);function uo({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Js.useMemo)(()=>pr(r,e),[r,e]),n=(0,Js.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,yi.jsx)(Kt.Provider,{value:n,children:t})}var He=u(X(),1),Vi=u(it(),1);var cc=u(de(),1),dc=u(we(),1);var vi=u(z(),1);function Qs({className:t,...e}){return(0,vi.jsx)(oo,{className:be(t,"global-styles-ui-icon-with-current-color"),...e})}var Qe=u(X(),1);var hr=u(z(),1);function Qf({icon:t,children:e,...r}){return(0,hr.jsxs)(Qe.__experimentalItem,{...r,children:[t&&(0,hr.jsxs)(Qe.__experimentalHStack,{justify:"flex-start",children:[(0,hr.jsx)(Qs,{icon:t,size:24}),(0,hr.jsx)(Qe.FlexItem,{children:e})]}),!t&&e]})}function Be(t){return(0,hr.jsx)(Qe.Navigator.Button,{as:Qf,...t})}var ec=u(X(),1);var rc=u(it(),1),ki=u(ae(),1);var $s=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},tn=function(t){return .2126*$s(t.r)+.7152*$s(t.g)+.0722*$s(t.b)};function bi(t){t.prototype.luminance=function(){return e=tn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,m,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=tn(a),m=tn(n),r=l>m?(l+.05)/(m+.05):(m+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Ae=u(vt(),1),xi=u(de(),1),Ci=u(we(),1),rn=u(it(),1);var Wt=u(it(),1),l1={link:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}],button:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}]},u1={"core/button":[{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}]};function en(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&en(t[r],e);return t}var No=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=No(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function fo(t,e){let r=No(structuredClone(t),e);return ao(r,t)}function wi(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function Si(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=wi(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=wi(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}hi([bi]);function kt(t,e,r="merged",o=!0){let{user:s,base:a,merged:n,onChange:l}=(0,Ae.useContext)(Kt),m=n;r==="base"?m=a:r==="user"&&(m=s);let f=(0,Ae.useMemo)(()=>Us(m,t,e,o),[m,t,e,o]),c=(0,Ae.useCallback)(d=>{let g=Hs(s,t,d,e);l(g)},[s,l,t,e]);return[f,c]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Ae.useContext)(Kt),l=a;r==="base"?l=s:r==="user"&&(l=o);let m=(0,Ae.useMemo)(()=>Ms(l,t,e),[l,t,e]),f=(0,Ae.useCallback)(c=>{let d=Gs(o,t,c,e);n(d)},[o,n,t,e]);return[m,f]}var $f=[];function tc({title:t,settings:e,styles:r}){return t===(0,rn.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function zo(t=[]){let{variationsFromTheme:e}=(0,xi.useSelect)(o=>({variationsFromTheme:o(Ci.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||$f}),[]),{user:r}=(0,Ae.useContext)(Kt);return(0,Ae.useMemo)(()=>{let o=structuredClone(r),s=en(o,t);s.title=(0,rn.__)("Default");let a=e.filter(l=>fo(l,t)).map(l=>pr(s,l)),n=[s,...a];return n?.length?n.filter(tc):[]},[t,r,e])}var Fi=u(Ns(),1),{lock:y1,unlock:yt}=(0,Fi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var on=u(z(),1),{useHasDimensionsPanel:x1,useHasTypographyPanel:C1,useHasColorPanel:F1,useSettingsForBlockElement:k1,useHasBackgroundPanel:O1}=yt(ki.privateApis);var Ve=u(X(),1);function Vr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],m=(n??[]).concat(l??[]).concat(a??[]),f=m.filter(({color:g})=>g===t),c=m.filter(({color:g})=>g===s),d=f.concat(c).concat(m).filter(({color:g})=>g!==e).slice(0,2);return{paletteColors:m,highlightedColors:d}}var _i=u(vt(),1),Pi=u(X(),1),nn=u(it(),1);function oc(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function sc(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Oi(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function sn(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Dr(t){let e={fontFamily:Oi(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=sc(r),s=oc(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function Ti(t){return{fontFamily:Oi(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var co=u(z(),1);function Mo({fontSize:t,variation:e}){let{base:r}=(0,_i.useContext)(Kt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=Si(o),l=a?Dr(a):{},m=n?Dr(n):{};return s&&(l.color=s,m.color=s),t&&(l.fontSize=t,m.fontSize=t),(0,co.jsxs)(Pi.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,co.jsx)("span",{style:m,children:(0,nn._x)("A","Uppercase letter A")}),(0,co.jsx)("span",{style:l,children:(0,nn._x)("a","Lowercase letter A")})]})}var Ai=u(X(),1);var Ri=u(z(),1);function Ei({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Vr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Ri.jsx)(Ai.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Bi=u(X(),1),Nr=u(mr(),1),gr=u(vt(),1);var $e=u(z(),1),Ii=248,Li=152,nc={leading:!0,trailing:!0};function ac({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Nr.useReducedMotion)(),[l,m]=(0,gr.useState)(!1),[f,{width:c}]=(0,Nr.useResizeObserver)(),[d,g]=(0,gr.useState)(c),[h,v]=(0,gr.useState)(),_=(0,Nr.useThrottle)(g,250,nc);(0,gr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,gr.useLayoutEffect)(()=>{let b=d?d/Ii:1,T=b-(h||0);(Math.abs(T)>.1||!h)&&v(b)},[d,h]);let A=c?c/Ii:1,k=h||A;return(0,$e.jsxs)($e.Fragment,{children:[(0,$e.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,$e.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:Li*k},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),tabIndex:-1,children:(0,$e.jsx)(Bi.__unstableMotion.div,{style:{height:Li*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var zr=ac;var me=u(z(),1),ic={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},lc={hover:{opacity:1},start:{opacity:.5}},uc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function fc({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[m="black"]=kt("color.text"),[f=m]=kt("elements.h1.color.text"),{paletteColors:c}=Vr();return(0,me.jsxs)(zr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:g})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:ic,style:{height:"100%",overflow:"hidden"},children:(0,me.jsxs)(Ve.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,me.jsx)(Mo,{fontSize:65*d,variation:o}),(0,me.jsx)(Ve.__experimentalVStack,{spacing:4*d,children:(0,me.jsx)(Ei,{normalizedColorSwatchSize:32,ratio:d})})]})},g),({key:d})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:r?lc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,me.jsx)(Ve.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:g},h)=>(0,me.jsx)("div",{style:{height:"100%",background:g,flexGrow:1}},h))})},d),({ratio:d,key:g})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:uc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,me.jsx)(Ve.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,me.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},g)]})}var an=fc;var Di=u(z(),1);var un=u(Ir(),1),Mr=u(it(),1),vr=u(X(),1),fn=u(de(),1),tr=u(vt(),1),Go=u(ae(),1),Ui=u(mr(),1);import{speak as gc}from"@wordpress/a11y";var Ni=u(Ir(),1),zi=u(de(),1),mc=u(X(),1);var pc=u(z(),1);function hc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function ln(t){let e=(0,zi.useSelect)(s=>{let{getBlockStyles:a}=s(Ni.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return hc(e,o)}var yr=u(X(),1),Mi=u(it(),1);var Gi=u(ae(),1);var ji=u(z(),1),{StateControl:r0}=yt(Gi.privateApis);var De=u(z(),1),{useHasDimensionsPanel:yc,useHasTypographyPanel:vc,useHasBorderPanel:bc,useSettingsForBlockElement:wc,useHasColorPanel:Sc}=yt(Go.privateApis);function xc(){let t=(0,fn.useSelect)(s=>s(un.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function Cc(t){let[e]=_t("",t),r=wc(e,t),o=vc(r),s=Sc(r),a=bc(r),n=yc(r),l=a||n,m=!!ln(t)?.length;return o||s||l||m}function Fc({block:t}){return Cc(t.name)?(0,De.jsx)(Be,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,De.jsxs)(vr.__experimentalHStack,{justify:"flex-start",children:[(0,De.jsx)(Go.BlockIcon,{icon:t.icon}),(0,De.jsx)(vr.FlexItem,{children:t.title})]})}):null}function kc({filterValue:t}){let e=xc(),r=(0,Ui.useDebounce)(gc,500),{isMatchingSearchTerm:o}=(0,fn.useSelect)(un.store),s=t?e.filter(n=>o(n,t)):e,a=(0,tr.useRef)(null);return(0,tr.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Mr.sprintf)((0,Mr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,De.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,De.jsx)(vr.__experimentalText,{align:"center",as:"p",children:(0,Mr.__)("No blocks found.")}):s.map(n=>(0,De.jsx)(Fc,{block:n},"menu-itemblock-"+n.name))})}var f0=(0,tr.memo)(kc);var Ac=u(Ir(),1),qi=u(ae(),1),cn=u(vt(),1),Rc=u(de(),1),Ec=u(we(),1),dn=u(X(),1),Zi=u(it(),1);var Oc=u(ae(),1),Hi=u(Ir(),1),Tc=u(X(),1),_c=u(vt(),1);var Pc=u(z(),1);var Wi=u(X(),1),Yi=u(z(),1);function xe({children:t,level:e=2}){return(0,Yi.jsx)(Wi.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var mn=u(z(),1);var{useHasDimensionsPanel:T0,useHasTypographyPanel:_0,useHasBorderPanel:P0,useSettingsForBlockElement:A0,useHasColorPanel:R0,useHasFiltersPanel:E0,useHasImageSettingsPanel:I0,useHasBackgroundPanel:L0,BackgroundPanel:B0,BorderPanel:V0,ColorPanel:D0,TypographyPanel:N0,DimensionsPanel:z0,FiltersPanel:M0,ImageSettingsPanel:G0,AdvancedPanel:j0}=yt(qi.privateApis);var Wh=u(it(),1),Yh=u(X(),1),qh=u(vt(),1);var Ic=u(X(),1);var Lc=u(z(),1);var Bc=u(it(),1),jo=u(X(),1);var Xi=u(z(),1);var Wo=u(X(),1);var Ki=u(X(),1);var Uo=u(z(),1),Vc=({variation:t,isFocused:e,withHoverView:r})=>(0,Uo.jsx)(zr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,Uo.jsx)(Ki.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Uo.jsx)(Mo,{variation:t,fontSize:85*o})},s)}),Ji=Vc;var $i=u(X(),1),br=u(vt(),1),tl=u(pn(),1),Ho=u(it(),1);var mo=u(z(),1);function Gr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,br.useState)(!1),{base:l,user:m,onChange:f}=(0,br.useContext)(Kt),c=(0,br.useMemo)(()=>{let A=pr(l,t);return o&&(A=No(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),g=A=>{A.keyCode===tl.ENTER&&(A.preventDefault(),d())},h=(0,br.useMemo)(()=>ao(m,t),[m,t]),v=t?.title;t?.description&&(v=(0,Ho.sprintf)((0,Ho._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item",{"is-active":h}),role:"button",onClick:d,onKeyDown:g,tabIndex:0,"aria-label":v,"aria-current":h,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,mo.jsx)(Kt.Provider,{value:c,children:s?(0,mo.jsx)($i.Tooltip,{text:t?.title,children:_}):_})}var wr=u(z(),1),el=["typography"];function Yo({title:t,gap:e=2}){let r=zo(el);return r?.length<=1?null:(0,wr.jsxs)(Wo.__experimentalVStack,{spacing:3,children:[t&&(0,wr.jsx)(xe,{level:3,children:t}),(0,wr.jsx)(Wo.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,wr.jsx)(Gr,{variation:o,properties:el,showTooltip:!0,children:()=>(0,wr.jsx)(Ji,{variation:o})},s))})]})}var Uh=u(it(),1),wo=u(X(),1);var Hh=u(vt(),1);var We=u(vt(),1),sr=u(de(),1),or=u(we(),1),vn=u(it(),1);var hn=u(ol(),1),sl=u(we(),1),nl="/wp/v2/font-families";function al(t){let{receiveEntityRecords:e}=t.dispatch(sl.store);e("postType","wp_font_family",[],void 0,!0)}async function il(t,e){let o=await(0,hn.default)({path:nl,method:"POST",body:t});return al(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function ll(t,e,r){let o={path:`${nl}/${t}/font-faces`,method:"POST",body:e},s=await(0,hn.default)(o);return al(r),{id:s.id,...s.font_face_settings}}var cl=u(X(),1);var Oe=u(it(),1),gn=["otf","ttf","woff","woff2"],ul={100:(0,Oe._x)("Thin","font weight"),200:(0,Oe._x)("Extra-light","font weight"),300:(0,Oe._x)("Light","font weight"),400:(0,Oe._x)("Normal","font weight"),500:(0,Oe._x)("Medium","font weight"),600:(0,Oe._x)("Semi-bold","font weight"),700:(0,Oe._x)("Bold","font weight"),800:(0,Oe._x)("Extra-bold","font weight"),900:(0,Oe._x)("Black","font weight")},fl={normal:(0,Oe._x)("Normal","font style"),italic:(0,Oe._x)("Italic","font style")};var{File:dl}=window,{kebabCase:Dc}=yt(cl.privateApis);function er(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function Nc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function qo(t){let e=ul[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":fl[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function zc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function ml(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=zc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function rr(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof dl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(sn(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function po(t,e="all"){let r=o=>{o.forEach(s=>{s.family===sn(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function jr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return Nc(e)||(e=encodeURI(e)),e}function pl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Dc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function hl(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((m,f)=>{let c=`file-${o}-${f}`;a.append(c,m,m.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function gl(t,e,r){let o=[];for(let a of e)try{let n=await ll(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function yl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new dl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function yn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function vl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function Zo(t,e,r=[]){let o=m=>m.slug===t.slug,s=m=>m.find(o),a=m=>m?r.filter(f=>!o(f)):[...r,t],n=m=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!m)return[...r,{...t,fontFace:[e]}];let c=m.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var bl=u(z(),1),ie=(0,We.createContext)({});ie.displayName="FontLibraryContext";function Mc({children:t}){let e=(0,sr.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,sr.useDispatch)(or.store),{globalStylesId:s}=(0,sr.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:E}=S(or.store);return{globalStylesId:E()}},[]),a=(0,or.useEntityRecord)("root","globalStyles",s),[n,l]=(0,We.useState)(!1),{records:m=[],isResolving:f}=(0,or.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(m||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,g]=_t("typography.fontFamilies"),h=async S=>{if(!a.record)return;let E=a.record,et=vl(E??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[v,_]=(0,We.useState)(""),[A,k]=(0,We.useState)(void 0),x=d?.theme?d.theme.map(S=>er(S,{source:"theme"})).sort((S,E)=>S.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(S=>er(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[],T=c?c.map(S=>er(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[];(0,We.useEffect)(()=>{v||k(void 0)},[v]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,We.useState)(new Set),D=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>D(S==="theme"?x:b),$=(S,E,et,ct)=>!E&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((E??"")+(et??"")),bt=(S,E)=>H(E)[S]||[];async function W(S){l(!0);try{let E=[],et=[];for(let at of S){let Ct=!1,Yt=await(0,sr.resolveSelect)(or.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Yt&&Yt.length>0?Yt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await il(pl(at),e));let St=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&yn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!yn(zt,J.fontFace)));let At=[],Ce=[];if(at?.fontFace?.length??!1){let zt=await gl(J.id,hl(at),e);At=zt?.successes,Ce=zt?.errors}(At?.length>0||St?.length>0)&&(J.fontFace=[...At],E.push(J)),J&&!at?.fontFace?.length&&E.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(Ce)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(E.length>0){let at=lt(E);await h(at)}if(ct.length>0){let at=new Error((0,vn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function y(S){if(!S?.id)throw new Error((0,vn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let E=L(S);return await h(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return g(ct),S.fontFace&&S.fontFace.forEach(at=>{po(at,"all")}),ct},lt=S=>{let E=ot(S),et={...d,custom:ml(d?.custom,E)};return g(et),K(E),et},ot=S=>S.map(({id:E,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(E=>{E.fontFace&&E.fontFace.forEach(et=>{let ct=jr(et?.src??"");ct&&rr(et,ct,"all")})})},gt=(S,E)=>{let et=d?.[S.source??""]??[],ct=Zo(S,E,et);g({...d,[S.source??""]:ct});let at=$(S.slug,E?.fontStyle??"",E?.fontWeight??"",S.source??"custom");if(E&&at)po(E,"all");else{let Ct=jr(E?.src??"");E&&Ct&&rr(E,Ct,"all")}},R=async S=>{if(!S.src)return;let E=jr(S.src);!E||I.has(E)||(rr(S,E,"document"),I.add(E))};return(0,bl.jsx)(ie.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:R,installFonts:W,uninstallFontFamily:y,toggleActivateFont:gt,getAvailableFontsOutline:D,modalTabOpen:v,setModalTabOpen:_,saveFontFamilies:h,isResolvingLibrary:f,isInstalling:n},children:t})}var Xo=Mc;var fs=u(it(),1),Cn=u(X(),1),eu=u(we(),1),Gh=u(de(),1);var ht=u(X(),1),go=u(we(),1),bn=u(de(),1),xr=u(vt(),1),Et=u(it(),1);var Hr=u(it(),1),Te=u(X(),1);var wl=u(X(),1),Ne=u(vt(),1);var Ko=u(z(),1);function Gc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function jc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function Uc({font:t,text:e}){let r=(0,Ne.useRef)(null),o=jc(t),s=Dr(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,Ne.useState)(!1),[m,f]=(0,Ne.useState)(!1),{loadFontFaceAsset:c}=(0,Ne.useContext)(ie),d=a??Gc(o),g=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),h=Ti(o),v={fontSize:"18px",lineHeight:1,opacity:m?"1":"0",...s,...h};return(0,Ne.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,Ne.useEffect)(()=>{(async()=>n&&(!g&&o.src&&await c(o),f(!0)))()},[o,n,c,g]),(0,Ko.jsx)("div",{ref:r,children:g?(0,Ko.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Ko.jsx)(wl.__experimentalText,{style:v,className:"font-library__font-variant_demo-text",children:e})})}var Ur=Uc;var ze=u(z(),1);function Hc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Te.useNavigator)();return(0,ze.jsx)(Te.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,ze.jsxs)(Te.Flex,{justify:"space-between",wrap:!1,children:[(0,ze.jsx)(Ur,{font:t}),(0,ze.jsxs)(Te.Flex,{justify:"flex-end",children:[(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(Te.__experimentalText,{className:"font-library__font-card__count",children:r||(0,Hr.sprintf)((0,Hr._n)("%d variant","%d variants",s),s)})}),(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(oo,{icon:(0,Hr.isRTL)()?cr:dr})})]})]})})}var ho=Hc;var Jo=u(vt(),1),Qo=u(X(),1);var Sr=u(z(),1);function Wc({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Jo.useContext)(ie),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+qo(t),l=(0,Jo.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(Qo.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(Qo.CheckboxControl,{checked:s,onChange:a,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Ur,{font:t,text:n,onClick:a})})]})})}var Sl=Wc;function xl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function $o(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?xl(e.fontWeight?.toString()??"normal")-xl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function Yc(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,xr.useContext)(ie),[m,f]=_t("typography.fontFamilies"),[c,d]=(0,xr.useState)(!1),[g,h]=(0,xr.useState)(null),[v]=_t("typography.fontFamilies",void 0,"base"),_=(0,bn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:S}=R(go.store);return S()},[]),k=!!(0,go.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=m?.theme?m.theme.map(R=>er(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name)):[],b=new Set(x.map(R=>R.slug)),T=v?.theme?x.concat(v.theme.filter(R=>!b.has(R.slug)).map(R=>er(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,bn.useSelect)(R=>{let{canUser:S}=R(go.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),D=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{h(null);try{await n(m),h({type:"success",message:(0,Et.__)("Font family updated successfully.")})}catch(R){h({type:"error",message:(0,Et.sprintf)((0,Et.__)("There was an error updating the font family. %s"),R.message)})}},bt=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:$o(R.fontFace):[],W=R=>{let S=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Et.sprintf)((0,Et.__)("%1$d/%2$d variants active"),E,S)};(0,xr.useEffect)(()=>{r(e)},[]);let y=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),lt=y>0&&y!==L,ot=y===L,K=()=>{if(!e||!e?.source)return;let R=m?.[e.source]?.filter(E=>E.slug!==e.slug)??[],S=ot?R:[...R,e];f({...m,[e.source]:S}),e.fontFace&&e.fontFace.forEach(E=>{if(ot)po(E,"all");else{let et=jr(E?.src??"");et&&rr(E,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[g&&(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Et.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(qc,{font:e,isOpen:c,setIsOpen:d,setNotice:h,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Et.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),h(null)},label:(0,Et.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),g&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Et.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ot,onChange:K,indeterminate:lt}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((R,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(Sl,{font:e,face:R},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),D&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Et.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Et.__)("Update")})]})]})]})}function qc({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Et.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Et.__)("There was an error uninstalling the font family.")+f.message})}},m=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Et.__)("Cancel"),confirmButtonText:(0,Et.__)("Delete"),onCancel:m,onConfirm:l,size:"medium",children:t&&(0,Et.sprintf)((0,Et.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var ts=Yc;var Xt=u(vt(),1),nt=u(X(),1),Al=u(mr(),1),Rt=u(it(),1);var Rl=u(we(),1);function Cl(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Fl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function kl(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var yo=u(it(),1),le=u(X(),1),_e=u(z(),1);function Zc(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,_e.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,_e.jsx)(le.Card,{children:(0,_e.jsxs)(le.CardBody,{children:[(0,_e.jsx)(le.__experimentalHeading,{level:2,children:(0,yo.__)("Connect to Google Fonts")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:3}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,yo.__)("Allow access to Google Fonts")})]})})})}var Ol=Zc;var Tl=u(vt(),1),es=u(X(),1);var Cr=u(z(),1);function Xc({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+qo(t),n=(0,Tl.useId)();return(0,Cr.jsx)("div",{className:"font-library__font-card",children:(0,Cr.jsxs)(es.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Cr.jsx)(es.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Cr.jsx)("label",{htmlFor:n,children:(0,Cr.jsx)(Ur,{font:t,text:a,onClick:s})})]})})}var _l=Xc;var tt=u(z(),1),Kc={slug:"all",name:(0,Rt._x)("All","font categories")},Pl="wp-font-library-google-fonts-permission",Jc=500;function Qc({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Pl)==="true",[o,s]=(0,Xt.useState)(null),[a,n]=(0,Xt.useState)(null),[l,m]=(0,Xt.useState)([]),[f,c]=(0,Xt.useState)(1),[d,g]=(0,Xt.useState)({}),[h,v]=(0,Xt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Xt.useContext)(ie),{record:k,isResolving:x}=(0,Rl.useEntityRecord)("root","fontCollection",t);(0,Xt.useEffect)(()=>{let J=()=>{v(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Pl,"false"),window.dispatchEvent(new Event("storage"))};(0,Xt.useEffect)(()=>{s(null)},[t]),(0,Xt.useEffect)(()=>{m([])},[o]);let T=(0,Xt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[Kc,...Y],D=(0,Xt.useMemo)(()=>Cl(T,d),[T,d]),H=Math.max(window.innerHeight,Jc),$=Math.floor((H-417)/61),bt=Math.ceil(D.length/$),W=(f-1)*$,y=f*$,L=D.slice(W,y),lt=J=>{g({...d,category:J}),c(1)},K=(0,Al.debounce)(J=>{g({...d,search:J}),c(1)},300),gt=(J,St)=>{let At=Zo(J,St,l);m(At)},R=Fl(l),S=()=>{m([])},E=l.length>0?l[0]?.fontFace?.length??0:0,et=E>0&&E!==o?.fontFace?.length,ct=E===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),m(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async St=>{St.src&&(St.file=await yl(St.src))}))}catch{n({type:"error",message:(0,Rt.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Rt.__)("Fonts were installed successfully.")})}catch(St){n({type:"error",message:St.message})}S()},Yt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:$o(J.fontFace):[];if(h)return(0,tt.jsx)(Ol,{});let Ot=()=>t!=="google-fonts"||h||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Bs,label:(0,Rt.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Rt.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Rt.__)("Font name\u2026"),label:(0,Rt.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Rt.__)("Category"),value:d.category,onChange:lt,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!D.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(ho,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Rt.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),n(null)},label:(0,Rt.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Yt(o).map((J,St)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(_l,{font:o,face:J,handleToggleVariant:gt,selected:kl(o.slug,o.fontFace?J:null,R)})},`face${St}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Rt.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Xt.createInterpolateElement)((0,Rt.sprintf)((0,Rt._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Rt.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,St)=>({label:(St+1).toString(),value:(St+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Rt.__)("Previous page"),icon:(0,Rt.isRTL)()?Io:Bo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Rt.__)("Next page"),icon:(0,Rt.isRTL)()?Bo:Io,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var rs=Qc;var Wr=u(it(),1),te=u(X(),1),bo=u(vt(),1);var os=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),El=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof os=="function"&&os;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof os=="function"&&os,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,m=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=m,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,g=this.input_.read(this.buf_,d,n);if(g<0)throw new Error("Unexpected end of input");if(g<n){this.eos_=1;for(var h=0;h<32;h++)this.buf_[d+g+h]=0}if(d===0){for(var h=0;h<32;h++)this.buf_[(n<<1)+h]=this.buf_[h];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=g<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&m]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var g=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,g},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,m=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,m=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,g=o("./context"),h=o("./prefix"),v=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,D=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,y=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),lt=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<<O)}return 0}function gt(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(N){var O=new gt,B,P,V;if(O.input_end=N.readBits(1),O.input_end&&N.readBits(1))return O;if(B=N.readBits(2)+4,B===7){if(O.is_metadata=!0,N.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=N.readBits(2),P===0)return O;for(V=0;V<P;V++){var dt=N.readBits(8);if(V+1===P&&P>1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<<V*8}}else for(V=0;V<B;++V){var rt=N.readBits(4);if(V+1===B&&B>4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<<V*4}return++O.meta_block_length,!O.input_end&&!O.is_metadata&&(O.is_uncompressed=N.readBits(1)),O}function S(N,O,B){var P=O,V;return B.fillBitWindow(),O+=B.val_>>>B.bit_pos_&D,V=N[O].bits-I,V>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=N[O].bits,N[O].value}function E(N,O,B,P){for(var V=0,dt=_,rt=0,st=0,wt=32768,ut=[],q=0;q<32;q++)ut.push(new c(0,0));for(d(ut,0,5,N,$);V<O&&wt>0;){var Ft=0,Jt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=ut[Ft].bits,Jt=ut[Ft].value&255,Jt<A)rt=0,B[V++]=Jt,Jt!==0&&(dt=Jt,wt-=32768>>Jt);else{var ge=Jt-14,ee,Qt,Vt=0;if(Jt===A&&(Vt=dt),st!==Vt&&(rt=0,st=Vt),ee=rt,rt>0&&(rt-=2,rt<<=ge),rt+=P.readBits(ge)+3,Qt=rt-ee,V+Qt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var $t=0;$t<Qt;$t++)B[V+$t]=st;V+=Qt,st!==0&&(wt-=Qt<<15-st)}}if(wt!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+wt);for(;V<O;V++)B[V]=0}function et(N,O,B,P){var V=0,dt,rt=new Uint8Array(N);if(P.readMoreInput(),dt=P.readBits(2),dt===1){for(var st,wt=N-1,ut=0,q=new Int32Array(4),Ft=P.readBits(2)+1;wt;)wt>>=1,++ut;for(st=0;st<Ft;++st)q[st]=P.readBits(ut)%N,rt[q[st]]=2;switch(rt[q[0]]=1,Ft){case 1:break;case 3:if(q[0]===q[1]||q[0]===q[2]||q[1]===q[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(q[0]===q[1])throw new Error("[ReadHuffmanCode] invalid symbols");rt[q[1]]=1;break;case 4:if(q[0]===q[1]||q[0]===q[2]||q[0]===q[3]||q[1]===q[2]||q[1]===q[3]||q[2]===q[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(rt[q[2]]=3,rt[q[3]]=3):rt[q[0]]=2;break}}else{var st,Jt=new Uint8Array($),ge=32,ee=0,Qt=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(st=dt;st<$&&ge>0;++st){var Vt=bt[st],$t=0,re;P.fillBitWindow(),$t+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Qt[$t].bits,re=Qt[$t].value,Jt[Vt]=re,re!==0&&(ge-=32>>re,++ee)}if(!(ee===1||ge===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Jt,N,rt,P)}if(V=d(O,B,I,rt,N),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ct(N,O,B){var P,V;return P=S(N,O,B),V=h.kBlockLengthPrefixCode[P].nbits,h.kBlockLengthPrefixCode[P].offset+B.readBits(V)}function at(N,O,B){var P;return N<W?(B+=y[N],B&=3,P=O[B]+L[N]):P=N-W+1,P}function Ct(N,O){for(var B=N[O],P=O;P;--P)N[P]=N[P-1];N[0]=B}function Yt(N,O){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<O;++P){var V=N[P];N[P]=B[V],V&&Ct(B,V)}}function Ot(N,O){this.alphabet_size=N,this.num_htrees=O,this.codes=new Array(O+O*lt[N+31>>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O<this.num_htrees;++O)this.htrees[O]=P,B=et(this.alphabet_size,this.codes,P,N),P+=B};function J(N,O){var B={num_htrees:null,context_map:null},P,V=0,dt,rt;O.readMoreInput();var st=B.num_htrees=K(O)+1,wt=B.context_map=new Uint8Array(N);if(st<=1)return B;for(P=O.readBits(1),P&&(V=O.readBits(4)+1),dt=[],rt=0;rt<H;rt++)dt[rt]=new c(0,0);for(et(st+V,dt,0,O),rt=0;rt<N;){var ut;if(O.readMoreInput(),ut=S(dt,0,O),ut===0)wt[rt]=0,++rt;else if(ut<=V)for(var q=1+(1<<ut)+O.readBits(ut);--q;){if(rt>=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=ut-V,++rt}return O.readBits(1)&&Yt(wt,N),B}function St(N,O,B,P,V,dt,rt){var st=B*2,wt=B,ut=S(O,B*H,rt),q;ut===0?q=V[st+(dt[wt]&1)]:ut===1?q=V[st+(dt[wt]-1&1)]+1:q=ut-2,q>=N&&(q-=N),P[B]=q,V[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,V,dt){var rt=V+1,st=B&V,wt=dt.pos_&m.IBUF_MASK,ut;if(O<8||dt.bit_pos_+(O<<3)<dt.bit_end_pos_){for(;O-- >0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(ut=dt.bit_end_pos_-dt.bit_pos_>>3,wt+ut>m.IBUF_MASK){for(var q=m.IBUF_MASK+1-wt,Ft=0;Ft<q;Ft++)P[st+Ft]=dt.buf_[wt+Ft];ut-=q,st+=q,O-=q,wt=0}for(var Ft=0;Ft<ut;Ft++)P[st+Ft]=dt.buf_[wt+Ft];if(st+=ut,O-=ut,st>=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft<st;Ft++)P[Ft]=P[rt+Ft]}for(;st+O>=rt;){if(ut=rt-st,dt.input_.read(P,st,ut)<ut)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");N.write(P,rt),O-=ut,st=0}if(dt.input_.read(P,st,O)<O)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");dt.reset()}function Ce(N){var O=N.bit_pos_+7&-8,B=N.readBits(O-N.bit_pos_);return B==0}function zt(N){var O=new n(N),B=new m(O);ot(B);var P=R(B);return P.meta_block_length}a.BrotliDecompressedSize=zt;function nr(N,O){var B=new n(N);O==null&&(O=zt(N));var P=new Uint8Array(O),V=new l(P);return Ke(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}a.BrotliDecompressBuffer=nr;function Ke(N,O){var B,P=0,V=0,dt=0,rt,st=0,wt,ut,q,Ft,Jt=[16,15,11,4],ge=0,ee=0,Qt=0,Vt=[new Ot(0,0),new Ot(0,0),new Ot(0,0)],$t,re,pt,Kr=128+m.READ_SIZE;pt=new m(N),dt=ot(pt),rt=(1<<dt)-16,wt=1<<dt,ut=wt-1,q=new Uint8Array(wt+Kr+f.maxDictionaryWordLength),Ft=wt,$t=[],re=[];for(var Tr=0;Tr<3*H;Tr++)$t[Tr]=new c(0,0),re[Tr]=new c(0,0);for(;!V;){var Mt=0,ko,Fe=[1<<28,1<<28,1<<28],Re=[0],ye=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pt,G,oe=null,j=null,Dt,F=null,C,ar=0,Tt=null,Q=0,ir=0,lr=null,It=0,xt=0,Gt=0,jt,qt;for(B=0;B<3;++B)Vt[B].codes=null,Vt[B].htrees=null;pt.readMoreInput();var Ge=R(pt);if(Mt=Ge.meta_block_length,P+Mt>O.buffer.length){var ur=new Uint8Array(P+Mt);ur.set(O.buffer),O.buffer=ur}if(V=Ge.input_end,ko=Ge.is_uncompressed,Ge.is_metadata){for(Ce(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(ko){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,ut,pt),P+=Mt;continue}for(B=0;B<3;++B)ye[B]=K(pt)+1,ye[B]>=2&&(et(ye[B]+2,$t,B*H,pt),et(b,re,B*H,pt),Fe[B]=ct(re,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<<i),Pt=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(ye[0]),B=0;B<ye[0];++B)pt.readMoreInput(),j[B]=pt.readBits(2)<<1;var Lt=J(ye[0]<<T,pt);Dt=Lt.num_htrees,oe=Lt.context_map;var se=J(ye[2]<<Y,pt);for(C=se.num_htrees,F=se.context_map,Vt[0]=new Ot(k,Dt),Vt[1]=new Ot(x,ye[1]),Vt[2]=new Ot(G,C),B=0;B<3;++B)Vt[B].decode(pt);for(Tt=0,lr=0,jt=j[Re[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1],qt=Vt[1].htrees[0];Mt>0;){var Nt,ne,ue,_r,xs,fe,ve,je,Jr,Pr,Qr;for(pt.readMoreInput(),Fe[1]===0&&(St(ye[1],$t,1,Re,w,M,pt),Fe[1]=ct(re,H,pt),qt=Vt[1].htrees[Re[1]]),--Fe[1],Nt=S(Vt[1].codes,qt,pt),ne=Nt>>6,ne>=2?(ne-=2,ve=-1):ve=0,ue=h.kInsertRangeLut[ne]+(Nt>>3&7),_r=h.kCopyRangeLut[ne]+(Nt&7),xs=h.kInsertLengthPrefixCode[ue].offset+pt.readBits(h.kInsertLengthPrefixCode[ue].nbits),fe=h.kCopyLengthPrefixCode[_r].offset+pt.readBits(h.kCopyLengthPrefixCode[_r].nbits),ee=q[P-1&ut],Qt=q[P-2&ut],Pr=0;Pr<xs;++Pr)pt.readMoreInput(),Fe[0]===0&&(St(ye[0],$t,0,Re,w,M,pt),Fe[0]=ct(re,0,pt),ar=Re[0]<<T,Tt=ar,jt=j[Re[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1]),Jr=g.lookup[xt+ee]|g.lookup[Gt+Qt],Q=oe[Tt+Jr],--Fe[0],Qt=ee,ee=S(Vt[0].codes,Vt[0].htrees[Q],pt),q[P&ut]=ee,(P&ut)===ut&&O.write(q,wt),++P;if(Mt-=xs,Mt<=0)break;if(ve<0){var Jr;if(pt.readMoreInput(),Fe[2]===0&&(St(ye[2],$t,2,Re,w,M,pt),Fe[2]=ct(re,2*H,pt),ir=Re[2]<<Y,lr=ir),--Fe[2],Jr=(fe>4?3:fe-2)&255,It=F[lr+Jr],ve=S(Vt[2].codes,Vt[2].htrees[It],pt),ve>=U){var Cs,ta,$r;ve-=U,ta=ve&Pt,ve>>=i,Cs=(ve>>1)+1,$r=(2+(ve&1)<<Cs)-4,ve=U+($r+pt.readBits(Cs)<<i)+ta}}if(je=at(ve,Jt,ge),je<0)throw new Error("[BrotliDecompress] invalid distance");if(P<rt&&st!==rt?st=P:st=rt,Qr=P&ut,je>st)if(fe>=f.minDictionaryWordLength&&fe<=f.maxDictionaryWordLength){var $r=f.offsetsByLength[fe],ea=je-st-1,ra=f.sizeBitsByLength[fe],Xu=(1<<ra)-1,Ku=ea&Xu,oa=ea>>ra;if($r+=Ku*fe,oa<v.kNumTransforms){var Fs=v.transformDictionaryWord(q,Qr,$r,fe,oa);if(Qr+=Fs,P+=Fs,Mt-=Fs,Qr>=Ft){O.write(q,wt);for(var Oo=0;Oo<Qr-Ft;Oo++)q[Oo]=q[Ft+Oo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);else{if(ve>0&&(Jt[ge&3]=je,++ge),fe>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);for(Pr=0;Pr<fe;++Pr)q[P&ut]=q[P-je&ut],(P&ut)===ut&&O.write(q,wt),++P,--Mt}ee=q[P-1&ut],Qt=q[P-2&ut]}P&=1073741823}}O.write(q,P&ut)}a.BrotliDecompress=Ke,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,m=n.toByteArray(o("./dictionary.bin.js"));return l(m)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="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"},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,g){this.bits=d,this.value=g}a.HuffmanCode=n;var l=15;function m(d,g){for(var h=1<<g-1;d&h;)h>>=1;return(d&h-1)+h}function f(d,g,h,v,_){do v-=h,d[g+v]=new n(_.bits,_.value);while(v>0)}function c(d,g,h){for(var v=1<<g-h;g<l&&(v-=d[g],!(v<=0));)++g,v<<=1;return g-h}a.BrotliBuildHuffmanTable=function(d,g,h,v,_){var A=g,k,x,b,T,Y,I,D,H,$,bt,W,y=new Int32Array(l+1),L=new Int32Array(l+1);for(W=new Int32Array(_),b=0;b<_;b++)y[v[b]]++;for(L[1]=0,x=1;x<l;x++)L[x+1]=L[x]+y[x];for(b=0;b<_;b++)v[b]!==0&&(W[L[v[b]]++]=b);if(H=h,$=1<<H,bt=$,L[l]===1){for(T=0;T<bt;++T)d[g+T]=new n(0,W[0]&65535);return bt}for(T=0,b=0,x=1,Y=2;x<=h;++x,Y<<=1)for(;y[x]>0;--y[x])k=new n(x&255,W[b++]&65535),f(d,g+T,Y,$,k),T=m(T,x);for(D=bt-1,I=-1,x=h+1,Y=2;x<=l;++x,Y<<=1)for(;y[x]>0;--y[x])(T&D)!==I&&(g+=$,H=c(y,x,h),$=1<<H,bt+=$,I=T&D,d[A+I]=new n(H+h&255,g-A-I&65535)),k=new n(x-h&255,W[b++]&65535),f(d,g+(T>>h),Y,$,k),T=m(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=h,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],m=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function g(b){var T=b.length;if(T%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function h(b){var T=g(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function v(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=g(b),I=Y[0],D=Y[1],H=new m(v(b,I,D)),$=0,bt=D>0?I-4:I,W=0;W<bt;W+=4)T=l[b.charCodeAt(W)]<<18|l[b.charCodeAt(W+1)]<<12|l[b.charCodeAt(W+2)]<<6|l[b.charCodeAt(W+3)],H[$++]=T>>16&255,H[$++]=T>>8&255,H[$++]=T&255;return D===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),D===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,D=[],H=T;H<Y;H+=3)I=(b[H]<<16&16711680)+(b[H+1]<<8&65280)+(b[H+2]&255),D.push(A(I));return D.join("")}function x(b){for(var T,Y=b.length,I=Y%3,D=[],H=16383,$=0,bt=Y-I;$<bt;$+=H)D.push(k(b,$,$+H>bt?bt:$+H));return I===1?(T=b[Y-1],D.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],D.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),D.join("")}},{}],9:[function(o,s,a){function n(l,m){this.offset=l,this.nbits=m}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(m){this.buffer=m,this.pos=0}n.prototype.read=function(m,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)m[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(m){this.buffer=m,this.pos=0}l.prototype.write=function(m,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(m.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,m=1,f=2,c=3,d=4,g=5,h=6,v=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,D=16,H=17,$=18,bt=19,W=20;function y(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var R=0;R<ot.length;R++)this.prefix[R]=ot.charCodeAt(R);for(var R=0;R<gt.length;R++)this.suffix[R]=gt.charCodeAt(R)}var L=[new y("",l,""),new y("",l," "),new y(" ",l," "),new y("",b,""),new y("",k," "),new y("",l," the "),new y(" ",l,""),new y("s ",l," "),new y("",l," of "),new y("",k,""),new y("",l," and "),new y("",T,""),new y("",m,""),new y(", ",l," "),new y("",l,", "),new y(" ",k," "),new y("",l," in "),new y("",l," to "),new y("e ",l," "),new y("",l,'"'),new y("",l,"."),new y("",l,'">'),new y("",l,` +`),new y("",c,""),new y("",l,"]"),new y("",l," for "),new y("",Y,""),new y("",f,""),new y("",l," a "),new y("",l," that "),new y(" ",k,""),new y("",l,". "),new y(".",l,""),new y(" ",l,", "),new y("",I,""),new y("",l," with "),new y("",l,"'"),new y("",l," from "),new y("",l," by "),new y("",D,""),new y("",H,""),new y(" the ",l,""),new y("",d,""),new y("",l,". The "),new y("",x,""),new y("",l," on "),new y("",l," as "),new y("",l," is "),new y("",v,""),new y("",m,"ing "),new y("",l,` + `),new y("",l,":"),new y(" ",l,". "),new y("",l,"ed "),new y("",W,""),new y("",$,""),new y("",h,""),new y("",l,"("),new y("",k,", "),new y("",_,""),new y("",l," at "),new y("",l,"ly "),new y(" the ",l," of "),new y("",g,""),new y("",A,""),new y(" ",k,", "),new y("",k,'"'),new y(".",l,"("),new y("",x," "),new y("",k,'">'),new y("",l,'="'),new y(" ",l,"."),new y(".com/",l,""),new y(" the ",l," of the "),new y("",k,"'"),new y("",l,". This "),new y("",l,","),new y(".",l," "),new y("",k,"("),new y("",k,"."),new y("",l," not "),new y(" ",l,'="'),new y("",l,"er "),new y(" ",x," "),new y("",l,"al "),new y(" ",x,""),new y("",l,"='"),new y("",x,'"'),new y("",k,". "),new y(" ",l,"("),new y("",l,"ful "),new y(" ",k,". "),new y("",l,"ive "),new y("",l,"less "),new y("",x,"'"),new y("",l,"est "),new y(" ",k,"."),new y("",x,'">'),new y(" ",l,"='"),new y("",k,","),new y("",l,"ize "),new y("",x,"."),new y("\xC2\xA0",l,""),new y(" ",l,","),new y("",k,'="'),new y("",x,'="'),new y("",l,"ous "),new y("",x,", "),new y("",k,"='"),new y(" ",k,","),new y(" ",x,'="'),new y(" ",x,", "),new y("",x,","),new y("",x,"("),new y("",x,". "),new y(" ",x,"."),new y("",x,"='"),new y(" ",x,". "),new y(" ",k,'="'),new y(" ",x,"='"),new y(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function lt(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,R,S){var E=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ct<b?0:ct-(b-1),Ct=0,Yt=K,Ot;at>R&&(at=R);for(var J=0;J<E.length;)ot[K++]=E[J++];for(gt+=at,R-=at,ct<=A&&(R-=ct),Ct=0;Ct<R;Ct++)ot[K++]=n.dictionary[gt+Ct];if(Ot=K-R,ct===k)lt(ot,Ot);else if(ct===x)for(;R>0;){var St=lt(ot,Ot);Ot+=St,R-=St}for(var At=0;At<et.length;)ot[K++]=et[At++];return K-Yt}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ss=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Il=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof ss=="function"&&ss;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof ss=="function"&&ss,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var g=d.shift();if(g){if(typeof g!="object")throw new TypeError(g+"must be non-object");for(var h in g)l(g,h)&&(c[h]=g[h])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var m={arraySet:function(c,d,g,h,v){if(d.subarray&&c.subarray){c.set(d.subarray(g,g+h),v);return}for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){var d,g,h,v,_,A;for(h=0,d=0,g=c.length;d<g;d++)h+=c[d].length;for(A=new Uint8Array(h),v=0,d=0,g=c.length;d<g;d++)_=c[d],A.set(_,v),v+=_.length;return A}},f={arraySet:function(c,d,g,h,v){for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,m)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,m=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{m=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(g){var h,v,_,A,k,x=g.length,b=0;for(A=0;A<x;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),b+=v<128?1:v<2048?2:v<65536?3:4;for(h=new n.Buf8(b),k=0,A=0;k<b;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),v<128?h[k++]=v:v<2048?(h[k++]=192|v>>>6,h[k++]=128|v&63):v<65536?(h[k++]=224|v>>>12,h[k++]=128|v>>>6&63,h[k++]=128|v&63):(h[k++]=240|v>>>18,h[k++]=128|v>>>12&63,h[k++]=128|v>>>6&63,h[k++]=128|v&63);return h};function d(g,h){if(h<65534&&(g.subarray&&m||!g.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(g,h));for(var v="",_=0;_<h;_++)v+=String.fromCharCode(g[_]);return v}a.buf2binstring=function(g){return d(g,g.length)},a.binstring2buf=function(g){for(var h=new n.Buf8(g.length),v=0,_=h.length;v<_;v++)h[v]=g.charCodeAt(v);return h},a.buf2string=function(g,h){var v,_,A,k,x=h||g.length,b=new Array(x*2);for(_=0,v=0;v<x;){if(A=g[v++],A<128){b[_++]=A;continue}if(k=f[A],k>4){b[_++]=65533,v+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&v<x;)A=A<<6|g[v++]&63,k--;if(k>1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(g,h){var v;for(h=h||g.length,h>g.length&&(h=g.length),v=h-1;v>=0&&(g[v]&192)===128;)v--;return v<0||v===0?h:v+f[g[v]]>h?v:h}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,m,f,c){for(var d=l&65535|0,g=l>>>16&65535|0,h=0;f!==0;){h=f>2e3?2e3:f,f-=h;do d=d+m[c++]|0,g=g+d|0;while(--h);d%=65521,g%=65521}return d|g<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var g=0;g<8;g++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function m(f,c,d,g){var h=l,v=g+d;f^=-1;for(var _=g;_<v;_++)f=f>>>8^h[(f^c[_])&255];return f^-1}s.exports=m},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,g,h,v,_,A,k,x,b,T,Y,I,D,H,$,bt,W,y,L,lt,ot,K,gt,R,S;d=f.state,g=f.next_in,R=f.input,h=g+(f.avail_in-5),v=f.next_out,S=f.output,_=v-(c-f.avail_out),A=v+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,D=d.bits,H=d.lencode,$=d.distcode,bt=(1<<d.lenbits)-1,W=(1<<d.distbits)-1;t:do{D<15&&(I+=R[g++]<<D,D+=8,I+=R[g++]<<D,D+=8),y=H[I&bt];e:for(;;){if(L=y>>>24,I>>>=L,D-=L,L=y>>>16&255,L===0)S[v++]=y&65535;else if(L&16){lt=y&65535,L&=15,L&&(D<L&&(I+=R[g++]<<D,D+=8),lt+=I&(1<<L)-1,I>>>=L,D-=L),D<15&&(I+=R[g++]<<D,D+=8,I+=R[g++]<<D,D+=8),y=$[I&W];r:for(;;){if(L=y>>>24,I>>>=L,D-=L,L=y>>>16&255,L&16){if(ot=y&65535,L&=15,D<L&&(I+=R[g++]<<D,D+=8,D<L&&(I+=R[g++]<<D,D+=8)),ot+=I&(1<<L)-1,ot>k){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,D-=L,L=v-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}else if(T<L){if(K+=x+T-L,L-=T,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);if(K=0,T<lt){L=T,lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}}else if(K+=T-L,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}for(;lt>2;)S[v++]=gt[K++],S[v++]=gt[K++],S[v++]=gt[K++],lt-=3;lt&&(S[v++]=gt[K++],lt>1&&(S[v++]=gt[K++]))}else{K=v-ot;do S[v++]=S[K++],S[v++]=S[K++],S[v++]=S[K++],lt-=3;while(lt>2);lt&&(S[v++]=S[K++],lt>1&&(S[v++]=S[K++]))}}else if((L&64)===0){y=$[(y&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break t}break}}else if((L&64)===0){y=H[(y&65535)+(I&(1<<L)-1)];continue e}else if(L&32){d.mode=l;break t}else{f.msg="invalid literal/length code",d.mode=n;break t}break}}while(g<h&&v<A);lt=D>>3,g-=lt,D-=lt<<3,I&=(1<<D)-1,f.next_in=g,f.next_out=v,f.avail_in=g<h?5+(h-g):5-(g-h),f.avail_out=v<A?257+(A-v):257-(v-A),d.hold=I,d.bits=D}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),m=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,g=1,h=2,v=4,_=5,A=6,k=0,x=1,b=2,T=-2,Y=-3,I=-4,D=-5,H=8,$=1,bt=2,W=3,y=4,L=5,lt=6,ot=7,K=8,gt=9,R=10,S=11,E=12,et=13,ct=14,at=15,Ct=16,Yt=17,Ot=18,J=19,St=20,At=21,Ce=22,zt=23,nr=24,Ke=25,N=26,O=27,B=28,P=29,V=30,dt=31,rt=32,st=852,wt=592,ut=15,q=ut;function Ft(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Jt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ge(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function ee(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,ge(w))}function Qt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,ee(w))}function Vt(w,M){var i,U;return w?(U=new Jt,w.state=U,U.window=null,i=Qt(w,M),i!==k&&(w.state=null),i):T}function $t(w){return Vt(w,q)}var re=!0,pt,Kr;function Tr(w){if(re){var M;for(pt=new n.Buf32(512),Kr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(g,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(h,w.lens,0,32,Kr,0,w.work,{bits:5}),re=!1}w.lencode=pt,w.lenbits=9,w.distcode=Kr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pt))),0}function ko(w,M){var i,U,Pt,G,oe,j,Dt,F,C,ar,Tt,Q,ir,lr,It=0,xt,Gt,jt,qt,Ge,ur,Lt,se,Nt=new n.Buf8(4),ne,ue,_r=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return T;i=w.state,i.mode===E&&(i.mode=et),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,ar=j,Tt=Dt,se=k;t:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=et;break}for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Lt,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case bt:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==H){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=m(i.check,Nt,4,0)),F=0,C=0,i.mode=y;case y:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=lt;case lt:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.comment+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.comment=null);i.mode=gt;case gt:if(i.flags&512){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Ft(F),F=0,C=0,i.mode=S;case S:if(i.havedict===0)return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===_||M===A)break t;case et:if(i.last){F>>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(Tr(i),i.mode=St,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Yt;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Dt&&(Q=Dt),Q===0)break t;n.arraySet(Pt,U,G,Q,oe),j-=Q,G+=Q,Dt-=Q,oe+=Q,i.length-=Q;break}i.mode=E;break;case Yt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=Ot;case Ot:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.lens[_r[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[_r[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,ne={bits:i.lenbits},se=c(d,i.lens,0,19,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(jt<16)F>>>=xt,C-=xt,i.lens[i.have++]=jt;else{if(jt===16){for(ue=xt+2;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F>>>=xt,C-=xt,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ue=xt+3;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ue=xt+7;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,ne={bits:i.lenbits},se=c(g,i.lens,0,i.nlen,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,ne={bits:i.distbits},se=c(h,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,ne),i.distbits=ne.bits,se){w.msg="invalid distances set",i.mode=V;break}if(i.mode=St,M===A)break t;case St:i.mode=At;case At:if(j>=6&&Dt>=258){w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(Gt&&(Gt&240)===0){for(qt=xt,Ge=Gt,ur=jt;It=i.lencode[ur+((F&(1<<qt+Ge)-1)>>qt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=xt,C-=xt,i.back+=xt,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=E;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Gt&15,i.mode=Ce;case Ce:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<<i.distbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((Gt&240)===0){for(qt=xt,Ge=Gt,ur=jt;It=i.distcode[ur+((F&(1<<qt+Ge)-1)>>qt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=xt,C-=xt,i.back+=xt,Gt&64){w.msg="invalid distance code",i.mode=V;break}i.offset=jt,i.extra=Gt&15,i.mode=nr;case nr:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Ke;case Ke:if(Dt===0)break t;if(Q=Tt-Dt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ir=i.wsize-Q):ir=i.wnext-Q,Q>i.length&&(Q=i.length),lr=i.window}else lr=Pt,ir=oe-i.offset,Q=i.length;Q>Dt&&(Q=Dt),Dt-=Q,i.length-=Q;do Pt[oe++]=lr[ir++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Dt===0)break t;Pt[oe++]=i.length,Dt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<<C,C+=8}if(Tt-=Dt,w.total_out+=Tt,i.total+=Tt,Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,oe-Tt):l(i.check,Pt,Tt,oe-Tt)),Tt=Dt,(i.flags?F:Ft(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=P;case P:se=x;break t;case V:se=Y;break t;case dt:return I;case rt:default:return T}return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Tt!==w.avail_out&&i.mode<V&&(i.mode<O||M!==v))&&Mt(w,w.output,w.next_out,Tt-w.avail_out)?(i.mode=dt,I):(ar-=w.avail_in,Tt-=w.avail_out,w.total_in+=ar,w.total_out+=Tt,i.total+=Tt,i.wrap&&Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,w.next_out-Tt):l(i.check,Pt,Tt,w.next_out-Tt)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===St||i.mode===at?256:0),(ar===0&&Tt===0||M===v)&&se===k&&(se=D),se)}function Fe(w){if(!w||!w.state)return T;var M=w.state;return M.window&&(M.window=null),w.state=null,k}function Re(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?T:(i.head=M,M.done=!1,k)}function ye(w,M){var i=M.length,U,Pt,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==S)?T:U.mode===S&&(Pt=1,Pt=l(Pt,M,i,0),Pt!==U.check)?Y:(G=Mt(w,M,i,i),G?(U.mode=dt,I):(U.havedict=1,k))}a.inflateReset=ee,a.inflateReset2=Qt,a.inflateResetKeep=ge,a.inflateInit=$t,a.inflateInit2=Vt,a.inflate=ko,a.inflateEnd=Fe,a.inflateGetHeader=Re,a.inflateSetDictionary=ye,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,m=852,f=592,c=0,d=1,g=2,h=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],v=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(x,b,T,Y,I,D,H,$){var bt=$.bits,W=0,y=0,L=0,lt=0,ot=0,K=0,gt=0,R=0,S=0,E=0,et,ct,at,Ct,Yt,Ot=null,J=0,St,At=new n.Buf16(l+1),Ce=new n.Buf16(l+1),zt=null,nr=0,Ke,N,O;for(W=0;W<=l;W++)At[W]=0;for(y=0;y<Y;y++)At[b[T+y]]++;for(ot=bt,lt=l;lt>=1&&At[lt]===0;lt--);if(ot>lt&&(ot=lt),lt===0)return I[D++]=1<<24|64<<16|0,I[D++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<lt&&At[L]===0;L++);for(ot<L&&(ot=L),R=1,W=1;W<=l;W++)if(R<<=1,R-=At[W],R<0)return-1;if(R>0&&(x===c||lt!==1))return-1;for(Ce[1]=0,W=1;W<l;W++)Ce[W+1]=Ce[W]+At[W];for(y=0;y<Y;y++)b[T+y]!==0&&(H[Ce[b[T+y]]++]=y);if(x===c?(Ot=zt=H,St=19):x===d?(Ot=h,J-=257,zt=v,nr-=257,St=256):(Ot=_,zt=A,St=-1),E=0,y=0,W=L,Yt=D,K=ot,gt=0,at=-1,S=1<<ot,Ct=S-1,x===d&&S>m||x===g&&S>f)return 1;for(;;){Ke=W-gt,H[y]<St?(N=0,O=H[y]):H[y]>St?(N=zt[nr+H[y]],O=Ot[J+H[y]]):(N=96,O=0),et=1<<W-gt,ct=1<<K,L=ct;do ct-=et,I[Yt+(E>>gt)+ct]=Ke<<24|N<<16|O|0;while(ct!==0);for(et=1<<W-1;E&et;)et>>=1;if(et!==0?(E&=et-1,E+=et):E=0,y++,--At[W]===0){if(W===lt)break;W=b[T+H[y]]}if(W>ot&&(E&Ct)!==at){for(gt===0&&(gt=ot),Yt+=L,K=W-gt,R=1<<K;K+gt<lt&&(R-=At[K+gt],!(R<=0));)K++,R<<=1;if(S+=1<<K,x===d&&S>m||x===g&&S>f)return 1;at=E&Ct,I[at]=ot<<24|K<<16|Yt-D|0}}return E!==0&&(I[Yt+E]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),m=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),g=o("./zlib/gzheader"),h=Object.prototype.toString;function v(k){if(!(this instanceof v))return new v(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new g,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=m.string2buf(x.dictionary):h.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}v.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,D,H,$,bt,W=!1;if(this.ended)return!1;D=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=m.binstring2buf(k):h.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(D===f.Z_FINISH||D===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=m.utf8border(b.output,b.next_out),$=b.next_out-H,bt=m.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(D=f.Z_FINISH),D===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(D===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},v.prototype.onData=function(k){this.chunks.push(k)},v.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new v(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=v,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var pw=globalThis.fetch,ns=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},$c=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;r<o&&t.__mayPropagate;r++)e[r](t)}},td=new Date("1904-01-01T00:00:00+0000").getTime();function ed(t){return Array.from(t).map(e=>String.fromCharCode(e)).join("")}var rd=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return ed([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(td+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new rd(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var od=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new sd(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},sd=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},Ll=Il.inflate||void 0,Bl=void 0,nd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new ad(o)),id(this,e,r)}},ad=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function id(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(Ll)l=Ll(new Uint8Array(n));else if(Bl)l=Bl(new Uint8Array(n));else{let m="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(m),new Error(m)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Vl=El,Dl=void 0,ld=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new ud(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,m)=>{let f=this.directory[m+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Vl)a=Vl(new Uint8Array(n));else if(Dl)a=new Uint8Array(Dl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}fd(this,a,r)}},ud=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=cd(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function fd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function cd(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var Hl={},Wl=!1;Promise.all([Promise.resolve().then(function(){return zd}),Promise.resolve().then(function(){return Gd}),Promise.resolve().then(function(){return Ud}),Promise.resolve().then(function(){return Yd}),Promise.resolve().then(function(){return Zd}),Promise.resolve().then(function(){return $d}),Promise.resolve().then(function(){return em}),Promise.resolve().then(function(){return om}),Promise.resolve().then(function(){return mm}),Promise.resolve().then(function(){return Fm}),Promise.resolve().then(function(){return cp}),Promise.resolve().then(function(){return mp}),Promise.resolve().then(function(){return yp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return Cp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return _p}),Promise.resolve().then(function(){return Ap}),Promise.resolve().then(function(){return Ep}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Gp}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Wp}),Promise.resolve().then(function(){return qp}),Promise.resolve().then(function(){return Xp}),Promise.resolve().then(function(){return Jp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return rh}),Promise.resolve().then(function(){return lh}),Promise.resolve().then(function(){return dh}),Promise.resolve().then(function(){return hh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Sh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return Oh}),Promise.resolve().then(function(){return _h}),Promise.resolve().then(function(){return Ih}),Promise.resolve().then(function(){return Bh}),Promise.resolve().then(function(){return Nh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];Hl[r]=e[r]}),Wl=!0});function dd(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=Hl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function md(){let t=0;function e(r,o){if(!Wl)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(dd)}return new Promise((r,o)=>e(r))}function pd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function hd(t,e,r={}){if(!globalThis.document)return;let o=pd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` @font-face { font-family: "${t}"; ${a.join(` `)} src: url("${e}") format("${o}"); -}`,globalThis.document.head.appendChild(s),s}var md=[0,1,0,0],pd=[79,84,84,79],hd=[119,79,70,70],gd=[119,79,70,50];function ns(t,e){if(t.length===e.length){for(let r=0;r<t.length;r++)if(t[r]!==e[r])return;return!0}}function yd(t){let e=[t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3)];if(ns(e,md)||ns(e,pd))return"SFNT";if(ns(e,hd))return"WOFF";if(ns(e,gd))return"WOFF2"}function vd(t){if(!t.ok)throw new Error(`HTTP ${t.status} - ${t.statusText}`);return t}var is=class extends Kc{constructor(t,e={}){super(),this.name=t,this.options=e,this.metrics=!1}get src(){return this.__src}set src(t){this.__src=t,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await dd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>vd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new ss("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=yd(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new ss("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return fd().then(e=>(t==="SFNT"&&(this.opentype=new td(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new rd(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new nd(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new ss("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new ss("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=is;var We=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},bd=class extends We{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},wd=class extends We{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new Sd(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},Sd=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},xd=class extends We{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,m=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(m,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],m=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let g=n+m,h=l+m;g<=h;g++)d.push(g);else for(let g=0,h=l-n;g<=h;g++)r.currentPosition=c+f+g*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:m,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Cd=class extends We{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),t<this.firstCode)return{};if(t>this.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Fd=class extends We{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new kd(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},kd=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Od=class extends We{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),t<this.startCharCode||t>this.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Td=class extends We{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new _d(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)<t)continue;let s=e.startCharCode+(t-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},_d=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Pd=class extends We{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Ad(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Ad=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},Rd=class extends We{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new Ed(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},Ed=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Id(t,e,r){let o=t.uint16;return o===0?new bd(t,e,r):o===2?new wd(t,e,r):o===4?new xd(t,e,r):o===6?new Cd(t,e,r):o===8?new Fd(t,e,r):o===10?new Od(t,e,r):o===12?new Td(t,e,r):o===13?new Pd(t,e,r):o===14?new Rd(t,e,r):{}}var Ld=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Bd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e<this.numTables;e++){let r=this.getSubTable(e).reverse(t);if(r)return r}}getGlyphId(t){let e=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},Bd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Id(t,r,o)))}},Dd=Object.freeze({__proto__:null,cmap:Ld}),Vd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Nd=Object.freeze({__proto__:null,head:Vd}),zd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},Md=Object.freeze({__proto__:null,hhea:zd}),Gd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new jd(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(m=>o.int16)))}}},jd=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},Ud=Object.freeze({__proto__:null,hmtx:Gd}),Hd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Wd=Object.freeze({__proto__:null,maxp:Hd}),Yd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Zd(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new qd(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},qd=class{constructor(t,e){this.length=t,this.offset=e}},Zd=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,Xd(t,this)))}};function Xd(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,m=o/2;l<m;l++)n[l]=String.fromCharCode(t.uint16);return n.join("")}let s=t.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var Kd=Object.freeze({__proto__:null,name:Yd}),Jd=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},Qd=Object.freeze({__proto__:null,OS2:Jd}),$d=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Dl.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Dl[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Dl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],tm=Object.freeze({__proto__:null,post:$d}),em=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new vn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new vn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new vn({offset:t.offset+this.itemVarStoreOffset},e)))}},vn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new rm({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new om({offset:t.offset+this.baseScriptListOffset},e))}},rm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},om=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new sm(this.start,r))))}},sm=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new nm(e)))}},nm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new am(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new im(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Hl(t)))}},am=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Hl(e)))}},im=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new um(this.parser)}},Hl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new lm(t))))}},lm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},um=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},fm=Object.freeze({__proto__:null,BASE:em}),Vl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new cm(t)))}},cm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},ho=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new dm(t)))}},dm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},mm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},pm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new Vl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new hm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new ym(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new Vl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new wm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new mm(r)}))}},hm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new gm(this.parser)}},gm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},ym=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new ho(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new vm(this.parser)}},vm=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new bm(this.parser)}},bm=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},wm=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new ho(this.parser)}},Sm=Object.freeze({__proto__:null,GDEF:pm}),Nl=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new xm(t))}},xm=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Cm=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Fm(t))}},Fm=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},zl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},Ml=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new km(t))}},km=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Om=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new _m(t);if(e.startsWith("cc"))return new Tm(t);if(e.startsWith("ss"))return new Pm(t)}}},Tm=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},_m=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Pm=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function Wl(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var xr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new ho(t)}},wn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Am=class extends xr{constructor(t){super(t),this.deltaGlyphID=t.int16}},Rm=class extends xr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new Em(e)}},Em=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Im=class extends xr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Lm(e)}},Lm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Bm=class extends xr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new Dm(e)}},Dm=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Vm(e)}},Vm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Nm=class extends xr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Wl(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new wn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new zm(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new Mm(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new ho(e)}},zm=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new Yl(e)}},Yl=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new wn(t))}},Mm=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Gm(e)}},Gm=class extends Yl{constructor(t){super(t)}},jm=class extends xr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Wl(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new ql(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new Um(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new Wm(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new ho(e)}},Um=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Hm(e)}},Hm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new wn(t))}},Wm=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Ym(e)}},Ym=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new ql(t))}},ql=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},qm=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},Zm=class extends xr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Xm={buildSubtable:function(t,e){let r=new[void 0,Am,Rm,Im,Bm,Nm,jm,qm,Zm][t](e);return r.type=t,r}},Ye=class extends Bt{constructor(t){super(t)}},Km=class extends Ye{constructor(t){super(t),console.log("lookup type 1")}},Jm=class extends Ye{constructor(t){super(t),console.log("lookup type 2")}},Qm=class extends Ye{constructor(t){super(t),console.log("lookup type 3")}},$m=class extends Ye{constructor(t){super(t),console.log("lookup type 4")}},tp=class extends Ye{constructor(t){super(t),console.log("lookup type 5")}},ep=class extends Ye{constructor(t){super(t),console.log("lookup type 6")}},rp=class extends Ye{constructor(t){super(t),console.log("lookup type 7")}},op=class extends Ye{constructor(t){super(t),console.log("lookup type 8")}},sp=class extends Ye{constructor(t){super(t),console.log("lookup type 9")}},np={buildSubtable:function(t,e){let r=new[void 0,Km,Jm,Qm,$m,tp,ep,rp,op,sp][t](e);return r.type=t,r}},Gl=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},ap=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?Xm:np;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},Zl=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Nl.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Nl(o))),Z(this,"featureList",()=>a?Ml.EMPTY:(o.currentPosition=s+this.featureListOffset,new Ml(o))),Z(this,"lookupList",()=>a?Gl.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Gl(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Cm(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new zl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new zl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Om(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new ap(this.parser,e)}},ip=class extends Zl{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},lp=Object.freeze({__proto__:null,GSUB:ip}),up=class extends Zl{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},fp=Object.freeze({__proto__:null,GPOS:up}),cp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new dp(r)}},dp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new mp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},mp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},pp=Object.freeze({__proto__:null,SVG:cp}),hp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new gp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new yp(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(t=>t.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},gp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},yp=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o<r&&(this.postScriptNameID=t.uint16)}},vp=Object.freeze({__proto__:null,fvar:hp}),bp=class extends mt{constructor(t,e){let{p:r}=super(t,e),o=t.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},wp=Object.freeze({__proto__:null,cvt:bp}),Sp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},xp=Object.freeze({__proto__:null,fpgm:Sp}),Cp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Fp(r)))}},Fp=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},kp=Object.freeze({__proto__:null,gasp:Cp}),Op=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Tp=Object.freeze({__proto__:null,glyf:Op}),_p=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Pp=Object.freeze({__proto__:null,loca:_p}),Ap=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Rp=Object.freeze({__proto__:null,prep:Ap}),Ep=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Ip=Object.freeze({__proto__:null,CFF:Ep}),Lp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Bp=Object.freeze({__proto__:null,CFF2:Lp}),Dp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Vp(r)))}},Vp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Np=Object.freeze({__proto__:null,VORG:Dp}),zp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new as(t),this.vert=new as(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},Mp=class{constructor(t){this.hori=new as(t),this.vert=new as(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},as=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},Xl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new zp(o)))}},Gp=Object.freeze({__proto__:null,EBLC:Xl}),Kl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},jp=Object.freeze({__proto__:null,EBDT:Kl}),Up=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new Mp(r)))}},Hp=Object.freeze({__proto__:null,EBSC:Up}),Wp=class extends Xl{constructor(t,e){super(t,e,"CBLC")}},Yp=Object.freeze({__proto__:null,CBLC:Wp}),qp=class extends Kl{constructor(t,e){super(t,e,"CBDT")}},Zp=Object.freeze({__proto__:null,CBDT:qp}),Xp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},Kp=Object.freeze({__proto__:null,sbix:Xp}),Jp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new bn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new bn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let m=new bn(this.parser),f=m.gID;if(f===t)return m;f>t?s=l:f<t&&(e=l)}return!1}getLayers(t){let e=this.getBaseGlyphRecord(t);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*e.firstLayerIndex,[...new Array(e.numLayers)].map(r=>new Qp(p))}},bn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},Qp=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},$p=Object.freeze({__proto__:null,COLR:Jp}),th=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new eh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new rh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new oh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new sh(r,o))))}},eh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},rh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},oh=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},sh=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},nh=Object.freeze({__proto__:null,CPAL:th}),ah=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new ih(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new lh(this.parser)}},ih=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},lh=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},uh=Object.freeze({__proto__:null,DSIG:ah}),fh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new ch(o,s))}},ch=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},dh=Object.freeze({__proto__:null,hdmx:fh}),mh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new ph(r);s.push(n),o+=n}return s})}},ph=class{constructor(t){this.version=t.uint16,this.length=t.uint16,this.coverage=t.flags(8),this.format=t.uint8,this.format===0&&(this.nPairs=t.uint16,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(e=>new hh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},hh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},gh=Object.freeze({__proto__:null,kern:mh}),yh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},vh=Object.freeze({__proto__:null,LTSH:yh}),bh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},wh=Object.freeze({__proto__:null,MERG:bh}),Sh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new xh(this.tableStart,r))}},xh=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Ch=Object.freeze({__proto__:null,meta:Sh}),Fh=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},kh=Object.freeze({__proto__:null,PCLT:Fh}),Oh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Th(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new _h(r))}},Th=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},_h=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Ph(t))}},Ph=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Ah=Object.freeze({__proto__:null,VDMX:Oh}),Rh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},Eh=Object.freeze({__proto__:null,vhea:Rh}),Ih=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Lh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Lh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},Bh=Object.freeze({__proto__:null,vmtx:Ih});var Jl=u(X(),1);var{kebabCase:Dh}=vt(Jl.privateApis);function Ql(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:Dh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var pe=u(z(),1);function Vh(){let{installFonts:t}=(0,go.useContext)(ne),[e,r]=(0,go.useState)(!1),[o,s]=(0,go.useState)(null),a=h=>{l(h)},n=h=>{l(h.target.files)},l=async h=>{if(!h)return;s(null),r(!0);let v=new Set,_=[...h],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(v.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return pn.includes(Y)?(v.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)m(x);else{let b=A?(0,Ur.__)("Sorry, you are not allowed to upload this file type."):(0,Ur.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},m=async h=>{let v=await Promise.all(h.map(async _=>{let A=await d(_);return await er(A,A.file,"all"),A}));g(v)};async function f(h){let v=new is("Uploaded Font");try{let _=await c(h);return await v.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(h){return new Promise((v,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(h),A.onload=()=>v(A.result),A.onerror=_})}let d=async h=>{let v=await c(h),_=new is("Uploaded Font");_.fromDataBuffer(v,h.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",V=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=V?`${V.minValue} ${V.maxValue}`:null;return{file:h,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},g=async h=>{let v=Ql(h);try{await t(v),s({type:"success",message:(0,Ur.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,pe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,pe.jsx)($t.DropZone,{onFilesDrop:a}),(0,pe.jsxs)($t.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,pe.jsxs)($t.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,pe.jsx)("ul",{children:o.errors.map((h,v)=>(0,pe.jsx)("li",{children:h},v))})]}),e&&(0,pe.jsx)($t.FlexItem,{children:(0,pe.jsx)("div",{className:"font-library__upload-area",children:(0,pe.jsx)($t.ProgressBar,{})})}),!e&&(0,pe.jsx)($t.FormFileUpload,{accept:pn.map(h=>`.${h}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:h})=>(0,pe.jsx)($t.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:h,children:(0,Ur.__)("Upload font")})}),(0,pe.jsx)($t.__experimentalText,{className:"font-library__upload-area__text",children:(0,Ur.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ls=Vh;var tu=u(z(),1),{Tabs:x2}=vt(Sn.privateApis),C2={id:"installed-fonts",title:(0,us._x)("Library","Font library")},F2={id:"upload-fonts",title:(0,us._x)("Upload","noun")};var eu=u(ut(),1),xn=u(X(),1),zh=u(yt(),1);var ru=u(z(),1);var Cn=u(z(),1);var ou=u(ut(),1),fs=u(X(),1);var su=u(z(),1);var kn=u(z(),1);var _e=u(ut(),1),On=u(X(),1),qh=u(yt(),1);var nu=u(ce(),1);var Wh=u(z(),1),{useSettingsForBlockElement:t6,TypographyPanel:e6}=vt(nu.privateApis);var Yh=u(z(),1);var Tn=u(z(),1),f6={text:{description:(0,_e.__)("Manage the fonts used on the site."),title:(0,_e.__)("Text")},link:{description:(0,_e.__)("Manage the fonts and typography used on the links."),title:(0,_e.__)("Links")},heading:{description:(0,_e.__)("Manage the fonts and typography used on headings."),title:(0,_e.__)("Headings")},caption:{description:(0,_e.__)("Manage the fonts and typography used on captions."),title:(0,_e.__)("Captions")},button:{description:(0,_e.__)("Manage the fonts and typography used on buttons."),title:(0,_e.__)("Buttons")}};var Jh=u(ut(),1),Qh=u(X(),1),iu=u(ce(),1);var Hr=u(X(),1),au=u(ut(),1);var Kh=u(yt(),1);var Zh=u(X(),1),Xh=u(z(),1);var _n=u(z(),1);var Pn=u(z(),1),{useSettingsForBlockElement:O6,ColorPanel:T6}=vt(iu.privateApis);var ng=u(ut(),1),pu=u(X(),1);var eg=u(cr(),1),An=u(X(),1),rg=u(ut(),1);var ds=u(X(),1);var cs=u(X(),1);var lu=u(z(),1);function uu(){let{paletteColors:t}=Lr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,lu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var vo=u(z(),1),$h={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},tg=({label:t,isFocused:e,withHoverView:r})=>(0,vo.jsx)(Vr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,vo.jsx)(cs.__unstableMotion.div,{variants:$h,style:{height:"100%",overflow:"hidden"},children:(0,vo.jsx)(cs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,vo.jsx)(uu,{})})},o)}),fu=tg;var Cr=u(z(),1),cu=["color"];function ms({title:t,gap:e=2}){let r=No(cu);return r?.length<=1?null:(0,Cr.jsxs)(ds.__experimentalVStack,{spacing:3,children:[t&&(0,Cr.jsx)(Se,{level:3,children:t}),(0,Cr.jsx)(ds.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,Cr.jsx)(zr,{variation:o,isPill:!0,properties:cu,showTooltip:!0,children:()=>(0,Cr.jsx)(fu,{})},s))})]})}var du=u(z(),1);var og=u(cr(),1),ps=u(X(),1),sg=u(ut(),1);var mu=u(z(),1);var Rn=u(z(),1),{Tabs:Q6}=vt(pu.privateApis);var ig=u(ut(),1),gu=u(ce(),1),lg=u(X(),1);var hu=u(ce(),1);var ag=u(z(),1);var{BackgroundPanel:rC}=vt(hu.privateApis);var En=u(z(),1),{useHasBackgroundPanel:uC}=vt(gu.privateApis);var Fr=u(X(),1),In=u(ut(),1);var mg=u(yt(),1);var ug=u(X(),1),fg=u(ut(),1),cg=u(z(),1);var Ln=u(z(),1),{Menu:SC}=vt(Fr.privateApis);var Ut=u(X(),1),bo=u(ut(),1);var hs=u(yt(),1);var Bn=u(z(),1),{Menu:DC}=vt(Ut.privateApis),VC=[{label:(0,bo.__)("Rename"),action:"rename"},{label:(0,bo.__)("Delete"),action:"delete"}],NC=[{label:(0,bo.__)("Reset"),action:"reset"}];var pg=u(z(),1);var yg=u(ut(),1),vu=u(ce(),1);var yu=u(ce(),1),hg=u(yt(),1);var gg=u(z(),1),{useSettingsForBlockElement:qC,DimensionsPanel:ZC}=vt(yu.privateApis);var Dn=u(z(),1),{useHasDimensionsPanel:eF,useSettingsForBlockElement:rF}=vt(vu.privateApis);var Fu=u(X(),1),Sg=u(ut(),1);var bg=u(ut(),1),wg=u(X(),1);var bu=u(be(),1),wu=u(fe(),1),ys=u(yt(),1),Su=u(X(),1),xu=u(ut(),1);var gs=u(z(),1);function vg({gap:t=2}){let{user:e}=(0,ys.useContext)(Xt),r=e?.styles,s=(0,wu.useSelect)(n=>{let l=n(bu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!io(n,["color"])&&!io(n,["typography","spacing"])),a=(0,ys.useMemo)(()=>[...[{title:(0,xu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let m=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(g=>{if(r.blocks?.[g]?.css){let h=m[g]||{},v={css:`${m[g]?.css||""} ${r.blocks?.[g]?.css?.trim()||""}`};m[g]={...h,...v}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(m).length>0?{blocks:m}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,gs.jsx)(Su.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,gs.jsx)(zr,{variation:n,children:m=>(0,gs.jsx)(nn,{label:n?.title,withHoverView:!0,isFocused:m,variation:n})},l))})}var Vn=vg;var Cu=u(z(),1);var Nn=u(z(),1);var xg=u(ut(),1),Cg=u(X(),1),ku=u(ce(),1);var zn=u(z(),1),{AdvancedPanel:wF}=vt(ku.privateApis);var Lu=u(ut(),1),Gn=u(X(),1),jn=u(yt(),1);var Fg=u(fe(),1),kg=u(be(),1),Ou=u(yt(),1);var Pu=u(ut(),1),Au=u(X(),1),vs=u(_u(),1),Og=u(be(),1),Tg=u(fe(),1);var Ru=u(dn(),1),Eu=u(z(),1),kF=3600*1e3*24;var Mn=u(X(),1),wo=u(ut(),1);var Iu=u(z(),1);var Un=u(z(),1);var Hn=u(ut(),1),qe=u(X(),1);var Eg=u(yt(),1);var Pg=u(X(),1),Ag=u(ut(),1),Rg=u(z(),1);var Wn=u(z(),1),{Menu:YF}=vt(qe.privateApis);var Nu=u(ut(),1),Ne=u(X(),1);var zu=u(yt(),1);var Ig=u(ce(),1),Lg=u(ut(),1);var Bg=u(z(),1);var Dg=u(X(),1),Bu=u(ut(),1),Vg=u(z(),1);var So=u(X(),1),Ng=u(ut(),1),zg=u(yt(),1),Du=u(z(),1);var Ze=u(X(),1),Vu=u(z(),1);var Yn=u(z(),1),{Menu:f3}=vt(Ne.privateApis);var Zn=u(z(),1);var Xn=u(z(),1);function Wr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Xn.jsx)(ao,{value:r,baseValue:o,onChange:s,children:(0,Xn.jsx)(t,{...a})})}}var Ug=Wr(Vn);var Hg=Wr(ms);var Wg=Wr(Wo);var Yr=u(z(),1);function Kn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Yr.jsx)(ls,{});break;case"installed-fonts":s=(0,Yr.jsx)($o,{});break;default:s=(0,Yr.jsx)(es,{slug:o})}return(0,Yr.jsx)(ao,{value:t,baseValue:e,onChange:r,children:(0,Yr.jsx)(Zo,{children:s})})}var ju=u(Vs()),{unlock:Jn}=(0,ju.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4bbd4c3e39']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","4bbd4c3e39"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:bs}=Jn(Uu.privateApis),{useGlobalStyles:Yg}=Jn(Hu.privateApis);function qg(){let{records:t=[]}=(0,ws.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,Yu.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=Yg(),l=(0,Wu.useSelect)(f=>f(ws.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let m=[{id:"installed-fonts",title:(0,xo.__)("Library")}];return l&&(m.push({id:"upload-fonts",title:(0,xo.__)("Upload")}),m.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,xo.__)("Install Fonts"):c})))),React.createElement(Ns,{title:(0,xo.__)("Fonts")},React.createElement(bs,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(bs.TabList,null,m.map(({id:f,title:c})=>React.createElement(bs.Tab,{key:f,tabId:f},c)))),m.map(({id:f})=>React.createElement(bs.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Kn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function Zg(){return React.createElement(qg,null)}var Xg=Zg;export{Xg as stage}; +}`,globalThis.document.head.appendChild(s),s}var gd=[0,1,0,0],yd=[79,84,84,79],vd=[119,79,70,70],bd=[119,79,70,50];function as(t,e){if(t.length===e.length){for(let r=0;r<t.length;r++)if(t[r]!==e[r])return;return!0}}function wd(t){let e=[t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3)];if(as(e,gd)||as(e,yd))return"SFNT";if(as(e,vd))return"WOFF";if(as(e,bd))return"WOFF2"}function Sd(t){if(!t.ok)throw new Error(`HTTP ${t.status} - ${t.statusText}`);return t}var ls=class extends $c{constructor(t,e={}){super(),this.name=t,this.options=e,this.metrics=!1}get src(){return this.__src}set src(t){this.__src=t,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await hd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>Sd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new ns("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=wd(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new ns("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return md().then(e=>(t==="SFNT"&&(this.opentype=new od(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new nd(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new ld(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new ns("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new ns("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=ls;var Ye=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},xd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Cd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new Fd(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},Fd=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},kd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,m=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(m,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],m=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let g=n+m,h=l+m;g<=h;g++)d.push(g);else for(let g=0,h=l-n;g<=h;g++)r.currentPosition=c+f+g*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:m,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Od=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),t<this.firstCode)return{};if(t>this.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Td=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new _d(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},_d=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Pd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),t<this.startCharCode||t>this.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Ad=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new Rd(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)<t)continue;let s=e.startCharCode+(t-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Rd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Ed=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Id(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Id=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},Ld=class extends Ye{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new Bd(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},Bd=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Vd(t,e,r){let o=t.uint16;return o===0?new xd(t,e,r):o===2?new Cd(t,e,r):o===4?new kd(t,e,r):o===6?new Od(t,e,r):o===8?new Td(t,e,r):o===10?new Pd(t,e,r):o===12?new Ad(t,e,r):o===13?new Ed(t,e,r):o===14?new Ld(t,e,r):{}}var Dd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Nd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e<this.numTables;e++){let r=this.getSubTable(e).reverse(t);if(r)return r}}getGlyphId(t){let e=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},Nd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Vd(t,r,o)))}},zd=Object.freeze({__proto__:null,cmap:Dd}),Md=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Gd=Object.freeze({__proto__:null,head:Md}),jd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},Ud=Object.freeze({__proto__:null,hhea:jd}),Hd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new Wd(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(m=>o.int16)))}}},Wd=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},Yd=Object.freeze({__proto__:null,hmtx:Hd}),qd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Zd=Object.freeze({__proto__:null,maxp:qd}),Xd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Jd(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new Kd(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},Kd=class{constructor(t,e){this.length=t,this.offset=e}},Jd=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,Qd(t,this)))}};function Qd(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,m=o/2;l<m;l++)n[l]=String.fromCharCode(t.uint16);return n.join("")}let s=t.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var $d=Object.freeze({__proto__:null,name:Xd}),tm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},em=Object.freeze({__proto__:null,OS2:tm}),rm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Nl.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Nl[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Nl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],om=Object.freeze({__proto__:null,post:rm}),sm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new wn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new wn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new wn({offset:t.offset+this.itemVarStoreOffset},e)))}},wn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new nm({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new am({offset:t.offset+this.baseScriptListOffset},e))}},nm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},am=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new im(this.start,r))))}},im=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new lm(e)))}},lm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new um(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new fm(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Yl(t)))}},um=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Yl(e)))}},fm=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new dm(this.parser)}},Yl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new cm(t))))}},cm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},dm=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},mm=Object.freeze({__proto__:null,BASE:sm}),zl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new pm(t)))}},pm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},vo=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new hm(t)))}},hm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},gm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},ym=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new zl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new vm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new wm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new zl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Cm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new gm(r)}))}},vm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new bm(this.parser)}},bm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},wm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new vo(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new Sm(this.parser)}},Sm=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new xm(this.parser)}},xm=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},Cm=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new vo(this.parser)}},Fm=Object.freeze({__proto__:null,GDEF:ym}),Ml=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new km(t))}},km=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Om=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Tm(t))}},Tm=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},Gl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},jl=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new _m(t))}},_m=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Pm=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new Rm(t);if(e.startsWith("cc"))return new Am(t);if(e.startsWith("ss"))return new Em(t)}}},Am=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},Rm=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Em=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function ql(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var Fr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new vo(t)}},xn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Im=class extends Fr{constructor(t){super(t),this.deltaGlyphID=t.int16}},Lm=class extends Fr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new Bm(e)}},Bm=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Vm=class extends Fr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Dm(e)}},Dm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Nm=class extends Fr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new zm(e)}},zm=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Mm(e)}},Mm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Gm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(ql(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new xn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new jm(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new Um(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new vo(e)}},jm=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new Zl(e)}},Zl=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new xn(t))}},Um=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Hm(e)}},Hm=class extends Zl{constructor(t){super(t)}},Wm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(ql(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Xl(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new Ym(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new Zm(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new vo(e)}},Ym=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new qm(e)}},qm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new xn(t))}},Zm=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Xm(e)}},Xm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Xl(t))}},Xl=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Km=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},Jm=class extends Fr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Qm={buildSubtable:function(t,e){let r=new[void 0,Im,Lm,Vm,Nm,Gm,Wm,Km,Jm][t](e);return r.type=t,r}},qe=class extends Bt{constructor(t){super(t)}},$m=class extends qe{constructor(t){super(t),console.log("lookup type 1")}},tp=class extends qe{constructor(t){super(t),console.log("lookup type 2")}},ep=class extends qe{constructor(t){super(t),console.log("lookup type 3")}},rp=class extends qe{constructor(t){super(t),console.log("lookup type 4")}},op=class extends qe{constructor(t){super(t),console.log("lookup type 5")}},sp=class extends qe{constructor(t){super(t),console.log("lookup type 6")}},np=class extends qe{constructor(t){super(t),console.log("lookup type 7")}},ap=class extends qe{constructor(t){super(t),console.log("lookup type 8")}},ip=class extends qe{constructor(t){super(t),console.log("lookup type 9")}},lp={buildSubtable:function(t,e){let r=new[void 0,$m,tp,ep,rp,op,sp,np,ap,ip][t](e);return r.type=t,r}},Ul=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},up=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?Qm:lp;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},Kl=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Ml.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Ml(o))),Z(this,"featureList",()=>a?jl.EMPTY:(o.currentPosition=s+this.featureListOffset,new jl(o))),Z(this,"lookupList",()=>a?Ul.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Ul(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Om(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new Gl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new Gl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Pm(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new up(this.parser,e)}},fp=class extends Kl{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},cp=Object.freeze({__proto__:null,GSUB:fp}),dp=class extends Kl{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},mp=Object.freeze({__proto__:null,GPOS:dp}),pp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new hp(r)}},hp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new gp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},gp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},yp=Object.freeze({__proto__:null,SVG:pp}),vp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new bp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new wp(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(t=>t.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},bp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},wp=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o<r&&(this.postScriptNameID=t.uint16)}},Sp=Object.freeze({__proto__:null,fvar:vp}),xp=class extends mt{constructor(t,e){let{p:r}=super(t,e),o=t.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},Cp=Object.freeze({__proto__:null,cvt:xp}),Fp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},kp=Object.freeze({__proto__:null,fpgm:Fp}),Op=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Tp(r)))}},Tp=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},_p=Object.freeze({__proto__:null,gasp:Op}),Pp=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Ap=Object.freeze({__proto__:null,glyf:Pp}),Rp=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Ep=Object.freeze({__proto__:null,loca:Rp}),Ip=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Lp=Object.freeze({__proto__:null,prep:Ip}),Bp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Vp=Object.freeze({__proto__:null,CFF:Bp}),Dp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Np=Object.freeze({__proto__:null,CFF2:Dp}),zp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Mp(r)))}},Mp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Gp=Object.freeze({__proto__:null,VORG:zp}),jp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new is(t),this.vert=new is(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},Up=class{constructor(t){this.hori=new is(t),this.vert=new is(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},is=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},Jl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new jp(o)))}},Hp=Object.freeze({__proto__:null,EBLC:Jl}),Ql=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},Wp=Object.freeze({__proto__:null,EBDT:Ql}),Yp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new Up(r)))}},qp=Object.freeze({__proto__:null,EBSC:Yp}),Zp=class extends Jl{constructor(t,e){super(t,e,"CBLC")}},Xp=Object.freeze({__proto__:null,CBLC:Zp}),Kp=class extends Ql{constructor(t,e){super(t,e,"CBDT")}},Jp=Object.freeze({__proto__:null,CBDT:Kp}),Qp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},$p=Object.freeze({__proto__:null,sbix:Qp}),th=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new Sn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new Sn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let m=new Sn(this.parser),f=m.gID;if(f===t)return m;f>t?s=l:f<t&&(e=l)}return!1}getLayers(t){let e=this.getBaseGlyphRecord(t);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*e.firstLayerIndex,[...new Array(e.numLayers)].map(r=>new eh(p))}},Sn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},eh=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},rh=Object.freeze({__proto__:null,COLR:th}),oh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new sh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new nh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new ah(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new ih(r,o))))}},sh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},nh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},ah=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},ih=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},lh=Object.freeze({__proto__:null,CPAL:oh}),uh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new fh(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new ch(this.parser)}},fh=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},ch=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},dh=Object.freeze({__proto__:null,DSIG:uh}),mh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new ph(o,s))}},ph=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},hh=Object.freeze({__proto__:null,hdmx:mh}),gh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new yh(r);s.push(n),o+=n}return s})}},yh=class{constructor(t){this.version=t.uint16,this.length=t.uint16,this.coverage=t.flags(8),this.format=t.uint8,this.format===0&&(this.nPairs=t.uint16,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(e=>new vh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},vh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},bh=Object.freeze({__proto__:null,kern:gh}),wh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},Sh=Object.freeze({__proto__:null,LTSH:wh}),xh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Ch=Object.freeze({__proto__:null,MERG:xh}),Fh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new kh(this.tableStart,r))}},kh=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Oh=Object.freeze({__proto__:null,meta:Fh}),Th=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},_h=Object.freeze({__proto__:null,PCLT:Th}),Ph=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Ah(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new Rh(r))}},Ah=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},Rh=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Eh(t))}},Eh=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Ih=Object.freeze({__proto__:null,VDMX:Ph}),Lh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},Bh=Object.freeze({__proto__:null,vhea:Lh}),Vh=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Dh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Dh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},Nh=Object.freeze({__proto__:null,vmtx:Vh});var $l=u(X(),1);var{kebabCase:zh}=yt($l.privateApis);function tu(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:zh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var he=u(z(),1);function Mh(){let{installFonts:t}=(0,bo.useContext)(ie),[e,r]=(0,bo.useState)(!1),[o,s]=(0,bo.useState)(null),a=h=>{l(h)},n=h=>{l(h.target.files)},l=async h=>{if(!h)return;s(null),r(!0);let v=new Set,_=[...h],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(v.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return gn.includes(Y)?(v.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)m(x);else{let b=A?(0,Wr.__)("Sorry, you are not allowed to upload this file type."):(0,Wr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},m=async h=>{let v=await Promise.all(h.map(async _=>{let A=await d(_);return await rr(A,A.file,"all"),A}));g(v)};async function f(h){let v=new ls("Uploaded Font");try{let _=await c(h);return await v.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(h){return new Promise((v,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(h),A.onload=()=>v(A.result),A.onerror=_})}let d=async h=>{let v=await c(h),_=new ls("Uploaded Font");_.fromDataBuffer(v,h.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",D=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=D?`${D.minValue} ${D.maxValue}`:null;return{file:h,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},g=async h=>{let v=tu(h);try{await t(v),s({type:"success",message:(0,Wr.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,he.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,he.jsx)(te.DropZone,{onFilesDrop:a}),(0,he.jsxs)(te.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,he.jsxs)(te.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,he.jsx)("ul",{children:o.errors.map((h,v)=>(0,he.jsx)("li",{children:h},v))})]}),e&&(0,he.jsx)(te.FlexItem,{children:(0,he.jsx)("div",{className:"font-library__upload-area",children:(0,he.jsx)(te.ProgressBar,{})})}),!e&&(0,he.jsx)(te.FormFileUpload,{accept:gn.map(h=>`.${h}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:h})=>(0,he.jsx)(te.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:h,children:(0,Wr.__)("Upload font")})}),(0,he.jsx)(te.__experimentalText,{className:"font-library__upload-area__text",children:(0,Wr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var us=Mh;var ru=u(z(),1),{Tabs:R2}=yt(Cn.privateApis),E2={id:"installed-fonts",title:(0,fs._x)("Library","Font library")},I2={id:"upload-fonts",title:(0,fs._x)("Upload","noun")};var ou=u(it(),1),Fn=u(X(),1),jh=u(vt(),1);var su=u(z(),1);var kn=u(z(),1);var nu=u(it(),1),cs=u(X(),1);var au=u(z(),1);var Tn=u(z(),1);var Pe=u(it(),1),_n=u(X(),1),Kh=u(vt(),1);var iu=u(ae(),1);var Zh=u(z(),1),{useSettingsForBlockElement:u6,TypographyPanel:f6}=yt(iu.privateApis);var Xh=u(z(),1);var Pn=u(z(),1),b6={text:{description:(0,Pe.__)("Manage the fonts used on the site."),title:(0,Pe.__)("Text")},link:{description:(0,Pe.__)("Manage the fonts and typography used on the links."),title:(0,Pe.__)("Links")},heading:{description:(0,Pe.__)("Manage the fonts and typography used on headings."),title:(0,Pe.__)("Headings")},caption:{description:(0,Pe.__)("Manage the fonts and typography used on captions."),title:(0,Pe.__)("Captions")},button:{description:(0,Pe.__)("Manage the fonts and typography used on buttons."),title:(0,Pe.__)("Buttons")}};var tg=u(it(),1),eg=u(X(),1),uu=u(ae(),1);var Yr=u(X(),1),lu=u(it(),1);var $h=u(vt(),1);var Jh=u(X(),1),Qh=u(z(),1);var An=u(z(),1);var Rn=u(z(),1),{useSettingsForBlockElement:B6,ColorPanel:V6}=yt(uu.privateApis);var lg=u(it(),1),gu=u(X(),1);var sg=u(mr(),1),En=u(X(),1),ng=u(it(),1);var ms=u(X(),1);var ds=u(X(),1);var fu=u(z(),1);function cu(){let{paletteColors:t}=Vr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,fu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var So=u(z(),1),rg={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},og=({label:t,isFocused:e,withHoverView:r})=>(0,So.jsx)(zr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,So.jsx)(ds.__unstableMotion.div,{variants:rg,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(ds.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(cu,{})})},o)}),du=og;var kr=u(z(),1),mu=["color"];function ps({title:t,gap:e=2}){let r=zo(mu);return r?.length<=1?null:(0,kr.jsxs)(ms.__experimentalVStack,{spacing:3,children:[t&&(0,kr.jsx)(xe,{level:3,children:t}),(0,kr.jsx)(ms.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,kr.jsx)(Gr,{variation:o,isPill:!0,properties:mu,showTooltip:!0,children:()=>(0,kr.jsx)(du,{})},s))})]})}var pu=u(z(),1);var ag=u(mr(),1),hs=u(X(),1),ig=u(it(),1);var hu=u(z(),1);var In=u(z(),1),{Tabs:iC}=yt(gu.privateApis);var fg=u(it(),1),vu=u(ae(),1),cg=u(X(),1);var yu=u(ae(),1);var ug=u(z(),1);var{BackgroundPanel:cC}=yt(yu.privateApis);var Ln=u(z(),1),{useHasBackgroundPanel:vC}=yt(vu.privateApis);var Or=u(X(),1),Bn=u(it(),1);var gg=u(vt(),1);var dg=u(X(),1),mg=u(it(),1),pg=u(z(),1);var Vn=u(z(),1),{Menu:AC}=yt(Or.privateApis);var Ut=u(X(),1),xo=u(it(),1);var gs=u(vt(),1);var Dn=u(z(),1),{Menu:WC}=yt(Ut.privateApis),YC=[{label:(0,xo.__)("Rename"),action:"rename"},{label:(0,xo.__)("Delete"),action:"delete"}],qC=[{label:(0,xo.__)("Reset"),action:"reset"}];var yg=u(z(),1);var wg=u(it(),1),wu=u(ae(),1);var bu=u(ae(),1),vg=u(vt(),1);var bg=u(z(),1),{useSettingsForBlockElement:rF,DimensionsPanel:oF}=yt(bu.privateApis);var Nn=u(z(),1),{useHasDimensionsPanel:fF,useSettingsForBlockElement:cF}=yt(wu.privateApis);var Ou=u(X(),1),Fg=u(it(),1);var xg=u(it(),1),Cg=u(X(),1);var Su=u(we(),1),xu=u(de(),1),vs=u(vt(),1),Cu=u(X(),1),Fu=u(it(),1);var ys=u(z(),1);function Sg({gap:t=2}){let{user:e}=(0,vs.useContext)(Kt),r=e?.styles,s=(0,xu.useSelect)(n=>{let l=n(Su.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!fo(n,["color"])&&!fo(n,["typography","spacing"])),a=(0,vs.useMemo)(()=>[...[{title:(0,Fu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let m=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(g=>{if(r.blocks?.[g]?.css){let h=m[g]||{},v={css:`${m[g]?.css||""} ${r.blocks?.[g]?.css?.trim()||""}`};m[g]={...h,...v}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(m).length>0?{blocks:m}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,ys.jsx)(Cu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,ys.jsx)(Gr,{variation:n,children:m=>(0,ys.jsx)(an,{label:n?.title,withHoverView:!0,isFocused:m,variation:n})},l))})}var zn=Sg;var ku=u(z(),1);var Mn=u(z(),1);var kg=u(it(),1),Og=u(X(),1),Tu=u(ae(),1);var Gn=u(z(),1),{AdvancedPanel:PF}=yt(Tu.privateApis);var Vu=u(it(),1),Un=u(X(),1),Hn=u(vt(),1);var Tg=u(de(),1),_g=u(we(),1),_u=u(vt(),1);var Ru=u(it(),1),Eu=u(X(),1),bs=u(Au(),1),Pg=u(we(),1),Ag=u(de(),1);var Iu=u(pn(),1),Lu=u(z(),1),LF=3600*1e3*24;var jn=u(X(),1),Co=u(it(),1);var Bu=u(z(),1);var Wn=u(z(),1);var Yn=u(it(),1),Ze=u(X(),1);var Bg=u(vt(),1);var Eg=u(X(),1),Ig=u(it(),1),Lg=u(z(),1);var qn=u(z(),1),{Menu:e3}=yt(Ze.privateApis);var Mu=u(it(),1),Me=u(X(),1);var Gu=u(vt(),1);var Vg=u(ae(),1),Dg=u(it(),1);var Ng=u(z(),1);var zg=u(X(),1),Du=u(it(),1),Mg=u(z(),1);var Fo=u(X(),1),Gg=u(it(),1),jg=u(vt(),1),Nu=u(z(),1);var Xe=u(X(),1),zu=u(z(),1);var Zn=u(z(),1),{Menu:b3}=yt(Me.privateApis);var Kn=u(z(),1);var Jn=u(z(),1);function qr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Jn.jsx)(uo,{value:r,baseValue:o,onChange:s,children:(0,Jn.jsx)(t,{...a})})}}var Yg=qr(zn);var qg=qr(ps);var Zg=qr(Yo);var Zr=u(z(),1);function Qn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Zr.jsx)(us,{});break;case"installed-fonts":s=(0,Zr.jsx)(ts,{});break;default:s=(0,Zr.jsx)(rs,{slug:o})}return(0,Zr.jsx)(uo,{value:t,baseValue:e,onChange:r,children:(0,Zr.jsx)(Xo,{children:s})})}var Hu=u(Ns()),{unlock:$n}=(0,Hu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='89af99528f']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","89af99528f"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:ws}=$n(Wu.privateApis),{useGlobalStyles:Xg}=$n(Yu.privateApis);function Kg(){let{records:t=[]}=(0,Ss.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,Zu.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=Xg(),l=(0,qu.useSelect)(f=>f(Ss.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let m=[{id:"installed-fonts",title:(0,Xr._x)("Library","Font library")}];return l&&(m.push({id:"upload-fonts",title:(0,Xr._x)("Upload","noun")}),m.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,Xr.__)("Install Fonts"):c})))),React.createElement(zs,{title:(0,Xr.__)("Fonts")},React.createElement(ws,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(ws.TabList,null,m.map(({id:f,title:c})=>React.createElement(ws.Tab,{key:f,tabId:f},c)))),m.map(({id:f})=>React.createElement(ws.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Qn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function Jg(){return React.createElement(Kg,null)}var Qg=Jg;export{Qg as stage}; /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: diff --git a/src/wp-includes/build/routes/registry.php b/src/wp-includes/build/routes/registry.php index e43f726820548..2009a1063d831 100644 --- a/src/wp-includes/build/routes/registry.php +++ b/src/wp-includes/build/routes/registry.php @@ -14,6 +14,13 @@ 'has_route' => true, 'has_content' => true, ), + array( + 'name' => 'content-guidelines', + 'path' => '/', + 'page' => 'guidelines', + 'has_route' => true, + 'has_content' => true, + ), array( 'name' => 'font-list', 'path' => '/font-list', diff --git a/src/wp-includes/theme.json b/src/wp-includes/theme.json index fb26d36518841..8f00ade148c49 100644 --- a/src/wp-includes/theme.json +++ b/src/wp-includes/theme.json @@ -316,6 +316,30 @@ "core/button": { "border": { "radius": true + }, + "dimensions": { + "dimensionSizes": [ + { + "name": "25%", + "slug": "25", + "size": "25%" + }, + { + "name": "50%", + "slug": "50", + "size": "50%" + }, + { + "name": "75%", + "slug": "75", + "size": "75%" + }, + { + "name": "100%", + "slug": "100", + "size": "100%" + } + ] } }, "core/image": { From 3d3546f5d090c5f772201c29e47b3c2f0cb3c0f6 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 30 Jun 2026 00:19:29 +0000 Subject: [PATCH 270/327] General: Bump the pinned hash for Gutenberg to `v22.9.0`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the pinned commit hash of the Gutenberg repository from `3166ad3c587b4091f77b0e16affeed5762e193f1` (version `22.8.0`) to `5426109cdaf45828ef28ff8527d7d38e7e75fe74` (version `22.9.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v22.8.0..v22.9.0. The following commits are included: - Real Time Collaboration: Introduce filters for the polling intervals. (https://github.com/WordPress/gutenberg/pull/76518) - UI: Update @base-ui/react from 1.2.0 to 1.3.0 (https://github.com/WordPress/gutenberg/pull/76603) - Card: Use Text component for Title typography (https://github.com/WordPress/gutenberg/pull/76642) - Add TypeScript parser tests for shouldSkipReference (https://github.com/WordPress/gutenberg/pull/76611) - Update changelog link for pull request 11276 (https://github.com/WordPress/gutenberg/pull/76638) - ThemeProvider: Add `cursor` prop (https://github.com/WordPress/gutenberg/pull/76410) - RTC: Fix RichTextData deserialization (https://github.com/WordPress/gutenberg/pull/76607) - Cross Origin Isolation: Remove `img` from the list of elements that get mutated (https://github.com/WordPress/gutenberg/pull/76618) - RTC: Scroll to collaborator on click (https://github.com/WordPress/gutenberg/pull/76561) - Fix backport changelog filename (https://github.com/WordPress/gutenberg/pull/76651) - Build: Skip non-minified build for WASM-inlined workers (https://github.com/WordPress/gutenberg/pull/76615) - Improvements to dataviews infinite scroll (https://github.com/WordPress/gutenberg/pull/74378) - Image/Site Logo: hide crop toolbar when editMediaEntity is unavailable (https://github.com/WordPress/gutenberg/pull/76626) - Bump lodash from 4.17.21 to 4.17.23 in /platform-docs (https://github.com/WordPress/gutenberg/pull/74829) - RTC: Change RTC option name (https://github.com/WordPress/gutenberg/pull/76643) - Change from PR https://github.com/WordPress/gutenberg/pull/11276 to https://github.com/WordPress/gutenberg/pull/11234 with with different approach (https://github.com/WordPress/gutenberg/pull/76661) - Build: Fix vips worker 404 when SCRIPT_DEBUG is true (https://github.com/WordPress/gutenberg/pull/76657) - Build: Remove unused JXL WASM module from vips worker (https://github.com/WordPress/gutenberg/pull/76639) - Storybook: disabled autodocs for Icon library (https://github.com/WordPress/gutenberg/pull/76620) - Connectors: fix button size (https://github.com/WordPress/gutenberg/pull/76582) - Revisions: Add Meta fields diff panel to document sidebar (https://github.com/WordPress/gutenberg/pull/76341) - Reduce the added halo for selected block. (https://github.com/WordPress/gutenberg/pull/76619) - Site Editor > Pages: move view config to the server (https://github.com/WordPress/gutenberg/pull/76573) - ui/Tabs: add runtime validation for tab/panel mismatches (https://github.com/WordPress/gutenberg/pull/75170) - Fix Color Picker Angle Reset on Gradient Type Change (https://github.com/WordPress/gutenberg/pull/76595) - ESLint: Add `no-unmerged-classname` rule (https://github.com/WordPress/gutenberg/pull/76458) - RTC: Backport race condition fix (https://github.com/WordPress/gutenberg/pull/76649) - ui/Card: Add overflow: clip to root container (https://github.com/WordPress/gutenberg/pull/76678) - Storybook: Make "introduction" top level (https://github.com/WordPress/gutenberg/pull/76671) - Fix navigation block rendering unit test (https://github.com/WordPress/gutenberg/pull/76685) - Hide Additional CSS controls when block is inside contentOnly editing mode (https://github.com/WordPress/gutenberg/pull/76512) - RTC: Increase polling intervals, increase polling on primary room only (https://github.com/WordPress/gutenberg/pull/76704) - Navigation: Avoid List View changing position when navigation block saves (https://github.com/WordPress/gutenberg/pull/76659) - Fix navigation block unit test and e2e test (https://github.com/WordPress/gutenberg/pull/76692) - Stretchy Text: Fix focus loss (https://github.com/WordPress/gutenberg/pull/75092) - Fix locked content when switching to a different template without exiting 'Edit pattern' (https://github.com/WordPress/gutenberg/pull/76710) - Guidelines: Improvements to the UX (https://github.com/WordPress/gutenberg/pull/76383) - Fix: Create custom template modal content width (https://github.com/WordPress/gutenberg/pull/76713) - Core Data: Optimize getRawEntityRecord selector (https://github.com/WordPress/gutenberg/pull/76632) - Metabox: Fix checkbox style in sidebar (https://github.com/WordPress/gutenberg/pull/76718) - Stop keeping stale controlled blocks after reset (https://github.com/WordPress/gutenberg/pull/76591) - Gate client-side media processing as plugin-only (https://github.com/WordPress/gutenberg/pull/76700) - Storybook: Add redirect for moved introduction page (https://github.com/WordPress/gutenberg/pull/76701) - InputControl: Add to @wordpress/ui (https://github.com/WordPress/gutenberg/pull/76653) - UI Tooltip: Improve documentation to cover intended accessibility practices (https://github.com/WordPress/gutenberg/pull/76705) - Add EmptyState component to @wordpress/ui (https://github.com/WordPress/gutenberg/pull/74719) - RTC: Use activation hook to enable RTC by default (https://github.com/WordPress/gutenberg/pull/76736) - Forms Block: Add hidden input field variation (https://github.com/WordPress/gutenberg/pull/74131) - Guidelines: Refactor components and improve TypeScript typing (https://github.com/WordPress/gutenberg/pull/76394) - Connectors: Align client-side registration API with server-side (https://github.com/WordPress/gutenberg/pull/76737) - Properly resolve `getTemplateId` for hybrid themes (https://github.com/WordPress/gutenberg/pull/76532) - Changelog: Add missing label-to-feature mappings (https://github.com/WordPress/gutenberg/pull/76646) - Connectors: Support non-AI provider types and add JS extensibility e2e test (https://github.com/WordPress/gutenberg/pull/76722) - Experimental: Add `template` panel to include the existing template actions (https://github.com/WordPress/gutenberg/pull/76539) - RadioControl: Add `role="radiogroup"` to fieldset (https://github.com/WordPress/gutenberg/pull/76745) - wp-build: Hash transformed CSS for `data-wp-hash` dedupe key (https://github.com/WordPress/gutenberg/pull/76743) - Button: restore specificity of high-contrast mode focus ring (https://github.com/WordPress/gutenberg/pull/76719) - Updating versions in WordPress ahead of 7.0 (https://github.com/WordPress/gutenberg/pull/76723) - Bump the github-actions group across 2 directories with 1 update (https://github.com/WordPress/gutenberg/pull/76681) - Admin UI: Add CSS files to sideEffects array (https://github.com/WordPress/gutenberg/pull/76609) - RTC: Add E2E "stress test" with complex interactions (https://github.com/WordPress/gutenberg/pull/76055) - Connectors: Improve AI plugin button (https://github.com/WordPress/gutenberg/pull/76759) - Login/out block: Add button block class names to the submit button (https://github.com/WordPress/gutenberg/pull/76746) - Commands: Add sections to command palette and introduce Recently used functionality (https://github.com/WordPress/gutenberg/pull/75691) - RTC: Use prepared queries instead of `*_post_meta` functions (https://github.com/WordPress/gutenberg/pull/76779) - Core Abilities: fix sideEffects flag (https://github.com/WordPress/gutenberg/pull/76763) - Site Editor > Patterns: move config to the server (https://github.com/WordPress/gutenberg/pull/76734) - Docs: Remove Puppeteer references and update to Playwright (https://github.com/WordPress/gutenberg/pull/76766) - Site Editor > Templates: move config to the server (https://github.com/WordPress/gutenberg/pull/76622) - Core Data: Remove 'isRawAttribute' internal util (https://github.com/WordPress/gutenberg/pull/76806) - Reset blockEditingModes on RESET_BLOCKS (https://github.com/WordPress/gutenberg/pull/76529) - Refactor: Use null coalescing operator for improved readability (https://github.com/WordPress/gutenberg/pull/76777) - ui/CollapsibleCard: do not animate focus ring (https://github.com/WordPress/gutenberg/pull/76682) - admin-ui / Breadcrumbs: stricter `items[].to` prop types (https://github.com/WordPress/gutenberg/pull/76493) - RTC: Remove stale wp_enable_real_time_collaboration option check (https://github.com/WordPress/gutenberg/pull/76810) - Storybook: Try changing to collapsed folders (https://github.com/WordPress/gutenberg/pull/76361) - @wordpress/dataviews: migrate card layout to @wordpress/ui (https://github.com/WordPress/gutenberg/pull/76282) - RTC: Fix editor freeze when replacing code editor content (https://github.com/WordPress/gutenberg/pull/76815) - Preferences: Hide collaboration options when RTC is not enabled (https://github.com/WordPress/gutenberg/pull/76819) - Cherry-pick: Set milestone on PRs after cherry-picking to release branch (https://github.com/WordPress/gutenberg/pull/76652) - Site Tagline: Fix block error when migrating deprecated textAlign attribute (https://github.com/WordPress/gutenberg/pull/76821) - Commands: Fix unstable `useSelect` return value for `recentlyUsedNames` (https://github.com/WordPress/gutenberg/pull/76822) - `ControlWithError`: Connect validation messages to controls via `aria-describedby` (https://github.com/WordPress/gutenberg/pull/76742) - Block Editor: Deprecate '__unstableSaveReusableBlock' action (https://github.com/WordPress/gutenberg/pull/76807) - Editor: Fix template revisions using 'modified' date field instead of 'date' (https://github.com/WordPress/gutenberg/pull/76760) - UI: Clarify public APIs and component naming, remove NoticeIntent typings (https://github.com/WordPress/gutenberg/pull/76791) - fix(date): Recover WP timezone after third-party moment-timezone reload (https://github.com/WordPress/gutenberg/pull/75831) - Admin UI: Update Page background color (https://github.com/WordPress/gutenberg/pull/76548) - Snackbar: Use surface-width design token for max-width (https://github.com/WordPress/gutenberg/pull/76592) - iAPI Docs: Add client-side navigation compatibility guide (https://github.com/WordPress/gutenberg/pull/76242) - Enhance block registration by using blocks-manifest for improved performance (https://github.com/WordPress/gutenberg/pull/76317) - docs(create-block-interactive-template): document available variants in README (https://github.com/WordPress/gutenberg/pull/76831) - Build: detect version and generate asset.php for vendor scripts (https://github.com/WordPress/gutenberg/pull/76811) - Site Editor > Patterns & Parts: generate sidebar from view config (https://github.com/WordPress/gutenberg/pull/76823) - Interactivity API: mention `client-side-navigation` scaffold variant in getting-started guide (https://github.com/WordPress/gutenberg/pull/76543) - Fields: Add `excerpt` field (https://github.com/WordPress/gutenberg/pull/76829) - Update PHP_CodeSniffer repository link and schema URL (https://github.com/WordPress/gutenberg/pull/76816) - docs: Fix markdown links and PHP code block in client-side navigation compatibility guide (https://github.com/WordPress/gutenberg/pull/76856) - Experimental: Add `revisions` panel (https://github.com/WordPress/gutenberg/pull/76735) - https://github.com/WordPress/gutenberg/pull/76478 Boot: Fix black area below content when sidebar is taller than page c… (https://github.com/WordPress/gutenberg/pull/76764) - Style Book: Fix missing styles for classic themes in stylebook route (https://github.com/WordPress/gutenberg/pull/76843) - UI/Dialog: Expose initialFocus and finalFocus on Dialog.Popup (https://github.com/WordPress/gutenberg/pull/76860) - compose/useDialog: add `stopPropagation()` to Escape handler (https://github.com/WordPress/gutenberg/pull/76861) - RTC: Add e2e block gauntlet (https://github.com/WordPress/gutenberg/pull/76849) - UI: Add AlertDialog primitive (https://github.com/WordPress/gutenberg/pull/76847) - RTC: Fix stuck "Join" link in post list when lock expires (https://github.com/WordPress/gutenberg/pull/76795) - Site Editor: simplify sidebar for Pages & Templates (https://github.com/WordPress/gutenberg/pull/76868) - Site Editor v2: Add missing menu items to navigation leaf more menu (https://github.com/WordPress/gutenberg/pull/76804) - Navigation: Add a shared helper for font sizes in Navigation Link and Navigation Submenu blocks (https://github.com/WordPress/gutenberg/pull/74855) - Reduce specificity of nav link default padding so global styles are applied (https://github.com/WordPress/gutenberg/pull/76876) - Icon: Fix center alignment in the editor for classic themes (https://github.com/WordPress/gutenberg/pull/76878) - RTC: Fix notes not syncing between collaborative editors (https://github.com/WordPress/gutenberg/pull/76873) - List Item: Disable edit as HTML support (https://github.com/WordPress/gutenberg/pull/76897) - Block Library: Show fallback label in MediaControl when filename is empty (https://github.com/WordPress/gutenberg/pull/76888) - Image block media placeholder: remove duotone (https://github.com/WordPress/gutenberg/pull/76721) - Latest Comments: Fix v1 deprecated block missing supports (https://github.com/WordPress/gutenberg/pull/76877) - VIPS: ensure single instance (https://github.com/WordPress/gutenberg/pull/76780) - React vendor script: avoid warning on createRoot (https://github.com/WordPress/gutenberg/pull/76825) - Connectors: Add Akismet as a default connector (https://github.com/WordPress/gutenberg/pull/76828) - Core Data: remove offset param from stableKey, use pagination logic (https://github.com/WordPress/gutenberg/pull/76808) - Button: hide focus outline on :active for click feedback in forced-colors mode (https://github.com/WordPress/gutenberg/pull/76833) - Restore with compaction update (https://github.com/WordPress/gutenberg/pull/76872) - Theme: Change default control cursor to `pointer` (https://github.com/WordPress/gutenberg/pull/76762) - E2E Tests: Enable client-side media processing for site editor image test (https://github.com/WordPress/gutenberg/pull/76648) - ComboboxControl: Fix accessible association of `help` text (https://github.com/WordPress/gutenberg/pull/76761) - Add backport for WP_ALLOW_COLLABORATION (https://github.com/WordPress/gutenberg/pull/76716) - DataForm: Add `compact` configuration option to the `datetime` control (https://github.com/WordPress/gutenberg/pull/76905) - Admin UI: Fix Page Header not rendering with only actions and add stories (https://github.com/WordPress/gutenberg/pull/76695) - Improve JSDoc for abilities API (https://github.com/WordPress/gutenberg/pull/76824) - DOM: Document class wildcard matcher for 'cleanNodeList' (https://github.com/WordPress/gutenberg/pull/76920) - e2e: Add e2e tests for template and template part revisions (https://github.com/WordPress/gutenberg/pull/76923) - react-dom vendor script: remove __esModule flag (https://github.com/WordPress/gutenberg/pull/76925) - Site Editor: Fix unsupported theme flash on direct URL navigation (https://github.com/WordPress/gutenberg/pull/76465) - Icons: Enforce strict name validation in `register` method (https://github.com/WordPress/gutenberg/pull/76079) - ToggleGroupControl: Fix accessible association of `help` text (https://github.com/WordPress/gutenberg/pull/76740) - Connectors: Replace plugin.slug with plugin.file (https://github.com/WordPress/gutenberg/pull/76909) - UI/Dialog: deprioritize close icon for initial focus (https://github.com/WordPress/gutenberg/pull/76910) - Block visibility badge: use canvas iframe for viewport detection (https://github.com/WordPress/gutenberg/pull/76889) - Fields: Add `sticky` field (https://github.com/WordPress/gutenberg/pull/76922) - DOM: Prefer standard `caretPositionFromPoint` over deprecated `caretRangeFromPoint` (https://github.com/WordPress/gutenberg/pull/76921) - Block Supports: Add background gradient support that can combine with background images (https://github.com/WordPress/gutenberg/pull/75859) - Tab Block: Remove anchor from save function (https://github.com/WordPress/gutenberg/pull/76511) - CollapsibleCard: Add HeaderDescription subcomponent (https://github.com/WordPress/gutenberg/pull/76867) - element: Make createInterpolateElement TS/type smart (https://github.com/WordPress/gutenberg/pull/71513) - admin-ui: Update README to clarify purpose and distinguish from ui package (https://github.com/WordPress/gutenberg/pull/76943) - Site Editor > Quick Edit: add form config to endpoint (https://github.com/WordPress/gutenberg/pull/76953) - Fields: Tweak `excerpt` field (https://github.com/WordPress/gutenberg/pull/76903) - Fix: Flaky RichText format e2e test (https://github.com/WordPress/gutenberg/pull/76958) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65556. git-svn-id: https://develop.svn.wordpress.org/trunk@62578 602fd350-edb4-49c9-b593-d223f7449a82 --- package.json | 2 +- .../assets/script-loader-packages.php | 37 +-- .../assets/script-modules-packages.php | 10 +- src/wp-includes/blocks/blocks-json.php | 5 +- src/wp-includes/blocks/group/block.json | 4 +- src/wp-includes/blocks/home-link.php | 47 ++-- src/wp-includes/blocks/list-item/block.json | 1 + src/wp-includes/blocks/loginout.php | 13 ++ src/wp-includes/blocks/navigation-link.php | 48 +--- .../shared/build-css-font-sizes.php | 43 ++++ src/wp-includes/blocks/navigation-submenu.php | 48 +--- src/wp-includes/blocks/page-list.php | 55 ++--- src/wp-includes/build/constants.php | 2 +- .../build/routes/connectors-home/content.js | 218 ++++++++++++------ .../connectors-home/content.min.asset.php | 2 +- .../routes/connectors-home/content.min.js | 2 +- .../build/routes/font-list/content.js | 48 +++- .../routes/font-list/content.min.asset.php | 2 +- .../build/routes/font-list/content.min.js | 6 +- src/wp-includes/theme.json | 1 + 20 files changed, 329 insertions(+), 265 deletions(-) create mode 100644 src/wp-includes/blocks/navigation-link/shared/build-css-font-sizes.php diff --git a/package.json b/package.json index b2d50f1112093..42f3747f991c2 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://develop.svn.wordpress.org/trunk" }, "gutenberg": { - "sha": "3166ad3c587b4091f77b0e16affeed5762e193f1", + "sha": "5426109cdaf45828ef28ff8527d7d38e7e75fe74", "ghcrRepo": "WordPress/gutenberg/gutenberg-wp-develop-build" }, "engines": { diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php index 269bc43203f3d..b5b19945fba47 100644 --- a/src/wp-includes/assets/script-loader-packages.php +++ b/src/wp-includes/assets/script-loader-packages.php @@ -100,7 +100,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '3a14d64019e67a581568' + 'version' => 'bba5c1885d3a53871248' ), 'block-library.js' => array( 'dependencies' => array( @@ -142,7 +142,7 @@ 'import' => 'dynamic' ) ), - 'version' => '5449ab60eb22aaa1f668' + 'version' => '3510fa05eaf8c889edb7' ), 'block-serialization-default-parser.js' => array( 'dependencies' => array( @@ -175,7 +175,7 @@ 'wp-shortcode', 'wp-warning' ), - 'version' => '901495b507ad42be941e' + 'version' => '27318ac6d6f72eaf78ee' ), 'commands.js' => array( 'dependencies' => array( @@ -187,10 +187,11 @@ 'wp-element', 'wp-i18n', 'wp-keyboard-shortcuts', + 'wp-preferences', 'wp-primitives', 'wp-private-apis' ), - 'version' => 'e3d8bba53f4ffea4fcd2' + 'version' => '8b8663311faa33540c1b' ), 'components.js' => array( 'dependencies' => array( @@ -214,7 +215,7 @@ 'wp-rich-text', 'wp-warning' ), - 'version' => '5415b6194c44da6987ba' + 'version' => 'dd1b4bbe0c8bd976151c' ), 'compose.js' => array( 'dependencies' => array( @@ -228,7 +229,7 @@ 'wp-priority-queue', 'wp-undo-manager' ), - 'version' => '81a6b4dad8bafab56102' + 'version' => '2b5a9d090a41c1120be7' ), 'core-commands.js' => array( 'dependencies' => array( @@ -266,7 +267,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '2723b9b8cef3a26eac5e' + 'version' => '96a75292a48d3fca7f42' ), 'customize-widgets.js' => array( 'dependencies' => array( @@ -319,7 +320,7 @@ 'moment', 'wp-deprecated' ), - 'version' => 'c9f8e7dd3232716f34e9' + 'version' => '2faaf49020b2074de156' ), 'deprecated.js' => array( 'dependencies' => array( @@ -331,7 +332,7 @@ 'dependencies' => array( 'wp-deprecated' ), - 'version' => '66a6cf58e0c4cd128af0' + 'version' => '1acdd4ebd6969685a9d3' ), 'dom-ready.js' => array( 'dependencies' => array( @@ -430,7 +431,7 @@ 'import' => 'static' ) ), - 'version' => 'beef8ec9558e9f14f5f5' + 'version' => 'e24eb77015e7b89ec57d' ), 'edit-widgets.js' => array( 'dependencies' => array( @@ -521,7 +522,7 @@ 'import' => 'static' ) ), - 'version' => 'b90a3f5c0a9b0a2fe692' + 'version' => '12f43831b63cbf5fd5e2' ), 'element.js' => array( 'dependencies' => array( @@ -529,7 +530,7 @@ 'react-dom', 'wp-escape-html' ), - 'version' => '9d8168aa5622eac7f17a' + 'version' => '204b9776501c644953b6' ), 'escape-html.js' => array( 'dependencies' => array( @@ -636,7 +637,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '63b8c642509adc7afa30' + 'version' => '02ec6a05ea6e6308bbef' ), 'notices.js' => array( 'dependencies' => array( @@ -644,7 +645,7 @@ 'wp-components', 'wp-data' ), - 'version' => '503ec5a02578aed590d7' + 'version' => '9182f940c250945fb2d4' ), 'nux.js' => array( 'dependencies' => array( @@ -730,7 +731,7 @@ 'dependencies' => array( ), - 'version' => 'ecfdb1e08ae3f6ce27d1' + 'version' => 'd33c33dda9790dfcae63' ), 'react-i18n.js' => array( 'dependencies' => array( @@ -811,7 +812,7 @@ 'dependencies' => array( ), - 'version' => 'a59233ad9478f1a5b0c4' + 'version' => 'c9d9033f75b117821889' ), 'sync.js' => array( 'dependencies' => array( @@ -819,7 +820,7 @@ 'wp-hooks', 'wp-private-apis' ), - 'version' => '25e87dccd85c405f28c7' + 'version' => 'e0666bb035ab660755be' ), 'theme.js' => array( 'dependencies' => array( @@ -827,7 +828,7 @@ 'wp-element', 'wp-private-apis' ), - 'version' => 'd707d5b6847d96124e02' + 'version' => '544f395a4bf1be7a7f82' ), 'token-list.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php index f2fae3d08b764..fec4df88e7927 100644 --- a/src/wp-includes/assets/script-modules-packages.php +++ b/src/wp-includes/assets/script-modules-packages.php @@ -166,7 +166,7 @@ 'import' => 'static' ) ), - 'version' => 'ef4ac69a586a1281a620' + 'version' => '91e28c26a7994ed4332c' ), 'connectors/index.js' => array( 'dependencies' => array( @@ -177,7 +177,7 @@ 'wp-i18n', 'wp-private-apis' ), - 'version' => '70a0f074705f10920f9a' + 'version' => 'e973aa806299e3d70144' ), 'core-abilities/index.js' => array( 'dependencies' => array( @@ -273,7 +273,7 @@ 'wp-private-apis', 'wp-style-engine' ), - 'version' => '184e1479cff9c6206281' + 'version' => '65892b41e8d17dc72ead' ), 'route/index.js' => array( 'dependencies' => array( @@ -300,7 +300,7 @@ 'dependencies' => array( ), - 'version' => '61b86a5f5540ba666280' + 'version' => '21ff0ef0ab8315e42da9' ), 'workflow/index.js' => array( 'dependencies' => array( @@ -321,6 +321,6 @@ 'import' => 'static' ) ), - 'version' => '13556bc597bbf2a8d620' + 'version' => '8d5b553b2fcab74a6606' ) ); \ No newline at end of file diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php index 8843ec707d90a..b96595d7b8d63 100644 --- a/src/wp-includes/blocks/blocks-json.php +++ b/src/wp-includes/blocks/blocks-json.php @@ -2875,8 +2875,10 @@ 'background' => array( 'backgroundImage' => true, 'backgroundSize' => true, + 'gradient' => true, '__experimentalDefaultControls' => array( - 'backgroundImage' => true + 'backgroundImage' => true, + 'gradient' => true ) ), 'color' => array( @@ -3721,6 +3723,7 @@ ), 'supports' => array( 'anchor' => true, + 'html' => false, 'className' => false, 'splitting' => true, '__experimentalBorder' => array( diff --git a/src/wp-includes/blocks/group/block.json b/src/wp-includes/blocks/group/block.json index e83fb60d31fc7..39792cec51295 100644 --- a/src/wp-includes/blocks/group/block.json +++ b/src/wp-includes/blocks/group/block.json @@ -28,8 +28,10 @@ "background": { "backgroundImage": true, "backgroundSize": true, + "gradient": true, "__experimentalDefaultControls": { - "backgroundImage": true + "backgroundImage": true, + "gradient": true } }, "color": { diff --git a/src/wp-includes/blocks/home-link.php b/src/wp-includes/blocks/home-link.php index d61aa0bc235e2..7ae02ed266f0b 100644 --- a/src/wp-includes/blocks/home-link.php +++ b/src/wp-includes/blocks/home-link.php @@ -5,6 +5,8 @@ * @package WordPress */ +require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; + /** * Build an array with CSS classes and inline styles defining the colors * which will be applied to the home link markup in the front-end. @@ -59,36 +61,6 @@ function block_core_home_link_build_css_colors( $context ) { return $colors; } -/** - * Build an array with CSS classes and inline styles defining the font sizes - * which will be applied to the home link markup in the front-end. - * - * @since 6.0.0 - * - * @param array $context Home link block context. - * @return array Font size CSS classes and inline styles. - */ -function block_core_home_link_build_css_font_sizes( $context ) { - // CSS classes. - $font_sizes = array( - 'css_classes' => array(), - 'inline_styles' => '', - ); - - $has_named_font_size = array_key_exists( 'fontSize', $context ); - $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); - - if ( $has_named_font_size ) { - // Add the font size class. - $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); - } elseif ( $has_custom_font_size ) { - // Add the custom font size inline style. - $font_sizes['inline_styles'] = sprintf( 'font-size: %s;', $context['style']['typography']['fontSize'] ); - } - - return $font_sizes; -} - /** * Builds an array with classes and style for the li wrapper * @@ -98,12 +70,21 @@ function block_core_home_link_build_css_font_sizes( $context ) { * @return string The li wrapper attributes. */ function block_core_home_link_build_li_wrapper_attributes( $context ) { - $colors = block_core_home_link_build_css_colors( $context ); - $font_sizes = block_core_home_link_build_css_font_sizes( $context ); - $classes = array_merge( + $colors = block_core_home_link_build_css_colors( $context ); + // The build system prefixes this function with "gutenberg_" to avoid + // collisions with the core version. Until this function is backported to + // core, we need to guard it's use and only call the prefixed name in + // the plugin. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $context ); + } else { + $font_sizes = block_core_shared_navigation_build_css_font_sizes( $context ); + } + $classes = array_merge( $colors['css_classes'], $font_sizes['css_classes'] ); + $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); $classes[] = 'wp-block-navigation-item'; diff --git a/src/wp-includes/blocks/list-item/block.json b/src/wp-includes/blocks/list-item/block.json index 1cdba86f19b2e..cdefd6c232bf3 100644 --- a/src/wp-includes/blocks/list-item/block.json +++ b/src/wp-includes/blocks/list-item/block.json @@ -21,6 +21,7 @@ }, "supports": { "anchor": true, + "html": false, "className": false, "splitting": true, "__experimentalBorder": { diff --git a/src/wp-includes/blocks/loginout.php b/src/wp-includes/blocks/loginout.php index f83d8be424ece..a9e05f8630bfe 100644 --- a/src/wp-includes/blocks/loginout.php +++ b/src/wp-includes/blocks/loginout.php @@ -38,6 +38,19 @@ function render_block_core_loginout( $attributes ) { // Get the form. $contents = wp_login_form( array( 'echo' => false ) ); + + if ( wp_is_block_theme() ) { + $processor = new WP_HTML_Tag_Processor( $contents ); + + while ( $processor->next_tag( 'input' ) ) { + if ( 'submit' === $processor->get_attribute( 'type' ) && 'wp-submit' === $processor->get_attribute( 'name' ) ) { + $processor->add_class( 'wp-block-button__link' ); + $processor->add_class( wp_theme_get_element_class_name( 'button' ) ); + $contents = $processor->get_updated_html(); + break; + } + } + } } $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) ); diff --git a/src/wp-includes/blocks/navigation-link.php b/src/wp-includes/blocks/navigation-link.php index 541f154879467..f92a2ff344e50 100644 --- a/src/wp-includes/blocks/navigation-link.php +++ b/src/wp-includes/blocks/navigation-link.php @@ -7,6 +7,7 @@ require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; +require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; /** * Build an array with CSS classes and inline styles defining the colors @@ -80,43 +81,6 @@ function block_core_navigation_link_build_css_colors( $context, $attributes, $is return $colors; } -/** - * Build an array with CSS classes and inline styles defining the font sizes - * which will be applied to the navigation markup in the front-end. - * - * @since 5.9.0 - * - * @param array $context Navigation block context. - * @return array Font size CSS classes and inline styles. - */ -function block_core_navigation_link_build_css_font_sizes( $context ) { - // CSS classes. - $font_sizes = array( - 'css_classes' => array(), - 'inline_styles' => '', - ); - - $has_named_font_size = array_key_exists( 'fontSize', $context ); - $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); - - if ( $has_named_font_size ) { - // Add the font size class. - $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); - } elseif ( $has_custom_font_size ) { - // Add the custom font size inline style. - $font_sizes['inline_styles'] = sprintf( - 'font-size: %s;', - wp_get_typography_font_size_value( - array( - 'size' => $context['style']['typography']['fontSize'], - ) - ) - ); - } - - return $font_sizes; -} - /** * Decodes a url if it's encoded, returning the same url if not. * @@ -174,7 +138,15 @@ function render_block_core_navigation_link( $attributes, $content, $block ) { return ''; } - $font_sizes = block_core_navigation_link_build_css_font_sizes( $block->context ); + // The build system prefixes this function with "gutenberg_" to avoid + // collisions with the core version. Until this function is backported to + // core, we need to guard its use and only call the prefixed name in + // the plugin. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $block->context ); + } else { + $font_sizes = block_core_shared_navigation_build_css_font_sizes( $block->context ); + } $classes = array_merge( $font_sizes['css_classes'] ); diff --git a/src/wp-includes/blocks/navigation-link/shared/build-css-font-sizes.php b/src/wp-includes/blocks/navigation-link/shared/build-css-font-sizes.php new file mode 100644 index 0000000000000..38fd82d12dac8 --- /dev/null +++ b/src/wp-includes/blocks/navigation-link/shared/build-css-font-sizes.php @@ -0,0 +1,43 @@ +<?php +/** + * Shared helper function for building CSS font sizes in navigation blocks. + * + * @package WordPress + */ + +/** + * Build an array with CSS classes and inline styles defining the font sizes + * which will be applied to the navigation markup in the front-end. + * + * @since 7.1.0 + * + * @param array $context Navigation block context. + * @return array Font size CSS classes and inline styles. + */ +function block_core_shared_navigation_build_css_font_sizes( $context ) { + // CSS classes. + $font_sizes = array( + 'css_classes' => array(), + 'inline_styles' => '', + ); + + $has_named_font_size = array_key_exists( 'fontSize', $context ); + $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); + + if ( $has_named_font_size ) { + // Add the font size class. + $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); + } elseif ( $has_custom_font_size ) { + // Add the custom font size inline style. + $font_sizes['inline_styles'] = sprintf( + 'font-size: %s;', + wp_get_typography_font_size_value( + array( + 'size' => $context['style']['typography']['fontSize'], + ) + ) + ); + } + + return $font_sizes; +} diff --git a/src/wp-includes/blocks/navigation-submenu.php b/src/wp-includes/blocks/navigation-submenu.php index 89cacd3f78655..2677988707836 100644 --- a/src/wp-includes/blocks/navigation-submenu.php +++ b/src/wp-includes/blocks/navigation-submenu.php @@ -7,6 +7,7 @@ require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; +require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; /** * Returns the submenu visibility value with backward compatibility @@ -49,43 +50,6 @@ function block_core_navigation_submenu_get_submenu_visibility( $context ) { return $submenu_visibility ?? 'hover'; } -/** - * Build an array with CSS classes and inline styles defining the font sizes - * which will be applied to the navigation markup in the front-end. - * - * @since 5.9.0 - * - * @param array $context Navigation block context. - * @return array Font size CSS classes and inline styles. - */ -function block_core_navigation_submenu_build_css_font_sizes( $context ) { - // CSS classes. - $font_sizes = array( - 'css_classes' => array(), - 'inline_styles' => '', - ); - - $has_named_font_size = array_key_exists( 'fontSize', $context ); - $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); - - if ( $has_named_font_size ) { - // Add the font size class. - $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); - } elseif ( $has_custom_font_size ) { - // Add the custom font size inline style. - $font_sizes['inline_styles'] = sprintf( - 'font-size: %s;', - wp_get_typography_font_size_value( - array( - 'size' => $context['style']['typography']['fontSize'], - ) - ) - ); - } - - return $font_sizes; -} - /** * Renders the `core/navigation-submenu` block. * @@ -110,7 +74,15 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) { return ''; } - $font_sizes = block_core_navigation_submenu_build_css_font_sizes( $block->context ); + // The build system prefixes this function with "gutenberg_" to avoid + // collisions with the core version. Until this function is backported to + // core, we need to guard its use and only call the prefixed name in + // the plugin. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $block->context ); + } else { + $font_sizes = block_core_shared_navigation_build_css_font_sizes( $block->context ); + } $style_attribute = $font_sizes['inline_styles']; // Render inner blocks first to check if any menu items will actually display. diff --git a/src/wp-includes/blocks/page-list.php b/src/wp-includes/blocks/page-list.php index 348381f32ecfb..685f79331784b 100644 --- a/src/wp-includes/blocks/page-list.php +++ b/src/wp-includes/blocks/page-list.php @@ -5,6 +5,8 @@ * @package WordPress */ +require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; + /** * Returns the submenu visibility value with backward compatibility * for the deprecated openSubmenusOnClick attribute. @@ -123,44 +125,6 @@ function block_core_page_list_build_css_colors( $attributes, $context ) { return $colors; } - -/** - * Build an array with CSS classes and inline styles defining the font sizes - * which will be applied to the pages markup in the front-end when it is a descendant of navigation. - * - * @since 5.8.0 - * - * @param array $context Navigation block context. - * @return array Font size CSS classes and inline styles. - */ -function block_core_page_list_build_css_font_sizes( $context ) { - // CSS classes. - $font_sizes = array( - 'css_classes' => array(), - 'inline_styles' => '', - ); - - $has_named_font_size = array_key_exists( 'fontSize', $context ); - $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); - - if ( $has_named_font_size ) { - // Add the font size class. - $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); - } elseif ( $has_custom_font_size ) { - // Add the custom font size inline style. - $font_sizes['inline_styles'] = sprintf( - 'font-size: %s;', - wp_get_typography_font_size_value( - array( - 'size' => $context['style']['typography']['fontSize'], - ) - ) - ); - } - - return $font_sizes; -} - /** * Outputs Page list markup from an array of pages with nested children. * @@ -342,12 +306,21 @@ function render_block_core_page_list( $attributes, $content, $block ) { } } - $colors = block_core_page_list_build_css_colors( $attributes, $block->context ); - $font_sizes = block_core_page_list_build_css_font_sizes( $block->context ); - $classes = array_merge( + $colors = block_core_page_list_build_css_colors( $attributes, $block->context ); + // The build system prefixes this function with "gutenberg_" to avoid + // collisions with the core version. Until this function is backported to + // core, we need to guard its use and only call the prefixed name in + // the plugin. + if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { + $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $block->context ); + } else { + $font_sizes = block_core_shared_navigation_build_css_font_sizes( $block->context ); + } + $classes = array_merge( $colors['css_classes'], $font_sizes['css_classes'] ); + $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); $css_classes = trim( implode( ' ', $classes ) ); diff --git a/src/wp-includes/build/constants.php b/src/wp-includes/build/constants.php index 878c021e01f8a..01b67a55a9851 100644 --- a/src/wp-includes/build/constants.php +++ b/src/wp-includes/build/constants.php @@ -9,6 +9,6 @@ */ return array( - 'version' => '22.8.0', + 'version' => '22.9.0', 'build_url' => includes_url( 'build/' ), ); diff --git a/src/wp-includes/build/routes/connectors-home/content.js b/src/wp-includes/build/routes/connectors-home/content.js index 83f675a15a8ce..3b3c573df98f7 100644 --- a/src/wp-includes/build/routes/connectors-home/content.js +++ b/src/wp-includes/build/routes/connectors-home/content.js @@ -80,6 +80,13 @@ var require_core_data = __commonJS({ } }); +// package-external:@wordpress/url +var require_url = __commonJS({ + "package-external:@wordpress/url"(exports, module) { + module.exports = window.wp.url; + } +}); + // node_modules/clsx/dist/clsx.mjs function r(e) { var t, f, n = ""; @@ -129,6 +136,21 @@ function useRefWithInit(init, initArg) { return ref; } +// node_modules/@base-ui/utils/esm/warn.js +var set; +if (true) { + set = /* @__PURE__ */ new Set(); +} +function warn(...messages) { + if (true) { + const messageKey = messages.join(" "); + if (!set.has(messageKey)) { + set.add(messageKey); + console.warn(`Base UI: ${messageKey}`); + } + } +} + // node_modules/@base-ui/react/esm/utils/useRenderElement.js var React5 = __toESM(require_react(), 1); @@ -416,6 +438,12 @@ function isSyntheticEvent(event) { var EMPTY_ARRAY = Object.freeze([]); var EMPTY_OBJECT = Object.freeze({}); +// node_modules/@base-ui/react/esm/utils/constants.js +var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; +var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; +var BASE_UI_SWIPE_IGNORE_SELECTOR = `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; +var LEGACY_SWIPE_IGNORE_SELECTOR = `[${LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; + // node_modules/@base-ui/react/esm/utils/useRenderElement.js var import_react = __toESM(require_react(), 1); function useRenderElement(element, componentProps, params = {}) { @@ -468,6 +496,9 @@ var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); function evaluateRenderProp(element, render, props, state) { if (render) { if (typeof render === "function") { + if (true) { + warnIfRenderPropLooksLikeComponent(render); + } return render(props, state); } const mergedProps = mergeProps(props, render.props); @@ -489,7 +520,18 @@ function evaluateRenderProp(element, render, props, state) { return renderTag(element, props); } } - throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage(8)); + throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8)); +} +function warnIfRenderPropLooksLikeComponent(renderFn) { + const functionName = renderFn.name; + if (functionName.length === 0) { + return; + } + const firstCharacterCode = functionName.charCodeAt(0); + if (firstCharacterCode < 65 || firstCharacterCode > 90) { + return; + } + warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); } function renderTag(Tag, props) { if (Tag === "button") { @@ -516,9 +558,9 @@ function useRender(params) { // packages/ui/build-module/badge/badge.mjs var import_element2 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='d16010fae9']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='a407d6dd3d']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "d16010fae9"); + style.setAttribute("data-wp-hash", "a407d6dd3d"); style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#d8d8d8);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}')); document.head.appendChild(style); } @@ -542,9 +584,9 @@ var Badge = (0, import_element2.forwardRef)(function Badge2({ children, intent = // packages/ui/build-module/stack/stack.mjs var import_element3 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='b51ff41489']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "71d20935c2"); + style.setAttribute("data-wp-hash", "b51ff41489"); style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); document.head.appendChild(style); } @@ -646,7 +688,7 @@ function Page({ const classes = clsx_default("admin-ui-page", className); const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ - (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + (title || breadcrumbs || badges || actions) && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( Header, { headingLevel, @@ -675,10 +717,10 @@ import { } from "@wordpress/connectors"; // routes/connectors-home/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='eb296b7e99']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='31ffc51439']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "eb296b7e99"); - style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__actions{align-items:center;display:flex;gap:12px}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); + style.setAttribute("data-wp-hash", "31ffc51439"); + style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); document.head.appendChild(style); } @@ -688,6 +730,7 @@ var import_core_data2 = __toESM(require_core_data()); var import_data2 = __toESM(require_data()); var import_element6 = __toESM(require_element()); var import_i18n3 = __toESM(require_i18n()); +var import_url = __toESM(require_url()); import { speak as speak2 } from "@wordpress/a11y"; // routes/connectors-home/default-connectors.tsx @@ -707,7 +750,7 @@ var import_element4 = __toESM(require_element()); var import_i18n = __toESM(require_i18n()); import { speak } from "@wordpress/a11y"; function useConnectorPlugin({ - pluginSlug, + file: pluginFileFromServer, settingName, connectorName, isInstalled, @@ -719,6 +762,8 @@ function useConnectorPlugin({ const [isBusy, setIsBusy] = (0, import_element4.useState)(false); const [connectedState, setConnectedState] = (0, import_element4.useState)(initialIsConnected); const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element4.useState)(null); + const pluginBasename = pluginFileFromServer?.replace(/\.php$/, ""); + const pluginSlug = pluginBasename?.includes("/") ? pluginBasename.split("/")[0] : pluginBasename; const { derivedPluginStatus, canManagePlugins, @@ -733,7 +778,7 @@ function useConnectorPlugin({ kind: "root", name: "plugin" }); - if (!pluginSlug) { + if (!pluginFileFromServer) { const hasLoaded = store2.hasFinishedResolution( "getEntityRecord", ["root", "site"] @@ -745,15 +790,14 @@ function useConnectorPlugin({ canInstallPlugins: canCreate }; } - const pluginId = `${pluginSlug}/plugin`; const plugin = store2.getEntityRecord( "root", "plugin", - pluginId + pluginBasename ); const hasFinished = store2.hasFinishedResolution( "getEntityRecord", - ["root", "plugin", pluginId] + ["root", "plugin", pluginBasename] ); if (!hasFinished) { return { @@ -784,7 +828,7 @@ function useConnectorPlugin({ canInstallPlugins: canCreate }; }, - [pluginSlug, settingName, isInstalled, isActivated] + [pluginBasename, settingName, isInstalled, isActivated] ); const pluginStatus = pluginStatusOverride ?? derivedPluginStatus; const canActivatePlugins = canManagePlugins; @@ -828,7 +872,7 @@ function useConnectorPlugin({ } }; const activatePlugin = async () => { - if (!pluginSlug) { + if (!pluginFileFromServer) { return; } setIsBusy(true); @@ -836,7 +880,10 @@ function useConnectorPlugin({ await saveEntityRecord( "root", "plugin", - { plugin: `${pluginSlug}/plugin`, status: "active" }, + { + plugin: pluginBasename, + status: "active" + }, { throwOnError: true } ); setPluginStatusOverride("active"); @@ -1035,6 +1082,27 @@ var DefaultConnectorLogo = () => /* @__PURE__ */ React.createElement( } ) ); +var AkismetLogo = () => /* @__PURE__ */ React.createElement( + "svg", + { + width: "40", + height: "40", + viewBox: "0 0 44 44", + fill: "none", + xmlns: "http://www.w3.org/2000/svg", + "aria-hidden": "true" + }, + /* @__PURE__ */ React.createElement("rect", { width: "44", height: "44", fill: "#357B49", rx: "6" }), + /* @__PURE__ */ React.createElement( + "path", + { + fill: "#fff", + fillRule: "evenodd", + d: "m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z", + clipRule: "evenodd" + } + ) +); var GeminiLogo = () => /* @__PURE__ */ React.createElement( "svg", { @@ -1128,7 +1196,8 @@ function getConnectorData() { var CONNECTOR_LOGOS = { google: GeminiLogo, openai: OpenAILogo, - anthropic: ClaudeLogo + anthropic: ClaudeLogo, + akismet: AkismetLogo }; function getConnectorLogo(connectorId, logoUrl) { if (logoUrl) { @@ -1157,17 +1226,17 @@ var ConnectedBadge = () => /* @__PURE__ */ React.createElement( ); var UnavailableActionBadge = () => /* @__PURE__ */ React.createElement(Badge, null, (0, import_i18n2.__)("Not available")); function ApiKeyConnector({ - label, + name, description, - pluginSlug, - settingName, - helpUrl, - icon, - isInstalled, - isActivated, - keySource: initialKeySource, - initialIsConnected + logo, + authentication, + plugin }) { + const auth = authentication?.method === "api_key" ? authentication : void 0; + const settingName = auth?.settingName ?? ""; + const helpUrl = auth?.credentialsUrl ?? void 0; + const pluginFile = plugin?.file?.replace(/\.php$/, ""); + const pluginSlug = pluginFile?.includes("/") ? pluginFile.split("/")[0] : pluginFile; let helpLabel; try { if (helpUrl) { @@ -1190,13 +1259,13 @@ function ApiKeyConnector({ saveApiKey, removeApiKey } = useConnectorPlugin({ - pluginSlug, + file: plugin?.file, settingName, - connectorName: label, - isInstalled, - isActivated, - keySource: initialKeySource, - initialIsConnected + connectorName: name, + isInstalled: plugin?.isInstalled, + isActivated: plugin?.isActivated, + keySource: auth?.keySource, + initialIsConnected: auth?.isConnected }); const isExternallyConfigured = keySource === "env" || keySource === "constant"; const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; @@ -1219,15 +1288,15 @@ function ApiKeyConnector({ ConnectorItem, { className: pluginSlug ? `connector-item--${pluginSlug}` : void 0, - icon, - name: label, + logo, + name, description, actionArea: /* @__PURE__ */ React.createElement(import_components2.__experimentalHStack, { spacing: 3, expanded: false }, isConnected && /* @__PURE__ */ React.createElement(ConnectedBadge, null), showUnavailableBadge && /* @__PURE__ */ React.createElement(UnavailableActionBadge, null), showActionButton && /* @__PURE__ */ React.createElement( import_components2.Button, { ref: actionButtonRef, variant: isExpanded || isConnected ? "tertiary" : "secondary", - size: isExpanded || isConnected ? void 0 : "compact", + size: "compact", onClick: handleActionClick, disabled: pluginStatus === "checking" || isBusy, isBusy @@ -1263,33 +1332,22 @@ function ApiKeyConnector({ } function registerDefaultConnectors() { const connectors = getConnectorData(); - const sanitize = (s) => s.replace(/[^a-z0-9-]/gi, "-"); + const sanitize = (s) => s.replace(/[^a-z0-9-_]/gi, "-"); for (const [connectorId, data] of Object.entries(connectors)) { const { authentication } = data; - if (data.type !== "ai_provider" || authentication.method !== "api_key") { - continue; - } - const connectorName = `${sanitize(data.type)}/${sanitize( - connectorId - )}`; - registerConnector(connectorName, { - label: data.name, + const connectorName = sanitize(connectorId); + const args = { + name: data.name, description: data.description, - icon: getConnectorLogo(connectorId, data.logoUrl), - render: (props) => /* @__PURE__ */ React.createElement( - ApiKeyConnector, - { - ...props, - pluginSlug: data.plugin?.slug, - settingName: authentication.settingName, - helpUrl: authentication.credentialsUrl ?? void 0, - isInstalled: data.plugin?.isInstalled, - isActivated: data.plugin?.isActivated, - keySource: authentication.keySource, - initialIsConnected: authentication.isConnected - } - ) - }); + type: data.type, + logo: getConnectorLogo(connectorId, data.logoUrl), + authentication, + plugin: data.plugin + }; + if (authentication.method === "api_key") { + args.render = ApiKeyConnector; + } + registerConnector(connectorName, args); } } @@ -1466,38 +1524,39 @@ function AiPluginCallout() { const getMessage = () => { if (isJustConnected) { return (0, import_i18n3.__)( - "The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more." + "The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" ); } if (isActiveNoProvider) { return (0, import_i18n3.__)( - "The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more." + "The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>" ); } return (0, import_i18n3.__)( - "The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more." + "The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" ); }; const getPrimaryButtonProps = () => { if (pluginStatus === "not-installed") { return { - label: isBusy ? (0, import_i18n3.__)("Installing\u2026") : (0, import_i18n3.__)("Install AI Experiments"), + label: isBusy ? (0, import_i18n3.__)("Installing\u2026") : (0, import_i18n3.__)("Install the AI plugin"), disabled: isBusy, onClick: isBusy ? void 0 : installPlugin }; } return { - label: isBusy ? (0, import_i18n3.__)("Activating\u2026") : (0, import_i18n3.__)("Activate AI Experiments"), + label: isBusy ? (0, import_i18n3.__)("Activating\u2026") : (0, import_i18n3.__)("Activate the AI plugin"), disabled: isBusy, onClick: isBusy ? void 0 : activatePlugin }; }; return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element6.createInterpolateElement)(getMessage(), { - strong: /* @__PURE__ */ React.createElement("strong", null) - })), /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__actions" }, showInstallActivate ? /* @__PURE__ */ React.createElement( + strong: /* @__PURE__ */ React.createElement("strong", null), + // @ts-ignore children are injected by createInterpolateElement at runtime. + a: /* @__PURE__ */ React.createElement(import_components3.ExternalLink, { href: AI_PLUGIN_URL }) + })), showInstallActivate ? /* @__PURE__ */ React.createElement( import_components3.Button, { - ref: actionButtonRef, variant: "primary", size: "compact", isBusy, @@ -1506,17 +1565,18 @@ function AiPluginCallout() { onClick: getPrimaryButtonProps().onClick }, getPrimaryButtonProps().label - ) : justActivated && /* @__PURE__ */ React.createElement( + ) : /* @__PURE__ */ React.createElement( import_components3.Button, { ref: actionButtonRef, variant: "secondary", size: "compact", - disabled: true, - accessibleWhenDisabled: true + href: (0, import_url.addQueryArgs)("options-general.php", { + page: AI_PLUGIN_SLUG + }) }, - (0, import_i18n3.__)("AI Experiments enabled") - ), /* @__PURE__ */ React.createElement(import_components3.ExternalLink, { href: AI_PLUGIN_URL }, (0, import_i18n3.__)("Learn more")))), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); + (0, import_i18n3.__)("Control features in the AI plugin") + )), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); } // routes/lock-unlock.ts @@ -1540,7 +1600,10 @@ function ConnectorsPage() { }), [] ); - const isEmpty = connectors.length === 0; + const renderableConnectors = connectors.filter( + (connector) => connector.render + ); + const isEmpty = renderableConnectors.length === 0; return /* @__PURE__ */ React.createElement( page_default, { @@ -1573,9 +1636,12 @@ function ConnectorsPage() { { key: connector.slug, slug: connector.slug, - label: connector.label, + name: connector.name, description: connector.description, - icon: connector.icon + type: connector.type, + logo: connector.logo, + authentication: connector.authentication, + plugin: connector.plugin } ); } diff --git a/src/wp-includes/build/routes/connectors-home/content.min.asset.php b/src/wp-includes/build/routes/connectors-home/content.min.asset.php index 65c91308c6e0e..f9d0bc49cbf9c 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.asset.php +++ b/src/wp-includes/build/routes/connectors-home/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-private-apis', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'b6e4888addae6d5fef18'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '1b69c8bd8a9b28336a03'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/connectors-home/content.min.js b/src/wp-includes/build/routes/connectors-home/content.min.js index fdcf39c4346e2..de9f21dd582b2 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.js +++ b/src/wp-includes/build/routes/connectors-home/content.min.js @@ -1 +1 @@ -var jt=Object.create;var qe=Object.defineProperty;var Bt=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var Ht=Object.getPrototypeOf,qt=Object.prototype.hasOwnProperty;var D=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Tt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Rt(t))!qt.call(e,o)&&o!==n&&qe(e,o,{get:()=>t[o],enumerable:!(r=Bt(t,o))||r.enumerable});return e};var s=(e,t,n)=>(n=e!=null?jt(Ht(e)):{},Tt(t||!e||!e.__esModule?qe(n,"default",{value:e,enumerable:!0}):n,e));var k=D((hn,Te)=>{Te.exports=window.wp.i18n});var U=D((bn,Ve)=>{Ve.exports=window.wp.components});var re=D((Pn,Ne)=>{Ne.exports=window.ReactJSXRuntime});var j=D((Ln,Ye)=>{Ye.exports=window.wp.element});var Z=D((Gn,Ce)=>{Ce.exports=window.React});var st=D((or,it)=>{it.exports=window.wp.privateApis});var ae=D((wr,gt)=>{gt.exports=window.wp.data});var ie=D((Lr,mt)=>{mt.exports=window.wp.coreData});function Xe(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=Xe(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function Vt(){for(var e,t,n=0,r="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=Xe(e))&&(r&&(r+=" "),r+=t);return r}var A=Vt;var Se=s(j(),1),Ee=s(re(),1),Ae=(0,Se.forwardRef)(({children:e,className:t,ariaLabel:n,as:r="div",...o},a)=>(0,Ee.jsx)(r,{ref:a,className:A("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...o,children:e}));Ae.displayName="NavigableRegion";var Ze=Ae;var Ke=s(Z(),1),We={};function pe(e,t){let n=Ke.useRef(We);return n.current===We&&(n.current=e(t)),n}function ge(e,...t){let n=new URL("https://base-ui.com/production-error");return n.searchParams.set("code",e.toString()),t.forEach(r=>n.searchParams.append("args[]",r)),`Base UI error #${e}; visit ${n} for the full message.`}var V=s(Z(),1);function me(e,t,n,r){let o=pe(ke).current;return Nt(o,e,t,n,r)&&Ue(o,[e,t,n,r]),o.callback}function Ie(e){let t=pe(ke).current;return Xt(t,e)&&Ue(t,e),t.callback}function ke(){return{callback:null,cleanup:null,refs:[]}}function Nt(e,t,n,r,o){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==o}function Xt(e,t){return e.refs.length!==t.length||e.refs.some((n,r)=>n!==t[r])}function Ue(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let r=Array(t.length).fill(null);for(let o=0;o<t.length;o+=1){let a=t[o];if(a!=null)switch(typeof a){case"function":{let i=a(n);typeof i=="function"&&(r[o]=i);break}case"object":{a.current=n;break}default:}}e.cleanup=()=>{for(let o=0;o<t.length;o+=1){let a=t[o];if(a!=null)switch(typeof a){case"function":{let i=r[o];typeof i=="function"?i():a(null);break}case"object":{a.current=null;break}default:}}}}}}var Fe=s(Z(),1);var Qe=s(Z(),1),Yt=parseInt(Qe.version,10);function Je(e){return Yt>=e}function ve(e){if(!Fe.isValidElement(e))return null;let t=e,n=t.props;return(Je(19)?n?.ref:t.ref)??null}function Q(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function _e(e,t){let n={};for(let r in e){let o=e[r];if(t?.hasOwnProperty(r)){let a=t[r](o);a!=null&&Object.assign(n,a);continue}o===!0?n[`data-${r.toLowerCase()}`]="":o&&(n[`data-${r.toLowerCase()}`]=o.toString())}return n}function $e(e,t){return typeof e=="function"?e(t):e}function et(e,t){return typeof e=="function"?e(t):e}var F={};function C(e,t,n,r,o){let a={...he(e,F)};return t&&(a=J(a,t)),n&&(a=J(a,n)),r&&(a=J(a,r)),o&&(a=J(a,o)),a}function tt(e){if(e.length===0)return F;if(e.length===1)return he(e[0],F);let t={...he(e[0],F)};for(let n=1;n<e.length;n+=1)t=J(t,e[n]);return t}function J(e,t){return nt(t)?t(e):St(e,t)}function St(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case"style":{e[n]=Q(e.style,r);break}case"className":{e[n]=be(e.className,r);break}default:Et(n,r)?e[n]=At(e[n],r):e[n]=r}}return e}function Et(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),o=e.charCodeAt(2);return n===111&&r===110&&o>=65&&o<=90&&(typeof t=="function"||typeof t>"u")}function nt(e){return typeof e=="function"}function he(e,t){return nt(e)?e(t):e??F}function At(e,t){return t?e?n=>{if(Ct(n)){let o=n;Zt(o);let a=t(o);return o.baseUIHandlerPrevented||e?.(o),a}let r=t(n);return e?.(n),r}:t:e}function Zt(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function be(e,t){return t?e?t+" "+e:t:e}function Ct(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Wt=Object.freeze([]),B=Object.freeze({});var Pe=s(Z(),1);function rt(e,t,n={}){let r=t.render,o=Kt(t,n);if(n.enabled===!1)return null;let a=n.state??B;return kt(e,r,o,a)}function Kt(e,t={}){let{className:n,style:r,render:o}=e,{state:a=B,ref:i,props:l,stateAttributesMapping:m,enabled:d=!0}=t,u=d?$e(n,a):void 0,p=d?et(r,a):void 0,x=d?_e(a,m):B,f=d?Q(x,Array.isArray(l)?tt(l):l)??B:B;return typeof document<"u"&&(d?Array.isArray(i)?f.ref=Ie([f.ref,ve(o),...i]):f.ref=me(f.ref,ve(o),i):me(null,null)),d?(u!==void 0&&(f.className=be(f.className,u)),p!==void 0&&(f.style=Q(f.style,p)),f):B}var It=Symbol.for("react.lazy");function kt(e,t,n,r){if(t){if(typeof t=="function")return t(n,r);let o=C(n,t.props);o.ref=n.ref;let a=t;return a?.$$typeof===It&&(a=V.Children.toArray(t)[0]),V.cloneElement(a,o)}if(e&&typeof e=="string")return Ut(e,n);throw new Error(ge(8))}function Ut(e,t){return e==="button"?(0,Pe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Pe.createElement)("img",{alt:"",...t,key:t.key}):V.createElement(e,t)}function oe(e){return rt(e.defaultTagName??"div",e,e)}var at=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='d16010fae9']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","d16010fae9"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#d8d8d8);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}')),document.head.appendChild(e)}var ot={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},we=(0,at.forwardRef)(function({children:t,intent:n="none",render:r,className:o,...a},i){return oe({render:r,defaultTagName:"span",ref:i,props:C(a,{className:A(ot.badge,ot[`is-${n}-intent`],o),children:t})})});var ct=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","71d20935c2"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var Qt={stack:"_19ce0419607e1896__stack"},Jt={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},W=(0,ct.forwardRef)(function({direction:t,gap:n,align:r,justify:o,wrap:a,render:i,...l},m){let d={gap:n&&Jt[n],alignItems:r,justifyContent:o,flexDirection:t,flexWrap:a};return oe({render:i,ref:m,props:C(l,{style:d,className:Qt.stack})})});var lt=s(U(),1),{Fill:dt,Slot:ut}=(0,lt.createSlotFill)("SidebarToggle");var w=s(re(),1);function ft({headingLevel:e=2,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:a,showSidebarToggle:i=!0}){let l=`h${e}`;return(0,w.jsxs)(W,{direction:"column",className:"admin-ui-page__header",render:(0,w.jsx)("header",{}),children:[(0,w.jsxs)(W,{direction:"row",justify:"space-between",gap:"sm",children:[(0,w.jsxs)(W,{direction:"row",gap:"sm",align:"center",justify:"start",children:[i&&(0,w.jsx)(ut,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,w.jsx)(l,{className:"admin-ui-page__header-title",children:r}),t,n]}),(0,w.jsx)(W,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),o&&(0,w.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var _=s(re(),1);function pt({headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,children:a,className:i,actions:l,ariaLabel:m,hasPadding:d=!1,showSidebarToggle:u=!0}){let p=A("admin-ui-page",i);return(0,_.jsxs)(Ze,{className:p,ariaLabel:m??(typeof r=="string"?r:""),children:[(r||t||n)&&(0,_.jsx)(ft,{headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:l,showSidebarToggle:u}),d?(0,_.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}pt.SidebarToggleFill=dt;var Le=pt;var y=s(U()),Ot=s(ae()),Mt=s(j()),X=s(k()),Dt=s(ie());import{privateApis as ln}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='eb296b7e99']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","eb296b7e99"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__actions{align-items:center;display:flex;gap:12px}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var te=s(U()),Oe=s(ie()),de=s(ae()),L=s(j()),h=s(k());import{speak as le}from"@wordpress/a11y";var ce=s(U()),ee=s(j()),xe=s(k());import{__experimentalRegisterConnector as Ft,__experimentalConnectorItem as _t,__experimentalDefaultConnectorSettings as $t}from"@wordpress/connectors";var ye=s(ie()),se=s(ae()),$=s(j()),c=s(k());import{speak as N}from"@wordpress/a11y";function vt({pluginSlug:e,settingName:t,connectorName:n,isInstalled:r,isActivated:o,keySource:a="none",initialIsConnected:i=!1}){let[l,m]=(0,$.useState)(!1),[d,u]=(0,$.useState)(!1),[p,x]=(0,$.useState)(i),[f,G]=(0,$.useState)(null),{derivedPluginStatus:K,canManagePlugins:M,currentApiKey:v,canInstallPlugins:b}=(0,se.useSelect)(O=>{let q=O(ye.store),I=q.getEntityRecord("root","site")?.[t]??"",T=!!q.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:q.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:I,canInstallPlugins:T};let Re=`${e}/plugin`,He=q.getEntityRecord("root","plugin",Re);if(!q.hasFinishedResolution("getEntityRecord",["root","plugin",Re]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:I,canInstallPlugins:T};if(He)return{derivedPluginStatus:He.status==="active"?"active":"inactive",canManagePlugins:!0,currentApiKey:I,canInstallPlugins:T};let fe="not-installed";return o?fe="active":r&&(fe="inactive"),{derivedPluginStatus:fe,canManagePlugins:!1,currentApiKey:I,canInstallPlugins:T}},[e,t,r,o]),g=f??K,z=M,Y=g==="active"&&p||f==="active"&&!!v,{saveEntityRecord:P,invalidateResolution:R}=(0,se.useDispatch)(ye.store),S=async()=>{if(e){u(!0);try{await P("root","plugin",{slug:e,status:"active"},{throwOnError:!0}),G("active"),R("getEntityRecord",["root","site"]),m(!0),N((0,c.sprintf)((0,c.__)("Plugin for %s installed and activated successfully."),n))}catch{N((0,c.sprintf)((0,c.__)("Failed to install plugin for %s."),n),"assertive")}finally{u(!1)}}},E=async()=>{if(e){u(!0);try{await P("root","plugin",{plugin:`${e}/plugin`,status:"active"},{throwOnError:!0}),G("active"),R("getEntityRecord",["root","site"]),m(!0),N((0,c.sprintf)((0,c.__)("Plugin for %s activated successfully."),n))}catch{N((0,c.sprintf)((0,c.__)("Failed to activate plugin for %s."),n),"assertive")}finally{u(!1)}}};return{pluginStatus:g,canInstallPlugins:b,canActivatePlugins:z,isExpanded:l,setIsExpanded:m,isBusy:d,isConnected:Y,currentApiKey:v,keySource:a,handleButtonClick:()=>{if(g==="not-installed"){if(b===!1)return;S()}else if(g==="inactive"){if(z===!1)return;E()}else m(!l)},getButtonLabel:()=>{if(d)return g==="not-installed"?(0,c.__)("Installing\u2026"):(0,c.__)("Activating\u2026");if(l)return(0,c.__)("Cancel");if(Y)return(0,c.__)("Edit");switch(g){case"checking":return(0,c.__)("Checking\u2026");case"not-installed":return(0,c.__)("Install");case"inactive":return(0,c.__)("Activate");case"active":return(0,c.__)("Set up")}},saveApiKey:async O=>{let q=v;try{let T=(await P("root","site",{[t]:O},{throwOnError:!0}))?.[t];if(O&&(T===q||!T))throw new Error("It was not possible to connect to the provider using this key.");x(!0),N((0,c.sprintf)((0,c.__)("%s connected successfully."),n))}catch(ne){throw console.error("Failed to save API key:",ne),ne}},removeApiKey:async()=>{try{await P("root","site",{[t]:""},{throwOnError:!0}),x(!1),N((0,c.sprintf)((0,c.__)("%s disconnected."),n))}catch(O){throw console.error("Failed to remove API key:",O),N((0,c.sprintf)((0,c.__)("Failed to disconnect %s."),n),"assertive"),O}}}}var ht=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),bt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Pt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),wt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));function Ge(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var en={google:wt,openai:ht,anthropic:bt};function tn(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=en[e];return React.createElement(n||Pt,null)}var nn=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,xe.__)("Connected")),rn=()=>React.createElement(we,null,(0,xe.__)("Not available"));function on({label:e,description:t,pluginSlug:n,settingName:r,helpUrl:o,icon:a,isInstalled:i,isActivated:l,keySource:m,initialIsConnected:d}){let u;try{o&&(u=new URL(o).hostname)}catch{}let{pluginStatus:p,canInstallPlugins:x,canActivatePlugins:f,isExpanded:G,setIsExpanded:K,isBusy:M,isConnected:v,currentApiKey:b,keySource:g,handleButtonClick:z,getButtonLabel:Y,saveApiKey:P,removeApiKey:R}=vt({pluginSlug:n,settingName:r,connectorName:e,isInstalled:i,isActivated:l,keySource:m,initialIsConnected:d}),S=g==="env"||g==="constant",E=p==="not-installed"&&x===!1||p==="inactive"&&f===!1,je=!E,ue=(0,ee.useRef)(null),H=(0,ee.useRef)(!1);(0,ee.useEffect)(()=>{H.current&&!M&&(H.current=!1,ue.current?.focus())},[M,G,v]);let Be=()=>{(p==="not-installed"||p==="inactive")&&(H.current=!0),z()};return React.createElement(_t,{className:n?`connector-item--${n}`:void 0,icon:a,name:e,description:t,actionArea:React.createElement(ce.__experimentalHStack,{spacing:3,expanded:!1},v&&React.createElement(nn,null),E&&React.createElement(rn,null),je&&React.createElement(ce.Button,{ref:ue,variant:G||v?"tertiary":"secondary",size:G||v?void 0:"compact",onClick:Be,disabled:p==="checking"||M,isBusy:M},Y()))},G&&p==="active"&&React.createElement($t,{key:v?"connected":"setup",initialValue:S?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":b,helpUrl:o,helpLabel:u,readOnly:v||S,keySource:g,onRemove:S?void 0:async()=>{H.current=!0;try{await R()}catch{H.current=!1}},onSave:async O=>{await P(O),H.current=!0,K(!1)}}))}function Lt(){let e=Ge(),t=n=>n.replace(/[^a-z0-9-]/gi,"-");for(let[n,r]of Object.entries(e)){let{authentication:o}=r;if(r.type!=="ai_provider"||o.method!=="api_key")continue;let a=`${t(r.type)}/${t(n)}`;Ft(a,{label:r.name,description:r.description,icon:tn(n,r.logoUrl),render:i=>React.createElement(on,{...i,pluginSlug:r.plugin?.slug,settingName:o.settingName,helpUrl:o.credentialsUrl??void 0,isInstalled:r.plugin?.isInstalled,isActivated:r.plugin?.isActivated,keySource:o.keySource,initialIsConnected:o.isConnected})})}}function yt(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAAD4CAYAAADB0SsLAACAAElEQVR4XuzdB7hlRZEH8D73zRBniJLDzBAEVFQMKCaCWXENa1oTYM45hwXEtOa0ZgVzWnPOBHPWVcxgzjnrGvb/O91n5s5lZnjAe4Bw6vvqO3XPPed0rO6q6urqUkYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUaYD3RdtxY9/XuEEUb4F4aBoWdxhBFG+BeHxsxg0+BmwSXBrYPbBTfOI3Dz4NKZV0cYYYTFhMlkskGcm5tbC6f/m5mtlwavGLxacKt8+k7BY4N7B/cLHhbceTrtaRi+A2bTX7JkSY9Lly4tG220UY8jjDDCmcAsM8/iLHOfCYObtS8bPCi4ZfCIJPHw4J6lMvlVgzuslYEpmP7WbPoDc08z+MYbEwpGGGGEdcIUo24V3CG4WXB5o103R4fBtgpuFkRvm3ubBrcPXiTMuElw+66K4uhdgrt3VUx33Se4PMltF1wRREOMTmTfrNHL2/s7BLfMtzdq+dgmaW4UBt8+zH2RYHh7o+2C24fBl45MPsKFGsx8U4w8O+MO918U/FnwLsGH5f5Pcz0ueJT7YbAXB68f/HnwncGr5pmfBD/Z1Rn79OA3ggcEP5N3fpzrFYLvDqKvkaycEPxx8BbBxwd/Erxv8F6NflKeu0lL+1W5HtzS/lDKcLlcfxLm/lLw0mHq0zbZZJOf5rqPmVwZlWWEES5UQJwddNdp0RozTGPuvTb4z+B9MXbu/SPXpwbv6n7efV3wxo3+SPDQPPPP4Le6ysi/C/46ePk8813Phb5K8FPtuesnO28K/jNIbH9Wox8RfEijn5fnbtWef2fwmi1Pn096Vwz+I+X4Ucp0uTD1bzbddNN/ht5vGMC6kcFHuDCBma3prBuHCTYJg4QPJht1VQyeBKfp/YJmZeL1KnSe3TO4W967Wt6/WK475nrl4KVCbx28XJ7bv6u6tpkbbtHumdXd913PbVOqHn75UkX13RvN4LYjOs+sCBL56e/7JO1tglcJXiq4ZdK7StK+fHDLlOmg4JVCL8/9jfO/ciwp1VK/SamWela4gR5hhH9tMEPDaWNUcJsw+qeDX8l/FwsjvC2McGoQc704+OXQ1w4eG/x88NbBu6Pz7IOCN897X8w3n5ZvHZDvvCLX/8zvTlrDzDkfPDNoz+2bb94r12sEr9TyQbowaHw2ab4vaNY+JfhJ94Nme2U6KJ95WfDLwesGn9ToO86kMe88jTDC+QKGDovh4MDowR2iqxJ/idaXy3+no/Psobme0uj/yPWVjX5g8AnoPPtszIbOd94ZvFrE4q9E7315mHzO9+fL5GcGU8/K49OCBprrlZqnrwWv1OhfJs0Dg3/xO1ez/XfRQXr+xxp9y+DrG82KP8II/5owy0wzDM76fI3gdXOPZZoYfr2uOqBcIa/TjYnIl87vfwvuEbxYoy+e5/fMezcMQxONt8v1KpnFLxWcLOQ69FT+ifX7BnfuqjX9Bl1VF1juD09erhFkVb9O8Lru5//Duqrjs8QbCAwMuwUvU2r5LjqV1AgjnH9hihFW/27XywQ/GDw+nX6fMOP7g28JE+yR6+uC7wi9V/573qSKtEReDLRvXqc3n2GggNODxSD2L5aTyWzasygv68Lh/wZPDb6j1PX2Bzf634J3Dn6wXW/caA44PQzvD+mMMML5Da5Vqgj7veAV0WFCIuwBYc5eRE/HZeH+YXuOjnux0Ga/nWaZaejomHuawReLuQeYzcNsfoY8zTJ4A5z5pVLF8lsF39zoBwSf0eint9/o99TXRhjhfA6YNJfb5nqjdPrtgrcOI9wiuG3wdsE7BTmi3Cx4Z88Ht+qqKMx3fPaT/4qAwc3OdwnuFbx68K7BSwYvGzyyVMs9l1m0/0cY4XwFNwy+vNROzGqMfmhwn+DzgkeHWVeEwZ87qcaqLaZnu2HGm8WzA9Oz5/R31kcPvwfw/rruLxIwuj0/eJMgAyP69qUyvDq0Hq8O0U8pdbltLVhMyWWEEQZ4bKni5f+U6jCC/mTw2o3+QddEdBgm2nl9DA7OBcY6v8BLSq2TZwYf1GgiPFEe/flSZ3T0r4LLvDSoJwNSU0YYYTHhysFHBm8QvHipS0A6KSeSxwTvE6bdNddjgo/oquPJWoys016QYT2D1+Glusdep1TJB81llpFRHd62VOebhwXvHrRpZrXOf27ZIEa48IClK3qkjRjEcmvTDGkHBh9VqmWYkQx9ZH1l3TDfWXp9IvN63t++VAeSm5Wa12NKzQtbgBmSpIFhMMvjSl2qunWjDyiV4dCHBA8uleGIzxcpVRrxzFowSCDrgvXdnwdcotR8367U/KI5+rBNPC7fPSYMbpPL7cLYd2uOQz3DjzDCOQEd3Hout84TShUd6YZ0xVkR/Yv1lTUwzNrrYc6FgP2Dny1VzLXe3KsEwcsFf9doS1XfCP6j1AHJ0pT79ogTmf8ePK7UwcH915VqACNGW85aLyxg2ejhsyL6T7vq6deXKcy8f5j6pE033fSrYfCLmskHS/4II5xdGLZW8qUmSjIKEcuJmK8olUno2oOBqIeh029otlsgMIPfo1T1gD/5k4P/Fdyl1PVlTLqy1CWp/y6Vce8QfG6pUsi/l2oUNFsLAoE2w29bahkNGgsK6xkQBkMlMZ2R7YTgf3V1m+szU4dPCYPvFLxjGPu+uVqVWMueMcII8wE9Rae3rLOqVLdLsxjGMCuarV0XC8xe0iOyWlIygPB00+mJ4oeWyryYlHcYRqS33jCdfMtcbx68aegt3CuV8bcO8nO/TakDAi+62wQNXNJwn5pBD3bfrOm/I0stP3FfntSLAU+euLDauOKZO4R23wBoVcHz5xiadGD14XbB/5irnnP/Eea+Q64XsfyY+3fLM7u1Z2c/McIIZxAzWb6+XqpYiFne1ej7lDq7oc1+iwU8vqTB+8tMTHx+TqmztPtvK1XMJm5/IXi1dv/npTJrL86mPGbe37bf3Ea/1u7Tud/X7hOLbXRBm+3/s9FmUrow+pRSZ3fpnV6qtOL+H/MtA92QnkHoR+05g9Q5htYuBp4+jTD0AWHovzVaOKre9z3X6w9tODL5CGvBdMeY6hyDm6XObI80mrhqVqe/mqV6GN5xXSBRnGHs7aXq/WbEt5bKbGZutIGG3v2WUq31DID2dxt0VgRfXarqwAf8Bf5L3jxjR5fBgbOJMtnNZnAgCbjPsGbGRyufVQK0lQLSBPppeWfP4JuDx3d1nf9Vwf9xv9SBSB4x5VmGaVF7qk12Db43/705TL1H8JXBtwf3zr1nd3W/uu2x62rHES7MMHSorsYvu2ZXN3YQec1GGMymiUuXKgqvnHp1IQDD0uUFRJSeWVl6VAGDCesxhmWxX1mqVZuOjJHAwaUyHkeQQ4IHdjViKoOaAA8bdzXo4qHBTXOPjzy3WKK7TSzKy6Nuj/y+VlfFXGkS5cVss3nEzM1X3juet1dc+KerT+r+cOGiRHs5LLh5V7eV+haVgE6tTMR1hsobBQ0O82bA4VntBMPUS+fqJhcbXOxLt/nlepO60UVZb9xVnX3eaYxwAQVLLHPNvzsdxM6pX5Qq7mE8Vmli4U1LnbnQROaFAmrAD0r9rln0w6WKtjdP+sN20fsHe2eaXPlv03s9/4ZSBwD3P93Vvdfu/zC0wQj9f6EvGSS29+JzcPANx8CD2kEyMPN7hnhu7RnNsv4f7ZkPlDVWbdtFe7E8dfbb1N2l+dn7PVe3wH6/vW8g+kR7h5pjpQH98K4xrHqfdlxZH3h+aKfgdhtvvHGfXt65Qn6fjs73rpPnTkbnehfvDOmMcCEEwQEHRwmdKx3FTETU+2yudNeXlbrkpaNaEvvfUg1ZPeg8CwBvDH66VJH52UEhlQ4OPjJ5+EyuDGW37yoT37OreqZnHt3VKC1ooZVEakG/MbgyeFLwg/nGykkNKuG/iwZPaGl4l3X60/nfrHz/dp//PMOZ9B7c1YHuU8Gnhr6U+6FfkXeIxp9Knb07uGrp0qUnpQ4/HnqvoDzIuy2vVht865Cg0FPu3xbTDQw+MPlArw+mvNe2Tpt9IvjV/L543nlTvvXloNmbuP7ZIGPj6ll/ZPILGWDuhkvSUQ5Ip7l0OstmwUunMxwYXJYOQty0AYQ/pB6i982bq3WwBt4jRhO7fcsVQ6PttSY2C9dEdL3spEZS3SV4mUn1Xb9IkGHJdVlQHncKinluhqYDA9FULhrsgqLFQExz0eAlQ4sRtYf352pYpV2DB4QWqdWGGOltHbRP/TK5L4KqjS/S3j3oHXqu0FG+JVSUaC6CTeyfOrxUrsRn4aSUw7sGgsvP1b3vK3O9Yq7b57rLXA0UsWve2d5MHNx72AK7Phj+D05auiLZTFp+klx38eCVJrWuVoW+wmTKPXiECwFMMTfcWbDAXP8RRr9sOk5vkU2nob/qLFfv6tLPmcLQiQbs1uiAK0oVTX2bB9mPct9vrq1f9p+OGHw/Ou/eMOkfj04HvmfwGHTuPSn/sXh7nlGr35Ka6ylBa9nob+W5SwT/lPd+h9ly7UXmSWVgszH66vmvD7o4qUtP/fbNXB8SNJujbZCxJCa9t4em16OFbbpUe/dHZtHU3e9Fqgl9qdTht9r7dOOTGn2T4Ksafc/ctzKA/q+800epyXtvxbwkqpk2KtMwMPmSNqPPrb0OztovX7cJUjHQx3rGs6Nb6wUc0glncdugkL/fTuPrqJ9KRxAa2F5tgQb76CVTzLpOGDrb0OFcW4dzNUDQrz8QevdcPx78elcNW+/r6p5xMyzR93t59xrpwE9Mxxax9DbB+yRfGOlhwZtOapTUZ4QW9PAHwf9JmvsHvx8UG22vvPP14FeCewQ/EfTcfvn/rZ4LfcXg8/PdH+a/64d+VO5/L/Sdg3d0P/eOC17LfcyS62W9G/pdue4T/G5Qfe2Z508Nnp539wmenHveF1r5da1M1879ZylHrrcLPlTeXYNHpKw/zn8vnmXu6baaBv8tmWHw1kbE9Z/k3k1yNSCqk/svnRk4RrgAwtDIraH7WVnHCb1f8OIbV3F9WToNy2wv902q6LdB2c7frZP1hwFMqhjtN9GXWKsjEkUxt2fpyHu1DrnbpIrV7u8U3DfPTZbWAwX2TX42ynULdHB5/tskKELMRZZUERW9k7LlundwBTqI6aDyuuc/z+y8tDJhF9wGnf/ncl2WK3rTliYXUOl2eeeiwe2UsTH2zgOd+6vad/du70jboEJ0ByuCF8/vTYPySZQXhVX5hJraMbhVkKFuRXAT17TFTsFNguhdg5MNMab6a4OpqK4izCrDnsHLJf0dllafdfVxEd9RLyNcgGBgQh0wjXuJzTff/J9m7jT2PhHRf77ZZpv9tnWm1eJfY9rZT60Fw8zeGPrf8x0i4at0/txnpPO/JTdWbzMf77PPBL9vBs+zH096f8x9NoA3h/5T8ned5OM5y5Ytk8c7Bh8W/L/cPy7/39ozwRcHD8tzf87994W+TPAPob8Y3DfP/yz44/x/0eBXQ/vuJfPMibmir5r7r5RGrjfJ/0+QRvDewbu3tJ+a566f//+a914XPDB5/EOuH871Yrn/x/z/jSV1ADBL/8z93Pt8/pPHKwTfpXy5d3juvaR9987BY6WXe653bvePz2/qyZ/znfekXa6inVJHn8h12RZbbNFtvfXW6xWjWhtMt/NLg38J3j/4qKaKvSB0/7/nRrgAAUbUqDphGvivaejTghj81+lg/5frqnSyszW6N0bnIPL7XF+dNPbG7KEFecDg7w5y1LDTi+eZ00VW5ven2qDAQEUH/XPwOsnDfyc/f0+HxOAP1dFz7zHBW+e5v+SZ4zG4d3PvA43BlYmovE/K83sDV+i98v63vJ//L5HfH27PXTnffk1L40Z55om+FRqD38P9XJ+W567nft55w5IaA13+PpZ63BdThj5trsaWI8b/Iv/vl3tf8E7oA0O/W37znesHj2/fvVPwuDbIPjpp3jmI2V+c3zfwbr75pm233dZ6Ouv4u8PYy5YvXz4JkjzWqvtpwOD+14bBl+d76udBwUdKI9cX+n8YvOEIFxBIZ7EMVk2uc3MXx4StI+yajrAinW8uOPvafIA12/c5yoiCyvKuE7EWO99LpyO6C6roOYcZENPRLLx763Bz9ZwxIrrnic/EcqLm8iDG2WJJtfQTf1meged3XVqtymhLVsq0dzr0UL6VS9eIz7vkmYHe1v383wU3a7SDxojsewc395x6WrJmU4e8DiK6mXsQ0VnqIXrPuWZdD+yeq7omolMPpkV0EsX2GzURXRtsWeEyO+6448X33nvvXXbdddfL7rDDDpcIbp4ZfKuUact8S/vNtsFqaGWGxH9l3Trv7L60ShS84Bw6YbVgUKVmPzHCvwJgoCngcnla8I1pUC6bX83/p6ShN9IZzNzzZe6Z73Lx/Gap2yyl4bvWpVeG/mKuzvTipfaRUoMK8u5iWf7frsZh4275rUk16L1kUq3gTi55XDrjd4O3SP7uGSQCPyj//XueOT30U5dUI9u3g68JMrJ9K9cPYrA8/6XgF/P+qlw/vFE1gBkA3pDnTltSZ+Nn5t53gtcKPiTPSO+I3Bc/ThoPDx7imfx+TtK9RPL7zeAbQhvIHNIgWuyqXD8e/EJotgXl/HresZzHcCi9w4JPaWW6VfABrUwPDDoe6bQ894S0wWG5vi//PWqPPfa4Yhj6HsH7hcF53X0k+Ml81+DWq1Hrg4HJl9aBzGD08HxXOVjUbx36By1v40x+AYHBC+ujpe7I+nPwO2lY67Z9Jzib4LA+37UFUxo2hfDDlsZfSnUeMXN7hpcZ495PvdPVo4GGZTLM8F50rg4VfBE617sG+YGjn5j/jmjPvDp4zUZ/ODh4lp0+V2dPevMfl1T9+IftfZb6YZmMiym7wLCExZEHfb9gv2yV/5/Z1fjmaM4ydpcpx6fy23KfTSynRqTm0vqtMNQ/w6DW+DkH/WVSl+747Hv/8CDfeGncJSi4hPuPDfLtVwf0496RJ3k/ZtWqVZblMOq9d9llF8clSfunKQ9j5Jnq0NrUIOC5vMsHX3qW/npvwK76tq9mcDjCvy5QrK3d2nwBdMqViG4Dy1/zALHCbK8cwNKXGbunG3PrPOhBLEdzcEG7x88bzQ+cUwk1giOLdWuWeGeCcRzhjMLxhTsoxxMqh3PGOJMs9cxcXQNnXefMgil6m8Nc3YHV52NSHV04w+wYxPREXtZnNKu/b3Ga6QNE5vtm7kG96B1r0PnuJTF0ROdNw+QXD+6PjjRk7Z1PgeOGe0eXSRWHV0yqE5FDE5SPEwqVwYrAQXnvotG7t4u+fdUVK1Zc/sADD7xYmPzKwcuvXLlyh4juB3kuuJH8tzJMVf0Zwf8NV03qkicnHSsXh6YM6kddL2l4pt8b4TwGHW8KbBSx/nx0qQz9mlJFaWAP87xh5rtmbSK3/dP2SfPTFgrJrM1Z5dhS90vbjvncvOsc7/el81APeHdx5Xx/V0X3F3XVrdQSGtfRU7p6OCAf9A8Hr593uHYST4VXvm67/6iubvrw/LPyP1fVk7vqALMy+J7gu4J2YTlL7ORJ9ez67/YckfdRk+okc1Dwjo3m4umklZO66s9tgwiV4phSB68PBZ9tFu3qmvMTdtppJ3r4HYP32X777TGQ3WZcWA18T/N+VzeBiEkn7zbz3LGrIvedgjbbeOZhGTCunPffmm89EpNnkHgk9SHfNSC+Jfi2fJc9g5eeQcsgVzYE/p/GfOMWwY+F/q/gYcHPTep5awakM5UMRjj/AP2YWPfaUiOSfC5oEwfgXXZ2AxI8s9TvCo98VKkbRGyRPLjdJ2oTYYmBHFrsDvtns6qbrf7a/jNjswt4xwaRE9t9Hb73ZAt9j+Ax6EllnKFMNm70m02CzgS3E83zorhyi3X/r6ENOj9r//ElJz6jr1LqVlO0M8AdQIA2sNiKiqZ2GCR9y8YU+8ypIP+bvBgwPfMmBrHQGOOe2223HWmEDt5b0UvdR/73rpbJAOsdwRl6T7bg40MbHOX1FfmGlQhlfUukAd6EnIPevPnmm5O+nIVOxCcJOAPt0EmVcCS/QZhibni/UvNhABS3XXrfwOCYm2i/8QbW3Ec4/4CoJWZYMw/QSUQ4PaewMohBlpfqT07/ZTwDBhJr3QBD2OChUxFT+ZzraDZ6XBldKmMbGID901xjHb3LWGXLpeN7DQR2f60Kbh/E2NxoSQC2ctKNqQqeF6WFlMAecGhXfdylZYsoK78Z2ekp6D1DH9KesWXUu3zwWRsx1+CiSxde2Wi73pyRRkQ/eKuttrrirrvuuv0222xzYKN3yEB2UBjl6mESPvXqw2YWZ6/Jsx1fVhGkTRqxxEbKYHe4VN7hQ3696N1XiEi+XdK4dvCq+eZWuX+Dhr5LbfEs0bplbcPQ1XaADJo8Aq/SBot/z/VaSWcJ5macw+AMryOc/wCT2OLI2GNWMxPesVSR/DFTz50p6AxTIAADSWDYI/7CUju+2UtABfuczdTuC2uESRjKHtlVeGHwGa2DMV4dH9SDqAwvL1Wk5wNOwpD3I7tqgcf8RFoBHGwjxYRokUZtWEH/Z1cZhq83kdggJkKLvOyY/54efEVX93nbDopemSsRXNrEezPny7o6GCjjS4M36qo7LVrwB3vR0UR74Z9Z/Y+L+CxG2n3CJA/IDG4ftjK/IPekQcp5ZX4bXH1DHg8tdQuuvDvZ5TDPBO/aBgT5eGTe78JokzAazz4edWutXw84X+jq4Opqw8vjg06aoZ5YWXhivu845ncnvdfmuiUmPwfG1xEWCXQWFlOd6IhSLb3TkUZfPzyowc8CiK7iffuaHx0kZhNlndDhPnHWMhkRlh6OMdwngpMkiIH2Z1tPdh+amb/XaDM5ewFagASMh753njEIoA0QgwWYPjqIz1SPIYQSC/0gokN68K8bjclObbTB6R2NFiCh32xSqn3hno2mdgxqALXD7I+mdhhQerUjaBecaK2nRpQ2ONlS+tOUl2QxlImILkor+m7BJzaaqC4MlRUHzE9k/k2QjrxaHx6WuzD5wNRnhbl9Z4rBDZREcqsS/WaaXG091Xf+2ZyCth2W2UY4fwFmYg3eps0g9m/r/ERYoY/6pRdwFhkc8+oMgDRgABmsMVfrqp4NMMQQqggDCsQAHLtLPJWupSczGKBCkDj0VnkT7JDoTbwXiGFFVw1iZnQMujLXo4KeZUM4MnjdUoMuouVxy1IjovquLa83KfWctM1yvWapARjdl4Y6Qa9o70qb6uEdhj+VhCYtAPk+WDnaDHh46jnkhJRxo2XLlhGfGeluGeYQQIOqwBipfujNR5Qa0UVZlMmecX4Jt/fd4KpSDZb/Lg2I0RYCWp4hEd1aOBHdPoC7B29OXE9Z7h48Knnn+LPBtfYRziXQcFOgsxNTWYOJz2Y/nX1eMPOtB5b6LQYlIuwjShWlGdDMQnaZYZojg/ZGG+69Iw8APaT9kOC9G83I86hGE+dJBAYgDh+P7apF/fBSDyIws9N7Hx+kR5tFn5ArxpQvMyDR1/LfE0pVJTDTMaWuHmB8+fBd+SUBPKarujy1wnMs4gxi8oTBfEtZ3ROmyTq8QQmn+SbGnAseE8a4X5iAzeBBwYeEKTyPQY9OfcjHkaWmh6kNFMpEmjJb9mUq1YahHAaCRYXG4NNoKfLpwQckv/sGn57yHJfrMrP+IEGMcP4BDEn0E0nE7E3cIzKfHRjEWYYsVmtiOaagV7oPzOSnlLo01u/JLtVjbWWpZ2qJAmNQcJ8YiuGI8X5jpO+jG+N+tNEGk94ppFQ1gO0AzXpvQEC/tauRUdF820kK6J93dXZEQ4OcOkAbLL7aaBLAOxttMBxEdOKyAQMtwowZGE1E37/RvNkGFeSPYY6VpZVpUh1gqB2s4kR0W2P/VuoAQT3qreilMrTVB6L6oBJQGRYdZhjcQClPXw0z9yJ66D9N6lr97IA/wvkAdEgzIlGZWPnYUkXdHs5igzHOmckcJIDJ6afE85WlDh6ilJi1b1aqYQxgjkMafUSp+QB3KFUMBZjUt4DvPLjUI5EsVwn4L71rlTWRTDEvQ9ohpZaJocxAQ7Q9OnhE/jNYuM8LjZpCYvBdAwqmVQ4zuPSk4b68eYbxTDoGE0BMx3QGB7O2+4e0/xgC6bCcQh4UvEuQRf5ewfuFVg5lFe5JXbFRGBDlj2QjbQOFEM6McaQTA5K8q8cezmI7nWUYGLyrjkXDDE5cf0zwYZMaPHLR8zHCemCm4hlwdBy6Nr0S82D0swo6M2bAHJgME5ltzMCYDHNoeLqvNC1HyQidk1gN6LFmStAvYbWOQgc3Mw/P+BYwC2N8yp48c2bBfNK7a6lMjKmJvWZEM6Q80qUxDUYk+hKH0b7rfYMIcZw+TvS19oxmwDMIodkVjipV515Zms5eaoRWxsRhSRGNCUHv3KNMYYKjgjdvjMJ2QHQ34MnPHUJTO9QBpxZ1KD15Mvv7Hiu+pUNlUr5BtZlt30WBgcmnmF0Iqwd01flG3VJ39AX1OcK5CTMdgPhMxHtUqbP3/5VqkT2rQH8cxFnr3KKqEj110t5vu5zRio4p3Gdx9s6fgu9O/uiy7ltP3SUXQQn91lmIpmidiDiLNih8pNEGDyK65+jt7AjuP6tMieilDg5oIjrmQf+srLF2QzOzMvmWwe8r7f7BZY2IznL99EYbJAYR3T2iPNqz+6BTtm91TUS3xzr0yvYMml3gh42WHhFd2qQFji5oZaB/e8fVIGpvwFtKg3ODwcEMg/d1mOtvuqkjn0u1dYxwbsJMByASnlBqJzILHF+qcaeHs9BZrEvbdMF9dM9SR+8XdHWGOSL4nK46a9DVdH4xyHX6pwZtkiAae/+2G220kW8RZ2+y2Wabmel9ywAE6NR0XrMd8dUS29aldnS2A7O2gcP6OlGWNd6aOkY0iLy41FnRLIj2be94BsOQJujP1tvNwu69sN0fysQf3uz9vFIZ1yBmADHQWAVQPmlt2t4nfbA4yff98i5ruR1mNovwY39qrpbxOLQcXeqApz4MGGgDgjI9t1SjGhVE2sqGmZTbwNLDWWizcwzSaihIhzX7Z3V1oJJX9UZiG+HchJkOoMPQ3zCljo52bz5AjLRsBOmMOpylIDT9kJhufze90TIX0Zb4fmhQZ6Zzes4sDdDyAGymsMRlhhC8QEcGmNYgAYjdOjvAsAYoTGX92gytc2EODEbPN+sTgZWPWE7cP6RUyQBtkKNDe97SFakE8xoclNWM7D6a6E+94L0m/yza7lNVzGbyMYD6AMpnw4k24F1niRBNbOdJ5xnlmy4TT7Y+amypaVg+k961Uy+WAQ0EpBZ10UP7zrkCbfZ2pX5x+uFFuE1QP2BvUIfnap5GWBuIfkQps6HZA/3K4c8zaZhBlCY6YpoflSqWY4RPt/8wGjWAGGkmZwF2n95P3PxdqbMR5hrEWaIxUfUTpTKl+57DlKzpfptdv91ozHZSo6V3QqnWZ0azYxttVh3E5zeXqk/L62fKmrPJ5J9o7D5VxYz88/bfFUq16ruP0d7e7rMk+/YfSl3CM+u6Txrx3Z+W6qSiTO6fWuoAJI3fpn4FhHCfeMs1d1A7MPegdhjQXl5qPd+u1OU5ao6ykcA888bS4EzabEFhSky3Q4/ziyW/YcWgVzvkZ8ARzn0gCr+v1NlWZz2lVFG0B423ATAbv7ehGfK1pW76wHBEZ0zH4EW8lobZkFHM0huR04yPoTGiAeLdperoBg6DwtNKnV3tp35tV4/84SpqmcvsT+TFaBj/P0vd1CFthsIPlbq8hCFOLJW5zXTK51ki9MmliuMYWV7ZHpTDdyw7Eb+HMmFQ4rLvmi2PafQhpRq/5F0dKhP6iPaO5a0HlFqm95Sa3opS6+M1XZ2Nlcc7JA6DnbTV7TGllo/IK/9vK1UkNzjRuUkdBlP3V7fZuclIUwxul5pddQyHewTfFnxXV89FW83g52beLsyACQ4uVXQ0Ew7i7/kWdIzWkfadNNG9q9Z3TAQwBEZlUf+XgNmO3zq/2d0MCHYsdZABBjRi+gCCUWwa/V15Ob9QRc4TmGLyAW3xPSRoxxoVjYplI1Afjmtk8kUAFT8FJ5YqQtGdzRjoo6cfOD+BDjF4RrE85xanEBtBvoYulSnMjsTnYTntfA+zzN06/ndKLRNj3QcbTQoa2kn5qAK/L21dPfiLUo2j5xkMzK2NchX62dbUv01qUI1hZaDfBTgy+CLATKWyMH+5VHHSYXZiod11eOasNIBGnX5vQ/R80TftRtpss836WG/Q7xYr7KPBL3KHzLOvC34haKajB3+uqwcJzhtm056+tz76nKLyDT7itlUOO68wR/5/e1fLZDMNcf7zpRoeqR10clKKdvtoWSOif7hMDdDSOC9gGISDu0W6EGPui5Ma9ea9ydNXurpuf57l78IEq4I2KnDSoL9a++Vffb6qfIyNAYLLgg5WwBiCBoqgilEweZ/vUh1MhiUZS1KcQ87X4vqwbzrX3cLgO7fdXkJBDXor67nVhtlXZ4EeP1jqz1NoDA4uAic1jJWVA3v6+yi58yjPCOcQGGX+mIo2AzyTFberYYxWzzDnNgxpD2hGa8y91bJly07OldENM/wyKOKJ0L1OwvxbV9erxR5XDgYwFnqzmqWa8wXMlg8zY/Dg1inbH9o2S2GbvxzG+EfKJpjD21uZ2EweF/x2K5/3iesMlgyJPy7VqNnDedF+AzQGd4KM3WYOMjRgCdD596C95KvrYITFA8tg9CLW2Cemsi3XPHSo+POig0x3funrKJg8M/ZyzJ3ri8IMjub5etApIAIRfiDP/zR4kVIdVZxTRh/njspbTec/38B0GYfy2UGW8n03+KOUy0z+0fwnvJI1bo4jPwuy7Bu0hItmUKOHf6vU3XbXDH6j1COKpw1daxI+F2Fg8MbcfBkwOFH9l5MaNHKtehhhAaBVJM+vqvhVcY5ex0tsYwzS1SWo86zSk64DEIij/UaFdAR7ih0kgMmdibWs6eEOL9i8ibPDe7Of8x+/8NU/p2j3h3rgAUdNWRToasaoCa7O5+UAQq3o1YuUwYClTLsGd0KnyLZakk4GJrCddObLZwBqSv/d4MZ5v4+Pdh4yuait8iAQow3v+wVFYTUoa2NRZvW786y/XSBgpoE/UKooZ1mJRfbbpXp1nWcj6kz+eND9Knl4Q1fPpf51GOCjwZXp+L8Ic38jV4f8OfnTDE63s54uXjoPMiLqV0p18aR6KCOD2y1LjQxjLdo69Q9KXYs+tFQnFmv4PSwCQ5AseKZZwuL08stSI6CKy/bLMMCpKcuKzN6nB50QuuPSenaZGZwebs1fm5FKrN0rh+/cttTjlInovPe+k+eenG8K+ywC7RMGBjcQnhcg7YZ2DX4p+ItJndGdCPvrrm4gOtf73AUKZjrsJyc1+D14RanLLBxbejgfVLSADfRN0TqJd/TsLwb3oHOn8/88nd8xPc4MswRD4uAtZ2mMOyRxVvkYDQGnFc4smMH9h5XK+H8q1Qfduqz7LNM9LEIdGGwwpPXrPj15Doqb/reUwekkznRzvpvy7tJ0cMuAq/IcBx95ZDnns8+LjwWdY5D7LOvsDPaPvzDvXHKzzTb7bN5/xsBgGP28gCkGF/DRUcnKLhjlR1s92N67GHV+4YEZBmdhZowCNnPodNP+0uc18FNn2bc8ZL+0s7oEJCS27hymdhYYevPc78/Fap1jPtNu7w/dgHOMGR+YGVcMfyxCZ5M31n1Xde4QBIEVtc2eKccuGDBlNHM7iw1D2ojSW85bfqbzPk2TDgbwzUFER+8wVT+LCUO5BpVnzR9rGNzhCMptiUwebUqxDXi6jCOcHZipPP7QXyy1Uz+50fMyQg0NsdCNMTMAyQs/7edP6trpV4Jv1Pkzg38p6GRPZ4ifmPufbe++LPip9j4jFPdPHl82h/A3HzagmOm5rFoz/kKpPtx8zr9Uqo93Dwtdvhk4MGgt2Nr9ykk1PL0/DL1tyqRsnzZw5b/Xd3UdnH2Aq652Mhg/sNQAkcrAzVc5SCeMbF/M84JaOCCBTwNpZlHabAakTW1g0GTjWQ1T6Ysg+6GWL3X+6uDXQnt3sfN3wYaZysM8xNmDy5qIoEcNf84w27kCM/nDgP8I6gx2YxHDvxmkv/6TCBt6qyARm4hnZtTJlYMkgtmtDKws1Yfbfb7ndy11YwYdlojuPvH9sFLrA/OfG3D1Ust3alfj3SnPr1LvnEL6DTShxVf/JrrUTTZsDGiDwwsbTa0ymPnWI0qtN/dfWupg5v4w6C02DPXJ9rHWLD7F4GZqnnbajLpikPLO+WYJ818WZhjIbMbohBn4N9NPOYOcX2AwSBHhWMadJ2YtmNi6D2Nbo1lgual6x6i0PjVj+v6glwMbN8yOgIPPRaf+W2wgmgptZEAlpfTlm9Rzx3rRvatbageHHRaygQaYfgCrIIMFzT57bUnhvlxZEwJrsUGbHVKqNHSGGaKVR0gqvugOjKBiqHOTzLSKMcLZgSkGV/ncU80IGuNMYWZwMBh8vNRZcrFkKjPqB0s9jocawbrtbDJLRoxNg9h5QqnqBniQ5xvN+PSkUvN3eKm70TCvvL+91DV/xio7xe5d1vivP7FU24TtnWbEM+iTCwQGWPXvLDS2hfdmsHr5pJ40QmwlmnuO+vSG9o7yEX9tpLl9qTvvMDDJZNi9pnzqiuFNGtSUJ5TK5CeVKhIvVpmk/aFS+1Y/2Mz0m9Uz+RRY3fAOKU25rOtvO/3ACPMABhuzwzCKljWbGOald88Anda73y7rGKnPLsjfFFAXpMGqTc/s0+vaIQG5/qWrMc+J1f5j3MGg1I1hJnOfSI/Rib1ESMzs/nGlLsURYQ0Qh7b7ny2V2T9W6qCwPongnMK1Si2HkE29iM57LXWw86SubviP8Y9O+7dSZ7gT3S91LzoRHH2bskYFObZUxkdTOwxyaIMxaUhdUVsWrEwzbaY+padMvT+CfscYOg1TDO5lTjnagIhOCqG6cLUdYb7QrLFrMXmpBhGVOi2uzheIiRpTJ10sWFHq7raDS3U+MQsL9i//hwSv0MphFjbqA5tMVjYamBEGmBZTzXpDJ6cHSktnE0WF2Ey0pef6dg9TnXKhwCzlQAJlSbNMRGQZyid//UaMsrZITpUY8sQ5ybZeDxF11ZNvMipeo1TVQxlFmVEW93m8abMFL0wD56SJ2qIsfX9rqx4bOnABQ+uH4sl7yKC93odHmIGhonPdMtcXB1ltHR97bNC5VcS4+XRgnYaoSEw045hBHj38OY/3zwmYhRmVGMbMagI7PK79d0ypUWGA2cv6NtBxHtpo4p9ZHLPw4/a+GQ0TiA3HUEWffX5oMdJ2L9XV9Uk6nbItdPm6qovq1Dz1xA2XtkMN3H9sWaNq3L2sOQeOtZzqQC8nlj+rVGnDIEV9odZoz+eX6rZqRlRvnHqUT5l8d5BwFgSGusnVQZD61H+mPM4151L84lyXYfJ1ONl48ehS+5KBi3RFhVjMieOCBVMMbm11EP0cunc6urT90uvqwDP3BtH2Q6WKfsSq73rMn+t6fwHB7CRt6WFKFme/zWLyQYTlcsof232zgAgnPMUES8DQ7mMQe6bRBgiMjSaKYw60LaZmRrSIoMN6clkoaN8jldgPbbC111u7/KmrEV36diqVkb9TqmhtcDq51NBOBqdXtGdYzakbaNc7Nvo1papfaCsDDKpo3npWHBYE1iWipwxfy/1D0fbrp60cfbUuJxuVOrSZfsgeoqz3W/3AAtb7BRKmGJzxRmD9+3b1ZMxbB9Gr5tmBzdqYHHMTfRlxMEwP83j/nAAPsLuU6korIZ2aPg3MZAOtExPlgdnrOo1mUfacdzGNUzgxEiYTg5xIbIC4fWgi7Rapp7vnesSkOmbMduRzDF3VUfmM2zJpFhc//KatLZRzKNPBpdo8AIPocN+gwNvPILey1DoR78xAQJKxBu6/O5XaZspNGqCzLxawjzjg8Rapr53S7+4bxr7zXN1Nti4GB1yHvUNqunap/cqgPMJ8YOicweWTesrEcZPq9qixH9vV2WM+DErPNUOY9TTGsaWuKZ8bwKr9yFI7K2OaWXhIW2dWFsAybiAAmN1sBujfdytVvF8RvE8rN2Z4YFfDBxlEHpbrrVI/26UzOg/s/sElg+1ioaExM7Q2/IiuBdlwLTW/wKw4lA8DGGTp09QOore2IJY/pNQBAJMJ2mEN3ECs3jC1Qe5RpQaBZHchqhP9DXILBeqZ2mawstR3bPAhkxqyaTWDz/Q17XVcV0MrG7z0MTaDEeYDUwxurZgoOzgYsM4SjSytzFZ6DzP37lGq+GRph4HOu0TmcwPMYn8Onl7qUpe0B8vyIM4Sy4mzRHbGtg+2+wam5zaa0Y4HGFoHN3ug2RZ6ET1l5lHWi+icaUJzhV3NjAsJwze7JqJvsskm0jeYDWUyw7N6ozHuRxutPl7Z6KPKmvPW6O53bvRry5rDHIjoyqRuflzqgOC+39NGvHMK+pJ24byjj/VqR+pw62kGnxksv9nekVciunyNIvp8YYrBzeBmb/uEdRYd/Wmlit7zqcjLl2rMYrwh3j6xTDXEIsPKUhnynmaDUo1tZi9gg8VgWDNTmckAQ83wDMMamhWa6M7zi5Wa4enoru5k4jBDohEJVISYJ0esfNSkwmIzuBn8cUHShN/aZigHBn5Eo81wZmTitkFWPSiPZbNjuxqeyiyK4ZXJ7K7eSDlmcOvh6oG1He05Us1CwT6lHYCYtHdLvT0l9XhMroJBnoHBW1nl5+ldPRCDdCi/4ww+X1CZTcTcfFLPv7pb0AYOot89usrs8+m8OtIdSnVmoK8eWapuR88jNupEay94LhwQKY8MHr506VJWZstLh7cOQmwlmgOz1LCur8P4b4CBxuQ37upMib5F6AO66jF2m9TNNUPb8XT7oCUfsyhxWV2REuZTV/OCln9IB7/dVJnMZkM5zITsB4AITj9Xz2Z9ARYx7qpS7SHKbEY20GESbXNEqYMBUfyorkbtwdRHNqTyLBRoJ2lcP3UnPNOd0veOCG48q4NPld2pMLa1Wq1Q1iPLeLzR/GGKwW3S6EU/FRnsrZddO8RPZc/CzD16ofd5SbHievfrpXY69/9Q6syyGHBoqWmcmrJYFvqlFYHQ9GaiOxFPR/92e87MNYjoJI9BRNfxLfOhzWCYAv0/Kcs1Gs2KbkZUPtFTGOD6eguuap2yLARMfUuZfP93pUpHvSpVqnGR2sFyrtN/uN1XH4OIbmClt6JJIOwU6Gkr+ifKmuOYifyMWEOZqDM9LEC5BjXny12VJnrnnbTTVtMM3vrjgPdIv3QiqXK/vtT9+UcOH/TMCBuAQTRSyXNtHXxS44hbOnpLVx075tO4vMl0qsH4Y5nmmFINOa8q9RCABVt+mQFqhEMBjt5ss82sHT84ZXhIaNFNnhx8Ycs/8dW6r56ko1sPNuiYEblPEl8tTb2ktCORu+rqiklIMi/vqrFrZfBVQaLjitw/IdeXBm3+mE9dzQumvmNwUofPKnWN+smlLu0BZZJ3UhNJ6cWlDmAGq+ODwhCz/MufM91IMS8rVbQnMr+8VH8ADKT9iNBmWvd9ay0j2wKUTdrUnj31tTD2C3IVdWetGXyKwRk4SUrKJ8/PLvN0nx6hrMXgLJmHB28yqadOWJ4RMqh35JgHGOmJuYP4ZLRmwOJ1RFS/eqneYAsKA0PpIBnpl2y77bYGqkuFuS+lXJtssgld2pKQx3VoMzYw8AwdBZObiYGOxGNM2enzB3dVTBQwwplgwz5lZ6cdPKmB+q/bVbFzwdfEwfC94dtBA/DgeUfsHjz19ih1+csL1Cz+DLZfsh8c0tXlT2eVYRrtpEzEcyqIdnb+mQGOiI/muacODBACLpytKKfD8111rVWHIqaK3KLOrpN2sq13LQYHA5MPaQZXtb+00QjzgSkGt+mfGM0yLFSORqdvir82+1oPM/dZZ1ld31GaiF7q2Vw8kNz/dWmzwfq+d3YhnaMLQ0+22GKLTXLtO0Hy/+Ctttpqd5bnUsVCuieLrN869/sbTa8bRPQjgw9uNGMOqzqaxdkA5Tsi3Qwi+g9TbxhencGVQ6dcSGj1ZVcZBu2aQxL1h41AHfuN0U9q9KF5zAzclyn0o9G5EtXv0GjhnSyVeeYjXVM1cv1OVwcP9/nzo6kG/ttfXlp+5gXD8+0dhk3qhP35vYie+7+eayL6rE86GBi8Aeck+TrCD/cXuq4vcDDF4NsE3xn8SCpNDDAdykjbHx8zDzBLnxJ8tE4RPDnIvRLDnRx8U9cCAi5Go4S5J8uWLVtKRM/3bx285zbbbLNtV10jxfUyuDjKl+5t+Uyn/0CpjEGtcN9sbaY6satGrYNzD80/QPSYk3K1u4t32Sm5vjb15UigD6RzfiDXHdc1E50TUF8Nt5vUIITD/WcG/SC2s3vQxw1KIseKiPKAVg6zNaelk9rVoK1tWOQN4gaFp3RVSnFffRlIPpi03pkr//G3hjYIrOzOAoMPz04h9eCUXJ+fOhKG6iOpr7cGxc5bHfd9Gmb6yrGlthnpYjWDL0Z/usCAztg6pdC1YlMfGrQuaYdDj7PvTAFdz95de5OHM6V0FOIeURGjs2oTeXtxeFKdGkRA3dB3zzKEubt0ELO4b18sHWWfVrZ9kqb9zzqEfBJve4Zp+UMTY9HKu2nwEkHeagI1XnpSd3ChL5dv+q5lnSvk25cJLk/nvFLSvEpw0/X4VJ8jGDrxFJK2iN3yzn9BnQ+0iKSeMSBgIuUhDotSus2keiweMKll4oVHAhnet6f+Yt5P+S6Xcvgt4unlcr1ycBP/wTOD9j3PGiy0/96h+dT7zqXn6qx91dTXQblulbY7aNNNN71K2m3TWSaf+h5PPCoE9Ul7KEM/6M0nTxdKGESjXLfL9Ve5JZjfZdc3E6lIld2ApZmY9exgL87mf4Y5M5/7RDEiOvrHrYGvkO9eKUyx8QZ2EJ1lcKpJKws9lBj31XQaA9APuhq0j+fUqf4LrRO/u9FEbwZAtGVC68vK8bigNX30K4O9FT15N+v0Inqu3056l046f2MNTnlWmIXgQkPr4JAc+ykrHl31rvtSqXk3QL0PnbxePXg8Ovk9MvTR7f7RwSPb/eNDE5nd/1De7dspND/xvfK/gxV+nzLumSuffe/sp0+sq19Mg/8nrZ8Eecb1/SJIylNvnw7ytPtnyvGj4OVb/XHm2Ws4fgpo06Hspe7T/3tX3XYPzn9PzTevOZ88XSgBY0/hNqnozwe/m4ref7g/C0PDNeBwYW8vhw9r0N9JpT8v9OVT4afl+qagGdQzAvRvlWcuke9fMrhkIRnBYNHytqLUuGTEaYa0jwRPDb1j0n9H8ndarnvk9wtz/WauJA0dX7inm+T/OyWP3871fsEbyHuuT85/B+X+6cHX5jcD3mmhT0y6pIWvpUN+LeXZxewz4ELC0Mm7GnqKmPqJSZ2l39HKIdoLpv1G8mdWfELydnquNw7ewzO53jPXGyuH/0NfKfitvPPSSW0ndfDu/LdL3hV2+vNLawDLTwYNZntiOLghwGyTNdLGEUF1/ry8d1i+89185y25Xj74ndTZx1JXjKJfDZ6Welw5zeD64NS3XhQ8Pd+6ZZA09aD8Pkh6cIQp0EiNibeAqWxB9S+TCr9Crn6vd4/uwOBd1dXo6TunggXgPyC4a3BpEBPsMVcBvV/SWaKTJI29gwvK4FMMINM80+jJfu8V1Hl1AlFJ924dgqMFsVHH2aLdnyypR+zuvaQelsABY9+g882S9aUXD64Mkj4MUvumDETKSwcPCG4eXBlUvk0XsnwDtLpXplUt78TUla1MPOz2SF67oB1aewVZqB2awFbgCtCCN3qnj0bb3ldup6XoF3ulfHu2fnDR/L5UrnPtv9lsnQGmmHKX4IHSaWleTj3mW0JaX67V25Zh6MsGD9y0wmoGB/LW8kqyIAGyF4kqe8lW5pHBp0FlwUY/JBV9P42ZSv1+dNl/pMIx+joZXKMNzFTqOvfvU7lPyndu3sSs1y+p50z9KXhKkBfSH3PPEUL75du/zHN/zvdXSmMRmIBH3U+DXyt12ei0oGCFjqj9TAvGeInk5y1BftDE2ae3PB6RZx7YynFs6FsG/xx8SX4f5n7y+0EdM/iX0KemPPvnm79L3f3cTJTrt4Oeu/z66vAcAss5C7pjlwygn25lInW9I/in4NWT7vPb+WW3CT5cWXN9WO7ftpWvn1GDyk0KMHj9Kfc/l+suy5cv/2vK8ZP83jHX70nDwKw8Z1YmzDbF4HcNSuO1+e5123c+HLxy8K/Bb2DuzN6/Sr7+EHqPaQaXlr5qUAn9llam2+XeE5POn4OPHxh86NMXelARDY3oD0iF3TuVt8cm9cSMP2Fwz62rIWcYnK/zb1K5T8x3/j2NhRleHfrKuffb4Id0nPz+XfArG9UZ78dpvF8vIoNbAvtJqQyO2b+evDolgy75yaT3R8yQ/Lyx5fEawacF5bFn8JRfOY4O/kfu/T7XFwYPUzd5/70Y3HeC/4vBMTdmCH3JIFEdo1x2PswwX2j1DawAYPDv5p7Z91NJ4w/J56WCb1PXSyuDP7eV47YYu5XjYcHbtPvPyb1DPZ9vvCUoAMPv8t6n8t+Oeea3wR/k93atX/wxtFn9TGdwzDbD4Or2VcHrSjv1c3K+ww7zh9Bfyz2z90/D5L8+EwZ/kz6W37cNYmyTy2OlBz03QlmzNJYKyWVul1x3TgWyPhPD6EbzFdFZbS8zqfot0RbjONbWd1mid5+r505h8r3y/Um+2evgaailmHt9aZwD0Mr8yKkPk+C+ycfFWplXzK0xFDnkbt+WP8Y/1nHnYy2fq5byLZZUcX0Q0Ym61Izdk+eNcr1Y8n/R4EbpoBcPXiL0ZsqX/y4b7KOUnBkznE1wTJHlQAy0x6Qe+qAc2pIoDIjD6E2DVBC0MimH57dt9UB3H8TcVcEdllSG6l1UG0MT2/fVfsrj/zODgcHlaVJtMlSg1SJ6kD3GIMhIuWXq74Aw9eWCm2HuTaZsGC0/rr2InqujhqmCxHUbgkYRfRpaY/adPGhkfclcDTX82aDjcTDqOjunRpsCftvf6aqR6nDv5jtcD+nljoB961zV8b6b/z6R7+2RBmXdPj1Xhpx1prEQ0KQMy1+2dzL47Zl8vF8eJ3UZ7GUtj4dOqsUc/R/Buzf6wXPVq+87uT5jSVU7HKnz+uT5UsHvJ/8fCe6TzvgtM3dos+An8ox6oB8ueMczaOXCYg55op3Y8msZ7FUtv4cE7dRC3zx430bfJ3izRhNxlUn7vWJS/R6+HXxf7l0k5WCU+8JcXTJ1yIKyGwDmVaZW//DI4Hfz3RflvWvmm98Pvi31d0V0rh9PvV0q9ffNMPa3c3X22mrJTv+Q3qQOGIyB3w/eIvf0OfQj23/zyteFAoYKCdqy994gEU2n/1Eagz53WZWFyWdBo03BY0tdouGTbSuf5RAOLXaUuf+p/L4EujXsvmnMP6QB/d7d9+VjoUEeW/ms+/5qrp7dZRb/Sql55F//HnRXd2jxT0eLaMO3G/34SVtSmtRlsmFJ6eTku9+YsbRa1englnfomZj6e0Ma82WGswJdDfhIheJXYPfaN0pNz2pAv4Em1+vl90sbfYfQgyfbMaFv3+iXBPsy5co5pt8Dnv+tOOyWfDsL7deTuo5tj7jnhhjtNTNnAl1lcBFY+n4RtOtN//pkkAehfsCqzl7x54jo9PO9MPfA4EMfgflWvx8819vn99Pbd58y/L/Qdf0vC0OFTNY4dej8xDjnMRvVBWCcT4XZoMA7SSfwLUH1iI+Al9Rg6WVFHxxP6IqXCT3xX3t29rvnCIa8tzQ4a7DiOpbW+jfpAr1n0rURw7G08izvZnwOMO7bBspBxPvEQQ461JG9llTr+mWaqOnI4gNy4fRCpOcY4zBEjjLzZob5groKkl9xgIq7VMuvo505gsij7aV80dG2tiqT9nDlGILmocYJyfsr2ne5oqoXtLoaHIE4Cqmf+QaYNDPQvXyfc5Hdibwj7XG4qvTnqopwFYNlkEX9oOBVgpvPSnZDmvIUPLirquGqRrvOJ08XHhg63qT6Tn882BvDgu+eq+LYeh0aZiryLqXGB7eLSWV/vKuBCexFdv9FXe1I0nhzvseV84NBbp4a5m155vNlgWNsDeWbq3r0iUGSBG8tO84+KX9ddfX8RFc9o4RismXyRrkeWWqccGGQ+Gork5nPJhXums9J59PxnXr5+sw0LNknJQ11uEee49b5qW6Nl9xUzhYcMNEbS82jOvzvVg57AYRfUg6z5h3bM3fIlcSCFrbpQHTuqQv1g7ZLjpfch0O/B13q/gL/8TFYJ6jvKRDogy/Cw0uN4vKpUiPQYvRPT6qobfDR196u76VOnbf2sdTjrpjbzA1mvmvWVrf29wvL5bvCa/V/zjx74YWBAYJ9KKBUkCUts9xv/M51veLlUJkNeLLZm2wLn+ACvvX2rp0VlqtD7vq9zEnr55OqB9ts4D+i+w/QpcZHWzCYKt9FMhv4vvTNVKej5S94cqMFOHgZutSBqhdngyLbYAy0UNK2j/4peHJ0xWGzCecMjPVX6aRsjhf6WfsP88zW10KDnV7q0GYe23U/Wmp+MdVrGn235KH3OCw1Uuxd0V3d7tqHbMrVe8O+dnVkJQJtL72VCP1Cu+kv64SZcooE5H3bcfv0gvza5WvoF4eg1VeQ4axvp7k1fgr9h2aYdtjDf+dSz3dHP3P4c2TwBipPZeRKjLxerteeq6FrrxFkLOtjZA2j6AZgVanx0HtLZqk7s9zT4M52ZsGWFo+pfvvmpAbvPyjXuVzNNN5fyMB+0wy+tKubLWxOYJDiK48mwtJj0daV7ZiyNdLMtbLUCCcrSo15do18hwWZ2nJYmPvS22+//dZbbbXVlYOX22abbZYHrpq64jpJTDZ4+K5tmbMdf6EBFxxcat6lRy+nV/PVxow2lhBnlcU2TaK4Zbarl3qmm+2th5W6711j+1a/nbar7sZsKdIweKiTNd4nGwaDt1nWVX9As3tQ5UgQ+gZ1ga2AHwJbybVSv/qi0GGrmbVbu/7kzbe4IGszwUhcR5iGYYQM9tFB0zEfnqvln5enI789v/dcH4PPVDjDmigbfLb5Mr+21BC3lqmIw49OQ1lrf32+99+hbWg5IVeBE4QLErTA+3us/uICgDw2tH/5lcE3dlUXNNoTac1Q1vDdN3OZZQRWxBBm9P8pNeSwTi5/95rUM6sZ2x6w00477Zcy3S14ux133JGdgS/+CSmbYBPPa2ksaJnWA/RwW12lR1IifSgHRmfcUg7MTLpCCwd9aKnnmtlBR/pQPuI8pkGbfQWY0JYnlLpL7UWlfpfNZZ2gvqfgiFKPYzbTGhhs8xQXj3HSfeK6IB1vzpUax3agv8iXOlwfg2sz75sUqBu+e9Tw58yzF16YYnBul58M0lP5A/diUmjri7Ov9TBTiU8qVUzSyXorev63iaOPOppG+lpXZ8QhAinf8D4NjVpqBM//KzUo4IKBPDakP/bpBRmJBpWApMFGgNb5X43uaoA/Yqz7z8pvNgbi75snbaOETpiZm0Ryp/wumcEPaM//1SCQa79hp6wJILGYIIDCz0tND+PSSdE3LZXp5Zfa8ZR2X3v1mz9KPW/NDIj2Xt9mpYZs6lW3hgYOqgkRfb22kpl+YSD1rogwbBloW1pv3GibfuQX/atuzUES8nvRof3AzHdPac8ZnIj/aBuFeph59sILUwzOqeM6RPO5KqJbXzwyVzP7OnXwGdChzd5GY5E/b1ZqyF01/W9dtbwaja8zqZZljWBE7/fzlipOYrA+WOFCwdBBumptNsLfJfS2pRqc7PNGE92PKPXMKzaA23YtwB86yKK8Mld7qA/MIGhjxy0zCB6y5557rsjva2XQOni33XbbKWL7DfPfjVNfRFhBD32X6L/YwNR8y1KNaAYzM5u8E4Utm/VlKpVhlYM1fEWpgSyIu+pB3LmDuxoSySBtICMZaEvBK+n5yqSdtyjzAzO1PGFcA4TZliog7duXGiJLAA71RKogMciT/PZx+7p1M7jy+e5FS80/eojQM8IAUwwuprftdocFeQc9bq6K0tbH18ngMxXO8PTkUkP6qPQnlhqFVCNZI7+954OCQNyr0US1o0tdSrEbzayisc8NIIqaXeiiZhYqAobWsVlo2QQMQNb1r1+qqEtkvVXqwgYPPvd32nbbbYnlDwzeMTM4Zjom+Jj8tuRG18c4a4GyD2LnAgMRWh7U531LLROGxjDKRDq6dqnlMKCSLJ5a6sDKgIY2APJcQz+41MFJu2pDqtRxpX7XILJOUL4pIBkwvBok1CmaxKOu0dp9z0ZTK6gH+oH02QhWw8x3zdzeMSBTpdCkghGmYYrBrUta1jo6tN1Xf83fRGnr4evskDMVrlFYWolLZoJBFOsdQYJEdKMz2jleZgYir98alc/4X8oijcIzebWk1IuzXdVDe3E29H8Eiatonnn/hS5V9BvES0tfjDtEVb7fOq373+OFVWodeJ8KQppR/gV3sl8HaCCd3exICvpSqfnCvHRV9H1KZRw0UZ3Ijn5D8juIzJ8pa0R0baIMaGiwoEahL1nmB6LMeP74Ug/EQNviShJA2ycgz+jfljVpQxPF+uAjpT6jXXrnpFLPD+9hpr0v3NBmaLHQDwteLSi8kbPIHhF68HOefW0WLIeZkem0HCuMzMQonVvDsu6qeAargdb5btfeF/nTmqlZYrGBOGIG4KnGWGSGe2RXbQHEUjQHEFZwM70ymXFEUb1+6sqs/9DgLcLULMBCIh0VGmMxaEEiM1CX50Zvk4ayrCi1zonnymdmJoE8olSm1E7WpK0iYF5tZla3+vHQUgcEbWD2Jk4TxdkjDA5D+Ty31uy6AdAHjilVwrNagTabY16GMmK6PMurbxsYDa4PKRvuC9SRY0v9pvyTLEglI6wLBiaGXfWEIkY/pKteXPMZEc1kxEKziI6GqQ8ulZk04mHtO8Sp/ntdXQvFXEDHYvQhEg6dc5/230KD0YqYqBPLqw6nU/Hc0lkMTpiBSCtemYiklmB0dFFTrQwYjG6a+tLR0UeEpo4oN+yXHdZTb0eUxT9XS70q06quBlSUdzOwGfL+XV2bVyZ5Z4NQD9pPm2Bk9w2+jHeYW5kwu4HRd9dSPWbKybCnfJbW9AsDAnWHhIM2ext40NIYBhffph5IW343ZI/RZt65dKnfVafoEdYHjbmhHUW9mNRtIBb6zL1B9CMu6VzE72kR3VZNzNsfE9veHUQxnesXjcZUnytV1MX0iwFmOOnJI/GwF9FLzffr0cmfGYQdwX0rA4N4+Y6uOWkE/7ervvasyr/o6nq6+75rJloffKLU5+4/3JiHhHRW4dRS88WmMIjopDK6OFp79SJ67ln2Gso0LaL/tKwtopNiqG6+i6lWw0xfeGupzx9d1qg5J5Q1VnsiuoEefXZFdA45nlEGA8J3y+LW578+DIzcVecP65PP66of82wDrguIgf9dqvOBmYHuxdpqFKbv3bF957hujZGN2MiwAjDUM7q6nKXR6L3z1fPOKphdzTAvSHpmEjPUC0qdAUgP7rMmKxObgs6v46GP6urMR9+7X1fP9FJundnsg3GU12y3PpCe9eRDZu6fI5hpI9KJ/HJcOaLRZlMHHsg7kdlgqp7ZTKgnaAOZcjBaaR8zNaPak9p97frSMrMOPpM20V75iMys5Ohbljqjo/kaaFu0WVja8mdZckWp6UmHzWZ9QJz3/lVLXd9nBKQOjLA+aEyHZITSqTXKfEMlE/8872qmZrQx4gOdyUzg+8RdrqJo4rwGAhrfIXiWs9BmnrU60QKC4d0y2W1K7URmEGd/22ii06Mx/rCkpDOuzNWARSLZvtSyHtLVM8ictkEMXl5quYmgyrE+kB6m29AMdZZhpp2IxCQSkoQ8o9kODE7yTv2xN4CUpD2Uw6xqILMCIGQ0hmFLUCb9oVc75gH0fOVTf/s3msVenaLZNKg5BlMqkfqUP2kYUIjf2l99rg8OKfVblt5GOIug07MSE4GIneuEmQ5FFPtDqeKsxvLuu8sakYvIqFHRvym1IQdRzKhNHETrjER09GKK6EN6mO3jjZbv16JTNjPgait6fg8i+tu6NRbnL5RqZ0D7nk48XabVMFNXg3hJtOxh5v+zBTPfGKzoGOVNjbYZY1ClzMirHV26umlDuakrfTm6ehyxAcEz1A6MuE6YSXtQCRgoH9/oF5e1HV0GK7p+cWijf1XmL6IPji7sASOcRdis1POo3lbqEtY6YaZRjyh1p9GdS20knYqhxPt0PCLUpqW6SdrpxPj2slJ3LDHkcPEUZhljENWkbTZdDDATKd8HSxUV5U3ezTz3bbQZHsOjGQlZ/tEP7qpL69tLHQDMIGi2B+u59M+3lBlmmKmrxwTfWdacCrogMJUGgohL1yUN0U3lkVMRKUTdWhIk2srrPbq6PRR9TKlr6eheTA6NYV/bbeC4opl7mE75SATqEM2AZrZGP7LUgRz9tFKlO/QJpTK1vJocNmTHoNp5x8A0wtkA4jNRClNqDI0z36URyxs6FmYFGGKg6YQcRXQKPt3DEThoHleYj2hvVDfLnxswlE9n1tnQxNc9SmVs1nWdnthre6mlL+Jrf5RwVzdpWHaSd4Pj5sOH1wOkIiL9UCeLDeoTM7NvsKmoW+WhSvXt1NUY6wZmYjRgZdcmvSrV1SVDYa9mmXldYNBUvpWlfg9tIGQtp66xdRgA1bNBXH9RtweX9Rwr3dK1SqEPesY3zs06vEAB3YeVmbVURQ7ingqdD5jx/lyqqGag8O7nu3q++LBd1F7fXhSb1DjeP0DnGcz2iVJFwpsOHWqRraKfLjWPjE2vRHf1OJ9evMyVL/ogXpJMBoszcVanRP+kVCMUKYCdgRqwGmYY48RS32FMnP1vMcCMLT0i+aB2KBtjl/KtPpssV6JvbzkPfXpXBzl7ErST8NLrbIuZ/L++1DQeXqq0gmZE69MrVSoa6vDzperTaH3uDIN6qx+gbzDcYXRivndGy/nZACMk8QejGXWJ0pZP1isyz1Qu0ZNeS9Q2cvvOi7u6BfPTwbfNzc1tnU4joubH52o8a5s4Phdk/GEd/WyeO7Q17oIzwcz3Tih1ADKLHNtoDjn2T6OtGzM6of+rq8EK0Md31SEG/a6uHs5oQDwg2Ec8mU5rwFLtFDo249zsfwsCM9+ib3+2VJGZqIy+c1f17s/kyrHHsUUGOgEfzK6CKbwm7SHayqeCH56rkX7O4La8jjJod+U7otRAIGiOQWwXaPvrSYdouwlJNGhMi3nXgvZdYFurfJKSnlnqO1SNmTdGWCfMNNSq4V6p1mzrnhuyavbQ3qVT78/91W9M29W9yP5zwICwR31kzKVrTsjYc65GkhFbiUgsPJKwSSs16qSe3DE7kJxt8J2pshJFiaH2TlMf0PJOnL3ipPrjG5zQ8rb1pJ66KlILvZQ7L0a3r32os9XpBHOrj+piw42NOHZJEel9UxpCR1EJFqx8M0BMvnype8OVy+GJ1AwOTTad9KfGdlUVWb1qos4bQ4s4K358v214msHbe1AbCxclDVs+lY8aYGsuelVX+wBa+T2nnqlo0rxCV+vHvv216rD9BuqQX4Y6HNLot5ROPz/CemBgoK42/A+JZSo1f32yVJHZDLfOytxss8364HjtfcswxKeXdlWs+l3wpNYoInWI5CkW+h9sHQ2TXzQzuWin/hNN5sOeCx6ee724F/q+Q/50snMKOulUeT+cW0RQM+rx6Fzvnd/Wyvtgfl3dLuq+We2G8pfrh4MHy3d+i2Yqbtvq+nFtaei0X2zvKxPVBX1kaGvo6CcM+VmI8k3no1TDpvZQhr5M+e/YroZtUg7SFW829wXeNMgRy7+aeto97TScTSbC6ur8zdThye27JB8GR/SDgkc32kmsd2zpvTFoSdR9IaNIRP8Ifr+rA8/qvA/fn9SgIP3qSq7e7cuU+2IO9M9MDzwjrAPaaK0BnTr5+dBC0RqZiesqX0Osk8G32GKL1Yf+5R3WWiLrcekYDC5fDv5PVy3k35urkTT7M6822WST7+SZlUT14E+W1LO+3hT80Vzd3eZ4WfSdpvI3k/pZh+nOGdoGkh+1Tve0rp71fcf8flCuDko8Jmht/Ie5Pm+uRr358Vw9JMCsLn+fmdRjj/pvDmk0dHyTI3g91x8G2NK72aSGaUY/3HtwIcrnO1Nt9cJcHbxoC+aD81u7PmBSQw4r65NDO6DiB7m+KteVyYMBXmyA3dM+P871tCXtiKN1MfikMq1y3LirTlLq6m7B+7f7j8nzQlGjhea+ZqPfEezrsKsHVPYSxNDHpr5PsjP4eEdknRc2WqTY1XU+wgZgaDw4VyOfiqYp6uiqVDjrN5F5nQwOnMsdhp3bdtttt86MvtfOO++8Q0b/OSdU5JuOufXunrnu2tJxhNBw5hXawQJOSli1pMZjt0d9ZVDk1T4Iv061EDB8q6GyOhZX1NGVk3o0MPHU+WVoV+dfocUDdx6WU1f7QxHmav6ESZb31Xmcqk/nnIlW630hsPacq7HupCEsMbpXW4Z3FwK0U6tze9s5s1AtGMpENd0qaW08V+OeKY9nbX0dDkHQBn046+Bm2sI3/R5gyG/Dvg7navmGOhRrf6hD5VReYbj39NykRqkl/pN8qGHiuS+VZziThsMcPNun0fJKten71fD8CBsAESwbCl37zeCv52p44BPTOX4dFMtrnQy+1VZbdWHsuS233HLjvO/MZ0f93G7rrbc2g5+ed96Z7+xdqs+2IPo6kNNLf9xE9C9kMHDUjtMu3hP8bfC6wZdtVI/jufvAMBr8nMIU88H3LqnH9two+Jzgb1t6j5R28vD40Hdo908IHp77jv/x3lVz/ze5fnluJsT01PedVvixVo5rB82SvnXr4JOXVvH3WM961/Wcgu8MHT/4cunlqgwOBxDj/GGhb6McSe/ZoQ8Oam8Rby/W6v/zU2U4Q76GvDZ8l3LM1cMUiOOOsbp37jsDTR0+OfTtWrlfGdS2jjH6YO45J9yZcV+Z1Jhsqxl26vsOOxRtVX6vm3de1tIQv75/Xn5G2AAsXcPgjg/+sbBNqUyzCz3pT92abZ6zr2LwyTbbbDMXht4k73NP1Ci3yu9Lt80lJ06qhfwPuX59rp58+bM8+5vgPhvXc6noemJjfyj4f6GvH3y193PVWVaP6OcUlHPoPKFPSSdU1psFnbrxl1zvlfvHtLR1zju2+05/uYH7ecfBB1cL/j3oGF6z4hkYPO8vybOf805+Xye/39C+5VytZ7TDHx7jWe+6nlPwjaHTB1+vfGmDO+feMdoy10fm/hEtbWrQocG/hn5Xrpdo5aaDmznPkKfh20MZg+9v5btF8LnSyPV++cYj2reent9HtjQcSnm9lvZHcu8q+d5fgqevj8Hz/lzK8On2joCMbCHecfrMOIPPF3R8lRkkchGJ6OOcOzg+sF6uk8FBmHlu2bJlG+24447bZybfd7fddtt9+fLlm6SBBSbsI8P41qSGTNZBnO8FibCOS7pkcBN0/nN4AIZhZWd4cyzxJLjRpKoNs8mfZRg6T3A4p4xK4MyrK87VpTtipZh0RFXH6qKJtIxNjtthWV6+pB4r7LhdsK7vO8KXyuG7RNghDSKrM9uca+26IIPXAMP3JvVYYasXLP4s2ftjpPy3yaSeBT6I6J4Z9v+rj/70kvbf6u+2/913fpuDH5xTZta/QgbqbcOEjoVG7xSm3C14hfy3Ms8R2dXhcB6a1QeHbRC50UR27XsGBm91qL7VlfzynaC7O1duZPD5whSDq0w6Ef1IfHPbPQ9dH4MT0cPMvQ6e5z3HCPLg/Kb7fa6rsbct1xDDPhTU4J9NOl/Mde9cPxh0BpaTLozO35irp30+K/e+taSKd2K5PXRSLdfrzMdZhaED6cStI1sH/mauZpv7J0+n5/qI4K1z75u5PjN47dw/LejYYYPT6u9Mgzz65pIK71COuTpTPrd969/naiTb03Jl0OvfWYhyDTB8c/hu0O6tr+Z6z9y7Yf7/Wq7HTeoRTtrmJZPK6J5h1OqG98FA5z3tfJugWdrgLSKqE1b/LeV5TGgnq94pzM3KTWJ7VPAWee4bQaHArq4+cn1D0BKZ/uUwibUmkVZ/cC74VnUVZKjkfKSdbjedvxHOBDB4KpDV1xoljyzLFl8pdZnlerPPDxDmLptvvnn/fiqbvzOR8BWh7Rb7ffAToenj7rN+mvX+THScq2us3/PfXGXij6FzFcCQH7v7lq0Om9TzpwRuXDBG0IGGTtK15ZdcWX/5qMvHM4McRNA6ZL/ZJO99UUcfOuE0DJ3UN+eq8a2vw9wTs673LMt/R4V+TrvPgWbByjQNQ121bw+bTY7u6sktaMx5SKM/0NXdc5ZFT+uae6pvDN9qaNmKD/txTnTpqp/+LyLB3Sp10S/9RXJ7QP6z4USUWXp+v0zW1T0HfP3RHG0Obmn/pGvLZFPprB5QAr1HZa7/Nlmz1NifZtKe6fM4wplAGoje5SAEaOsgD7bDSvUf1ku09hmGTBXcOhPHCaMyi3l/yMCkWm6tB6MZ7nR6YipkzWUddVYVMZIjhlmaUwZx0qmfK1rjW6PlM77gzNC+yfGCMXH3SV0PtiRDjJW+mcOJJUReNHEzl7U715CvroL/PUQEFdCSw44yWXcmLqsjNCcTr6nXhS3Y2rCy1IMHOJrYFszRpZ81G23LLPqypW4j7V8arkB5g/qIo4T3zMC+LAP8ZSPFHbbffvvtue+++15uxYoV17xEYPfdd7/YFltscViecWAENeSwSbWWUwWUWz/RXw7uquNK7wEojVz7ypvU+sPgVDXtoQ6pjfpFn9/p/I0wD2gVDLmtvjR4Uql+5WYArqdmsTPAUNlTlW6jiV1NdpDpxMTz1wZXBN+RBnvPpJ5r/Wr/dZXBnp3nT+yqBHFc8OSuujkarYlxIpP035fPcwoz3zg2KD1OL3cKntLVABXSd//Y4CHuT6pY6lC91d+YGuSs51JtPjapXm7PD548qae5PKZUxx/+Asp0cqnBMexP5+L7n0NmFqF8dwq+q9RtpDaa2LXFR3xVqT7iHGHs4uI2qt17UEbQyuZqsObDflLE8stnUjgmZX9VGPqaYeZbZva+3W677Xbj7bff/lZ59v1h7vvkGa6xyv3YIMlOnzq+a3U4ja0eLcvankv6OyBIteFchLGn++iQzRHmC1OVZpQ/vVRxSHQOzEqcIrL2MNsJZyrdO57/cle3WRJNLbldYm5NWCgz9o8areH5vfsPU/Xhf7q6H9v2RTT9a8EYfKaDDOGGOIQMGzOInMPe6bd2Na7cUKYzMHjrnKQNIYiIlMpEvPxH7qsPDPb3/H/7UiPJ9CJzqdso/1bqWWI9zOTtbMFMHT251H37RGeba6RNTTBj/zX4obImTNP3S5MmhnxM1bt+8W3PRQy/Vn7/T/CzO+2000223HLLm3s2s/otwuh9vaUOnhcG50lnA5OzyW7Y0qB797P2kIb8tnokWfy6vX9I17wB8z9dvn9uIdr/wg6USzuNNJqNJzqr0Z/BbD5ArLe5nxfcFqWe2mm5TRTXG8Cubrm0dZAXFHHt0FID7fPTtjvrZqWen6UTyofrgsHQsRpcqdTyWdKji6JtHvEbLT8rS82HGbhXvodvNIOQzulophsEb5rfnGSI5zfNTLZzfjuP7ab5TYrhQCTgv33Q6lRZF7R8M2DzD5fjYeuvPQbDzjebPvZstPY4uNFnYPCuAo++m0bv3jni+aHbbLPNzQ466KADg9ddtWrVTa5xjWtce//997/q1ltvfYswvXO/rY7cPGV2HhmVZ4iEc4Y6bLYgqps6vPlcXdWgFt1y0mL1j8y9MGCkthvp1aV2ADMb+urTD20AdCBbMB14sDJXYp3Ya3QnLpT8oDU20f8VpTLSMfn9qlI3SNw3iLZN8IhGi8TZw9ApzgnMfEO8NOVjUMTQaOlJHy0/9k2jH1/W3zmX5WrWso5vuZGl+hURX3m9UTFelv90dGL5K7vqXy1NdXXn/mNT3z0nMPMNAwhf8cNKjYVGXQC4RfAF22KBwRiuBb7VkJHticFXRETfP2V9UMrzor322uuwHXfc8dZh+nvsscceN95hhx04vrx4o402OjLPsG1YTXlAUNtqyyeW2sdWw2wdBl+Xb+w3qdZ+Kyw2+owMvkBgdO8t3KVGOTmp0UTm+QAxm1j2ja6dO5Xr77u6rXIQ0c1YP2+0WUMoJDRRmF6IvlepouQgMi8YzDBAn16pwQANbOjnlTWHBPj/po0WEXQ1g+twc2uWdbYZzndLZ2dL+F90xFaMzLf/j5NqRSeiE8uPKVVs9g5L/oLBDCM8o9Q06PmkkG+VWk5BIdzXvsDAbLA9AyhrV20z+sXfwoDXye++X2yxxRa3DTNzDHp3GP8+ocWSt2rynOCwH/w9pe4HZ6mX/voYfGubkbyTeqV39ysRufJpny3XCGcTNOQdSo16SoxkKDHLEV/nA3uUGsLHZg2np1h/dSYYjyVGLPuStyv1LCqzh22TZhm6mxnG3nK0AQHzYzQi/GKBjoe5zTDEdWW1d5mYjjbLXqzU+jiyzDA4bB10k3TuO2T2vsfOO++8avvtt79hOutt995770tGZL1e/rt7GIDDB6Pb3bvqK47J2Dakt1jAsIbRMDD1SXuuaP8Rl5UbbNpwndBVEJDyHikrZ5YbBu+57bbbXiyi+jVD3yn6+EH57Tjle6Ssh+Y5thbr4uwQVAXSoL6lj62GKQbfNHiH4H1ST8RyBjubZHoHnJHBFwcYSohVB5YaPVVDnSEKxzTo/I0BbDx4YvBhk7pJ4JiunlXGamsQeHzoVaV2cuKvDk+EZezCCDojWtifa5RqdNNBepDGAoP0lNUVs6MZxs4ArYzCTdsBx4nDzquHp6M+OmLrxdPBbxZmv+VlLnOZq2y33XY3z3+PJtrmWbPfY1MXGI+EY+0dAwC6MkZcLGBMu1/Qcp+B6ohSRff1gWf8Tz8XmEHYaNtc9wgeFXxCpJYDUi4OPMdmQDs0ZWaAe2zq4UYpszZ8QqkHBa4XSEENbXLhUvukSd1cYoCghy9obIAR1oZPlypmmQWM/Eb9DRrcGnND6+n/JLqGps/34ldXAwX8sv0+JNhbS0sVhYmznjFzi4TiPpHyYY0mMvewCAxONJeGcENmb/SJ0w+AxtxQbDED1qPSMUkuvRU9M9nBZnPP7rrrrofnv170T6cnydCHWdQNdqzo0qCbrix1SfJI7y0SULOkR/XRHoJQPn2tJ9YGMzrRHpMyuH6/1LbB8KcE/x5mPCK/2RGI1Ta2GLDsY2Bv0Wf+L3hy+946Yaq/sKL/sdRvHTKpfuecjri3jgy+UDDDONZRzaKYVegcxrIzGGOmYWiMSY3k8l9tBucscmxX15V9Q7RSszbGILI+IWjTyuoZvFQbAI8vgwox1v3FNLhZysGM0jXDmsGPmn4AeKehQBmCE14xzLttyvfglPWYPfbY42KZyW5qBj/ggAOunBncppZj2wzOEm9dmJMHf//HlaqWbFJqmvutndqCAumAqmGFQ3q3nfl/FnjzkDIYBzkkDTM4/4bbo1MeOwnF0kPbiKN8nuGVqA0NDmcqdbnf8vSwrnr5SUNQTisvfRSXkcEXCGYagdGMwYtoTkx+YKlLR+uFKQang98reGRXl8Po33fpmg5e6oxCXGdco3djdsx8z64yuyU6aRP1zDho//ewvs5yVmDmGwYRkoMrZkAT19cHW5Wa77vO1dNaGZzusssuu+wepr7B5ptvfuvo4PtFB7+W+xtvvLG95bzK1AEvMsxMBcJEpCPfMsj0sBDlmwE2FQ42Qlb5ONVAva4PGFzvmketJFhmE7mHu6rQTIyH7Cv82A9r7cxjkaca+pDWhtpMmfrCrKNM1D5qA9QXqA0cjaQxPZiu9dII5wBmKvMTpVrF6aIvK1XEM7P1sK6KHxi8a1b0ICs6y/kgojPs9Fb0Uk8LmRbRB6u2zj5Y0aXHEMYKy6+7h3WlfVZh5huDSjBtRf/Q8Ofw7NQ7GMYzRFWMokx/CmMbkPqVgeXLlzu8UJn+mGeI6MR/77Cgi0KKPr6scUJR3z0sQvkw6m9KDTp5SKnpfWDq/1ng3tq3Wakeit9Gd2tEdPQRpS71oR/VVYnE8y8u1bai76wW0ddRJuvwQxrsPL9qtMF9ZO7FgJkKpYNZxjmkVHHVerDllvXC0Chdjcn2xuALgjYoiJ4KzdTWYF/e1cB6x5S6NozxMRadlLRAXEezspu50XTjHhai4We+obPyKiNd6MTKSmLpYXh26p0dSu3Iz8+AtjL3nxx8ie2T+f2o4AkR03nwUUFOyJVIru5eXur3+RagzaoGCAMo42MPC1G+GZAeGwA1x4qFtmDZXh9QyQx6L+vqmWyPy1U7WVXwnjVuYrh1fPThXV0R0U7qUhnfWOpg1sM6yjTUIZQn/cL7JMYRzgXYvNTzyihAZmGzLKYkvtkcQjdb6wXg3gzqLIIXQsYU1mTea0S/Q0r1fiOWmfWJ7KuC/NTRNhpofDRbwGKBpTkdlHg+eJnRi3sYyjlVJlb0fws64G9ZGJpjxw2W1NBTopagRX2x2eLwXIVPsqHF8+wQRFK09WcrE9QB5V8rvQWElaWmZ7UCiJ67oRURVnTLhJYStfNhpapsZnY2BO1nmdPgpG1ET8X8+ogZfz6wrNTvQ3kxkHt/8LwbYZFBZ9ew9E0zGpGLN5Q1VbuDuJSuszMO9xti2F4U6+pM/ZP2++CuRc8slcmJ4OjVvuilLqGZ2dBvKosH/11qGlQDuiP6/cOf1A4wVaZevJzUKKvq6Rel+p8r3+CLjumHlYFblaZ2hCaemwWlYSY1mLA4f1gaCwUz7cLAJr3XlXrE1KPLhg1t2py/uvyKT/6tRl+za44uuXqfFOK7jyi1b6CJ7fOBWRH9Z41ePbCOsLhAnNa4y0vtIHSvo/zu6k6w3hiyPvBfQ9sFBRR4T+h9g68JnthVxsBYJ3X17O1jStXZWLLpcOijSh3Vdaqj65cXBgambXD/Uk8voatKD/3k4c+hLIONISjqi91xdpEZwHRq+6vN/ganD7XyWQ5TVh5unH1OLHUwM2OjOfwQdenDVgoWDGbKx0j20VLrmGhMVLf2vj7YtNTTaj6YPOsHxGjlsD5NHbHzziD/kEb7vrYySK0W/dXZBoAU866GZv83lGqHUG8jnJvQ1QD2ZlziJdRhN+hlNMUMwgWJxUV0Jc7aL321Sd0iyKvLt4h+mB/tkICVQe/Yq22ppE/Pc6Va8i85m945BD1x6I3TdL1RmdtOqF0n1XFHuCHlEKGVr7YBj5Vc0AT2B4H90b0YG7TX3q4z20kNmPbOo+13591FBVpZqiun2YwV+twGDSltebFMJt+Wq5RbO1kWXBakNtnPb3lQm1h6M9hrs4PLhk8KtcxqpYK6hdaWjGrUOHCGuh/h3IHBWvrw4LHoNK4oLj0Tz60jwsZwf66GH/7bknrmlVhcvdNErgYMI7bv2nlmBEdbPuL4gT62q0s1f8n1JV01VBHjzBqrZ9XFhCGNrg5sjw59j6CgBpwy/jypAQl+VGp+zT6fabSObxaUX3oqIxL6/rnPYIh+dqkSC/rtpc7mROMvlwaLXb4p2LXUfPyuVPGZ2qEcBhv5QR+W/FBderUj9PHoXB1X1PeLXF86fHBoI9hgOL/uh6W6yv6pVPVkgw5UIywCtE49/HxK8LuT6mF093Tsb89VV9Rpd8Opt9dyQ9wtzP0VmHc5fAifK16X2Y+4bnOKjmPn2Te7uqWS3m0PtvRYmtGPznuss5ahjh86zmIzgO83NNveNVfbIFcmL0JCf3pSY8m/P3hqV2dvu6DsfSbOPqWrMciIs9QANL9u2yKV1YkgZrGvljoAEFVPLVP2hoUon3oacPr3DJCO1O1H89+OuZ48qfHaGAeFXvr6pEotL07exZa7fvBxadfTc8/hEQat73RTIamGuptKnzHTxh2edKQw6Rk8VrY8jHBeQBpm4zTU8kkNVk//FNReWB6HAdj7u85g/n6nA4jBs1lw07kas8y5ZKJ2iOLKWQIjEN2J40472WrjjTfecaONNrrk8uXLd7jIRS6y3bJlyy651VZb7bbNNtts6f6kelStq5MuOAydNKgO+pBO7be8WxaTD7O75UA0x56VjSbSOrMLLWCE54bOTqzt46CVelopUR3sFuw9uIb0z2Xoz07r6tZeIjiafzi3Ufu2SWS82LS9gy1si+Xso29YXSDSTzO4OmCQVQ8s5yzvpALqCNHcas25XsgRGgyNNTRYGvTxAijm+qw0rAio/wi+DzO3zr7W++5P4f+3dy/AmhTVHcB77iLC3c2yBhZQF3YvPsDoSpnSKJa6gEpekkppLOOrQFETX4SKEo1GBY2SxKI0vlIqiQjxDRrK4Ks0IBQqiRqVSolGixXEoAZ8RTSJ0ZzfnOm9w8e9y33iZe1/1ak533zz6Jnp033O6dOnpR7eOai3bOyPB/0kyDpe77A/zj8xiJf363HMs4OeMBz/grivoRs937vdq153NTFUUiSPu3LITirvnAT+355KIVcmCQfNB5e0n9rKJjcn/n+7HB4z0eR/YitC7GneYZfzrI9xbsnx5Ls7t6Sav+v+txKMjlDPv9Glr+Ga4Tmkv7Zc00/W5aIJ/2h/vIvHxDO8GR/04r2GhJbdqL4MJKOrZ6UZcKZ61p0lI9ka1gJ8KB+PMImtDrox6Mx1uQaVVS4u8H/9wJOoghi0Mc67MsiiCJIy8qx/L7aivtjY3w8y3ZT3WTrlp8SxvM7u+9Tp6enj4r8vBJ07uubE3VYW9dm7XAXVSiHW1dKTXxO0cyp79M/F/zdM5frnH44yeQ5ONIE+eMNLJmTgxXI/MY4R5XdakHhvUWYCUeCGMjtXe9UF3POhkt51vgSNlSmbX4oyet4jpjI/mhVTHhT7zvf9gh4VAv4GE4pC43rhMO1zV3nrdYN+e3huZoyZep6PWt4EfC2hCtNUJqCnYpsSKpE9/rCpXDpXgr4+d9kkfPy9Mrc4L7ShM55oqjaVm4qu17BowH7r168/ONTzIw899NCZ7du3HzEzM3PUEUcc8Stbt269Y6jr26NibVORamVaTYwqqmejskov5bdtjZvmIa/LJvOQGwnAa330jPUadfleNM4LzrNeoeJLbdX/qNvVwqg8yPfYNvAaLg2W94yntTBTmGZMqf3iW2mwLS65Ye9cd26u69bREtemklPPxeILpmlYCxgEu5K44/+MrVlgHE7XB1GZ2Vo8x3oumLzMTXrc4RgZP77dZYyzWG35sh8XJHCCI+dpUYF+z71i+8yNGzceF/u/FP9b82vVBdwzjIiH/Lqgy7q0tzkHOaEI+eVBVs0URMIh9a0uI7skjRTYY2iIQ83z9U62Yb+gF0NGris01Pl60Y/0BSi3qoB7jmu7fCZCfkXQdV0OX1ox1XeidcmK6/tbk65P2ECwoxef77rm9DvXeHd91s+V1oOvHVRhGj6YgAy22RuCFzDBvvpIlwEwx3Y55xsmL9NjdB3SWeecC/wQCy5a7qQukwW4x3Pj3ifG7w/FlmlQh5QEzqx65Z+A8WH35gnnLf9B0A1BhpcsHOA9zARdNhynQfj7gdcwvWzgTcN98sB7TsKPF2WmZ8OL8LtVMHwLtDXesXf+nS57W4LomcxA6yfQdOkv+NDAP9k3UDcI+W7g23qmT5aMUjNxyFApr33DWsGoIvRrXnXZ4lNNOZNUeKq537vUy/lQr1VyvFV8NO/qtiAedTHcB4Yw3ztU9QP3339/XvQjN23atCV68A2xnzd3ZjifOrC6Rvgs3NBEiOoJt+293V0G6rBhQRTYOJ56HPM9rtRj3vH1OcSJ12vdGujq9wiS8JB/Ac/z7V0L5GGa+Da85Lzhpryap7C7Rtbz+JP5cZ+SATBUdN9bDP6t9d0aFopRRagfVuCJcVuqqGgzvZt84irFYlXo1wRRCznVBLd8Pnjjq0JHBbY8PwR/R8neTYir4Rb3Fu99U/1w5fDQoC+WXBhA7/rZkmPUbGxluqjLJBj2/XNJoWVq8IIb7jIjT3mN/+q1nS/JgzBRvKAe6ZQcI5bbOc51v60lx4kvKhn5VlYByuX5Lozrs60/E3TZVPpDqOW+gXFwQUhXBIlsm6wDPSZ++2YcaQKWjPN7Pqp9E+q1jokPae52rzJ3mQqY6mahOUvQ7Eqqt0Cwx12rRrKJcDqtyyyr9p8VvJlH9guUqKrtzrKCAj6utCVnULnHp0qq6D+N/6+JLSefZ/3vMut9dhx1XRw7Xk/1roE3BfYVA+/5TnKtkvHuRw/7LxjO+UnJVFZ6PPu/U3JG12TZVgK82p5jZ5ez9njE/bayqiEzvJ77y/iS00An68Bc6E23klNGzRL7cclnWnBlaFgb0OP46Bxr1HMzqCz1WofUdjlhFgC9CUG4Y0l1XYwyj72ZTbKFCMBwITzHD6F2jJDH1YJ7E4IaX03V7MMqu1zA4LBhvzJX3jnbBp6nWE9cwYlWMd7PVGGmAE2hBsfwZ4gJ7wVqkRrRQkBl9nxUbvcQQ9/fL+5lDjunKZODc8y3XZBjLL654/T23pX3cUzJOPfdtgoNaxRD5ZDN5KNRMV4XdM/4yJcFWQZWUvte2BcBs6w4cx5T0kHFA6vnE954YdDpXc6lxhs/Xq2eQaUUI0591juLLWdKqPTnlszIAq8u6SSjghrDp9JS3fXUeMJMw5FAwzU1ZvbTSNjceNNkqfh6vZfHO9Ngnh909lRGia3GmL9GyjRdJo+IMkk6qNLm+5t/wPzx3HPCdx+hzgNn1jCfzgl6zuzfDbdJDMKN2M68sFT0XvXbd999/d6kYk5UhluC6YlUPIJVVXR2KfsVf0lJjyx1lsq8Wio6DzA1nH2tcXFv3mVqOR4R5OtLqtzGvNmbeA0QgXbM0WVWRX9KyamV+DNLPgez4/1Do2X/Z6enp2diewOVOUiYb79s8wrDdzJywasN7q3sBP/G4XdNEnFL0AA7/k9K5mJj2y90bnjDWsVIwKmVhrhk1dw/KuTjgx4ZfB9vvUgBpxI+oaS6SmiMpVaw6fSCajtnjt+rBR5wQ3Psb6i9EzAN6n7lrD0Ys6Xy+5WbJjek4lfYX9Uaz1MDZR4YDeM9Q6jXhZAfFZrP/aI372hAGzZULX7FoHGiRTB1wHtG+5RMRMGWdsxCQEvxfrbFMzBZCLkGpOG2jpGQV/KRzwrZNrPIpAVq9FllaWOfR5dUITm8VKI3lFRn8ZIknl5ysoae44/LrC27EjAsJoHDH5Yc7nllySygQBX/04HnbHzpwGuYXj7wvOV4Kr2e8GUlEx1sHngCz7xwzG/ts88+JmqcEu/t+EMOOeTgEOrfDOF+2KZNm9YLJNm4caGytmBsK/k+PYsG81UltQoCPicmGmqmFM2KYB9b8nzfqWFPw4SA64Gpaz8MXiWm9vk9djItFKLanCtopHq1P1FyeSM89VIPenlJ7/pSGpH50I8MlBy6Iuye45slG5GqzqrxNwy/NQKGtqi9HGfvKWlGGCoi0I6R6kgGFPv/sqQmYP/b9t57bwEm7w0BP3XLli3UdXb3joMOOugAfgwq+oSALRd1JMIogHdYvxOtaSGoJojG9UUls8saJmzYEzEScCrai0tmQiVwTx9oKW5gSQKkTqY66rX/qMsEEXptvekJJVVhPgA284rZ4yV7WpFnvPvwuBGvPHpoIMBUeaC2116MZ12ZQC9ejwfOw2pUU5MFmfBeHx8q+v03b958h+jBH0hFp65T0asvYwWFvL5DjY53+LySjjFlXQiYRxJYmI8gaeRzulwyevK4hj0YejuVhrBT/U4uqVbzHi8W4rv16NRg3l2qJfVZg4LXEKyEiv7ckgJIwJWbcw84yB4x8AS6+gaOKenxB3Yn2xX0+hoFMFxUGwHQCNgHBMxQI+G1iMKxoa7fLgTaVMvjqO4hQGbZ8XH06vMyhIhG9VclnWL8Bd4bk2deTNzL+3a+kQDP8+IuM63yIUjrNLPCjVDDWsPExyWIVZ2Fbw2/tfiLxYklz/1USbvPNanonFT2I8K+KOg5Rzix5HXeVdIMMH+Z+q83tv/a4bjvDb/hGyWDOQgfL7r9MyWz0QoYoYbzD3yuzDoFHcNu52xzrghA59j/+RBynvofhHALNqEFyYTymW4Yi16MAM3zfJ8t2TAxFb5d5rG75xDW+nw0J15y5sjphDu0jL/pMqXy5DkNezCofpwvotPYqKeWjODSeywW1HUOO8LCRsUTEtd6VZcTYZYb9WU4jL2sd9KDu/7jh//M/tLbQt3Co8rswgzUbaou6M3rWPDWksNj1XPOZCHQwIZ96FBmPare2jNYc/vpA/+0kmu59Scs4/k0rIYhfQeBKG8qOYR3s0CF+h4n7uU5OR6ZIoRchKGEFvwHZv6JfJs8p+EXCFRTKrYeimBQD4VJLhldzq2mvloiqI/bXkYFI3SGiEyo0auxoetQF0/x9oHXwFQBJbw1ok5PX4edNBCVV6A6rAaG0mohjy6zDZ7IQPOnPQN7VgARvtd46nNN9MorDtcf7muYU4NjvW9lpIHwS/ROQKjvu9Jql61h7YIDjBda8IiKT02k7vEqLxldZv4UVEOdrUkYJg+bFxMVUuX9bkn1k/NM+ajohBhPHQf8DwfePr/Z/zzuTAe9Iy+6/Q8qmZPc8Rq3x5ZU/f+iZI/qGBFzAkyovIJEmBr2f7fLVMt94AleeXnVFxHnf4uo74wjr9Lg9JPoon++Lld7vRRf0ha/2fmLee8Nex72LjkefkHJWVQi1Qy1LDggovYsMKpUxto/EHRel1M3l1PRDB29taQ6bVjvnJJON57lvytpb7p+bxIM/EtKjskDFdYzelYONuqwnnxHySEkw1EEmWrMqy6Y5i0lZ5uJDT+7pCORynx2l5lZ3cOMvbNC8G7Ho14zqEwmWlgIxu+n8oMw7xLu6rWfSrw+6B/iOOaLMfsPlWHiyRirEErbcBsHYeKh5lHnKKMOU3sFhdivEdgtagWdpGXA3GzeYM5BoErX8XvJD2R/VfGlMer5LueC67GBwPKeg2EwAl0x5o0IVImggdTxe+bAzPAc8sBJeuh+spc+gOAFHR7Cfd+g6clUSYvF6J0Jsjkq7vFrQesF2cT2d4P2i3sfHfQ7QWLUl/t+G35BoJbwyFJV2eXvK6n6cSYZhvlO0J+rTCr47tTRUSVdicp3Ysly6MVpFuLELynDWlpRlquDNgX9LATLbyu3XDecI0BE3DqeAPPEU9cNuXFk2W946qSSqjhn4zEDT6vRsDnGvPit+BAw2Vu38Kb7He/h7sG/a/369VfE/e9FuHf3bm4Jo/cmwu7SdZkh9/ANGzb09zMOH7+/io9jJMdciXfcsKdiVDkw55acP62S81xfVtJ7zb77WMm10Ppzhp6ynnszVNVyBUCVNmvslC4nf1xcMnzTOO/Hg86NsuwbFf/DQRfGPTmhpEeW/IGKbcTg4yVDUnnTL+4y4b+xcfuptob4XJdaTkuxn5rPicXGfWOXyxpdEtd/X9DmEOKPhDBfGttDYvvCUM3fGPzMcm3x+n67HIpjdpwR99vifkGfDl4q6PPiWa+I5z5q0CYmL9PQMCfYmYjkqujmEG+OCtWv6RXbg6KnkgKKjd2ngkKrAKo0gawgODUIhYe/TgS5S5TpThqSqPCHxDF3HmzVzVHpa7ZVHv2ZgTdkx94mFFTgnh+Ar2PPVPqqonsPdT64lWAOH9Tye8f97nO7BP6ooP2WIuCj9+j+Gh9RdMp3v9jeN+5JK6GqS5NsgYq9ggTeTDXhblgqONt4ik8o6Xyr6qx48NOi8j1c5VLZOZZQqKo9LQUTFfWUkvcDfgE96tjDbeVQKjeV+StRhjtHw/OzuLf84AfGvq/F/9R1DREthDrLln77wNNKziiprhsWpKG4Ls3gN0oGm5xf0t7H/0ucIx+5+32DkEev/X3Tb0OYjwy+V5nj3g9ZiIBrkMbk2QcBF9WmHJ+O3/wD1wddG//jr/XfVK5osssJ19CwVAha+feSIZ8CPwwVGdeWqfVFDlA5VeaxcKOo+KPLLAwTlZWq/E8lc8wJpmE7KwPHnwgySRDuEXRVCNXFBDzu+6Wgf4vyUJ8vjbJdFaQXf09c+6rY3jvIemtXTeVa4a5n/wldpk7eGb8FsjBPvlIybbJG4aogyxLLWnN1nEtNPjzucWUI9s649/bgPxHb/1g363Qr88H7qsdUqkIexDHoud8W+4zfG+KTAprW8umgq4P6deCbcDcsF8aQRb31avtUOq+6DRs2bJzKZPsbh97qgBDwO4Rw7RW0NWhLCHi3FCGfD50aPQvjwN0gEIdEOQ5UjhC2rVGOQzU28dvUTmmHHXPAVC4EgeeBtoYZO11GUsKyb5ceawLMWedeHHiG0oAdX9f3Wh/XnB4EU2acXwqyeIQloCTSsNbbbEkn4L9BoJ1roQrneRYLFljEwP/MESMC9v/yVC4LrLzmpjI36vppDQ0rh9prBJ0YvOWCXhKV8TiqcQjzB0OwHjw9Pf3ToCtDyPcZBG2XKokGIanq6JIxXIP6fUGU4fVxn21RhhuCriPkcfsrY3tj7L9rCNHHgn4Q939AbM+JfZZpMvuN2SFo5VlBT4/r/FfsPzNIdNuHS86+u8k963NUQR0auDl74/GzVhqde4r3Fr//OniLFwjA6RuskuP0r43y8xfIzbZ9KlMlL/u9NTTMi1HlfeaQ+um1se8R0XP+OCrjB0OoHmwoJ/77YvzeR8Wvlb3SZIWfD5PHTQrJQGKtec3fFPcyjPTDuPf1ce+7RVm+Yo2uKJ+VUy2o+KPY7ojf7xjKbgUYQ383xjVMrzw5zrH/NVM5zdKIwUsny+O+VbgnBXzy+ebC6Bonxzk/Cv71se3fW/CnB22Lw/42jjszrmuJoSrg/fJT8123oWHZqJV7KpctpqKbH03F5GS6a9D6oF8NYpOaL02VR2ArMb+eSM+En3PNtIVAWaYyFfQBcZ9Ncb8uBPvgENKDBj9An2plaJQsq2uJZeozNVrZmRtGAbZ1uVQydX1bbKnAyiXPevXaLwhVALtU+V2PaWPrPlT82w/3YmJI4MhZdtBeuT7cYVEma8T1Jk/wUmxJC8VT3id4bGhYdRDwCZLvjTPr3KiYDwjhtsTtR6NiWrTw6tj/hfifM0ygyNe6XIHF+PTXu5yrvOReSaVXBj2o4JLq6GP742vAySDku7ZoaCAmNYKb7J+rXHX/XDT8D0JH318ynbT0S9eUDNaRTuqa2Pe8Lp16X+1yjNscgH8N/o2T5ajP2NBwq2FCEJ5Ycqjq4iDBItRiywwbv+3X1Qo6Moit67c837zghqqOnbj0olEFFxFmgl0FnYCPhXpMk0JEQOt2TItFl+B9Fz0nh/m7Sz7rs6fSJMCLlzc0Zzjs7JIJK6SYslhFXw7lbmj4uWEkHAJKOInutS7VXymNBMRswAfdHx//3z/oQVO54ikhV/l56OmeuijSNBe/1nRT5amSX8tZ99f/DGmZXkrdp708ZCqXHpoJevCwZQIIIuJHYAqY2urYJTUsDVWRoScAAAP6SURBVA0rjtrbjGnUS1qw8ElBjw26Uwj9R2P7yTjGsNQ7u1zeV1CHGV/i383iOn3gzfh6xsCbxbXrfnVb+Xrfyrs31F568ph67lKo5Piz6bRmbgmZvahkskmRbu8tOdXWyieeyfNJGPHSoMvj/o+JMh0fWsY5sX208oyu29CwNjGPcCOrkZ4R9GfBc8D1EyXiOCufCtbwm4pOQPCE+p0DLwBFJpiqwv7cMQij4TNlYm4IgDGH3m/BN+xs/MPKMLkljjHHnOAzYU6Nd/GM6enpr4WQn1oboDkakYaGtY1BwG8fdI+gu69Ldf34oEdNpZdab22BBIEkZodJqSTunADhDys58wtvvvPPFSMB5A2XCumYIKbGw4N+3f6SGWDY0qa27oh9jw4SRcfRZkjOexDA8tAQ9LvxF3hPDQ23SdSefD7P9Qg8zjXBxLMG3rxzGWXwJ5SMff9AyZlgxqgvLDl91VRO+wWGmCgidlzACBv47OE4DcWrh+PYuUJs8XpaOdjwQnE1OI5Xhh0Dz2SQz0ziitd1ObHlvKA3x3PcKejsoLfH/pk4Tgis8vbzyz1jpardjJ2BqKHhNo0q2Lcg4FeUVG2lTSKc+OeXnJeNl3FFRhY8YSSIeOf1XvuSyf3rJBRkkYfvD/zRQV8eeBqBABa8Oe5vGXgRbacN/Lklh7RMQrm0ZL4z6vbOKLuY+Lq+25HD8f7TS39z+K1MNxPwsQnTPOQNezQmBNxkEon+9bqSMMjOarqkHh1vjFh2FceY5bUtSGipRRUOLjkppar75ndrKPB6Zf85Rlaap5bMAqPnNiNOj69RIOicfe6BJ8TK8uySmoPQUQs7/H4I6YFBzwxyH88hqeQfBLmf4cKTy9Jyyzc0NAzYu6S9zu7dVjL18wtKCqLppK8YeHHkEj1QnzUUeOr6SfgQSur6I2NrP6HX87oWxxjjWHooqZ56TPbG4x56osFqaGhYBgidnp7zbUdJtVgqqV59HoiKLltqVdH7udolVfSLBl4v/taB5wdgb/9fmV1HnNDr2XuMhXkuAW+C3tAwByZt8vn4CeiVqcVbS9rqbHbqN0F9Wcke3Pj5K4dj2fB6ag6wJw28HlzeObze+5iSyR6o9tKi3qWket9DOeu2er9rbz7+v6GhoaGhoaGhoeEXHGMVf2wHL4SHsWq9G5OgoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaFhDeL/AbL/6dpoj+OHAAAAAElFTkSuQmCC",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var an="ai",ze="ai/ai",sn="https://wordpress.org/plugins/ai/",Me=Object.values(Ge()),cn=Me.some(e=>e.type==="ai_provider"),xt=[];for(let e of Me)e.type==="ai_provider"&&e.authentication.method==="api_key"&&xt.push(e.authentication.settingName);function Gt(){let[e,t]=(0,L.useState)(!1),[n,r]=(0,L.useState)(!1),o=(0,L.useRef)(null);(0,L.useEffect)(()=>{n&&o.current?.focus()},[n]);let a=(0,L.useRef)(Me.some(b=>b.type==="ai_provider"&&b.authentication.method==="api_key"&&b.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:l,canManagePlugins:m,hasConnectedProvider:d}=(0,de.useSelect)(b=>{let g=b(Oe.store),z=!!g.canUser("create",{kind:"root",name:"plugin"}),Y=g.getEntityRecord("root","site"),P=a||xt.some(E=>!!Y?.[E]),R=g.getEntityRecord("root","plugin",ze);return g.hasFinishedResolution("getEntityRecord",["root","plugin",ze])?R?{pluginStatus:R.status==="active"?"active":"inactive",canInstallPlugins:z,canManagePlugins:!0,hasConnectedProvider:P}:{pluginStatus:"not-installed",canInstallPlugins:z,canManagePlugins:z,hasConnectedProvider:P}:{pluginStatus:"checking",canInstallPlugins:z,canManagePlugins:void 0,hasConnectedProvider:P}},[]),{saveEntityRecord:u}=(0,de.useDispatch)(Oe.store),p=async()=>{t(!0);try{await u("root","plugin",{slug:an,status:"active"},{throwOnError:!0}),r(!0),le((0,h.__)("AI plugin installed and activated successfully."))}catch{le((0,h.__)("Failed to install the AI plugin."),"assertive")}finally{t(!1)}},x=async()=>{t(!0);try{await u("root","plugin",{plugin:ze,status:"active"},{throwOnError:!0}),r(!0),le((0,h.__)("AI plugin activated successfully."))}catch{le((0,h.__)("Failed to activate the AI plugin."),"assertive")}finally{t(!1)}};if(!cn||i==="checking"||i==="active"&&a&&!n||i==="not-installed"&&l===!1||i==="inactive"&&m===!1)return null;let f=i==="active"&&!d,G=i==="active"&&d&&(!a||n),K=i==="not-installed"||i==="inactive",M=()=>G?(0,h.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more."):f?(0,h.__)("The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more."):(0,h.__)("The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more."),v=()=>i==="not-installed"?{label:e?(0,h.__)("Installing\u2026"):(0,h.__)("Install AI Experiments"),disabled:e,onClick:e?void 0:p}:{label:e?(0,h.__)("Activating\u2026"):(0,h.__)("Activate AI Experiments"),disabled:e,onClick:e?void 0:x};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,L.createInterpolateElement)(M(),{strong:React.createElement("strong",null)})),React.createElement("div",{className:"ai-plugin-callout__actions"},K?React.createElement(te.Button,{ref:o,variant:"primary",size:"compact",isBusy:e,disabled:v().disabled,accessibleWhenDisabled:!0,onClick:v().onClick},v().label):n&&React.createElement(te.Button,{ref:o,variant:"secondary",size:"compact",disabled:!0,accessibleWhenDisabled:!0},(0,h.__)("AI Experiments enabled")),React.createElement(te.ExternalLink,{href:sn},(0,h.__)("Learn more")))),React.createElement(yt,null))}var zt=s(st()),{lock:Vr,unlock:De}=(0,zt.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var{store:dn}=De(ln);Lt();function un(){let{connectors:e,canInstallPlugins:t}=(0,Ot.useSelect)(r=>({connectors:De(r(dn)).getConnectors(),canInstallPlugins:r(Dt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),n=e.length===0;return React.createElement(Le,{title:(0,X.__)("Connectors"),headingLevel:1,subTitle:(0,X.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${n?" connectors-page--empty":""}`},n?React.createElement(y.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(y.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(y.__experimentalHeading,{level:2,size:15,weight:600},(0,X.__)("No connectors yet")),React.createElement(y.__experimentalText,{size:12},(0,X.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(y.Button,{variant:"secondary",href:"plugin-install.php"},(0,X.__)("Learn more"))):React.createElement(y.__experimentalVStack,{spacing:3},React.createElement(Gt,null),e.map(r=>r.render?React.createElement(r.render,{key:r.slug,slug:r.slug,label:r.label,description:r.description,icon:r.icon}):null)),t&&React.createElement("p",null,(0,Mt.createInterpolateElement)((0,X.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function fn(){return React.createElement(un,null)}var pn=fn;export{pn as stage}; +var Nt=Object.create;var He=Object.defineProperty;var qt=Object.getOwnPropertyDescriptor;var Vt=Object.getOwnPropertyNames;var Yt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var R=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var St=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Vt(t))!Xt.call(e,r)&&r!==n&&He(e,r,{get:()=>t[r],enumerable:!(o=qt(t,r))||o.enumerable});return e};var s=(e,t,n)=>(n=e!=null?Nt(Yt(e)):{},St(t||!e||!e.__esModule?He(n,"default",{value:e,enumerable:!0}):n,e));var k=R((On,Te)=>{Te.exports=window.wp.i18n});var U=R((Mn,Ne)=>{Ne.exports=window.wp.components});var oe=R((Rn,qe)=>{qe.exports=window.ReactJSXRuntime});var j=R((Bn,Ye)=>{Ye.exports=window.wp.element});var Z=R((Tn,Ae)=>{Ae.exports=window.React});var st=R((mr,it)=>{it.exports=window.wp.privateApis});var ie=R((jr,gt)=>{gt.exports=window.wp.data});var se=R((Hr,mt)=>{mt.exports=window.wp.coreData});var ht=R((Tr,vt)=>{vt.exports=window.wp.url});function Ve(e){var t,n,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(n=Ve(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}function Et(){for(var e,t,n=0,o="",r=arguments.length;n<r;n++)(e=arguments[n])&&(t=Ve(e))&&(o&&(o+=" "),o+=t);return o}var A=Et;var Xe=s(j(),1),Se=s(oe(),1),Ee=(0,Xe.forwardRef)(({children:e,className:t,ariaLabel:n,as:o="div",...r},a)=>(0,Se.jsx)(o,{ref:a,className:A("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...r,children:e}));Ee.displayName="NavigableRegion";var Ce=Ee;var We=s(Z(),1),Ze={};function ge(e,t){let n=We.useRef(Ze);return n.current===Ze&&(n.current=e(t)),n}function Ct(e,t){return function(o,...r){let a=new URL(e);return a.searchParams.set("code",o.toString()),r.forEach(i=>a.searchParams.append("args[]",i)),`${t} error #${o}; visit ${a} for the full message.`}}var At=Ct("https://base-ui.com/production-error","Base UI"),Ie=At;var S=s(Z(),1);function me(e,t,n,o){let r=ge(ke).current;return Zt(r,e,t,n,o)&&Ue(r,[e,t,n,o]),r.callback}function Ke(e){let t=ge(ke).current;return Wt(t,e)&&Ue(t,e),t.callback}function ke(){return{callback:null,cleanup:null,refs:[]}}function Zt(e,t,n,o,r){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==o||e.refs[3]!==r}function Wt(e,t){return e.refs.length!==t.length||e.refs.some((n,o)=>n!==t[o])}function Ue(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let o=Array(t.length).fill(null);for(let r=0;r<t.length;r+=1){let a=t[r];if(a!=null)switch(typeof a){case"function":{let i=a(n);typeof i=="function"&&(o[r]=i);break}case"object":{a.current=n;break}default:}}e.cleanup=()=>{for(let r=0;r<t.length;r+=1){let a=t[r];if(a!=null)switch(typeof a){case"function":{let i=o[r];typeof i=="function"?i():a(null);break}case"object":{a.current=null;break}default:}}}}}}var Fe=s(Z(),1);var Qe=s(Z(),1),It=parseInt(Qe.version,10);function Je(e){return It>=e}function ve(e){if(!Fe.isValidElement(e))return null;let t=e,n=t.props;return(Je(19)?n?.ref:t.ref)??null}function Q(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function _e(e,t){let n={};for(let o in e){let r=e[o];if(t?.hasOwnProperty(o)){let a=t[o](r);a!=null&&Object.assign(n,a);continue}r===!0?n[`data-${o.toLowerCase()}`]="":r&&(n[`data-${o.toLowerCase()}`]=r.toString())}return n}function $e(e,t){return typeof e=="function"?e(t):e}function et(e,t){return typeof e=="function"?e(t):e}var F={};function W(e,t,n,o,r){let a={...he(e,F)};return t&&(a=J(a,t)),n&&(a=J(a,n)),o&&(a=J(a,o)),r&&(a=J(a,r)),a}function tt(e){if(e.length===0)return F;if(e.length===1)return he(e[0],F);let t={...he(e[0],F)};for(let n=1;n<e.length;n+=1)t=J(t,e[n]);return t}function J(e,t){return nt(t)?t(e):Kt(e,t)}function Kt(e,t){if(!t)return e;for(let n in t){let o=t[n];switch(n){case"style":{e[n]=Q(e.style,o);break}case"className":{e[n]=be(e.className,o);break}default:kt(n,o)?e[n]=Ut(e[n],o):e[n]=o}}return e}function kt(e,t){let n=e.charCodeAt(0),o=e.charCodeAt(1),r=e.charCodeAt(2);return n===111&&o===110&&r>=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function nt(e){return typeof e=="function"}function he(e,t){return nt(e)?e(t):e??F}function Ut(e,t){return t?e?n=>{if(Jt(n)){let r=n;Qt(r);let a=t(r);return r.baseUIHandlerPrevented||e?.(r),a}let o=t(n);return e?.(n),o}:t:e}function Qt(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function be(e,t){return t?e?t+" "+e:t:e}function Jt(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Ft=Object.freeze([]),H=Object.freeze({});var _t="data-base-ui-swipe-ignore",$t="data-swipe-ignore",Un=`[${_t}]`,Qn=`[${$t}]`;var Pe=s(Z(),1);function rt(e,t,n={}){let o=t.render,r=en(t,n);if(n.enabled===!1)return null;let a=n.state??H;return nn(e,o,r,a)}function en(e,t={}){let{className:n,style:o,render:r}=e,{state:a=H,ref:i,props:l,stateAttributesMapping:u,enabled:d=!0}=t,f=d?$e(n,a):void 0,g=d?et(o,a):void 0,x=d?_e(a,u):H,p=d?Q(x,Array.isArray(l)?tt(l):l)??H:H;return typeof document<"u"&&(d?Array.isArray(i)?p.ref=Ke([p.ref,ve(r),...i]):p.ref=me(p.ref,ve(r),i):me(null,null)),d?(f!==void 0&&(p.className=be(p.className,f)),g!==void 0&&(p.style=Q(p.style,g)),p):H}var tn=Symbol.for("react.lazy");function nn(e,t,n,o){if(t){if(typeof t=="function")return t(n,o);let r=W(n,t.props);r.ref=n.ref;let a=t;return a?.$$typeof===tn&&(a=S.Children.toArray(t)[0]),S.cloneElement(a,r)}if(e&&typeof e=="string")return rn(e,n);throw new Error(Ie(8))}function rn(e,t){return e==="button"?(0,Pe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Pe.createElement)("img",{alt:"",...t,key:t.key}):S.createElement(e,t)}function ae(e){return rt(e.defaultTagName??"div",e,e)}var at=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='a407d6dd3d']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","a407d6dd3d"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#d8d8d8);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}')),document.head.appendChild(e)}var ot={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},we=(0,at.forwardRef)(function({children:t,intent:n="none",render:o,className:r,...a},i){return ae({render:o,defaultTagName:"span",ref:i,props:W(a,{className:A(ot.badge,ot[`is-${n}-intent`],r),children:t})})});var ct=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","b51ff41489"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var on={stack:"_19ce0419607e1896__stack"},an={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},I=(0,ct.forwardRef)(function({direction:t,gap:n,align:o,justify:r,wrap:a,render:i,...l},u){let d={gap:n&&an[n],alignItems:o,justifyContent:r,flexDirection:t,flexWrap:a};return ae({render:i,ref:u,props:W(l,{style:d,className:on.stack})})});var lt=s(U(),1),{Fill:dt,Slot:ut}=(0,lt.createSlotFill)("SidebarToggle");var w=s(oe(),1);function ft({headingLevel:e=2,breadcrumbs:t,badges:n,title:o,subTitle:r,actions:a,showSidebarToggle:i=!0}){let l=`h${e}`;return(0,w.jsxs)(I,{direction:"column",className:"admin-ui-page__header",render:(0,w.jsx)("header",{}),children:[(0,w.jsxs)(I,{direction:"row",justify:"space-between",gap:"sm",children:[(0,w.jsxs)(I,{direction:"row",gap:"sm",align:"center",justify:"start",children:[i&&(0,w.jsx)(ut,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,w.jsx)(l,{className:"admin-ui-page__header-title",children:o}),t,n]}),(0,w.jsx)(I,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),r&&(0,w.jsx)("p",{className:"admin-ui-page__header-subtitle",children:r})]})}var _=s(oe(),1);function pt({headingLevel:e,breadcrumbs:t,badges:n,title:o,subTitle:r,children:a,className:i,actions:l,ariaLabel:u,hasPadding:d=!1,showSidebarToggle:f=!0}){let g=A("admin-ui-page",i);return(0,_.jsxs)(Ce,{className:g,ariaLabel:u??(typeof o=="string"?o:""),children:[(o||t||n||l)&&(0,_.jsx)(ft,{headingLevel:e,breadcrumbs:t,badges:n,title:o,subTitle:r,actions:l,showSidebarToggle:f}),d?(0,_.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}pt.SidebarToggleFill=dt;var Le=pt;var y=s(U()),jt=s(ie()),Ht=s(j()),C=s(k()),Tt=s(se());import{privateApis as hn}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='31ffc51439']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","31ffc51439"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var te=s(U()),Oe=s(se()),ue=s(ie()),L=s(j()),m=s(k()),Mt=s(ht());import{speak as de}from"@wordpress/a11y";var le=s(U()),ee=s(j()),xe=s(k());import{__experimentalRegisterConnector as sn,__experimentalConnectorItem as cn,__experimentalDefaultConnectorSettings as ln}from"@wordpress/connectors";var ye=s(se()),ce=s(ie()),$=s(j()),c=s(k());import{speak as E}from"@wordpress/a11y";function bt({file:e,settingName:t,connectorName:n,isInstalled:o,isActivated:r,keySource:a="none",initialIsConnected:i=!1}){let[l,u]=(0,$.useState)(!1),[d,f]=(0,$.useState)(!1),[g,x]=(0,$.useState)(i),[p,D]=(0,$.useState)(null),h=e?.replace(/\.php$/,""),G=h?.includes("/")?h.split("/")[0]:h,{derivedPluginStatus:b,canManagePlugins:z,currentApiKey:v,canInstallPlugins:O}=(0,ce.useSelect)(V=>{let Y=V(ye.store),K=Y.getEntityRecord("root","site")?.[t]??"",X=!!Y.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:Y.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:K,canInstallPlugins:X};let je=Y.getEntityRecord("root","plugin",h);if(!Y.hasFinishedResolution("getEntityRecord",["root","plugin",h]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:K,canInstallPlugins:X};if(je)return{derivedPluginStatus:je.status==="active"?"active":"inactive",canManagePlugins:!0,currentApiKey:K,canInstallPlugins:X};let pe="not-installed";return r?pe="active":o&&(pe="inactive"),{derivedPluginStatus:pe,canManagePlugins:!1,currentApiKey:K,canInstallPlugins:X}},[h,t,o,r]),P=p??b,B=z,T=P==="active"&&g||p==="active"&&!!v,{saveEntityRecord:M,invalidateResolution:N}=(0,ce.useDispatch)(ye.store),fe=async()=>{if(G){f(!0);try{await M("root","plugin",{slug:G,status:"active"},{throwOnError:!0}),D("active"),N("getEntityRecord",["root","site"]),u(!0),E((0,c.sprintf)((0,c.__)("Plugin for %s installed and activated successfully."),n))}catch{E((0,c.sprintf)((0,c.__)("Failed to install plugin for %s."),n),"assertive")}finally{f(!1)}}},ne=async()=>{if(e){f(!0);try{await M("root","plugin",{plugin:h,status:"active"},{throwOnError:!0}),D("active"),N("getEntityRecord",["root","site"]),u(!0),E((0,c.sprintf)((0,c.__)("Plugin for %s activated successfully."),n))}catch{E((0,c.sprintf)((0,c.__)("Failed to activate plugin for %s."),n),"assertive")}finally{f(!1)}}};return{pluginStatus:P,canInstallPlugins:O,canActivatePlugins:B,isExpanded:l,setIsExpanded:u,isBusy:d,isConnected:T,currentApiKey:v,keySource:a,handleButtonClick:()=>{if(P==="not-installed"){if(O===!1)return;fe()}else if(P==="inactive"){if(B===!1)return;ne()}else u(!l)},getButtonLabel:()=>{if(d)return P==="not-installed"?(0,c.__)("Installing\u2026"):(0,c.__)("Activating\u2026");if(l)return(0,c.__)("Cancel");if(T)return(0,c.__)("Edit");switch(P){case"checking":return(0,c.__)("Checking\u2026");case"not-installed":return(0,c.__)("Install");case"inactive":return(0,c.__)("Activate");case"active":return(0,c.__)("Set up")}},saveApiKey:async V=>{let Y=v;try{let X=(await M("root","site",{[t]:V},{throwOnError:!0}))?.[t];if(V&&(X===Y||!X))throw new Error("It was not possible to connect to the provider using this key.");x(!0),E((0,c.sprintf)((0,c.__)("%s connected successfully."),n))}catch(re){throw console.error("Failed to save API key:",re),re}},removeApiKey:async()=>{try{await M("root","site",{[t]:""},{throwOnError:!0}),x(!1),E((0,c.sprintf)((0,c.__)("%s disconnected."),n))}catch(V){throw console.error("Failed to remove API key:",V),E((0,c.sprintf)((0,c.__)("Failed to disconnect %s."),n),"assertive"),V}}}}var Pt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),wt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Lt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),yt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),xt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));function Ge(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var dn={google:xt,openai:Pt,anthropic:wt,akismet:yt};function un(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=dn[e];return React.createElement(n||Lt,null)}var fn=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,xe.__)("Connected")),pn=()=>React.createElement(we,null,(0,xe.__)("Not available"));function gn({name:e,description:t,logo:n,authentication:o,plugin:r}){let a=o?.method==="api_key"?o:void 0,i=a?.settingName??"",l=a?.credentialsUrl??void 0,u=r?.file?.replace(/\.php$/,""),d=u?.includes("/")?u.split("/")[0]:u,f;try{l&&(f=new URL(l).hostname)}catch{}let{pluginStatus:g,canInstallPlugins:x,canActivatePlugins:p,isExpanded:D,setIsExpanded:h,isBusy:G,isConnected:b,currentApiKey:z,keySource:v,handleButtonClick:O,getButtonLabel:P,saveApiKey:B,removeApiKey:T}=bt({file:r?.file,settingName:i,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:a?.keySource,initialIsConnected:a?.isConnected}),M=v==="env"||v==="constant",N=g==="not-installed"&&x===!1||g==="inactive"&&p===!1,fe=!N,ne=(0,ee.useRef)(null),q=(0,ee.useRef)(!1);(0,ee.useEffect)(()=>{q.current&&!G&&(q.current=!1,ne.current?.focus())},[G,D,b]);let De=()=>{(g==="not-installed"||g==="inactive")&&(q.current=!0),O()};return React.createElement(cn,{className:d?`connector-item--${d}`:void 0,logo:n,name:e,description:t,actionArea:React.createElement(le.__experimentalHStack,{spacing:3,expanded:!1},b&&React.createElement(fn,null),N&&React.createElement(pn,null),fe&&React.createElement(le.Button,{ref:ne,variant:D||b?"tertiary":"secondary",size:"compact",onClick:De,disabled:g==="checking"||G,isBusy:G},P()))},D&&g==="active"&&React.createElement(ln,{key:b?"connected":"setup",initialValue:M?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":z,helpUrl:l,helpLabel:f,readOnly:b||M,keySource:v,onRemove:M?void 0:async()=>{q.current=!0;try{await T()}catch{q.current=!1}},onSave:async Be=>{await B(Be),q.current=!0,h(!1)}}))}function Gt(){let e=Ge(),t=n=>n.replace(/[^a-z0-9-_]/gi,"-");for(let[n,o]of Object.entries(e)){let{authentication:r}=o,a=t(n),i={name:o.name,description:o.description,type:o.type,logo:un(n,o.logoUrl),authentication:r,plugin:o.plugin};r.method==="api_key"&&(i.render=gn),sn(a,i)}}function zt(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var Ot="ai",ze="ai/ai",mn="https://wordpress.org/plugins/ai/",Me=Object.values(Ge()),vn=Me.some(e=>e.type==="ai_provider"),Rt=[];for(let e of Me)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Rt.push(e.authentication.settingName);function Dt(){let[e,t]=(0,L.useState)(!1),[n,o]=(0,L.useState)(!1),r=(0,L.useRef)(null);(0,L.useEffect)(()=>{n&&r.current?.focus()},[n]);let a=(0,L.useRef)(Me.some(z=>z.type==="ai_provider"&&z.authentication.method==="api_key"&&z.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:l,canManagePlugins:u,hasConnectedProvider:d}=(0,ue.useSelect)(z=>{let v=z(Oe.store),O=!!v.canUser("create",{kind:"root",name:"plugin"}),P=v.getEntityRecord("root","site"),B=a||Rt.some(N=>!!P?.[N]),T=v.getEntityRecord("root","plugin",ze);return v.hasFinishedResolution("getEntityRecord",["root","plugin",ze])?T?{pluginStatus:T.status==="active"?"active":"inactive",canInstallPlugins:O,canManagePlugins:!0,hasConnectedProvider:B}:{pluginStatus:"not-installed",canInstallPlugins:O,canManagePlugins:O,hasConnectedProvider:B}:{pluginStatus:"checking",canInstallPlugins:O,canManagePlugins:void 0,hasConnectedProvider:B}},[]),{saveEntityRecord:f}=(0,ue.useDispatch)(Oe.store),g=async()=>{t(!0);try{await f("root","plugin",{slug:Ot,status:"active"},{throwOnError:!0}),o(!0),de((0,m.__)("AI plugin installed and activated successfully."))}catch{de((0,m.__)("Failed to install the AI plugin."),"assertive")}finally{t(!1)}},x=async()=>{t(!0);try{await f("root","plugin",{plugin:ze,status:"active"},{throwOnError:!0}),o(!0),de((0,m.__)("AI plugin activated successfully."))}catch{de((0,m.__)("Failed to activate the AI plugin."),"assertive")}finally{t(!1)}};if(!vn||i==="checking"||i==="active"&&a&&!n||i==="not-installed"&&l===!1||i==="inactive"&&u===!1)return null;let p=i==="active"&&!d,D=i==="active"&&d&&(!a||n),h=i==="not-installed"||i==="inactive",G=()=>D?(0,m.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):p?(0,m.__)("The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,m.__)("The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),b=()=>i==="not-installed"?{label:e?(0,m.__)("Installing\u2026"):(0,m.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:g}:{label:e?(0,m.__)("Activating\u2026"):(0,m.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:x};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,L.createInterpolateElement)(G(),{strong:React.createElement("strong",null),a:React.createElement(te.ExternalLink,{href:mn})})),h?React.createElement(te.Button,{variant:"primary",size:"compact",isBusy:e,disabled:b().disabled,accessibleWhenDisabled:!0,onClick:b().onClick},b().label):React.createElement(te.Button,{ref:r,variant:"secondary",size:"compact",href:(0,Mt.addQueryArgs)("options-general.php",{page:Ot})},(0,m.__)("Control features in the AI plugin"))),React.createElement(zt,null))}var Bt=s(st()),{lock:kr,unlock:Re}=(0,Bt.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var{store:bn}=Re(hn);Gt();function Pn(){let{connectors:e,canInstallPlugins:t}=(0,jt.useSelect)(r=>({connectors:Re(r(bn)).getConnectors(),canInstallPlugins:r(Tt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),o=e.filter(r=>r.render).length===0;return React.createElement(Le,{title:(0,C.__)("Connectors"),headingLevel:1,subTitle:(0,C.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${o?" connectors-page--empty":""}`},o?React.createElement(y.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(y.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(y.__experimentalHeading,{level:2,size:15,weight:600},(0,C.__)("No connectors yet")),React.createElement(y.__experimentalText,{size:12},(0,C.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(y.Button,{variant:"secondary",href:"plugin-install.php"},(0,C.__)("Learn more"))):React.createElement(y.__experimentalVStack,{spacing:3},React.createElement(Dt,null),e.map(r=>r.render?React.createElement(r.render,{key:r.slug,slug:r.slug,name:r.name,description:r.description,type:r.type,logo:r.logo,authentication:r.authentication,plugin:r.plugin}):null)),t&&React.createElement("p",null,(0,Ht.createInterpolateElement)((0,C.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function wn(){return React.createElement(Pn,null)}var Ln=wn;export{Ln as stage}; diff --git a/src/wp-includes/build/routes/font-list/content.js b/src/wp-includes/build/routes/font-list/content.js index 1bfcf9c755eb0..ce44c77a0b26b 100644 --- a/src/wp-includes/build/routes/font-list/content.js +++ b/src/wp-includes/build/routes/font-list/content.js @@ -357,6 +357,21 @@ function useRefWithInit(init, initArg) { return ref; } +// node_modules/@base-ui/utils/esm/warn.js +var set; +if (true) { + set = /* @__PURE__ */ new Set(); +} +function warn(...messages) { + if (true) { + const messageKey = messages.join(" "); + if (!set.has(messageKey)) { + set.add(messageKey); + console.warn(`Base UI: ${messageKey}`); + } + } +} + // node_modules/@base-ui/react/esm/utils/useRenderElement.js var React5 = __toESM(require_react(), 1); @@ -644,6 +659,12 @@ function isSyntheticEvent(event) { var EMPTY_ARRAY = Object.freeze([]); var EMPTY_OBJECT = Object.freeze({}); +// node_modules/@base-ui/react/esm/utils/constants.js +var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; +var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; +var BASE_UI_SWIPE_IGNORE_SELECTOR = `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; +var LEGACY_SWIPE_IGNORE_SELECTOR = `[${LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; + // node_modules/@base-ui/react/esm/utils/useRenderElement.js var import_react = __toESM(require_react(), 1); function useRenderElement(element, componentProps, params = {}) { @@ -696,6 +717,9 @@ var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); function evaluateRenderProp(element, render, props, state) { if (render) { if (typeof render === "function") { + if (true) { + warnIfRenderPropLooksLikeComponent(render); + } return render(props, state); } const mergedProps = mergeProps(props, render.props); @@ -717,7 +741,18 @@ function evaluateRenderProp(element, render, props, state) { return renderTag(element, props); } } - throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage(8)); + throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8)); +} +function warnIfRenderPropLooksLikeComponent(renderFn) { + const functionName = renderFn.name; + if (functionName.length === 0) { + return; + } + const firstCharacterCode = functionName.charCodeAt(0); + if (firstCharacterCode < 65 || firstCharacterCode > 90) { + return; + } + warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); } function renderTag(Tag, props) { if (Tag === "button") { @@ -782,9 +817,9 @@ var previous_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primi // packages/ui/build-module/stack/stack.mjs var import_element3 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='b51ff41489']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "71d20935c2"); + style.setAttribute("data-wp-hash", "b51ff41489"); style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); document.head.appendChild(style); } @@ -886,7 +921,7 @@ function Page({ const classes = clsx_default("admin-ui-page", className); const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ - (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + (title || breadcrumbs || badges || actions) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( Header, { headingLevel, @@ -950,6 +985,7 @@ var VALID_SETTINGS = [ "background.backgroundRepeat", "background.backgroundSize", "background.backgroundPosition", + "background.gradient", "border.color", "border.radius", "border.radiusSizes", @@ -15481,9 +15517,9 @@ var { unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPI ); // routes/font-list/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='89af99528f']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='3e5ff62f49']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "89af99528f"); + style.setAttribute("data-wp-hash", "3e5ff62f49"); style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); document.head.appendChild(style); } diff --git a/src/wp-includes/build/routes/font-list/content.min.asset.php b/src/wp-includes/build/routes/font-list/content.min.asset.php index 379a4ad1e1e3f..0f5d92358d076 100644 --- a/src/wp-includes/build/routes/font-list/content.min.asset.php +++ b/src/wp-includes/build/routes/font-list/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '29daf8630955185dfb8c'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'd19524ae4135fa13d2bb'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/font-list/content.min.js b/src/wp-includes/build/routes/font-list/content.min.js index 4f393e4722364..2228acf1d08c1 100644 --- a/src/wp-includes/build/routes/font-list/content.min.js +++ b/src/wp-includes/build/routes/font-list/content.min.js @@ -1,12 +1,12 @@ -var Ju=Object.create;var sa=Object.defineProperty;var Qu=Object.getOwnPropertyDescriptor;var $u=Object.getOwnPropertyNames;var tf=Object.getPrototypeOf,ef=Object.prototype.hasOwnProperty;var ce=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var rf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of $u(e))!ef.call(t,s)&&s!==r&&sa(t,s,{get:()=>e[s],enumerable:!(o=Qu(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Ju(tf(t)):{},rf(e||!t||!t.__esModule?sa(r,"default",{value:t,enumerable:!0}):r,t));var it=Ht((ty,na)=>{na.exports=window.wp.i18n});var X=Ht((ey,aa)=>{aa.exports=window.wp.components});var z=Ht((ry,ia)=>{ia.exports=window.ReactJSXRuntime});var vt=Ht((sy,ua)=>{ua.exports=window.wp.element});var Ar=Ht((iy,pa)=>{pa.exports=window.React});var Rr=Ht((Vy,Aa)=>{Aa.exports=window.wp.primitives});var Ns=Ht((Qy,Ra)=>{Ra.exports=window.wp.privateApis});var mr=Ht(($y,Ea)=>{Ea.exports=window.wp.compose});var Ma=Ht((hv,za)=>{za.exports=window.wp.editor});var we=Ht((gv,Ga)=>{Ga.exports=window.wp.coreData});var de=Ht((yv,ja)=>{ja.exports=window.wp.data});var Ir=Ht((vv,Ua)=>{Ua.exports=window.wp.blocks});var ae=Ht((bv,Ha)=>{Ha.exports=window.wp.blockEditor});var Ya=Ht((kv,Wa)=>{Wa.exports=window.wp.styleEngine});var Ja=Ht((Dv,Ka)=>{"use strict";Ka.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var ei=Ht((zv,ti)=>{"use strict";var Ef=function(e){return If(e)&&!Lf(e)};function If(t){return!!t&&typeof t=="object"}function Lf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Df(t)}var Bf=typeof Symbol=="function"&&Symbol.for,Vf=Bf?Symbol.for("react.element"):60103;function Df(t){return t.$$typeof===Vf}function Nf(t){return Array.isArray(t)?[]:{}}function io(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Br(Nf(t),t,e):t}function zf(t,e,r){return t.concat(e).map(function(o){return io(o,r)})}function Mf(t,e){if(!e.customMerge)return Br;var r=e.customMerge(t);return typeof r=="function"?r:Br}function Gf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function Qa(t){return Object.keys(t).concat(Gf(t))}function $a(t,e){try{return e in t}catch{return!1}}function jf(t,e){return $a(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function Uf(t,e,r){var o={};return r.isMergeableObject(t)&&Qa(t).forEach(function(s){o[s]=io(t[s],r)}),Qa(e).forEach(function(s){jf(t,s)||($a(t,s)&&r.isMergeableObject(e[s])?o[s]=Mf(s,r)(t[s],e[s],r):o[s]=io(e[s],r))}),o}function Br(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||zf,r.isMergeableObject=r.isMergeableObject||Ef,r.cloneUnlessOtherwiseSpecified=io;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):Uf(t,e,r):io(e,r)}Br.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Br(o,s,r)},{})};var Hf=Br;ti.exports=Hf});var pn=Ht(($0,Qi)=>{Qi.exports=window.wp.keycodes});var ol=Ht((fb,rl)=>{rl.exports=window.wp.apiFetch});var Au=Ht((IF,Pu)=>{Pu.exports=window.wp.date});function la(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e<s;e++)t[e]&&(r=la(t[e]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}function of(){for(var t,e,r=0,o="",s=arguments.length;r<s;r++)(t=arguments[r])&&(e=la(t))&&(o&&(o+=" "),o+=e);return o}var be=of;var fa=u(vt(),1),ca=u(z(),1),da=(0,fa.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...s},a)=>(0,ca.jsx)(o,{ref:a,className:be("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));da.displayName="NavigableRegion";var ma=da;var ga=u(Ar(),1),ha={};function ks(t,e){let r=ga.useRef(ha);return r.current===ha&&(r.current=t(e)),r}function Os(t,...e){let r=new URL("https://base-ui.com/production-error");return r.searchParams.set("code",t.toString()),e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var fr=u(Ar(),1);function Ts(t,e,r,o){let s=ks(va).current;return sf(s,t,e,r,o)&&ba(s,[t,e,r,o]),s.callback}function ya(t){let e=ks(va).current;return nf(e,t)&&ba(e,t),e.callback}function va(){return{callback:null,cleanup:null,refs:[]}}function sf(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function nf(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function ba(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}t.cleanup=()=>{for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var xa=u(Ar(),1);var wa=u(Ar(),1),af=parseInt(wa.version,10);function Sa(t){return af>=t}function _s(t){if(!xa.isValidElement(t))return null;let e=t,r=e.props;return(Sa(19)?r?.ref:e.ref)??null}function to(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Ca(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Fa(t,e){return typeof t=="function"?t(e):t}function ka(t,e){return typeof t=="function"?t(e):t}var ro={};function To(t,e,r,o,s){let a={...Ps(t,ro)};return e&&(a=eo(a,e)),r&&(a=eo(a,r)),o&&(a=eo(a,o)),s&&(a=eo(a,s)),a}function Oa(t){if(t.length===0)return ro;if(t.length===1)return Ps(t[0],ro);let e={...Ps(t[0],ro)};for(let r=1;r<t.length;r+=1)e=eo(e,t[r]);return e}function eo(t,e){return Ta(e)?e(t):lf(t,e)}function lf(t,e){if(!e)return t;for(let r in e){let o=e[r];switch(r){case"style":{t[r]=to(t.style,o);break}case"className":{t[r]=As(t.className,o);break}default:uf(r,o)?t[r]=ff(t[r],o):t[r]=o}}return t}function uf(t,e){let r=t.charCodeAt(0),o=t.charCodeAt(1),s=t.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function Ta(t){return typeof t=="function"}function Ps(t,e){return Ta(t)?t(e):t??ro}function ff(t,e){return e?t?r=>{if(df(r)){let s=r;cf(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:e:t}function cf(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function As(t,e){return e?t?e+" "+t:e:t}function df(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var mf=Object.freeze([]),Je=Object.freeze({});var Rs=u(Ar(),1);function _a(t,e,r={}){let o=e.render,s=pf(e,r);if(r.enabled===!1)return null;let a=r.state??Je;return gf(t,o,s,a)}function pf(t,e={}){let{className:r,style:o,render:s}=t,{state:a=Je,ref:n,props:l,stateAttributesMapping:m,enabled:f=!0}=e,c=f?Fa(r,a):void 0,d=f?ka(o,a):void 0,g=f?Ca(a,m):Je,h=f?to(g,Array.isArray(l)?Oa(l):l)??Je:Je;return typeof document<"u"&&(f?Array.isArray(n)?h.ref=ya([h.ref,_s(s),...n]):h.ref=Ts(h.ref,_s(s),n):Ts(null,null)),f?(c!==void 0&&(h.className=As(h.className,c)),d!==void 0&&(h.style=to(h.style,d)),h):Je}var hf=Symbol.for("react.lazy");function gf(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=To(r,e.props);s.ref=r.ref;let a=e;return a?.$$typeof===hf&&(a=fr.Children.toArray(e)[0]),fr.cloneElement(a,s)}if(t&&typeof t=="string")return yf(t,r);throw new Error(Os(8))}function yf(t,e){return t==="button"?(0,Rs.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,Rs.createElement)("img",{alt:"",...e,key:e.key}):fr.createElement(t,e)}function Pa(t){return _a(t.defaultTagName??"div",t,t)}var _o=u(vt(),1),oo=(0,_o.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,_o.cloneElement)(t,{width:e,height:e,...r,ref:o}));var Po=u(Rr(),1),Es=u(z(),1),cr=(0,Es.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Es.jsx)(Po.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Ao=u(Rr(),1),Is=u(z(),1),dr=(0,Is.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Ao.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Ro=u(Rr(),1),Ls=u(z(),1),Bs=(0,Ls.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ls.jsx)(Ro.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Eo=u(Rr(),1),Vs=u(z(),1),Io=(0,Vs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Vs.jsx)(Eo.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Lo=u(Rr(),1),Ds=u(z(),1),Bo=(0,Ds.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Lo.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Ia=u(vt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","71d20935c2"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var vf={stack:"_19ce0419607e1896__stack"},bf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Er=(0,Ia.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},m){let f={gap:r&&bf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return Pa({render:n,ref:m,props:To(l,{style:f,className:vf.stack})})});var La=u(X(),1),{Fill:Ba,Slot:Va}=(0,La.createSlotFill)("SidebarToggle");var Ee=u(z(),1);function Da({headingLevel:t=2,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Ee.jsxs)(Er,{direction:"column",className:"admin-ui-page__header",render:(0,Ee.jsx)("header",{}),children:[(0,Ee.jsxs)(Er,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Ee.jsxs)(Er,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Ee.jsx)(Va,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Ee.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Ee.jsx)(Er,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Ee.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var so=u(z(),1);function Na({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,ariaLabel:m,hasPadding:f=!1,showSidebarToggle:c=!0}){let d=be("admin-ui-page",n);return(0,so.jsxs)(ma,{className:d,ariaLabel:m??(typeof o=="string"?o:""),children:[(o||e||r)&&(0,so.jsx)(Da,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:c}),f?(0,so.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Na.SidebarToggleFill=Ba;var zs=Na;var Xr=u(it()),Wu=u(X()),Yu=u(Ma()),Ss=u(we()),qu=u(de()),Zu=u(vt());var ju=u(X(),1),Uu=u(Ir(),1),Ug=u(de(),1),Hg=u(ae(),1),Xn=u(vt(),1),Wg=u(mr(),1);function Lr(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var Se=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var wf=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function Ms(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return Se(t,a)??Se(t,n);let l={};return wf.forEach(m=>{let f=Se(t,`settings${o}.${m}`)??Se(t,`settings.${m}`);f!==void 0&&(l=Lr(l,m.split("."),f))}),l}function Gs(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Lr(t,n.split("."),r)}var _f=u(Ya(),1);var Sf="1600px",xf="320px",Cf=1,Ff=.25,kf=.75,Of="14px";function qa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=xf,maximumViewportWidth:s=Sf,scaleFactor:a=Cf,minimumFontSizeLimit:n}){if(n=Ie(n)?n:Of,r){let b=Ie(r);if(!b?.unit||!b?.value)return null;let T=Ie(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),Ff),kf),D=no(b.value*I,3);T?.value&&D<T?.value?t=`${T.value}${T.unit}`:t=`${D}${b.unit}`}}let l=Ie(t),m=l?.unit||"rem",f=Ie(e,{coerceTo:m});if(!l||!f)return null;let c=Ie(t,{coerceTo:"rem"}),d=Ie(s,{coerceTo:m}),g=Ie(o,{coerceTo:m});if(!d||!g||!c)return null;let h=d.value-g.value;if(!h)return null;let v=no(g.value/100,3),_=no(v,3)+m,A=100*((f.value-l.value)/h),k=no((A||1)*a,3),x=`${c.value}${c.unit} + ((1vw - ${_}) * ${k})`;return`clamp(${t}, ${x}, ${e})`}function Ie(t,e={}){if(typeof t!="string"&&typeof t!="number")return null;isFinite(t)&&(t=`${t}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...e},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=t.toString().match(n);if(!l||l.length<3)return null;let[,m,f]=l,c=parseFloat(m);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:no(c,3),unit:f}:null}function no(t,e=3){let r=Math.pow(10,e);return Math.round(t*r)/r}function js(t){let e=t?.fluid;return e===!0||e&&typeof e=="object"&&Object.keys(e).length>0}function Tf(t){let e=t?.typography??{},r=t?.layout,o=Ie(r?.wideSize)?r?.wideSize:null;return js(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function Za(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!js(e?.typography)&&!js(t))return r;let o=Tf(e)?.fluid??{},s=qa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Pf=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>Za(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function Xa(t,e,r=[],o="slug",s){let a=[e?Se(t,["blocks",e,...r]):void 0,Se(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let m of l){let f=n[m];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||Xa(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Af(t,e,r,[o,s]=[]){let a=Pf.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=Xa(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,m=n[l];return Vo(t,e,m)}return r}function Rf(t,e,r,o=[]){let s=(e?Se(t?.settings??{},["blocks",e,"custom",...o]):void 0)??Se(t?.settings??{},["custom",...o]);return s?Vo(t,e,s):r}function Vo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=Se(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...m]=n;return l==="preset"?Af(t,e,r,m):l==="custom"?Rf(t,e,r,m):r}function Us(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=Se(t,a);return o?Vo(t,r,n):n}function Hs(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Lr(t,a.split("."),r)}var Ws=u(Ja(),1);function ao(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Ws.default)(t?.styles,e?.styles)&&(0,Ws.default)(t?.settings,e?.settings)}var si=u(ei(),1);function ri(t){return Object.prototype.toString.call(t)==="[object Object]"}function oi(t){var e,r;return ri(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ri(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function pr(t,e){return(0,si.default)(t,e,{isMergeableObject:oi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var Wf={grad:.9,turn:360,rad:360/(2*Math.PI)},Ue=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Zt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},ke=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},di=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ni=function(t){return{r:ke(t.r,0,255),g:ke(t.g,0,255),b:ke(t.b,0,255),a:ke(t.a)}},Ys=function(t){return{r:Zt(t.r),g:Zt(t.g),b:Zt(t.b),a:Zt(t.a,3)}},Yf=/^#([0-9a-f]{3,8})$/i,Do=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},mi=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},pi=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),m=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,m,o][f],g:255*[m,o,o,l,n,n][f],b:255*[n,n,m,o,o,l][f],a:s}},ai=function(t){return{h:di(t.h),s:ke(t.s,0,100),l:ke(t.l,0,100),a:ke(t.a)}},ii=function(t){return{h:Zt(t.h),s:Zt(t.s),l:Zt(t.l),a:Zt(t.a,3)}},li=function(t){return pi((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},lo=function(t){return{h:(e=mi(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},qf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Xf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Kf=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Xs={string:[[function(t){var e=Yf.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Zt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Zt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=Xf.exec(t)||Kf.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:ni({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=qf.exec(t)||Zf.exec(t);if(!e)return null;var r,o,s=ai({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(Wf[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return li(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return Ue(e)&&Ue(r)&&Ue(o)?ni({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=ai({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return li(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=(function(l){return{h:di(l.h),s:ke(l.s,0,100),v:ke(l.v,0,100),a:ke(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return pi(n)},"hsv"]]},ui=function(t,e){for(var r=0;r<e.length;r++){var o=e[r][0](t);if(o)return[o,e[r][1]]}return[null,void 0]},Jf=function(t){return typeof t=="string"?ui(t.trim(),Xs.string):typeof t=="object"&&t!==null?ui(t,Xs.object):[null,void 0]};var qs=function(t,e){var r=lo(t);return{h:r.h,s:ke(r.s+100*e,0,100),l:r.l,a:r.a}},Zs=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},fi=function(t,e){var r=lo(t);return{h:r.h,s:r.s,l:ke(r.l+100*e,0,100),a:r.a}},Ks=(function(){function t(e){this.parsed=Jf(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return Zt(Zs(this.rgba),2)},t.prototype.isDark=function(){return Zs(this.rgba)<.5},t.prototype.isLight=function(){return Zs(this.rgba)>=.5},t.prototype.toHex=function(){return e=Ys(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?Do(Zt(255*a)):"","#"+Do(r)+Do(o)+Do(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ys(this.rgba)},t.prototype.toRgbString=function(){return e=Ys(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return ii(lo(this.rgba))},t.prototype.toHslString=function(){return e=ii(lo(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=mi(this.rgba),{h:Zt(e.h),s:Zt(e.s),v:Zt(e.v),a:Zt(e.a,3)};var e},t.prototype.invert=function(){return Le({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Le(qs(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Le(qs(this.rgba,-e))},t.prototype.grayscale=function(){return Le(qs(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Le(fi(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Le(fi(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Le({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Zt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=lo(this.rgba);return typeof e=="number"?Le({h:e,s:r.s,l:r.l,a:r.a}):Zt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Le(e).toHex()},t})(),Le=function(t){return t instanceof Ks?t:new Ks(t)},ci=[],hi=function(t){t.forEach(function(e){ci.indexOf(e)<0&&(e(Ks,Xs),ci.push(e))})};var Js=u(vt(),1);var gi=u(vt(),1),Kt=(0,gi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var yi=u(z(),1);function uo({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Js.useMemo)(()=>pr(r,e),[r,e]),n=(0,Js.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,yi.jsx)(Kt.Provider,{value:n,children:t})}var He=u(X(),1),Vi=u(it(),1);var cc=u(de(),1),dc=u(we(),1);var vi=u(z(),1);function Qs({className:t,...e}){return(0,vi.jsx)(oo,{className:be(t,"global-styles-ui-icon-with-current-color"),...e})}var Qe=u(X(),1);var hr=u(z(),1);function Qf({icon:t,children:e,...r}){return(0,hr.jsxs)(Qe.__experimentalItem,{...r,children:[t&&(0,hr.jsxs)(Qe.__experimentalHStack,{justify:"flex-start",children:[(0,hr.jsx)(Qs,{icon:t,size:24}),(0,hr.jsx)(Qe.FlexItem,{children:e})]}),!t&&e]})}function Be(t){return(0,hr.jsx)(Qe.Navigator.Button,{as:Qf,...t})}var ec=u(X(),1);var rc=u(it(),1),ki=u(ae(),1);var $s=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},tn=function(t){return .2126*$s(t.r)+.7152*$s(t.g)+.0722*$s(t.b)};function bi(t){t.prototype.luminance=function(){return e=tn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,m,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=tn(a),m=tn(n),r=l>m?(l+.05)/(m+.05):(m+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Ae=u(vt(),1),xi=u(de(),1),Ci=u(we(),1),rn=u(it(),1);var Wt=u(it(),1),l1={link:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}],button:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}]},u1={"core/button":[{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}]};function en(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&en(t[r],e);return t}var No=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=No(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function fo(t,e){let r=No(structuredClone(t),e);return ao(r,t)}function wi(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function Si(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=wi(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=wi(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}hi([bi]);function kt(t,e,r="merged",o=!0){let{user:s,base:a,merged:n,onChange:l}=(0,Ae.useContext)(Kt),m=n;r==="base"?m=a:r==="user"&&(m=s);let f=(0,Ae.useMemo)(()=>Us(m,t,e,o),[m,t,e,o]),c=(0,Ae.useCallback)(d=>{let g=Hs(s,t,d,e);l(g)},[s,l,t,e]);return[f,c]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Ae.useContext)(Kt),l=a;r==="base"?l=s:r==="user"&&(l=o);let m=(0,Ae.useMemo)(()=>Ms(l,t,e),[l,t,e]),f=(0,Ae.useCallback)(c=>{let d=Gs(o,t,c,e);n(d)},[o,n,t,e]);return[m,f]}var $f=[];function tc({title:t,settings:e,styles:r}){return t===(0,rn.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function zo(t=[]){let{variationsFromTheme:e}=(0,xi.useSelect)(o=>({variationsFromTheme:o(Ci.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||$f}),[]),{user:r}=(0,Ae.useContext)(Kt);return(0,Ae.useMemo)(()=>{let o=structuredClone(r),s=en(o,t);s.title=(0,rn.__)("Default");let a=e.filter(l=>fo(l,t)).map(l=>pr(s,l)),n=[s,...a];return n?.length?n.filter(tc):[]},[t,r,e])}var Fi=u(Ns(),1),{lock:y1,unlock:yt}=(0,Fi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var on=u(z(),1),{useHasDimensionsPanel:x1,useHasTypographyPanel:C1,useHasColorPanel:F1,useSettingsForBlockElement:k1,useHasBackgroundPanel:O1}=yt(ki.privateApis);var Ve=u(X(),1);function Vr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],m=(n??[]).concat(l??[]).concat(a??[]),f=m.filter(({color:g})=>g===t),c=m.filter(({color:g})=>g===s),d=f.concat(c).concat(m).filter(({color:g})=>g!==e).slice(0,2);return{paletteColors:m,highlightedColors:d}}var _i=u(vt(),1),Pi=u(X(),1),nn=u(it(),1);function oc(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function sc(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Oi(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function sn(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Dr(t){let e={fontFamily:Oi(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=sc(r),s=oc(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function Ti(t){return{fontFamily:Oi(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var co=u(z(),1);function Mo({fontSize:t,variation:e}){let{base:r}=(0,_i.useContext)(Kt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=Si(o),l=a?Dr(a):{},m=n?Dr(n):{};return s&&(l.color=s,m.color=s),t&&(l.fontSize=t,m.fontSize=t),(0,co.jsxs)(Pi.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,co.jsx)("span",{style:m,children:(0,nn._x)("A","Uppercase letter A")}),(0,co.jsx)("span",{style:l,children:(0,nn._x)("a","Lowercase letter A")})]})}var Ai=u(X(),1);var Ri=u(z(),1);function Ei({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Vr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Ri.jsx)(Ai.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Bi=u(X(),1),Nr=u(mr(),1),gr=u(vt(),1);var $e=u(z(),1),Ii=248,Li=152,nc={leading:!0,trailing:!0};function ac({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Nr.useReducedMotion)(),[l,m]=(0,gr.useState)(!1),[f,{width:c}]=(0,Nr.useResizeObserver)(),[d,g]=(0,gr.useState)(c),[h,v]=(0,gr.useState)(),_=(0,Nr.useThrottle)(g,250,nc);(0,gr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,gr.useLayoutEffect)(()=>{let b=d?d/Ii:1,T=b-(h||0);(Math.abs(T)>.1||!h)&&v(b)},[d,h]);let A=c?c/Ii:1,k=h||A;return(0,$e.jsxs)($e.Fragment,{children:[(0,$e.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,$e.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:Li*k},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),tabIndex:-1,children:(0,$e.jsx)(Bi.__unstableMotion.div,{style:{height:Li*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var zr=ac;var me=u(z(),1),ic={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},lc={hover:{opacity:1},start:{opacity:.5}},uc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function fc({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[m="black"]=kt("color.text"),[f=m]=kt("elements.h1.color.text"),{paletteColors:c}=Vr();return(0,me.jsxs)(zr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:g})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:ic,style:{height:"100%",overflow:"hidden"},children:(0,me.jsxs)(Ve.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,me.jsx)(Mo,{fontSize:65*d,variation:o}),(0,me.jsx)(Ve.__experimentalVStack,{spacing:4*d,children:(0,me.jsx)(Ei,{normalizedColorSwatchSize:32,ratio:d})})]})},g),({key:d})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:r?lc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,me.jsx)(Ve.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:g},h)=>(0,me.jsx)("div",{style:{height:"100%",background:g,flexGrow:1}},h))})},d),({ratio:d,key:g})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:uc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,me.jsx)(Ve.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,me.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},g)]})}var an=fc;var Di=u(z(),1);var un=u(Ir(),1),Mr=u(it(),1),vr=u(X(),1),fn=u(de(),1),tr=u(vt(),1),Go=u(ae(),1),Ui=u(mr(),1);import{speak as gc}from"@wordpress/a11y";var Ni=u(Ir(),1),zi=u(de(),1),mc=u(X(),1);var pc=u(z(),1);function hc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function ln(t){let e=(0,zi.useSelect)(s=>{let{getBlockStyles:a}=s(Ni.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return hc(e,o)}var yr=u(X(),1),Mi=u(it(),1);var Gi=u(ae(),1);var ji=u(z(),1),{StateControl:r0}=yt(Gi.privateApis);var De=u(z(),1),{useHasDimensionsPanel:yc,useHasTypographyPanel:vc,useHasBorderPanel:bc,useSettingsForBlockElement:wc,useHasColorPanel:Sc}=yt(Go.privateApis);function xc(){let t=(0,fn.useSelect)(s=>s(un.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function Cc(t){let[e]=_t("",t),r=wc(e,t),o=vc(r),s=Sc(r),a=bc(r),n=yc(r),l=a||n,m=!!ln(t)?.length;return o||s||l||m}function Fc({block:t}){return Cc(t.name)?(0,De.jsx)(Be,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,De.jsxs)(vr.__experimentalHStack,{justify:"flex-start",children:[(0,De.jsx)(Go.BlockIcon,{icon:t.icon}),(0,De.jsx)(vr.FlexItem,{children:t.title})]})}):null}function kc({filterValue:t}){let e=xc(),r=(0,Ui.useDebounce)(gc,500),{isMatchingSearchTerm:o}=(0,fn.useSelect)(un.store),s=t?e.filter(n=>o(n,t)):e,a=(0,tr.useRef)(null);return(0,tr.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Mr.sprintf)((0,Mr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,De.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,De.jsx)(vr.__experimentalText,{align:"center",as:"p",children:(0,Mr.__)("No blocks found.")}):s.map(n=>(0,De.jsx)(Fc,{block:n},"menu-itemblock-"+n.name))})}var f0=(0,tr.memo)(kc);var Ac=u(Ir(),1),qi=u(ae(),1),cn=u(vt(),1),Rc=u(de(),1),Ec=u(we(),1),dn=u(X(),1),Zi=u(it(),1);var Oc=u(ae(),1),Hi=u(Ir(),1),Tc=u(X(),1),_c=u(vt(),1);var Pc=u(z(),1);var Wi=u(X(),1),Yi=u(z(),1);function xe({children:t,level:e=2}){return(0,Yi.jsx)(Wi.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var mn=u(z(),1);var{useHasDimensionsPanel:T0,useHasTypographyPanel:_0,useHasBorderPanel:P0,useSettingsForBlockElement:A0,useHasColorPanel:R0,useHasFiltersPanel:E0,useHasImageSettingsPanel:I0,useHasBackgroundPanel:L0,BackgroundPanel:B0,BorderPanel:V0,ColorPanel:D0,TypographyPanel:N0,DimensionsPanel:z0,FiltersPanel:M0,ImageSettingsPanel:G0,AdvancedPanel:j0}=yt(qi.privateApis);var Wh=u(it(),1),Yh=u(X(),1),qh=u(vt(),1);var Ic=u(X(),1);var Lc=u(z(),1);var Bc=u(it(),1),jo=u(X(),1);var Xi=u(z(),1);var Wo=u(X(),1);var Ki=u(X(),1);var Uo=u(z(),1),Vc=({variation:t,isFocused:e,withHoverView:r})=>(0,Uo.jsx)(zr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,Uo.jsx)(Ki.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Uo.jsx)(Mo,{variation:t,fontSize:85*o})},s)}),Ji=Vc;var $i=u(X(),1),br=u(vt(),1),tl=u(pn(),1),Ho=u(it(),1);var mo=u(z(),1);function Gr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,br.useState)(!1),{base:l,user:m,onChange:f}=(0,br.useContext)(Kt),c=(0,br.useMemo)(()=>{let A=pr(l,t);return o&&(A=No(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),g=A=>{A.keyCode===tl.ENTER&&(A.preventDefault(),d())},h=(0,br.useMemo)(()=>ao(m,t),[m,t]),v=t?.title;t?.description&&(v=(0,Ho.sprintf)((0,Ho._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item",{"is-active":h}),role:"button",onClick:d,onKeyDown:g,tabIndex:0,"aria-label":v,"aria-current":h,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,mo.jsx)(Kt.Provider,{value:c,children:s?(0,mo.jsx)($i.Tooltip,{text:t?.title,children:_}):_})}var wr=u(z(),1),el=["typography"];function Yo({title:t,gap:e=2}){let r=zo(el);return r?.length<=1?null:(0,wr.jsxs)(Wo.__experimentalVStack,{spacing:3,children:[t&&(0,wr.jsx)(xe,{level:3,children:t}),(0,wr.jsx)(Wo.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,wr.jsx)(Gr,{variation:o,properties:el,showTooltip:!0,children:()=>(0,wr.jsx)(Ji,{variation:o})},s))})]})}var Uh=u(it(),1),wo=u(X(),1);var Hh=u(vt(),1);var We=u(vt(),1),sr=u(de(),1),or=u(we(),1),vn=u(it(),1);var hn=u(ol(),1),sl=u(we(),1),nl="/wp/v2/font-families";function al(t){let{receiveEntityRecords:e}=t.dispatch(sl.store);e("postType","wp_font_family",[],void 0,!0)}async function il(t,e){let o=await(0,hn.default)({path:nl,method:"POST",body:t});return al(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function ll(t,e,r){let o={path:`${nl}/${t}/font-faces`,method:"POST",body:e},s=await(0,hn.default)(o);return al(r),{id:s.id,...s.font_face_settings}}var cl=u(X(),1);var Oe=u(it(),1),gn=["otf","ttf","woff","woff2"],ul={100:(0,Oe._x)("Thin","font weight"),200:(0,Oe._x)("Extra-light","font weight"),300:(0,Oe._x)("Light","font weight"),400:(0,Oe._x)("Normal","font weight"),500:(0,Oe._x)("Medium","font weight"),600:(0,Oe._x)("Semi-bold","font weight"),700:(0,Oe._x)("Bold","font weight"),800:(0,Oe._x)("Extra-bold","font weight"),900:(0,Oe._x)("Black","font weight")},fl={normal:(0,Oe._x)("Normal","font style"),italic:(0,Oe._x)("Italic","font style")};var{File:dl}=window,{kebabCase:Dc}=yt(cl.privateApis);function er(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function Nc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function qo(t){let e=ul[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":fl[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function zc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function ml(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=zc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function rr(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof dl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(sn(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function po(t,e="all"){let r=o=>{o.forEach(s=>{s.family===sn(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function jr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return Nc(e)||(e=encodeURI(e)),e}function pl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Dc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function hl(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((m,f)=>{let c=`file-${o}-${f}`;a.append(c,m,m.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function gl(t,e,r){let o=[];for(let a of e)try{let n=await ll(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function yl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new dl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function yn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function vl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function Zo(t,e,r=[]){let o=m=>m.slug===t.slug,s=m=>m.find(o),a=m=>m?r.filter(f=>!o(f)):[...r,t],n=m=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!m)return[...r,{...t,fontFace:[e]}];let c=m.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var bl=u(z(),1),ie=(0,We.createContext)({});ie.displayName="FontLibraryContext";function Mc({children:t}){let e=(0,sr.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,sr.useDispatch)(or.store),{globalStylesId:s}=(0,sr.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:E}=S(or.store);return{globalStylesId:E()}},[]),a=(0,or.useEntityRecord)("root","globalStyles",s),[n,l]=(0,We.useState)(!1),{records:m=[],isResolving:f}=(0,or.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(m||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,g]=_t("typography.fontFamilies"),h=async S=>{if(!a.record)return;let E=a.record,et=vl(E??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[v,_]=(0,We.useState)(""),[A,k]=(0,We.useState)(void 0),x=d?.theme?d.theme.map(S=>er(S,{source:"theme"})).sort((S,E)=>S.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(S=>er(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[],T=c?c.map(S=>er(S,{source:"custom"})).sort((S,E)=>S.name.localeCompare(E.name)):[];(0,We.useEffect)(()=>{v||k(void 0)},[v]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,We.useState)(new Set),D=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>D(S==="theme"?x:b),$=(S,E,et,ct)=>!E&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((E??"")+(et??"")),bt=(S,E)=>H(E)[S]||[];async function W(S){l(!0);try{let E=[],et=[];for(let at of S){let Ct=!1,Yt=await(0,sr.resolveSelect)(or.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Yt&&Yt.length>0?Yt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await il(pl(at),e));let St=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&yn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!yn(zt,J.fontFace)));let At=[],Ce=[];if(at?.fontFace?.length??!1){let zt=await gl(J.id,hl(at),e);At=zt?.successes,Ce=zt?.errors}(At?.length>0||St?.length>0)&&(J.fontFace=[...At],E.push(J)),J&&!at?.fontFace?.length&&E.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(Ce)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(E.length>0){let at=lt(E);await h(at)}if(ct.length>0){let at=new Error((0,vn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function y(S){if(!S?.id)throw new Error((0,vn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let E=L(S);return await h(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return g(ct),S.fontFace&&S.fontFace.forEach(at=>{po(at,"all")}),ct},lt=S=>{let E=ot(S),et={...d,custom:ml(d?.custom,E)};return g(et),K(E),et},ot=S=>S.map(({id:E,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(E=>{E.fontFace&&E.fontFace.forEach(et=>{let ct=jr(et?.src??"");ct&&rr(et,ct,"all")})})},gt=(S,E)=>{let et=d?.[S.source??""]??[],ct=Zo(S,E,et);g({...d,[S.source??""]:ct});let at=$(S.slug,E?.fontStyle??"",E?.fontWeight??"",S.source??"custom");if(E&&at)po(E,"all");else{let Ct=jr(E?.src??"");E&&Ct&&rr(E,Ct,"all")}},R=async S=>{if(!S.src)return;let E=jr(S.src);!E||I.has(E)||(rr(S,E,"document"),I.add(E))};return(0,bl.jsx)(ie.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:R,installFonts:W,uninstallFontFamily:y,toggleActivateFont:gt,getAvailableFontsOutline:D,modalTabOpen:v,setModalTabOpen:_,saveFontFamilies:h,isResolvingLibrary:f,isInstalling:n},children:t})}var Xo=Mc;var fs=u(it(),1),Cn=u(X(),1),eu=u(we(),1),Gh=u(de(),1);var ht=u(X(),1),go=u(we(),1),bn=u(de(),1),xr=u(vt(),1),Et=u(it(),1);var Hr=u(it(),1),Te=u(X(),1);var wl=u(X(),1),Ne=u(vt(),1);var Ko=u(z(),1);function Gc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function jc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function Uc({font:t,text:e}){let r=(0,Ne.useRef)(null),o=jc(t),s=Dr(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,Ne.useState)(!1),[m,f]=(0,Ne.useState)(!1),{loadFontFaceAsset:c}=(0,Ne.useContext)(ie),d=a??Gc(o),g=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),h=Ti(o),v={fontSize:"18px",lineHeight:1,opacity:m?"1":"0",...s,...h};return(0,Ne.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,Ne.useEffect)(()=>{(async()=>n&&(!g&&o.src&&await c(o),f(!0)))()},[o,n,c,g]),(0,Ko.jsx)("div",{ref:r,children:g?(0,Ko.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Ko.jsx)(wl.__experimentalText,{style:v,className:"font-library__font-variant_demo-text",children:e})})}var Ur=Uc;var ze=u(z(),1);function Hc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Te.useNavigator)();return(0,ze.jsx)(Te.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,ze.jsxs)(Te.Flex,{justify:"space-between",wrap:!1,children:[(0,ze.jsx)(Ur,{font:t}),(0,ze.jsxs)(Te.Flex,{justify:"flex-end",children:[(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(Te.__experimentalText,{className:"font-library__font-card__count",children:r||(0,Hr.sprintf)((0,Hr._n)("%d variant","%d variants",s),s)})}),(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(oo,{icon:(0,Hr.isRTL)()?cr:dr})})]})]})})}var ho=Hc;var Jo=u(vt(),1),Qo=u(X(),1);var Sr=u(z(),1);function Wc({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Jo.useContext)(ie),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+qo(t),l=(0,Jo.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(Qo.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(Qo.CheckboxControl,{checked:s,onChange:a,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Ur,{font:t,text:n,onClick:a})})]})})}var Sl=Wc;function xl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function $o(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?xl(e.fontWeight?.toString()??"normal")-xl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function Yc(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,xr.useContext)(ie),[m,f]=_t("typography.fontFamilies"),[c,d]=(0,xr.useState)(!1),[g,h]=(0,xr.useState)(null),[v]=_t("typography.fontFamilies",void 0,"base"),_=(0,bn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:S}=R(go.store);return S()},[]),k=!!(0,go.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=m?.theme?m.theme.map(R=>er(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name)):[],b=new Set(x.map(R=>R.slug)),T=v?.theme?x.concat(v.theme.filter(R=>!b.has(R.slug)).map(R=>er(R,{source:"theme"})).sort((R,S)=>R.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,bn.useSelect)(R=>{let{canUser:S}=R(go.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),D=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{h(null);try{await n(m),h({type:"success",message:(0,Et.__)("Font family updated successfully.")})}catch(R){h({type:"error",message:(0,Et.sprintf)((0,Et.__)("There was an error updating the font family. %s"),R.message)})}},bt=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:$o(R.fontFace):[],W=R=>{let S=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Et.sprintf)((0,Et.__)("%1$d/%2$d variants active"),E,S)};(0,xr.useEffect)(()=>{r(e)},[]);let y=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),lt=y>0&&y!==L,ot=y===L,K=()=>{if(!e||!e?.source)return;let R=m?.[e.source]?.filter(E=>E.slug!==e.slug)??[],S=ot?R:[...R,e];f({...m,[e.source]:S}),e.fontFace&&e.fontFace.forEach(E=>{if(ot)po(E,"all");else{let et=jr(E?.src??"");et&&rr(E,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[g&&(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Et.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Et._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(R=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:R,navigatorPath:"/fontFamily",variantsText:W(R),onClick:()=>{h(null),r(R)}})},R.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(qc,{font:e,isOpen:c,setIsOpen:d,setNotice:h,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Et.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),h(null)},label:(0,Et.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),g&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Et.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ot,onChange:K,indeterminate:lt}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((R,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(Sl,{font:e,face:R},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),D&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Et.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Et.__)("Update")})]})]})]})}function qc({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Et.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Et.__)("There was an error uninstalling the font family.")+f.message})}},m=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Et.__)("Cancel"),confirmButtonText:(0,Et.__)("Delete"),onCancel:m,onConfirm:l,size:"medium",children:t&&(0,Et.sprintf)((0,Et.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var ts=Yc;var Xt=u(vt(),1),nt=u(X(),1),Al=u(mr(),1),Rt=u(it(),1);var Rl=u(we(),1);function Cl(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Fl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function kl(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var yo=u(it(),1),le=u(X(),1),_e=u(z(),1);function Zc(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,_e.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,_e.jsx)(le.Card,{children:(0,_e.jsxs)(le.CardBody,{children:[(0,_e.jsx)(le.__experimentalHeading,{level:2,children:(0,yo.__)("Connect to Google Fonts")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:3}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,yo.__)("Allow access to Google Fonts")})]})})})}var Ol=Zc;var Tl=u(vt(),1),es=u(X(),1);var Cr=u(z(),1);function Xc({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+qo(t),n=(0,Tl.useId)();return(0,Cr.jsx)("div",{className:"font-library__font-card",children:(0,Cr.jsxs)(es.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Cr.jsx)(es.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Cr.jsx)("label",{htmlFor:n,children:(0,Cr.jsx)(Ur,{font:t,text:a,onClick:s})})]})})}var _l=Xc;var tt=u(z(),1),Kc={slug:"all",name:(0,Rt._x)("All","font categories")},Pl="wp-font-library-google-fonts-permission",Jc=500;function Qc({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Pl)==="true",[o,s]=(0,Xt.useState)(null),[a,n]=(0,Xt.useState)(null),[l,m]=(0,Xt.useState)([]),[f,c]=(0,Xt.useState)(1),[d,g]=(0,Xt.useState)({}),[h,v]=(0,Xt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Xt.useContext)(ie),{record:k,isResolving:x}=(0,Rl.useEntityRecord)("root","fontCollection",t);(0,Xt.useEffect)(()=>{let J=()=>{v(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Pl,"false"),window.dispatchEvent(new Event("storage"))};(0,Xt.useEffect)(()=>{s(null)},[t]),(0,Xt.useEffect)(()=>{m([])},[o]);let T=(0,Xt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[Kc,...Y],D=(0,Xt.useMemo)(()=>Cl(T,d),[T,d]),H=Math.max(window.innerHeight,Jc),$=Math.floor((H-417)/61),bt=Math.ceil(D.length/$),W=(f-1)*$,y=f*$,L=D.slice(W,y),lt=J=>{g({...d,category:J}),c(1)},K=(0,Al.debounce)(J=>{g({...d,search:J}),c(1)},300),gt=(J,St)=>{let At=Zo(J,St,l);m(At)},R=Fl(l),S=()=>{m([])},E=l.length>0?l[0]?.fontFace?.length??0:0,et=E>0&&E!==o?.fontFace?.length,ct=E===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),m(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async St=>{St.src&&(St.file=await yl(St.src))}))}catch{n({type:"error",message:(0,Rt.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Rt.__)("Fonts were installed successfully.")})}catch(St){n({type:"error",message:St.message})}S()},Yt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:$o(J.fontFace):[];if(h)return(0,tt.jsx)(Ol,{});let Ot=()=>t!=="google-fonts"||h||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Bs,label:(0,Rt.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Rt.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Rt.__)("Font name\u2026"),label:(0,Rt.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Rt.__)("Category"),value:d.category,onChange:lt,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!D.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(ho,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Rt.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),n(null)},label:(0,Rt.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Rt.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Yt(o).map((J,St)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(_l,{font:o,face:J,handleToggleVariant:gt,selected:kl(o.slug,o.fontFace?J:null,R)})},`face${St}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Rt.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Xt.createInterpolateElement)((0,Rt.sprintf)((0,Rt._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Rt.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,St)=>({label:(St+1).toString(),value:(St+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Rt.__)("Previous page"),icon:(0,Rt.isRTL)()?Io:Bo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Rt.__)("Next page"),icon:(0,Rt.isRTL)()?Bo:Io,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var rs=Qc;var Wr=u(it(),1),te=u(X(),1),bo=u(vt(),1);var os=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),El=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof os=="function"&&os;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof os=="function"&&os,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,m=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=m,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,g=this.input_.read(this.buf_,d,n);if(g<0)throw new Error("Unexpected end of input");if(g<n){this.eos_=1;for(var h=0;h<32;h++)this.buf_[d+g+h]=0}if(d===0){for(var h=0;h<32;h++)this.buf_[(n<<1)+h]=this.buf_[h];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=g<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&m]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var g=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,g},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,m=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,m=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,g=o("./context"),h=o("./prefix"),v=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,D=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,y=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),lt=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<<O)}return 0}function gt(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(N){var O=new gt,B,P,V;if(O.input_end=N.readBits(1),O.input_end&&N.readBits(1))return O;if(B=N.readBits(2)+4,B===7){if(O.is_metadata=!0,N.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=N.readBits(2),P===0)return O;for(V=0;V<P;V++){var dt=N.readBits(8);if(V+1===P&&P>1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<<V*8}}else for(V=0;V<B;++V){var rt=N.readBits(4);if(V+1===B&&B>4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<<V*4}return++O.meta_block_length,!O.input_end&&!O.is_metadata&&(O.is_uncompressed=N.readBits(1)),O}function S(N,O,B){var P=O,V;return B.fillBitWindow(),O+=B.val_>>>B.bit_pos_&D,V=N[O].bits-I,V>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=N[O].bits,N[O].value}function E(N,O,B,P){for(var V=0,dt=_,rt=0,st=0,wt=32768,ut=[],q=0;q<32;q++)ut.push(new c(0,0));for(d(ut,0,5,N,$);V<O&&wt>0;){var Ft=0,Jt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=ut[Ft].bits,Jt=ut[Ft].value&255,Jt<A)rt=0,B[V++]=Jt,Jt!==0&&(dt=Jt,wt-=32768>>Jt);else{var ge=Jt-14,ee,Qt,Vt=0;if(Jt===A&&(Vt=dt),st!==Vt&&(rt=0,st=Vt),ee=rt,rt>0&&(rt-=2,rt<<=ge),rt+=P.readBits(ge)+3,Qt=rt-ee,V+Qt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var $t=0;$t<Qt;$t++)B[V+$t]=st;V+=Qt,st!==0&&(wt-=Qt<<15-st)}}if(wt!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+wt);for(;V<O;V++)B[V]=0}function et(N,O,B,P){var V=0,dt,rt=new Uint8Array(N);if(P.readMoreInput(),dt=P.readBits(2),dt===1){for(var st,wt=N-1,ut=0,q=new Int32Array(4),Ft=P.readBits(2)+1;wt;)wt>>=1,++ut;for(st=0;st<Ft;++st)q[st]=P.readBits(ut)%N,rt[q[st]]=2;switch(rt[q[0]]=1,Ft){case 1:break;case 3:if(q[0]===q[1]||q[0]===q[2]||q[1]===q[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(q[0]===q[1])throw new Error("[ReadHuffmanCode] invalid symbols");rt[q[1]]=1;break;case 4:if(q[0]===q[1]||q[0]===q[2]||q[0]===q[3]||q[1]===q[2]||q[1]===q[3]||q[2]===q[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(rt[q[2]]=3,rt[q[3]]=3):rt[q[0]]=2;break}}else{var st,Jt=new Uint8Array($),ge=32,ee=0,Qt=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(st=dt;st<$&&ge>0;++st){var Vt=bt[st],$t=0,re;P.fillBitWindow(),$t+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Qt[$t].bits,re=Qt[$t].value,Jt[Vt]=re,re!==0&&(ge-=32>>re,++ee)}if(!(ee===1||ge===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Jt,N,rt,P)}if(V=d(O,B,I,rt,N),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ct(N,O,B){var P,V;return P=S(N,O,B),V=h.kBlockLengthPrefixCode[P].nbits,h.kBlockLengthPrefixCode[P].offset+B.readBits(V)}function at(N,O,B){var P;return N<W?(B+=y[N],B&=3,P=O[B]+L[N]):P=N-W+1,P}function Ct(N,O){for(var B=N[O],P=O;P;--P)N[P]=N[P-1];N[0]=B}function Yt(N,O){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<O;++P){var V=N[P];N[P]=B[V],V&&Ct(B,V)}}function Ot(N,O){this.alphabet_size=N,this.num_htrees=O,this.codes=new Array(O+O*lt[N+31>>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O<this.num_htrees;++O)this.htrees[O]=P,B=et(this.alphabet_size,this.codes,P,N),P+=B};function J(N,O){var B={num_htrees:null,context_map:null},P,V=0,dt,rt;O.readMoreInput();var st=B.num_htrees=K(O)+1,wt=B.context_map=new Uint8Array(N);if(st<=1)return B;for(P=O.readBits(1),P&&(V=O.readBits(4)+1),dt=[],rt=0;rt<H;rt++)dt[rt]=new c(0,0);for(et(st+V,dt,0,O),rt=0;rt<N;){var ut;if(O.readMoreInput(),ut=S(dt,0,O),ut===0)wt[rt]=0,++rt;else if(ut<=V)for(var q=1+(1<<ut)+O.readBits(ut);--q;){if(rt>=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=ut-V,++rt}return O.readBits(1)&&Yt(wt,N),B}function St(N,O,B,P,V,dt,rt){var st=B*2,wt=B,ut=S(O,B*H,rt),q;ut===0?q=V[st+(dt[wt]&1)]:ut===1?q=V[st+(dt[wt]-1&1)]+1:q=ut-2,q>=N&&(q-=N),P[B]=q,V[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,V,dt){var rt=V+1,st=B&V,wt=dt.pos_&m.IBUF_MASK,ut;if(O<8||dt.bit_pos_+(O<<3)<dt.bit_end_pos_){for(;O-- >0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(ut=dt.bit_end_pos_-dt.bit_pos_>>3,wt+ut>m.IBUF_MASK){for(var q=m.IBUF_MASK+1-wt,Ft=0;Ft<q;Ft++)P[st+Ft]=dt.buf_[wt+Ft];ut-=q,st+=q,O-=q,wt=0}for(var Ft=0;Ft<ut;Ft++)P[st+Ft]=dt.buf_[wt+Ft];if(st+=ut,O-=ut,st>=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft<st;Ft++)P[Ft]=P[rt+Ft]}for(;st+O>=rt;){if(ut=rt-st,dt.input_.read(P,st,ut)<ut)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");N.write(P,rt),O-=ut,st=0}if(dt.input_.read(P,st,O)<O)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");dt.reset()}function Ce(N){var O=N.bit_pos_+7&-8,B=N.readBits(O-N.bit_pos_);return B==0}function zt(N){var O=new n(N),B=new m(O);ot(B);var P=R(B);return P.meta_block_length}a.BrotliDecompressedSize=zt;function nr(N,O){var B=new n(N);O==null&&(O=zt(N));var P=new Uint8Array(O),V=new l(P);return Ke(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}a.BrotliDecompressBuffer=nr;function Ke(N,O){var B,P=0,V=0,dt=0,rt,st=0,wt,ut,q,Ft,Jt=[16,15,11,4],ge=0,ee=0,Qt=0,Vt=[new Ot(0,0),new Ot(0,0),new Ot(0,0)],$t,re,pt,Kr=128+m.READ_SIZE;pt=new m(N),dt=ot(pt),rt=(1<<dt)-16,wt=1<<dt,ut=wt-1,q=new Uint8Array(wt+Kr+f.maxDictionaryWordLength),Ft=wt,$t=[],re=[];for(var Tr=0;Tr<3*H;Tr++)$t[Tr]=new c(0,0),re[Tr]=new c(0,0);for(;!V;){var Mt=0,ko,Fe=[1<<28,1<<28,1<<28],Re=[0],ye=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pt,G,oe=null,j=null,Dt,F=null,C,ar=0,Tt=null,Q=0,ir=0,lr=null,It=0,xt=0,Gt=0,jt,qt;for(B=0;B<3;++B)Vt[B].codes=null,Vt[B].htrees=null;pt.readMoreInput();var Ge=R(pt);if(Mt=Ge.meta_block_length,P+Mt>O.buffer.length){var ur=new Uint8Array(P+Mt);ur.set(O.buffer),O.buffer=ur}if(V=Ge.input_end,ko=Ge.is_uncompressed,Ge.is_metadata){for(Ce(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(ko){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,ut,pt),P+=Mt;continue}for(B=0;B<3;++B)ye[B]=K(pt)+1,ye[B]>=2&&(et(ye[B]+2,$t,B*H,pt),et(b,re,B*H,pt),Fe[B]=ct(re,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<<i),Pt=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(ye[0]),B=0;B<ye[0];++B)pt.readMoreInput(),j[B]=pt.readBits(2)<<1;var Lt=J(ye[0]<<T,pt);Dt=Lt.num_htrees,oe=Lt.context_map;var se=J(ye[2]<<Y,pt);for(C=se.num_htrees,F=se.context_map,Vt[0]=new Ot(k,Dt),Vt[1]=new Ot(x,ye[1]),Vt[2]=new Ot(G,C),B=0;B<3;++B)Vt[B].decode(pt);for(Tt=0,lr=0,jt=j[Re[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1],qt=Vt[1].htrees[0];Mt>0;){var Nt,ne,ue,_r,xs,fe,ve,je,Jr,Pr,Qr;for(pt.readMoreInput(),Fe[1]===0&&(St(ye[1],$t,1,Re,w,M,pt),Fe[1]=ct(re,H,pt),qt=Vt[1].htrees[Re[1]]),--Fe[1],Nt=S(Vt[1].codes,qt,pt),ne=Nt>>6,ne>=2?(ne-=2,ve=-1):ve=0,ue=h.kInsertRangeLut[ne]+(Nt>>3&7),_r=h.kCopyRangeLut[ne]+(Nt&7),xs=h.kInsertLengthPrefixCode[ue].offset+pt.readBits(h.kInsertLengthPrefixCode[ue].nbits),fe=h.kCopyLengthPrefixCode[_r].offset+pt.readBits(h.kCopyLengthPrefixCode[_r].nbits),ee=q[P-1&ut],Qt=q[P-2&ut],Pr=0;Pr<xs;++Pr)pt.readMoreInput(),Fe[0]===0&&(St(ye[0],$t,0,Re,w,M,pt),Fe[0]=ct(re,0,pt),ar=Re[0]<<T,Tt=ar,jt=j[Re[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1]),Jr=g.lookup[xt+ee]|g.lookup[Gt+Qt],Q=oe[Tt+Jr],--Fe[0],Qt=ee,ee=S(Vt[0].codes,Vt[0].htrees[Q],pt),q[P&ut]=ee,(P&ut)===ut&&O.write(q,wt),++P;if(Mt-=xs,Mt<=0)break;if(ve<0){var Jr;if(pt.readMoreInput(),Fe[2]===0&&(St(ye[2],$t,2,Re,w,M,pt),Fe[2]=ct(re,2*H,pt),ir=Re[2]<<Y,lr=ir),--Fe[2],Jr=(fe>4?3:fe-2)&255,It=F[lr+Jr],ve=S(Vt[2].codes,Vt[2].htrees[It],pt),ve>=U){var Cs,ta,$r;ve-=U,ta=ve&Pt,ve>>=i,Cs=(ve>>1)+1,$r=(2+(ve&1)<<Cs)-4,ve=U+($r+pt.readBits(Cs)<<i)+ta}}if(je=at(ve,Jt,ge),je<0)throw new Error("[BrotliDecompress] invalid distance");if(P<rt&&st!==rt?st=P:st=rt,Qr=P&ut,je>st)if(fe>=f.minDictionaryWordLength&&fe<=f.maxDictionaryWordLength){var $r=f.offsetsByLength[fe],ea=je-st-1,ra=f.sizeBitsByLength[fe],Xu=(1<<ra)-1,Ku=ea&Xu,oa=ea>>ra;if($r+=Ku*fe,oa<v.kNumTransforms){var Fs=v.transformDictionaryWord(q,Qr,$r,fe,oa);if(Qr+=Fs,P+=Fs,Mt-=Fs,Qr>=Ft){O.write(q,wt);for(var Oo=0;Oo<Qr-Ft;Oo++)q[Oo]=q[Ft+Oo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);else{if(ve>0&&(Jt[ge&3]=je,++ge),fe>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);for(Pr=0;Pr<fe;++Pr)q[P&ut]=q[P-je&ut],(P&ut)===ut&&O.write(q,wt),++P,--Mt}ee=q[P-1&ut],Qt=q[P-2&ut]}P&=1073741823}}O.write(q,P&ut)}a.BrotliDecompress=Ke,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,m=n.toByteArray(o("./dictionary.bin.js"));return l(m)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="W5/fcQLn5gKf2XUbAiQ1XULX+TZz6ADToDsgqk6qVfeC0e4m6OO2wcQ1J76ZBVRV1fRkEsdu//62zQsFEZWSTCnMhcsQKlS2qOhuVYYMGCkV0fXWEoMFbESXrKEZ9wdUEsyw9g4bJlEt1Y6oVMxMRTEVbCIwZzJzboK5j8m4YH02qgXYhv1V+PM435sLVxyHJihaJREEhZGqL03txGFQLm76caGO/ovxKvzCby/3vMTtX/459f0igi7WutnKiMQ6wODSoRh/8Lx1V3Q99MvKtwB6bHdERYRY0hStJoMjNeTsNX7bn+Y7e4EQ3bf8xBc7L0BsyfFPK43dGSXpL6clYC/I328h54/VYrQ5i0648FgbGtl837svJ35L3Mot/+nPlNpWgKx1gGXQYqX6n+bbZ7wuyCHKcUok12Xjqub7NXZGzqBx0SD+uziNf87t7ve42jxSKQoW3nyxVrWIGlFShhCKxjpZZ5MeGna0+lBkk+kaN8F9qFBAFgEogyMBdcX/T1W/WnMOi/7ycWUQloEBKGeC48MkiwqJkJO+12eQiOFHMmck6q/IjWW3RZlany23TBm+cNr/84/oi5GGmGBZWrZ6j+zykVozz5fT/QH/Da6WTbZYYPynVNO7kxzuNN2kxKKWche5WveitPKAecB8YcAHz/+zXLjcLzkdDSktNIDwZE9J9X+tto43oJy65wApM3mDzYtCwX9lM+N5VR3kXYo0Z3t0TtXfgBFg7gU8oN0Dgl7fZlUbhNll+0uuohRVKjrEd8egrSndy5/Tgd2gqjA4CAVuC7ESUmL3DZoGnfhQV8uwnpi8EGvAVVsowNRxPudck7+oqAUDkwZopWqFnW1riss0t1z6iCISVKreYGNvQcXv+1L9+jbP8cd/dPUiqBso2q+7ZyFBvENCkkVr44iyPbtOoOoCecWsiuqMSML5lv+vN5MzUr+Dnh73G7Q1YnRYJVYXHRJaNAOByiaK6CusgFdBPE40r0rvqXV7tksKO2DrHYXBTv8P5ysqxEx8VDXUDDqkPH6NNOV/a2WH8zlkXRELSa8P+heNyJBBP7PgsG1EtWtNef6/i+lcayzQwQCsduidpbKfhWUDgAEmyhGu/zVTacI6RS0zTABrOYueemnVa19u9fT23N/Ta6RvTpof5DWygqreCqrDAgM4LID1+1T/taU6yTFVLqXOv+/MuQOFnaF8vLMKD7tKWDoBdALgxF33zQccCcdHx8fKIVdW69O7qHtXpeGr9jbbpFA+qRMWr5hp0s67FPc7HAiLV0g0/peZlW7hJPYEhZyhpSwahnf93/tZgfqZWXFdmdXBzqxGHLrQKxoAY6fRoBhgCRPmmGueYZ5JexTVDKUIXzkG/fqp/0U3hAgQdJ9zumutK6nqWbaqvm1pgu03IYR+G+8s0jDBBz8cApZFSBeuWasyqo2OMDKAZCozS+GWSvL/HsE9rHxooe17U3s/lTE+VZAk4j3dp6uIGaC0JMiqR5CUsabPyM0dOYDR7Ea7ip4USZlya38YfPtvrX/tBlhHilj55nZ1nfN24AOAi9BVtz/Mbn8AEDJCqJgsVUa6nQnSxv2Fs7l/NlCzpfYEjmPrNyib/+t0ei2eEMjvNhLkHCZlci4WhBe7ePZTmzYqlY9+1pxtS4GB+5lM1BHT9tS270EWUDYFq1I0yY/fNiAk4bk9yBgmef/f2k6AlYQZHsNFnW8wBQxCd68iWv7/35bXfz3JZmfGligWAKRjIs3IpzxQ27vAglHSiOzCYzJ9L9A1CdiyFvyR66ucA4jKifu5ehwER26yV7HjKqn5Mfozo7Coxxt8LWWPT47BeMxX8p0Pjb7hZn+6bw7z3Lw+7653j5sI8CLu5kThpMlj1m4c2ch3jGcP1FsT13vuK3qjecKTZk2kHcOZY40UX+qdaxstZqsqQqgXz+QGF99ZJLqr3VYu4aecl1Ab5GmqS8k/GV5b95zxQ5d4EfXUJ6kTS/CXF/aiqKDOT1T7Jz5z0PwDUcwr9clLN1OJGCiKfqvah+h3XzrBOiLOW8wvn8gW6qE8vPxi+Efv+UH55T7PQFVMh6cZ1pZQlzJpKZ7P7uWvwPGJ6DTlR6wbyj3Iv2HyefnRo/dv7dNx+qaa0N38iBsR++Uil7Wd4afwDNsrzDAK4fXZwvEY/jdKuIKXlfrQd2C39dW7ntnRbIp9OtGy9pPBn/V2ASoi/2UJZfS+xuGLH8bnLuPlzdTNS6zdyk8Dt/h6sfOW5myxh1f+zf3zZ3MX/mO9cQPp5pOx967ZA6/pqHvclNfnUFF+rq+Vd7alKr6KWPcIDhpn6v2K6NlUu6LrKo8b/pYpU/Gazfvtwhn7tEOUuXht5rUJdSf6sLjYf0VTYDgwJ81yaqKTUYej/tbHckSRb/HZicwGJqh1mAHB/IuNs9dc9yuvF3D5Xocm3elWFdq5oEy70dYFit79yaLiNjPj5UUcVmZUVhQEhW5V2Z6Cm4HVH/R8qlamRYwBileuh07CbEce3TXa2JmXWBf+ozt319psboobeZhVnwhMZzOeQJzhpTDbP71Tv8HuZxxUI/+ma3XW6DFDDs4+qmpERwHGBd2edxwUKlODRdUWZ/g0GOezrbzOZauFMai4QU6GVHV6aPNBiBndHSsV4IzpvUiiYyg6OyyrL4Dj5q/Lw3N5kAwftEVl9rNd7Jk5PDij2hTH6wIXnsyXkKePxbmHYgC8A6an5Fob/KH5GtC0l4eFso+VpxedtJHdHpNm+Bvy4C79yVOkrZsLrQ3OHCeB0Ra+kBIRldUGlDCEmq2RwXnfyh6Dz+alk6eftI2n6sastRrGwbwszBeDRS/Fa/KwRJkCzTsLr/JCs5hOPE/MPLYdZ1F1fv7D+VmysX6NpOC8aU9F4Qs6HvDyUy9PvFGDKZ/P5101TYHFl8pjj6wm/qyS75etZhhfg0UEL4OYmHk6m6dO192AzoIyPSV9QedDA4Ml23rRbqxMPMxf7FJnDc5FTElVS/PyqgePzmwVZ26NWhRDQ+oaT7ly7ell4s3DypS1s0g+tOr7XHrrkZj9+x/mJBttrLx98lFIaRZzHz4aC7r52/JQ4VjHahY2/YVXZn/QC2ztQb/sY3uRlyc5vQS8nLPGT/n27495i8HPA152z7Fh5aFpyn1GPJKHuPL8Iw94DuW3KjkURAWZXn4EQy89xiKEHN1mk/tkM4gYDBxwNoYvRfE6LFqsxWJtPrDGbsnLMap3Ka3MUoytW0cvieozOmdERmhcqzG+3HmZv2yZeiIeQTKGdRT4HHNxekm1tY+/n06rGmFleqLscSERzctTKM6G9P0Pc1RmVvrascIxaO1CQCiYPE15bD7c3xSeW7gXxYjgxcrUlcbIvO0r+Yplhx0kTt3qafDOmFyMjgGxXu73rddMHpV1wMubyAGcf/v5dLr5P72Ta9lBF+fzMJrMycwv+9vnU3ANIl1cH9tfW7af8u0/HG0vV47jNFXzFTtaha1xvze/s8KMtCYucXc1nzfd/MQydUXn/b72RBt5wO/3jRcMH9BdhC/yctKBIveRYPrNpDWqBsO8VMmP+WvRaOcA4zRMR1PvSoO92rS7pYEv+fZfEfTMzEdM+6X5tLlyxExhqLRkms5EuLovLfx66de5fL2/yX02H52FPVwahrPqmN/E0oVXnsCKhbi/yRxX83nRbUKWhzYceXOntfuXn51NszJ6MO73pQf5Pl4in3ec4JU8hF7ppV34+mm9r1LY0ee/i1O1wpd8+zfLztE0cqBxggiBi5Bu95v9l3r9r/U5hweLn+TbfxowrWDqdJauKd8+q/dH8sbPkc9ttuyO94f7/XK/nHX46MPFLEb5qQlNPvhJ50/59t9ft3LXu7uVaWaO2bDrDCnRSzZyWvFKxO1+vT8MwwunR3bX0CkfPjqb4K9O19tn5X50PvmYpEwHtiW9WtzuV/s76B1zvLLNkViNd8ySxIl/3orfqP90TyTGaf7/rx8jQzeHJXdmh/N6YDvbvmTBwCdxfEQ1NcL6wNMdSIXNq7b1EUzRy1/Axsyk5p22GMG1b+GxFgbHErZh92wuvco0AuOLXct9hvw2nw/LqIcDRRmJmmZzcgUa7JpM/WV/S9IUfbF56TL2orzqwebdRD8nIYNJ41D/hz37Fo11p2Y21wzPcn713qVGhqtevStYfGH4n69OEJtPvbbLYWvscDqc3Hgnu166+tAyLnxrX0Y5zoYjV++1sI7t5kMr02KT/+uwtkc+rZLOf/qn/s3nYCf13Dg8/sB2diJgjGqjQ+TLhxbzyue2Ob7X6/9lUwW7a+lbznHzOYy8LKW1C/uRPbQY3KW/0gO9LXunHLvPL97afba9bFtc9hmz7GAttjVYlCvQAiOwAk/gC5+hkLEs6tr3AZKxLJtOEwk2dLxTYWsIB/j/ToWtIWzo906FrSG8iaqqqqqqiIiIiAgzMzMzNz+AyK+01/zi8n8S+Y1MjoRaQ80WU/G8MBlO+53VPXANrWm4wzGUVZUjjBJZVdhpcfkjsmcWaO+UEldXi1e+zq+HOsCpknYshuh8pOLISJun7TN0EIGW2xTnlOImeecnoGW4raxe2G1T3HEvfYUYMhG+gAFOAwh5nK8mZhwJMmN7r224QVsNFvZ87Z0qatvknklyPDK3Hy45PgVKXji52Wen4d4PlFVVYGnNap+fSpFbK90rYnhUc6n91Q3AY9E0tJOFrcfZtm/491XbcG/jsViUPPX76qmeuiz+qY1Hk7/1VPM405zWVuoheLUimpWYdVzCmUdKHebMdzgrYrb8mL2eeLSnRWHdonfZa8RsOU9F37w+591l5FLYHiOqWeHtE/lWrBHcRKp3uhtr8yXm8LU/5ms+NM6ZKsqu90cFZ4o58+k4rdrtB97NADFbwmEG7lXqvirhOTOqU14xuUF2myIjURcPHrPOQ4lmM3PeMg7bUuk0nnZi67bXsU6H8lhqIo8TaOrEafCO1ARK9PjC0QOoq2BxmMdgYB9G/lIb9++fqNJ2s7BHGFyBNmZAR8J3KCo012ikaSP8BCrf6VI0X5xdnbhHIO+B5rbOyB54zXkzfObyJ4ecwxfqBJMLFc7m59rNcw7hoHnFZ0b00zee+gTqvjm61Pb4xn0kcDX4jvHM0rBXZypG3DCKnD/Waa/ZtHmtFPgO5eETx+k7RrVg3aSwm2YoNXnCs3XPQDhNn+Fia6IlOOuIG6VJH7TP6ava26ehKHQa2T4N0tcZ9dPCGo3ZdnNltsHQbeYt5vPnJezV/cAeNypdml1vCHI8M81nSRP5Qi2+mI8v/sxiZru9187nRtp3f/42NemcONa+4eVC3PCZzc88aZh851CqSsshe70uPxeN/dmYwlwb3trwMrN1Gq8jbnApcVDx/yDPeYs5/7r62tsQ6lLg+DiFXTEhzR9dHqv0iT4tgj825W+H3XiRUNUZT2kR9Ri0+lp+UM3iQtS8uOE23Ly4KYtvqH13jghUntJRAewuzNLDXp8RxdcaA3cMY6TO2IeSFRXezeWIjCqyhsUdMYuCgYTZSKpBype1zRfq8FshvfBPc6BAQWl7/QxIDp3VGo1J3vn42OEs3qznws+YLRXbymyB19a9XBx6n/owcyxlEYyFWCi+kG9F+EyD/4yn80+agaZ9P7ay2Dny99aK2o91FkfEOY8hBwyfi5uwx2y5SaHmG+oq/zl1FX/8irOf8Y3vAcX/6uLP6A6nvMO24edSGPjQc827Rw2atX+z2bKq0CmW9mOtYnr5/AfDa1ZfPaXnKtlWborup7QYx+Or2uWb+N3N//2+yDcXMqIJdf55xl7/vsj4WoPPlxLxtVrkJ4w/tTe3mLdATOOYwxcq52w5Wxz5MbPdVs5O8/lhfE7dPj0bIiPQ3QV0iqm4m3YX8hRfc6jQ3fWepevMqUDJd86Z4vwM40CWHnn+WphsGHfieF02D3tmZvpWD+kBpNCFcLnZhcmmrhpGzzbdA+sQ1ar18OJD87IOKOFoRNznaHPNHUfUNhvY1iU+uhvEvpKHaUn3qK3exVVyX4joipp3um7FmYJWmA+WbIDshRpbVRx5/nqstCgy87FGbfVB8yDGCqS+2qCsnRwnSAN6zgzxfdB2nBT/vZ4/6uxb6oH8b4VBRxiIB93wLa47hG3w2SL/2Z27yOXJFwZpSJaBYyvajA7vRRYNKqljXKpt/CFD/tSMr18DKKbwB0xggBePatl1nki0yvqW5zchlyZmJ0OTxJ3D+fsYJs/mxYN5+Le5oagtcl+YsVvy8kSjI2YGvGjvmpkRS9W2dtXqWnVuxUhURm1lKtou/hdEq19VBp9OjGvHEQSmrpuf2R24mXGheil8KeiANY8fW1VERUfBImb64j12caBZmRViZHbeVMjCrPDg9A90IXrtnsYCuZtRQ0PyrKDjBNOsPfKsg1pA02gHlVr0OXiFhtp6nJqXVzcbfM0KnzC3ggOENPE9VBdmHKN6LYaijb4wXxJn5A0FSDF5j+h1ooZx885Jt3ZKzO5n7Z5WfNEOtyyPqQEnn7WLv5Fis3PdgMshjF1FRydbNyeBbyKI1oN1TRVrVK7kgsb/zjX4NDPIRMctVeaxVB38Vh1x5KbeJbU138AM5KzmZu3uny0ErygxiJF7GVXUrPzFxrlx1uFdAaZFDN9cvIb74qD9tzBMo7L7WIEYK+sla1DVMHpF0F7b3+Y6S+zjvLeDMCpapmJo1weBWuxKF3rOocih1gun4BoJh1kWnV/Jmiq6uOhK3VfKxEHEkafjLgK3oujaPzY6SXg8phhL4TNR1xvJd1Wa0aYFfPUMLrNBDCh4AuGRTbtKMc6Z1Udj8evY/ZpCuMAUefdo69DZUngoqE1P9A3PJfOf7WixCEj+Y6t7fYeHbbxUAoFV3M89cCKfma3fc1+jKRe7MFWEbQqEfyzO2x/wrO2VYH7iYdQ9BkPyI8/3kXBpLaCpU7eC0Yv/am/tEDu7HZpqg0EvHo0nf/R/gRzUWy33/HXMJQeu1GylKmOkXzlCfGFruAcPPhaGqZOtu19zsJ1SO2Jz4Ztth5cBX6mRQwWmDwryG9FUMlZzNckMdK+IoMJv1rOWnBamS2w2KHiaPMPLC15hCZm4KTpoZyj4E2TqC/P6r7/EhnDMhKicZZ1ZwxuC7DPzDGs53q8gXaI9kFTK+2LTq7bhwsTbrMV8Rsfua5lMS0FwbTitUVnVa1yTb5IX51mmYnUcP9wPr8Ji1tiYJeJV9GZTrQhF7vvdU2OTU42ogJ9FDwhmycI2LIg++03C6scYhUyUuMV5tkw6kGUoL+mjNC38+wMdWNljn6tGPpRES7veqrSn5TRuv+dh6JVL/iDHU1db4c9WK3++OrH3PqziF916UMUKn8G67nN60GfWiHrXYhUG3yVWmyYak59NHj8t1smG4UDiWz2rPHNrKnN4Zo1LBbr2/eF9YZ0n0blx2nG4X+EKFxvS3W28JESD+FWk61VCD3z/URGHiJl++7TdBwkCj6tGOH3qDb0QqcOF9Kzpj0HUb/KyFW3Yhj2VMKJqGZleFBH7vqvf7WqLC3XMuHV8q8a4sTFuxUtkD/6JIBvKaVjv96ndgruKZ1k/BHzqf2K9fLk7HGXANyLDd1vxkK/i055pnzl+zw6zLnwXlVYVtfmacJgEpRP1hbGgrYPVN6v2lG+idQNGmwcKXu/8xEj/P6qe/sB2WmwNp6pp8jaISMkwdleFXYK55NHWLTTbutSUqjBfDGWo/Yg918qQ+8BRZSAHZbfuNZz2O0sov1Ue4CWlVg3rFhM3Kljj9ksGd/NUhk4nH+a5UN2+1i8+NM3vRNp7uQ6sqexSCukEVlVZriHNqFi5rLm9TMWa4qm3idJqppQACol2l4VSuvWLfta4JcXy3bROPNbXOgdOhG47LC0CwW/dMlSx4Jf17aEU3yA1x9p+Yc0jupXgcMuYNku64iYOkGToVDuJvlbEKlJqsmiHbvNrIVZEH+yFdF8DbleZ6iNiWwMqvtMp/mSpwx5KxRrT9p3MAPTHGtMbfvdFhyj9vhaKcn3At8Lc16Ai+vBcSp1ztXi7rCJZx/ql7TXcclq6Q76UeKWDy9boS0WHIjUuWhPG8LBmW5y2rhuTpM5vsLt+HOLh1Yf0DqXa9tsfC+kaKt2htA0ai/L2i7RKoNjEwztkmRU0GfgW1TxUvPFhg0V7DdfWJk5gfrccpYv+MA9M0dkGTLECeYwUixRzjRFdmjG7zdZIl3XKB9YliNKI31lfa7i2JG5C8Ss+rHe0D7Z696/V3DEAOWHnQ9yNahMUl5kENWS6pHKKp2D1BaSrrHdE1w2qNxIztpXgUIrF0bm15YML4b6V1k+GpNysTahKMVrrS85lTVo9OGJ96I47eAy5rYWpRf/mIzeoYU1DKaQCTUVwrhHeyNoDqHel+lLxr9WKzhSYw7vrR6+V5q0pfi2k3L1zqkubY6rrd9ZLvSuWNf0uqnkY+FpTvFzSW9Fp0b9l8JA7THV9eCi/PY/SCZIUYx3BU2alj7Cm3VV6eYpios4b6WuNOJdYXUK3zTqj5CVG2FqYM4Z7CuIU0qO05XR0d71FHM0YhZmJmTRfLlXEumN82BGtzdX0S19t1e+bUieK8zRmqpa4Qc5TSjifmaQsY2ETLjhI36gMR1+7qpjdXXHiceUekfBaucHShAOiFXmv3sNmGQyU5iVgnoocuonQXEPTFwslHtS8R+A47StI9wj0iSrtbi5rMysczFiImsQ+bdFClnFjjpXXwMy6O7qfjOr8Fb0a7ODItisjnn3EQO16+ypd1cwyaAW5Yzxz5QknfMO7643fXW/I9y3U2xH27Oapqr56Z/tEzglj6IbT6HEHjopiXqeRbe5mQQvxtcbDOVverN0ZgMdzqRYRjaXtMRd56Q4cZSmdPvZJdSrhJ1D9zNXPqAEqPIavPdfubt5oke2kmv0dztIszSv2VYuoyf1UuopbsYb+uX9h6WpwjpgtZ6fNNawNJ4q8O3CFoSbioAaOSZMx2GYaPYB+rEb6qjQiNRFQ76TvwNFVKD+BhH9VhcKGsXzmMI7BptU/CNWolM7YzROvpFAntsiWJp6eR2d3GarcYShVYSUqhmYOWj5E96NK2WvmYNTeY7Zs4RUEdv9h9QT4EseKt6LzLrqEOs3hxAY1MaNWpSa6zZx8F3YOVeCYMS88W+CYHDuWe4yoc6YK+djDuEOrBR5lvh0r+Q9uM88lrjx9x9AtgpQVNE8r+3O6Gvw59D+kBF/UMXyhliYUtPjmvXGY6Dk3x+kEOW+GtdMVC4EZTqoS/jmR0P0LS75DOc/w2vnri97M4SdbZ8qeU7gg8DVbERkU5geaMQO3mYrSYyAngeUQqrN0C0/vsFmcgWNXNeidsTAj7/4MncJR0caaBUpbLK1yBCBNRjEv6KvuVSdpPnEMJdsRRtqJ+U8tN1gXA4ePHc6ZT0eviI73UOJF0fEZ8YaneAQqQdGphNvwM4nIqPnXxV0xA0fnCT+oAhJuyw/q8jO0y8CjSteZExwBpIN6SvNp6A5G/abi6egeND/1GTguhuNjaUbbnSbGd4L8937Ezm34Eyi6n1maeOBxh3PI0jzJDf5mh/BsLD7F2GOKvlA/5gtvxI3/eV4sLfKW5Wy+oio+es/u6T8UU+nsofy57Icb/JlZHPFtCgd/x+bwt3ZT+xXTtTtTrGAb4QehC6X9G+8YT+ozcLxDsdCjsuOqwPFnrdLYaFc92Ui0m4fr39lYmlCaqTit7G6O/3kWDkgtXjNH4BiEm/+jegQnihOtfffn33WxsFjhfMd48HT+f6o6X65j7XR8WLSHMFkxbvOYsrRsF1bowDuSQ18Mkxk4qz2zoGPL5fu9h2Hqmt1asl3Q3Yu3szOc+spiCmX4AETBM3pLoTYSp3sVxahyhL8eC4mPN9k2x3o0xkiixIzM3CZFzf5oR4mecQ5+ax2wCah3/crmnHoqR0+KMaOPxRif1oEFRFOO/kTPPmtww+NfMXxEK6gn6iU32U6fFruIz8Q4WgljtnaCVTBgWx7diUdshC9ZEa5yKpRBBeW12r/iNc/+EgNqmhswNB8SBoihHXeDF7rrWDLcmt3V8GYYN7pXRy4DZjj4DJuUBL5iC3DQAaoo4vkftqVTYRGLS3mHZ7gdmdTTqbgNN/PTdTCOTgXolc88MhXAEUMdX0iy1JMuk5wLsgeu0QUYlz2S4skTWwJz6pOm/8ihrmgGfFgri+ZWUK2gAPHgbWa8jaocdSuM4FJYoKicYX/ZSENkg9Q1ZzJfwScfVnR2DegOGwCvmogaWJCLQepv9WNlU6QgsmOwICquU28Mlk3d9W5E81lU/5Ez0LcX6lwKMWDNluNKfBDUy/phJgBcMnfkh9iRxrdOzgs08JdPB85Lwo+GUSb4t3nC+0byqMZtO2fQJ4U2zGIr49t/28qmmGv2RanDD7a3FEcdtutkW8twwwlUSpb8QalodddbBfNHKDQ828BdE7OBgFdiKYohLawFYqpybQoxATZrheLhdI7+0Zlu9Q1myRcd15r9UIm8K2LGJxqTegntqNVMKnf1a8zQiyUR1rxoqjiFxeHxqFcYUTHfDu7rhbWng6qOxOsI+5A1p9mRyEPdVkTlE24vY54W7bWc6jMgZvNXdfC9/9q7408KDsbdL7Utz7QFSDetz2picArzrdpL8OaCHC9V26RroemtDZ5yNM/KGkWMyTmfnInEvwtSD23UcFcjhaE3VKzkoaEMKGBft4XbIO6forTY1lmGQwVmKicBCiArDzE+1oIxE08fWeviIOD5TznqH+OoHadvoOP20drMPe5Irg3XBQziW2XDuHYzjqQQ4wySssjXUs5H+t3FWYMHppUnBHMx/nYIT5d7OmjDbgD9F6na3m4l7KdkeSO3kTEPXafiWinogag7b52taiZhL1TSvBFmEZafFq2H8khQaZXuitCewT5FBgVtPK0j4xUHPfUz3Q28eac1Z139DAP23dgki94EC8vbDPTQC97HPPSWjUNG5tWKMsaxAEMKC0665Xvo1Ntd07wCLNf8Q56mrEPVpCxlIMVlQlWRxM3oAfpgIc+8KC3rEXUog5g06vt7zgXY8grH7hhwVSaeuvC06YYRAwpbyk/Unzj9hLEZNs2oxPQB9yc+GnL6zTgq7rI++KDJwX2SP8Sd6YzTuw5lV/kU6eQxRD12omfQAW6caTR4LikYkBB1CMOrvgRr/VY75+NSB40Cni6bADAtaK+vyxVWpf9NeKJxN2KYQ8Q2xPB3K1s7fuhvWbr2XpgW044VD6DRs0qXoqKf1NFsaGvKJc47leUV3pppP/5VTKFhaGuol4Esfjf5zyCyUHmHthChcYh4hYLQF+AFWsuq4t0wJyWgdwQVOZiV0efRHPoK5+E1vjz9wTJmVkITC9oEstAsyZSgE/dbicwKr89YUxKZI+owD205Tm5lnnmDRuP/JnzxX3gMtlrcX0UesZdxyQqYQuEW4R51vmQ5xOZteUd8SJruMlTUzhtVw/Nq7eUBcqN2/HVotgfngif60yKEtoUx3WYOZlVJuJOh8u59fzSDPFYtQgqDUAGyGhQOAvKroXMcOYY0qjnStJR/G3aP+Jt1sLVlGV8POwr/6OGsqetnyF3TmTqZjENfnXh51oxe9qVUw2M78EzAJ+IM8lZ1MBPQ9ZWSVc4J3mWSrLKrMHReA5qdGoz0ODRsaA+vwxXA2cAM4qlfzBJA6581m4hzxItQw5dxrrBL3Y6kCbUcFxo1S8jyV44q//+7ASNNudZ6xeaNOSIUffqMn4A9lIjFctYn2gpEPAb3f7p3iIBN8H14FUGQ9ct2hPsL+cEsTgUrR47uJVN4n4wt/wgfwwHuOnLd4yobkofy8JvxSQTA7rMpDIc608SlZFJfZYcmbT0tAHpPE8MrtQ42siTUNWxqvWZOmvu9f0JPoQmg+6l7sZWwyfi6PXkxJnwBraUG0MYG4zYHQz3igy/XsFkx5tNQxw43qvI9dU3f0DdhOUlHKjmi1VAr2Kiy0HZwD8VeEbhh0OiDdMYspolQsYdSwjCcjeowIXNZVUPmL2wwIkYhmXKhGozdCJ4lRKbsf4NBh/XnQoS92NJEWOVOFs2YhN8c5QZFeK0pRdAG40hqvLbmoSA8xQmzOOEc7wLcme9JOsjPCEgpCwUs9E2DohMHRhUeyGIN6TFvrbny8nDuilsDpzrH5mS76APoIEJmItS67sQJ+nfwddzmjPxcBEBBCw0kWDwd0EZCkNeOD7NNQhtBm7KHL9mRxj6U1yWU2puzlIDtpYxdH4ZPeXBJkTGAJfUr/oTCz/iypY6uXaR2V1doPxJYlrw2ghH0D5gbrhFcIxzYwi4a/4hqVdf2DdxBp6vGYDjavxMAAoy+1+3aiO6S3W/QAKNVXagDtvsNtx7Ks+HKgo6U21B+QSZgIogV5Bt+BnXisdVfy9VyXV+2P5fMuvdpAjM1o/K9Z+XnE4EOCrue+kcdYHqAQ0/Y/OmNlQ6OI33jH/uD1RalPaHpJAm2av0/xtpqdXVKNDrc9F2izo23Wu7firgbURFDNX9eGGeYBhiypyXZft2j3hTvzE6PMWKsod//rEILDkzBXfi7xh0eFkfb3/1zzPK/PI5Nk3FbZyTl4mq5BfBoVoqiPHO4Q4QKZAlrQ3MdNfi3oxIjvsM3kAFv3fdufurqYR3PSwX/mpGy/GFI/B2MNPiNdOppWVbs/gjF3YH+QA9jMhlAbhvasAHstB0IJew09iAkmXHl1/TEj+jvHOpOGrPRQXbPADM+Ig2/OEcUcpgPTItMtW4DdqgfYVI/+4hAFWYjUGpOP/UwNuB7+BbKOcALbjobdgzeBQfjgNSp2GOpxzGLj70Vvq5cw2AoYENwKLUtJUX8sGRox4dVa/TN4xKwaKcl9XawQR/uNus700Hf17pyNnezrUgaY9e4MADhEDBpsJT6y1gDJs1q6wlwGhuUzGR7C8kgpjPyHWwsvrf3yn1zJEIRa5eSxoLAZOCR9xbuztxFRJW9ZmMYfCFJ0evm9F2fVnuje92Rc4Pl6A8bluN8MZyyJGZ0+sNSb//DvAFxC2BqlEsFwccWeAl6CyBcQV1bx4mQMBP1Jxqk1EUADNLeieS2dUFbQ/c/kvwItbZ7tx0st16viqd53WsRmPTKv2AD8CUnhtPWg5aUegNpsYgasaw2+EVooeNKmrW3MFtj76bYHJm5K9gpAXZXsE5U8DM8XmVOSJ1F1WnLy6nQup+jx52bAb+rCq6y9WXl2B2oZDhfDkW7H3oYfT/4xx5VncBuxMXP2lNfhUVQjSSzSRbuZFE4vFawlzveXxaYKVs8LpvAb8IRYF3ZHiRnm0ADeNPWocwxSzNseG7NrSEVZoHdKWqaGEBz1N8Pt7kFbqh3LYmAbm9i1IChIpLpM5AS6mr6OAPHMwwznVy61YpBYX8xZDN/a+lt7n+x5j4bNOVteZ8lj3hpAHSx1VR8vZHec4AHO9XFCdjZ9eRkSV65ljMmZVzaej2qFn/qt1lvWzNZEfHxK3qOJrHL6crr0CRzMox5f2e8ALBB4UGFZKA3tN6F6IXd32GTJXGQ7DTi9j/dNcLF9jCbDcWGKxoKTYblIwbLDReL00LRcDPMcQuXLMh5YzgtfjkFK1DP1iDzzYYVZz5M/kWYRlRpig1htVRjVCknm+h1M5LiEDXOyHREhvzCGpFZjHS0RsK27o2avgdilrJkalWqPW3D9gmwV37HKmfM3F8YZj2ar+vHFvf3B8CRoH4kDHIK9mrAg+owiEwNjjd9V+FsQKYR8czJrUkf7Qoi2YaW6EVDZp5zYlqiYtuXOTHk4fAcZ7qBbdLDiJq0WNV1l2+Hntk1mMWvxrYmc8kIx8G3rW36J6Ra4lLrTOCgiOihmow+YnzUT19jbV2B3RWqSHyxkhmgsBqMYWvOcUom1jDQ436+fcbu3xf2bbeqU/ca+C4DOKE+e3qvmeMqW3AxejfzBRFVcwVYPq4L0APSWWoJu+5UYX4qg5U6YTioqQGPG9XrnuZ/BkxuYpe6Li87+18EskyQW/uA+uk2rpHpr6hut2TlVbKgWkFpx+AZffweiw2+VittkEyf/ifinS/0ItRL2Jq3tQOcxPaWO2xrG68GdFoUpZgFXaP2wYVtRc6xYCfI1CaBqyWpg4bx8OHBQwsV4XWMibZZ0LYjWEy2IxQ1mZrf1/UNbYCJplWu3nZ4WpodIGVA05d+RWSS+ET9tH3RfGGmNI1cIY7evZZq7o+a0bjjygpmR3mVfalkT/SZGT27Q8QGalwGlDOS9VHCyFAIL0a1Q7JiW3saz9gqY8lqKynFrPCzxkU4SIfLc9VfCI5edgRhDXs0edO992nhTKHriREP1NJC6SROMgQ0xO5kNNZOhMOIT99AUElbxqeZF8A3xrfDJsWtDnUenAHdYWSwAbYjFqQZ+D5gi3hNK8CSxU9i6f6ClL9IGlj1OPMQAsr84YG6ijsJpCaGWj75c3yOZKBB9mNpQNPUKkK0D6wgLH8MGoyRxTX6Y05Q4AnYNXMZwXM4eij/9WpsM/9CoRnFQXGR6MEaY+FXvXEO3RO0JaStk6OXuHVATHJE+1W+TU3bSZ2ksMtqjO0zfSJCdBv7y2d8DMx6TfVme3q0ZpTKMMu4YL/t7ciTNtdDkwPogh3Cnjx7qk08SHwf+dksZ7M2vCOlfsF0hQ6J4ehPCaHTNrM/zBSOqD83dBEBCW/F/LEmeh0nOHd7oVl3/Qo/9GUDkkbj7yz+9cvvu+dDAtx8NzCDTP4iKdZvk9MWiizvtILLepysflSvTLFBZ37RLwiriqyRxYv/zrgFd/9XVHh/OmzBvDX4mitMR/lUavs2Vx6cR94lzAkplm3IRNy4TFfu47tuYs9EQPIPVta4P64tV+sZ7n3ued3cgEx2YK+QL5+xms6osk8qQbTyuKVGdaX9FQqk6qfDnT5ykxk0VK7KZ62b6DNDUfQlqGHxSMKv1P0XN5BqMeKG1P4Wp5QfZDUCEldppoX0U6ss2jIko2XpURKCIhfaOqLPfShdtS37ZrT+jFRSH2xYVV1rmT/MBtRQhxiO4MQ3iAGlaZi+9PWBEIXOVnu9jN1f921lWLZky9bqbM3J2MAAI9jmuAx3gyoEUa6P2ivs0EeNv/OR+AX6q5SW6l5HaoFuS6jr6yg9limu+P0KYKzfMXWcQSfTXzpOzKEKpwI3YGXZpSSy2LTlMgfmFA3CF6R5c9xWEtRuCg2ZPUQ2Nb6dRFTNd4TfGHrnEWSKHPuRyiJSDAZ+KX0VxmSHjGPbQTLVpqixia2uyhQ394gBMt7C3ZAmxn/DJS+l1fBsAo2Eir/C0jG9csd4+/tp12pPc/BVJGaK9mfvr7M/CeztrmCO5qY06Edi4xAGtiEhnWAbzLy2VEyazE1J5nPmgU4RpW4Sa0TnOT6w5lgt3/tMpROigHHmexBGAMY0mdcDbDxWIz41NgdD6oxgHsJRgr5RnT6wZAkTOcStU4NMOQNemSO7gxGahdEsC+NRVGxMUhQmmM0llWRbbmFGHzEqLM4Iw0H7577Kyo+Zf+2cUFIOw93gEY171vQaM0HLwpjpdRR6Jz7V0ckE7XzYJ0TmY9znLdzkva0vNrAGGT5SUZ5uaHDkcGvI0ySpwkasEgZPMseYcu85w8HPdSNi+4T6A83iAwDbxgeFcB1ZM2iGXzFcEOUlYVrEckaOyodfvaYSQ7GuB4ISE0nYJc15X/1ciDTPbPCgYJK55VkEor4LvzL9S2WDy4xj+6FOqVyTAC2ZNowheeeSI5hA/02l8UYkv4nk9iaVn+kCVEUstgk5Hyq+gJm6R9vG3rhuM904he/hFmNQaUIATB1y3vw+OmxP4X5Yi6A5I5jJufHCjF9+AGNwnEllZjUco6XhsO5T5+R3yxz5yLVOnAn0zuS+6zdj0nTJbEZCbXJdtpfYZfCeCOqJHoE2vPPFS6eRLjIJlG69X93nfR0mxSFXzp1Zc0lt/VafDaImhUMtbnqWVb9M4nGNQLN68BHP7AR8Il9dkcxzmBv8PCZlw9guY0lurbBsmNYlwJZsA/B15/HfkbjbwPddaVecls/elmDHNW2r4crAx43feNkfRwsaNq/yyJ0d/p5hZ6AZajz7DBfUok0ZU62gCzz7x8eVfJTKA8IWn45vINLSM1q+HF9CV9qF3zP6Ml21kPPL3CXzkuYUlnSqT+Ij4tI/od5KwIs+tDajDs64owN7tOAd6eucGz+KfO26iNcBFpbWA5732bBNWO4kHNpr9D955L61bvHCF/mwSrz6eQaDjfDEANqGMkFc+NGxpKZzCD2sj/JrHd+zlPQ8Iz7Q+2JVIiVCuCKoK/hlAEHzvk/Piq3mRL1rT/fEh9hoT5GJmeYswg1otiKydizJ/fS2SeKHVu6Z3JEHjiW8NaTQgP5xdBli8nC57XiN9hrquBu99hn9zqwo92+PM2JXtpeVZS0PdqR5mDyDreMMtEws+CpwaRyyzoYtfcvt9PJIW0fJVNNi/FFyRsea7peLvJrL+5b4GOXJ8tAr+ATk9f8KmiIsRhqRy0vFzwRV3Z5dZ3QqIU8JQ/uQpkJbjMUMFj2F9sCFeaBjI4+fL/oN3+LQgjI4zuAfQ+3IPIPFQBccf0clJpsfpnBxD84atwtupkGqKvrH7cGNl/QcWcSi6wcVDML6ljOgYbo+2BOAWNNjlUBPiyitUAwbnhFvLbnqw42kR3Yp2kv2dMeDdcGOX5kT4S6M44KHEB/SpCfl7xgsUvs+JNY9G3O2X/6FEt9FyAn57lrbiu+tl83sCymSvq9eZbe9mchL7MTf/Ta78e80zSf0hYY5eUU7+ff14jv7Xy8qjzfzzzvaJnrIdvFb5BLWKcWGy5/w7+vV2cvIfwHqdTB+RuJK5oj9mbt0Hy94AmjMjjwYNZlNS6uiyxNnwNyt3gdreLb64p/3+08nXkb92LTkkRgFOwk1oGEVllcOj5lv1hfAZywDows0944U8vUFw+A/nuVq/UCygsrmWIBnHyU01d0XJPwriEOvx/ISK6Pk4y2w0gmojZs7lU8TtakBAdne4v/aNxmMpK4VcGMp7si0yqsiolXRuOi1Z1P7SqD3Zmp0CWcyK4Ubmp2SXiXuI5nGLCieFHKHNRIlcY3Pys2dwMTYCaqlyWSITwr2oGXvyU3h1Pf8eQ3w1bnD7ilocVjYDkcXR3Oo1BXgMLTUjNw2xMVwjtp99NhSVc5aIWrDQT5DHPKtCtheBP4zHcw4dz2eRdTMamhlHhtfgqJJHI7NGDUw1XL8vsSeSHyKqDtqoAmrQqsYwvwi7HW3ojWyhIa5oz5xJTaq14NAzFLjVLR12rRNUQ6xohDnrWFb5bG9yf8aCD8d5phoackcNJp+Dw3Due3RM+5Rid7EuIgsnwgpX0rUWh/nqPtByMhMZZ69NpgvRTKZ62ViZ+Q7Dp5r4K0d7EfJuiy06KuIYauRh5Ecrhdt2QpTS1k1AscEHvapNbU3HL1F2TFyR33Wxb5MvH5iZsrn3SDcsxlnnshO8PLwmdGN+paWnQuORtZGX37uhFT64SeuPsx8UOokY6ON85WdQ1dki5zErsJGazcBOddWJEKqNPiJpsMD1GrVLrVY+AOdPWQneTyyP1hRX/lMM4ZogGGOhYuAdr7F/DOiAoc++cn5vlf0zkMUJ40Z1rlgv9BelPqVOpxKeOpzKdF8maK+1Vv23MO9k/8+qpLoxrIGH2EDQlnGmH8CD31G8QqlyQIcpmR5bwmSVw9/Ns6IHgulCRehvZ/+VrM60Cu/r3AontFfrljew74skYe2uyn7JKQtFQBQRJ9ryGic/zQOsbS4scUBctA8cPToQ3x6ZBQu6DPu5m1bnCtP8TllLYA0UTQNVqza5nfew3Mopy1GPUwG5jsl0OVXniPmAcmLqO5HG8Hv3nSLecE9oOjPDXcsTxoCBxYyzBdj4wmnyEV4kvFDunipS8SSkvdaMnTBN9brHUR8xdmmEAp/Pdqk9uextp1t+JrtXwpN/MG2w/qhRMpSNxQ1uhg/kKO30eQ/FyHUDkWHT8V6gGRU4DhDMxZu7xXij9Ui6jlpWmQCqJg3FkOTq3WKneCRYZxBXMNAVLQgHXSCGSqNdjebY94oyIpVjMYehAiFx/tqzBXFHZaL5PeeD74rW5OysFoUXY8sebUZleFTUa/+zBKVTFDopTReXNuZq47QjkWnxjirCommO4L/GrFtVV21EpMyw8wyThL5Y59d88xtlx1g1ttSICDwnof6lt/6zliPzgVUL8jWBjC0o2D6Kg+jNuThkAlaDJsq/AG2aKA//A76avw2KNqtv223P+Wq3StRDDNKFFgtsFukYt1GFDWooFVXitaNhb3RCyJi4cMeNjROiPEDb4k+G3+hD8tsg+5hhmSc/8t2JTSwYoCzAI75doq8QTHe+E/Tw0RQSUDlU+6uBeNN3h6jJGX/mH8oj0i3caCNsjvTnoh73BtyZpsflHLq6AfwJNCDX4S98h4+pCOhGKDhV3rtkKHMa3EG4J9y8zFWI4UsfNzC/Rl5midNn7gwoN9j23HGCQQ+OAZpTTPMdiVow740gIyuEtd0qVxMyNXhHcnuXRKdw5wDUSL358ktjMXmAkvIB73BLa1vfF9BAUZInPYJiwxqFWQQBVk7gQH4ojfUQ/KEjn+A/WR6EEe4CtbpoLe1mzHkajgTIoE0SLDHVauKhrq12zrAXBGbPPWKCt4DGedq3JyGRbmPFW32bE7T20+73BatV/qQhhBWfWBFHfhYWXjALts38FemnoT+9bn1jDBMcUMmYgSc0e7GQjv2MUBwLU8ionCpgV+Qrhg7iUIfUY6JFxR0Y+ZTCPM+rVuq0GNLyJXX6nrUTt8HzFBRY1E/FIm2EeVA9NcXrj7S6YYIChVQCWr/m2fYUjC4j0XLkzZ8GCSLfmkW3PB/xq+nlXsKVBOj7vTvqKCOMq7Ztqr3cQ+N8gBnPaAps+oGwWOkbuxnRYj/x/WjiDclVrs22xMK4qArE1Ztk1456kiJriw6abkNeRHogaPRBgbgF9Z8i/tbzWELN4CvbqtrqV9TtGSnmPS2F9kqOIBaazHYaJ9bi3AoDBvlZasMluxt0BDXfhp02Jn411aVt6S4TUB8ZgFDkI6TP6gwPY85w+oUQSsjIeXVminrwIdK2ZAawb8Se6XOJbOaliQxHSrnAeONDLuCnFejIbp4YDtBcQCwMsYiRZfHefuEJqJcwKTTJ8sx5hjHmJI1sPFHOr6W9AhZ2NAod38mnLQk1gOz2LCAohoQbgMbUK9RMEA3LkiF7Sr9tLZp6lkciIGhE2V546w3Mam53VtVkGbB9w0Yk2XiRnCmbpxmHr2k4eSC0RuNbjNsUfDIfc8DZvRvgUDe1IlKdZTzcT4ZGEb53dp8VtsoZlyXzLHOdAbsp1LPTVaHvLA0GYDFMbAW/WUBfUAdHwqLFAV+3uHvYWrCfhUOR2i89qvCBoOb48usAGdcF2M4aKn79k/43WzBZ+xR1L0uZfia70XP9soQReeuhZiUnXFDG1T8/OXNmssTSnYO+3kVLAgeiY719uDwL9FQycgLPessNihMZbAKG7qwPZyG11G1+ZA3jAX2yddpYfmaKBlmfcK/V0mwIRUDC0nJSOPUl2KB8h13F4dlVZiRhdGY5farwN+f9hEb1cRi41ZcGDn6Xe9MMSTOY81ULJyXIHSWFIQHstVYLiJEiUjktlHiGjntN5/btB8Fu+vp28zl2fZXN+dJDyN6EXhS+0yzqpl/LSJNEUVxmu7BsNdjAY0jVsAhkNuuY0E1G48ej25mSt+00yPbQ4SRCVkIwb6ISvYtmJRPz9Zt5dk76blf+lJwAPH5KDF+vHAmACLoCdG2Adii6dOHnNJnTmZtoOGO8Q1jy1veMw6gbLFToQmfJa7nT7Al89mRbRkZZQxJTKgK5Kc9INzmTJFp0tpAPzNmyL/F08bX3nhCumM/cR/2RPn9emZ3VljokttZD1zVWXlUIqEU7SLk5I0lFRU0AcENXBYazNaVzsVHA/sD3o9hm42wbHIRb/BBQTKzAi8s3+bMtpOOZgLdQzCYPfX3UUxKd1WYVkGH7lh/RBBgMZZwXzU9+GYxdBqlGs0LP+DZ5g2BWNh6FAcR944B+K/JTWI3t9YyVyRhlP4CCoUk/mmF7+r2pilVBjxXBHFaBfBtr9hbVn2zDuI0kEOG3kBx8CGdPOjX1ph1POOZJUO1JEGG0jzUy2tK4X0CgVNYhmkqqQysRNtKuPdCJqK3WW57kaV17vXgiyPrl4KEEWgiGF1euI4QkSFHFf0TDroQiLNKJiLbdhH0YBhriRNCHPxSqJmNNoketaioohqMglh6wLtEGWSM1EZbQg72h0UJAIPVFCAJOThpQGGdKfFovcwEeiBuZHN2Ob4uVM7+gwZLz1D9E7ta4RmMZ24OBBAg7Eh6dLXGofZ4U2TFOCQMKjwhVckjrydRS+YaqCw1kYt6UexuzbNEDyYLTZnrY1PzsHZJT4U+awO2xlqTSYu6n/U29O2wPXgGOEKDMSq+zTUtyc8+6iLp0ivav4FKx+xxVy4FxhIF/pucVDqpsVe2jFOfdZhTzLz2QjtzvsTCvDPU7bzDH2eXVKUV9TZ+qFtaSSxnYgYdXKwVreIgvWhT9eGDB2OvnWyPLfIIIfNnfIxU8nW7MbcH05nhlsYtaW9EZRsxWcKdEqInq1DiZPKCz7iGmAU9/ccnnQud2pNgIGFYOTAWjhIrd63aPDgfj8/sdlD4l+UTlcxTI9jbaMqqN0gQxSHs60IAcW3cH4p3V1aSciTKB29L1tz2eUQhRiTgTvmqc+sGtBNh4ky0mQJGsdycBREP+fAaSs1EREDVo5gvgi5+aCN7NECw30owbCc1mSpjiahyNVwJd1jiGgzSwfTpzf2c5XJvG/g1n0fH88KHNnf+u7ZiRMlXueSIsloJBUtW9ezvsx9grfsX/FNxnbxU1Lvg0hLxixypHKGFAaPu0xCD8oDTeFSyfRT6s8109GMUZL8m2xXp8X2dpPCWWdX84iga4BrTlOfqox4shqEgh/Ht4qRst52cA1xOIUuOxgfUivp6v5f8IVyaryEdpVk72ERAwdT4aoY1usBgmP+0m06Q216H/nubtNYxHaOIYjcach3A8Ez/zc0KcShhel0HCYjFsA0FjYqyJ5ZUH1aZw3+zWC0hLpM6GDfcAdn9fq2orPmZbW6XXrf+Krc9RtvII5jeD3dFoT1KwZJwxfUMvc5KLfn8rROW23Jw89sJ2a5dpB3qWDUBWF2iX8OCuKprHosJ2mflBR+Wqs86VvgI/XMnsqb97+VlKdPVysczPj8Jhzf+WCvGBHijAqYlavbF60soMWlHbvKT+ScvhprgeTln51xX0sF+Eadc/l2s2a5BgkVbHYyz0E85p0LstqH+gEGiR84nBRRFIn8hLSZrGwqjZ3E29cuGi+5Z5bp7EM8MWFa9ssS/vy4VrDfECSv7DSU84DaP0sXI3Ap4lWznQ65nQoTKRWU30gd7Nn8ZowUvGIx4aqyXGwmA/PB4qN8msJUODezUHEl0VP9uo+cZ8vPFodSIB4C7lQYjEFj8yu49C2KIV3qxMFYTevG8KqAr0TPlkbzHHnTpDpvpzziAiNFh8xiT7C/TiyH0EguUw4vxAgpnE27WIypV+uFN2zW7xniF/n75trs9IJ5amB1zXXZ1LFkJ6GbS/dFokzl4cc2mamVwhL4XU0Av5gDWAl+aEWhAP7t2VIwU+EpvfOPDcLASX7H7lZpXA2XQfbSlD4qU18NffNPoAKMNSccBfO9YVVgmlW4RydBqfHAV7+hrZ84WJGho6bNT0YMhxxLdOx/dwGj0oyak9aAkNJ8lRJzUuA8sR+fPyiyTgUHio5+Pp+YaKlHrhR41jY5NESPS3x+zTMe0S2HnLOKCOQPpdxKyviBvdHrCDRqO+l96HhhNBLXWv4yEMuEUYo8kXnYJM8oIgVM4XJ+xXOev4YbWeqsvgq0lmw4/PiYr9sYLt+W5EAuYSFnJEan8CwJwbtASBfLBBpJZiRPor/aCJBZsM+MhvS7ZepyHvU8m5WSmaZnxuLts8ojl6KkS8oSAHkq5GWlCB/NgJ5W3rO2Cj1MK7ahxsCrbTT3a0V/QQH+sErxV4XUWDHx0kkFy25bPmBMBQ6BU3HoHhhYcJB9JhP6NXUWKxnE0raXHB6U9KHpWdQCQI72qevp5fMzcm+AvC85rsynVQhruDA9fp9COe7N56cg1UKGSas89vrN+WlGLYTwi5W+0xYdKEGtGCeNJwXKDU0XqU5uQYnWsMwTENLGtbQMvoGjIFIEMzCRal4rnBAg7D/CSn8MsCvS+FDJJAzoiioJEhZJgAp9n2+1Yznr7H+6eT4YkJ9Mpj60ImcW4i4iHDLn9RydB8dx3QYm3rsX6n4VRrZDsYK6DCGwkwd5n3/INFEpk16fYpP6JtMQpqEMzcOfQGAHXBTEGzuLJ03GYQL9bmV2/7ExDlRf+Uvf1sM2frRtCWmal12pMgtonvSCtR4n1CLUZRdTHDHP1Otwqd+rcdlavnKjUB/OYXQHUJzpNyFoKpQK+2OgrEKpGyIgIBgn2y9QHnTJihZOpEvOKIoHAMGAXHmj21Lym39Mbiow4IF+77xNuewziNVBxr6KD5e+9HzZSBIlUa/AmsDFJFXeyrQakR3FwowTGcADJHcEfhGkXYNGSYo4dh4bxwLM+28xjiqkdn0/3R4UEkvcBrBfn/SzBc1XhKM2VPlJgKSorjDac96V2UnQYXl1/yZPT4DVelgO+soMjexXwYO58VLl5xInQUZI8jc3H2CPnCNb9X05nOxIy4MlecasTqGK6s2az4RjpF2cQP2G28R+7wDPsZDZC/kWtjdoHC7SpdPmqQrUAhMwKVuxCmYTiD9q/O7GHtZvPSN0CAUQN/rymXZNniYLlJDE70bsk6Xxsh4kDOdxe7A2wo7P9F5YvqqRDI6brf79yPCSp4I0jVoO4YnLYtX5nzspR5WB4AKOYtR1ujXbOQpPyYDvfRE3FN5zw0i7reehdi7yV0YDRKRllGCGRk5Yz+Uv1fYl2ZwrnGsqsjgAVo0xEUba8ohjaNMJNwTwZA/wBDWFSCpg1eUH8MYL2zdioxRTqgGQrDZxQyNzyBJPXZF0+oxITJAbj7oNC5JwgDMUJaM5GqlGCWc//KCIrI+aclEe4IA0uzv7cuj6GCdaJONpi13O544vbtIHBF+A+JeDFUQNy61Gki3rtyQ4aUywn6ru314/dkGiP8Iwjo0J/2Txs49ZkwEl4mx+iYUUO55I6pJzU4P+7RRs+DXZkyKUYZqVWrPF4I94m4Wx1tXeE74o9GuX977yvJ/jkdak8+AmoHVjI15V+WwBdARFV2IPirJgVMdsg1Pez2VNHqa7EHWdTkl3XTcyjG9BiueWFvQfXI8aWSkuuRmqi/HUuzqyvLJfNfs0txMqldYYflWB1BS31WkuPJGGwXUCpjiQSktkuBMWwHjSkQxeehqw1Kgz0Trzm7QbtgxiEPDVmWCNCAeCfROTphd1ZNOhzLy6XfJyG6Xgd5MCAZw4xie0Sj5AnY1/akDgNS9YFl3Y06vd6FAsg2gVQJtzG7LVq1OH2frbXNHWH/NY89NNZ4QUSJqL2yEcGADbT38X0bGdukqYlSoliKOcsSTuqhcaemUeYLLoI8+MZor2RxXTRThF1LrHfqf/5LcLAjdl4EERgUysYS2geE+yFdasU91UgUDsc2cSQ1ZoT9+uLOwdgAmifwQqF028INc2IQEDfTmUw3eZxvz7Ud1z3xc1PQfeCvfKsB9jOhRj7rFyb9XcDWLcYj0bByosychMezMLVkFiYcdBBQtvI6K0KRuOZQH2kBsYHJaXTkup8F0eIhO1/GcIwWKpr2mouB7g5TUDJNvORXPXa/mU8bh27TAZYBe2sKx4NSv5OjnHIWD2RuysCzBlUfeNXhDd2jxnHoUlheJ3jBApzURy0fwm2FwwsSU0caQGl0Kv8hopRQE211NnvtLRsmCNrhhpEDoNiZEzD2QdJWKbRRWnaFedXHAELSN0t0bfsCsMf0ktfBoXBoNA+nZN9+pSlmuzspFevmsqqcMllzzvkyXrzoA+Ryo1ePXpdGOoJvhyru+EBRsmOp7MXZ0vNUMUqHLUoKglg1p73sWeZmPc+KAw0pE2zIsFFE5H4192KwDvDxdxEYoDBDNZjbg2bmADTeUKK57IPD4fTYF4c6EnXx/teYMORBDtIhPJneiZny7Nv/zG+YmekIKCoxr6kauE2bZtBLufetNG0BtBY7f+/ImUypMBvdWu/Q7vTMRzw5aQGZWuc1V0HEsItFYMIBnoKGZ0xcarba/TYZq50kCaflFysYjA4EDKHqGdpYWdKYmm+a7TADmW35yfnOYpZYrkpVEtiqF0EujI00aeplNs2k+qyFZNeE3CDPL9P6b4PQ/kataHkVpLSEVGK7EX6rAa7IVNrvZtFvOA6okKvBgMtFDAGZOx88MeBcJ8AR3AgUUeIznAN6tjCUipGDZONm1FjWJp4A3QIzSaIOmZ7DvF/ysYYbM/fFDOV0jntAjRdapxJxL0eThpEhKOjCDDq2ks+3GrwxqIFKLe1WdOzII8XIOPGnwy6LKXVfpSDOTEfaRsGujhpS4hBIsMOqHbl16PJxc4EkaVu9wpEYlF/84NSv5Zum4drMfp9yXbzzAOJqqS4YkI4cBrFrC7bMPiCfgI3nNZAqkk3QOZqR+yyqx+nDQKBBBZ7QKrfGMCL+XpqFaBJU0wpkBdAhbR4hJsmT5aynlvkouoxm/NjD5oe6BzVIO9uktM+/5dEC5P7vZvarmuO/lKXz4sBabVPIATuKTrwbJP8XUkdM6uEctHKXICUJGjaZIWRbZp8czquQYfY6ynBUCfIU+gG6wqSIBmYIm9pZpXdaL121V7q0VjDjmQnXvMe7ysoEZnZL15B0SpxS1jjd83uNIOKZwu5MPzg2NhOx3xMOPYwEn2CUzbSrwAs5OAtrz3GAaUkJOU74XwjaYUmGJdZBS1NJVkGYrToINLKDjxcuIlyfVsKQSG/G4DyiO2SlQvJ0d0Ot1uOG5IFSAkq+PRVMgVMDvOIJMdqjeCFKUGRWBW9wigYvcbU7CQL/7meF2KZAaWl+4y9uhowAX7elogAvItAAxo2+SFxGRsHGEW9BnhlTuWigYxRcnVUBRQHV41LV+Fr5CJYV7sHfeywswx4XMtUx6EkBhR+q8AXXUA8uPJ73Pb49i9KG9fOljvXeyFj9ixgbo6CcbAJ7WHWqKHy/h+YjBwp6VcN7M89FGzQ04qbrQtgrOFybg3gQRTYG5xn73ArkfQWjCJROwy3J38Dx/D7jOa6BBNsitEw1wGq780EEioOeD+ZGp2J66ADiVGMayiHYucMk8nTK2zzT9CnEraAk95kQjy4k0GRElLL5YAKLQErJ5rp1eay9O4Fb6yJGm9U4FaMwPGxtKD6odIIHKoWnhKo1U8KIpFC+MVn59ZXmc7ZTBZfsg6FQ8W10YfTr4u0nYrpHZbZ1jXiLmooF0cOm0+mPnJBXQtepc7n0BqOipNCqI6yyloTeRShNKH04FIo0gcMk0H/xThyN4pPAWjDDkEp3lNNPRNVfpMI44CWRlRgViP64eK0JSRp0WUvCWYumlW/c58Vcz/yMwVcW5oYb9+26TEhwvbxiNg48hl1VI1UXTU//Eta+BMKnGUivctfL5wINDD0giQL1ipt6U7C9cd4+lgqY2lMUZ02Uv6Prs+ZEZer7ZfWBXVghlfOOrClwsoOFKzWEfz6RZu1eCs+K8fLvkts5+BX0gyrFYve0C3qHrn5U/Oh6D/CihmWIrY7HUZRhJaxde+tldu6adYJ+LeXupQw0XExC36RETdNFxcq9glMu4cNQSX9cqR/GQYp+IxUkIcNGWVU7ZtGa6P3XAyodRt0XeS3Tp01AnCh0ZbUh4VrSZeV9RWfSoWyxnY3hzcZ30G/InDq4wxRrEejreBxnhIQbkxenxkaxl+k7eLUQkUR6vKJ2iDFNGX3WmVA1yaOH+mvhBd+sE6vacQzFobwY5BqEAFmejwW5ne7HtVNolOUgJc8CsUxmc/LBi8N5mu9VsIA5HyErnS6zeCz7VLI9+n/hbT6hTokMXTVyXJRKSG2hd2labXTbtmK4fNH3IZBPreSA4FMeVouVN3zG5x9CiGpLw/3pceo4qGqp+rVp+z+7yQ98oEf+nyH4F3+J9IheDBa94Wi63zJbLBCIZm7P0asHGpIJt3PzE3m0S4YIWyXBCVXGikj8MudDPB/6Nm2v4IxJ5gU0ii0guy5SUHqGUYzTP0jIJU5E82RHUXtX4lDdrihBLdP1YaG1AGUC12rQKuIaGvCpMjZC9bWSCYnjDlvpWbkdXMTNeBHLKiuoozMGIvkczmP0aRJSJ8PYnLCVNhKHXBNckH79e8Z8Kc2wUej4sQZoH8qDRGkg86maW/ZQWGNnLcXmq3FlXM6ssR/3P6E/bHMvm6HLrv1yRixit25JsH3/IOr2UV4BWJhxXW5BJ6Xdr07n9kF3ZNAk6/Xpc5MSFmYJ2R7bdL8Kk7q1OU9Elg/tCxJ8giT27wSTySF0GOxg4PbYJdi/Nyia9Nn89CGDulfJemm1aiEr/eleGSN+5MRrVJ4K6lgyTTIW3i9cQ0dAi6FHt0YMbH3wDSAtGLSAccezzxHitt1QdhW36CQgPcA8vIIBh3/JNjf/Obmc2yzpk8edSlS4lVdwgW5vzbYEyFoF4GCBBby1keVNueHAH+evi+H7oOVfS3XuPQSNTXOONAbzJeSb5stwdQHl1ZjrGoE49I8+A9j3t+ahhQj74FCSWpZrj7wRSFJJnnwi1T9HL5qrCFW/JZq6P62XkMWTb+u4lGpKfmmwiJWx178GOG7KbrZGqyWwmuyKWPkNswkZ1q8uptUlviIi+AXh2bOOTOLsrtNkfqbQJeh24reebkINLkjut5r4d9GR/r8CBa9SU0UQhsnZp5cP+RqWCixRm7i4YRFbtZ4EAkhtNa6jHb6gPYQv7MKqkPLRmX3dFsK8XsRLVZ6IEVrCbmNDc8o5mqsogjAQfoC9Bc7R6gfw03m+lQpv6kTfhxscDIX6s0w+fBxtkhjXAXr10UouWCx3C/p/FYwJRS/AXRKkjOb5CLmK4XRe0+xeDDwVkJPZau52bzLEDHCqV0f44pPgKOkYKgTZJ33fmk3Tu8SdxJ02SHM8Fem5SMsWqRyi2F1ynfRJszcFKykdWlNqgDA/L9lKYBmc7Zu/q9ii1FPF47VJkqhirUob53zoiJtVVRVwMR34gV9iqcBaHbRu9kkvqk3yMpfRFG49pKKjIiq7h/VpRwPGTHoY4cg05X5028iHsLvUW/uz+kjPyIEhhcKUwCkJAwbR9pIEGOn8z6svAO8i89sJ3dL5qDWFYbS+HGPRMxYwJItFQN86YESeJQhn2urGiLRffQeLptDl8dAgb+Tp47UQPxWOw17OeChLN1WnzlkPL1T5O+O3Menpn4C3IY5LEepHpnPeZHbvuWfeVtPlkH4LZjPbBrkJT3NoRJzBt86CO0Xq59oQ+8dsm0ymRcmQyn8w71mhmcuEI5byuF+C88VPYly2sEzjlzAQ3vdn/1+Hzguw6qFNNbqenhZGbdiG6RwZaTG7jTA2X9RdXjDN9yj1uQpyO4Lx8KRAcZcbZMafp4wPOd5MdXoFY52V1A8M9hi3sso93+uprE0qYNMjkE22CvK4HuUxqN7oIz5pWuETq1lQAjqlSlqdD2Rnr/ggp/TVkQYjn9lMfYelk2sH5HPdopYo7MHwlV1or9Bxf+QCyLzm92vzG2wjiIjC/ZHEJzeroJl6bdFPTpZho5MV2U86fLQqxNlGIMqCGy+9WYhJ8ob1r0+Whxde9L2PdysETv97O+xVw+VNN1TZSQN5I6l9m5Ip6pLIqLm4a1B1ffH6gHyqT9p82NOjntRWGIofO3bJz5GhkvSWbsXueTAMaJDou99kGLqDlhwBZNEQ4mKPuDvVwSK4WmLluHyhA97pZiVe8g+JxmnJF8IkV/tCs4Jq/HgOoAEGR9tCDsDbDmi3OviUQpG5D8XmKcSAUaFLRXb2lmJTNYdhtYyfjBYZQmN5qT5CNuaD3BVnlkCk7bsMW3AtXkNMMTuW4HjUERSJnVQ0vsBGa1wo3Qh7115XGeTF3NTz8w0440AgU7c3bSXO/KMINaIWXd0oLpoq/0/QJxCQSJ9XnYy1W7TYLBJpHsVWD1ahsA7FjNvRd6mxCiHsm8g6Z0pnzqIpF1dHUtP2ITU5Z1hZHbu+L3BEEStBbL9XYvGfEakv1bmf+bOZGnoiuHEdlBnaChxYKNzB23b8sw8YyT7Ajxfk49eJIAvdbVkdFCe2J0gMefhQ0bIZxhx3fzMIysQNiN8PgOUKxOMur10LduigREDRMZyP4oGWrP1GFY4t6groASsZ421os48wAdnrbovNhLt7ScNULkwZ5AIZJTrbaKYTLjA1oJ3sIuN/aYocm/9uoQHEIlacF1s/TM1fLcPTL38O9fOsjMEIwoPKfvt7opuI9G2Hf/PR4aCLDQ7wNmIdEuXJ/QNL72k5q4NejAldPfe3UVVqzkys8YZ/jYOGOp6c+YzRCrCuq0M11y7TiN6qk7YXRMn/gukxrEimbMQjr3jwRM6dKVZ4RUfWQr8noPXLJq6yh5R3EH1IVOHESst/LItbG2D2vRsZRkAObzvQAAD3mb3/G4NzopI0FAiHfbpq0X72adg6SRj+8OHMShtFxxLZlf/nLgRLbClwl5WmaYSs+yEjkq48tY7Z2bE0N91mJwt+ua0NlRJIDh0HikF4UvSVorFj2YVu9YeS5tfvlVjPSoNu/Zu6dEUfBOT555hahBdN3Sa5Xuj2Rvau1lQNIaC944y0RWj9UiNDskAK1WoL+EfXcC6IbBXFRyVfX/WKXxPAwUyIAGW8ggZ08hcijKTt1YKnUO6QPvcrmDVAb0FCLIXn5id4fD/Jx4tw/gbXs7WF9b2RgXtPhLBG9vF5FEkdHAKrQHZAJC/HWvk7nvzzDzIXZlfFTJoC3JpGgLPBY7SQTjGlUvG577yNutZ1hTfs9/1nkSXK9zzKLRZ3VODeKUovJe0WCq1zVMYxCJMenmNzPIU2S8TA4E7wWmbNkxq9rI2dd6v0VpcAPVMxnDsvWTWFayyqvKZO7Z08a62i/oH2/jxf8rpmfO64in3FLiL1GX8IGtVE9M23yGsIqJbxDTy+LtaMWDaPqkymb5VrQdzOvqldeU0SUi6IirG8UZ3jcpRbwHa1C0Dww9G/SFX3gPvTJQE+kyz+g1BeMILKKO+olcHzctOWgzxYHnOD7dpCRtuZEXACjgqesZMasoPgnuDC4nUviAAxDc5pngjoAITIkvhKwg5d608pdrZcA+qn5TMT6Uo/QzBaOxBCLTJX3Mgk85rMfsnWx86oLxf7p2PX5ONqieTa/qM3tPw4ZXvlAp83NSD8F7+ZgctK1TpoYwtiU2h02HCGioH5tkVCqNVTMH5p00sRy2JU1qyDBP2CII/Dg4WDsIl+zgeX7589srx6YORRQMBfKbodbB743Tl4WLKOEnwWUVBsm94SOlCracU72MSyj068wdpYjyz1FwC2bjQnxnB6Mp/pZ+yyZXtguEaYB+kqhjQ6UUmwSFazOb+rhYjLaoiM+aN9/8KKn0zaCTFpN9eKwWy7/u4EHzO46TdFSNjMfn2iPSJwDPCFHc0I1+vjdAZw5ZjqR/uzi9Zn20oAa5JnLEk/EA3VRWE7J/XrupfFJPtCUuqHPpnlL7ISJtRpSVcB8qsZCm2QEkWoROtCKKxUh3yEcMbWYJwk6DlEBG0bZP6eg06FL3v6RPb7odGuwm7FN8fG4woqtB8e7M5klPpo97GoObNwt+ludTAmxyC5hmcFx+dIvEZKI6igFKHqLH01iY1o7903VzG9QGetyVx5RNmBYUU+zIuSva/yIcECUi4pRmE3VkF2avqulQEUY4yZ/wmNboBzPmAPey3+dSYtBZUjeWWT0pPwCz4Vozxp9xeClIU60qvEFMQCaPvPaA70WlOP9f/ey39macvpGCVa+zfa8gO44wbxpJUlC8GN/pRMTQtzY8Z8/hiNrU+Zq64ZfFGIkdj7m7abcK1EBtws1X4J/hnqvasPvvDSDYWN+QcQVGMqXalkDtTad5rYY0TIR1Eqox3czwPMjKPvF5sFv17Thujr1IZ1Ytl4VX1J0vjXKmLY4lmXipRAro0qVGEcXxEVMMEl54jQMd4J7RjgomU0j1ptjyxY+cLiSyXPfiEcIS2lWDK3ISAy6UZ3Hb5vnPncA94411jcy75ay6B6DSTzK6UTCZR9uDANtPBrvIDgjsfarMiwoax2OlLxaSoYn4iRgkpEGqEkwox5tyI8aKkLlfZ12lO11TxsqRMY89j5JaO55XfPJPDL1LGSnC88Re9Ai+Nu5bZjtwRrvFITUFHPR4ZmxGslQMecgbZO7nHk32qHxYkdvWpup07ojcMCaVrpFAyFZJJbNvBpZfdf39Hdo2kPtT7v0/f8R/B5Nz4f1t9/3zNM/7n6SUHfcWk5dfQFJvcJMgPolGCpOFb/WC0FGWU2asuQyT+rm88ZKZ78Cei/CAh939CH0JYbpZIPtxc2ufXqjS3pHH9lnWK4iJ7OjR/EESpCo2R3MYKyE7rHfhTvWho4cL1QdN4jFTyR6syMwFm124TVDDRXMNveI1Dp/ntwdz8k8kxw7iFSx6+Yx6O+1LzMVrN0BBzziZi9kneZSzgollBnVwBh6oSOPHXrglrOj+QmR/AESrhDpKrWT+8/AiMDxS/5wwRNuGQPLlJ9ovomhJWn8sMLVItQ8N/7IXvtD8kdOoHaw+vBSbFImQsv/OCAIui99E+YSIOMlMvBXkAt+NAZK8wB9Jf8CPtB+TOUOR+z71d/AFXpPBT6+A5FLjxMjLIEoJzrQfquvxEIi+WoUzGR1IzQFNvbYOnxb2PyQ0kGdyXKzW2axQL8lNAXPk6NEjqrRD1oZtKLlFoofrXw0dCNWASHzy+7PSzOUJ3XtaPZsxLDjr+o41fKuKWNmjiZtfkOzItvlV2MDGSheGF0ma04qE3TUEfqJMrXFm7DpK+27DSvCUVf7rbNoljPhha5W7KBqVq0ShUSTbRmuqPtQreVWH4JET5yMhuqMoSd4r/N8sDmeQiQQvi1tcZv7Moc7dT5X5AtCD6kNEGZOzVcNYlpX4AbTsLgSYYliiPyVoniuYYySxsBy5cgb3pD+EK0Gpb0wJg031dPgaL8JZt6sIvzNPEHfVPOjXmaXj4bd4voXzpZ5GApMhILgMbCEWZ2zwgdeQgjNHLbPIt+KqxRwWPLTN6HwZ0Ouijj4UF+Sg0Au8XuIKW0WxlexdrFrDcZJ8Shauat3X0XmHygqgL1nAu2hrJFb4wZXkcS+i36KMyU1yFvYv23bQUJi/3yQpqr/naUOoiEWOxckyq/gq43dFou1DVDaYMZK9tho7+IXXokBCs5GRfOcBK7g3A+jXQ39K4YA8PBRW4m5+yR0ZAxWJncjRVbITvIAPHYRt1EJ3YLiUbqIvoKHtzHKtUy1ddRUQ0AUO41vonZDUOW+mrszw+SW/6Q/IUgNpcXFjkM7F4CSSQ2ExZg85otsMs7kqsQD4OxYeBNDcSpifjMoLb7GEbGWTwasVObmB/bfPcUlq0wYhXCYEDWRW02TP5bBrYsKTGWjnWDDJ1F7zWai0zW/2XsCuvBQjPFcTYaQX3tSXRSm8hsAoDdjArK/OFp6vcWYOE7lizP0Yc+8p16i7/NiXIiiQTp7c7Xus925VEtlKAjUdFhyaiLT7VxDagprMFwix4wZ05u0qj7cDWFd0W9OYHIu3JbJKMXRJ1aYNovugg+QqRN7fNHSi26VSgBpn+JfMuPo3aeqPWik/wI5Rz3BWarPQX4i5+dM0npwVOsX+KsOhC7vDg+OJsz4Q5zlnIeflUWL6QYMbf9WDfLmosLF4Qev3mJiOuHjoor/dMeBpA9iKDkMjYBNbRo414HCxjsHrB4EXNbHzNMDHCLuNBG6Sf+J4MZ/ElVsDSLxjIiGsTPhw8BPjxbfQtskj+dyNMKOOcUYIRBEIqbazz3lmjlRQhplxq673VklMMY6597vu+d89ec/zq7Mi4gQvh87ehYbpOuZEXj5g/Q7S7BFDAAB9DzG35SC853xtWVcnZQoH54jeOqYLR9NDuwxsVthTV7V99n/B7HSbAytbEyVTz/5NhJ8gGIjG0E5j3griULUd5Rg7tQR+90hJgNQKQH2btbSfPcaTOfIexc1db1BxUOhM1vWCpLaYuKr3FdNTt/T3PWCpEUWDKEtzYrjpzlL/wri3MITKsFvtF8QVV/NhVo97aKIBgdliNc10dWdXVDpVtsNn+2UIolrgqdWA4EY8so0YvB4a+aLzMXiMAuOHQrXY0tr+CL10JbvZzgjJJuB1cRkdT7DUqTvnswVUp5kkUSFVtIIFYK05+tQxT6992HHNWVhWxUsD1PkceIrlXuUVRogwmfdhyrf6zzaL8+c0L7GXMZOteAhAVQVwdJh+7nrX7x4LaIIfz2F2v7Dg/uDfz2Fa+4gFm2zHAor8UqimJG3VTJtZEoFXhnDYXvxMJFc6ku2bhbCxzij2z5UNuK0jmp1mnvkVNUfR+SEmj1Lr94Lym75PO7Fs0MIr3GdsWXRXSfgLTVY0FLqba97u1In8NAcY7IC6TjWLigwKEIm43NxTdaVTv9mcKkzuzBkKd8x/xt1p/9BbP7Wyb4bpo1K1gnOpbLvKz58pWl3B55RJ/Z5mRDLPtNQg14jdOEs9+h/V5UVpwrAI8kGbX8KPVPDIMfIqKDjJD9UyDOPhjZ3vFAyecwyq4akUE9mDOtJEK1hpDyi6Ae87sWAClXGTiwPwN7PXWwjxaR79ArHRIPeYKTunVW24sPr/3HPz2IwH8oKH4OlWEmt4BLM6W5g4kMcYbLwj2usodD1088stZA7VOsUSpEVl4w7NMb1EUHMRxAxLF0CIV+0L3iZb+ekB1vSDSFjAZ3hfLJf7gFaXrOKn+mhR+rWw/eTXIcAgl4HvFuBg1LOmOAwJH3eoVEjjwheKA4icbrQCmvAtpQ0mXG0agYp5mj4Rb6mdQ+RV4QBPbxMqh9C7o8nP0Wko2ocnCHeRGhN1XVyT2b9ACsL+6ylUy+yC3QEnaKRIJK91YtaoSrcWZMMwxuM0E9J68Z+YyjA0g8p1PfHAAIROy6Sa04VXOuT6A351FOWhKfTGsFJ3RTJGWYPoLk5FVK4OaYR9hkJvezwF9vQN1126r6isMGXWTqFW+3HL3I/jurlIdDWIVvYY+s6yq7lrFSPAGRdnU7PVwY/SvWbZGpXzy3BQ2LmAJlrONUsZs4oGkly0V267xbD5KMY8woNNsmWG1VVgLCra8aQBBcI4DP2BlNwxhiCtHlaz6OWFoCW0vMR3ErrG7JyMjTSCnvRcsEHgmPnwA6iNpJ2DrFb4gLlhKJyZGaWkA97H6FFdwEcLT6DRQQL++fOkVC4cYGW1TG/3iK5dShRSuiBulmihqgjR45Vi03o2RbQbP3sxt90VxQ6vzdlGfkXmmKmjOi080JSHkLntjvsBJnv7gKscOaTOkEaRQqAnCA4HWtB4XnMtOhpRmH2FH8tTXrIjAGNWEmudQLCkcVlGTQ965Kh0H6ixXbgImQP6b42B49sO5C8pc7iRlgyvSYvcnH9FgQ3azLbQG2cUW96SDojTQStxkOJyOuDGTHAnnWkz29aEwN9FT8EJ4yhXOg+jLTrCPKeEoJ9a7lDXOjEr8AgX4BmnMQ668oW0zYPyQiVMPxKRHtpfnEEyaKhdzNVThlxxDQNdrHeZiUFb6NoY2KwvSb7BnRcpJy+/g/zAYx3fYSN5QEaVD2Y1VsNWxB0BSO12MRsRY8JLfAezRMz5lURuLUnG1ToKk6Q30FughqWN6gBNcFxP/nY/iv+iaUQOa+2Nuym46wtI/DvSfzSp1jEi4SdYBE7YhTiVV5cX9gwboVDMVgZp5YBQlHOQvaDNfcCoCJuYhf5kz5kwiIKPjzgpcRJHPbOhJajeoeRL53cuMahhV8Z7IRr6M4hW0JzT7mzaMUzQpm866zwM7Cs07fJYXuWvjAMkbe5O6V4bu71sOG6JQ4oL8zIeXHheFVavzxmlIyBkgc9IZlEDplMPr8xlcyss4pVUdwK1e7CK2kTsSdq7g5SHRAl3pYUB9Ko4fsh4qleOyJv1z3KFSTSvwEcRO/Ew8ozEDYZSqpfoVW9uhJfYrNAXR0Z3VmeoAD+rVWtwP/13sE/3ICX3HhDG3CMc476dEEC0K3umSAD4j+ZQLVdFOsWL2C1TH5+4KiSWH+lMibo+B55hR3Gq40G1n25sGcN0mEcoU2wN9FCVyQLBhYOu9aHVLWjEKx2JIUZi5ySoHUAI9b8hGzaLMxCZDMLhv8MkcpTqEwz9KFDpCpqQhVmsGQN8m24wyB82FAKNmjgfKRsXRmsSESovAwXjBIoMKSG51p6Um8b3i7GISs7kjTq/PZoioCfJzfKdJTN0Q45kQEQuh9H88M3yEs3DbtRTKALraM0YC8laiMiOOe6ADmTcCiREeAWZelBaEXRaSuj2lx0xHaRYqF65O0Lo5OCFU18A8cMDE4MLYm9w2QSr9NgQAIcRxZsNpA7UJR0e71JL+VU+ISWFk5I97lra8uGg7GlQYhGd4Gc6rxsLFRiIeGO4abP4S4ekQ1fiqDCy87GZHd52fn5aaDGuvOmIofrzpVwMvtbreZ/855OaXTRcNiNE0wzGZSxbjg26v8ko8L537v/XCCWP2MFaArJpvnkep0pA+O86MWjRAZPQRfznZiSIaTppy6m3p6HrNSsY7fDtz7Cl4V/DJAjQDoyiL2uwf1UHVd2AIrzBUSlJaTj4k6NL97a/GqhWKU9RUmjnYKpm2r+JYUcrkCuZKvcYvrg8pDoUKQywY9GDWg03DUFSirlUXBS5SWn/KAntnf0IdHGL/7mwXqDG+LZYjbEdQmqUqq4y54TNmWUP7IgcAw5816YBzwiNIJiE9M4lPCzeI/FGBeYy3p6IAmH4AjXXmvQ4Iy0Y82NTobcAggT2Cdqz6Mx4TdGoq9fn2etrWKUNFyatAHydQTVUQ2S5OWVUlugcNvoUrlA8cJJz9MqOa/W3iVno4zDHfE7zhoY5f5lRTVZDhrQbR8LS4eRLz8iPMyBL6o4PiLlp89FjdokQLaSBmKHUwWp0na5fE3v9zny2YcDXG/jfI9sctulHRbdkI5a4GOPJx4oAJQzVZ/yYAado8KNZUdEFs9ZPiBsausotXMNebEgr0dyopuqfScFJ3ODNPHgclACPdccwv0YJGQdsN2lhoV4HVGBxcEUeUX/alr4nqpcc1CCR3vR7g40zteQg/JvWmFlUE4mAiTpHlYGrB7w+U2KdSwQz2QJKBe/5eiixWipmfP15AFWrK8Sh1GBBYLgzki1wTMhGQmagXqJ2+FuqJ8f0XzXCVJFHQdMAw8xco11HhM347alrAu+wmX3pDFABOvkC+WPX0Uhg1Z5MVHKNROxaR84YV3s12UcM+70cJ460SzEaKLyh472vOMD3XnaK7zxZcXlWqenEvcjmgGNR2OKbI1s8U+iwiW+HotHalp3e1MGDy6BMVIvajnAzkFHbeVsgjmJUkrP9OAwnEHYXVBqYx3q7LvXjoVR0mY8h+ZaOnh053pdsGkmbqhyryN01eVHySr+CkDYkSMeZ1xjPNVM+gVLTDKu2VGsMUJqWO4TwPDP0VOg2/8ITbAUaMGb4LjL7L+Pi11lEVMXTYIlAZ/QHmTENjyx3kDkBdfcvvQt6tKk6jYFM4EG5UXDTaF5+1ZjRz6W7MdJPC+wTkbDUim4p5QQH3b9kGk2Bkilyeur8Bc20wm5uJSBO95GfYDI1EZipoRaH7uVveneqz43tlTZGRQ4a7CNmMHgXyOQQOL6WQkgMUTQDT8vh21aSdz7ERiZT1jK9F+v6wgFvuEmGngSvIUR2CJkc5tx1QygfZnAruONobB1idCLB1FCfO7N1ZdRocT8/Wye+EnDiO9pzqIpnLDl4bkaRKW+ekBVwHn46Shw1X0tclt/0ROijuUB4kIInrVJU4buWf4YITJtjOJ6iKdr1u+flgQeFH70GxKjhdgt/MrwfB4K/sXczQ+9zYcrD4dhY6qZhZ010rrxggWA8JaZyg2pYij8ieYEg1aZJkZK9O1Re7sB0iouf60rK0Gd+AYlp7soqCBCDGwfKeUQhCBn0E0o0GS6PdmjLi0TtCYZeqazqwN+yNINIA8Lk3iPDnWUiIPLGNcHmZDxfeK0iAdxm/T7LnN+gemRL61hHIc0NCAZaiYJR+OHnLWSe8sLrK905B5eEJHNlWq4RmEXIaFTmo49f8w61+NwfEUyuJAwVqZCLFcyHBKAcIVj3sNzfEOXzVKIndxHw+AR93owhbCxUZf6Gs8cz6/1VdrFEPrv330+9s6BtMVPJ3zl/Uf9rUi0Z/opexfdL3ykF76e999GPfVv8fJv/Y/+/5hEMon1tqNFyVRevV9y9/uIvsG3dbB8GRRrgaEXfhx+2xeOFt+cEn3RZanNxdEe2+B6MHpNbrRE53PlDifPvFcp4kO78ILR0T4xyW/WGPyBsqGdoA7zJJCu1TKbGfhnqgnRbxbB2B3UZoeQ2bz2sTVnUwokTcTU21RxN1PYPS3Sar7T0eRIsyCNowr9amwoMU/od9s2APtiKNL6ENOlyKADstAEWKA+sdKDhrJ6BOhRJmZ+QJbAaZ3/5Fq0/lumCgEzGEbu3yi0Y4I4EgVAjqxh4HbuQn0GrRhOWyAfsglQJAVL1y/6yezS2k8RE2MstJLh92NOB3GCYgFXznF4d25qiP4ZCyI4RYGesut6FXK6GwPpKK8WHEkhYui0AyEmr5Ml3uBFtPFdnioI8RiCooa7Z1G1WuyIi3nSNglutc+xY8BkeW3JJXPK6jd2VIMpaSxpVtFq+R+ySK9J6WG5Qvt+C+QH1hyYUOVK7857nFmyDBYgZ/o+AnibzNVqyYCJQvyDXDTK+iXdkA71bY7TL3bvuLxLBQ8kbTvTEY9aqkQ3+MiLWbEgjLzOH+lXgco1ERgzd80rDCymlpaRQbOYnKG/ODoFl46lzT0cjM5FYVvv0qLUbD5lyJtMUaC1pFlTkNONx6lliaX9o0i/1vws5bNKn5OuENQEKmLlcP4o2ZmJjD4zzd3Fk32uQ4uRWkPSUqb4LBe3EXHdORNB2BWsws5daRnMfNVX7isPSb1hMQdAJi1/qmDMfRUlCU74pmnzjbXfL8PVG8NsW6IQM2Ne23iCPIpryJjYbVnm5hCvKpMa7HLViNiNc+xTfDIaKm3jctViD8A1M9YPJNk003VVr4Zo2MuGW8vil8SLaGpPXqG7I4DLdtl8a4Rbx1Lt4w5Huqaa1XzZBtj208EJVGcmKYEuaeN27zT9EE6a09JerXdEbpaNgNqYJdhP1NdqiPKsbDRUi86XvvNC7rME5mrSQtrzAZVndtSjCMqd8BmaeGR4l4YFULGRBeXIV9Y4yxLFdyoUNpiy2IhePSWzBofYPP0eIa2q5JP4j9G8at/AqoSsLAUuRXtvgsqX/zYwsE+of6oSDbUOo4RMJw+DOUTJq+hnqwKim9Yy/napyZNTc2rCq6V9jHtJbxGPDwlzWj/Sk3zF/BHOlT/fSjSq7FqlPI1q6J+ru8Aku008SFINXZfOfnZNOvGPMtEmn2gLPt+H4QLA+/SYe4j398auzhKIp2Pok3mPC5q1IN1HgR+mnEfc4NeeHYwd2/kpszR3cBn7ni9NbIqhtSWFW8xbUJuUPVOeeXu3j0IGZmFNiwaNZ6rH4/zQ2ODz6tFxRLsUYZu1bfd1uIvfQDt4YD/efKYv8VF8bHGDgK22w2Wqwpi43vNCOXFJZCGMqWiPbL8mil6tsmOTXAWCyMCw73e2rADZj2IK6rqksM3EXF2cbLb4vjB14wa/yXK5vwU+05MzERJ5nXsXsW21o7M+gO0js2OyKciP5uF2iXyb2DiptwQeHeqygkrNsqVCSlldxBMpwHi1vfc8RKpP/4L3Lmpq6DZcvhDDfxTCE3splacTcOtXdK2g303dIWBVe2wD/Gvja1cClFQ67gw0t1ZUttsUgQ1Veky8oOpS6ksYEc4bqseCbZy766SvL3FodmnahlWJRgVCNjPxhL/fk2wyvlKhITH/VQCipOI0dNcRa5B1M5HmOBjTLeZQJy237e2mobwmDyJNHePhdDmiknvLKaDbShL+Is1XTCJuLQd2wmdJL7+mKvs294whXQD+vtd88KKk0DXP8B1Xu9J+xo69VOuFgexgTrcvI6SyltuLix9OPuE6/iRJYoBMEXxU4shQMf4Fjqwf1PtnJ/wWSZd29rhZjRmTGgiGTAUQqRz+nCdjeMfYhsBD5Lv60KILWEvNEHfmsDs2L0A252351eUoYxAysVaCJVLdH9QFWAmqJDCODUcdoo12+gd6bW2boY0pBVHWL6LQDK5bYWh1V8vFvi0cRpfwv7cJiMX3AZNJuTddHehTIdU0YQ/sQ1dLoF2xQPcCuHKiuCWOY30DHe1OwcClLAhqAKyqlnIbH/8u9ScJpcS4kgp6HKDUdiOgRaRGSiUCRBjzI5gSksMZKqy7Sd51aeg0tgJ+x0TH9YH2Mgsap9N7ENZdEB0bey2DMTrBA1hn56SErNHf3tKtqyL9b6yXEP97/rc+jgD2N1LNUH6RM9AzP3kSipr06RkKOolR7HO768jjWiH1X92jA7dkg7gcNcjqsZCgfqWw0tPXdLg20cF6vnQypg7gLtkazrHAodyYfENPQZsdfnjMZiNu4nJO97D1/sQE+3vNFzrSDOKw+keLECYf7RJwVHeP/j79833oZ0egonYB2FlFE5qj02B/LVOMJQlsB8uNg3Leg4qtZwntsOSNidR0abbZmAK4sCzvt8Yiuz2yrNCJoH5O8XvX/vLeR/BBYTWj0sOPYM/jyxRd5+/JziKAABaPcw/34UA3aj/gLZxZgRCWN6m4m3demanNgsx0P237/Q+Ew5VYnJPkyCY0cIVHoFn2Ay/e7U4P19APbPFXEHX94N6KhEMPG7iwB3+I+O1jd5n6VSgHegxgaSawO6iQCYFgDsPSMsNOcUj4q3sF6KzGaH/0u5PQoAj/8zq6Uc9MoNrGqhYeb2jQo0WlGlXjxtanZLS24/OIN5Gx/2g684BPDQpwlqnkFcxpmP/osnOXrFuu4PqifouQH0eF5qCkvITQbJw/Zvy5mAHWC9oU+cTiYhJmSfKsCyt1cGVxisKu+NymEQIAyaCgud/V09qT3nk/9s/SWsYtha7yNpzBIMM40rCSGaJ9u6lEkl00vXBiEt7p9P5IBCiavynEOv7FgLqPdeqxRiCwuFVMolSIUBcoyfUC2e2FJSAUgYdVGFf0b0Kn2EZlK97yyxrT2MVgvtRikfdaAW8RwEEfN+B7/eK8bBdp7URpbqn1xcrC6d2UjdsKbzCjBFqkKkoZt7Mrhg6YagE7spkqj0jOrWM+UGQ0MUlG2evP1uE1p2xSv4dMK0dna6ENcNUF+xkaJ7B764NdxLCpuvhblltVRAf7vK5qPttJ/9RYFUUSGcLdibnz6mf7WkPO3MkUUhR2mAOuGv8IWw5XG1ZvoVMnjSAZe6T7WYA99GENxoHkMiKxHlCuK5Gd0INrISImHQrQmv6F4mqU/TTQ8nHMDzCRivKySQ8dqkpQgnUMnwIkaAuc6/FGq1hw3b2Sba398BhUwUZSAIO8XZvnuLdY2n6hOXws+gq9BHUKcKFA6kz6FDnpxLPICa3qGhnc97bo1FT/XJk48LrkHJ2CAtBv0RtN97N21plfpXHvZ8gMJb7Zc4cfI6MbPwsW7AilCSXMFIEUEmir8XLEklA0ztYbGpTTGqttp5hpFTTIqUyaAIqvMT9A/x+Ji5ejA4Bhxb/cl1pUdOD6epd3yilIdO6j297xInoiBPuEDW2/UfslDyhGkQs7Wy253bVnlT+SWg89zYIK/9KXFl5fe+jow2rd5FXv8zDPrmfMXiUPt9QBO/iK4QGbX5j/7Rx1c1vzsY8ONbP3lVIaPrhL4+1QrECTN3nyKavGG0gBBtHvTKhGoBHgMXHStFowN+HKrPriYu+OZ05Frn8okQrPaaxoKP1ULCS/cmKFN3gcH7HQlVjraCeQmtjg1pSQxeuqXiSKgLpxc/1OiZsU4+n4lz4hpahGyWBURLi4642n1gn9qz9bIsaCeEPJ0uJmenMWp2tJmIwLQ6VSgDYErOeBCfSj9P4G/vI7oIF+l/n5fp956QgxGvur77ynawAu3G9MdFbJbu49NZnWnnFcQHjxRuhUYvg1U/e84N4JTecciDAKb/KYIFXzloyuE1eYXf54MmhjTq7B/yBToDzzpx3tJCTo3HCmVPYfmtBRe3mPYEE/6RlTIxbf4fSOcaKFGk4gbaUWe44hVk9SZzhW80yfW5QWBHxmtUzvMhfVQli4gZTktIOZd9mjJ5hsbmzttaHQB29Am3dZkmx3g/qvYocyhZ2PXAWsNQiIaf+Q8W/MWPIK7/TjvCx5q2XRp4lVWydMc2wIQkhadDB0xsnw/kSEyGjLKjI4coVIwtubTF3E7MJ6LS6UOsJKj82XVAVPJJcepfewbzE91ivXZvOvYfsmMevwtPpfMzGmC7WJlyW2j0jh7AF1JLmwEJSKYwIvu6DHc3YnyLH9ZdIBnQ+nOVDRiP+REpqv++typYHIvoJyICGA40d8bR7HR2k7do6UQTHF4oriYeIQbxKe4Th6+/l1BjUtS9hqORh3MbgvYrStXTfSwaBOmAVQZzpYNqsAmQyjY56MUqty3c/xH6GuhNvNaG9vGbG6cPtBM8UA3e8r51D0AR9kozKuGGSMgLz3nAHxDNnc7GTwpLj7/6HeWp1iksDeTjwCLpxejuMtpMnGJgsiku1sOACwQ9ukzESiDRN77YNESxR5LphOlcASXA5uIts1LnBIcn1J7BLWs49DMALSnuz95gdOrTZr0u1SeYHinno/pE58xYoXbVO/S+FEMMs5qyWkMnp8Q3ClyTlZP52Y9nq7b8fITPuVXUk9ohG5EFHw4gAEcjFxfKb3xuAsEjx2z1wxNbSZMcgS9GKyW3R6KwJONgtA64LTyxWm8Bvudp0M1FdJPEGopM4Fvg7G/hsptkhCfHFegv4ENwxPeXmYhxwZy7js+BeM27t9ODBMynVCLJ7RWcBMteZJtvjOYHb5lOnCLYWNEMKC59BA7covu1cANa2PXL05iGdufOzkgFqqHBOrgQVUmLEc+Mkz4Rq8O6WkNr7atNkH4M8d+SD1t/tSzt3oFql+neVs+AwEI5JaBJaxARtY2Z4mKoUqxds4UpZ0sv3zIbNoo0J4fihldQTX3XNcuNcZmcrB5LTWMdzeRuAtBk3cZHYQF6gTi3PNuDJ0nmR+4LPLoHvxQIxRgJ9iNNXqf2SYJhcvCtJiVWo85TsyFOuq7EyBPJrAdhEgE0cTq16FQXhYPJFqSfiVn0IQnPOy0LbU4BeG94QjdYNB0CiQ3QaxQqD2ebSMiNjaVaw8WaM4Z5WnzcVDsr4eGweSLa2DE3BWViaxhZFIcSTjgxNCAfelg+hznVOYoe5VqTYs1g7WtfTm3e4/WduC6p+qqAM8H4ZyrJCGpewThTDPe6H7CzX/zQ8Tm+r65HeZn+MsmxUciEWPlAVaK/VBaQBWfoG/aRL/jSZIQfep/89GjasWmbaWzeEZ2R1FOjvyJT37O9B8046SRSKVEnXWlBqbkb5XCS3qFeuE9xb9+frEknxWB5h1D/hruz2iVDEAS7+qkEz5Ot5agHJc7WCdY94Ws61sURcX5nG8UELGBAHZ3i+3VulAyT0nKNNz4K2LBHBWJcTBX1wzf+//u/j/9+//v87+9/l9Lbh/L/uyNYiTsWV2LwsjaA6MxTuzFMqmxW8Jw/+IppdX8t/Clgi1rI1SN0UC/r6tX/4lUc2VV1OQReSeCsjUpKZchw4XUcjHfw6ryCV3R8s6VXm67vp4n+lcPV9gJwmbKQEsmrJi9c2vkwrm8HFbVYNTaRGq8D91t9n5+U+aD/hNtN3HjC/nC/vUoGFSCkXP+NlRcmLUqLbiUBl4LYf1U/CCvwtd3ryCH8gUmGITAxiH1O5rnGTz7y1LuFjmnFGQ1UWuM7HwfXtWl2fPFKklYwNUpF2IL/TmaRETjQiM5SJacI+3Gv5MBU8lP5Io6gWkawpyzNEVGqOdx4YlO1dCvjbWFZWbCmeiFKPSlMKtKcMFLs/KQxtgAHi7NZNCQ32bBAW2mbHflVZ8wXKi1JKVHkW20bnYnl3dKWJeWJOiX3oKPBD6Zbi0ZvSIuWktUHB8qDR8DMMh1ZfkBL9FS9x5r0hBGLJ8pUCJv3NYH+Ae8p40mZWd5m5fhobFjQeQvqTT4VKWIYfRL0tfaXKiVl75hHReuTJEcqVlug+eOIIc4bdIydtn2K0iNZPsYWQvQio2qbO3OqAlPHDDOB7DfjGEfVF51FqqNacd6QmgFKJpMfLp5DHTv4wXlONKVXF9zTJpDV4m1sYZqJPhotcsliZM8yksKkCkzpiXt+EcRQvSQqmBS9WdWkxMTJXPSw94jqI3varCjQxTazjlMH8jTS8ilaW8014/vwA/LNa+YiFoyyx3s/KswP3O8QW1jtq45yTM/DX9a8M4voTVaO2ebvw1EooDw/yg6Y1faY+WwrdVs5Yt0hQ5EwRfYXSFxray1YvSM+kYmlpLG2/9mm1MfmbKHXr44Ih8nVKb1M537ZANUkCtdsPZ80JVKVKabVHCadaLXg+IV8i5GSwpZti0h6diTaKs9sdpUKEpd7jDUpYmHtiX33SKiO3tuydkaxA7pEc9XIQEOfWJlszj5YpL5bKeQyT7aZSBOamvSHl8xsWvgo26IP/bqk+0EJUz+gkkcvlUlyPp2kdKFtt7y5aCdks9ZJJcFp5ZWeaWKgtnXMN3ORwGLBE0PtkEIek5FY2aVssUZHtsWIvnljMVJtuVIjpZup/5VL1yPOHWWHkOMc6YySWMckczD5jUj2mlLVquFaMU8leGVaqeXis+aRRL8zm4WuBk6cyWfGMxgtr8useQEx7k/PvRoZyd9nde1GUCV84gMX8Ogu/BWezYPSR27llzQnA97oo0pYyxobYUJfsj+ysTm9zJ+S4pk0TGo9VTG0KjqYhTmALfoDZVKla2b5yhv241PxFaLJs3i05K0AAIdcGxCJZmT3ZdT7CliR7q+kur7WdQjygYtOWRL9B8E4s4LI8KpAj7bE0dg7DLOaX+MGeAi0hMMSSWZEz+RudXbZCsGYS0QqiXjH9XQbd8sCB+nIVTq7/T/FDS+zWY9q7Z2fdq1tdLb6v3hKKVDAw5gjj6o9r1wHFROdHc18MJp4SJ2Ucvu+iQ9EgkekW8VCM+psM6y+/2SBy8tNN4a3L1MzP+OLsyvESo5gS7IQOnIqMmviJBVc6zbVG1n8eXiA3j46kmvvtJlewwNDrxk4SbJOtP/TV/lIVK9ueShNbbMHfwnLTLLhbZuO79ec5XvfgRwLFK+w1r5ZWW15rVFZrE+wKqNRv5KqsLNfpGgnoUU6Y71NxEmN7MyqwqAQqoIULOw/LbuUB2+uE75gJt+kq1qY4LoxV+qR/zalupea3D5+WMeaRIn0sAI6DDWDh158fqUb4YhAxhREbUN0qyyJYkBU4V2KARXDT65gW3gRsiv7xSPYEKLwzgriWcWgPr0sbZnv7m1XHNFW6xPdGNZUdxFiUYlmXNjDVWuu7LCkX/nVkrXaJhiYktBISC2xgBXQnNEP+cptWl1eG62a7CPXrnrkTQ5BQASbEqUZWMDiZUisKyHDeLFOaJILUo5f6iDt4ZO8MlqaKLto0AmTHVVbkGuyPa1R/ywZsWRoRDoRdNMMHwYTsklMVnlAd2S0282bgMI8fiJpDh69OSL6K3qbo20KfpNMurnYGQSr/stFqZ7hYsxKlLnKAKhsmB8AIpEQ4bd/NrTLTXefsE6ChRmKWjXKVgpGoPs8GAicgKVw4K0qgDgy1A6hFq1WRat3fHF+FkU+b6H4NWpOU3KXTxrIb2qSHAb+qhm8hiSROi/9ofapjxhyKxxntPpge6KL5Z4+WBMYkAcE6+0Hd3Yh2zBsK2MV3iW0Y6cvOCroXlRb2MMJtdWx+3dkFzGh2Pe3DZ9QpSqpaR/rE1ImOrHqYYyccpiLC22amJIjRWVAherTfpQLmo6/K2pna85GrDuQPlH1Tsar8isAJbXLafSwOof4gg9RkAGm/oYpBQQiPUoyDk2BCQ1k+KILq48ErFo4WSRhHLq/y7mgw3+L85PpP6xWr6cgp9sOjYjKagOrxF148uhuaWtjet953fh1IQiEzgC+d2IgBCcUZqgTAICm2bR8oCjDLBsmg+ThyhfD+zBalsKBY1Ce54Y/t9cwfbLu9SFwEgphfopNA3yNxgyDafUM3mYTovZNgPGdd4ZFFOj1vtfFW3u7N+iHEN1HkeesDMXKPyoCDCGVMo4GCCD6PBhQ3dRZIHy0Y/3MaE5zU9mTCrwwnZojtE+qNpMSkJSpmGe0EzLyFelMJqhfFQ7a50uXxZ8pCc2wxtAKWgHoeamR2O7R+bq7IbPYItO0esdRgoTaY38hZLJ5y02oIVwoPokGIzxAMDuanQ1vn2WDQ00Rh6o5QOaCRu99fwDbQcN0XAuqkFpxT/cfz3slGRVokrNU0iqiMAJFEbKScZdmSkTUznC0U+MfwFOGdLgsewRyPKwBZYSmy6U325iUhBQNxbAC3FLKDV9VSOuQpOOukJ/GAmu/tyEbX9DgEp6dv1zoU0IqzpG6gssSjIYRVPGgU1QAQYRgIT8gEV0EXr1sqeh2I6rXjtmoCYyEDCe/PkFEi/Q48FuT29p557iN+LCwk5CK/CZ2WdAdfQZh2Z9QGrzPLSNRj5igUWzl9Vi0rCqH8G1Kp4QMLkuwMCAypdviDXyOIk0AHTM8HBYKh3b0/F+DxoNj4ZdoZfCpQVdnZarqoMaHWnMLNVcyevytGsrXQEoIbubqWYNo7NRHzdc0zvT21fWVirj7g36iy6pxogfvgHp1xH1Turbz8QyyHnXeBJicpYUctbzApwzZ1HT+FPEXMAgUZetgeGMwt4G+DHiDT2Lu+PT21fjJCAfV16a/Wu1PqOkUHSTKYhWW6PhhHUlNtWzFnA7MbY+r64vkwdpfNB2JfWgWXAvkzd42K4lN9x7Wrg4kIKgXCb4mcW595MCPJ/cTfPAMQMFWwnqwde4w8HZYJFpQwcSMhjVz4B8p6ncSCN1X4klxoIH4BN2J6taBMj6lHkAOs8JJAmXq5xsQtrPIPIIp/HG6i21xMGcFgqDXSRF0xQg14d2uy6HgKE13LSvQe52oShF5Jx1R6avyL4thhXQZHfC94oZzuPUBKFYf1VvDaxIrtV6dNGSx7DO0i1p6CzBkuAmEqyWceQY7F9+U0ObYDzoa1iKao/cOD/v6Q9gHrrr1uCeOk8fST9MG23Ul0KmM3r+Wn6Hi6WAcL7gEeaykicvgjzkjSwFsAXIR81Zx4QJ6oosVyJkCcT+4xAldCcihqvTf94HHUPXYp3REIaR4dhpQF6+FK1H0i9i7Pvh8owu3lO4PT1iuqu+DkL2Bj9+kdfGAg2TXw03iNHyobxofLE2ibjsYDPgeEQlRMR7afXbSGQcnPjI2D+sdtmuQ771dbASUsDndU7t58jrrNGRzISvwioAlHs5FA+cBE5Ccznkd8NMV6BR6ksnKLPZnMUawRDU1MZ/ib3xCdkTblHKu4blNiylH5n213yM0zubEie0o4JhzcfAy3H5qh2l17uLooBNLaO+gzonTH2uF8PQu9EyH+pjGsACTMy4cHzsPdymUSXYJOMP3yTkXqvO/lpvt0cX5ekDEu9PUfBeZODkFuAjXCaGdi6ew4qxJ8PmFfwmPpkgQjQlWqomFY6UkjmcnAtJG75EVR+NpzGpP1Ef5qUUbfowrC3zcSLX3BxgWEgEx/v9cP8H8u1Mvt9/rMDYf6sjwU1xSOPBgzFEeJLMRVFtKo5QHsUYT8ZRLCah27599EuqoC9PYjYO6aoAMHB8X1OHwEAYouHfHB3nyb2B+SnZxM/vw/bCtORjLMSy5aZoEpvgdGvlJfNPFUu/p7Z4VVK1hiI0/UTuB3ZPq4ohEbm7Mntgc1evEtknaosgZSwnDC2BdMmibpeg48X8Ixl+/8+xXdbshQXUPPvx8jT3fkELivHSmqbhblfNFShWAyQnJ3WBU6SMYSIpTDmHjdLVAdlADdz9gCplZw6mTiHqDwIsxbm9ErGusiVpg2w8Q3khKV/R9Oj8PFeF43hmW/nSd99nZzhyjCX3QOZkkB6BsH4H866WGyv9E0hVAzPYah2tkRfQZMmP2rinfOeQalge0ovhduBjJs9a1GBwReerceify49ctOh5/65ATYuMsAkVltmvTLBk4oHpdl6i+p8DoNj4Fb2vhdFYer2JSEilEwPd5n5zNoGBXEjreg/wh2NFnNRaIUHSOXa4eJRwygZoX6vnWnqVdCRT1ARxeFrNBJ+tsdooMwqnYhE7zIxnD8pZH+P0Nu1wWxCPTADfNWmqx626IBJJq6NeapcGeOmbtXvl0TeWG0Y7OGGV4+EHTtNBIT5Wd0Bujl7inXgZgfXTM5efD3qDTJ54O9v3Bkv+tdIRlq1kXcVD0BEMirmFxglNPt5pedb1AnxuCYMChUykwsTIWqT23XDpvTiKEru1cTcEMeniB+HQDehxPXNmkotFdwUPnilB/u4Nx5Xc6l8J9jH1EgKZUUt8t8cyoZleDBEt8oibDmJRAoMKJ5Oe9CSWS5ZMEJvacsGVdXDWjp/Ype5x0p9PXB2PAwt2LRD3d+ftNgpuyvxlP8pB84oB1i73vAVpwyrmXW72hfW6Dzn9Jkj4++0VQ4d0KSx1AsDA4OtXXDo63/w+GD+zC7w5SJaxsmnlYRQ4dgdjA7tTl2KNLnpJ+mvkoDxtt1a4oPaX3EVqj96o9sRKBQqU7ZOiupeAIyLMD+Y3YwHx30XWHB5CQiw7q3mj1EDlP2eBsZbz79ayUMbyHQ7s8gu4Lgip1LiGJj7NQj905/+rgUYKAA5qdrlHKIknWmqfuR+PB8RdBkDg/NgnlT89G72h2NvySnj7UyBwD+mi/IWs1xWbxuVwUIVXun5cMqBtFbrccI+DILjsVQg6eeq0itiRfedn89CvyFtpkxaauEvSANuZmB1p8FGPbU94J9medwsZ9HkUYjmI7OH5HuxendLbxTaYrPuIfE2ffXFKhoNBUp33HsFAXmCV/Vxpq5AYgFoRr5Ay93ZLRlgaIPjhZjXZZChT+aE5iWAXMX0oSFQEtwjiuhQQItTQX5IYrKfKB+queTNplR1Hoflo5/I6aPPmACwQCE2jTOYo5Dz1cs7Sod0KTG/3kEDGk3kUaUCON19xSJCab3kNpWZhSWkO8l+SpW70Wn3g0ciOIJO5JXma6dbos6jyisuxXwUUhj2+1uGhcvuliKtWwsUTw4gi1c/diEEpZHoKoxTBeMDmhPhKTx7TXWRakV8imJR355DcIHkR9IREHxohP4TbyR5LtFU24umRPRmEYHbpe1LghyxPx7YgUHjNbbQFRQhh4KeU1EabXx8FS3JAxp2rwRDoeWkJgWRUSKw6gGP5U2PuO9V4ZuiKXGGzFQuRuf+tkSSsbBtRJKhCi3ENuLlXhPbjTKD4djXVnfXFds6Zb+1XiUrRfyayGxJq1+SYBEfbKlgjiSmk0orgTqzSS+DZ5rTqsJbttiNtp+KMqGE2AHGFw6jQqM5vD6vMptmXV9OAjq49Uf/Lx9Opam+Hn5O9p8qoBBAQixzQZ4eNVkO9sPzJAMyR1y4/RCQQ1s0pV5KAU5sKLw3tkcFbI/JqrjCsK4Mw+W8aod4lioYuawUiCyVWBE/qPaFi5bnkgpfu/ae47174rI1fqQoTbW0HrU6FAejq7ByM0V4zkZTg02/YJK2N7hUQRCeZ4BIgSEqgD8XsjzG6LIsSbuHoIdz/LhFzbNn1clci1NHWJ0/6/O8HJMdIpEZbqi1RrrFfoo/rI/7ufm2MPG5lUI0IYJ4MAiHRTSOFJ2oTverFHYXThkYFIoyFx6rMYFgaOKM4xNWdlOnIcKb/suptptgTOTdVIf4YgdaAjJnIAm4qNNHNQqqAzvi53GkyRCEoseUBrHohZsjUbkR8gfKtc/+Oa72lwxJ8Mq6HDfDATbfbJhzeIuFQJSiw1uZprHlzUf90WgqG76zO0eCB1WdPv1IT6sNxxh91GEL2YpgC97ikFHyoaH92ndwduqZ6IYjkg20DX33MWdoZk7QkcKUCgisIYslOaaLyvIIqRKWQj16jE1DlQWJJaPopWTJjXfixEjRJJo8g4++wuQjbq+WVYjsqCuNIQW3YjnxKe2M5ZKEqq+cX7ZVgnkbsU3RWIyXA1rxv4kGersYJjD//auldXGmcEbcfTeF16Y1708FB1HIfmWv6dSFi6oD4E+RIjCsEZ+kY7dKnwReJJw3xCjKvi3kGN42rvyhUlIz0Bp+fNSV5xwFiuBzG296e5s/oHoFtUyUplmPulIPl+e1CQIQVtjlzLzzzbV+D/OVQtYzo5ixtMi5BmHuG4N/uKfJk5UIREp7+12oZlKtPBomXSzAY0KgtbPzzZoHQxujnREUgBU+O/jKKhgxVhRPtbqyHiUaRwRpHv7pgRPyUrnE7fYkVblGmfTY28tFCvlILC04Tz3ivkNWVazA+OsYrxvRM/hiNn8Fc4bQBeUZABGx5S/xFf9Lbbmk298X7iFg2yeimvsQqqJ+hYbt6uq+Zf9jC+Jcwiccd61NKQtFvGWrgJiHB5lwi6fR8KzYS7EaEHf/ka9EC7H8D+WEa3TEACHBkNSj/cXxFeq4RllC+fUFm2xtstYLL2nos1DfzsC9vqDDdRVcPA3Ho95aEQHvExVThXPqym65llkKlfRXbPTRiDepdylHjmV9YTWAEjlD9DdQnCem7Aj/ml58On366392214B5zrmQz/9ySG2mFqEwjq5sFl5tYJPw5hNz8lyZPUTsr5E0F2C9VMPnZckWP7+mbwp/BiN7f4kf7vtGnZF2JGvjK/sDX1RtcFY5oPQnE4lIAYV49U3C9SP0LCY/9i/WIFK9ORjzM9kG/KGrAuwFmgdEpdLaiqQNpCTGZVuAO65afkY1h33hrqyLjZy92JK3/twdj9pafFcwfXONmPQWldPlMe7jlP24Js0v9m8bIJ9TgS2IuRvE9ZVRaCwSJYOtAfL5H/YS4FfzKWKbek+GFulheyKtDNlBtrdmr+KU+ibHTdalzFUmMfxw3f36x+3cQbJLItSilW9cuvZEMjKw987jykZRlsH/UI+HlKfo2tLwemBEeBFtmxF2xmItA/dAIfQ+rXnm88dqvXa+GapOYVt/2waFimXFx3TC2MUiOi5/Ml+3rj/YU6Ihx2hXgiDXFsUeQkRAD6wF3SCPi2flk7XwKAA4zboqynuELD312EJ88lmDEVOMa1W/K/a8tGylZRMrMoILyoMQzzbDJHNZrhH77L9qSC42HVmKiZ5S0016UTp83gOhCwz9XItK9fgXfK3F5d7nZCBUekoLxrutQaPHa16Rjsa0gTrzyjqTnmcIcrxg6X6dkKiucudc0DD5W4pJPf0vuDW8r5/uw24YfMuxFRpD2ovT2mFX79xH6Jf+MVdv2TYqR6/955QgVPe3JCD/WjAYcLA9tpXgFiEjge2J5ljeI/iUzg91KQuHkII4mmHZxC3XQORLAC6G7uFn5LOmlnXkjFdoO976moNTxElS8HdxWoPAkjjocDR136m2l+f5t6xaaNgdodOvTu0rievnhNAB79WNrVs6EsPgkgfahF9gSFzzAd+rJSraw5Mllit7vUP5YxA843lUpu6/5jAR0RvH4rRXkSg3nE+O5GFyfe+L0s5r3k05FyghSFnKo4TTgs07qj4nTLqOYj6qaW9knJTDkF5OFMYbmCP+8H16Ty482OjvERV6OFyw043L9w3hoJi408sR+SGo1WviXUu8d7qS+ehKjpKwxeCthsm2LBFSFeetx0x4AaKPxtp3CxdWqCsLrB1s/j5TAhc1jNZsXWl6tjo/WDoewxzg8T8NnhZ1niUwL/nhfygLanCnRwaFGDyLw+sfZhyZ1UtYTp8TYB6dE7R3VsKKH95CUxJ8u8N+9u2/9HUNKHW3x3w5GQrfOPafk2w5qZq8MaHT0ebeY3wIsp3rN9lrpIsW9c1ws3VNV+JwNz0Lo9+V7zZr6GD56We6gWVIvtmam5GPPkVAbr74r6SwhuL+TRXtW/0pgyX16VNl4/EAD50TnUPuwrW6OcUO2VlWXS0inq872kk7GUlW6o/ozFKq+Sip6LcTtSDfDrPTcCHhx75H8BeRon+KG2wRwzfDgWhALmiWOMO6h3pm1UCZEPEjScyk7tdLx6WrdA2N1QTPENvNnhCQjW6kl057/qv7IwRryHrZBCwVSbLLnFRiHdTwk8mlYixFt1slEcPD7FVht13HyqVeyD55HOXrh2ElAxJyinGeoFzwKA91zfrdLvDxJSjzmImfvTisreI25EDcVfGsmxLVbfU8PGe/7NmWWKjXcdTJ11jAlVIY/Bv/mcxg/Q10vCHwKG1GW/XbJq5nxDhyLqiorn7Wd7VEVL8UgVzpHMjQ+Z8DUgSukiVwWAKkeTlVVeZ7t1DGnCgJVIdBPZAEK5f8CDyDNo7tK4/5DBjdD5MPV86TaEhGsLVFPQSI68KlBYy84FievdU9gWh6XZrugvtCZmi9vfd6db6V7FmoEcRHnG36VZH8N4aZaldq9zZawt1uBFgxYYx+Gs/qW1jwANeFy+LCoymyM6zgG7j8bGzUyLhvrbJkTYAEdICEb4kMKusKT9V3eIwMLsjdUdgijMc+7iKrr+TxrVWG0U+W95SGrxnxGrE4eaJFfgvAjUM4SAy8UaRwE9j6ZQH5qYAWGtXByvDiLSDfOD0yFA3UCMKSyQ30fyy1mIRg4ZcgZHLNHWl+c9SeijOvbOJxoQy7lTN2r3Y8p6ovxvUY74aOYbuVezryqXA6U+fcp6wSV9X5/OZKP18tB56Ua0gMyxJI7XyNT7IrqN8GsB9rL/kP5KMrjXxgqKLDa+V5OCH6a5hmOWemMUsea9vQl9t5Oce76PrTyTv50ExOqngE3PHPfSL//AItPdB7kGnyTRhVUUFNdJJ2z7RtktZwgmQzhBG/G7QsjZmJfCE7k75EmdIKH7xlnmDrNM/XbTT6FzldcH/rcRGxlPrv4qDScqE7JSmQABJWqRT/TUcJSwoQM+1jvDigvrjjH8oeK2in1S+/yO1j8xAws/T5u0VnIvAPqaE1atNuN0cuRliLcH2j0nTL4JpcR7w9Qya0JoaHgsOiALLCCzRkl1UUESz+ze/gIXHGtDwgYrK6pCFKJ1webSDog4zTlPkgXZqxlQDiYMjhDpwTtBW2WxthWbov9dt2X9XFLFmcF+eEc1UaQ74gqZiZsdj63pH1qcv3Vy8JYciogIVKsJ8Yy3J9w/GhjWVSQAmrS0BPOWK+RKV+0lWqXgYMnIFwpcZVD7zPSp547i9HlflB8gVnSTGmmq1ClO081OW/UH11pEQMfkEdDFzjLC1Cdo/BdL3s7cXb8J++Hzz1rhOUVZFIPehRiZ8VYu6+7Er7j5PSZu9g/GBdmNzJmyCD9wiswj9BZw+T3iBrg81re36ihMLjoVLoWc+62a1U/7qVX5CpvTVF7rocSAKwv4cBVqZm7lLDS/qoXs4fMs/VQi6BtVbNA3uSzKpQfjH1o3x4LrvkOn40zhm6hjduDglzJUwA0POabgdXIndp9fzhOo23Pe+Rk9GSLX0d71Poqry8NQDTzNlsa+JTNG9+UrEf+ngxCjGEsDCc0bz+udVRyHQI1jmEO3S+IOQycEq7XwB6z3wfMfa73m8PVRp+iOgtZfeSBl01xn03vMaQJkyj7vnhGCklsCWVRUl4y+5oNUzQ63B2dbjDF3vikd/3RUMifPYnX5Glfuk2FsV/7RqjI9yKTbE8wJY+74p7qXO8+dIYgjtLD/N8TJtRh04N9tXJA4H59IkMmLElgvr0Q5OCeVfdAt+5hkh4pQgfRMHpL74XatLQpPiOyHRs/OdmHtBf8nOZcxVKzdGclIN16lE7kJ+pVMjspOI+5+TqLRO6m0ZpNXJoZRv9MPDRcAfJUtNZHyig/s2wwReakFgPPJwCQmu1I30/tcBbji+Na53i1W1N+BqoY7Zxo+U/M9XyJ4Ok2SSkBtoOrwuhAY3a03Eu6l8wFdIG1cN+e8hopTkiKF093KuH/BcB39rMiGDLn6XVhGKEaaT/vqb/lufuAdpGExevF1+J9itkFhCfymWr9vGb3BTK4j598zRH7+e+MU9maruZqb0pkGxRDRE1CD4Z8LV4vhgPidk5w2Bq816g3nHw1//j3JStz7NR9HIWELO8TMn3QrP/zZp//+Dv9p429/ogv+GATR+n/UdF+ns9xNkXZQJXY4t9jMkJNUFygAtzndXwjss+yWH9HAnLQQfhAskdZS2l01HLWv7L7us5uTH409pqitvfSOQg/c+Zt7k879P3K9+WV68n7+3cZfuRd/dDPP/03rn+d+/nBvWfgDlt8+LzjqJ/vx3CnNOwiXhho778C96iD+1TBvRZYeP+EH81LE0vVwOOrmCLB3iKzI1x+vJEsrPH4uF0UB4TJ4X3uDfOCo3PYpYe0MF4bouh0DQ/l43fxUF7Y+dpWuvTSffB0yO2UQUETI/LwCZE3BvnevJ7c9zUlY3H58xzke6DNFDQG8n0WtDN4LAYN4nogKav1ezOfK/z+t6tsCTp+dhx4ymjWuCJk1dEUifDP+HyS4iP/Vg9B2jTo9L4NbiBuDS4nuuHW6H+JDQn2JtqRKGkEQPEYE7uzazXIkcxIAqUq1esasZBETlEZY7y7Jo+RoV/IsjY9eIMkUvr42Hc0xqtsavZvhz1OLwSxMOTuqzlhb0WbdOwBH9EYiyBjatz40bUxTHbiWxqJ0uma19qhPruvcWJlbiSSH48OLDDpaHPszvyct41ZfTu10+vjox6kOqK6v0K/gEPphEvMl/vwSv+A4Hhm36JSP9IXTyCZDm4kKsqD5ay8b1Sad/vaiyO5N/sDfEV6Z4q95E+yfjxpqBoBETW2C7xl4pIO2bDODDFurUPwE7EWC2Uplq+AHmBHvir2PSgkR12/Ry65O0aZtQPeXi9mTlF/Wj5GQ+vFkYyhXsLTjrBSP9hwk4GPqDP5rBn5/l8b0mLRAvRSzXHc293bs3s8EsdE3m2exxidWVB4joHR+S+dz5/W+v00K3TqN14CDBth8eWcsTbiwXPsygHdGid0PEdy6HHm2v/IUuV5RVapYmzGsX90mpnIdNGcOOq64Dbc5GUbYpD9M7S+6cLY//QmjxFLP5cuTFRm3vA5rkFZroFnO3bjHF35uU3s8mvL7Tp9nyTc4mymTJ5sLIp7umSnGkO23faehtz3mmTS7fbVx5rP7x3HXIjRNeq/A3xCs9JNB08c9S9BF2O3bOur0ItslFxXgRPdaapBIi4dRpKGxVz7ir69t/bc9qTxjvtOyGOfiLGDhR4fYywHv1WdOplxIV87TpLBy3Wc0QP0P9s4G7FBNOdITS/tep3o3h1TEa5XDDii7fWtqRzUEReP2fbxz7bHWWJdbIOxOUJZtItNZpTFRfj6vm9sYjRxQVO+WTdiOhdPeTJ+8YirPvoeL88l5iLYOHd3b/Imkq+1ZN1El3UikhftuteEYxf1Wujof8Pr4ICTu5ezZyZ4tHQMxlzUHLYO2VMOoNMGL/20S5i2o2obfk+8qqdR7xzbRDbgU0lnuIgz4LelQ5XS7xbLuSQtNS95v3ZUOdaUx/Qd8qxCt6xf2E62yb/HukLO6RyorV8KgYl5YNc75y+KvefrxY+lc/64y9kvWP0a0bDz/rojq+RWjO06WeruWqNFU7r3HPIcLWRql8ICZsz2Ls/qOm/CLn6++X+Qf7mGspYCrZod/lpl6Rw4xN/yuq8gqV4B6aHk1hVE1SfILxWu5gvXqbfARYQpspcxKp1F/c8XOPzkZvmoSw+vEqBLdrq1fr3wAPv5NnM9i8F+jdAuxkP5Z71c6uhK3enlnGymr7UsWZKC12qgUiG8XXGQ9mxnqz4GSIlybF9eXmbqj2sHX+a1jf0gRoONHRdRSrIq03Ty89eQ1GbV/Bk+du4+V15zls+vvERvZ4E7ZbnxWTVjDjb4o/k8jlw44pTIrUGxxuJvBeO+heuhOjpFsO6lVJ/aXnJDa/bM0Ql1cLbXE/Pbv3EZ3vj3iVrB5irjupZTzlnv677NrI9UNYNqbPgp/HZXS+lJmk87wec+7YOxTDo2aw2l3NfDr34VNlvqWJBknuK7oSlZ6/T10zuOoPZOeoIk81N+sL843WJ2Q4Z0fZ3scsqC/JV2fuhWi1jGURSKZV637lf53Xnnx16/vKEXY89aVJ0fv91jGdfG+G4+sniwHes4hS+udOr4RfhFhG/F5gUG35QaU+McuLmclb5ZWmR+sG5V6nf+PxYzlrnFGxpZaK8eqqVo0NfmAWoGfXDiT/FnUbWvzGDOTr8aktOZWg4BYvz5YH12ZbfCcGtNk+dDAZNGWvHov+PIOnY9Prjg8h/wLRrT69suaMVZ5bNuK00lSVpnqSX1NON/81FoP92rYndionwgOiA8WMf4vc8l15KqEEG4yAm2+WAN5Brfu1sq9suWYqgoajgOYt/JCk1gC8wPkK+XKCtRX6TAtgvrnuBgNRmn6I8lVDipOVB9kX6Oxkp4ZKyd1M6Gj8/v2U7k+YQBL95Kb9PQENucJb0JlW3b5tObN7m/Z1j1ev388d7o15zgXsI9CikAGAViR6lkJv7nb4Ak40M2G8TJ447kN+pvfHiOFjSUSP6PM+QfbAywKJCBaxSVxpizHseZUyUBhq59vFwrkyGoRiHbo0apweEZeSLuNiQ+HAekOnarFg00dZNXaPeoHPTRR0FmEyqYExOVaaaO8c0uFUh7U4e/UxdBmthlBDgg257Q33j1hA7HTxSeTTSuVnPZbgW1nodwmG16aKBDKxEetv7D9OjO0JhrbJTnoe+kcGoDJazFSO8/fUN9Jy/g4XK5PUkw2dgPDGpJqBfhe7GA+cjzfE/EGsMM+FV9nj9IAhrSfT/J3QE5TEIYyk5UjsI6ZZcCPr6A8FZUF4g9nnpVmjX90MLSQysIPD0nFzqwCcSJmIb5mYv2Cmk+C1MDFkZQyCBq4c/Yai9LJ6xYkGS/x2s5/frIW2vmG2Wrv0APpCdgCA9snFvfpe8uc0OwdRs4G9973PGEBnQB5qKrCQ6m6X/H7NInZ7y/1674/ZXOVp7OeuCRk8JFS516VHrnH1HkIUIlTIljjHaQtEtkJtosYul77cVwjk3gW1Ajaa6zWeyHGLlpk3VHE2VFzT2yI/EvlGUSz2H9zYE1s4nsKMtMqNyKNtL/59CpFJki5Fou6VXGm8vWATEPwrUVOLvoA8jLuwOzVBCgHB2Cr5V6OwEWtJEKokJkfc87h+sNHTvMb0KVTp5284QTPupoWvQVUwUeogZR3kBMESYo0mfukewRVPKh5+rzLQb7HKjFFIgWhj1w3yN/qCNoPI8XFiUgBNT1hCHBsAz8L7Oyt8wQWUFj92ONn/APyJFg8hzueqoJdNj57ROrFbffuS/XxrSXLTRgj5uxZjpgQYceeMc2wJrahReSKpm3QjHfqExTLAB2ipVumE8pqcZv8LYXQiPHHsgb5BMW8zM5pvQit+mQx8XGaVDcfVbLyMTlY8xcfmm/RSAT/H09UQol5gIz7rESDmnrQ4bURIB4iRXMDQwxgex1GgtDxKp2HayIkR+E/aDmCttNm2C6lytWdfOVzD6X2SpDWjQDlMRvAp1symWv4my1bPCD+E1EmGnMGWhNwmycJnDV2WrQNxO45ukEb08AAffizYKVULp15I4vbNK5DzWwCSUADfmKhfGSUqii1L2UsE8rB7mLuHuUJZOx4+WiizHBJ/hwboaBzhpNOVvgFTf5cJsHef7L1HCI9dOUUbb+YxUJWn6dYOLz+THi91kzY5dtO5c+grX7v0jEbsuoOGnoIreDIg/sFMyG+TyCLIcAWd1IZ1UNFxE8Uie13ucm40U2fcxC0u3WLvLOxwu+F7MWUsHsdtFQZ7W+nlfCASiAKyh8rnP3EyDByvtJb6Kax6/HkLzT9SyEyTMVM1zPtM0MJY14DmsWh4MgD15Ea9Hd00AdkTZ0EiG5NAGuIBzQJJ0JR0na+OB7lQA6UKxMfihIQ7GCCnVz694QvykWXTxpS2soDu+smru1UdIxSvAszBFD1c8c6ZOobA8bJiJIvuycgIXBQIXWwhyTgZDQxJTRXgEwRNAawGSXO0a1DKjdihLVNp/taE/xYhsgwe+VpKEEB4LlraQyE84gEihxCnbfoyOuJIEXy2FIYw+JjRusybKlU2g/vhTSGTydvCvXhYBdtAXtS2v7LkHtmXh/8fly1do8FI/D0f8UbzVb5h+KRhMGSAmR2mhi0YG/uj7wgxcfzCrMvdjitUIpXDX8ae2JcF/36qUWIMwN6JsjaRGNj+jEteGDcFyTUb8X/NHSucKMJp7pduxtD6KuxVlyxxwaeiC1FbGBESO84lbyrAugYxdl+2N8/6AgWpo/IeoAOcsG35IA/b3AuSyoa55L7llBLlaWlEWvuCFd8f8NfcTUgzJv6CbB+6ohWwodlk9nGWFpBAOaz5uEW5xBvmjnHFeDsb0mXwayj3mdYq5gxxNf3H3/tnCgHwjSrpSgVxLmiTtuszdRUFIsn6LiMPjL808vL1uQhDbM7aA43mISXReqjSskynIRcHCJ9qeFopJfx9tqyUoGbSwJex/0aDE3plBPGtNBYgWbdLom3+Q/bjdizR2/AS/c/dH/d3G7pyl1qDXgtOFtEqidwLqxPYtrNEveasWq3vPUUtqTeu8gpov4bdOQRI2kneFvRNMrShyVeEupK1PoLDPMSfWMIJcs267mGB8X9CehQCF0gIyhpP10mbyM7lwW1e6TGvHBV1sg/UyTghHPGRqMyaebC6pbB1WKNCQtlai1GGvmq9zUKaUzLaXsXEBYtHxmFbEZ2kJhR164LhWW2Tlp1dhsGE7ZgIWRBOx3Zcu2DxgH+G83WTPceKG0TgQKKiiNNOlWgvqNEbnrk6fVD+AqRam2OguZb0YWSTX88N+i/ELSxbaUUpPx4vJUzYg/WonSeA8xUK6u7DPHgpqWpEe6D4cXg5uK9FIYVba47V/nb+wyOtk+zG8RrS4EA0ouwa04iByRLSvoJA2FzaobbZtXnq8GdbfqEp5I2dpfpj59TCVif6+E75p665faiX8gS213RqBxTZqfHP46nF6NSenOneuT+vgbLUbdTH2/t0REFXZJOEB6DHvx6N6g9956CYrY/AYcm9gELJXYkrSi+0F0geKDZgOCIYkLU/+GOW5aGj8mvLFgtFH5+XC8hvAE3CvHRfl4ofM/Qwk4x2A+R+nyc9gNu/9Tem7XW4XRnyRymf52z09cTOdr+PG6+P/Vb4QiXlwauc5WB1z3o+IJjlbxI8MyWtSzT+k4sKVbhF3xa+vDts3NxXa87iiu+xRH9cAprnOL2h6vV54iQRXuOAj1s8nLFK8gZ70ThIQcWdF19/2xaJmT0efrkNDkWbpAQPdo92Z8+Hn/aLjbOzB9AI/k12fPs9HhUNDJ1u6ax2VxD3R6PywN7BrLJ26z6s3QoMp76qzzwetrDABKSGkfW5PwS1GvYNUbK6uRqxfyVGNyFB0E+OugMM8kKwmJmupuRWO8XkXXXQECyRVw9UyIrtCtcc4oNqXqr7AURBmKn6Khz3eBN96LwIJrAGP9mr/59uTOSx631suyT+QujDd4beUFpZ0kJEEnjlP+X/Kr2kCKhnENTg4BsMTOmMqlj2WMFLRUlVG0fzdCBgUta9odrJfpVdFomTi6ak0tFjXTcdqqvWBAzjY6hVrH9sbt3Z9gn+AVDpTcQImefbB4edirjzrsNievve4ZT4EUZWV3TxEsIW+9MT/RJoKfZZYSRGfC1CwPG/9rdMOM8qR/LUYvw5f/emUSoD7YSFuOoqchdUg2UePd1eCtFSKgxLSZ764oy4lvRCIH6bowPxZWwxNFctksLeil47pfevcBipkkBIc4ngZG+kxGZ71a72KQ7VaZ6MZOZkQJZXM6kb/Ac0/XkJx8dvyfJcWbI3zONEaEPIW8GbkYjsZcwy+eMoKrYjDmvEEixHzkCSCRPRzhOfJZuLdcbx19EL23MA8rnjTZZ787FGMnkqnpuzB5/90w1gtUSRaWcb0eta8198VEeZMUSfIhyuc4/nywFQ9uqn7jdqXh+5wwv+RK9XouNPbYdoEelNGo34KyySwigsrfCe0v/PlWPvQvQg8R0KgHO18mTVThhQrlbEQ0Kp/JxPdjHyR7E1QPw/ut0r+HDDG7BwZFm9IqEUZRpv2WpzlMkOemeLcAt5CsrzskLGaVOAxyySzZV/D2EY7ydNZMf8e8VhHcKGHAWNszf1EOq8fNstijMY4JXyATwTdncFFqcNDfDo+mWFvxJJpc4sEZtjXyBdoFcxbUmniCoKq5jydUHNjYJxMqN1KzYV62MugcELVhS3Bnd+TLLOh7dws/zSXWzxEb4Nj4aFun5x4kDWLK5TUF/yCXB/cZYvI9kPgVsG2jShtXkxfgT+xzjJofXqPEnIXIQ1lnIdmVzBOM90EXvJUW6a0nZ/7XjJGl8ToO3H/fdxnxmTNKBZxnkpXLVgLXCZywGT3YyS75w/PAH5I/jMuRspej8xZObU9kREbRA+kqjmKRFaKGWAmFQspC+QLbKPf0RaK3OXvBSWqo46p70ws/eZpu6jCtZUgQy6r4tHMPUdAgWGGUYNbuv/1a6K+MVFsd3T183+T8capSo6m0+Sh57fEeG/95dykGJBQMj09DSW2bY0mUonDy9a8trLnnL5B5LW3Nl8rJZNysO8Zb+80zXxqUGFpud3Qzwb7bf+8mq6x0TAnJU9pDQR9YQmZhlna2xuxJt0aCO/f1SU8gblOrbIyMsxTlVUW69VJPzYU2HlRXcqE2lLLxnObZuz2tT9CivfTAUYfmzJlt/lOPgsR6VN64/xQd4Jlk/RV7UKVv2Gx/AWsmTAuCWKhdwC+4HmKEKYZh2Xis4KsUR1BeObs1c13wqFRnocdmuheaTV30gvVXZcouzHKK5zwrN52jXJEuX6dGx3BCpV/++4f3hyaW/cQJLFKqasjsMuO3B3WlMq2gyYfdK1e7L2pO/tRye2mwzwZPfdUMrl5wdLqdd2Kv/wVtnpyWYhd49L6rsOV+8HXPrWH2Kup89l2tz6bf80iYSd+V4LROSOHeamvexR524q4r43rTmtFzQvArpvWfLYFZrbFspBsXNUqqenjxNNsFXatZvlIhk7teUPfK+YL32F8McTnjv0BZNppb+vshoCrtLXjIWq3EJXpVXIlG6ZNL0dh6qEm2WMwDjD3LfOfkGh1/czYc/0qhiD2ozNnH4882MVVt3JbVFkbwowNCO3KL5IoYW5wlVeGCViOuv1svZx7FbzxKzA4zGqBlRRaRWCobXaVq4yYCWbZf8eiJwt3OY+MFiSJengcFP2t0JMfzOiJ7cECvpx7neg1Rc5x+7myPJOXt2FohVRyXtD+/rDoTOyGYInJelZMjolecVHUhUNqvdZWg2J2t0jPmiLFeRD/8fOT4o+NGILb+TufCo9ceBBm3JLVn+MO2675n7qiEX/6W+188cYg3Zn5NSTjgOKfWFSAANa6raCxSoVU851oJLY11WIoYK0du0ec5E4tCnAPoKh71riTsjVIp3gKvBbEYQiNYrmH22oLQWA2AdwMnID6PX9b58dR2QKo4qag1D1Z+L/FwEKTR7osOZPWECPJIHQqPUsM5i/CH5YupVPfFA5pHUBcsesh8eO5YhyWnaVRPZn/BmdXVumZWPxMP5e28zm2uqHgFoT9CymHYNNrzrrjlXZM06HnzDxYNlI5b/QosxLmmrqDFqmogQdqk0WLkUceoAvQxHgkIyvWU69BPFr24VB6+lx75Rna6dGtrmOxDnvBojvi1/4dHjVeg8owofPe1cOnxU1ioh016s/Vudv9mhV9f35At+Sh28h1bpp8xhr09+vf47Elx3Ms6hyp6QvB3t0vnLbOhwo660cp7K0vvepabK7YJfxEWWfrC2YzJfYOjygPwfwd/1amTqa0hZ5ueebhWYVMubRTwIjj+0Oq0ohU3zfRfuL8gt59XsHdwKtxTQQ4Y2qz6gisxnm2UdlmpEkgOsZz7iEk6QOt8BuPwr+NR01LTqXmJo1C76o1N274twJvl+I069TiLpenK/miRxhyY8jvYV6W1WuSwhH9q7kuwnJMtm7IWcqs7HsnyHSqWXLSpYtZGaR1V3t0gauninFPZGtWskF65rtti48UV9uV9KM8kfDYs0pgB00S+TlzTXV6P8mxq15b9En8sz3jWSszcifZa/NuufPNnNTb031pptt0+sRSH/7UG8pzbsgtt3OG3ut7B9JzDMt2mTZuyRNIV8D54TuTrpNcHtgmMlYJeiY9XS83NYJicjRjtJSf9BZLsQv629QdDsKQhTK5CnXhpk7vMNkHzPhm0ExW/VCGApHfPyBagtZQTQmPHx7g5IXXsrQDPzIVhv2LB6Ih138iSDww1JNHrDvzUxvp73MsQBVhW8EbrReaVUcLB1R3PUXyaYG4HpJUcLVxMgDxcPkVRQpL7VTAGabDzbKcvg12t5P8TSGQkrj/gOrpnbiDHwluA73xbXts/L7u468cRWSWRtgTwlQnA47EKg0OiZDgFxAKQQUcsbGomITgeXUAAyKe03eA7Mp4gnyKQmm0LXJtEk6ddksMJCuxDmmHzmVhO+XaN2A54MIh3niw5CF7PwiXFZrnA8wOdeHLvvhdoqIDG9PDI7UnWWHq526T8y6ixJPhkuVKZnoUruOpUgOOp3iIKBjk+yi1vHo5cItHXb1PIKzGaZlRS0g5d3MV2pD8FQdGYLZ73aae/eEIUePMc4NFz8pIUfLCrrF4jVWH5gQneN3S8vANBmUXrEcKGn6hIUN95y1vpsvLwbGpzV9L0ZKTan6TDXM05236uLJcIEMKVAxKNT0K8WljuwNny3BNQRfzovA85beI9zr1AGNYnYCVkR1aGngWURUrgqR+gRrQhxW81l3CHevjvGEPzPMTxdsIfB9dfGRbZU0cg/1mcubtECX4tvaedmNAvTxCJtc2QaoUalGfENCGK7IS/O8CRpdOVca8EWCRwv2sSWE8CJPW5PCugjCXPd3h6U60cPD+bdhtXZuYB6stcoveE7Sm5MM2yvfUHXFSW7KzLmi7/EeEWL0wqcOH9MOSKjhCHHmw+JGLcYE/7SBZQCRggox0ZZTAxrlzNNXYXL5fNIjkdT4YMqVUz6p8YDt049v4OXGdg3qTrtLBUXOZf7ahPlZAY/O+7Sp0bvGSHdyQ8B1LOsplqMb9Se8VAE7gIdSZvxbRSrfl+Lk5Qaqi5QJceqjitdErcHXg/3MryljPSIAMaaloFm1cVwBJ8DNmkDqoGROSHFetrgjQ5CahuKkdH5pRPigMrgTtlFI8ufJPJSUlGgTjbBSvpRc0zypiUn6U5KZqcRoyrtzhmJ7/caeZkmVRwJQeLOG8LY6vP5ChpKhc8Js0El+n6FXqbx9ItdtLtYP92kKfaTLtCi8StLZdENJa9Ex1nOoz1kQ7qxoiZFKRyLf4O4CHRT0T/0W9F8epNKVoeyxUXhy3sQMMsJjQJEyMOjmOhMFgOmmlscV4eFi1CldU92yjwleirEKPW3bPAuEhRZV7JsKV3Lr5cETAiFuX5Nw5UlF7d2HZ96Bh0sgFIL5KGaKSoVYVlvdKpZJVP5+NZ7xDEkQhmDgsDKciazJCXJ6ZN2B3FY2f6VZyGl/t4aunGIAk/BHaS+i+SpdRfnB/OktOvyjinWNfM9Ksr6WwtCa1hCmeRI6icpFM4o8quCLsikU0tMoZI/9EqXRMpKGaWzofl4nQuVQm17d5fU5qXCQeCDqVaL9XJ9qJ08n3G3EFZS28SHEb3cdRBdtO0YcTzil3QknNKEe/smQ1fTb0XbpyNB5xAeuIlf+5KWlEY0DqJbsnzJlQxJPOVyHiKMx5Xu9FcEv1Fbg6Fhm4t+Jyy5JC1W3YO8dYLsO0PXPbxodBgttTbH3rt9Cp1lJIk2r3O1Zqu94eRbnIz2f50lWolYzuKsj4PMok4abHLO8NAC884hiXx5Fy5pWKO0bWL7uEGXaJCtznhP67SlQ4xjWIfgq6EpZ28QMtuZK7JC0RGbl9nA4XtFLug/NLMoH1pGt9IonAJqcEDLyH6TDROcbsmGPaGIxMo41IUAnQVPMPGByp4mOmh9ZQMkBAcksUK55LsZj7E5z5XuZoyWCKu6nHmDq22xI/9Z8YdxJy4kWpD16jLVrpwGLWfyOD0Wd+cBzFBxVaGv7S5k9qwh/5t/LQEXsRqI3Q9Rm3QIoaZW9GlsDaKOUyykyWuhNOprSEi0s1G4rgoiX1V743EELti+pJu5og6X0g6oTynUqlhH9k6ezyRi05NGZHz0nvp3HOJr7ebrAUFrDjbkFBObEvdQWkkUbL0pEvMU46X58vF9j9F3j6kpyetNUBItrEubW9ZvMPM4qNqLlsSBJqOH3XbNwv/cXDXNxN8iFLzUhteisYY+RlHYOuP29/Cb+L+xv+35Rv7xudnZ6ohK4cMPfCG8KI7dNmjNk/H4e84pOxn/sZHK9psfvj8ncA8qJz7O8xqbxESDivGJOZzF7o5PJLQ7g34qAWoyuA+x3btU98LT6ZyGyceIXjrqob2CAVql4VOTQPUQYvHV/g4zAuCZGvYQBtf0wmd5lilrvuEn1BXLny01B4h4SMDlYsnNpm9d7m9h578ufpef9Z4WplqWQvqo52fyUA7J24eZD5av6SyGIV9kpmHNqyvdfzcpEMw97BvknV2fq+MFHun9BT3Lsf8pbzvisWiIQvYkng+8Vxk1V+dli1u56kY50LRjaPdotvT5BwqtwyF+emo/z9J3yVUVGfKrxQtJMOAQWoQii/4dp9wgybSa5mkucmRLtEQZ/pz0tL/NVcgWAd95nEQ3Tg6tNbuyn3Iepz65L3huMUUBntllWuu4DbtOFSMSbpILV4fy6wlM0SOvi6CpLh81c1LreIvKd61uEWBcDw1lUBUW1I0Z+m/PaRlX+PQ/oxg0Ye6KUiIiTF4ADNk59Ydpt5/rkxmq9tV5Kcp/eQLUVVmBzQNVuytQCP6Ezd0G8eLxWyHpmZWJ3bAzkWTtg4lZlw42SQezEmiUPaJUuR/qklVA/87S4ArFCpALdY3QRdUw3G3XbWUp6aq9z0zUizcPa7351p9JXOZyfdZBFnqt90VzQndXB/mwf8LC9STj5kenVpNuqOQQP3mIRJj7eV21FxG8VAxKrEn3c+XfmZ800EPb9/5lIlijscUbB6da0RQaMook0zug1G0tKi/JBC4rw7/D3m4ARzAkzMcVrDcT2SyFtUdWAsFlsPDFqV3N+EjyXaoEePwroaZCiLqEzb8MW+PNE9TmTC01EzWli51PzZvUqkmyuROU+V6ik+Le/9qT6nwzUzf9tP68tYei0YaDGx6kAd7jn1cKqOCuYbiELH9zYqcc4MnRJjkeGiqaGwLImhyeKs+xKJMBlOJ05ow9gGCKZ1VpnMKoSCTbMS+X+23y042zOb5MtcY/6oBeAo1Vy89OTyhpavFP78jXCcFH0t7Gx24hMEOm2gsEfGabVpQgvFqbQKMsknFRRmuPHcZu0Su/WMFphZvB2r/EGbG72rpGGho3h+Msz0uGzJ7hNK2uqQiE1qmn0zgacKYYZBCqsxV+sjbpoVdSilW/b94n2xNb648VmNIoizqEWhBnsen+d0kbCPmRItfWqSBeOd9Wne3c6bcd6uvXOJ6WdiSsuXq0ndhqrQ4QoWUjCjYtZ0EAhnSOP1m44xkf0O7jXghrzSJWxP4a/t72jU29Vu2rvu4n7HfHkkmQOMGSS+NPeLGO5I73mC2B7+lMiBQQZRM9/9liLIfowupUFAbPBbR+lxDM6M8Ptgh1paJq5Rvs7yEuLQv/7d1oU2woFSb3FMPWQOKMuCuJ7pDDjpIclus5TeEoMBy2YdVB4fxmesaCeMNsEgTHKS5WDSGyNUOoEpcC2OFWtIRf0w27ck34/DjxRTVIcc9+kqZE6iMSiVDsiKdP/Xz5XfEhm/sBhO50p1rvJDlkyyxuJ9SPgs7YeUJBjXdeAkE+P9OQJm6SZnn1svcduI78dYmbkE2mtziPrcjVisXG78spLvbZaSFx/Rks9zP4LKn0Cdz/3JsetkT06A8f/yCgMO6Mb1Hme0JJ7b2wZz1qleqTuKBGokhPVUZ0dVu+tnQYNEY1fmkZSz6+EGZ5EzL7657mreZGR3jUfaEk458PDniBzsSmBKhDRzfXameryJv9/D5m6HIqZ0R+ouCE54Dzp4IJuuD1e4Dc5i+PpSORJfG23uVgqixAMDvchMR0nZdH5brclYwRoJRWv/rlxGRI5ffD5NPGmIDt7vDE1434pYdVZIFh89Bs94HGGJbTwrN8T6lh1HZFTOB4lWzWj6EVqxSMvC0/ljWBQ3F2kc/mO2b6tWonT2JEqEwFts8rz2h+oWNds9ceR2cb7zZvJTDppHaEhK5avWqsseWa2Dt5BBhabdWSktS80oMQrL4TvAM9b5HMmyDnO+OkkbMXfUJG7eXqTIG6lqSOEbqVR+qYdP7uWb57WEJqzyh411GAVsDinPs7KvUeXItlcMdOUWzXBH6zscymV1LLVCtc8IePojzXHF9m5b5zGwBRdzcyUJkiu938ApmAayRdJrX1PmVguWUvt2ThQ62czItTyWJMW2An/hdDfMK7SiFQlGIdAbltHz3ycoh7j9V7GxNWBpbtcSdqm4XxRwTawc3cbZ+xfSv9qQfEkDKfZTwCkqWGI/ur250ItXlMlh6vUNWEYIg9A3GzbgmbqvTN8js2YMo87CU5y6nZ4dbJLDQJj9fc7yM7tZzJDZFtqOcU8+mZjYlq4VmifI23iHb1ZoT9E+kT2dolnP1AfiOkt7PQCSykBiXy5mv637IegWSKj9IKrYZf4Lu9+I7ub+mkRdlvYzehh/jaJ9n7HUH5b2IbgeNdkY7wx1yVzxS7pbvky6+nmVUtRllEFfweUQ0/nG017WoUYSxs+j2B4FV/F62EtHlMWZXYrjGHpthnNb1x66LKZ0Qe92INWHdfR/vqp02wMS8r1G4dJqHok8KmQ7947G13a4YXbsGgHcBvRuVu1eAi4/A5+ZixmdSXM73LupB/LH7O9yxLTVXJTyBbI1S49TIROrfVCOb/czZ9pM4JsZx8kUz8dQGv7gUWKxXvTH7QM/3J2OuXXgciUhqY+cgtaOliQQVOYthBLV3xpESZT3rmfEYNZxmpBbb24CRao86prn+i9TNOh8VxRJGXJfXHATJHs1T5txgc/opYrY8XjlGQQbRcoxIBcnVsMjmU1ymmIUL4dviJXndMAJ0Yet+c7O52/p98ytlmAsGBaTAmMhimAnvp1TWNGM9BpuitGj+t810CU2UhorrjPKGtThVC8WaXw04WFnT5fTjqmPyrQ0tN3CkLsctVy2xr0ZWgiWVZ1OrlFjjxJYsOiZv2cAoOvE+7sY0I/TwWcZqMoyIKNOftwP7w++Rfg67ljfovKYa50if3fzE/8aPYVey/Nq35+nH2sLPh/fP5TsylSKGOZ4k69d2PnH43+kq++sRXHQqGArWdwhx+hpwQC6JgT2uxehYU4Zbw7oNb6/HLikPyJROGK2ouyr+vzseESp9G50T4AyFrSqOQ0rroCYP4sMDFBrHn342EyZTMlSyk47rHSq89Y9/nI3zG5lX16Z5lxphguLOcZUndL8wNcrkyjH82jqg8Bo8OYkynrxZvbFno5lUS3OPr8Ko3mX9NoRPdYOKKjD07bvgFgpZ/RF+YzkWvJ/Hs/tUbfeGzGWLxNAjfDzHHMVSDwB5SabQLsIZHiBp43FjGkaienYoDd18hu2BGwOK7U3o70K/WY/kuuKdmdrykIBUdG2mvE91L1JtTbh20mOLbk1vCAamu7utlXeGU2ooVikbU/actcgmsC1FKk2qmj3GWeIWbj4tGIxE7BLcBWUvvcnd/lYxsMV4F917fWeFB/XbINN3qGvIyTpCalz1lVewdIGqeAS/gB8Mi+sA+BqDiX3VGD2eUunTRbSY+AuDy4E3Qx3hAhwnSXX+B0zuj3eQ1miS8Vux2z/l6/BkWtjKGU72aJkOCWhGcSf3+kFkkB15vGOsQrSdFr6qTj0gBYiOlnBO41170gOWHSUoBVRU2JjwppYdhIFDfu7tIRHccSNM5KZOFDPz0TGMAjzzEpeLwTWp+kn201kU6NjbiMQJx83+LX1e1tZ10kuChJZ/XBUQ1dwaBHjTDJDqOympEk8X2M3VtVw21JksChA8w1tTefO3RJ1FMbqZ01bHHkudDB/OhLfe7P5GOHaI28ZXKTMuqo0hLWQ4HabBsGG7NbP1RiXtETz074er6w/OerJWEqjmkq2y51q1BVI+JUudnVa3ogBpzdhFE7fC7kybrAt2Z6RqDjATAUEYeYK45WMupBKQRtQlU+uNsjnzj6ZmGrezA+ASrWxQ6LMkHRXqXwNq7ftv28dUx/ZSJciDXP2SWJsWaN0FjPX9Yko6LobZ7aYW/IdUktI9apTLyHS8DyWPyuoZyxN1TK/vtfxk3HwWh6JczZC8Ftn0bIJay2g+n5wd7lm9rEsKO+svqVmi+c1j88hSCxbzrg4+HEP0Nt1/B6YW1XVm09T1CpAKjc9n18hjqsaFGdfyva1ZG0Xu3ip6N6JGpyTSqY5h4BOlpLPaOnyw45PdXTN+DtAKg7DLrLFTnWusoSBHk3s0d7YouJHq85/R09Tfc37ENXZF48eAYLnq9GLioNcwDZrC6FW6godB8JnqYUPvn0pWLfQz0lM0Yy8Mybgn84Ds3Q9bDP10bLyOV+qzxa4Rd9Dhu7cju8mMaONXK3UqmBQ9qIg7etIwEqM/kECk/Dzja4Bs1xR+Q/tCbc8IKrSGsTdJJ0vge7IG20W687uVmK6icWQ6cD3lwFzgNMGtFvO5qyJeKflGLAAcQZOrkxVwy3cWvqlGpvjmf9Qe6Ap20MPbV92DPV0OhFM4kz8Yr0ffC2zLWSQ1kqY6QdQrttR3kh1YLtQd1kCEv5hVoPIRWl5ERcUTttBIrWp6Xs5Ehh5OUUwI5aEBvuiDmUoENmnVw1FohCrbRp1A1E+XSlWVOTi7ADW+5Ohb9z1vK4qx5R5lPdGCPBJZ00mC+Ssp8VUbgpGAvXWMuWQQRbCqI6Rr2jtxZxtfP7W/8onz+yz0Gs76LaT5HX9ecyiZCB/ZR/gFtMxPsDwohoeCRtiuLxE1GM1vUEUgBv86+eehL58/P56QFGQ/MqOe/vC76L63jzmeax4exd/OKTUvkXg+fOJUHych9xt/9goJMrapSgvXrj8+8vk/N80f22Sewj6cyGqt1B6mztoeklVHHraouhvHJaG/OuBz6DHKMpFmQULU1bRWlyYE0RPXYYkUycIemN7TLtgNCJX6BqdyxDKkegO7nJK5xQ7OVYDZTMf9bVHidtk6DQX9Et+V9M7esgbsYBdEeUpsB0Xvw2kd9+rI7V+m47u+O/tq7mw7262HU1WlS9uFzsV6JxIHNmUCy0QS9e077JGRFbG65z3/dOKB/Zk+yDdKpUmdXjn/aS3N5nv4fK7bMHHmPlHd4E2+iTbV5rpzScRnxk6KARuDTJ8Q1LpK2mP8gj1EbuJ9RIyY+EWK4hCiIDBAS1Tm2IEXAFfgKPgdL9O6mAa06wjCcUAL6EsxPQWO9VNegBPm/0GgkZbDxCynxujX/92vmGcjZRMAY45puak2sFLCLSwXpEsyy5fnF0jGJBhm+fNSHKKUUfy+276A7/feLOFxxUuHRNJI2Osenxyvf8DAGObT60pfTTlhEg9u/KKkhJqm5U1/+BEcSkpFDA5XeCqxwXmPac1jcuZ3JWQ+p0NdWzb/5v1ZvF8GtMTFFEdQjpLO0bwPb0BHNWnip3liDXI2fXf05jjvfJ0NpjLCUgfTh9CMFYVFKEd4Z/OG/2C+N435mnK+9t1gvCiVcaaH7rK4+PjCvpVNiz+t2QyqH1O8x3JKZVl6Q+Lp/XK8wMjVMslOq9FdSw5FtUs/CptXH9PW+wbWHgrV17R5jTVOtGtKFu3nb80T+E0tv9QkzW3J2dbaw/8ddAKZ0pxIaEqLjlPrji3VgJ3GvdFvlqD8075woxh4fVt0JZE0KVFsAvqhe0dqN9b35jtSpnYMXkU+vZq+IAHad3IHc2s/LYrnD1anfG46IFiMIr9oNbZDWvwthqYNqOigaKd/XlLU4XHfk/PXIjPsLy/9/kAtQ+/wKH+hI/IROWj5FPvTZAT9f7j4ZXQyG4M0TujMAFXYkKvEHv1xhySekgXGGqNxWeWKlf8dDAlLuB1cb/qOD+rk7cmwt+1yKpk9cudqBanTi6zTbXRtV8qylNtjyOVKy1HTz0GW9rjt6sSjAZcT5R+KdtyYb0zyqG9pSLuCw5WBwAn7fjBjKLLoxLXMI+52L9cLwIR2B6OllJZLHJ8vDxmWdtF+QJnmt1rsHPIWY20lftk8fYePkAIg6Hgn532QoIpegMxiWgAOfe5/U44APR8Ac0NeZrVh3gEhs12W+tVSiWiUQekf/YBECUy5fdYbA08dd7VzPAP9aiVcIB9k6tY7WdJ1wNV+bHeydNtmC6G5ICtFC1ZwmJU/j8hf0I8TRVKSiz5oYIa93EpUI78X8GYIAZabx47/n8LDAAJ0nNtP1rpROprqKMBRecShca6qXuTSI3jZBLOB3Vp381B5rCGhjSvh/NSVkYp2qIdP/Bg="},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,g){this.bits=d,this.value=g}a.HuffmanCode=n;var l=15;function m(d,g){for(var h=1<<g-1;d&h;)h>>=1;return(d&h-1)+h}function f(d,g,h,v,_){do v-=h,d[g+v]=new n(_.bits,_.value);while(v>0)}function c(d,g,h){for(var v=1<<g-h;g<l&&(v-=d[g],!(v<=0));)++g,v<<=1;return g-h}a.BrotliBuildHuffmanTable=function(d,g,h,v,_){var A=g,k,x,b,T,Y,I,D,H,$,bt,W,y=new Int32Array(l+1),L=new Int32Array(l+1);for(W=new Int32Array(_),b=0;b<_;b++)y[v[b]]++;for(L[1]=0,x=1;x<l;x++)L[x+1]=L[x]+y[x];for(b=0;b<_;b++)v[b]!==0&&(W[L[v[b]]++]=b);if(H=h,$=1<<H,bt=$,L[l]===1){for(T=0;T<bt;++T)d[g+T]=new n(0,W[0]&65535);return bt}for(T=0,b=0,x=1,Y=2;x<=h;++x,Y<<=1)for(;y[x]>0;--y[x])k=new n(x&255,W[b++]&65535),f(d,g+T,Y,$,k),T=m(T,x);for(D=bt-1,I=-1,x=h+1,Y=2;x<=l;++x,Y<<=1)for(;y[x]>0;--y[x])(T&D)!==I&&(g+=$,H=c(y,x,h),$=1<<H,bt+=$,I=T&D,d[A+I]=new n(H+h&255,g-A-I&65535)),k=new n(x-h&255,W[b++]&65535),f(d,g+(T>>h),Y,$,k),T=m(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=h,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],m=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function g(b){var T=b.length;if(T%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function h(b){var T=g(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function v(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=g(b),I=Y[0],D=Y[1],H=new m(v(b,I,D)),$=0,bt=D>0?I-4:I,W=0;W<bt;W+=4)T=l[b.charCodeAt(W)]<<18|l[b.charCodeAt(W+1)]<<12|l[b.charCodeAt(W+2)]<<6|l[b.charCodeAt(W+3)],H[$++]=T>>16&255,H[$++]=T>>8&255,H[$++]=T&255;return D===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),D===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,D=[],H=T;H<Y;H+=3)I=(b[H]<<16&16711680)+(b[H+1]<<8&65280)+(b[H+2]&255),D.push(A(I));return D.join("")}function x(b){for(var T,Y=b.length,I=Y%3,D=[],H=16383,$=0,bt=Y-I;$<bt;$+=H)D.push(k(b,$,$+H>bt?bt:$+H));return I===1?(T=b[Y-1],D.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],D.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),D.join("")}},{}],9:[function(o,s,a){function n(l,m){this.offset=l,this.nbits=m}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(m){this.buffer=m,this.pos=0}n.prototype.read=function(m,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)m[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(m){this.buffer=m,this.pos=0}l.prototype.write=function(m,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(m.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,m=1,f=2,c=3,d=4,g=5,h=6,v=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,D=16,H=17,$=18,bt=19,W=20;function y(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var R=0;R<ot.length;R++)this.prefix[R]=ot.charCodeAt(R);for(var R=0;R<gt.length;R++)this.suffix[R]=gt.charCodeAt(R)}var L=[new y("",l,""),new y("",l," "),new y(" ",l," "),new y("",b,""),new y("",k," "),new y("",l," the "),new y(" ",l,""),new y("s ",l," "),new y("",l," of "),new y("",k,""),new y("",l," and "),new y("",T,""),new y("",m,""),new y(", ",l," "),new y("",l,", "),new y(" ",k," "),new y("",l," in "),new y("",l," to "),new y("e ",l," "),new y("",l,'"'),new y("",l,"."),new y("",l,'">'),new y("",l,` +var Ju=Object.create;var oa=Object.defineProperty;var Qu=Object.getOwnPropertyDescriptor;var $u=Object.getOwnPropertyNames;var tf=Object.getPrototypeOf,ef=Object.prototype.hasOwnProperty;var ce=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var rf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of $u(e))!ef.call(t,s)&&s!==r&&oa(t,s,{get:()=>e[s],enumerable:!(o=Qu(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Ju(tf(t)):{},rf(e||!t||!t.__esModule?oa(r,"default",{value:t,enumerable:!0}):r,t));var it=Ht((sy,sa)=>{sa.exports=window.wp.i18n});var X=Ht((ny,na)=>{na.exports=window.wp.components});var z=Ht((ay,aa)=>{aa.exports=window.ReactJSXRuntime});var vt=Ht((ly,la)=>{la.exports=window.wp.element});var Ar=Ht((cy,ma)=>{ma.exports=window.React});var Er=Ht((jy,Aa)=>{Aa.exports=window.wp.primitives});var Ds=Ht((sv,Ea)=>{Ea.exports=window.wp.privateApis});var mr=Ht((nv,Ra)=>{Ra.exports=window.wp.compose});var Ma=Ht((Sv,za)=>{za.exports=window.wp.editor});var we=Ht((xv,Ga)=>{Ga.exports=window.wp.coreData});var de=Ht((Cv,ja)=>{ja.exports=window.wp.data});var Ir=Ht((Fv,Ua)=>{Ua.exports=window.wp.blocks});var ae=Ht((kv,Ha)=>{Ha.exports=window.wp.blockEditor});var Ya=Ht((Ev,Wa)=>{Wa.exports=window.wp.styleEngine});var Ja=Ht((Uv,Ka)=>{"use strict";Ka.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var ei=Ht((Wv,ti)=>{"use strict";var Vf=function(e){return Df(e)&&!Nf(e)};function Df(t){return!!t&&typeof t=="object"}function Nf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Gf(t)}var zf=typeof Symbol=="function"&&Symbol.for,Mf=zf?Symbol.for("react.element"):60103;function Gf(t){return t.$$typeof===Mf}function jf(t){return Array.isArray(t)?[]:{}}function io(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Br(jf(t),t,e):t}function Uf(t,e,r){return t.concat(e).map(function(o){return io(o,r)})}function Hf(t,e){if(!e.customMerge)return Br;var r=e.customMerge(t);return typeof r=="function"?r:Br}function Wf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function Qa(t){return Object.keys(t).concat(Wf(t))}function $a(t,e){try{return e in t}catch{return!1}}function Yf(t,e){return $a(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function qf(t,e,r){var o={};return r.isMergeableObject(t)&&Qa(t).forEach(function(s){o[s]=io(t[s],r)}),Qa(e).forEach(function(s){Yf(t,s)||($a(t,s)&&r.isMergeableObject(e[s])?o[s]=Hf(s,r)(t[s],e[s],r):o[s]=io(e[s],r))}),o}function Br(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||Uf,r.isMergeableObject=r.isMergeableObject||Vf,r.cloneUnlessOtherwiseSpecified=io;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):qf(t,e,r):io(e,r)}Br.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Br(o,s,r)},{})};var Zf=Br;ti.exports=Zf});var mn=Ht((nb,Qi)=>{Qi.exports=window.wp.keycodes});var ol=Ht((gb,rl)=>{rl.exports=window.wp.apiFetch});var Au=Ht((zF,Pu)=>{Pu.exports=window.wp.date});function ia(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e<s;e++)t[e]&&(r=ia(t[e]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}function of(){for(var t,e,r=0,o="",s=arguments.length;r<s;r++)(t=arguments[r])&&(e=ia(t))&&(o&&(o+=" "),o+=e);return o}var be=of;var ua=u(vt(),1),fa=u(z(),1),ca=(0,ua.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...s},a)=>(0,fa.jsx)(o,{ref:a,className:be("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));ca.displayName="NavigableRegion";var da=ca;var ha=u(Ar(),1),pa={};function ks(t,e){let r=ha.useRef(pa);return r.current===pa&&(r.current=t(e)),r}function sf(t,e){return function(o,...s){let a=new URL(t);return a.searchParams.set("code",o.toString()),s.forEach(n=>a.searchParams.append("args[]",n)),`${e} error #${o}; visit ${a} for the full message.`}}var nf=sf("https://base-ui.com/production-error","Base UI"),ga=nf;var fr=u(Ar(),1);function Os(t,e,r,o){let s=ks(va).current;return af(s,t,e,r,o)&&ba(s,[t,e,r,o]),s.callback}function ya(t){let e=ks(va).current;return lf(e,t)&&ba(e,t),e.callback}function va(){return{callback:null,cleanup:null,refs:[]}}function af(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function lf(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function ba(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}t.cleanup=()=>{for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var xa=u(Ar(),1);var wa=u(Ar(),1),uf=parseInt(wa.version,10);function Sa(t){return uf>=t}function Ts(t){if(!xa.isValidElement(t))return null;let e=t,r=e.props;return(Sa(19)?r?.ref:e.ref)??null}function to(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Ca(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Fa(t,e){return typeof t=="function"?t(e):t}function ka(t,e){return typeof t=="function"?t(e):t}var ro={};function To(t,e,r,o,s){let a={..._s(t,ro)};return e&&(a=eo(a,e)),r&&(a=eo(a,r)),o&&(a=eo(a,o)),s&&(a=eo(a,s)),a}function Oa(t){if(t.length===0)return ro;if(t.length===1)return _s(t[0],ro);let e={..._s(t[0],ro)};for(let r=1;r<t.length;r+=1)e=eo(e,t[r]);return e}function eo(t,e){return Ta(e)?e(t):ff(t,e)}function ff(t,e){if(!e)return t;for(let r in e){let o=e[r];switch(r){case"style":{t[r]=to(t.style,o);break}case"className":{t[r]=Ps(t.className,o);break}default:cf(r,o)?t[r]=df(t[r],o):t[r]=o}}return t}function cf(t,e){let r=t.charCodeAt(0),o=t.charCodeAt(1),s=t.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function Ta(t){return typeof t=="function"}function _s(t,e){return Ta(t)?t(e):t??ro}function df(t,e){return e?t?r=>{if(pf(r)){let s=r;mf(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:e:t}function mf(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Ps(t,e){return e?t?e+" "+t:e:t}function pf(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var hf=Object.freeze([]),Je=Object.freeze({});var gf="data-base-ui-swipe-ignore",yf="data-swipe-ignore",Oy=`[${gf}]`,Ty=`[${yf}]`;var As=u(Ar(),1);function _a(t,e,r={}){let o=e.render,s=vf(e,r);if(r.enabled===!1)return null;let a=r.state??Je;return wf(t,o,s,a)}function vf(t,e={}){let{className:r,style:o,render:s}=t,{state:a=Je,ref:n,props:l,stateAttributesMapping:m,enabled:f=!0}=e,c=f?Fa(r,a):void 0,d=f?ka(o,a):void 0,g=f?Ca(a,m):Je,h=f?to(g,Array.isArray(l)?Oa(l):l)??Je:Je;return typeof document<"u"&&(f?Array.isArray(n)?h.ref=ya([h.ref,Ts(s),...n]):h.ref=Os(h.ref,Ts(s),n):Os(null,null)),f?(c!==void 0&&(h.className=Ps(h.className,c)),d!==void 0&&(h.style=to(h.style,d)),h):Je}var bf=Symbol.for("react.lazy");function wf(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=To(r,e.props);s.ref=r.ref;let a=e;return a?.$$typeof===bf&&(a=fr.Children.toArray(e)[0]),fr.cloneElement(a,s)}if(t&&typeof t=="string")return Sf(t,r);throw new Error(ga(8))}function Sf(t,e){return t==="button"?(0,As.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,As.createElement)("img",{alt:"",...e,key:e.key}):fr.createElement(t,e)}function Pa(t){return _a(t.defaultTagName??"div",t,t)}var _o=u(vt(),1),oo=(0,_o.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,_o.cloneElement)(t,{width:e,height:e,...r,ref:o}));var Po=u(Er(),1),Es=u(z(),1),cr=(0,Es.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Es.jsx)(Po.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Ao=u(Er(),1),Rs=u(z(),1),dr=(0,Rs.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Rs.jsx)(Ao.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Eo=u(Er(),1),Is=u(z(),1),Ls=(0,Is.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Eo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Ro=u(Er(),1),Bs=u(z(),1),Io=(0,Bs.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bs.jsx)(Ro.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Lo=u(Er(),1),Vs=u(z(),1),Bo=(0,Vs.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Vs.jsx)(Lo.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Ia=u(vt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","b51ff41489"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var xf={stack:"_19ce0419607e1896__stack"},Cf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Rr=(0,Ia.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},m){let f={gap:r&&Cf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return Pa({render:n,ref:m,props:To(l,{style:f,className:xf.stack})})});var La=u(X(),1),{Fill:Ba,Slot:Va}=(0,La.createSlotFill)("SidebarToggle");var Re=u(z(),1);function Da({headingLevel:t=2,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Re.jsxs)(Rr,{direction:"column",className:"admin-ui-page__header",render:(0,Re.jsx)("header",{}),children:[(0,Re.jsxs)(Rr,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Re.jsxs)(Rr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Re.jsx)(Va,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Re.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Re.jsx)(Rr,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Re.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var so=u(z(),1);function Na({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,ariaLabel:m,hasPadding:f=!1,showSidebarToggle:c=!0}){let d=be("admin-ui-page",n);return(0,so.jsxs)(da,{className:d,ariaLabel:m??(typeof o=="string"?o:""),children:[(o||e||r||l)&&(0,so.jsx)(Da,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:c}),f?(0,so.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Na.SidebarToggleFill=Ba;var Ns=Na;var Xr=u(it()),Wu=u(X()),Yu=u(Ma()),Ss=u(we()),qu=u(de()),Zu=u(vt());var ju=u(X(),1),Uu=u(Ir(),1),qg=u(de(),1),Zg=u(ae(),1),Zn=u(vt(),1),Xg=u(mr(),1);function Lr(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var Se=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var Ff=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function zs(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return Se(t,a)??Se(t,n);let l={};return Ff.forEach(m=>{let f=Se(t,`settings${o}.${m}`)??Se(t,`settings.${m}`);f!==void 0&&(l=Lr(l,m.split("."),f))}),l}function Ms(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Lr(t,n.split("."),r)}var Rf=u(Ya(),1);var kf="1600px",Of="320px",Tf=1,_f=.25,Pf=.75,Af="14px";function qa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=Of,maximumViewportWidth:s=kf,scaleFactor:a=Tf,minimumFontSizeLimit:n}){if(n=Ie(n)?n:Af,r){let b=Ie(r);if(!b?.unit||!b?.value)return null;let T=Ie(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),_f),Pf),D=no(b.value*I,3);T?.value&&D<T?.value?t=`${T.value}${T.unit}`:t=`${D}${b.unit}`}}let l=Ie(t),m=l?.unit||"rem",f=Ie(e,{coerceTo:m});if(!l||!f)return null;let c=Ie(t,{coerceTo:"rem"}),d=Ie(s,{coerceTo:m}),g=Ie(o,{coerceTo:m});if(!d||!g||!c)return null;let h=d.value-g.value;if(!h)return null;let v=no(g.value/100,3),_=no(v,3)+m,A=100*((f.value-l.value)/h),k=no((A||1)*a,3),x=`${c.value}${c.unit} + ((1vw - ${_}) * ${k})`;return`clamp(${t}, ${x}, ${e})`}function Ie(t,e={}){if(typeof t!="string"&&typeof t!="number")return null;isFinite(t)&&(t=`${t}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...e},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=t.toString().match(n);if(!l||l.length<3)return null;let[,m,f]=l,c=parseFloat(m);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:no(c,3),unit:f}:null}function no(t,e=3){let r=Math.pow(10,e);return Math.round(t*r)/r}function Gs(t){let e=t?.fluid;return e===!0||e&&typeof e=="object"&&Object.keys(e).length>0}function Ef(t){let e=t?.typography??{},r=t?.layout,o=Ie(r?.wideSize)?r?.wideSize:null;return Gs(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function Za(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!Gs(e?.typography)&&!Gs(t))return r;let o=Ef(e)?.fluid??{},s=qa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var If=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>Za(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function Xa(t,e,r=[],o="slug",s){let a=[e?Se(t,["blocks",e,...r]):void 0,Se(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let m of l){let f=n[m];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||Xa(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Lf(t,e,r,[o,s]=[]){let a=If.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=Xa(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,m=n[l];return Vo(t,e,m)}return r}function Bf(t,e,r,o=[]){let s=(e?Se(t?.settings??{},["blocks",e,"custom",...o]):void 0)??Se(t?.settings??{},["custom",...o]);return s?Vo(t,e,s):r}function Vo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=Se(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...m]=n;return l==="preset"?Lf(t,e,r,m):l==="custom"?Bf(t,e,r,m):r}function js(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=Se(t,a);return o?Vo(t,r,n):n}function Us(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Lr(t,a.split("."),r)}var Hs=u(Ja(),1);function ao(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Hs.default)(t?.styles,e?.styles)&&(0,Hs.default)(t?.settings,e?.settings)}var si=u(ei(),1);function ri(t){return Object.prototype.toString.call(t)==="[object Object]"}function oi(t){var e,r;return ri(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ri(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function pr(t,e){return(0,si.default)(t,e,{isMergeableObject:oi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var Xf={grad:.9,turn:360,rad:360/(2*Math.PI)},Ue=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Zt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},ke=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},di=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ni=function(t){return{r:ke(t.r,0,255),g:ke(t.g,0,255),b:ke(t.b,0,255),a:ke(t.a)}},Ws=function(t){return{r:Zt(t.r),g:Zt(t.g),b:Zt(t.b),a:Zt(t.a,3)}},Kf=/^#([0-9a-f]{3,8})$/i,Do=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},mi=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},pi=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),m=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,m,o][f],g:255*[m,o,o,l,n,n][f],b:255*[n,n,m,o,o,l][f],a:s}},ai=function(t){return{h:di(t.h),s:ke(t.s,0,100),l:ke(t.l,0,100),a:ke(t.a)}},ii=function(t){return{h:Zt(t.h),s:Zt(t.s),l:Zt(t.l),a:Zt(t.a,3)}},li=function(t){return pi((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},lo=function(t){return{h:(e=mi(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},Jf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Qf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$f=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,tc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zs={string:[[function(t){var e=Kf.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Zt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Zt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=$f.exec(t)||tc.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:ni({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Jf.exec(t)||Qf.exec(t);if(!e)return null;var r,o,s=ai({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(Xf[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return li(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return Ue(e)&&Ue(r)&&Ue(o)?ni({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=ai({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return li(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=(function(l){return{h:di(l.h),s:ke(l.s,0,100),v:ke(l.v,0,100),a:ke(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return pi(n)},"hsv"]]},ui=function(t,e){for(var r=0;r<e.length;r++){var o=e[r][0](t);if(o)return[o,e[r][1]]}return[null,void 0]},ec=function(t){return typeof t=="string"?ui(t.trim(),Zs.string):typeof t=="object"&&t!==null?ui(t,Zs.object):[null,void 0]};var Ys=function(t,e){var r=lo(t);return{h:r.h,s:ke(r.s+100*e,0,100),l:r.l,a:r.a}},qs=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},fi=function(t,e){var r=lo(t);return{h:r.h,s:r.s,l:ke(r.l+100*e,0,100),a:r.a}},Xs=(function(){function t(e){this.parsed=ec(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return Zt(qs(this.rgba),2)},t.prototype.isDark=function(){return qs(this.rgba)<.5},t.prototype.isLight=function(){return qs(this.rgba)>=.5},t.prototype.toHex=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?Do(Zt(255*a)):"","#"+Do(r)+Do(o)+Do(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ws(this.rgba)},t.prototype.toRgbString=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return ii(lo(this.rgba))},t.prototype.toHslString=function(){return e=ii(lo(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=mi(this.rgba),{h:Zt(e.h),s:Zt(e.s),v:Zt(e.v),a:Zt(e.a,3)};var e},t.prototype.invert=function(){return Le({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Le(Ys(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Le(Ys(this.rgba,-e))},t.prototype.grayscale=function(){return Le(Ys(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Le(fi(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Le(fi(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Le({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Zt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=lo(this.rgba);return typeof e=="number"?Le({h:e,s:r.s,l:r.l,a:r.a}):Zt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Le(e).toHex()},t})(),Le=function(t){return t instanceof Xs?t:new Xs(t)},ci=[],hi=function(t){t.forEach(function(e){ci.indexOf(e)<0&&(e(Xs,Zs),ci.push(e))})};var Ks=u(vt(),1);var gi=u(vt(),1),Kt=(0,gi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var yi=u(z(),1);function uo({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Ks.useMemo)(()=>pr(r,e),[r,e]),n=(0,Ks.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,yi.jsx)(Kt.Provider,{value:n,children:t})}var He=u(X(),1),Vi=u(it(),1);var hc=u(de(),1),gc=u(we(),1);var vi=u(z(),1);function Js({className:t,...e}){return(0,vi.jsx)(oo,{className:be(t,"global-styles-ui-icon-with-current-color"),...e})}var Qe=u(X(),1);var hr=u(z(),1);function rc({icon:t,children:e,...r}){return(0,hr.jsxs)(Qe.__experimentalItem,{...r,children:[t&&(0,hr.jsxs)(Qe.__experimentalHStack,{justify:"flex-start",children:[(0,hr.jsx)(Js,{icon:t,size:24}),(0,hr.jsx)(Qe.FlexItem,{children:e})]}),!t&&e]})}function Be(t){return(0,hr.jsx)(Qe.Navigator.Button,{as:rc,...t})}var nc=u(X(),1);var ac=u(it(),1),ki=u(ae(),1);var Qs=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},$s=function(t){return .2126*Qs(t.r)+.7152*Qs(t.g)+.0722*Qs(t.b)};function bi(t){t.prototype.luminance=function(){return e=$s(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,m,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=$s(a),m=$s(n),r=l>m?(l+.05)/(m+.05):(m+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Ae=u(vt(),1),xi=u(de(),1),Ci=u(we(),1),en=u(it(),1);var Wt=u(it(),1),p1={link:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}],button:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}]},h1={"core/button":[{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}]};function tn(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&tn(t[r],e);return t}var No=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=No(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function fo(t,e){let r=No(structuredClone(t),e);return ao(r,t)}function wi(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function Si(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=wi(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=wi(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}hi([bi]);function kt(t,e,r="merged",o=!0){let{user:s,base:a,merged:n,onChange:l}=(0,Ae.useContext)(Kt),m=n;r==="base"?m=a:r==="user"&&(m=s);let f=(0,Ae.useMemo)(()=>js(m,t,e,o),[m,t,e,o]),c=(0,Ae.useCallback)(d=>{let g=Us(s,t,d,e);l(g)},[s,l,t,e]);return[f,c]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Ae.useContext)(Kt),l=a;r==="base"?l=s:r==="user"&&(l=o);let m=(0,Ae.useMemo)(()=>zs(l,t,e),[l,t,e]),f=(0,Ae.useCallback)(c=>{let d=Ms(o,t,c,e);n(d)},[o,n,t,e]);return[m,f]}var oc=[];function sc({title:t,settings:e,styles:r}){return t===(0,en.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function zo(t=[]){let{variationsFromTheme:e}=(0,xi.useSelect)(o=>({variationsFromTheme:o(Ci.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||oc}),[]),{user:r}=(0,Ae.useContext)(Kt);return(0,Ae.useMemo)(()=>{let o=structuredClone(r),s=tn(o,t);s.title=(0,en.__)("Default");let a=e.filter(l=>fo(l,t)).map(l=>pr(s,l)),n=[s,...a];return n?.length?n.filter(sc):[]},[t,r,e])}var Fi=u(Ds(),1),{lock:C1,unlock:yt}=(0,Fi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var rn=u(z(),1),{useHasDimensionsPanel:_1,useHasTypographyPanel:P1,useHasColorPanel:A1,useSettingsForBlockElement:E1,useHasBackgroundPanel:R1}=yt(ki.privateApis);var Ve=u(X(),1);function Vr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],m=(n??[]).concat(l??[]).concat(a??[]),f=m.filter(({color:g})=>g===t),c=m.filter(({color:g})=>g===s),d=f.concat(c).concat(m).filter(({color:g})=>g!==e).slice(0,2);return{paletteColors:m,highlightedColors:d}}var _i=u(vt(),1),Pi=u(X(),1),sn=u(it(),1);function ic(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function lc(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Oi(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function on(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Dr(t){let e={fontFamily:Oi(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=lc(r),s=ic(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function Ti(t){return{fontFamily:Oi(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var co=u(z(),1);function Mo({fontSize:t,variation:e}){let{base:r}=(0,_i.useContext)(Kt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=Si(o),l=a?Dr(a):{},m=n?Dr(n):{};return s&&(l.color=s,m.color=s),t&&(l.fontSize=t,m.fontSize=t),(0,co.jsxs)(Pi.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,co.jsx)("span",{style:m,children:(0,sn._x)("A","Uppercase letter A")}),(0,co.jsx)("span",{style:l,children:(0,sn._x)("a","Lowercase letter A")})]})}var Ai=u(X(),1);var Ei=u(z(),1);function Ri({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Vr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Ei.jsx)(Ai.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Bi=u(X(),1),Nr=u(mr(),1),gr=u(vt(),1);var $e=u(z(),1),Ii=248,Li=152,uc={leading:!0,trailing:!0};function fc({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Nr.useReducedMotion)(),[l,m]=(0,gr.useState)(!1),[f,{width:c}]=(0,Nr.useResizeObserver)(),[d,g]=(0,gr.useState)(c),[h,v]=(0,gr.useState)(),_=(0,Nr.useThrottle)(g,250,uc);(0,gr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,gr.useLayoutEffect)(()=>{let b=d?d/Ii:1,T=b-(h||0);(Math.abs(T)>.1||!h)&&v(b)},[d,h]);let A=c?c/Ii:1,k=h||A;return(0,$e.jsxs)($e.Fragment,{children:[(0,$e.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,$e.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:Li*k},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),tabIndex:-1,children:(0,$e.jsx)(Bi.__unstableMotion.div,{style:{height:Li*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var zr=fc;var me=u(z(),1),cc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},dc={hover:{opacity:1},start:{opacity:.5}},mc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function pc({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[m="black"]=kt("color.text"),[f=m]=kt("elements.h1.color.text"),{paletteColors:c}=Vr();return(0,me.jsxs)(zr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:g})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:cc,style:{height:"100%",overflow:"hidden"},children:(0,me.jsxs)(Ve.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,me.jsx)(Mo,{fontSize:65*d,variation:o}),(0,me.jsx)(Ve.__experimentalVStack,{spacing:4*d,children:(0,me.jsx)(Ri,{normalizedColorSwatchSize:32,ratio:d})})]})},g),({key:d})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:r?dc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,me.jsx)(Ve.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:g},h)=>(0,me.jsx)("div",{style:{height:"100%",background:g,flexGrow:1}},h))})},d),({ratio:d,key:g})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:mc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,me.jsx)(Ve.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,me.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},g)]})}var nn=pc;var Di=u(z(),1);var ln=u(Ir(),1),Mr=u(it(),1),vr=u(X(),1),un=u(de(),1),tr=u(vt(),1),Go=u(ae(),1),Ui=u(mr(),1);import{speak as wc}from"@wordpress/a11y";var Ni=u(Ir(),1),zi=u(de(),1),yc=u(X(),1);var vc=u(z(),1);function bc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function an(t){let e=(0,zi.useSelect)(s=>{let{getBlockStyles:a}=s(Ni.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return bc(e,o)}var yr=u(X(),1),Mi=u(it(),1);var Gi=u(ae(),1);var ji=u(z(),1),{StateControl:l0}=yt(Gi.privateApis);var De=u(z(),1),{useHasDimensionsPanel:Sc,useHasTypographyPanel:xc,useHasBorderPanel:Cc,useSettingsForBlockElement:Fc,useHasColorPanel:kc}=yt(Go.privateApis);function Oc(){let t=(0,un.useSelect)(s=>s(ln.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function Tc(t){let[e]=_t("",t),r=Fc(e,t),o=xc(r),s=kc(r),a=Cc(r),n=Sc(r),l=a||n,m=!!an(t)?.length;return o||s||l||m}function _c({block:t}){return Tc(t.name)?(0,De.jsx)(Be,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,De.jsxs)(vr.__experimentalHStack,{justify:"flex-start",children:[(0,De.jsx)(Go.BlockIcon,{icon:t.icon}),(0,De.jsx)(vr.FlexItem,{children:t.title})]})}):null}function Pc({filterValue:t}){let e=Oc(),r=(0,Ui.useDebounce)(wc,500),{isMatchingSearchTerm:o}=(0,un.useSelect)(ln.store),s=t?e.filter(n=>o(n,t)):e,a=(0,tr.useRef)(null);return(0,tr.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Mr.sprintf)((0,Mr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,De.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,De.jsx)(vr.__experimentalText,{align:"center",as:"p",children:(0,Mr.__)("No blocks found.")}):s.map(n=>(0,De.jsx)(_c,{block:n},"menu-itemblock-"+n.name))})}var g0=(0,tr.memo)(Pc);var Lc=u(Ir(),1),qi=u(ae(),1),fn=u(vt(),1),Bc=u(de(),1),Vc=u(we(),1),cn=u(X(),1),Zi=u(it(),1);var Ac=u(ae(),1),Hi=u(Ir(),1),Ec=u(X(),1),Rc=u(vt(),1);var Ic=u(z(),1);var Wi=u(X(),1),Yi=u(z(),1);function xe({children:t,level:e=2}){return(0,Yi.jsx)(Wi.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var dn=u(z(),1);var{useHasDimensionsPanel:I0,useHasTypographyPanel:L0,useHasBorderPanel:B0,useSettingsForBlockElement:V0,useHasColorPanel:D0,useHasFiltersPanel:N0,useHasImageSettingsPanel:z0,useHasBackgroundPanel:M0,BackgroundPanel:G0,BorderPanel:j0,ColorPanel:U0,TypographyPanel:H0,DimensionsPanel:W0,FiltersPanel:Y0,ImageSettingsPanel:q0,AdvancedPanel:Z0}=yt(qi.privateApis);var Xh=u(it(),1),Kh=u(X(),1),Jh=u(vt(),1);var Dc=u(X(),1);var Nc=u(z(),1);var zc=u(it(),1),jo=u(X(),1);var Xi=u(z(),1);var Wo=u(X(),1);var Ki=u(X(),1);var Uo=u(z(),1),Mc=({variation:t,isFocused:e,withHoverView:r})=>(0,Uo.jsx)(zr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,Uo.jsx)(Ki.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Uo.jsx)(Mo,{variation:t,fontSize:85*o})},s)}),Ji=Mc;var $i=u(X(),1),br=u(vt(),1),tl=u(mn(),1),Ho=u(it(),1);var mo=u(z(),1);function Gr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,br.useState)(!1),{base:l,user:m,onChange:f}=(0,br.useContext)(Kt),c=(0,br.useMemo)(()=>{let A=pr(l,t);return o&&(A=No(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),g=A=>{A.keyCode===tl.ENTER&&(A.preventDefault(),d())},h=(0,br.useMemo)(()=>ao(m,t),[m,t]),v=t?.title;t?.description&&(v=(0,Ho.sprintf)((0,Ho._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item",{"is-active":h}),role:"button",onClick:d,onKeyDown:g,tabIndex:0,"aria-label":v,"aria-current":h,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,mo.jsx)(Kt.Provider,{value:c,children:s?(0,mo.jsx)($i.Tooltip,{text:t?.title,children:_}):_})}var wr=u(z(),1),el=["typography"];function Yo({title:t,gap:e=2}){let r=zo(el);return r?.length<=1?null:(0,wr.jsxs)(Wo.__experimentalVStack,{spacing:3,children:[t&&(0,wr.jsx)(xe,{level:3,children:t}),(0,wr.jsx)(Wo.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,wr.jsx)(Gr,{variation:o,properties:el,showTooltip:!0,children:()=>(0,wr.jsx)(Ji,{variation:o})},s))})]})}var qh=u(it(),1),wo=u(X(),1);var Zh=u(vt(),1);var We=u(vt(),1),sr=u(de(),1),or=u(we(),1),yn=u(it(),1);var pn=u(ol(),1),sl=u(we(),1),nl="/wp/v2/font-families";function al(t){let{receiveEntityRecords:e}=t.dispatch(sl.store);e("postType","wp_font_family",[],void 0,!0)}async function il(t,e){let o=await(0,pn.default)({path:nl,method:"POST",body:t});return al(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function ll(t,e,r){let o={path:`${nl}/${t}/font-faces`,method:"POST",body:e},s=await(0,pn.default)(o);return al(r),{id:s.id,...s.font_face_settings}}var cl=u(X(),1);var Oe=u(it(),1),hn=["otf","ttf","woff","woff2"],ul={100:(0,Oe._x)("Thin","font weight"),200:(0,Oe._x)("Extra-light","font weight"),300:(0,Oe._x)("Light","font weight"),400:(0,Oe._x)("Normal","font weight"),500:(0,Oe._x)("Medium","font weight"),600:(0,Oe._x)("Semi-bold","font weight"),700:(0,Oe._x)("Bold","font weight"),800:(0,Oe._x)("Extra-bold","font weight"),900:(0,Oe._x)("Black","font weight")},fl={normal:(0,Oe._x)("Normal","font style"),italic:(0,Oe._x)("Italic","font style")};var{File:dl}=window,{kebabCase:Gc}=yt(cl.privateApis);function er(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function jc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function qo(t){let e=ul[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":fl[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function Uc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function ml(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=Uc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function rr(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof dl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(on(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function po(t,e="all"){let r=o=>{o.forEach(s=>{s.family===on(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function jr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return jc(e)||(e=encodeURI(e)),e}function pl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Gc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function hl(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((m,f)=>{let c=`file-${o}-${f}`;a.append(c,m,m.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function gl(t,e,r){let o=[];for(let a of e)try{let n=await ll(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function yl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new dl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function gn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function vl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function Zo(t,e,r=[]){let o=m=>m.slug===t.slug,s=m=>m.find(o),a=m=>m?r.filter(f=>!o(f)):[...r,t],n=m=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!m)return[...r,{...t,fontFace:[e]}];let c=m.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var bl=u(z(),1),ie=(0,We.createContext)({});ie.displayName="FontLibraryContext";function Hc({children:t}){let e=(0,sr.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,sr.useDispatch)(or.store),{globalStylesId:s}=(0,sr.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:R}=S(or.store);return{globalStylesId:R()}},[]),a=(0,or.useEntityRecord)("root","globalStyles",s),[n,l]=(0,We.useState)(!1),{records:m=[],isResolving:f}=(0,or.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(m||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(R=>R.font_face_settings)||[]}))||[],[d,g]=_t("typography.fontFamilies"),h=async S=>{if(!a.record)return;let R=a.record,et=vl(R??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[v,_]=(0,We.useState)(""),[A,k]=(0,We.useState)(void 0),x=d?.theme?d.theme.map(S=>er(S,{source:"theme"})).sort((S,R)=>S.name.localeCompare(R.name)):[],b=d?.custom?d.custom.map(S=>er(S,{source:"custom"})).sort((S,R)=>S.name.localeCompare(R.name)):[],T=c?c.map(S=>er(S,{source:"custom"})).sort((S,R)=>S.name.localeCompare(R.name)):[];(0,We.useEffect)(()=>{v||k(void 0)},[v]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,We.useState)(new Set),D=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>D(S==="theme"?x:b),$=(S,R,et,ct)=>!R&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((R??"")+(et??"")),bt=(S,R)=>H(R)[S]||[];async function W(S){l(!0);try{let R=[],et=[];for(let at of S){let Ct=!1,Yt=await(0,sr.resolveSelect)(or.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Yt&&Yt.length>0?Yt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await il(pl(at),e));let St=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&gn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!gn(zt,J.fontFace)));let At=[],Ce=[];if(at?.fontFace?.length??!1){let zt=await gl(J.id,hl(at),e);At=zt?.successes,Ce=zt?.errors}(At?.length>0||St?.length>0)&&(J.fontFace=[...At],R.push(J)),J&&!at?.fontFace?.length&&R.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(Ce)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(R.length>0){let at=lt(R);await h(at)}if(ct.length>0){let at=new Error((0,yn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function y(S){if(!S?.id)throw new Error((0,yn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let R=L(S);return await h(R),{deleted:!0}}catch(R){throw console.error("There was an error uninstalling the font family:",R),R}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return g(ct),S.fontFace&&S.fontFace.forEach(at=>{po(at,"all")}),ct},lt=S=>{let R=ot(S),et={...d,custom:ml(d?.custom,R)};return g(et),K(R),et},ot=S=>S.map(({id:R,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(R=>{R.fontFace&&R.fontFace.forEach(et=>{let ct=jr(et?.src??"");ct&&rr(et,ct,"all")})})},gt=(S,R)=>{let et=d?.[S.source??""]??[],ct=Zo(S,R,et);g({...d,[S.source??""]:ct});let at=$(S.slug,R?.fontStyle??"",R?.fontWeight??"",S.source??"custom");if(R&&at)po(R,"all");else{let Ct=jr(R?.src??"");R&&Ct&&rr(R,Ct,"all")}},E=async S=>{if(!S.src)return;let R=jr(S.src);!R||I.has(R)||(rr(S,R,"document"),I.add(R))};return(0,bl.jsx)(ie.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:E,installFonts:W,uninstallFontFamily:y,toggleActivateFont:gt,getAvailableFontsOutline:D,modalTabOpen:v,setModalTabOpen:_,saveFontFamilies:h,isResolvingLibrary:f,isInstalling:n},children:t})}var Xo=Hc;var fs=u(it(),1),xn=u(X(),1),eu=u(we(),1),Wh=u(de(),1);var ht=u(X(),1),go=u(we(),1),vn=u(de(),1),xr=u(vt(),1),Rt=u(it(),1);var Hr=u(it(),1),Te=u(X(),1);var wl=u(X(),1),Ne=u(vt(),1);var Ko=u(z(),1);function Wc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function Yc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function qc({font:t,text:e}){let r=(0,Ne.useRef)(null),o=Yc(t),s=Dr(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,Ne.useState)(!1),[m,f]=(0,Ne.useState)(!1),{loadFontFaceAsset:c}=(0,Ne.useContext)(ie),d=a??Wc(o),g=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),h=Ti(o),v={fontSize:"18px",lineHeight:1,opacity:m?"1":"0",...s,...h};return(0,Ne.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,Ne.useEffect)(()=>{(async()=>n&&(!g&&o.src&&await c(o),f(!0)))()},[o,n,c,g]),(0,Ko.jsx)("div",{ref:r,children:g?(0,Ko.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Ko.jsx)(wl.__experimentalText,{style:v,className:"font-library__font-variant_demo-text",children:e})})}var Ur=qc;var ze=u(z(),1);function Zc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Te.useNavigator)();return(0,ze.jsx)(Te.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,ze.jsxs)(Te.Flex,{justify:"space-between",wrap:!1,children:[(0,ze.jsx)(Ur,{font:t}),(0,ze.jsxs)(Te.Flex,{justify:"flex-end",children:[(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(Te.__experimentalText,{className:"font-library__font-card__count",children:r||(0,Hr.sprintf)((0,Hr._n)("%d variant","%d variants",s),s)})}),(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(oo,{icon:(0,Hr.isRTL)()?cr:dr})})]})]})})}var ho=Zc;var Jo=u(vt(),1),Qo=u(X(),1);var Sr=u(z(),1);function Xc({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Jo.useContext)(ie),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+qo(t),l=(0,Jo.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(Qo.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(Qo.CheckboxControl,{checked:s,onChange:a,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Ur,{font:t,text:n,onClick:a})})]})})}var Sl=Xc;function xl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function $o(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?xl(e.fontWeight?.toString()??"normal")-xl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function Kc(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,xr.useContext)(ie),[m,f]=_t("typography.fontFamilies"),[c,d]=(0,xr.useState)(!1),[g,h]=(0,xr.useState)(null),[v]=_t("typography.fontFamilies",void 0,"base"),_=(0,vn.useSelect)(E=>{let{__experimentalGetCurrentGlobalStylesId:S}=E(go.store);return S()},[]),k=!!(0,go.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=m?.theme?m.theme.map(E=>er(E,{source:"theme"})).sort((E,S)=>E.name.localeCompare(S.name)):[],b=new Set(x.map(E=>E.slug)),T=v?.theme?x.concat(v.theme.filter(E=>!b.has(E.slug)).map(E=>er(E,{source:"theme"})).sort((E,S)=>E.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,vn.useSelect)(E=>{let{canUser:S}=E(go.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),D=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{h(null);try{await n(m),h({type:"success",message:(0,Rt.__)("Font family updated successfully.")})}catch(E){h({type:"error",message:(0,Rt.sprintf)((0,Rt.__)("There was an error updating the font family. %s"),E.message)})}},bt=E=>E?!E.fontFace||!E.fontFace.length?[{fontFamily:E.fontFamily,fontStyle:"normal",fontWeight:"400"}]:$o(E.fontFace):[],W=E=>{let S=E?.fontFace&&(E?.fontFace?.length??0)>0?E.fontFace.length:1,R=l(E.slug,E.source).length;return(0,Rt.sprintf)((0,Rt.__)("%1$d/%2$d variants active"),R,S)};(0,xr.useEffect)(()=>{r(e)},[]);let y=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),lt=y>0&&y!==L,ot=y===L,K=()=>{if(!e||!e?.source)return;let E=m?.[e.source]?.filter(R=>R.slug!==e.slug)??[],S=ot?E:[...E,e];f({...m,[e.source]:S}),e.fontFace&&e.fontFace.forEach(R=>{if(ot)po(R,"all");else{let et=jr(R?.src??"");et&&rr(R,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[g&&(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Rt.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Rt._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(E=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:E,navigatorPath:"/fontFamily",variantsText:W(E),onClick:()=>{h(null),r(E)}})},E.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Rt._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(E=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:E,navigatorPath:"/fontFamily",variantsText:W(E),onClick:()=>{h(null),r(E)}})},E.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(Jc,{font:e,isOpen:c,setIsOpen:d,setNotice:h,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Rt.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),h(null)},label:(0,Rt.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),g&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Rt.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ot,onChange:K,indeterminate:lt}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((E,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(Sl,{font:e,face:E},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),D&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Rt.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Rt.__)("Update")})]})]})]})}function Jc({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Rt.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Rt.__)("There was an error uninstalling the font family.")+f.message})}},m=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Rt.__)("Cancel"),confirmButtonText:(0,Rt.__)("Delete"),onCancel:m,onConfirm:l,size:"medium",children:t&&(0,Rt.sprintf)((0,Rt.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var ts=Kc;var Xt=u(vt(),1),nt=u(X(),1),Al=u(mr(),1),Et=u(it(),1);var El=u(we(),1);function Cl(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Fl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function kl(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var yo=u(it(),1),le=u(X(),1),_e=u(z(),1);function Qc(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,_e.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,_e.jsx)(le.Card,{children:(0,_e.jsxs)(le.CardBody,{children:[(0,_e.jsx)(le.__experimentalHeading,{level:2,children:(0,yo.__)("Connect to Google Fonts")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:3}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,yo.__)("Allow access to Google Fonts")})]})})})}var Ol=Qc;var Tl=u(vt(),1),es=u(X(),1);var Cr=u(z(),1);function $c({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+qo(t),n=(0,Tl.useId)();return(0,Cr.jsx)("div",{className:"font-library__font-card",children:(0,Cr.jsxs)(es.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Cr.jsx)(es.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Cr.jsx)("label",{htmlFor:n,children:(0,Cr.jsx)(Ur,{font:t,text:a,onClick:s})})]})})}var _l=$c;var tt=u(z(),1),td={slug:"all",name:(0,Et._x)("All","font categories")},Pl="wp-font-library-google-fonts-permission",ed=500;function rd({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Pl)==="true",[o,s]=(0,Xt.useState)(null),[a,n]=(0,Xt.useState)(null),[l,m]=(0,Xt.useState)([]),[f,c]=(0,Xt.useState)(1),[d,g]=(0,Xt.useState)({}),[h,v]=(0,Xt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Xt.useContext)(ie),{record:k,isResolving:x}=(0,El.useEntityRecord)("root","fontCollection",t);(0,Xt.useEffect)(()=>{let J=()=>{v(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Pl,"false"),window.dispatchEvent(new Event("storage"))};(0,Xt.useEffect)(()=>{s(null)},[t]),(0,Xt.useEffect)(()=>{m([])},[o]);let T=(0,Xt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[td,...Y],D=(0,Xt.useMemo)(()=>Cl(T,d),[T,d]),H=Math.max(window.innerHeight,ed),$=Math.floor((H-417)/61),bt=Math.ceil(D.length/$),W=(f-1)*$,y=f*$,L=D.slice(W,y),lt=J=>{g({...d,category:J}),c(1)},K=(0,Al.debounce)(J=>{g({...d,search:J}),c(1)},300),gt=(J,St)=>{let At=Zo(J,St,l);m(At)},E=Fl(l),S=()=>{m([])},R=l.length>0?l[0]?.fontFace?.length??0:0,et=R>0&&R!==o?.fontFace?.length,ct=R===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),m(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async St=>{St.src&&(St.file=await yl(St.src))}))}catch{n({type:"error",message:(0,Et.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Et.__)("Fonts were installed successfully.")})}catch(St){n({type:"error",message:St.message})}S()},Yt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:$o(J.fontFace):[];if(h)return(0,tt.jsx)(Ol,{});let Ot=()=>t!=="google-fonts"||h||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Ls,label:(0,Et.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Et.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Et.__)("Font name\u2026"),label:(0,Et.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Et.__)("Category"),value:d.category,onChange:lt,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!D.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Et.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(ho,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Et.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),n(null)},label:(0,Et.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Et.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Yt(o).map((J,St)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(_l,{font:o,face:J,handleToggleVariant:gt,selected:kl(o.slug,o.fontFace?J:null,E)})},`face${St}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Et.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Xt.createInterpolateElement)((0,Et.sprintf)((0,Et._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Et.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,St)=>({label:(St+1).toString(),value:(St+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Et.__)("Previous page"),icon:(0,Et.isRTL)()?Io:Bo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Et.__)("Next page"),icon:(0,Et.isRTL)()?Bo:Io,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var rs=rd;var Wr=u(it(),1),te=u(X(),1),bo=u(vt(),1);var os=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Rl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof os=="function"&&os;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof os=="function"&&os,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,m=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=m,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,g=this.input_.read(this.buf_,d,n);if(g<0)throw new Error("Unexpected end of input");if(g<n){this.eos_=1;for(var h=0;h<32;h++)this.buf_[d+g+h]=0}if(d===0){for(var h=0;h<32;h++)this.buf_[(n<<1)+h]=this.buf_[h];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=g<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&m]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var g=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,g},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,m=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,m=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,g=o("./context"),h=o("./prefix"),v=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,D=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,y=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),lt=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<<O)}return 0}function gt(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function E(N){var O=new gt,B,P,V;if(O.input_end=N.readBits(1),O.input_end&&N.readBits(1))return O;if(B=N.readBits(2)+4,B===7){if(O.is_metadata=!0,N.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=N.readBits(2),P===0)return O;for(V=0;V<P;V++){var dt=N.readBits(8);if(V+1===P&&P>1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<<V*8}}else for(V=0;V<B;++V){var rt=N.readBits(4);if(V+1===B&&B>4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<<V*4}return++O.meta_block_length,!O.input_end&&!O.is_metadata&&(O.is_uncompressed=N.readBits(1)),O}function S(N,O,B){var P=O,V;return B.fillBitWindow(),O+=B.val_>>>B.bit_pos_&D,V=N[O].bits-I,V>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=N[O].bits,N[O].value}function R(N,O,B,P){for(var V=0,dt=_,rt=0,st=0,wt=32768,ut=[],q=0;q<32;q++)ut.push(new c(0,0));for(d(ut,0,5,N,$);V<O&&wt>0;){var Ft=0,Jt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=ut[Ft].bits,Jt=ut[Ft].value&255,Jt<A)rt=0,B[V++]=Jt,Jt!==0&&(dt=Jt,wt-=32768>>Jt);else{var ge=Jt-14,ee,Qt,Vt=0;if(Jt===A&&(Vt=dt),st!==Vt&&(rt=0,st=Vt),ee=rt,rt>0&&(rt-=2,rt<<=ge),rt+=P.readBits(ge)+3,Qt=rt-ee,V+Qt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var $t=0;$t<Qt;$t++)B[V+$t]=st;V+=Qt,st!==0&&(wt-=Qt<<15-st)}}if(wt!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+wt);for(;V<O;V++)B[V]=0}function et(N,O,B,P){var V=0,dt,rt=new Uint8Array(N);if(P.readMoreInput(),dt=P.readBits(2),dt===1){for(var st,wt=N-1,ut=0,q=new Int32Array(4),Ft=P.readBits(2)+1;wt;)wt>>=1,++ut;for(st=0;st<Ft;++st)q[st]=P.readBits(ut)%N,rt[q[st]]=2;switch(rt[q[0]]=1,Ft){case 1:break;case 3:if(q[0]===q[1]||q[0]===q[2]||q[1]===q[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(q[0]===q[1])throw new Error("[ReadHuffmanCode] invalid symbols");rt[q[1]]=1;break;case 4:if(q[0]===q[1]||q[0]===q[2]||q[0]===q[3]||q[1]===q[2]||q[1]===q[3]||q[2]===q[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(rt[q[2]]=3,rt[q[3]]=3):rt[q[0]]=2;break}}else{var st,Jt=new Uint8Array($),ge=32,ee=0,Qt=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(st=dt;st<$&&ge>0;++st){var Vt=bt[st],$t=0,re;P.fillBitWindow(),$t+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Qt[$t].bits,re=Qt[$t].value,Jt[Vt]=re,re!==0&&(ge-=32>>re,++ee)}if(!(ee===1||ge===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");R(Jt,N,rt,P)}if(V=d(O,B,I,rt,N),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ct(N,O,B){var P,V;return P=S(N,O,B),V=h.kBlockLengthPrefixCode[P].nbits,h.kBlockLengthPrefixCode[P].offset+B.readBits(V)}function at(N,O,B){var P;return N<W?(B+=y[N],B&=3,P=O[B]+L[N]):P=N-W+1,P}function Ct(N,O){for(var B=N[O],P=O;P;--P)N[P]=N[P-1];N[0]=B}function Yt(N,O){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<O;++P){var V=N[P];N[P]=B[V],V&&Ct(B,V)}}function Ot(N,O){this.alphabet_size=N,this.num_htrees=O,this.codes=new Array(O+O*lt[N+31>>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O<this.num_htrees;++O)this.htrees[O]=P,B=et(this.alphabet_size,this.codes,P,N),P+=B};function J(N,O){var B={num_htrees:null,context_map:null},P,V=0,dt,rt;O.readMoreInput();var st=B.num_htrees=K(O)+1,wt=B.context_map=new Uint8Array(N);if(st<=1)return B;for(P=O.readBits(1),P&&(V=O.readBits(4)+1),dt=[],rt=0;rt<H;rt++)dt[rt]=new c(0,0);for(et(st+V,dt,0,O),rt=0;rt<N;){var ut;if(O.readMoreInput(),ut=S(dt,0,O),ut===0)wt[rt]=0,++rt;else if(ut<=V)for(var q=1+(1<<ut)+O.readBits(ut);--q;){if(rt>=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=ut-V,++rt}return O.readBits(1)&&Yt(wt,N),B}function St(N,O,B,P,V,dt,rt){var st=B*2,wt=B,ut=S(O,B*H,rt),q;ut===0?q=V[st+(dt[wt]&1)]:ut===1?q=V[st+(dt[wt]-1&1)]+1:q=ut-2,q>=N&&(q-=N),P[B]=q,V[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,V,dt){var rt=V+1,st=B&V,wt=dt.pos_&m.IBUF_MASK,ut;if(O<8||dt.bit_pos_+(O<<3)<dt.bit_end_pos_){for(;O-- >0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(ut=dt.bit_end_pos_-dt.bit_pos_>>3,wt+ut>m.IBUF_MASK){for(var q=m.IBUF_MASK+1-wt,Ft=0;Ft<q;Ft++)P[st+Ft]=dt.buf_[wt+Ft];ut-=q,st+=q,O-=q,wt=0}for(var Ft=0;Ft<ut;Ft++)P[st+Ft]=dt.buf_[wt+Ft];if(st+=ut,O-=ut,st>=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft<st;Ft++)P[Ft]=P[rt+Ft]}for(;st+O>=rt;){if(ut=rt-st,dt.input_.read(P,st,ut)<ut)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");N.write(P,rt),O-=ut,st=0}if(dt.input_.read(P,st,O)<O)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");dt.reset()}function Ce(N){var O=N.bit_pos_+7&-8,B=N.readBits(O-N.bit_pos_);return B==0}function zt(N){var O=new n(N),B=new m(O);ot(B);var P=E(B);return P.meta_block_length}a.BrotliDecompressedSize=zt;function nr(N,O){var B=new n(N);O==null&&(O=zt(N));var P=new Uint8Array(O),V=new l(P);return Ke(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}a.BrotliDecompressBuffer=nr;function Ke(N,O){var B,P=0,V=0,dt=0,rt,st=0,wt,ut,q,Ft,Jt=[16,15,11,4],ge=0,ee=0,Qt=0,Vt=[new Ot(0,0),new Ot(0,0),new Ot(0,0)],$t,re,pt,Kr=128+m.READ_SIZE;pt=new m(N),dt=ot(pt),rt=(1<<dt)-16,wt=1<<dt,ut=wt-1,q=new Uint8Array(wt+Kr+f.maxDictionaryWordLength),Ft=wt,$t=[],re=[];for(var Tr=0;Tr<3*H;Tr++)$t[Tr]=new c(0,0),re[Tr]=new c(0,0);for(;!V;){var Mt=0,ko,Fe=[1<<28,1<<28,1<<28],Ee=[0],ye=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pt,G,oe=null,j=null,Dt,F=null,C,ar=0,Tt=null,Q=0,ir=0,lr=null,It=0,xt=0,Gt=0,jt,qt;for(B=0;B<3;++B)Vt[B].codes=null,Vt[B].htrees=null;pt.readMoreInput();var Ge=E(pt);if(Mt=Ge.meta_block_length,P+Mt>O.buffer.length){var ur=new Uint8Array(P+Mt);ur.set(O.buffer),O.buffer=ur}if(V=Ge.input_end,ko=Ge.is_uncompressed,Ge.is_metadata){for(Ce(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(ko){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,ut,pt),P+=Mt;continue}for(B=0;B<3;++B)ye[B]=K(pt)+1,ye[B]>=2&&(et(ye[B]+2,$t,B*H,pt),et(b,re,B*H,pt),Fe[B]=ct(re,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<<i),Pt=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(ye[0]),B=0;B<ye[0];++B)pt.readMoreInput(),j[B]=pt.readBits(2)<<1;var Lt=J(ye[0]<<T,pt);Dt=Lt.num_htrees,oe=Lt.context_map;var se=J(ye[2]<<Y,pt);for(C=se.num_htrees,F=se.context_map,Vt[0]=new Ot(k,Dt),Vt[1]=new Ot(x,ye[1]),Vt[2]=new Ot(G,C),B=0;B<3;++B)Vt[B].decode(pt);for(Tt=0,lr=0,jt=j[Ee[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1],qt=Vt[1].htrees[0];Mt>0;){var Nt,ne,ue,_r,xs,fe,ve,je,Jr,Pr,Qr;for(pt.readMoreInput(),Fe[1]===0&&(St(ye[1],$t,1,Ee,w,M,pt),Fe[1]=ct(re,H,pt),qt=Vt[1].htrees[Ee[1]]),--Fe[1],Nt=S(Vt[1].codes,qt,pt),ne=Nt>>6,ne>=2?(ne-=2,ve=-1):ve=0,ue=h.kInsertRangeLut[ne]+(Nt>>3&7),_r=h.kCopyRangeLut[ne]+(Nt&7),xs=h.kInsertLengthPrefixCode[ue].offset+pt.readBits(h.kInsertLengthPrefixCode[ue].nbits),fe=h.kCopyLengthPrefixCode[_r].offset+pt.readBits(h.kCopyLengthPrefixCode[_r].nbits),ee=q[P-1&ut],Qt=q[P-2&ut],Pr=0;Pr<xs;++Pr)pt.readMoreInput(),Fe[0]===0&&(St(ye[0],$t,0,Ee,w,M,pt),Fe[0]=ct(re,0,pt),ar=Ee[0]<<T,Tt=ar,jt=j[Ee[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1]),Jr=g.lookup[xt+ee]|g.lookup[Gt+Qt],Q=oe[Tt+Jr],--Fe[0],Qt=ee,ee=S(Vt[0].codes,Vt[0].htrees[Q],pt),q[P&ut]=ee,(P&ut)===ut&&O.write(q,wt),++P;if(Mt-=xs,Mt<=0)break;if(ve<0){var Jr;if(pt.readMoreInput(),Fe[2]===0&&(St(ye[2],$t,2,Ee,w,M,pt),Fe[2]=ct(re,2*H,pt),ir=Ee[2]<<Y,lr=ir),--Fe[2],Jr=(fe>4?3:fe-2)&255,It=F[lr+Jr],ve=S(Vt[2].codes,Vt[2].htrees[It],pt),ve>=U){var Cs,$n,$r;ve-=U,$n=ve&Pt,ve>>=i,Cs=(ve>>1)+1,$r=(2+(ve&1)<<Cs)-4,ve=U+($r+pt.readBits(Cs)<<i)+$n}}if(je=at(ve,Jt,ge),je<0)throw new Error("[BrotliDecompress] invalid distance");if(P<rt&&st!==rt?st=P:st=rt,Qr=P&ut,je>st)if(fe>=f.minDictionaryWordLength&&fe<=f.maxDictionaryWordLength){var $r=f.offsetsByLength[fe],ta=je-st-1,ea=f.sizeBitsByLength[fe],Xu=(1<<ea)-1,Ku=ta&Xu,ra=ta>>ea;if($r+=Ku*fe,ra<v.kNumTransforms){var Fs=v.transformDictionaryWord(q,Qr,$r,fe,ra);if(Qr+=Fs,P+=Fs,Mt-=Fs,Qr>=Ft){O.write(q,wt);for(var Oo=0;Oo<Qr-Ft;Oo++)q[Oo]=q[Ft+Oo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);else{if(ve>0&&(Jt[ge&3]=je,++ge),fe>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);for(Pr=0;Pr<fe;++Pr)q[P&ut]=q[P-je&ut],(P&ut)===ut&&O.write(q,wt),++P,--Mt}ee=q[P-1&ut],Qt=q[P-2&ut]}P&=1073741823}}O.write(q,P&ut)}a.BrotliDecompress=Ke,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,m=n.toByteArray(o("./dictionary.bin.js"));return l(m)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="W5/fcQLn5gKf2XUbAiQ1XULX+TZz6ADToDsgqk6qVfeC0e4m6OO2wcQ1J76ZBVRV1fRkEsdu//62zQsFEZWSTCnMhcsQKlS2qOhuVYYMGCkV0fXWEoMFbESXrKEZ9wdUEsyw9g4bJlEt1Y6oVMxMRTEVbCIwZzJzboK5j8m4YH02qgXYhv1V+PM435sLVxyHJihaJREEhZGqL03txGFQLm76caGO/ovxKvzCby/3vMTtX/459f0igi7WutnKiMQ6wODSoRh/8Lx1V3Q99MvKtwB6bHdERYRY0hStJoMjNeTsNX7bn+Y7e4EQ3bf8xBc7L0BsyfFPK43dGSXpL6clYC/I328h54/VYrQ5i0648FgbGtl837svJ35L3Mot/+nPlNpWgKx1gGXQYqX6n+bbZ7wuyCHKcUok12Xjqub7NXZGzqBx0SD+uziNf87t7ve42jxSKQoW3nyxVrWIGlFShhCKxjpZZ5MeGna0+lBkk+kaN8F9qFBAFgEogyMBdcX/T1W/WnMOi/7ycWUQloEBKGeC48MkiwqJkJO+12eQiOFHMmck6q/IjWW3RZlany23TBm+cNr/84/oi5GGmGBZWrZ6j+zykVozz5fT/QH/Da6WTbZYYPynVNO7kxzuNN2kxKKWche5WveitPKAecB8YcAHz/+zXLjcLzkdDSktNIDwZE9J9X+tto43oJy65wApM3mDzYtCwX9lM+N5VR3kXYo0Z3t0TtXfgBFg7gU8oN0Dgl7fZlUbhNll+0uuohRVKjrEd8egrSndy5/Tgd2gqjA4CAVuC7ESUmL3DZoGnfhQV8uwnpi8EGvAVVsowNRxPudck7+oqAUDkwZopWqFnW1riss0t1z6iCISVKreYGNvQcXv+1L9+jbP8cd/dPUiqBso2q+7ZyFBvENCkkVr44iyPbtOoOoCecWsiuqMSML5lv+vN5MzUr+Dnh73G7Q1YnRYJVYXHRJaNAOByiaK6CusgFdBPE40r0rvqXV7tksKO2DrHYXBTv8P5ysqxEx8VDXUDDqkPH6NNOV/a2WH8zlkXRELSa8P+heNyJBBP7PgsG1EtWtNef6/i+lcayzQwQCsduidpbKfhWUDgAEmyhGu/zVTacI6RS0zTABrOYueemnVa19u9fT23N/Ta6RvTpof5DWygqreCqrDAgM4LID1+1T/taU6yTFVLqXOv+/MuQOFnaF8vLMKD7tKWDoBdALgxF33zQccCcdHx8fKIVdW69O7qHtXpeGr9jbbpFA+qRMWr5hp0s67FPc7HAiLV0g0/peZlW7hJPYEhZyhpSwahnf93/tZgfqZWXFdmdXBzqxGHLrQKxoAY6fRoBhgCRPmmGueYZ5JexTVDKUIXzkG/fqp/0U3hAgQdJ9zumutK6nqWbaqvm1pgu03IYR+G+8s0jDBBz8cApZFSBeuWasyqo2OMDKAZCozS+GWSvL/HsE9rHxooe17U3s/lTE+VZAk4j3dp6uIGaC0JMiqR5CUsabPyM0dOYDR7Ea7ip4USZlya38YfPtvrX/tBlhHilj55nZ1nfN24AOAi9BVtz/Mbn8AEDJCqJgsVUa6nQnSxv2Fs7l/NlCzpfYEjmPrNyib/+t0ei2eEMjvNhLkHCZlci4WhBe7ePZTmzYqlY9+1pxtS4GB+5lM1BHT9tS270EWUDYFq1I0yY/fNiAk4bk9yBgmef/f2k6AlYQZHsNFnW8wBQxCd68iWv7/35bXfz3JZmfGligWAKRjIs3IpzxQ27vAglHSiOzCYzJ9L9A1CdiyFvyR66ucA4jKifu5ehwER26yV7HjKqn5Mfozo7Coxxt8LWWPT47BeMxX8p0Pjb7hZn+6bw7z3Lw+7653j5sI8CLu5kThpMlj1m4c2ch3jGcP1FsT13vuK3qjecKTZk2kHcOZY40UX+qdaxstZqsqQqgXz+QGF99ZJLqr3VYu4aecl1Ab5GmqS8k/GV5b95zxQ5d4EfXUJ6kTS/CXF/aiqKDOT1T7Jz5z0PwDUcwr9clLN1OJGCiKfqvah+h3XzrBOiLOW8wvn8gW6qE8vPxi+Efv+UH55T7PQFVMh6cZ1pZQlzJpKZ7P7uWvwPGJ6DTlR6wbyj3Iv2HyefnRo/dv7dNx+qaa0N38iBsR++Uil7Wd4afwDNsrzDAK4fXZwvEY/jdKuIKXlfrQd2C39dW7ntnRbIp9OtGy9pPBn/V2ASoi/2UJZfS+xuGLH8bnLuPlzdTNS6zdyk8Dt/h6sfOW5myxh1f+zf3zZ3MX/mO9cQPp5pOx967ZA6/pqHvclNfnUFF+rq+Vd7alKr6KWPcIDhpn6v2K6NlUu6LrKo8b/pYpU/Gazfvtwhn7tEOUuXht5rUJdSf6sLjYf0VTYDgwJ81yaqKTUYej/tbHckSRb/HZicwGJqh1mAHB/IuNs9dc9yuvF3D5Xocm3elWFdq5oEy70dYFit79yaLiNjPj5UUcVmZUVhQEhW5V2Z6Cm4HVH/R8qlamRYwBileuh07CbEce3TXa2JmXWBf+ozt319psboobeZhVnwhMZzOeQJzhpTDbP71Tv8HuZxxUI/+ma3XW6DFDDs4+qmpERwHGBd2edxwUKlODRdUWZ/g0GOezrbzOZauFMai4QU6GVHV6aPNBiBndHSsV4IzpvUiiYyg6OyyrL4Dj5q/Lw3N5kAwftEVl9rNd7Jk5PDij2hTH6wIXnsyXkKePxbmHYgC8A6an5Fob/KH5GtC0l4eFso+VpxedtJHdHpNm+Bvy4C79yVOkrZsLrQ3OHCeB0Ra+kBIRldUGlDCEmq2RwXnfyh6Dz+alk6eftI2n6sastRrGwbwszBeDRS/Fa/KwRJkCzTsLr/JCs5hOPE/MPLYdZ1F1fv7D+VmysX6NpOC8aU9F4Qs6HvDyUy9PvFGDKZ/P5101TYHFl8pjj6wm/qyS75etZhhfg0UEL4OYmHk6m6dO192AzoIyPSV9QedDA4Ml23rRbqxMPMxf7FJnDc5FTElVS/PyqgePzmwVZ26NWhRDQ+oaT7ly7ell4s3DypS1s0g+tOr7XHrrkZj9+x/mJBttrLx98lFIaRZzHz4aC7r52/JQ4VjHahY2/YVXZn/QC2ztQb/sY3uRlyc5vQS8nLPGT/n27495i8HPA152z7Fh5aFpyn1GPJKHuPL8Iw94DuW3KjkURAWZXn4EQy89xiKEHN1mk/tkM4gYDBxwNoYvRfE6LFqsxWJtPrDGbsnLMap3Ka3MUoytW0cvieozOmdERmhcqzG+3HmZv2yZeiIeQTKGdRT4HHNxekm1tY+/n06rGmFleqLscSERzctTKM6G9P0Pc1RmVvrascIxaO1CQCiYPE15bD7c3xSeW7gXxYjgxcrUlcbIvO0r+Yplhx0kTt3qafDOmFyMjgGxXu73rddMHpV1wMubyAGcf/v5dLr5P72Ta9lBF+fzMJrMycwv+9vnU3ANIl1cH9tfW7af8u0/HG0vV47jNFXzFTtaha1xvze/s8KMtCYucXc1nzfd/MQydUXn/b72RBt5wO/3jRcMH9BdhC/yctKBIveRYPrNpDWqBsO8VMmP+WvRaOcA4zRMR1PvSoO92rS7pYEv+fZfEfTMzEdM+6X5tLlyxExhqLRkms5EuLovLfx66de5fL2/yX02H52FPVwahrPqmN/E0oVXnsCKhbi/yRxX83nRbUKWhzYceXOntfuXn51NszJ6MO73pQf5Pl4in3ec4JU8hF7ppV34+mm9r1LY0ee/i1O1wpd8+zfLztE0cqBxggiBi5Bu95v9l3r9r/U5hweLn+TbfxowrWDqdJauKd8+q/dH8sbPkc9ttuyO94f7/XK/nHX46MPFLEb5qQlNPvhJ50/59t9ft3LXu7uVaWaO2bDrDCnRSzZyWvFKxO1+vT8MwwunR3bX0CkfPjqb4K9O19tn5X50PvmYpEwHtiW9WtzuV/s76B1zvLLNkViNd8ySxIl/3orfqP90TyTGaf7/rx8jQzeHJXdmh/N6YDvbvmTBwCdxfEQ1NcL6wNMdSIXNq7b1EUzRy1/Axsyk5p22GMG1b+GxFgbHErZh92wuvco0AuOLXct9hvw2nw/LqIcDRRmJmmZzcgUa7JpM/WV/S9IUfbF56TL2orzqwebdRD8nIYNJ41D/hz37Fo11p2Y21wzPcn713qVGhqtevStYfGH4n69OEJtPvbbLYWvscDqc3Hgnu166+tAyLnxrX0Y5zoYjV++1sI7t5kMr02KT/+uwtkc+rZLOf/qn/s3nYCf13Dg8/sB2diJgjGqjQ+TLhxbzyue2Ob7X6/9lUwW7a+lbznHzOYy8LKW1C/uRPbQY3KW/0gO9LXunHLvPL97afba9bFtc9hmz7GAttjVYlCvQAiOwAk/gC5+hkLEs6tr3AZKxLJtOEwk2dLxTYWsIB/j/ToWtIWzo906FrSG8iaqqqqqqiIiIiAgzMzMzNz+AyK+01/zi8n8S+Y1MjoRaQ80WU/G8MBlO+53VPXANrWm4wzGUVZUjjBJZVdhpcfkjsmcWaO+UEldXi1e+zq+HOsCpknYshuh8pOLISJun7TN0EIGW2xTnlOImeecnoGW4raxe2G1T3HEvfYUYMhG+gAFOAwh5nK8mZhwJMmN7r224QVsNFvZ87Z0qatvknklyPDK3Hy45PgVKXji52Wen4d4PlFVVYGnNap+fSpFbK90rYnhUc6n91Q3AY9E0tJOFrcfZtm/491XbcG/jsViUPPX76qmeuiz+qY1Hk7/1VPM405zWVuoheLUimpWYdVzCmUdKHebMdzgrYrb8mL2eeLSnRWHdonfZa8RsOU9F37w+591l5FLYHiOqWeHtE/lWrBHcRKp3uhtr8yXm8LU/5ms+NM6ZKsqu90cFZ4o58+k4rdrtB97NADFbwmEG7lXqvirhOTOqU14xuUF2myIjURcPHrPOQ4lmM3PeMg7bUuk0nnZi67bXsU6H8lhqIo8TaOrEafCO1ARK9PjC0QOoq2BxmMdgYB9G/lIb9++fqNJ2s7BHGFyBNmZAR8J3KCo012ikaSP8BCrf6VI0X5xdnbhHIO+B5rbOyB54zXkzfObyJ4ecwxfqBJMLFc7m59rNcw7hoHnFZ0b00zee+gTqvjm61Pb4xn0kcDX4jvHM0rBXZypG3DCKnD/Waa/ZtHmtFPgO5eETx+k7RrVg3aSwm2YoNXnCs3XPQDhNn+Fia6IlOOuIG6VJH7TP6ava26ehKHQa2T4N0tcZ9dPCGo3ZdnNltsHQbeYt5vPnJezV/cAeNypdml1vCHI8M81nSRP5Qi2+mI8v/sxiZru9187nRtp3f/42NemcONa+4eVC3PCZzc88aZh851CqSsshe70uPxeN/dmYwlwb3trwMrN1Gq8jbnApcVDx/yDPeYs5/7r62tsQ6lLg+DiFXTEhzR9dHqv0iT4tgj825W+H3XiRUNUZT2kR9Ri0+lp+UM3iQtS8uOE23Ly4KYtvqH13jghUntJRAewuzNLDXp8RxdcaA3cMY6TO2IeSFRXezeWIjCqyhsUdMYuCgYTZSKpBype1zRfq8FshvfBPc6BAQWl7/QxIDp3VGo1J3vn42OEs3qznws+YLRXbymyB19a9XBx6n/owcyxlEYyFWCi+kG9F+EyD/4yn80+agaZ9P7ay2Dny99aK2o91FkfEOY8hBwyfi5uwx2y5SaHmG+oq/zl1FX/8irOf8Y3vAcX/6uLP6A6nvMO24edSGPjQc827Rw2atX+z2bKq0CmW9mOtYnr5/AfDa1ZfPaXnKtlWborup7QYx+Or2uWb+N3N//2+yDcXMqIJdf55xl7/vsj4WoPPlxLxtVrkJ4w/tTe3mLdATOOYwxcq52w5Wxz5MbPdVs5O8/lhfE7dPj0bIiPQ3QV0iqm4m3YX8hRfc6jQ3fWepevMqUDJd86Z4vwM40CWHnn+WphsGHfieF02D3tmZvpWD+kBpNCFcLnZhcmmrhpGzzbdA+sQ1ar18OJD87IOKOFoRNznaHPNHUfUNhvY1iU+uhvEvpKHaUn3qK3exVVyX4joipp3um7FmYJWmA+WbIDshRpbVRx5/nqstCgy87FGbfVB8yDGCqS+2qCsnRwnSAN6zgzxfdB2nBT/vZ4/6uxb6oH8b4VBRxiIB93wLa47hG3w2SL/2Z27yOXJFwZpSJaBYyvajA7vRRYNKqljXKpt/CFD/tSMr18DKKbwB0xggBePatl1nki0yvqW5zchlyZmJ0OTxJ3D+fsYJs/mxYN5+Le5oagtcl+YsVvy8kSjI2YGvGjvmpkRS9W2dtXqWnVuxUhURm1lKtou/hdEq19VBp9OjGvHEQSmrpuf2R24mXGheil8KeiANY8fW1VERUfBImb64j12caBZmRViZHbeVMjCrPDg9A90IXrtnsYCuZtRQ0PyrKDjBNOsPfKsg1pA02gHlVr0OXiFhtp6nJqXVzcbfM0KnzC3ggOENPE9VBdmHKN6LYaijb4wXxJn5A0FSDF5j+h1ooZx885Jt3ZKzO5n7Z5WfNEOtyyPqQEnn7WLv5Fis3PdgMshjF1FRydbNyeBbyKI1oN1TRVrVK7kgsb/zjX4NDPIRMctVeaxVB38Vh1x5KbeJbU138AM5KzmZu3uny0ErygxiJF7GVXUrPzFxrlx1uFdAaZFDN9cvIb74qD9tzBMo7L7WIEYK+sla1DVMHpF0F7b3+Y6S+zjvLeDMCpapmJo1weBWuxKF3rOocih1gun4BoJh1kWnV/Jmiq6uOhK3VfKxEHEkafjLgK3oujaPzY6SXg8phhL4TNR1xvJd1Wa0aYFfPUMLrNBDCh4AuGRTbtKMc6Z1Udj8evY/ZpCuMAUefdo69DZUngoqE1P9A3PJfOf7WixCEj+Y6t7fYeHbbxUAoFV3M89cCKfma3fc1+jKRe7MFWEbQqEfyzO2x/wrO2VYH7iYdQ9BkPyI8/3kXBpLaCpU7eC0Yv/am/tEDu7HZpqg0EvHo0nf/R/gRzUWy33/HXMJQeu1GylKmOkXzlCfGFruAcPPhaGqZOtu19zsJ1SO2Jz4Ztth5cBX6mRQwWmDwryG9FUMlZzNckMdK+IoMJv1rOWnBamS2w2KHiaPMPLC15hCZm4KTpoZyj4E2TqC/P6r7/EhnDMhKicZZ1ZwxuC7DPzDGs53q8gXaI9kFTK+2LTq7bhwsTbrMV8Rsfua5lMS0FwbTitUVnVa1yTb5IX51mmYnUcP9wPr8Ji1tiYJeJV9GZTrQhF7vvdU2OTU42ogJ9FDwhmycI2LIg++03C6scYhUyUuMV5tkw6kGUoL+mjNC38+wMdWNljn6tGPpRES7veqrSn5TRuv+dh6JVL/iDHU1db4c9WK3++OrH3PqziF916UMUKn8G67nN60GfWiHrXYhUG3yVWmyYak59NHj8t1smG4UDiWz2rPHNrKnN4Zo1LBbr2/eF9YZ0n0blx2nG4X+EKFxvS3W28JESD+FWk61VCD3z/URGHiJl++7TdBwkCj6tGOH3qDb0QqcOF9Kzpj0HUb/KyFW3Yhj2VMKJqGZleFBH7vqvf7WqLC3XMuHV8q8a4sTFuxUtkD/6JIBvKaVjv96ndgruKZ1k/BHzqf2K9fLk7HGXANyLDd1vxkK/i055pnzl+zw6zLnwXlVYVtfmacJgEpRP1hbGgrYPVN6v2lG+idQNGmwcKXu/8xEj/P6qe/sB2WmwNp6pp8jaISMkwdleFXYK55NHWLTTbutSUqjBfDGWo/Yg918qQ+8BRZSAHZbfuNZz2O0sov1Ue4CWlVg3rFhM3Kljj9ksGd/NUhk4nH+a5UN2+1i8+NM3vRNp7uQ6sqexSCukEVlVZriHNqFi5rLm9TMWa4qm3idJqppQACol2l4VSuvWLfta4JcXy3bROPNbXOgdOhG47LC0CwW/dMlSx4Jf17aEU3yA1x9p+Yc0jupXgcMuYNku64iYOkGToVDuJvlbEKlJqsmiHbvNrIVZEH+yFdF8DbleZ6iNiWwMqvtMp/mSpwx5KxRrT9p3MAPTHGtMbfvdFhyj9vhaKcn3At8Lc16Ai+vBcSp1ztXi7rCJZx/ql7TXcclq6Q76UeKWDy9boS0WHIjUuWhPG8LBmW5y2rhuTpM5vsLt+HOLh1Yf0DqXa9tsfC+kaKt2htA0ai/L2i7RKoNjEwztkmRU0GfgW1TxUvPFhg0V7DdfWJk5gfrccpYv+MA9M0dkGTLECeYwUixRzjRFdmjG7zdZIl3XKB9YliNKI31lfa7i2JG5C8Ss+rHe0D7Z696/V3DEAOWHnQ9yNahMUl5kENWS6pHKKp2D1BaSrrHdE1w2qNxIztpXgUIrF0bm15YML4b6V1k+GpNysTahKMVrrS85lTVo9OGJ96I47eAy5rYWpRf/mIzeoYU1DKaQCTUVwrhHeyNoDqHel+lLxr9WKzhSYw7vrR6+V5q0pfi2k3L1zqkubY6rrd9ZLvSuWNf0uqnkY+FpTvFzSW9Fp0b9l8JA7THV9eCi/PY/SCZIUYx3BU2alj7Cm3VV6eYpios4b6WuNOJdYXUK3zTqj5CVG2FqYM4Z7CuIU0qO05XR0d71FHM0YhZmJmTRfLlXEumN82BGtzdX0S19t1e+bUieK8zRmqpa4Qc5TSjifmaQsY2ETLjhI36gMR1+7qpjdXXHiceUekfBaucHShAOiFXmv3sNmGQyU5iVgnoocuonQXEPTFwslHtS8R+A47StI9wj0iSrtbi5rMysczFiImsQ+bdFClnFjjpXXwMy6O7qfjOr8Fb0a7ODItisjnn3EQO16+ypd1cwyaAW5Yzxz5QknfMO7643fXW/I9y3U2xH27Oapqr56Z/tEzglj6IbT6HEHjopiXqeRbe5mQQvxtcbDOVverN0ZgMdzqRYRjaXtMRd56Q4cZSmdPvZJdSrhJ1D9zNXPqAEqPIavPdfubt5oke2kmv0dztIszSv2VYuoyf1UuopbsYb+uX9h6WpwjpgtZ6fNNawNJ4q8O3CFoSbioAaOSZMx2GYaPYB+rEb6qjQiNRFQ76TvwNFVKD+BhH9VhcKGsXzmMI7BptU/CNWolM7YzROvpFAntsiWJp6eR2d3GarcYShVYSUqhmYOWj5E96NK2WvmYNTeY7Zs4RUEdv9h9QT4EseKt6LzLrqEOs3hxAY1MaNWpSa6zZx8F3YOVeCYMS88W+CYHDuWe4yoc6YK+djDuEOrBR5lvh0r+Q9uM88lrjx9x9AtgpQVNE8r+3O6Gvw59D+kBF/UMXyhliYUtPjmvXGY6Dk3x+kEOW+GtdMVC4EZTqoS/jmR0P0LS75DOc/w2vnri97M4SdbZ8qeU7gg8DVbERkU5geaMQO3mYrSYyAngeUQqrN0C0/vsFmcgWNXNeidsTAj7/4MncJR0caaBUpbLK1yBCBNRjEv6KvuVSdpPnEMJdsRRtqJ+U8tN1gXA4ePHc6ZT0eviI73UOJF0fEZ8YaneAQqQdGphNvwM4nIqPnXxV0xA0fnCT+oAhJuyw/q8jO0y8CjSteZExwBpIN6SvNp6A5G/abi6egeND/1GTguhuNjaUbbnSbGd4L8937Ezm34Eyi6n1maeOBxh3PI0jzJDf5mh/BsLD7F2GOKvlA/5gtvxI3/eV4sLfKW5Wy+oio+es/u6T8UU+nsofy57Icb/JlZHPFtCgd/x+bwt3ZT+xXTtTtTrGAb4QehC6X9G+8YT+ozcLxDsdCjsuOqwPFnrdLYaFc92Ui0m4fr39lYmlCaqTit7G6O/3kWDkgtXjNH4BiEm/+jegQnihOtfffn33WxsFjhfMd48HT+f6o6X65j7XR8WLSHMFkxbvOYsrRsF1bowDuSQ18Mkxk4qz2zoGPL5fu9h2Hqmt1asl3Q3Yu3szOc+spiCmX4AETBM3pLoTYSp3sVxahyhL8eC4mPN9k2x3o0xkiixIzM3CZFzf5oR4mecQ5+ax2wCah3/crmnHoqR0+KMaOPxRif1oEFRFOO/kTPPmtww+NfMXxEK6gn6iU32U6fFruIz8Q4WgljtnaCVTBgWx7diUdshC9ZEa5yKpRBBeW12r/iNc/+EgNqmhswNB8SBoihHXeDF7rrWDLcmt3V8GYYN7pXRy4DZjj4DJuUBL5iC3DQAaoo4vkftqVTYRGLS3mHZ7gdmdTTqbgNN/PTdTCOTgXolc88MhXAEUMdX0iy1JMuk5wLsgeu0QUYlz2S4skTWwJz6pOm/8ihrmgGfFgri+ZWUK2gAPHgbWa8jaocdSuM4FJYoKicYX/ZSENkg9Q1ZzJfwScfVnR2DegOGwCvmogaWJCLQepv9WNlU6QgsmOwICquU28Mlk3d9W5E81lU/5Ez0LcX6lwKMWDNluNKfBDUy/phJgBcMnfkh9iRxrdOzgs08JdPB85Lwo+GUSb4t3nC+0byqMZtO2fQJ4U2zGIr49t/28qmmGv2RanDD7a3FEcdtutkW8twwwlUSpb8QalodddbBfNHKDQ828BdE7OBgFdiKYohLawFYqpybQoxATZrheLhdI7+0Zlu9Q1myRcd15r9UIm8K2LGJxqTegntqNVMKnf1a8zQiyUR1rxoqjiFxeHxqFcYUTHfDu7rhbWng6qOxOsI+5A1p9mRyEPdVkTlE24vY54W7bWc6jMgZvNXdfC9/9q7408KDsbdL7Utz7QFSDetz2picArzrdpL8OaCHC9V26RroemtDZ5yNM/KGkWMyTmfnInEvwtSD23UcFcjhaE3VKzkoaEMKGBft4XbIO6forTY1lmGQwVmKicBCiArDzE+1oIxE08fWeviIOD5TznqH+OoHadvoOP20drMPe5Irg3XBQziW2XDuHYzjqQQ4wySssjXUs5H+t3FWYMHppUnBHMx/nYIT5d7OmjDbgD9F6na3m4l7KdkeSO3kTEPXafiWinogag7b52taiZhL1TSvBFmEZafFq2H8khQaZXuitCewT5FBgVtPK0j4xUHPfUz3Q28eac1Z139DAP23dgki94EC8vbDPTQC97HPPSWjUNG5tWKMsaxAEMKC0665Xvo1Ntd07wCLNf8Q56mrEPVpCxlIMVlQlWRxM3oAfpgIc+8KC3rEXUog5g06vt7zgXY8grH7hhwVSaeuvC06YYRAwpbyk/Unzj9hLEZNs2oxPQB9yc+GnL6zTgq7rI++KDJwX2SP8Sd6YzTuw5lV/kU6eQxRD12omfQAW6caTR4LikYkBB1CMOrvgRr/VY75+NSB40Cni6bADAtaK+vyxVWpf9NeKJxN2KYQ8Q2xPB3K1s7fuhvWbr2XpgW044VD6DRs0qXoqKf1NFsaGvKJc47leUV3pppP/5VTKFhaGuol4Esfjf5zyCyUHmHthChcYh4hYLQF+AFWsuq4t0wJyWgdwQVOZiV0efRHPoK5+E1vjz9wTJmVkITC9oEstAsyZSgE/dbicwKr89YUxKZI+owD205Tm5lnnmDRuP/JnzxX3gMtlrcX0UesZdxyQqYQuEW4R51vmQ5xOZteUd8SJruMlTUzhtVw/Nq7eUBcqN2/HVotgfngif60yKEtoUx3WYOZlVJuJOh8u59fzSDPFYtQgqDUAGyGhQOAvKroXMcOYY0qjnStJR/G3aP+Jt1sLVlGV8POwr/6OGsqetnyF3TmTqZjENfnXh51oxe9qVUw2M78EzAJ+IM8lZ1MBPQ9ZWSVc4J3mWSrLKrMHReA5qdGoz0ODRsaA+vwxXA2cAM4qlfzBJA6581m4hzxItQw5dxrrBL3Y6kCbUcFxo1S8jyV44q//+7ASNNudZ6xeaNOSIUffqMn4A9lIjFctYn2gpEPAb3f7p3iIBN8H14FUGQ9ct2hPsL+cEsTgUrR47uJVN4n4wt/wgfwwHuOnLd4yobkofy8JvxSQTA7rMpDIc608SlZFJfZYcmbT0tAHpPE8MrtQ42siTUNWxqvWZOmvu9f0JPoQmg+6l7sZWwyfi6PXkxJnwBraUG0MYG4zYHQz3igy/XsFkx5tNQxw43qvI9dU3f0DdhOUlHKjmi1VAr2Kiy0HZwD8VeEbhh0OiDdMYspolQsYdSwjCcjeowIXNZVUPmL2wwIkYhmXKhGozdCJ4lRKbsf4NBh/XnQoS92NJEWOVOFs2YhN8c5QZFeK0pRdAG40hqvLbmoSA8xQmzOOEc7wLcme9JOsjPCEgpCwUs9E2DohMHRhUeyGIN6TFvrbny8nDuilsDpzrH5mS76APoIEJmItS67sQJ+nfwddzmjPxcBEBBCw0kWDwd0EZCkNeOD7NNQhtBm7KHL9mRxj6U1yWU2puzlIDtpYxdH4ZPeXBJkTGAJfUr/oTCz/iypY6uXaR2V1doPxJYlrw2ghH0D5gbrhFcIxzYwi4a/4hqVdf2DdxBp6vGYDjavxMAAoy+1+3aiO6S3W/QAKNVXagDtvsNtx7Ks+HKgo6U21B+QSZgIogV5Bt+BnXisdVfy9VyXV+2P5fMuvdpAjM1o/K9Z+XnE4EOCrue+kcdYHqAQ0/Y/OmNlQ6OI33jH/uD1RalPaHpJAm2av0/xtpqdXVKNDrc9F2izo23Wu7firgbURFDNX9eGGeYBhiypyXZft2j3hTvzE6PMWKsod//rEILDkzBXfi7xh0eFkfb3/1zzPK/PI5Nk3FbZyTl4mq5BfBoVoqiPHO4Q4QKZAlrQ3MdNfi3oxIjvsM3kAFv3fdufurqYR3PSwX/mpGy/GFI/B2MNPiNdOppWVbs/gjF3YH+QA9jMhlAbhvasAHstB0IJew09iAkmXHl1/TEj+jvHOpOGrPRQXbPADM+Ig2/OEcUcpgPTItMtW4DdqgfYVI/+4hAFWYjUGpOP/UwNuB7+BbKOcALbjobdgzeBQfjgNSp2GOpxzGLj70Vvq5cw2AoYENwKLUtJUX8sGRox4dVa/TN4xKwaKcl9XawQR/uNus700Hf17pyNnezrUgaY9e4MADhEDBpsJT6y1gDJs1q6wlwGhuUzGR7C8kgpjPyHWwsvrf3yn1zJEIRa5eSxoLAZOCR9xbuztxFRJW9ZmMYfCFJ0evm9F2fVnuje92Rc4Pl6A8bluN8MZyyJGZ0+sNSb//DvAFxC2BqlEsFwccWeAl6CyBcQV1bx4mQMBP1Jxqk1EUADNLeieS2dUFbQ/c/kvwItbZ7tx0st16viqd53WsRmPTKv2AD8CUnhtPWg5aUegNpsYgasaw2+EVooeNKmrW3MFtj76bYHJm5K9gpAXZXsE5U8DM8XmVOSJ1F1WnLy6nQup+jx52bAb+rCq6y9WXl2B2oZDhfDkW7H3oYfT/4xx5VncBuxMXP2lNfhUVQjSSzSRbuZFE4vFawlzveXxaYKVs8LpvAb8IRYF3ZHiRnm0ADeNPWocwxSzNseG7NrSEVZoHdKWqaGEBz1N8Pt7kFbqh3LYmAbm9i1IChIpLpM5AS6mr6OAPHMwwznVy61YpBYX8xZDN/a+lt7n+x5j4bNOVteZ8lj3hpAHSx1VR8vZHec4AHO9XFCdjZ9eRkSV65ljMmZVzaej2qFn/qt1lvWzNZEfHxK3qOJrHL6crr0CRzMox5f2e8ALBB4UGFZKA3tN6F6IXd32GTJXGQ7DTi9j/dNcLF9jCbDcWGKxoKTYblIwbLDReL00LRcDPMcQuXLMh5YzgtfjkFK1DP1iDzzYYVZz5M/kWYRlRpig1htVRjVCknm+h1M5LiEDXOyHREhvzCGpFZjHS0RsK27o2avgdilrJkalWqPW3D9gmwV37HKmfM3F8YZj2ar+vHFvf3B8CRoH4kDHIK9mrAg+owiEwNjjd9V+FsQKYR8czJrUkf7Qoi2YaW6EVDZp5zYlqiYtuXOTHk4fAcZ7qBbdLDiJq0WNV1l2+Hntk1mMWvxrYmc8kIx8G3rW36J6Ra4lLrTOCgiOihmow+YnzUT19jbV2B3RWqSHyxkhmgsBqMYWvOcUom1jDQ436+fcbu3xf2bbeqU/ca+C4DOKE+e3qvmeMqW3AxejfzBRFVcwVYPq4L0APSWWoJu+5UYX4qg5U6YTioqQGPG9XrnuZ/BkxuYpe6Li87+18EskyQW/uA+uk2rpHpr6hut2TlVbKgWkFpx+AZffweiw2+VittkEyf/ifinS/0ItRL2Jq3tQOcxPaWO2xrG68GdFoUpZgFXaP2wYVtRc6xYCfI1CaBqyWpg4bx8OHBQwsV4XWMibZZ0LYjWEy2IxQ1mZrf1/UNbYCJplWu3nZ4WpodIGVA05d+RWSS+ET9tH3RfGGmNI1cIY7evZZq7o+a0bjjygpmR3mVfalkT/SZGT27Q8QGalwGlDOS9VHCyFAIL0a1Q7JiW3saz9gqY8lqKynFrPCzxkU4SIfLc9VfCI5edgRhDXs0edO992nhTKHriREP1NJC6SROMgQ0xO5kNNZOhMOIT99AUElbxqeZF8A3xrfDJsWtDnUenAHdYWSwAbYjFqQZ+D5gi3hNK8CSxU9i6f6ClL9IGlj1OPMQAsr84YG6ijsJpCaGWj75c3yOZKBB9mNpQNPUKkK0D6wgLH8MGoyRxTX6Y05Q4AnYNXMZwXM4eij/9WpsM/9CoRnFQXGR6MEaY+FXvXEO3RO0JaStk6OXuHVATHJE+1W+TU3bSZ2ksMtqjO0zfSJCdBv7y2d8DMx6TfVme3q0ZpTKMMu4YL/t7ciTNtdDkwPogh3Cnjx7qk08SHwf+dksZ7M2vCOlfsF0hQ6J4ehPCaHTNrM/zBSOqD83dBEBCW/F/LEmeh0nOHd7oVl3/Qo/9GUDkkbj7yz+9cvvu+dDAtx8NzCDTP4iKdZvk9MWiizvtILLepysflSvTLFBZ37RLwiriqyRxYv/zrgFd/9XVHh/OmzBvDX4mitMR/lUavs2Vx6cR94lzAkplm3IRNy4TFfu47tuYs9EQPIPVta4P64tV+sZ7n3ued3cgEx2YK+QL5+xms6osk8qQbTyuKVGdaX9FQqk6qfDnT5ykxk0VK7KZ62b6DNDUfQlqGHxSMKv1P0XN5BqMeKG1P4Wp5QfZDUCEldppoX0U6ss2jIko2XpURKCIhfaOqLPfShdtS37ZrT+jFRSH2xYVV1rmT/MBtRQhxiO4MQ3iAGlaZi+9PWBEIXOVnu9jN1f921lWLZky9bqbM3J2MAAI9jmuAx3gyoEUa6P2ivs0EeNv/OR+AX6q5SW6l5HaoFuS6jr6yg9limu+P0KYKzfMXWcQSfTXzpOzKEKpwI3YGXZpSSy2LTlMgfmFA3CF6R5c9xWEtRuCg2ZPUQ2Nb6dRFTNd4TfGHrnEWSKHPuRyiJSDAZ+KX0VxmSHjGPbQTLVpqixia2uyhQ394gBMt7C3ZAmxn/DJS+l1fBsAo2Eir/C0jG9csd4+/tp12pPc/BVJGaK9mfvr7M/CeztrmCO5qY06Edi4xAGtiEhnWAbzLy2VEyazE1J5nPmgU4RpW4Sa0TnOT6w5lgt3/tMpROigHHmexBGAMY0mdcDbDxWIz41NgdD6oxgHsJRgr5RnT6wZAkTOcStU4NMOQNemSO7gxGahdEsC+NRVGxMUhQmmM0llWRbbmFGHzEqLM4Iw0H7577Kyo+Zf+2cUFIOw93gEY171vQaM0HLwpjpdRR6Jz7V0ckE7XzYJ0TmY9znLdzkva0vNrAGGT5SUZ5uaHDkcGvI0ySpwkasEgZPMseYcu85w8HPdSNi+4T6A83iAwDbxgeFcB1ZM2iGXzFcEOUlYVrEckaOyodfvaYSQ7GuB4ISE0nYJc15X/1ciDTPbPCgYJK55VkEor4LvzL9S2WDy4xj+6FOqVyTAC2ZNowheeeSI5hA/02l8UYkv4nk9iaVn+kCVEUstgk5Hyq+gJm6R9vG3rhuM904he/hFmNQaUIATB1y3vw+OmxP4X5Yi6A5I5jJufHCjF9+AGNwnEllZjUco6XhsO5T5+R3yxz5yLVOnAn0zuS+6zdj0nTJbEZCbXJdtpfYZfCeCOqJHoE2vPPFS6eRLjIJlG69X93nfR0mxSFXzp1Zc0lt/VafDaImhUMtbnqWVb9M4nGNQLN68BHP7AR8Il9dkcxzmBv8PCZlw9guY0lurbBsmNYlwJZsA/B15/HfkbjbwPddaVecls/elmDHNW2r4crAx43feNkfRwsaNq/yyJ0d/p5hZ6AZajz7DBfUok0ZU62gCzz7x8eVfJTKA8IWn45vINLSM1q+HF9CV9qF3zP6Ml21kPPL3CXzkuYUlnSqT+Ij4tI/od5KwIs+tDajDs64owN7tOAd6eucGz+KfO26iNcBFpbWA5732bBNWO4kHNpr9D955L61bvHCF/mwSrz6eQaDjfDEANqGMkFc+NGxpKZzCD2sj/JrHd+zlPQ8Iz7Q+2JVIiVCuCKoK/hlAEHzvk/Piq3mRL1rT/fEh9hoT5GJmeYswg1otiKydizJ/fS2SeKHVu6Z3JEHjiW8NaTQgP5xdBli8nC57XiN9hrquBu99hn9zqwo92+PM2JXtpeVZS0PdqR5mDyDreMMtEws+CpwaRyyzoYtfcvt9PJIW0fJVNNi/FFyRsea7peLvJrL+5b4GOXJ8tAr+ATk9f8KmiIsRhqRy0vFzwRV3Z5dZ3QqIU8JQ/uQpkJbjMUMFj2F9sCFeaBjI4+fL/oN3+LQgjI4zuAfQ+3IPIPFQBccf0clJpsfpnBxD84atwtupkGqKvrH7cGNl/QcWcSi6wcVDML6ljOgYbo+2BOAWNNjlUBPiyitUAwbnhFvLbnqw42kR3Yp2kv2dMeDdcGOX5kT4S6M44KHEB/SpCfl7xgsUvs+JNY9G3O2X/6FEt9FyAn57lrbiu+tl83sCymSvq9eZbe9mchL7MTf/Ta78e80zSf0hYY5eUU7+ff14jv7Xy8qjzfzzzvaJnrIdvFb5BLWKcWGy5/w7+vV2cvIfwHqdTB+RuJK5oj9mbt0Hy94AmjMjjwYNZlNS6uiyxNnwNyt3gdreLb64p/3+08nXkb92LTkkRgFOwk1oGEVllcOj5lv1hfAZywDows0944U8vUFw+A/nuVq/UCygsrmWIBnHyU01d0XJPwriEOvx/ISK6Pk4y2w0gmojZs7lU8TtakBAdne4v/aNxmMpK4VcGMp7si0yqsiolXRuOi1Z1P7SqD3Zmp0CWcyK4Ubmp2SXiXuI5nGLCieFHKHNRIlcY3Pys2dwMTYCaqlyWSITwr2oGXvyU3h1Pf8eQ3w1bnD7ilocVjYDkcXR3Oo1BXgMLTUjNw2xMVwjtp99NhSVc5aIWrDQT5DHPKtCtheBP4zHcw4dz2eRdTMamhlHhtfgqJJHI7NGDUw1XL8vsSeSHyKqDtqoAmrQqsYwvwi7HW3ojWyhIa5oz5xJTaq14NAzFLjVLR12rRNUQ6xohDnrWFb5bG9yf8aCD8d5phoackcNJp+Dw3Due3RM+5Rid7EuIgsnwgpX0rUWh/nqPtByMhMZZ69NpgvRTKZ62ViZ+Q7Dp5r4K0d7EfJuiy06KuIYauRh5Ecrhdt2QpTS1k1AscEHvapNbU3HL1F2TFyR33Wxb5MvH5iZsrn3SDcsxlnnshO8PLwmdGN+paWnQuORtZGX37uhFT64SeuPsx8UOokY6ON85WdQ1dki5zErsJGazcBOddWJEKqNPiJpsMD1GrVLrVY+AOdPWQneTyyP1hRX/lMM4ZogGGOhYuAdr7F/DOiAoc++cn5vlf0zkMUJ40Z1rlgv9BelPqVOpxKeOpzKdF8maK+1Vv23MO9k/8+qpLoxrIGH2EDQlnGmH8CD31G8QqlyQIcpmR5bwmSVw9/Ns6IHgulCRehvZ/+VrM60Cu/r3AontFfrljew74skYe2uyn7JKQtFQBQRJ9ryGic/zQOsbS4scUBctA8cPToQ3x6ZBQu6DPu5m1bnCtP8TllLYA0UTQNVqza5nfew3Mopy1GPUwG5jsl0OVXniPmAcmLqO5HG8Hv3nSLecE9oOjPDXcsTxoCBxYyzBdj4wmnyEV4kvFDunipS8SSkvdaMnTBN9brHUR8xdmmEAp/Pdqk9uextp1t+JrtXwpN/MG2w/qhRMpSNxQ1uhg/kKO30eQ/FyHUDkWHT8V6gGRU4DhDMxZu7xXij9Ui6jlpWmQCqJg3FkOTq3WKneCRYZxBXMNAVLQgHXSCGSqNdjebY94oyIpVjMYehAiFx/tqzBXFHZaL5PeeD74rW5OysFoUXY8sebUZleFTUa/+zBKVTFDopTReXNuZq47QjkWnxjirCommO4L/GrFtVV21EpMyw8wyThL5Y59d88xtlx1g1ttSICDwnof6lt/6zliPzgVUL8jWBjC0o2D6Kg+jNuThkAlaDJsq/AG2aKA//A76avw2KNqtv223P+Wq3StRDDNKFFgtsFukYt1GFDWooFVXitaNhb3RCyJi4cMeNjROiPEDb4k+G3+hD8tsg+5hhmSc/8t2JTSwYoCzAI75doq8QTHe+E/Tw0RQSUDlU+6uBeNN3h6jJGX/mH8oj0i3caCNsjvTnoh73BtyZpsflHLq6AfwJNCDX4S98h4+pCOhGKDhV3rtkKHMa3EG4J9y8zFWI4UsfNzC/Rl5midNn7gwoN9j23HGCQQ+OAZpTTPMdiVow740gIyuEtd0qVxMyNXhHcnuXRKdw5wDUSL358ktjMXmAkvIB73BLa1vfF9BAUZInPYJiwxqFWQQBVk7gQH4ojfUQ/KEjn+A/WR6EEe4CtbpoLe1mzHkajgTIoE0SLDHVauKhrq12zrAXBGbPPWKCt4DGedq3JyGRbmPFW32bE7T20+73BatV/qQhhBWfWBFHfhYWXjALts38FemnoT+9bn1jDBMcUMmYgSc0e7GQjv2MUBwLU8ionCpgV+Qrhg7iUIfUY6JFxR0Y+ZTCPM+rVuq0GNLyJXX6nrUTt8HzFBRY1E/FIm2EeVA9NcXrj7S6YYIChVQCWr/m2fYUjC4j0XLkzZ8GCSLfmkW3PB/xq+nlXsKVBOj7vTvqKCOMq7Ztqr3cQ+N8gBnPaAps+oGwWOkbuxnRYj/x/WjiDclVrs22xMK4qArE1Ztk1456kiJriw6abkNeRHogaPRBgbgF9Z8i/tbzWELN4CvbqtrqV9TtGSnmPS2F9kqOIBaazHYaJ9bi3AoDBvlZasMluxt0BDXfhp02Jn411aVt6S4TUB8ZgFDkI6TP6gwPY85w+oUQSsjIeXVminrwIdK2ZAawb8Se6XOJbOaliQxHSrnAeONDLuCnFejIbp4YDtBcQCwMsYiRZfHefuEJqJcwKTTJ8sx5hjHmJI1sPFHOr6W9AhZ2NAod38mnLQk1gOz2LCAohoQbgMbUK9RMEA3LkiF7Sr9tLZp6lkciIGhE2V546w3Mam53VtVkGbB9w0Yk2XiRnCmbpxmHr2k4eSC0RuNbjNsUfDIfc8DZvRvgUDe1IlKdZTzcT4ZGEb53dp8VtsoZlyXzLHOdAbsp1LPTVaHvLA0GYDFMbAW/WUBfUAdHwqLFAV+3uHvYWrCfhUOR2i89qvCBoOb48usAGdcF2M4aKn79k/43WzBZ+xR1L0uZfia70XP9soQReeuhZiUnXFDG1T8/OXNmssTSnYO+3kVLAgeiY719uDwL9FQycgLPessNihMZbAKG7qwPZyG11G1+ZA3jAX2yddpYfmaKBlmfcK/V0mwIRUDC0nJSOPUl2KB8h13F4dlVZiRhdGY5farwN+f9hEb1cRi41ZcGDn6Xe9MMSTOY81ULJyXIHSWFIQHstVYLiJEiUjktlHiGjntN5/btB8Fu+vp28zl2fZXN+dJDyN6EXhS+0yzqpl/LSJNEUVxmu7BsNdjAY0jVsAhkNuuY0E1G48ej25mSt+00yPbQ4SRCVkIwb6ISvYtmJRPz9Zt5dk76blf+lJwAPH5KDF+vHAmACLoCdG2Adii6dOHnNJnTmZtoOGO8Q1jy1veMw6gbLFToQmfJa7nT7Al89mRbRkZZQxJTKgK5Kc9INzmTJFp0tpAPzNmyL/F08bX3nhCumM/cR/2RPn9emZ3VljokttZD1zVWXlUIqEU7SLk5I0lFRU0AcENXBYazNaVzsVHA/sD3o9hm42wbHIRb/BBQTKzAi8s3+bMtpOOZgLdQzCYPfX3UUxKd1WYVkGH7lh/RBBgMZZwXzU9+GYxdBqlGs0LP+DZ5g2BWNh6FAcR944B+K/JTWI3t9YyVyRhlP4CCoUk/mmF7+r2pilVBjxXBHFaBfBtr9hbVn2zDuI0kEOG3kBx8CGdPOjX1ph1POOZJUO1JEGG0jzUy2tK4X0CgVNYhmkqqQysRNtKuPdCJqK3WW57kaV17vXgiyPrl4KEEWgiGF1euI4QkSFHFf0TDroQiLNKJiLbdhH0YBhriRNCHPxSqJmNNoketaioohqMglh6wLtEGWSM1EZbQg72h0UJAIPVFCAJOThpQGGdKfFovcwEeiBuZHN2Ob4uVM7+gwZLz1D9E7ta4RmMZ24OBBAg7Eh6dLXGofZ4U2TFOCQMKjwhVckjrydRS+YaqCw1kYt6UexuzbNEDyYLTZnrY1PzsHZJT4U+awO2xlqTSYu6n/U29O2wPXgGOEKDMSq+zTUtyc8+6iLp0ivav4FKx+xxVy4FxhIF/pucVDqpsVe2jFOfdZhTzLz2QjtzvsTCvDPU7bzDH2eXVKUV9TZ+qFtaSSxnYgYdXKwVreIgvWhT9eGDB2OvnWyPLfIIIfNnfIxU8nW7MbcH05nhlsYtaW9EZRsxWcKdEqInq1DiZPKCz7iGmAU9/ccnnQud2pNgIGFYOTAWjhIrd63aPDgfj8/sdlD4l+UTlcxTI9jbaMqqN0gQxSHs60IAcW3cH4p3V1aSciTKB29L1tz2eUQhRiTgTvmqc+sGtBNh4ky0mQJGsdycBREP+fAaSs1EREDVo5gvgi5+aCN7NECw30owbCc1mSpjiahyNVwJd1jiGgzSwfTpzf2c5XJvG/g1n0fH88KHNnf+u7ZiRMlXueSIsloJBUtW9ezvsx9grfsX/FNxnbxU1Lvg0hLxixypHKGFAaPu0xCD8oDTeFSyfRT6s8109GMUZL8m2xXp8X2dpPCWWdX84iga4BrTlOfqox4shqEgh/Ht4qRst52cA1xOIUuOxgfUivp6v5f8IVyaryEdpVk72ERAwdT4aoY1usBgmP+0m06Q216H/nubtNYxHaOIYjcach3A8Ez/zc0KcShhel0HCYjFsA0FjYqyJ5ZUH1aZw3+zWC0hLpM6GDfcAdn9fq2orPmZbW6XXrf+Krc9RtvII5jeD3dFoT1KwZJwxfUMvc5KLfn8rROW23Jw89sJ2a5dpB3qWDUBWF2iX8OCuKprHosJ2mflBR+Wqs86VvgI/XMnsqb97+VlKdPVysczPj8Jhzf+WCvGBHijAqYlavbF60soMWlHbvKT+ScvhprgeTln51xX0sF+Eadc/l2s2a5BgkVbHYyz0E85p0LstqH+gEGiR84nBRRFIn8hLSZrGwqjZ3E29cuGi+5Z5bp7EM8MWFa9ssS/vy4VrDfECSv7DSU84DaP0sXI3Ap4lWznQ65nQoTKRWU30gd7Nn8ZowUvGIx4aqyXGwmA/PB4qN8msJUODezUHEl0VP9uo+cZ8vPFodSIB4C7lQYjEFj8yu49C2KIV3qxMFYTevG8KqAr0TPlkbzHHnTpDpvpzziAiNFh8xiT7C/TiyH0EguUw4vxAgpnE27WIypV+uFN2zW7xniF/n75trs9IJ5amB1zXXZ1LFkJ6GbS/dFokzl4cc2mamVwhL4XU0Av5gDWAl+aEWhAP7t2VIwU+EpvfOPDcLASX7H7lZpXA2XQfbSlD4qU18NffNPoAKMNSccBfO9YVVgmlW4RydBqfHAV7+hrZ84WJGho6bNT0YMhxxLdOx/dwGj0oyak9aAkNJ8lRJzUuA8sR+fPyiyTgUHio5+Pp+YaKlHrhR41jY5NESPS3x+zTMe0S2HnLOKCOQPpdxKyviBvdHrCDRqO+l96HhhNBLXWv4yEMuEUYo8kXnYJM8oIgVM4XJ+xXOev4YbWeqsvgq0lmw4/PiYr9sYLt+W5EAuYSFnJEan8CwJwbtASBfLBBpJZiRPor/aCJBZsM+MhvS7ZepyHvU8m5WSmaZnxuLts8ojl6KkS8oSAHkq5GWlCB/NgJ5W3rO2Cj1MK7ahxsCrbTT3a0V/QQH+sErxV4XUWDHx0kkFy25bPmBMBQ6BU3HoHhhYcJB9JhP6NXUWKxnE0raXHB6U9KHpWdQCQI72qevp5fMzcm+AvC85rsynVQhruDA9fp9COe7N56cg1UKGSas89vrN+WlGLYTwi5W+0xYdKEGtGCeNJwXKDU0XqU5uQYnWsMwTENLGtbQMvoGjIFIEMzCRal4rnBAg7D/CSn8MsCvS+FDJJAzoiioJEhZJgAp9n2+1Yznr7H+6eT4YkJ9Mpj60ImcW4i4iHDLn9RydB8dx3QYm3rsX6n4VRrZDsYK6DCGwkwd5n3/INFEpk16fYpP6JtMQpqEMzcOfQGAHXBTEGzuLJ03GYQL9bmV2/7ExDlRf+Uvf1sM2frRtCWmal12pMgtonvSCtR4n1CLUZRdTHDHP1Otwqd+rcdlavnKjUB/OYXQHUJzpNyFoKpQK+2OgrEKpGyIgIBgn2y9QHnTJihZOpEvOKIoHAMGAXHmj21Lym39Mbiow4IF+77xNuewziNVBxr6KD5e+9HzZSBIlUa/AmsDFJFXeyrQakR3FwowTGcADJHcEfhGkXYNGSYo4dh4bxwLM+28xjiqkdn0/3R4UEkvcBrBfn/SzBc1XhKM2VPlJgKSorjDac96V2UnQYXl1/yZPT4DVelgO+soMjexXwYO58VLl5xInQUZI8jc3H2CPnCNb9X05nOxIy4MlecasTqGK6s2az4RjpF2cQP2G28R+7wDPsZDZC/kWtjdoHC7SpdPmqQrUAhMwKVuxCmYTiD9q/O7GHtZvPSN0CAUQN/rymXZNniYLlJDE70bsk6Xxsh4kDOdxe7A2wo7P9F5YvqqRDI6brf79yPCSp4I0jVoO4YnLYtX5nzspR5WB4AKOYtR1ujXbOQpPyYDvfRE3FN5zw0i7reehdi7yV0YDRKRllGCGRk5Yz+Uv1fYl2ZwrnGsqsjgAVo0xEUba8ohjaNMJNwTwZA/wBDWFSCpg1eUH8MYL2zdioxRTqgGQrDZxQyNzyBJPXZF0+oxITJAbj7oNC5JwgDMUJaM5GqlGCWc//KCIrI+aclEe4IA0uzv7cuj6GCdaJONpi13O544vbtIHBF+A+JeDFUQNy61Gki3rtyQ4aUywn6ru314/dkGiP8Iwjo0J/2Txs49ZkwEl4mx+iYUUO55I6pJzU4P+7RRs+DXZkyKUYZqVWrPF4I94m4Wx1tXeE74o9GuX977yvJ/jkdak8+AmoHVjI15V+WwBdARFV2IPirJgVMdsg1Pez2VNHqa7EHWdTkl3XTcyjG9BiueWFvQfXI8aWSkuuRmqi/HUuzqyvLJfNfs0txMqldYYflWB1BS31WkuPJGGwXUCpjiQSktkuBMWwHjSkQxeehqw1Kgz0Trzm7QbtgxiEPDVmWCNCAeCfROTphd1ZNOhzLy6XfJyG6Xgd5MCAZw4xie0Sj5AnY1/akDgNS9YFl3Y06vd6FAsg2gVQJtzG7LVq1OH2frbXNHWH/NY89NNZ4QUSJqL2yEcGADbT38X0bGdukqYlSoliKOcsSTuqhcaemUeYLLoI8+MZor2RxXTRThF1LrHfqf/5LcLAjdl4EERgUysYS2geE+yFdasU91UgUDsc2cSQ1ZoT9+uLOwdgAmifwQqF028INc2IQEDfTmUw3eZxvz7Ud1z3xc1PQfeCvfKsB9jOhRj7rFyb9XcDWLcYj0bByosychMezMLVkFiYcdBBQtvI6K0KRuOZQH2kBsYHJaXTkup8F0eIhO1/GcIwWKpr2mouB7g5TUDJNvORXPXa/mU8bh27TAZYBe2sKx4NSv5OjnHIWD2RuysCzBlUfeNXhDd2jxnHoUlheJ3jBApzURy0fwm2FwwsSU0caQGl0Kv8hopRQE211NnvtLRsmCNrhhpEDoNiZEzD2QdJWKbRRWnaFedXHAELSN0t0bfsCsMf0ktfBoXBoNA+nZN9+pSlmuzspFevmsqqcMllzzvkyXrzoA+Ryo1ePXpdGOoJvhyru+EBRsmOp7MXZ0vNUMUqHLUoKglg1p73sWeZmPc+KAw0pE2zIsFFE5H4192KwDvDxdxEYoDBDNZjbg2bmADTeUKK57IPD4fTYF4c6EnXx/teYMORBDtIhPJneiZny7Nv/zG+YmekIKCoxr6kauE2bZtBLufetNG0BtBY7f+/ImUypMBvdWu/Q7vTMRzw5aQGZWuc1V0HEsItFYMIBnoKGZ0xcarba/TYZq50kCaflFysYjA4EDKHqGdpYWdKYmm+a7TADmW35yfnOYpZYrkpVEtiqF0EujI00aeplNs2k+qyFZNeE3CDPL9P6b4PQ/kataHkVpLSEVGK7EX6rAa7IVNrvZtFvOA6okKvBgMtFDAGZOx88MeBcJ8AR3AgUUeIznAN6tjCUipGDZONm1FjWJp4A3QIzSaIOmZ7DvF/ysYYbM/fFDOV0jntAjRdapxJxL0eThpEhKOjCDDq2ks+3GrwxqIFKLe1WdOzII8XIOPGnwy6LKXVfpSDOTEfaRsGujhpS4hBIsMOqHbl16PJxc4EkaVu9wpEYlF/84NSv5Zum4drMfp9yXbzzAOJqqS4YkI4cBrFrC7bMPiCfgI3nNZAqkk3QOZqR+yyqx+nDQKBBBZ7QKrfGMCL+XpqFaBJU0wpkBdAhbR4hJsmT5aynlvkouoxm/NjD5oe6BzVIO9uktM+/5dEC5P7vZvarmuO/lKXz4sBabVPIATuKTrwbJP8XUkdM6uEctHKXICUJGjaZIWRbZp8czquQYfY6ynBUCfIU+gG6wqSIBmYIm9pZpXdaL121V7q0VjDjmQnXvMe7ysoEZnZL15B0SpxS1jjd83uNIOKZwu5MPzg2NhOx3xMOPYwEn2CUzbSrwAs5OAtrz3GAaUkJOU74XwjaYUmGJdZBS1NJVkGYrToINLKDjxcuIlyfVsKQSG/G4DyiO2SlQvJ0d0Ot1uOG5IFSAkq+PRVMgVMDvOIJMdqjeCFKUGRWBW9wigYvcbU7CQL/7meF2KZAaWl+4y9uhowAX7elogAvItAAxo2+SFxGRsHGEW9BnhlTuWigYxRcnVUBRQHV41LV+Fr5CJYV7sHfeywswx4XMtUx6EkBhR+q8AXXUA8uPJ73Pb49i9KG9fOljvXeyFj9ixgbo6CcbAJ7WHWqKHy/h+YjBwp6VcN7M89FGzQ04qbrQtgrOFybg3gQRTYG5xn73ArkfQWjCJROwy3J38Dx/D7jOa6BBNsitEw1wGq780EEioOeD+ZGp2J66ADiVGMayiHYucMk8nTK2zzT9CnEraAk95kQjy4k0GRElLL5YAKLQErJ5rp1eay9O4Fb6yJGm9U4FaMwPGxtKD6odIIHKoWnhKo1U8KIpFC+MVn59ZXmc7ZTBZfsg6FQ8W10YfTr4u0nYrpHZbZ1jXiLmooF0cOm0+mPnJBXQtepc7n0BqOipNCqI6yyloTeRShNKH04FIo0gcMk0H/xThyN4pPAWjDDkEp3lNNPRNVfpMI44CWRlRgViP64eK0JSRp0WUvCWYumlW/c58Vcz/yMwVcW5oYb9+26TEhwvbxiNg48hl1VI1UXTU//Eta+BMKnGUivctfL5wINDD0giQL1ipt6U7C9cd4+lgqY2lMUZ02Uv6Prs+ZEZer7ZfWBXVghlfOOrClwsoOFKzWEfz6RZu1eCs+K8fLvkts5+BX0gyrFYve0C3qHrn5U/Oh6D/CihmWIrY7HUZRhJaxde+tldu6adYJ+LeXupQw0XExC36RETdNFxcq9glMu4cNQSX9cqR/GQYp+IxUkIcNGWVU7ZtGa6P3XAyodRt0XeS3Tp01AnCh0ZbUh4VrSZeV9RWfSoWyxnY3hzcZ30G/InDq4wxRrEejreBxnhIQbkxenxkaxl+k7eLUQkUR6vKJ2iDFNGX3WmVA1yaOH+mvhBd+sE6vacQzFobwY5BqEAFmejwW5ne7HtVNolOUgJc8CsUxmc/LBi8N5mu9VsIA5HyErnS6zeCz7VLI9+n/hbT6hTokMXTVyXJRKSG2hd2labXTbtmK4fNH3IZBPreSA4FMeVouVN3zG5x9CiGpLw/3pceo4qGqp+rVp+z+7yQ98oEf+nyH4F3+J9IheDBa94Wi63zJbLBCIZm7P0asHGpIJt3PzE3m0S4YIWyXBCVXGikj8MudDPB/6Nm2v4IxJ5gU0ii0guy5SUHqGUYzTP0jIJU5E82RHUXtX4lDdrihBLdP1YaG1AGUC12rQKuIaGvCpMjZC9bWSCYnjDlvpWbkdXMTNeBHLKiuoozMGIvkczmP0aRJSJ8PYnLCVNhKHXBNckH79e8Z8Kc2wUej4sQZoH8qDRGkg86maW/ZQWGNnLcXmq3FlXM6ssR/3P6E/bHMvm6HLrv1yRixit25JsH3/IOr2UV4BWJhxXW5BJ6Xdr07n9kF3ZNAk6/Xpc5MSFmYJ2R7bdL8Kk7q1OU9Elg/tCxJ8giT27wSTySF0GOxg4PbYJdi/Nyia9Nn89CGDulfJemm1aiEr/eleGSN+5MRrVJ4K6lgyTTIW3i9cQ0dAi6FHt0YMbH3wDSAtGLSAccezzxHitt1QdhW36CQgPcA8vIIBh3/JNjf/Obmc2yzpk8edSlS4lVdwgW5vzbYEyFoF4GCBBby1keVNueHAH+evi+H7oOVfS3XuPQSNTXOONAbzJeSb5stwdQHl1ZjrGoE49I8+A9j3t+ahhQj74FCSWpZrj7wRSFJJnnwi1T9HL5qrCFW/JZq6P62XkMWTb+u4lGpKfmmwiJWx178GOG7KbrZGqyWwmuyKWPkNswkZ1q8uptUlviIi+AXh2bOOTOLsrtNkfqbQJeh24reebkINLkjut5r4d9GR/r8CBa9SU0UQhsnZp5cP+RqWCixRm7i4YRFbtZ4EAkhtNa6jHb6gPYQv7MKqkPLRmX3dFsK8XsRLVZ6IEVrCbmNDc8o5mqsogjAQfoC9Bc7R6gfw03m+lQpv6kTfhxscDIX6s0w+fBxtkhjXAXr10UouWCx3C/p/FYwJRS/AXRKkjOb5CLmK4XRe0+xeDDwVkJPZau52bzLEDHCqV0f44pPgKOkYKgTZJ33fmk3Tu8SdxJ02SHM8Fem5SMsWqRyi2F1ynfRJszcFKykdWlNqgDA/L9lKYBmc7Zu/q9ii1FPF47VJkqhirUob53zoiJtVVRVwMR34gV9iqcBaHbRu9kkvqk3yMpfRFG49pKKjIiq7h/VpRwPGTHoY4cg05X5028iHsLvUW/uz+kjPyIEhhcKUwCkJAwbR9pIEGOn8z6svAO8i89sJ3dL5qDWFYbS+HGPRMxYwJItFQN86YESeJQhn2urGiLRffQeLptDl8dAgb+Tp47UQPxWOw17OeChLN1WnzlkPL1T5O+O3Menpn4C3IY5LEepHpnPeZHbvuWfeVtPlkH4LZjPbBrkJT3NoRJzBt86CO0Xq59oQ+8dsm0ymRcmQyn8w71mhmcuEI5byuF+C88VPYly2sEzjlzAQ3vdn/1+Hzguw6qFNNbqenhZGbdiG6RwZaTG7jTA2X9RdXjDN9yj1uQpyO4Lx8KRAcZcbZMafp4wPOd5MdXoFY52V1A8M9hi3sso93+uprE0qYNMjkE22CvK4HuUxqN7oIz5pWuETq1lQAjqlSlqdD2Rnr/ggp/TVkQYjn9lMfYelk2sH5HPdopYo7MHwlV1or9Bxf+QCyLzm92vzG2wjiIjC/ZHEJzeroJl6bdFPTpZho5MV2U86fLQqxNlGIMqCGy+9WYhJ8ob1r0+Whxde9L2PdysETv97O+xVw+VNN1TZSQN5I6l9m5Ip6pLIqLm4a1B1ffH6gHyqT9p82NOjntRWGIofO3bJz5GhkvSWbsXueTAMaJDou99kGLqDlhwBZNEQ4mKPuDvVwSK4WmLluHyhA97pZiVe8g+JxmnJF8IkV/tCs4Jq/HgOoAEGR9tCDsDbDmi3OviUQpG5D8XmKcSAUaFLRXb2lmJTNYdhtYyfjBYZQmN5qT5CNuaD3BVnlkCk7bsMW3AtXkNMMTuW4HjUERSJnVQ0vsBGa1wo3Qh7115XGeTF3NTz8w0440AgU7c3bSXO/KMINaIWXd0oLpoq/0/QJxCQSJ9XnYy1W7TYLBJpHsVWD1ahsA7FjNvRd6mxCiHsm8g6Z0pnzqIpF1dHUtP2ITU5Z1hZHbu+L3BEEStBbL9XYvGfEakv1bmf+bOZGnoiuHEdlBnaChxYKNzB23b8sw8YyT7Ajxfk49eJIAvdbVkdFCe2J0gMefhQ0bIZxhx3fzMIysQNiN8PgOUKxOMur10LduigREDRMZyP4oGWrP1GFY4t6groASsZ421os48wAdnrbovNhLt7ScNULkwZ5AIZJTrbaKYTLjA1oJ3sIuN/aYocm/9uoQHEIlacF1s/TM1fLcPTL38O9fOsjMEIwoPKfvt7opuI9G2Hf/PR4aCLDQ7wNmIdEuXJ/QNL72k5q4NejAldPfe3UVVqzkys8YZ/jYOGOp6c+YzRCrCuq0M11y7TiN6qk7YXRMn/gukxrEimbMQjr3jwRM6dKVZ4RUfWQr8noPXLJq6yh5R3EH1IVOHESst/LItbG2D2vRsZRkAObzvQAAD3mb3/G4NzopI0FAiHfbpq0X72adg6SRj+8OHMShtFxxLZlf/nLgRLbClwl5WmaYSs+yEjkq48tY7Z2bE0N91mJwt+ua0NlRJIDh0HikF4UvSVorFj2YVu9YeS5tfvlVjPSoNu/Zu6dEUfBOT555hahBdN3Sa5Xuj2Rvau1lQNIaC944y0RWj9UiNDskAK1WoL+EfXcC6IbBXFRyVfX/WKXxPAwUyIAGW8ggZ08hcijKTt1YKnUO6QPvcrmDVAb0FCLIXn5id4fD/Jx4tw/gbXs7WF9b2RgXtPhLBG9vF5FEkdHAKrQHZAJC/HWvk7nvzzDzIXZlfFTJoC3JpGgLPBY7SQTjGlUvG577yNutZ1hTfs9/1nkSXK9zzKLRZ3VODeKUovJe0WCq1zVMYxCJMenmNzPIU2S8TA4E7wWmbNkxq9rI2dd6v0VpcAPVMxnDsvWTWFayyqvKZO7Z08a62i/oH2/jxf8rpmfO64in3FLiL1GX8IGtVE9M23yGsIqJbxDTy+LtaMWDaPqkymb5VrQdzOvqldeU0SUi6IirG8UZ3jcpRbwHa1C0Dww9G/SFX3gPvTJQE+kyz+g1BeMILKKO+olcHzctOWgzxYHnOD7dpCRtuZEXACjgqesZMasoPgnuDC4nUviAAxDc5pngjoAITIkvhKwg5d608pdrZcA+qn5TMT6Uo/QzBaOxBCLTJX3Mgk85rMfsnWx86oLxf7p2PX5ONqieTa/qM3tPw4ZXvlAp83NSD8F7+ZgctK1TpoYwtiU2h02HCGioH5tkVCqNVTMH5p00sRy2JU1qyDBP2CII/Dg4WDsIl+zgeX7589srx6YORRQMBfKbodbB743Tl4WLKOEnwWUVBsm94SOlCracU72MSyj068wdpYjyz1FwC2bjQnxnB6Mp/pZ+yyZXtguEaYB+kqhjQ6UUmwSFazOb+rhYjLaoiM+aN9/8KKn0zaCTFpN9eKwWy7/u4EHzO46TdFSNjMfn2iPSJwDPCFHc0I1+vjdAZw5ZjqR/uzi9Zn20oAa5JnLEk/EA3VRWE7J/XrupfFJPtCUuqHPpnlL7ISJtRpSVcB8qsZCm2QEkWoROtCKKxUh3yEcMbWYJwk6DlEBG0bZP6eg06FL3v6RPb7odGuwm7FN8fG4woqtB8e7M5klPpo97GoObNwt+ludTAmxyC5hmcFx+dIvEZKI6igFKHqLH01iY1o7903VzG9QGetyVx5RNmBYUU+zIuSva/yIcECUi4pRmE3VkF2avqulQEUY4yZ/wmNboBzPmAPey3+dSYtBZUjeWWT0pPwCz4Vozxp9xeClIU60qvEFMQCaPvPaA70WlOP9f/ey39macvpGCVa+zfa8gO44wbxpJUlC8GN/pRMTQtzY8Z8/hiNrU+Zq64ZfFGIkdj7m7abcK1EBtws1X4J/hnqvasPvvDSDYWN+QcQVGMqXalkDtTad5rYY0TIR1Eqox3czwPMjKPvF5sFv17Thujr1IZ1Ytl4VX1J0vjXKmLY4lmXipRAro0qVGEcXxEVMMEl54jQMd4J7RjgomU0j1ptjyxY+cLiSyXPfiEcIS2lWDK3ISAy6UZ3Hb5vnPncA94411jcy75ay6B6DSTzK6UTCZR9uDANtPBrvIDgjsfarMiwoax2OlLxaSoYn4iRgkpEGqEkwox5tyI8aKkLlfZ12lO11TxsqRMY89j5JaO55XfPJPDL1LGSnC88Re9Ai+Nu5bZjtwRrvFITUFHPR4ZmxGslQMecgbZO7nHk32qHxYkdvWpup07ojcMCaVrpFAyFZJJbNvBpZfdf39Hdo2kPtT7v0/f8R/B5Nz4f1t9/3zNM/7n6SUHfcWk5dfQFJvcJMgPolGCpOFb/WC0FGWU2asuQyT+rm88ZKZ78Cei/CAh939CH0JYbpZIPtxc2ufXqjS3pHH9lnWK4iJ7OjR/EESpCo2R3MYKyE7rHfhTvWho4cL1QdN4jFTyR6syMwFm124TVDDRXMNveI1Dp/ntwdz8k8kxw7iFSx6+Yx6O+1LzMVrN0BBzziZi9kneZSzgollBnVwBh6oSOPHXrglrOj+QmR/AESrhDpKrWT+8/AiMDxS/5wwRNuGQPLlJ9ovomhJWn8sMLVItQ8N/7IXvtD8kdOoHaw+vBSbFImQsv/OCAIui99E+YSIOMlMvBXkAt+NAZK8wB9Jf8CPtB+TOUOR+z71d/AFXpPBT6+A5FLjxMjLIEoJzrQfquvxEIi+WoUzGR1IzQFNvbYOnxb2PyQ0kGdyXKzW2axQL8lNAXPk6NEjqrRD1oZtKLlFoofrXw0dCNWASHzy+7PSzOUJ3XtaPZsxLDjr+o41fKuKWNmjiZtfkOzItvlV2MDGSheGF0ma04qE3TUEfqJMrXFm7DpK+27DSvCUVf7rbNoljPhha5W7KBqVq0ShUSTbRmuqPtQreVWH4JET5yMhuqMoSd4r/N8sDmeQiQQvi1tcZv7Moc7dT5X5AtCD6kNEGZOzVcNYlpX4AbTsLgSYYliiPyVoniuYYySxsBy5cgb3pD+EK0Gpb0wJg031dPgaL8JZt6sIvzNPEHfVPOjXmaXj4bd4voXzpZ5GApMhILgMbCEWZ2zwgdeQgjNHLbPIt+KqxRwWPLTN6HwZ0Ouijj4UF+Sg0Au8XuIKW0WxlexdrFrDcZJ8Shauat3X0XmHygqgL1nAu2hrJFb4wZXkcS+i36KMyU1yFvYv23bQUJi/3yQpqr/naUOoiEWOxckyq/gq43dFou1DVDaYMZK9tho7+IXXokBCs5GRfOcBK7g3A+jXQ39K4YA8PBRW4m5+yR0ZAxWJncjRVbITvIAPHYRt1EJ3YLiUbqIvoKHtzHKtUy1ddRUQ0AUO41vonZDUOW+mrszw+SW/6Q/IUgNpcXFjkM7F4CSSQ2ExZg85otsMs7kqsQD4OxYeBNDcSpifjMoLb7GEbGWTwasVObmB/bfPcUlq0wYhXCYEDWRW02TP5bBrYsKTGWjnWDDJ1F7zWai0zW/2XsCuvBQjPFcTYaQX3tSXRSm8hsAoDdjArK/OFp6vcWYOE7lizP0Yc+8p16i7/NiXIiiQTp7c7Xus925VEtlKAjUdFhyaiLT7VxDagprMFwix4wZ05u0qj7cDWFd0W9OYHIu3JbJKMXRJ1aYNovugg+QqRN7fNHSi26VSgBpn+JfMuPo3aeqPWik/wI5Rz3BWarPQX4i5+dM0npwVOsX+KsOhC7vDg+OJsz4Q5zlnIeflUWL6QYMbf9WDfLmosLF4Qev3mJiOuHjoor/dMeBpA9iKDkMjYBNbRo414HCxjsHrB4EXNbHzNMDHCLuNBG6Sf+J4MZ/ElVsDSLxjIiGsTPhw8BPjxbfQtskj+dyNMKOOcUYIRBEIqbazz3lmjlRQhplxq673VklMMY6597vu+d89ec/zq7Mi4gQvh87ehYbpOuZEXj5g/Q7S7BFDAAB9DzG35SC853xtWVcnZQoH54jeOqYLR9NDuwxsVthTV7V99n/B7HSbAytbEyVTz/5NhJ8gGIjG0E5j3griULUd5Rg7tQR+90hJgNQKQH2btbSfPcaTOfIexc1db1BxUOhM1vWCpLaYuKr3FdNTt/T3PWCpEUWDKEtzYrjpzlL/wri3MITKsFvtF8QVV/NhVo97aKIBgdliNc10dWdXVDpVtsNn+2UIolrgqdWA4EY8so0YvB4a+aLzMXiMAuOHQrXY0tr+CL10JbvZzgjJJuB1cRkdT7DUqTvnswVUp5kkUSFVtIIFYK05+tQxT6992HHNWVhWxUsD1PkceIrlXuUVRogwmfdhyrf6zzaL8+c0L7GXMZOteAhAVQVwdJh+7nrX7x4LaIIfz2F2v7Dg/uDfz2Fa+4gFm2zHAor8UqimJG3VTJtZEoFXhnDYXvxMJFc6ku2bhbCxzij2z5UNuK0jmp1mnvkVNUfR+SEmj1Lr94Lym75PO7Fs0MIr3GdsWXRXSfgLTVY0FLqba97u1In8NAcY7IC6TjWLigwKEIm43NxTdaVTv9mcKkzuzBkKd8x/xt1p/9BbP7Wyb4bpo1K1gnOpbLvKz58pWl3B55RJ/Z5mRDLPtNQg14jdOEs9+h/V5UVpwrAI8kGbX8KPVPDIMfIqKDjJD9UyDOPhjZ3vFAyecwyq4akUE9mDOtJEK1hpDyi6Ae87sWAClXGTiwPwN7PXWwjxaR79ArHRIPeYKTunVW24sPr/3HPz2IwH8oKH4OlWEmt4BLM6W5g4kMcYbLwj2usodD1088stZA7VOsUSpEVl4w7NMb1EUHMRxAxLF0CIV+0L3iZb+ekB1vSDSFjAZ3hfLJf7gFaXrOKn+mhR+rWw/eTXIcAgl4HvFuBg1LOmOAwJH3eoVEjjwheKA4icbrQCmvAtpQ0mXG0agYp5mj4Rb6mdQ+RV4QBPbxMqh9C7o8nP0Wko2ocnCHeRGhN1XVyT2b9ACsL+6ylUy+yC3QEnaKRIJK91YtaoSrcWZMMwxuM0E9J68Z+YyjA0g8p1PfHAAIROy6Sa04VXOuT6A351FOWhKfTGsFJ3RTJGWYPoLk5FVK4OaYR9hkJvezwF9vQN1126r6isMGXWTqFW+3HL3I/jurlIdDWIVvYY+s6yq7lrFSPAGRdnU7PVwY/SvWbZGpXzy3BQ2LmAJlrONUsZs4oGkly0V267xbD5KMY8woNNsmWG1VVgLCra8aQBBcI4DP2BlNwxhiCtHlaz6OWFoCW0vMR3ErrG7JyMjTSCnvRcsEHgmPnwA6iNpJ2DrFb4gLlhKJyZGaWkA97H6FFdwEcLT6DRQQL++fOkVC4cYGW1TG/3iK5dShRSuiBulmihqgjR45Vi03o2RbQbP3sxt90VxQ6vzdlGfkXmmKmjOi080JSHkLntjvsBJnv7gKscOaTOkEaRQqAnCA4HWtB4XnMtOhpRmH2FH8tTXrIjAGNWEmudQLCkcVlGTQ965Kh0H6ixXbgImQP6b42B49sO5C8pc7iRlgyvSYvcnH9FgQ3azLbQG2cUW96SDojTQStxkOJyOuDGTHAnnWkz29aEwN9FT8EJ4yhXOg+jLTrCPKeEoJ9a7lDXOjEr8AgX4BmnMQ668oW0zYPyQiVMPxKRHtpfnEEyaKhdzNVThlxxDQNdrHeZiUFb6NoY2KwvSb7BnRcpJy+/g/zAYx3fYSN5QEaVD2Y1VsNWxB0BSO12MRsRY8JLfAezRMz5lURuLUnG1ToKk6Q30FughqWN6gBNcFxP/nY/iv+iaUQOa+2Nuym46wtI/DvSfzSp1jEi4SdYBE7YhTiVV5cX9gwboVDMVgZp5YBQlHOQvaDNfcCoCJuYhf5kz5kwiIKPjzgpcRJHPbOhJajeoeRL53cuMahhV8Z7IRr6M4hW0JzT7mzaMUzQpm866zwM7Cs07fJYXuWvjAMkbe5O6V4bu71sOG6JQ4oL8zIeXHheFVavzxmlIyBkgc9IZlEDplMPr8xlcyss4pVUdwK1e7CK2kTsSdq7g5SHRAl3pYUB9Ko4fsh4qleOyJv1z3KFSTSvwEcRO/Ew8ozEDYZSqpfoVW9uhJfYrNAXR0Z3VmeoAD+rVWtwP/13sE/3ICX3HhDG3CMc476dEEC0K3umSAD4j+ZQLVdFOsWL2C1TH5+4KiSWH+lMibo+B55hR3Gq40G1n25sGcN0mEcoU2wN9FCVyQLBhYOu9aHVLWjEKx2JIUZi5ySoHUAI9b8hGzaLMxCZDMLhv8MkcpTqEwz9KFDpCpqQhVmsGQN8m24wyB82FAKNmjgfKRsXRmsSESovAwXjBIoMKSG51p6Um8b3i7GISs7kjTq/PZoioCfJzfKdJTN0Q45kQEQuh9H88M3yEs3DbtRTKALraM0YC8laiMiOOe6ADmTcCiREeAWZelBaEXRaSuj2lx0xHaRYqF65O0Lo5OCFU18A8cMDE4MLYm9w2QSr9NgQAIcRxZsNpA7UJR0e71JL+VU+ISWFk5I97lra8uGg7GlQYhGd4Gc6rxsLFRiIeGO4abP4S4ekQ1fiqDCy87GZHd52fn5aaDGuvOmIofrzpVwMvtbreZ/855OaXTRcNiNE0wzGZSxbjg26v8ko8L537v/XCCWP2MFaArJpvnkep0pA+O86MWjRAZPQRfznZiSIaTppy6m3p6HrNSsY7fDtz7Cl4V/DJAjQDoyiL2uwf1UHVd2AIrzBUSlJaTj4k6NL97a/GqhWKU9RUmjnYKpm2r+JYUcrkCuZKvcYvrg8pDoUKQywY9GDWg03DUFSirlUXBS5SWn/KAntnf0IdHGL/7mwXqDG+LZYjbEdQmqUqq4y54TNmWUP7IgcAw5816YBzwiNIJiE9M4lPCzeI/FGBeYy3p6IAmH4AjXXmvQ4Iy0Y82NTobcAggT2Cdqz6Mx4TdGoq9fn2etrWKUNFyatAHydQTVUQ2S5OWVUlugcNvoUrlA8cJJz9MqOa/W3iVno4zDHfE7zhoY5f5lRTVZDhrQbR8LS4eRLz8iPMyBL6o4PiLlp89FjdokQLaSBmKHUwWp0na5fE3v9zny2YcDXG/jfI9sctulHRbdkI5a4GOPJx4oAJQzVZ/yYAado8KNZUdEFs9ZPiBsausotXMNebEgr0dyopuqfScFJ3ODNPHgclACPdccwv0YJGQdsN2lhoV4HVGBxcEUeUX/alr4nqpcc1CCR3vR7g40zteQg/JvWmFlUE4mAiTpHlYGrB7w+U2KdSwQz2QJKBe/5eiixWipmfP15AFWrK8Sh1GBBYLgzki1wTMhGQmagXqJ2+FuqJ8f0XzXCVJFHQdMAw8xco11HhM347alrAu+wmX3pDFABOvkC+WPX0Uhg1Z5MVHKNROxaR84YV3s12UcM+70cJ460SzEaKLyh472vOMD3XnaK7zxZcXlWqenEvcjmgGNR2OKbI1s8U+iwiW+HotHalp3e1MGDy6BMVIvajnAzkFHbeVsgjmJUkrP9OAwnEHYXVBqYx3q7LvXjoVR0mY8h+ZaOnh053pdsGkmbqhyryN01eVHySr+CkDYkSMeZ1xjPNVM+gVLTDKu2VGsMUJqWO4TwPDP0VOg2/8ITbAUaMGb4LjL7L+Pi11lEVMXTYIlAZ/QHmTENjyx3kDkBdfcvvQt6tKk6jYFM4EG5UXDTaF5+1ZjRz6W7MdJPC+wTkbDUim4p5QQH3b9kGk2Bkilyeur8Bc20wm5uJSBO95GfYDI1EZipoRaH7uVveneqz43tlTZGRQ4a7CNmMHgXyOQQOL6WQkgMUTQDT8vh21aSdz7ERiZT1jK9F+v6wgFvuEmGngSvIUR2CJkc5tx1QygfZnAruONobB1idCLB1FCfO7N1ZdRocT8/Wye+EnDiO9pzqIpnLDl4bkaRKW+ekBVwHn46Shw1X0tclt/0ROijuUB4kIInrVJU4buWf4YITJtjOJ6iKdr1u+flgQeFH70GxKjhdgt/MrwfB4K/sXczQ+9zYcrD4dhY6qZhZ010rrxggWA8JaZyg2pYij8ieYEg1aZJkZK9O1Re7sB0iouf60rK0Gd+AYlp7soqCBCDGwfKeUQhCBn0E0o0GS6PdmjLi0TtCYZeqazqwN+yNINIA8Lk3iPDnWUiIPLGNcHmZDxfeK0iAdxm/T7LnN+gemRL61hHIc0NCAZaiYJR+OHnLWSe8sLrK905B5eEJHNlWq4RmEXIaFTmo49f8w61+NwfEUyuJAwVqZCLFcyHBKAcIVj3sNzfEOXzVKIndxHw+AR93owhbCxUZf6Gs8cz6/1VdrFEPrv330+9s6BtMVPJ3zl/Uf9rUi0Z/opexfdL3ykF76e999GPfVv8fJv/Y/+/5hEMon1tqNFyVRevV9y9/uIvsG3dbB8GRRrgaEXfhx+2xeOFt+cEn3RZanNxdEe2+B6MHpNbrRE53PlDifPvFcp4kO78ILR0T4xyW/WGPyBsqGdoA7zJJCu1TKbGfhnqgnRbxbB2B3UZoeQ2bz2sTVnUwokTcTU21RxN1PYPS3Sar7T0eRIsyCNowr9amwoMU/od9s2APtiKNL6ENOlyKADstAEWKA+sdKDhrJ6BOhRJmZ+QJbAaZ3/5Fq0/lumCgEzGEbu3yi0Y4I4EgVAjqxh4HbuQn0GrRhOWyAfsglQJAVL1y/6yezS2k8RE2MstJLh92NOB3GCYgFXznF4d25qiP4ZCyI4RYGesut6FXK6GwPpKK8WHEkhYui0AyEmr5Ml3uBFtPFdnioI8RiCooa7Z1G1WuyIi3nSNglutc+xY8BkeW3JJXPK6jd2VIMpaSxpVtFq+R+ySK9J6WG5Qvt+C+QH1hyYUOVK7857nFmyDBYgZ/o+AnibzNVqyYCJQvyDXDTK+iXdkA71bY7TL3bvuLxLBQ8kbTvTEY9aqkQ3+MiLWbEgjLzOH+lXgco1ERgzd80rDCymlpaRQbOYnKG/ODoFl46lzT0cjM5FYVvv0qLUbD5lyJtMUaC1pFlTkNONx6lliaX9o0i/1vws5bNKn5OuENQEKmLlcP4o2ZmJjD4zzd3Fk32uQ4uRWkPSUqb4LBe3EXHdORNB2BWsws5daRnMfNVX7isPSb1hMQdAJi1/qmDMfRUlCU74pmnzjbXfL8PVG8NsW6IQM2Ne23iCPIpryJjYbVnm5hCvKpMa7HLViNiNc+xTfDIaKm3jctViD8A1M9YPJNk003VVr4Zo2MuGW8vil8SLaGpPXqG7I4DLdtl8a4Rbx1Lt4w5Huqaa1XzZBtj208EJVGcmKYEuaeN27zT9EE6a09JerXdEbpaNgNqYJdhP1NdqiPKsbDRUi86XvvNC7rME5mrSQtrzAZVndtSjCMqd8BmaeGR4l4YFULGRBeXIV9Y4yxLFdyoUNpiy2IhePSWzBofYPP0eIa2q5JP4j9G8at/AqoSsLAUuRXtvgsqX/zYwsE+of6oSDbUOo4RMJw+DOUTJq+hnqwKim9Yy/napyZNTc2rCq6V9jHtJbxGPDwlzWj/Sk3zF/BHOlT/fSjSq7FqlPI1q6J+ru8Aku008SFINXZfOfnZNOvGPMtEmn2gLPt+H4QLA+/SYe4j398auzhKIp2Pok3mPC5q1IN1HgR+mnEfc4NeeHYwd2/kpszR3cBn7ni9NbIqhtSWFW8xbUJuUPVOeeXu3j0IGZmFNiwaNZ6rH4/zQ2ODz6tFxRLsUYZu1bfd1uIvfQDt4YD/efKYv8VF8bHGDgK22w2Wqwpi43vNCOXFJZCGMqWiPbL8mil6tsmOTXAWCyMCw73e2rADZj2IK6rqksM3EXF2cbLb4vjB14wa/yXK5vwU+05MzERJ5nXsXsW21o7M+gO0js2OyKciP5uF2iXyb2DiptwQeHeqygkrNsqVCSlldxBMpwHi1vfc8RKpP/4L3Lmpq6DZcvhDDfxTCE3splacTcOtXdK2g303dIWBVe2wD/Gvja1cClFQ67gw0t1ZUttsUgQ1Veky8oOpS6ksYEc4bqseCbZy766SvL3FodmnahlWJRgVCNjPxhL/fk2wyvlKhITH/VQCipOI0dNcRa5B1M5HmOBjTLeZQJy237e2mobwmDyJNHePhdDmiknvLKaDbShL+Is1XTCJuLQd2wmdJL7+mKvs294whXQD+vtd88KKk0DXP8B1Xu9J+xo69VOuFgexgTrcvI6SyltuLix9OPuE6/iRJYoBMEXxU4shQMf4Fjqwf1PtnJ/wWSZd29rhZjRmTGgiGTAUQqRz+nCdjeMfYhsBD5Lv60KILWEvNEHfmsDs2L0A252351eUoYxAysVaCJVLdH9QFWAmqJDCODUcdoo12+gd6bW2boY0pBVHWL6LQDK5bYWh1V8vFvi0cRpfwv7cJiMX3AZNJuTddHehTIdU0YQ/sQ1dLoF2xQPcCuHKiuCWOY30DHe1OwcClLAhqAKyqlnIbH/8u9ScJpcS4kgp6HKDUdiOgRaRGSiUCRBjzI5gSksMZKqy7Sd51aeg0tgJ+x0TH9YH2Mgsap9N7ENZdEB0bey2DMTrBA1hn56SErNHf3tKtqyL9b6yXEP97/rc+jgD2N1LNUH6RM9AzP3kSipr06RkKOolR7HO768jjWiH1X92jA7dkg7gcNcjqsZCgfqWw0tPXdLg20cF6vnQypg7gLtkazrHAodyYfENPQZsdfnjMZiNu4nJO97D1/sQE+3vNFzrSDOKw+keLECYf7RJwVHeP/j79833oZ0egonYB2FlFE5qj02B/LVOMJQlsB8uNg3Leg4qtZwntsOSNidR0abbZmAK4sCzvt8Yiuz2yrNCJoH5O8XvX/vLeR/BBYTWj0sOPYM/jyxRd5+/JziKAABaPcw/34UA3aj/gLZxZgRCWN6m4m3demanNgsx0P237/Q+Ew5VYnJPkyCY0cIVHoFn2Ay/e7U4P19APbPFXEHX94N6KhEMPG7iwB3+I+O1jd5n6VSgHegxgaSawO6iQCYFgDsPSMsNOcUj4q3sF6KzGaH/0u5PQoAj/8zq6Uc9MoNrGqhYeb2jQo0WlGlXjxtanZLS24/OIN5Gx/2g684BPDQpwlqnkFcxpmP/osnOXrFuu4PqifouQH0eF5qCkvITQbJw/Zvy5mAHWC9oU+cTiYhJmSfKsCyt1cGVxisKu+NymEQIAyaCgud/V09qT3nk/9s/SWsYtha7yNpzBIMM40rCSGaJ9u6lEkl00vXBiEt7p9P5IBCiavynEOv7FgLqPdeqxRiCwuFVMolSIUBcoyfUC2e2FJSAUgYdVGFf0b0Kn2EZlK97yyxrT2MVgvtRikfdaAW8RwEEfN+B7/eK8bBdp7URpbqn1xcrC6d2UjdsKbzCjBFqkKkoZt7Mrhg6YagE7spkqj0jOrWM+UGQ0MUlG2evP1uE1p2xSv4dMK0dna6ENcNUF+xkaJ7B764NdxLCpuvhblltVRAf7vK5qPttJ/9RYFUUSGcLdibnz6mf7WkPO3MkUUhR2mAOuGv8IWw5XG1ZvoVMnjSAZe6T7WYA99GENxoHkMiKxHlCuK5Gd0INrISImHQrQmv6F4mqU/TTQ8nHMDzCRivKySQ8dqkpQgnUMnwIkaAuc6/FGq1hw3b2Sba398BhUwUZSAIO8XZvnuLdY2n6hOXws+gq9BHUKcKFA6kz6FDnpxLPICa3qGhnc97bo1FT/XJk48LrkHJ2CAtBv0RtN97N21plfpXHvZ8gMJb7Zc4cfI6MbPwsW7AilCSXMFIEUEmir8XLEklA0ztYbGpTTGqttp5hpFTTIqUyaAIqvMT9A/x+Ji5ejA4Bhxb/cl1pUdOD6epd3yilIdO6j297xInoiBPuEDW2/UfslDyhGkQs7Wy253bVnlT+SWg89zYIK/9KXFl5fe+jow2rd5FXv8zDPrmfMXiUPt9QBO/iK4QGbX5j/7Rx1c1vzsY8ONbP3lVIaPrhL4+1QrECTN3nyKavGG0gBBtHvTKhGoBHgMXHStFowN+HKrPriYu+OZ05Frn8okQrPaaxoKP1ULCS/cmKFN3gcH7HQlVjraCeQmtjg1pSQxeuqXiSKgLpxc/1OiZsU4+n4lz4hpahGyWBURLi4642n1gn9qz9bIsaCeEPJ0uJmenMWp2tJmIwLQ6VSgDYErOeBCfSj9P4G/vI7oIF+l/n5fp956QgxGvur77ynawAu3G9MdFbJbu49NZnWnnFcQHjxRuhUYvg1U/e84N4JTecciDAKb/KYIFXzloyuE1eYXf54MmhjTq7B/yBToDzzpx3tJCTo3HCmVPYfmtBRe3mPYEE/6RlTIxbf4fSOcaKFGk4gbaUWe44hVk9SZzhW80yfW5QWBHxmtUzvMhfVQli4gZTktIOZd9mjJ5hsbmzttaHQB29Am3dZkmx3g/qvYocyhZ2PXAWsNQiIaf+Q8W/MWPIK7/TjvCx5q2XRp4lVWydMc2wIQkhadDB0xsnw/kSEyGjLKjI4coVIwtubTF3E7MJ6LS6UOsJKj82XVAVPJJcepfewbzE91ivXZvOvYfsmMevwtPpfMzGmC7WJlyW2j0jh7AF1JLmwEJSKYwIvu6DHc3YnyLH9ZdIBnQ+nOVDRiP+REpqv++typYHIvoJyICGA40d8bR7HR2k7do6UQTHF4oriYeIQbxKe4Th6+/l1BjUtS9hqORh3MbgvYrStXTfSwaBOmAVQZzpYNqsAmQyjY56MUqty3c/xH6GuhNvNaG9vGbG6cPtBM8UA3e8r51D0AR9kozKuGGSMgLz3nAHxDNnc7GTwpLj7/6HeWp1iksDeTjwCLpxejuMtpMnGJgsiku1sOACwQ9ukzESiDRN77YNESxR5LphOlcASXA5uIts1LnBIcn1J7BLWs49DMALSnuz95gdOrTZr0u1SeYHinno/pE58xYoXbVO/S+FEMMs5qyWkMnp8Q3ClyTlZP52Y9nq7b8fITPuVXUk9ohG5EFHw4gAEcjFxfKb3xuAsEjx2z1wxNbSZMcgS9GKyW3R6KwJONgtA64LTyxWm8Bvudp0M1FdJPEGopM4Fvg7G/hsptkhCfHFegv4ENwxPeXmYhxwZy7js+BeM27t9ODBMynVCLJ7RWcBMteZJtvjOYHb5lOnCLYWNEMKC59BA7covu1cANa2PXL05iGdufOzkgFqqHBOrgQVUmLEc+Mkz4Rq8O6WkNr7atNkH4M8d+SD1t/tSzt3oFql+neVs+AwEI5JaBJaxARtY2Z4mKoUqxds4UpZ0sv3zIbNoo0J4fihldQTX3XNcuNcZmcrB5LTWMdzeRuAtBk3cZHYQF6gTi3PNuDJ0nmR+4LPLoHvxQIxRgJ9iNNXqf2SYJhcvCtJiVWo85TsyFOuq7EyBPJrAdhEgE0cTq16FQXhYPJFqSfiVn0IQnPOy0LbU4BeG94QjdYNB0CiQ3QaxQqD2ebSMiNjaVaw8WaM4Z5WnzcVDsr4eGweSLa2DE3BWViaxhZFIcSTjgxNCAfelg+hznVOYoe5VqTYs1g7WtfTm3e4/WduC6p+qqAM8H4ZyrJCGpewThTDPe6H7CzX/zQ8Tm+r65HeZn+MsmxUciEWPlAVaK/VBaQBWfoG/aRL/jSZIQfep/89GjasWmbaWzeEZ2R1FOjvyJT37O9B8046SRSKVEnXWlBqbkb5XCS3qFeuE9xb9+frEknxWB5h1D/hruz2iVDEAS7+qkEz5Ot5agHJc7WCdY94Ws61sURcX5nG8UELGBAHZ3i+3VulAyT0nKNNz4K2LBHBWJcTBX1wzf+//u/j/9+//v87+9/l9Lbh/L/uyNYiTsWV2LwsjaA6MxTuzFMqmxW8Jw/+IppdX8t/Clgi1rI1SN0UC/r6tX/4lUc2VV1OQReSeCsjUpKZchw4XUcjHfw6ryCV3R8s6VXm67vp4n+lcPV9gJwmbKQEsmrJi9c2vkwrm8HFbVYNTaRGq8D91t9n5+U+aD/hNtN3HjC/nC/vUoGFSCkXP+NlRcmLUqLbiUBl4LYf1U/CCvwtd3ryCH8gUmGITAxiH1O5rnGTz7y1LuFjmnFGQ1UWuM7HwfXtWl2fPFKklYwNUpF2IL/TmaRETjQiM5SJacI+3Gv5MBU8lP5Io6gWkawpyzNEVGqOdx4YlO1dCvjbWFZWbCmeiFKPSlMKtKcMFLs/KQxtgAHi7NZNCQ32bBAW2mbHflVZ8wXKi1JKVHkW20bnYnl3dKWJeWJOiX3oKPBD6Zbi0ZvSIuWktUHB8qDR8DMMh1ZfkBL9FS9x5r0hBGLJ8pUCJv3NYH+Ae8p40mZWd5m5fhobFjQeQvqTT4VKWIYfRL0tfaXKiVl75hHReuTJEcqVlug+eOIIc4bdIydtn2K0iNZPsYWQvQio2qbO3OqAlPHDDOB7DfjGEfVF51FqqNacd6QmgFKJpMfLp5DHTv4wXlONKVXF9zTJpDV4m1sYZqJPhotcsliZM8yksKkCkzpiXt+EcRQvSQqmBS9WdWkxMTJXPSw94jqI3varCjQxTazjlMH8jTS8ilaW8014/vwA/LNa+YiFoyyx3s/KswP3O8QW1jtq45yTM/DX9a8M4voTVaO2ebvw1EooDw/yg6Y1faY+WwrdVs5Yt0hQ5EwRfYXSFxray1YvSM+kYmlpLG2/9mm1MfmbKHXr44Ih8nVKb1M537ZANUkCtdsPZ80JVKVKabVHCadaLXg+IV8i5GSwpZti0h6diTaKs9sdpUKEpd7jDUpYmHtiX33SKiO3tuydkaxA7pEc9XIQEOfWJlszj5YpL5bKeQyT7aZSBOamvSHl8xsWvgo26IP/bqk+0EJUz+gkkcvlUlyPp2kdKFtt7y5aCdks9ZJJcFp5ZWeaWKgtnXMN3ORwGLBE0PtkEIek5FY2aVssUZHtsWIvnljMVJtuVIjpZup/5VL1yPOHWWHkOMc6YySWMckczD5jUj2mlLVquFaMU8leGVaqeXis+aRRL8zm4WuBk6cyWfGMxgtr8useQEx7k/PvRoZyd9nde1GUCV84gMX8Ogu/BWezYPSR27llzQnA97oo0pYyxobYUJfsj+ysTm9zJ+S4pk0TGo9VTG0KjqYhTmALfoDZVKla2b5yhv241PxFaLJs3i05K0AAIdcGxCJZmT3ZdT7CliR7q+kur7WdQjygYtOWRL9B8E4s4LI8KpAj7bE0dg7DLOaX+MGeAi0hMMSSWZEz+RudXbZCsGYS0QqiXjH9XQbd8sCB+nIVTq7/T/FDS+zWY9q7Z2fdq1tdLb6v3hKKVDAw5gjj6o9r1wHFROdHc18MJp4SJ2Ucvu+iQ9EgkekW8VCM+psM6y+/2SBy8tNN4a3L1MzP+OLsyvESo5gS7IQOnIqMmviJBVc6zbVG1n8eXiA3j46kmvvtJlewwNDrxk4SbJOtP/TV/lIVK9ueShNbbMHfwnLTLLhbZuO79ec5XvfgRwLFK+w1r5ZWW15rVFZrE+wKqNRv5KqsLNfpGgnoUU6Y71NxEmN7MyqwqAQqoIULOw/LbuUB2+uE75gJt+kq1qY4LoxV+qR/zalupea3D5+WMeaRIn0sAI6DDWDh158fqUb4YhAxhREbUN0qyyJYkBU4V2KARXDT65gW3gRsiv7xSPYEKLwzgriWcWgPr0sbZnv7m1XHNFW6xPdGNZUdxFiUYlmXNjDVWuu7LCkX/nVkrXaJhiYktBISC2xgBXQnNEP+cptWl1eG62a7CPXrnrkTQ5BQASbEqUZWMDiZUisKyHDeLFOaJILUo5f6iDt4ZO8MlqaKLto0AmTHVVbkGuyPa1R/ywZsWRoRDoRdNMMHwYTsklMVnlAd2S0282bgMI8fiJpDh69OSL6K3qbo20KfpNMurnYGQSr/stFqZ7hYsxKlLnKAKhsmB8AIpEQ4bd/NrTLTXefsE6ChRmKWjXKVgpGoPs8GAicgKVw4K0qgDgy1A6hFq1WRat3fHF+FkU+b6H4NWpOU3KXTxrIb2qSHAb+qhm8hiSROi/9ofapjxhyKxxntPpge6KL5Z4+WBMYkAcE6+0Hd3Yh2zBsK2MV3iW0Y6cvOCroXlRb2MMJtdWx+3dkFzGh2Pe3DZ9QpSqpaR/rE1ImOrHqYYyccpiLC22amJIjRWVAherTfpQLmo6/K2pna85GrDuQPlH1Tsar8isAJbXLafSwOof4gg9RkAGm/oYpBQQiPUoyDk2BCQ1k+KILq48ErFo4WSRhHLq/y7mgw3+L85PpP6xWr6cgp9sOjYjKagOrxF148uhuaWtjet953fh1IQiEzgC+d2IgBCcUZqgTAICm2bR8oCjDLBsmg+ThyhfD+zBalsKBY1Ce54Y/t9cwfbLu9SFwEgphfopNA3yNxgyDafUM3mYTovZNgPGdd4ZFFOj1vtfFW3u7N+iHEN1HkeesDMXKPyoCDCGVMo4GCCD6PBhQ3dRZIHy0Y/3MaE5zU9mTCrwwnZojtE+qNpMSkJSpmGe0EzLyFelMJqhfFQ7a50uXxZ8pCc2wxtAKWgHoeamR2O7R+bq7IbPYItO0esdRgoTaY38hZLJ5y02oIVwoPokGIzxAMDuanQ1vn2WDQ00Rh6o5QOaCRu99fwDbQcN0XAuqkFpxT/cfz3slGRVokrNU0iqiMAJFEbKScZdmSkTUznC0U+MfwFOGdLgsewRyPKwBZYSmy6U325iUhBQNxbAC3FLKDV9VSOuQpOOukJ/GAmu/tyEbX9DgEp6dv1zoU0IqzpG6gssSjIYRVPGgU1QAQYRgIT8gEV0EXr1sqeh2I6rXjtmoCYyEDCe/PkFEi/Q48FuT29p557iN+LCwk5CK/CZ2WdAdfQZh2Z9QGrzPLSNRj5igUWzl9Vi0rCqH8G1Kp4QMLkuwMCAypdviDXyOIk0AHTM8HBYKh3b0/F+DxoNj4ZdoZfCpQVdnZarqoMaHWnMLNVcyevytGsrXQEoIbubqWYNo7NRHzdc0zvT21fWVirj7g36iy6pxogfvgHp1xH1Turbz8QyyHnXeBJicpYUctbzApwzZ1HT+FPEXMAgUZetgeGMwt4G+DHiDT2Lu+PT21fjJCAfV16a/Wu1PqOkUHSTKYhWW6PhhHUlNtWzFnA7MbY+r64vkwdpfNB2JfWgWXAvkzd42K4lN9x7Wrg4kIKgXCb4mcW595MCPJ/cTfPAMQMFWwnqwde4w8HZYJFpQwcSMhjVz4B8p6ncSCN1X4klxoIH4BN2J6taBMj6lHkAOs8JJAmXq5xsQtrPIPIIp/HG6i21xMGcFgqDXSRF0xQg14d2uy6HgKE13LSvQe52oShF5Jx1R6avyL4thhXQZHfC94oZzuPUBKFYf1VvDaxIrtV6dNGSx7DO0i1p6CzBkuAmEqyWceQY7F9+U0ObYDzoa1iKao/cOD/v6Q9gHrrr1uCeOk8fST9MG23Ul0KmM3r+Wn6Hi6WAcL7gEeaykicvgjzkjSwFsAXIR81Zx4QJ6oosVyJkCcT+4xAldCcihqvTf94HHUPXYp3REIaR4dhpQF6+FK1H0i9i7Pvh8owu3lO4PT1iuqu+DkL2Bj9+kdfGAg2TXw03iNHyobxofLE2ibjsYDPgeEQlRMR7afXbSGQcnPjI2D+sdtmuQ771dbASUsDndU7t58jrrNGRzISvwioAlHs5FA+cBE5Ccznkd8NMV6BR6ksnKLPZnMUawRDU1MZ/ib3xCdkTblHKu4blNiylH5n213yM0zubEie0o4JhzcfAy3H5qh2l17uLooBNLaO+gzonTH2uF8PQu9EyH+pjGsACTMy4cHzsPdymUSXYJOMP3yTkXqvO/lpvt0cX5ekDEu9PUfBeZODkFuAjXCaGdi6ew4qxJ8PmFfwmPpkgQjQlWqomFY6UkjmcnAtJG75EVR+NpzGpP1Ef5qUUbfowrC3zcSLX3BxgWEgEx/v9cP8H8u1Mvt9/rMDYf6sjwU1xSOPBgzFEeJLMRVFtKo5QHsUYT8ZRLCah27599EuqoC9PYjYO6aoAMHB8X1OHwEAYouHfHB3nyb2B+SnZxM/vw/bCtORjLMSy5aZoEpvgdGvlJfNPFUu/p7Z4VVK1hiI0/UTuB3ZPq4ohEbm7Mntgc1evEtknaosgZSwnDC2BdMmibpeg48X8Ixl+/8+xXdbshQXUPPvx8jT3fkELivHSmqbhblfNFShWAyQnJ3WBU6SMYSIpTDmHjdLVAdlADdz9gCplZw6mTiHqDwIsxbm9ErGusiVpg2w8Q3khKV/R9Oj8PFeF43hmW/nSd99nZzhyjCX3QOZkkB6BsH4H866WGyv9E0hVAzPYah2tkRfQZMmP2rinfOeQalge0ovhduBjJs9a1GBwReerceify49ctOh5/65ATYuMsAkVltmvTLBk4oHpdl6i+p8DoNj4Fb2vhdFYer2JSEilEwPd5n5zNoGBXEjreg/wh2NFnNRaIUHSOXa4eJRwygZoX6vnWnqVdCRT1ARxeFrNBJ+tsdooMwqnYhE7zIxnD8pZH+P0Nu1wWxCPTADfNWmqx626IBJJq6NeapcGeOmbtXvl0TeWG0Y7OGGV4+EHTtNBIT5Wd0Bujl7inXgZgfXTM5efD3qDTJ54O9v3Bkv+tdIRlq1kXcVD0BEMirmFxglNPt5pedb1AnxuCYMChUykwsTIWqT23XDpvTiKEru1cTcEMeniB+HQDehxPXNmkotFdwUPnilB/u4Nx5Xc6l8J9jH1EgKZUUt8t8cyoZleDBEt8oibDmJRAoMKJ5Oe9CSWS5ZMEJvacsGVdXDWjp/Ype5x0p9PXB2PAwt2LRD3d+ftNgpuyvxlP8pB84oB1i73vAVpwyrmXW72hfW6Dzn9Jkj4++0VQ4d0KSx1AsDA4OtXXDo63/w+GD+zC7w5SJaxsmnlYRQ4dgdjA7tTl2KNLnpJ+mvkoDxtt1a4oPaX3EVqj96o9sRKBQqU7ZOiupeAIyLMD+Y3YwHx30XWHB5CQiw7q3mj1EDlP2eBsZbz79ayUMbyHQ7s8gu4Lgip1LiGJj7NQj905/+rgUYKAA5qdrlHKIknWmqfuR+PB8RdBkDg/NgnlT89G72h2NvySnj7UyBwD+mi/IWs1xWbxuVwUIVXun5cMqBtFbrccI+DILjsVQg6eeq0itiRfedn89CvyFtpkxaauEvSANuZmB1p8FGPbU94J9medwsZ9HkUYjmI7OH5HuxendLbxTaYrPuIfE2ffXFKhoNBUp33HsFAXmCV/Vxpq5AYgFoRr5Ay93ZLRlgaIPjhZjXZZChT+aE5iWAXMX0oSFQEtwjiuhQQItTQX5IYrKfKB+queTNplR1Hoflo5/I6aPPmACwQCE2jTOYo5Dz1cs7Sod0KTG/3kEDGk3kUaUCON19xSJCab3kNpWZhSWkO8l+SpW70Wn3g0ciOIJO5JXma6dbos6jyisuxXwUUhj2+1uGhcvuliKtWwsUTw4gi1c/diEEpZHoKoxTBeMDmhPhKTx7TXWRakV8imJR355DcIHkR9IREHxohP4TbyR5LtFU24umRPRmEYHbpe1LghyxPx7YgUHjNbbQFRQhh4KeU1EabXx8FS3JAxp2rwRDoeWkJgWRUSKw6gGP5U2PuO9V4ZuiKXGGzFQuRuf+tkSSsbBtRJKhCi3ENuLlXhPbjTKD4djXVnfXFds6Zb+1XiUrRfyayGxJq1+SYBEfbKlgjiSmk0orgTqzSS+DZ5rTqsJbttiNtp+KMqGE2AHGFw6jQqM5vD6vMptmXV9OAjq49Uf/Lx9Opam+Hn5O9p8qoBBAQixzQZ4eNVkO9sPzJAMyR1y4/RCQQ1s0pV5KAU5sKLw3tkcFbI/JqrjCsK4Mw+W8aod4lioYuawUiCyVWBE/qPaFi5bnkgpfu/ae47174rI1fqQoTbW0HrU6FAejq7ByM0V4zkZTg02/YJK2N7hUQRCeZ4BIgSEqgD8XsjzG6LIsSbuHoIdz/LhFzbNn1clci1NHWJ0/6/O8HJMdIpEZbqi1RrrFfoo/rI/7ufm2MPG5lUI0IYJ4MAiHRTSOFJ2oTverFHYXThkYFIoyFx6rMYFgaOKM4xNWdlOnIcKb/suptptgTOTdVIf4YgdaAjJnIAm4qNNHNQqqAzvi53GkyRCEoseUBrHohZsjUbkR8gfKtc/+Oa72lwxJ8Mq6HDfDATbfbJhzeIuFQJSiw1uZprHlzUf90WgqG76zO0eCB1WdPv1IT6sNxxh91GEL2YpgC97ikFHyoaH92ndwduqZ6IYjkg20DX33MWdoZk7QkcKUCgisIYslOaaLyvIIqRKWQj16jE1DlQWJJaPopWTJjXfixEjRJJo8g4++wuQjbq+WVYjsqCuNIQW3YjnxKe2M5ZKEqq+cX7ZVgnkbsU3RWIyXA1rxv4kGersYJjD//auldXGmcEbcfTeF16Y1708FB1HIfmWv6dSFi6oD4E+RIjCsEZ+kY7dKnwReJJw3xCjKvi3kGN42rvyhUlIz0Bp+fNSV5xwFiuBzG296e5s/oHoFtUyUplmPulIPl+e1CQIQVtjlzLzzzbV+D/OVQtYzo5ixtMi5BmHuG4N/uKfJk5UIREp7+12oZlKtPBomXSzAY0KgtbPzzZoHQxujnREUgBU+O/jKKhgxVhRPtbqyHiUaRwRpHv7pgRPyUrnE7fYkVblGmfTY28tFCvlILC04Tz3ivkNWVazA+OsYrxvRM/hiNn8Fc4bQBeUZABGx5S/xFf9Lbbmk298X7iFg2yeimvsQqqJ+hYbt6uq+Zf9jC+Jcwiccd61NKQtFvGWrgJiHB5lwi6fR8KzYS7EaEHf/ka9EC7H8D+WEa3TEACHBkNSj/cXxFeq4RllC+fUFm2xtstYLL2nos1DfzsC9vqDDdRVcPA3Ho95aEQHvExVThXPqym65llkKlfRXbPTRiDepdylHjmV9YTWAEjlD9DdQnCem7Aj/ml58On366392214B5zrmQz/9ySG2mFqEwjq5sFl5tYJPw5hNz8lyZPUTsr5E0F2C9VMPnZckWP7+mbwp/BiN7f4kf7vtGnZF2JGvjK/sDX1RtcFY5oPQnE4lIAYV49U3C9SP0LCY/9i/WIFK9ORjzM9kG/KGrAuwFmgdEpdLaiqQNpCTGZVuAO65afkY1h33hrqyLjZy92JK3/twdj9pafFcwfXONmPQWldPlMe7jlP24Js0v9m8bIJ9TgS2IuRvE9ZVRaCwSJYOtAfL5H/YS4FfzKWKbek+GFulheyKtDNlBtrdmr+KU+ibHTdalzFUmMfxw3f36x+3cQbJLItSilW9cuvZEMjKw987jykZRlsH/UI+HlKfo2tLwemBEeBFtmxF2xmItA/dAIfQ+rXnm88dqvXa+GapOYVt/2waFimXFx3TC2MUiOi5/Ml+3rj/YU6Ihx2hXgiDXFsUeQkRAD6wF3SCPi2flk7XwKAA4zboqynuELD312EJ88lmDEVOMa1W/K/a8tGylZRMrMoILyoMQzzbDJHNZrhH77L9qSC42HVmKiZ5S0016UTp83gOhCwz9XItK9fgXfK3F5d7nZCBUekoLxrutQaPHa16Rjsa0gTrzyjqTnmcIcrxg6X6dkKiucudc0DD5W4pJPf0vuDW8r5/uw24YfMuxFRpD2ovT2mFX79xH6Jf+MVdv2TYqR6/955QgVPe3JCD/WjAYcLA9tpXgFiEjge2J5ljeI/iUzg91KQuHkII4mmHZxC3XQORLAC6G7uFn5LOmlnXkjFdoO976moNTxElS8HdxWoPAkjjocDR136m2l+f5t6xaaNgdodOvTu0rievnhNAB79WNrVs6EsPgkgfahF9gSFzzAd+rJSraw5Mllit7vUP5YxA843lUpu6/5jAR0RvH4rRXkSg3nE+O5GFyfe+L0s5r3k05FyghSFnKo4TTgs07qj4nTLqOYj6qaW9knJTDkF5OFMYbmCP+8H16Ty482OjvERV6OFyw043L9w3hoJi408sR+SGo1WviXUu8d7qS+ehKjpKwxeCthsm2LBFSFeetx0x4AaKPxtp3CxdWqCsLrB1s/j5TAhc1jNZsXWl6tjo/WDoewxzg8T8NnhZ1niUwL/nhfygLanCnRwaFGDyLw+sfZhyZ1UtYTp8TYB6dE7R3VsKKH95CUxJ8u8N+9u2/9HUNKHW3x3w5GQrfOPafk2w5qZq8MaHT0ebeY3wIsp3rN9lrpIsW9c1ws3VNV+JwNz0Lo9+V7zZr6GD56We6gWVIvtmam5GPPkVAbr74r6SwhuL+TRXtW/0pgyX16VNl4/EAD50TnUPuwrW6OcUO2VlWXS0inq872kk7GUlW6o/ozFKq+Sip6LcTtSDfDrPTcCHhx75H8BeRon+KG2wRwzfDgWhALmiWOMO6h3pm1UCZEPEjScyk7tdLx6WrdA2N1QTPENvNnhCQjW6kl057/qv7IwRryHrZBCwVSbLLnFRiHdTwk8mlYixFt1slEcPD7FVht13HyqVeyD55HOXrh2ElAxJyinGeoFzwKA91zfrdLvDxJSjzmImfvTisreI25EDcVfGsmxLVbfU8PGe/7NmWWKjXcdTJ11jAlVIY/Bv/mcxg/Q10vCHwKG1GW/XbJq5nxDhyLqiorn7Wd7VEVL8UgVzpHMjQ+Z8DUgSukiVwWAKkeTlVVeZ7t1DGnCgJVIdBPZAEK5f8CDyDNo7tK4/5DBjdD5MPV86TaEhGsLVFPQSI68KlBYy84FievdU9gWh6XZrugvtCZmi9vfd6db6V7FmoEcRHnG36VZH8N4aZaldq9zZawt1uBFgxYYx+Gs/qW1jwANeFy+LCoymyM6zgG7j8bGzUyLhvrbJkTYAEdICEb4kMKusKT9V3eIwMLsjdUdgijMc+7iKrr+TxrVWG0U+W95SGrxnxGrE4eaJFfgvAjUM4SAy8UaRwE9j6ZQH5qYAWGtXByvDiLSDfOD0yFA3UCMKSyQ30fyy1mIRg4ZcgZHLNHWl+c9SeijOvbOJxoQy7lTN2r3Y8p6ovxvUY74aOYbuVezryqXA6U+fcp6wSV9X5/OZKP18tB56Ua0gMyxJI7XyNT7IrqN8GsB9rL/kP5KMrjXxgqKLDa+V5OCH6a5hmOWemMUsea9vQl9t5Oce76PrTyTv50ExOqngE3PHPfSL//AItPdB7kGnyTRhVUUFNdJJ2z7RtktZwgmQzhBG/G7QsjZmJfCE7k75EmdIKH7xlnmDrNM/XbTT6FzldcH/rcRGxlPrv4qDScqE7JSmQABJWqRT/TUcJSwoQM+1jvDigvrjjH8oeK2in1S+/yO1j8xAws/T5u0VnIvAPqaE1atNuN0cuRliLcH2j0nTL4JpcR7w9Qya0JoaHgsOiALLCCzRkl1UUESz+ze/gIXHGtDwgYrK6pCFKJ1webSDog4zTlPkgXZqxlQDiYMjhDpwTtBW2WxthWbov9dt2X9XFLFmcF+eEc1UaQ74gqZiZsdj63pH1qcv3Vy8JYciogIVKsJ8Yy3J9w/GhjWVSQAmrS0BPOWK+RKV+0lWqXgYMnIFwpcZVD7zPSp547i9HlflB8gVnSTGmmq1ClO081OW/UH11pEQMfkEdDFzjLC1Cdo/BdL3s7cXb8J++Hzz1rhOUVZFIPehRiZ8VYu6+7Er7j5PSZu9g/GBdmNzJmyCD9wiswj9BZw+T3iBrg81re36ihMLjoVLoWc+62a1U/7qVX5CpvTVF7rocSAKwv4cBVqZm7lLDS/qoXs4fMs/VQi6BtVbNA3uSzKpQfjH1o3x4LrvkOn40zhm6hjduDglzJUwA0POabgdXIndp9fzhOo23Pe+Rk9GSLX0d71Poqry8NQDTzNlsa+JTNG9+UrEf+ngxCjGEsDCc0bz+udVRyHQI1jmEO3S+IOQycEq7XwB6z3wfMfa73m8PVRp+iOgtZfeSBl01xn03vMaQJkyj7vnhGCklsCWVRUl4y+5oNUzQ63B2dbjDF3vikd/3RUMifPYnX5Glfuk2FsV/7RqjI9yKTbE8wJY+74p7qXO8+dIYgjtLD/N8TJtRh04N9tXJA4H59IkMmLElgvr0Q5OCeVfdAt+5hkh4pQgfRMHpL74XatLQpPiOyHRs/OdmHtBf8nOZcxVKzdGclIN16lE7kJ+pVMjspOI+5+TqLRO6m0ZpNXJoZRv9MPDRcAfJUtNZHyig/s2wwReakFgPPJwCQmu1I30/tcBbji+Na53i1W1N+BqoY7Zxo+U/M9XyJ4Ok2SSkBtoOrwuhAY3a03Eu6l8wFdIG1cN+e8hopTkiKF093KuH/BcB39rMiGDLn6XVhGKEaaT/vqb/lufuAdpGExevF1+J9itkFhCfymWr9vGb3BTK4j598zRH7+e+MU9maruZqb0pkGxRDRE1CD4Z8LV4vhgPidk5w2Bq816g3nHw1//j3JStz7NR9HIWELO8TMn3QrP/zZp//+Dv9p429/ogv+GATR+n/UdF+ns9xNkXZQJXY4t9jMkJNUFygAtzndXwjss+yWH9HAnLQQfhAskdZS2l01HLWv7L7us5uTH409pqitvfSOQg/c+Zt7k879P3K9+WV68n7+3cZfuRd/dDPP/03rn+d+/nBvWfgDlt8+LzjqJ/vx3CnNOwiXhho778C96iD+1TBvRZYeP+EH81LE0vVwOOrmCLB3iKzI1x+vJEsrPH4uF0UB4TJ4X3uDfOCo3PYpYe0MF4bouh0DQ/l43fxUF7Y+dpWuvTSffB0yO2UQUETI/LwCZE3BvnevJ7c9zUlY3H58xzke6DNFDQG8n0WtDN4LAYN4nogKav1ezOfK/z+t6tsCTp+dhx4ymjWuCJk1dEUifDP+HyS4iP/Vg9B2jTo9L4NbiBuDS4nuuHW6H+JDQn2JtqRKGkEQPEYE7uzazXIkcxIAqUq1esasZBETlEZY7y7Jo+RoV/IsjY9eIMkUvr42Hc0xqtsavZvhz1OLwSxMOTuqzlhb0WbdOwBH9EYiyBjatz40bUxTHbiWxqJ0uma19qhPruvcWJlbiSSH48OLDDpaHPszvyct41ZfTu10+vjox6kOqK6v0K/gEPphEvMl/vwSv+A4Hhm36JSP9IXTyCZDm4kKsqD5ay8b1Sad/vaiyO5N/sDfEV6Z4q95E+yfjxpqBoBETW2C7xl4pIO2bDODDFurUPwE7EWC2Uplq+AHmBHvir2PSgkR12/Ry65O0aZtQPeXi9mTlF/Wj5GQ+vFkYyhXsLTjrBSP9hwk4GPqDP5rBn5/l8b0mLRAvRSzXHc293bs3s8EsdE3m2exxidWVB4joHR+S+dz5/W+v00K3TqN14CDBth8eWcsTbiwXPsygHdGid0PEdy6HHm2v/IUuV5RVapYmzGsX90mpnIdNGcOOq64Dbc5GUbYpD9M7S+6cLY//QmjxFLP5cuTFRm3vA5rkFZroFnO3bjHF35uU3s8mvL7Tp9nyTc4mymTJ5sLIp7umSnGkO23faehtz3mmTS7fbVx5rP7x3HXIjRNeq/A3xCs9JNB08c9S9BF2O3bOur0ItslFxXgRPdaapBIi4dRpKGxVz7ir69t/bc9qTxjvtOyGOfiLGDhR4fYywHv1WdOplxIV87TpLBy3Wc0QP0P9s4G7FBNOdITS/tep3o3h1TEa5XDDii7fWtqRzUEReP2fbxz7bHWWJdbIOxOUJZtItNZpTFRfj6vm9sYjRxQVO+WTdiOhdPeTJ+8YirPvoeL88l5iLYOHd3b/Imkq+1ZN1El3UikhftuteEYxf1Wujof8Pr4ICTu5ezZyZ4tHQMxlzUHLYO2VMOoNMGL/20S5i2o2obfk+8qqdR7xzbRDbgU0lnuIgz4LelQ5XS7xbLuSQtNS95v3ZUOdaUx/Qd8qxCt6xf2E62yb/HukLO6RyorV8KgYl5YNc75y+KvefrxY+lc/64y9kvWP0a0bDz/rojq+RWjO06WeruWqNFU7r3HPIcLWRql8ICZsz2Ls/qOm/CLn6++X+Qf7mGspYCrZod/lpl6Rw4xN/yuq8gqV4B6aHk1hVE1SfILxWu5gvXqbfARYQpspcxKp1F/c8XOPzkZvmoSw+vEqBLdrq1fr3wAPv5NnM9i8F+jdAuxkP5Z71c6uhK3enlnGymr7UsWZKC12qgUiG8XXGQ9mxnqz4GSIlybF9eXmbqj2sHX+a1jf0gRoONHRdRSrIq03Ty89eQ1GbV/Bk+du4+V15zls+vvERvZ4E7ZbnxWTVjDjb4o/k8jlw44pTIrUGxxuJvBeO+heuhOjpFsO6lVJ/aXnJDa/bM0Ql1cLbXE/Pbv3EZ3vj3iVrB5irjupZTzlnv677NrI9UNYNqbPgp/HZXS+lJmk87wec+7YOxTDo2aw2l3NfDr34VNlvqWJBknuK7oSlZ6/T10zuOoPZOeoIk81N+sL843WJ2Q4Z0fZ3scsqC/JV2fuhWi1jGURSKZV637lf53Xnnx16/vKEXY89aVJ0fv91jGdfG+G4+sniwHes4hS+udOr4RfhFhG/F5gUG35QaU+McuLmclb5ZWmR+sG5V6nf+PxYzlrnFGxpZaK8eqqVo0NfmAWoGfXDiT/FnUbWvzGDOTr8aktOZWg4BYvz5YH12ZbfCcGtNk+dDAZNGWvHov+PIOnY9Prjg8h/wLRrT69suaMVZ5bNuK00lSVpnqSX1NON/81FoP92rYndionwgOiA8WMf4vc8l15KqEEG4yAm2+WAN5Brfu1sq9suWYqgoajgOYt/JCk1gC8wPkK+XKCtRX6TAtgvrnuBgNRmn6I8lVDipOVB9kX6Oxkp4ZKyd1M6Gj8/v2U7k+YQBL95Kb9PQENucJb0JlW3b5tObN7m/Z1j1ev388d7o15zgXsI9CikAGAViR6lkJv7nb4Ak40M2G8TJ447kN+pvfHiOFjSUSP6PM+QfbAywKJCBaxSVxpizHseZUyUBhq59vFwrkyGoRiHbo0apweEZeSLuNiQ+HAekOnarFg00dZNXaPeoHPTRR0FmEyqYExOVaaaO8c0uFUh7U4e/UxdBmthlBDgg257Q33j1hA7HTxSeTTSuVnPZbgW1nodwmG16aKBDKxEetv7D9OjO0JhrbJTnoe+kcGoDJazFSO8/fUN9Jy/g4XK5PUkw2dgPDGpJqBfhe7GA+cjzfE/EGsMM+FV9nj9IAhrSfT/J3QE5TEIYyk5UjsI6ZZcCPr6A8FZUF4g9nnpVmjX90MLSQysIPD0nFzqwCcSJmIb5mYv2Cmk+C1MDFkZQyCBq4c/Yai9LJ6xYkGS/x2s5/frIW2vmG2Wrv0APpCdgCA9snFvfpe8uc0OwdRs4G9973PGEBnQB5qKrCQ6m6X/H7NInZ7y/1674/ZXOVp7OeuCRk8JFS516VHrnH1HkIUIlTIljjHaQtEtkJtosYul77cVwjk3gW1Ajaa6zWeyHGLlpk3VHE2VFzT2yI/EvlGUSz2H9zYE1s4nsKMtMqNyKNtL/59CpFJki5Fou6VXGm8vWATEPwrUVOLvoA8jLuwOzVBCgHB2Cr5V6OwEWtJEKokJkfc87h+sNHTvMb0KVTp5284QTPupoWvQVUwUeogZR3kBMESYo0mfukewRVPKh5+rzLQb7HKjFFIgWhj1w3yN/qCNoPI8XFiUgBNT1hCHBsAz8L7Oyt8wQWUFj92ONn/APyJFg8hzueqoJdNj57ROrFbffuS/XxrSXLTRgj5uxZjpgQYceeMc2wJrahReSKpm3QjHfqExTLAB2ipVumE8pqcZv8LYXQiPHHsgb5BMW8zM5pvQit+mQx8XGaVDcfVbLyMTlY8xcfmm/RSAT/H09UQol5gIz7rESDmnrQ4bURIB4iRXMDQwxgex1GgtDxKp2HayIkR+E/aDmCttNm2C6lytWdfOVzD6X2SpDWjQDlMRvAp1symWv4my1bPCD+E1EmGnMGWhNwmycJnDV2WrQNxO45ukEb08AAffizYKVULp15I4vbNK5DzWwCSUADfmKhfGSUqii1L2UsE8rB7mLuHuUJZOx4+WiizHBJ/hwboaBzhpNOVvgFTf5cJsHef7L1HCI9dOUUbb+YxUJWn6dYOLz+THi91kzY5dtO5c+grX7v0jEbsuoOGnoIreDIg/sFMyG+TyCLIcAWd1IZ1UNFxE8Uie13ucm40U2fcxC0u3WLvLOxwu+F7MWUsHsdtFQZ7W+nlfCASiAKyh8rnP3EyDByvtJb6Kax6/HkLzT9SyEyTMVM1zPtM0MJY14DmsWh4MgD15Ea9Hd00AdkTZ0EiG5NAGuIBzQJJ0JR0na+OB7lQA6UKxMfihIQ7GCCnVz694QvykWXTxpS2soDu+smru1UdIxSvAszBFD1c8c6ZOobA8bJiJIvuycgIXBQIXWwhyTgZDQxJTRXgEwRNAawGSXO0a1DKjdihLVNp/taE/xYhsgwe+VpKEEB4LlraQyE84gEihxCnbfoyOuJIEXy2FIYw+JjRusybKlU2g/vhTSGTydvCvXhYBdtAXtS2v7LkHtmXh/8fly1do8FI/D0f8UbzVb5h+KRhMGSAmR2mhi0YG/uj7wgxcfzCrMvdjitUIpXDX8ae2JcF/36qUWIMwN6JsjaRGNj+jEteGDcFyTUb8X/NHSucKMJp7pduxtD6KuxVlyxxwaeiC1FbGBESO84lbyrAugYxdl+2N8/6AgWpo/IeoAOcsG35IA/b3AuSyoa55L7llBLlaWlEWvuCFd8f8NfcTUgzJv6CbB+6ohWwodlk9nGWFpBAOaz5uEW5xBvmjnHFeDsb0mXwayj3mdYq5gxxNf3H3/tnCgHwjSrpSgVxLmiTtuszdRUFIsn6LiMPjL808vL1uQhDbM7aA43mISXReqjSskynIRcHCJ9qeFopJfx9tqyUoGbSwJex/0aDE3plBPGtNBYgWbdLom3+Q/bjdizR2/AS/c/dH/d3G7pyl1qDXgtOFtEqidwLqxPYtrNEveasWq3vPUUtqTeu8gpov4bdOQRI2kneFvRNMrShyVeEupK1PoLDPMSfWMIJcs267mGB8X9CehQCF0gIyhpP10mbyM7lwW1e6TGvHBV1sg/UyTghHPGRqMyaebC6pbB1WKNCQtlai1GGvmq9zUKaUzLaXsXEBYtHxmFbEZ2kJhR164LhWW2Tlp1dhsGE7ZgIWRBOx3Zcu2DxgH+G83WTPceKG0TgQKKiiNNOlWgvqNEbnrk6fVD+AqRam2OguZb0YWSTX88N+i/ELSxbaUUpPx4vJUzYg/WonSeA8xUK6u7DPHgpqWpEe6D4cXg5uK9FIYVba47V/nb+wyOtk+zG8RrS4EA0ouwa04iByRLSvoJA2FzaobbZtXnq8GdbfqEp5I2dpfpj59TCVif6+E75p665faiX8gS213RqBxTZqfHP46nF6NSenOneuT+vgbLUbdTH2/t0REFXZJOEB6DHvx6N6g9956CYrY/AYcm9gELJXYkrSi+0F0geKDZgOCIYkLU/+GOW5aGj8mvLFgtFH5+XC8hvAE3CvHRfl4ofM/Qwk4x2A+R+nyc9gNu/9Tem7XW4XRnyRymf52z09cTOdr+PG6+P/Vb4QiXlwauc5WB1z3o+IJjlbxI8MyWtSzT+k4sKVbhF3xa+vDts3NxXa87iiu+xRH9cAprnOL2h6vV54iQRXuOAj1s8nLFK8gZ70ThIQcWdF19/2xaJmT0efrkNDkWbpAQPdo92Z8+Hn/aLjbOzB9AI/k12fPs9HhUNDJ1u6ax2VxD3R6PywN7BrLJ26z6s3QoMp76qzzwetrDABKSGkfW5PwS1GvYNUbK6uRqxfyVGNyFB0E+OugMM8kKwmJmupuRWO8XkXXXQECyRVw9UyIrtCtcc4oNqXqr7AURBmKn6Khz3eBN96LwIJrAGP9mr/59uTOSx631suyT+QujDd4beUFpZ0kJEEnjlP+X/Kr2kCKhnENTg4BsMTOmMqlj2WMFLRUlVG0fzdCBgUta9odrJfpVdFomTi6ak0tFjXTcdqqvWBAzjY6hVrH9sbt3Z9gn+AVDpTcQImefbB4edirjzrsNievve4ZT4EUZWV3TxEsIW+9MT/RJoKfZZYSRGfC1CwPG/9rdMOM8qR/LUYvw5f/emUSoD7YSFuOoqchdUg2UePd1eCtFSKgxLSZ764oy4lvRCIH6bowPxZWwxNFctksLeil47pfevcBipkkBIc4ngZG+kxGZ71a72KQ7VaZ6MZOZkQJZXM6kb/Ac0/XkJx8dvyfJcWbI3zONEaEPIW8GbkYjsZcwy+eMoKrYjDmvEEixHzkCSCRPRzhOfJZuLdcbx19EL23MA8rnjTZZ787FGMnkqnpuzB5/90w1gtUSRaWcb0eta8198VEeZMUSfIhyuc4/nywFQ9uqn7jdqXh+5wwv+RK9XouNPbYdoEelNGo34KyySwigsrfCe0v/PlWPvQvQg8R0KgHO18mTVThhQrlbEQ0Kp/JxPdjHyR7E1QPw/ut0r+HDDG7BwZFm9IqEUZRpv2WpzlMkOemeLcAt5CsrzskLGaVOAxyySzZV/D2EY7ydNZMf8e8VhHcKGHAWNszf1EOq8fNstijMY4JXyATwTdncFFqcNDfDo+mWFvxJJpc4sEZtjXyBdoFcxbUmniCoKq5jydUHNjYJxMqN1KzYV62MugcELVhS3Bnd+TLLOh7dws/zSXWzxEb4Nj4aFun5x4kDWLK5TUF/yCXB/cZYvI9kPgVsG2jShtXkxfgT+xzjJofXqPEnIXIQ1lnIdmVzBOM90EXvJUW6a0nZ/7XjJGl8ToO3H/fdxnxmTNKBZxnkpXLVgLXCZywGT3YyS75w/PAH5I/jMuRspej8xZObU9kREbRA+kqjmKRFaKGWAmFQspC+QLbKPf0RaK3OXvBSWqo46p70ws/eZpu6jCtZUgQy6r4tHMPUdAgWGGUYNbuv/1a6K+MVFsd3T183+T8capSo6m0+Sh57fEeG/95dykGJBQMj09DSW2bY0mUonDy9a8trLnnL5B5LW3Nl8rJZNysO8Zb+80zXxqUGFpud3Qzwb7bf+8mq6x0TAnJU9pDQR9YQmZhlna2xuxJt0aCO/f1SU8gblOrbIyMsxTlVUW69VJPzYU2HlRXcqE2lLLxnObZuz2tT9CivfTAUYfmzJlt/lOPgsR6VN64/xQd4Jlk/RV7UKVv2Gx/AWsmTAuCWKhdwC+4HmKEKYZh2Xis4KsUR1BeObs1c13wqFRnocdmuheaTV30gvVXZcouzHKK5zwrN52jXJEuX6dGx3BCpV/++4f3hyaW/cQJLFKqasjsMuO3B3WlMq2gyYfdK1e7L2pO/tRye2mwzwZPfdUMrl5wdLqdd2Kv/wVtnpyWYhd49L6rsOV+8HXPrWH2Kup89l2tz6bf80iYSd+V4LROSOHeamvexR524q4r43rTmtFzQvArpvWfLYFZrbFspBsXNUqqenjxNNsFXatZvlIhk7teUPfK+YL32F8McTnjv0BZNppb+vshoCrtLXjIWq3EJXpVXIlG6ZNL0dh6qEm2WMwDjD3LfOfkGh1/czYc/0qhiD2ozNnH4882MVVt3JbVFkbwowNCO3KL5IoYW5wlVeGCViOuv1svZx7FbzxKzA4zGqBlRRaRWCobXaVq4yYCWbZf8eiJwt3OY+MFiSJengcFP2t0JMfzOiJ7cECvpx7neg1Rc5x+7myPJOXt2FohVRyXtD+/rDoTOyGYInJelZMjolecVHUhUNqvdZWg2J2t0jPmiLFeRD/8fOT4o+NGILb+TufCo9ceBBm3JLVn+MO2675n7qiEX/6W+188cYg3Zn5NSTjgOKfWFSAANa6raCxSoVU851oJLY11WIoYK0du0ec5E4tCnAPoKh71riTsjVIp3gKvBbEYQiNYrmH22oLQWA2AdwMnID6PX9b58dR2QKo4qag1D1Z+L/FwEKTR7osOZPWECPJIHQqPUsM5i/CH5YupVPfFA5pHUBcsesh8eO5YhyWnaVRPZn/BmdXVumZWPxMP5e28zm2uqHgFoT9CymHYNNrzrrjlXZM06HnzDxYNlI5b/QosxLmmrqDFqmogQdqk0WLkUceoAvQxHgkIyvWU69BPFr24VB6+lx75Rna6dGtrmOxDnvBojvi1/4dHjVeg8owofPe1cOnxU1ioh016s/Vudv9mhV9f35At+Sh28h1bpp8xhr09+vf47Elx3Ms6hyp6QvB3t0vnLbOhwo660cp7K0vvepabK7YJfxEWWfrC2YzJfYOjygPwfwd/1amTqa0hZ5ueebhWYVMubRTwIjj+0Oq0ohU3zfRfuL8gt59XsHdwKtxTQQ4Y2qz6gisxnm2UdlmpEkgOsZz7iEk6QOt8BuPwr+NR01LTqXmJo1C76o1N274twJvl+I069TiLpenK/miRxhyY8jvYV6W1WuSwhH9q7kuwnJMtm7IWcqs7HsnyHSqWXLSpYtZGaR1V3t0gauninFPZGtWskF65rtti48UV9uV9KM8kfDYs0pgB00S+TlzTXV6P8mxq15b9En8sz3jWSszcifZa/NuufPNnNTb031pptt0+sRSH/7UG8pzbsgtt3OG3ut7B9JzDMt2mTZuyRNIV8D54TuTrpNcHtgmMlYJeiY9XS83NYJicjRjtJSf9BZLsQv629QdDsKQhTK5CnXhpk7vMNkHzPhm0ExW/VCGApHfPyBagtZQTQmPHx7g5IXXsrQDPzIVhv2LB6Ih138iSDww1JNHrDvzUxvp73MsQBVhW8EbrReaVUcLB1R3PUXyaYG4HpJUcLVxMgDxcPkVRQpL7VTAGabDzbKcvg12t5P8TSGQkrj/gOrpnbiDHwluA73xbXts/L7u468cRWSWRtgTwlQnA47EKg0OiZDgFxAKQQUcsbGomITgeXUAAyKe03eA7Mp4gnyKQmm0LXJtEk6ddksMJCuxDmmHzmVhO+XaN2A54MIh3niw5CF7PwiXFZrnA8wOdeHLvvhdoqIDG9PDI7UnWWHq526T8y6ixJPhkuVKZnoUruOpUgOOp3iIKBjk+yi1vHo5cItHXb1PIKzGaZlRS0g5d3MV2pD8FQdGYLZ73aae/eEIUePMc4NFz8pIUfLCrrF4jVWH5gQneN3S8vANBmUXrEcKGn6hIUN95y1vpsvLwbGpzV9L0ZKTan6TDXM05236uLJcIEMKVAxKNT0K8WljuwNny3BNQRfzovA85beI9zr1AGNYnYCVkR1aGngWURUrgqR+gRrQhxW81l3CHevjvGEPzPMTxdsIfB9dfGRbZU0cg/1mcubtECX4tvaedmNAvTxCJtc2QaoUalGfENCGK7IS/O8CRpdOVca8EWCRwv2sSWE8CJPW5PCugjCXPd3h6U60cPD+bdhtXZuYB6stcoveE7Sm5MM2yvfUHXFSW7KzLmi7/EeEWL0wqcOH9MOSKjhCHHmw+JGLcYE/7SBZQCRggox0ZZTAxrlzNNXYXL5fNIjkdT4YMqVUz6p8YDt049v4OXGdg3qTrtLBUXOZf7ahPlZAY/O+7Sp0bvGSHdyQ8B1LOsplqMb9Se8VAE7gIdSZvxbRSrfl+Lk5Qaqi5QJceqjitdErcHXg/3MryljPSIAMaaloFm1cVwBJ8DNmkDqoGROSHFetrgjQ5CahuKkdH5pRPigMrgTtlFI8ufJPJSUlGgTjbBSvpRc0zypiUn6U5KZqcRoyrtzhmJ7/caeZkmVRwJQeLOG8LY6vP5ChpKhc8Js0El+n6FXqbx9ItdtLtYP92kKfaTLtCi8StLZdENJa9Ex1nOoz1kQ7qxoiZFKRyLf4O4CHRT0T/0W9F8epNKVoeyxUXhy3sQMMsJjQJEyMOjmOhMFgOmmlscV4eFi1CldU92yjwleirEKPW3bPAuEhRZV7JsKV3Lr5cETAiFuX5Nw5UlF7d2HZ96Bh0sgFIL5KGaKSoVYVlvdKpZJVP5+NZ7xDEkQhmDgsDKciazJCXJ6ZN2B3FY2f6VZyGl/t4aunGIAk/BHaS+i+SpdRfnB/OktOvyjinWNfM9Ksr6WwtCa1hCmeRI6icpFM4o8quCLsikU0tMoZI/9EqXRMpKGaWzofl4nQuVQm17d5fU5qXCQeCDqVaL9XJ9qJ08n3G3EFZS28SHEb3cdRBdtO0YcTzil3QknNKEe/smQ1fTb0XbpyNB5xAeuIlf+5KWlEY0DqJbsnzJlQxJPOVyHiKMx5Xu9FcEv1Fbg6Fhm4t+Jyy5JC1W3YO8dYLsO0PXPbxodBgttTbH3rt9Cp1lJIk2r3O1Zqu94eRbnIz2f50lWolYzuKsj4PMok4abHLO8NAC884hiXx5Fy5pWKO0bWL7uEGXaJCtznhP67SlQ4xjWIfgq6EpZ28QMtuZK7JC0RGbl9nA4XtFLug/NLMoH1pGt9IonAJqcEDLyH6TDROcbsmGPaGIxMo41IUAnQVPMPGByp4mOmh9ZQMkBAcksUK55LsZj7E5z5XuZoyWCKu6nHmDq22xI/9Z8YdxJy4kWpD16jLVrpwGLWfyOD0Wd+cBzFBxVaGv7S5k9qwh/5t/LQEXsRqI3Q9Rm3QIoaZW9GlsDaKOUyykyWuhNOprSEi0s1G4rgoiX1V743EELti+pJu5og6X0g6oTynUqlhH9k6ezyRi05NGZHz0nvp3HOJr7ebrAUFrDjbkFBObEvdQWkkUbL0pEvMU46X58vF9j9F3j6kpyetNUBItrEubW9ZvMPM4qNqLlsSBJqOH3XbNwv/cXDXNxN8iFLzUhteisYY+RlHYOuP29/Cb+L+xv+35Rv7xudnZ6ohK4cMPfCG8KI7dNmjNk/H4e84pOxn/sZHK9psfvj8ncA8qJz7O8xqbxESDivGJOZzF7o5PJLQ7g34qAWoyuA+x3btU98LT6ZyGyceIXjrqob2CAVql4VOTQPUQYvHV/g4zAuCZGvYQBtf0wmd5lilrvuEn1BXLny01B4h4SMDlYsnNpm9d7m9h578ufpef9Z4WplqWQvqo52fyUA7J24eZD5av6SyGIV9kpmHNqyvdfzcpEMw97BvknV2fq+MFHun9BT3Lsf8pbzvisWiIQvYkng+8Vxk1V+dli1u56kY50LRjaPdotvT5BwqtwyF+emo/z9J3yVUVGfKrxQtJMOAQWoQii/4dp9wgybSa5mkucmRLtEQZ/pz0tL/NVcgWAd95nEQ3Tg6tNbuyn3Iepz65L3huMUUBntllWuu4DbtOFSMSbpILV4fy6wlM0SOvi6CpLh81c1LreIvKd61uEWBcDw1lUBUW1I0Z+m/PaRlX+PQ/oxg0Ye6KUiIiTF4ADNk59Ydpt5/rkxmq9tV5Kcp/eQLUVVmBzQNVuytQCP6Ezd0G8eLxWyHpmZWJ3bAzkWTtg4lZlw42SQezEmiUPaJUuR/qklVA/87S4ArFCpALdY3QRdUw3G3XbWUp6aq9z0zUizcPa7351p9JXOZyfdZBFnqt90VzQndXB/mwf8LC9STj5kenVpNuqOQQP3mIRJj7eV21FxG8VAxKrEn3c+XfmZ800EPb9/5lIlijscUbB6da0RQaMook0zug1G0tKi/JBC4rw7/D3m4ARzAkzMcVrDcT2SyFtUdWAsFlsPDFqV3N+EjyXaoEePwroaZCiLqEzb8MW+PNE9TmTC01EzWli51PzZvUqkmyuROU+V6ik+Le/9qT6nwzUzf9tP68tYei0YaDGx6kAd7jn1cKqOCuYbiELH9zYqcc4MnRJjkeGiqaGwLImhyeKs+xKJMBlOJ05ow9gGCKZ1VpnMKoSCTbMS+X+23y042zOb5MtcY/6oBeAo1Vy89OTyhpavFP78jXCcFH0t7Gx24hMEOm2gsEfGabVpQgvFqbQKMsknFRRmuPHcZu0Su/WMFphZvB2r/EGbG72rpGGho3h+Msz0uGzJ7hNK2uqQiE1qmn0zgacKYYZBCqsxV+sjbpoVdSilW/b94n2xNb648VmNIoizqEWhBnsen+d0kbCPmRItfWqSBeOd9Wne3c6bcd6uvXOJ6WdiSsuXq0ndhqrQ4QoWUjCjYtZ0EAhnSOP1m44xkf0O7jXghrzSJWxP4a/t72jU29Vu2rvu4n7HfHkkmQOMGSS+NPeLGO5I73mC2B7+lMiBQQZRM9/9liLIfowupUFAbPBbR+lxDM6M8Ptgh1paJq5Rvs7yEuLQv/7d1oU2woFSb3FMPWQOKMuCuJ7pDDjpIclus5TeEoMBy2YdVB4fxmesaCeMNsEgTHKS5WDSGyNUOoEpcC2OFWtIRf0w27ck34/DjxRTVIcc9+kqZE6iMSiVDsiKdP/Xz5XfEhm/sBhO50p1rvJDlkyyxuJ9SPgs7YeUJBjXdeAkE+P9OQJm6SZnn1svcduI78dYmbkE2mtziPrcjVisXG78spLvbZaSFx/Rks9zP4LKn0Cdz/3JsetkT06A8f/yCgMO6Mb1Hme0JJ7b2wZz1qleqTuKBGokhPVUZ0dVu+tnQYNEY1fmkZSz6+EGZ5EzL7657mreZGR3jUfaEk458PDniBzsSmBKhDRzfXameryJv9/D5m6HIqZ0R+ouCE54Dzp4IJuuD1e4Dc5i+PpSORJfG23uVgqixAMDvchMR0nZdH5brclYwRoJRWv/rlxGRI5ffD5NPGmIDt7vDE1434pYdVZIFh89Bs94HGGJbTwrN8T6lh1HZFTOB4lWzWj6EVqxSMvC0/ljWBQ3F2kc/mO2b6tWonT2JEqEwFts8rz2h+oWNds9ceR2cb7zZvJTDppHaEhK5avWqsseWa2Dt5BBhabdWSktS80oMQrL4TvAM9b5HMmyDnO+OkkbMXfUJG7eXqTIG6lqSOEbqVR+qYdP7uWb57WEJqzyh411GAVsDinPs7KvUeXItlcMdOUWzXBH6zscymV1LLVCtc8IePojzXHF9m5b5zGwBRdzcyUJkiu938ApmAayRdJrX1PmVguWUvt2ThQ62czItTyWJMW2An/hdDfMK7SiFQlGIdAbltHz3ycoh7j9V7GxNWBpbtcSdqm4XxRwTawc3cbZ+xfSv9qQfEkDKfZTwCkqWGI/ur250ItXlMlh6vUNWEYIg9A3GzbgmbqvTN8js2YMo87CU5y6nZ4dbJLDQJj9fc7yM7tZzJDZFtqOcU8+mZjYlq4VmifI23iHb1ZoT9E+kT2dolnP1AfiOkt7PQCSykBiXy5mv637IegWSKj9IKrYZf4Lu9+I7ub+mkRdlvYzehh/jaJ9n7HUH5b2IbgeNdkY7wx1yVzxS7pbvky6+nmVUtRllEFfweUQ0/nG017WoUYSxs+j2B4FV/F62EtHlMWZXYrjGHpthnNb1x66LKZ0Qe92INWHdfR/vqp02wMS8r1G4dJqHok8KmQ7947G13a4YXbsGgHcBvRuVu1eAi4/A5+ZixmdSXM73LupB/LH7O9yxLTVXJTyBbI1S49TIROrfVCOb/czZ9pM4JsZx8kUz8dQGv7gUWKxXvTH7QM/3J2OuXXgciUhqY+cgtaOliQQVOYthBLV3xpESZT3rmfEYNZxmpBbb24CRao86prn+i9TNOh8VxRJGXJfXHATJHs1T5txgc/opYrY8XjlGQQbRcoxIBcnVsMjmU1ymmIUL4dviJXndMAJ0Yet+c7O52/p98ytlmAsGBaTAmMhimAnvp1TWNGM9BpuitGj+t810CU2UhorrjPKGtThVC8WaXw04WFnT5fTjqmPyrQ0tN3CkLsctVy2xr0ZWgiWVZ1OrlFjjxJYsOiZv2cAoOvE+7sY0I/TwWcZqMoyIKNOftwP7w++Rfg67ljfovKYa50if3fzE/8aPYVey/Nq35+nH2sLPh/fP5TsylSKGOZ4k69d2PnH43+kq++sRXHQqGArWdwhx+hpwQC6JgT2uxehYU4Zbw7oNb6/HLikPyJROGK2ouyr+vzseESp9G50T4AyFrSqOQ0rroCYP4sMDFBrHn342EyZTMlSyk47rHSq89Y9/nI3zG5lX16Z5lxphguLOcZUndL8wNcrkyjH82jqg8Bo8OYkynrxZvbFno5lUS3OPr8Ko3mX9NoRPdYOKKjD07bvgFgpZ/RF+YzkWvJ/Hs/tUbfeGzGWLxNAjfDzHHMVSDwB5SabQLsIZHiBp43FjGkaienYoDd18hu2BGwOK7U3o70K/WY/kuuKdmdrykIBUdG2mvE91L1JtTbh20mOLbk1vCAamu7utlXeGU2ooVikbU/actcgmsC1FKk2qmj3GWeIWbj4tGIxE7BLcBWUvvcnd/lYxsMV4F917fWeFB/XbINN3qGvIyTpCalz1lVewdIGqeAS/gB8Mi+sA+BqDiX3VGD2eUunTRbSY+AuDy4E3Qx3hAhwnSXX+B0zuj3eQ1miS8Vux2z/l6/BkWtjKGU72aJkOCWhGcSf3+kFkkB15vGOsQrSdFr6qTj0gBYiOlnBO41170gOWHSUoBVRU2JjwppYdhIFDfu7tIRHccSNM5KZOFDPz0TGMAjzzEpeLwTWp+kn201kU6NjbiMQJx83+LX1e1tZ10kuChJZ/XBUQ1dwaBHjTDJDqOympEk8X2M3VtVw21JksChA8w1tTefO3RJ1FMbqZ01bHHkudDB/OhLfe7P5GOHaI28ZXKTMuqo0hLWQ4HabBsGG7NbP1RiXtETz074er6w/OerJWEqjmkq2y51q1BVI+JUudnVa3ogBpzdhFE7fC7kybrAt2Z6RqDjATAUEYeYK45WMupBKQRtQlU+uNsjnzj6ZmGrezA+ASrWxQ6LMkHRXqXwNq7ftv28dUx/ZSJciDXP2SWJsWaN0FjPX9Yko6LobZ7aYW/IdUktI9apTLyHS8DyWPyuoZyxN1TK/vtfxk3HwWh6JczZC8Ftn0bIJay2g+n5wd7lm9rEsKO+svqVmi+c1j88hSCxbzrg4+HEP0Nt1/B6YW1XVm09T1CpAKjc9n18hjqsaFGdfyva1ZG0Xu3ip6N6JGpyTSqY5h4BOlpLPaOnyw45PdXTN+DtAKg7DLrLFTnWusoSBHk3s0d7YouJHq85/R09Tfc37ENXZF48eAYLnq9GLioNcwDZrC6FW6godB8JnqYUPvn0pWLfQz0lM0Yy8Mybgn84Ds3Q9bDP10bLyOV+qzxa4Rd9Dhu7cju8mMaONXK3UqmBQ9qIg7etIwEqM/kECk/Dzja4Bs1xR+Q/tCbc8IKrSGsTdJJ0vge7IG20W687uVmK6icWQ6cD3lwFzgNMGtFvO5qyJeKflGLAAcQZOrkxVwy3cWvqlGpvjmf9Qe6Ap20MPbV92DPV0OhFM4kz8Yr0ffC2zLWSQ1kqY6QdQrttR3kh1YLtQd1kCEv5hVoPIRWl5ERcUTttBIrWp6Xs5Ehh5OUUwI5aEBvuiDmUoENmnVw1FohCrbRp1A1E+XSlWVOTi7ADW+5Ohb9z1vK4qx5R5lPdGCPBJZ00mC+Ssp8VUbgpGAvXWMuWQQRbCqI6Rr2jtxZxtfP7W/8onz+yz0Gs76LaT5HX9ecyiZCB/ZR/gFtMxPsDwohoeCRtiuLxE1GM1vUEUgBv86+eehL58/P56QFGQ/MqOe/vC76L63jzmeax4exd/OKTUvkXg+fOJUHych9xt/9goJMrapSgvXrj8+8vk/N80f22Sewj6cyGqt1B6mztoeklVHHraouhvHJaG/OuBz6DHKMpFmQULU1bRWlyYE0RPXYYkUycIemN7TLtgNCJX6BqdyxDKkegO7nJK5xQ7OVYDZTMf9bVHidtk6DQX9Et+V9M7esgbsYBdEeUpsB0Xvw2kd9+rI7V+m47u+O/tq7mw7262HU1WlS9uFzsV6JxIHNmUCy0QS9e077JGRFbG65z3/dOKB/Zk+yDdKpUmdXjn/aS3N5nv4fK7bMHHmPlHd4E2+iTbV5rpzScRnxk6KARuDTJ8Q1LpK2mP8gj1EbuJ9RIyY+EWK4hCiIDBAS1Tm2IEXAFfgKPgdL9O6mAa06wjCcUAL6EsxPQWO9VNegBPm/0GgkZbDxCynxujX/92vmGcjZRMAY45puak2sFLCLSwXpEsyy5fnF0jGJBhm+fNSHKKUUfy+276A7/feLOFxxUuHRNJI2Osenxyvf8DAGObT60pfTTlhEg9u/KKkhJqm5U1/+BEcSkpFDA5XeCqxwXmPac1jcuZ3JWQ+p0NdWzb/5v1ZvF8GtMTFFEdQjpLO0bwPb0BHNWnip3liDXI2fXf05jjvfJ0NpjLCUgfTh9CMFYVFKEd4Z/OG/2C+N435mnK+9t1gvCiVcaaH7rK4+PjCvpVNiz+t2QyqH1O8x3JKZVl6Q+Lp/XK8wMjVMslOq9FdSw5FtUs/CptXH9PW+wbWHgrV17R5jTVOtGtKFu3nb80T+E0tv9QkzW3J2dbaw/8ddAKZ0pxIaEqLjlPrji3VgJ3GvdFvlqD8075woxh4fVt0JZE0KVFsAvqhe0dqN9b35jtSpnYMXkU+vZq+IAHad3IHc2s/LYrnD1anfG46IFiMIr9oNbZDWvwthqYNqOigaKd/XlLU4XHfk/PXIjPsLy/9/kAtQ+/wKH+hI/IROWj5FPvTZAT9f7j4ZXQyG4M0TujMAFXYkKvEHv1xhySekgXGGqNxWeWKlf8dDAlLuB1cb/qOD+rk7cmwt+1yKpk9cudqBanTi6zTbXRtV8qylNtjyOVKy1HTz0GW9rjt6sSjAZcT5R+KdtyYb0zyqG9pSLuCw5WBwAn7fjBjKLLoxLXMI+52L9cLwIR2B6OllJZLHJ8vDxmWdtF+QJnmt1rsHPIWY20lftk8fYePkAIg6Hgn532QoIpegMxiWgAOfe5/U44APR8Ac0NeZrVh3gEhs12W+tVSiWiUQekf/YBECUy5fdYbA08dd7VzPAP9aiVcIB9k6tY7WdJ1wNV+bHeydNtmC6G5ICtFC1ZwmJU/j8hf0I8TRVKSiz5oYIa93EpUI78X8GYIAZabx47/n8LDAAJ0nNtP1rpROprqKMBRecShca6qXuTSI3jZBLOB3Vp381B5rCGhjSvh/NSVkYp2qIdP/Bg="},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,g){this.bits=d,this.value=g}a.HuffmanCode=n;var l=15;function m(d,g){for(var h=1<<g-1;d&h;)h>>=1;return(d&h-1)+h}function f(d,g,h,v,_){do v-=h,d[g+v]=new n(_.bits,_.value);while(v>0)}function c(d,g,h){for(var v=1<<g-h;g<l&&(v-=d[g],!(v<=0));)++g,v<<=1;return g-h}a.BrotliBuildHuffmanTable=function(d,g,h,v,_){var A=g,k,x,b,T,Y,I,D,H,$,bt,W,y=new Int32Array(l+1),L=new Int32Array(l+1);for(W=new Int32Array(_),b=0;b<_;b++)y[v[b]]++;for(L[1]=0,x=1;x<l;x++)L[x+1]=L[x]+y[x];for(b=0;b<_;b++)v[b]!==0&&(W[L[v[b]]++]=b);if(H=h,$=1<<H,bt=$,L[l]===1){for(T=0;T<bt;++T)d[g+T]=new n(0,W[0]&65535);return bt}for(T=0,b=0,x=1,Y=2;x<=h;++x,Y<<=1)for(;y[x]>0;--y[x])k=new n(x&255,W[b++]&65535),f(d,g+T,Y,$,k),T=m(T,x);for(D=bt-1,I=-1,x=h+1,Y=2;x<=l;++x,Y<<=1)for(;y[x]>0;--y[x])(T&D)!==I&&(g+=$,H=c(y,x,h),$=1<<H,bt+=$,I=T&D,d[A+I]=new n(H+h&255,g-A-I&65535)),k=new n(x-h&255,W[b++]&65535),f(d,g+(T>>h),Y,$,k),T=m(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=h,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],m=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function g(b){var T=b.length;if(T%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function h(b){var T=g(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function v(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=g(b),I=Y[0],D=Y[1],H=new m(v(b,I,D)),$=0,bt=D>0?I-4:I,W=0;W<bt;W+=4)T=l[b.charCodeAt(W)]<<18|l[b.charCodeAt(W+1)]<<12|l[b.charCodeAt(W+2)]<<6|l[b.charCodeAt(W+3)],H[$++]=T>>16&255,H[$++]=T>>8&255,H[$++]=T&255;return D===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),D===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,D=[],H=T;H<Y;H+=3)I=(b[H]<<16&16711680)+(b[H+1]<<8&65280)+(b[H+2]&255),D.push(A(I));return D.join("")}function x(b){for(var T,Y=b.length,I=Y%3,D=[],H=16383,$=0,bt=Y-I;$<bt;$+=H)D.push(k(b,$,$+H>bt?bt:$+H));return I===1?(T=b[Y-1],D.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],D.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),D.join("")}},{}],9:[function(o,s,a){function n(l,m){this.offset=l,this.nbits=m}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(m){this.buffer=m,this.pos=0}n.prototype.read=function(m,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)m[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(m){this.buffer=m,this.pos=0}l.prototype.write=function(m,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(m.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,m=1,f=2,c=3,d=4,g=5,h=6,v=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,D=16,H=17,$=18,bt=19,W=20;function y(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var E=0;E<ot.length;E++)this.prefix[E]=ot.charCodeAt(E);for(var E=0;E<gt.length;E++)this.suffix[E]=gt.charCodeAt(E)}var L=[new y("",l,""),new y("",l," "),new y(" ",l," "),new y("",b,""),new y("",k," "),new y("",l," the "),new y(" ",l,""),new y("s ",l," "),new y("",l," of "),new y("",k,""),new y("",l," and "),new y("",T,""),new y("",m,""),new y(", ",l," "),new y("",l,", "),new y(" ",k," "),new y("",l," in "),new y("",l," to "),new y("e ",l," "),new y("",l,'"'),new y("",l,"."),new y("",l,'">'),new y("",l,` `),new y("",c,""),new y("",l,"]"),new y("",l," for "),new y("",Y,""),new y("",f,""),new y("",l," a "),new y("",l," that "),new y(" ",k,""),new y("",l,". "),new y(".",l,""),new y(" ",l,", "),new y("",I,""),new y("",l," with "),new y("",l,"'"),new y("",l," from "),new y("",l," by "),new y("",D,""),new y("",H,""),new y(" the ",l,""),new y("",d,""),new y("",l,". The "),new y("",x,""),new y("",l," on "),new y("",l," as "),new y("",l," is "),new y("",v,""),new y("",m,"ing "),new y("",l,` - `),new y("",l,":"),new y(" ",l,". "),new y("",l,"ed "),new y("",W,""),new y("",$,""),new y("",h,""),new y("",l,"("),new y("",k,", "),new y("",_,""),new y("",l," at "),new y("",l,"ly "),new y(" the ",l," of "),new y("",g,""),new y("",A,""),new y(" ",k,", "),new y("",k,'"'),new y(".",l,"("),new y("",x," "),new y("",k,'">'),new y("",l,'="'),new y(" ",l,"."),new y(".com/",l,""),new y(" the ",l," of the "),new y("",k,"'"),new y("",l,". This "),new y("",l,","),new y(".",l," "),new y("",k,"("),new y("",k,"."),new y("",l," not "),new y(" ",l,'="'),new y("",l,"er "),new y(" ",x," "),new y("",l,"al "),new y(" ",x,""),new y("",l,"='"),new y("",x,'"'),new y("",k,". "),new y(" ",l,"("),new y("",l,"ful "),new y(" ",k,". "),new y("",l,"ive "),new y("",l,"less "),new y("",x,"'"),new y("",l,"est "),new y(" ",k,"."),new y("",x,'">'),new y(" ",l,"='"),new y("",k,","),new y("",l,"ize "),new y("",x,"."),new y("\xC2\xA0",l,""),new y(" ",l,","),new y("",k,'="'),new y("",x,'="'),new y("",l,"ous "),new y("",x,", "),new y("",k,"='"),new y(" ",k,","),new y(" ",x,'="'),new y(" ",x,", "),new y("",x,","),new y("",x,"("),new y("",x,". "),new y(" ",x,"."),new y("",x,"='"),new y(" ",x,". "),new y(" ",k,'="'),new y(" ",x,"='"),new y(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function lt(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,R,S){var E=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ct<b?0:ct-(b-1),Ct=0,Yt=K,Ot;at>R&&(at=R);for(var J=0;J<E.length;)ot[K++]=E[J++];for(gt+=at,R-=at,ct<=A&&(R-=ct),Ct=0;Ct<R;Ct++)ot[K++]=n.dictionary[gt+Ct];if(Ot=K-R,ct===k)lt(ot,Ot);else if(ct===x)for(;R>0;){var St=lt(ot,Ot);Ot+=St,R-=St}for(var At=0;At<et.length;)ot[K++]=et[At++];return K-Yt}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ss=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Il=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof ss=="function"&&ss;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof ss=="function"&&ss,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var g=d.shift();if(g){if(typeof g!="object")throw new TypeError(g+"must be non-object");for(var h in g)l(g,h)&&(c[h]=g[h])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var m={arraySet:function(c,d,g,h,v){if(d.subarray&&c.subarray){c.set(d.subarray(g,g+h),v);return}for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){var d,g,h,v,_,A;for(h=0,d=0,g=c.length;d<g;d++)h+=c[d].length;for(A=new Uint8Array(h),v=0,d=0,g=c.length;d<g;d++)_=c[d],A.set(_,v),v+=_.length;return A}},f={arraySet:function(c,d,g,h,v){for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,m)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,m=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{m=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(g){var h,v,_,A,k,x=g.length,b=0;for(A=0;A<x;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),b+=v<128?1:v<2048?2:v<65536?3:4;for(h=new n.Buf8(b),k=0,A=0;k<b;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),v<128?h[k++]=v:v<2048?(h[k++]=192|v>>>6,h[k++]=128|v&63):v<65536?(h[k++]=224|v>>>12,h[k++]=128|v>>>6&63,h[k++]=128|v&63):(h[k++]=240|v>>>18,h[k++]=128|v>>>12&63,h[k++]=128|v>>>6&63,h[k++]=128|v&63);return h};function d(g,h){if(h<65534&&(g.subarray&&m||!g.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(g,h));for(var v="",_=0;_<h;_++)v+=String.fromCharCode(g[_]);return v}a.buf2binstring=function(g){return d(g,g.length)},a.binstring2buf=function(g){for(var h=new n.Buf8(g.length),v=0,_=h.length;v<_;v++)h[v]=g.charCodeAt(v);return h},a.buf2string=function(g,h){var v,_,A,k,x=h||g.length,b=new Array(x*2);for(_=0,v=0;v<x;){if(A=g[v++],A<128){b[_++]=A;continue}if(k=f[A],k>4){b[_++]=65533,v+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&v<x;)A=A<<6|g[v++]&63,k--;if(k>1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(g,h){var v;for(h=h||g.length,h>g.length&&(h=g.length),v=h-1;v>=0&&(g[v]&192)===128;)v--;return v<0||v===0?h:v+f[g[v]]>h?v:h}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,m,f,c){for(var d=l&65535|0,g=l>>>16&65535|0,h=0;f!==0;){h=f>2e3?2e3:f,f-=h;do d=d+m[c++]|0,g=g+d|0;while(--h);d%=65521,g%=65521}return d|g<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var g=0;g<8;g++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function m(f,c,d,g){var h=l,v=g+d;f^=-1;for(var _=g;_<v;_++)f=f>>>8^h[(f^c[_])&255];return f^-1}s.exports=m},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,g,h,v,_,A,k,x,b,T,Y,I,D,H,$,bt,W,y,L,lt,ot,K,gt,R,S;d=f.state,g=f.next_in,R=f.input,h=g+(f.avail_in-5),v=f.next_out,S=f.output,_=v-(c-f.avail_out),A=v+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,D=d.bits,H=d.lencode,$=d.distcode,bt=(1<<d.lenbits)-1,W=(1<<d.distbits)-1;t:do{D<15&&(I+=R[g++]<<D,D+=8,I+=R[g++]<<D,D+=8),y=H[I&bt];e:for(;;){if(L=y>>>24,I>>>=L,D-=L,L=y>>>16&255,L===0)S[v++]=y&65535;else if(L&16){lt=y&65535,L&=15,L&&(D<L&&(I+=R[g++]<<D,D+=8),lt+=I&(1<<L)-1,I>>>=L,D-=L),D<15&&(I+=R[g++]<<D,D+=8,I+=R[g++]<<D,D+=8),y=$[I&W];r:for(;;){if(L=y>>>24,I>>>=L,D-=L,L=y>>>16&255,L&16){if(ot=y&65535,L&=15,D<L&&(I+=R[g++]<<D,D+=8,D<L&&(I+=R[g++]<<D,D+=8)),ot+=I&(1<<L)-1,ot>k){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,D-=L,L=v-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}else if(T<L){if(K+=x+T-L,L-=T,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);if(K=0,T<lt){L=T,lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}}else if(K+=T-L,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}for(;lt>2;)S[v++]=gt[K++],S[v++]=gt[K++],S[v++]=gt[K++],lt-=3;lt&&(S[v++]=gt[K++],lt>1&&(S[v++]=gt[K++]))}else{K=v-ot;do S[v++]=S[K++],S[v++]=S[K++],S[v++]=S[K++],lt-=3;while(lt>2);lt&&(S[v++]=S[K++],lt>1&&(S[v++]=S[K++]))}}else if((L&64)===0){y=$[(y&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break t}break}}else if((L&64)===0){y=H[(y&65535)+(I&(1<<L)-1)];continue e}else if(L&32){d.mode=l;break t}else{f.msg="invalid literal/length code",d.mode=n;break t}break}}while(g<h&&v<A);lt=D>>3,g-=lt,D-=lt<<3,I&=(1<<D)-1,f.next_in=g,f.next_out=v,f.avail_in=g<h?5+(h-g):5-(g-h),f.avail_out=v<A?257+(A-v):257-(v-A),d.hold=I,d.bits=D}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),m=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,g=1,h=2,v=4,_=5,A=6,k=0,x=1,b=2,T=-2,Y=-3,I=-4,D=-5,H=8,$=1,bt=2,W=3,y=4,L=5,lt=6,ot=7,K=8,gt=9,R=10,S=11,E=12,et=13,ct=14,at=15,Ct=16,Yt=17,Ot=18,J=19,St=20,At=21,Ce=22,zt=23,nr=24,Ke=25,N=26,O=27,B=28,P=29,V=30,dt=31,rt=32,st=852,wt=592,ut=15,q=ut;function Ft(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Jt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ge(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function ee(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,ge(w))}function Qt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,ee(w))}function Vt(w,M){var i,U;return w?(U=new Jt,w.state=U,U.window=null,i=Qt(w,M),i!==k&&(w.state=null),i):T}function $t(w){return Vt(w,q)}var re=!0,pt,Kr;function Tr(w){if(re){var M;for(pt=new n.Buf32(512),Kr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(g,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(h,w.lens,0,32,Kr,0,w.work,{bits:5}),re=!1}w.lencode=pt,w.lenbits=9,w.distcode=Kr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pt))),0}function ko(w,M){var i,U,Pt,G,oe,j,Dt,F,C,ar,Tt,Q,ir,lr,It=0,xt,Gt,jt,qt,Ge,ur,Lt,se,Nt=new n.Buf8(4),ne,ue,_r=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return T;i=w.state,i.mode===E&&(i.mode=et),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,ar=j,Tt=Dt,se=k;t:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=et;break}for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Lt,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case bt:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==H){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=m(i.check,Nt,4,0)),F=0,C=0,i.mode=y;case y:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=lt;case lt:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.comment+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.comment=null);i.mode=gt;case gt:if(i.flags&512){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Ft(F),F=0,C=0,i.mode=S;case S:if(i.havedict===0)return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===_||M===A)break t;case et:if(i.last){F>>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(Tr(i),i.mode=St,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Yt;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Dt&&(Q=Dt),Q===0)break t;n.arraySet(Pt,U,G,Q,oe),j-=Q,G+=Q,Dt-=Q,oe+=Q,i.length-=Q;break}i.mode=E;break;case Yt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=Ot;case Ot:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.lens[_r[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[_r[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,ne={bits:i.lenbits},se=c(d,i.lens,0,19,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(jt<16)F>>>=xt,C-=xt,i.lens[i.have++]=jt;else{if(jt===16){for(ue=xt+2;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F>>>=xt,C-=xt,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ue=xt+3;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ue=xt+7;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,ne={bits:i.lenbits},se=c(g,i.lens,0,i.nlen,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,ne={bits:i.distbits},se=c(h,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,ne),i.distbits=ne.bits,se){w.msg="invalid distances set",i.mode=V;break}if(i.mode=St,M===A)break t;case St:i.mode=At;case At:if(j>=6&&Dt>=258){w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(Gt&&(Gt&240)===0){for(qt=xt,Ge=Gt,ur=jt;It=i.lencode[ur+((F&(1<<qt+Ge)-1)>>qt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=xt,C-=xt,i.back+=xt,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=E;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Gt&15,i.mode=Ce;case Ce:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<<i.distbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((Gt&240)===0){for(qt=xt,Ge=Gt,ur=jt;It=i.distcode[ur+((F&(1<<qt+Ge)-1)>>qt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=xt,C-=xt,i.back+=xt,Gt&64){w.msg="invalid distance code",i.mode=V;break}i.offset=jt,i.extra=Gt&15,i.mode=nr;case nr:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Ke;case Ke:if(Dt===0)break t;if(Q=Tt-Dt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ir=i.wsize-Q):ir=i.wnext-Q,Q>i.length&&(Q=i.length),lr=i.window}else lr=Pt,ir=oe-i.offset,Q=i.length;Q>Dt&&(Q=Dt),Dt-=Q,i.length-=Q;do Pt[oe++]=lr[ir++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Dt===0)break t;Pt[oe++]=i.length,Dt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<<C,C+=8}if(Tt-=Dt,w.total_out+=Tt,i.total+=Tt,Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,oe-Tt):l(i.check,Pt,Tt,oe-Tt)),Tt=Dt,(i.flags?F:Ft(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=P;case P:se=x;break t;case V:se=Y;break t;case dt:return I;case rt:default:return T}return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Tt!==w.avail_out&&i.mode<V&&(i.mode<O||M!==v))&&Mt(w,w.output,w.next_out,Tt-w.avail_out)?(i.mode=dt,I):(ar-=w.avail_in,Tt-=w.avail_out,w.total_in+=ar,w.total_out+=Tt,i.total+=Tt,i.wrap&&Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,w.next_out-Tt):l(i.check,Pt,Tt,w.next_out-Tt)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===St||i.mode===at?256:0),(ar===0&&Tt===0||M===v)&&se===k&&(se=D),se)}function Fe(w){if(!w||!w.state)return T;var M=w.state;return M.window&&(M.window=null),w.state=null,k}function Re(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?T:(i.head=M,M.done=!1,k)}function ye(w,M){var i=M.length,U,Pt,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==S)?T:U.mode===S&&(Pt=1,Pt=l(Pt,M,i,0),Pt!==U.check)?Y:(G=Mt(w,M,i,i),G?(U.mode=dt,I):(U.havedict=1,k))}a.inflateReset=ee,a.inflateReset2=Qt,a.inflateResetKeep=ge,a.inflateInit=$t,a.inflateInit2=Vt,a.inflate=ko,a.inflateEnd=Fe,a.inflateGetHeader=Re,a.inflateSetDictionary=ye,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,m=852,f=592,c=0,d=1,g=2,h=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],v=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(x,b,T,Y,I,D,H,$){var bt=$.bits,W=0,y=0,L=0,lt=0,ot=0,K=0,gt=0,R=0,S=0,E=0,et,ct,at,Ct,Yt,Ot=null,J=0,St,At=new n.Buf16(l+1),Ce=new n.Buf16(l+1),zt=null,nr=0,Ke,N,O;for(W=0;W<=l;W++)At[W]=0;for(y=0;y<Y;y++)At[b[T+y]]++;for(ot=bt,lt=l;lt>=1&&At[lt]===0;lt--);if(ot>lt&&(ot=lt),lt===0)return I[D++]=1<<24|64<<16|0,I[D++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<lt&&At[L]===0;L++);for(ot<L&&(ot=L),R=1,W=1;W<=l;W++)if(R<<=1,R-=At[W],R<0)return-1;if(R>0&&(x===c||lt!==1))return-1;for(Ce[1]=0,W=1;W<l;W++)Ce[W+1]=Ce[W]+At[W];for(y=0;y<Y;y++)b[T+y]!==0&&(H[Ce[b[T+y]]++]=y);if(x===c?(Ot=zt=H,St=19):x===d?(Ot=h,J-=257,zt=v,nr-=257,St=256):(Ot=_,zt=A,St=-1),E=0,y=0,W=L,Yt=D,K=ot,gt=0,at=-1,S=1<<ot,Ct=S-1,x===d&&S>m||x===g&&S>f)return 1;for(;;){Ke=W-gt,H[y]<St?(N=0,O=H[y]):H[y]>St?(N=zt[nr+H[y]],O=Ot[J+H[y]]):(N=96,O=0),et=1<<W-gt,ct=1<<K,L=ct;do ct-=et,I[Yt+(E>>gt)+ct]=Ke<<24|N<<16|O|0;while(ct!==0);for(et=1<<W-1;E&et;)et>>=1;if(et!==0?(E&=et-1,E+=et):E=0,y++,--At[W]===0){if(W===lt)break;W=b[T+H[y]]}if(W>ot&&(E&Ct)!==at){for(gt===0&&(gt=ot),Yt+=L,K=W-gt,R=1<<K;K+gt<lt&&(R-=At[K+gt],!(R<=0));)K++,R<<=1;if(S+=1<<K,x===d&&S>m||x===g&&S>f)return 1;at=E&Ct,I[at]=ot<<24|K<<16|Yt-D|0}}return E!==0&&(I[Yt+E]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),m=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),g=o("./zlib/gzheader"),h=Object.prototype.toString;function v(k){if(!(this instanceof v))return new v(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new g,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=m.string2buf(x.dictionary):h.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}v.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,D,H,$,bt,W=!1;if(this.ended)return!1;D=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=m.binstring2buf(k):h.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(D===f.Z_FINISH||D===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=m.utf8border(b.output,b.next_out),$=b.next_out-H,bt=m.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(D=f.Z_FINISH),D===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(D===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},v.prototype.onData=function(k){this.chunks.push(k)},v.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new v(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=v,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var pw=globalThis.fetch,ns=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},$c=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;r<o&&t.__mayPropagate;r++)e[r](t)}},td=new Date("1904-01-01T00:00:00+0000").getTime();function ed(t){return Array.from(t).map(e=>String.fromCharCode(e)).join("")}var rd=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return ed([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(td+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new rd(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var od=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new sd(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},sd=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},Ll=Il.inflate||void 0,Bl=void 0,nd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new ad(o)),id(this,e,r)}},ad=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function id(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(Ll)l=Ll(new Uint8Array(n));else if(Bl)l=Bl(new Uint8Array(n));else{let m="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(m),new Error(m)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Vl=El,Dl=void 0,ld=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new ud(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,m)=>{let f=this.directory[m+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Vl)a=Vl(new Uint8Array(n));else if(Dl)a=new Uint8Array(Dl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}fd(this,a,r)}},ud=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=cd(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function fd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function cd(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var Hl={},Wl=!1;Promise.all([Promise.resolve().then(function(){return zd}),Promise.resolve().then(function(){return Gd}),Promise.resolve().then(function(){return Ud}),Promise.resolve().then(function(){return Yd}),Promise.resolve().then(function(){return Zd}),Promise.resolve().then(function(){return $d}),Promise.resolve().then(function(){return em}),Promise.resolve().then(function(){return om}),Promise.resolve().then(function(){return mm}),Promise.resolve().then(function(){return Fm}),Promise.resolve().then(function(){return cp}),Promise.resolve().then(function(){return mp}),Promise.resolve().then(function(){return yp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return Cp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return _p}),Promise.resolve().then(function(){return Ap}),Promise.resolve().then(function(){return Ep}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Gp}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Wp}),Promise.resolve().then(function(){return qp}),Promise.resolve().then(function(){return Xp}),Promise.resolve().then(function(){return Jp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return rh}),Promise.resolve().then(function(){return lh}),Promise.resolve().then(function(){return dh}),Promise.resolve().then(function(){return hh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Sh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return Oh}),Promise.resolve().then(function(){return _h}),Promise.resolve().then(function(){return Ih}),Promise.resolve().then(function(){return Bh}),Promise.resolve().then(function(){return Nh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];Hl[r]=e[r]}),Wl=!0});function dd(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=Hl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function md(){let t=0;function e(r,o){if(!Wl)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(dd)}return new Promise((r,o)=>e(r))}function pd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function hd(t,e,r={}){if(!globalThis.document)return;let o=pd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` + `),new y("",l,":"),new y(" ",l,". "),new y("",l,"ed "),new y("",W,""),new y("",$,""),new y("",h,""),new y("",l,"("),new y("",k,", "),new y("",_,""),new y("",l," at "),new y("",l,"ly "),new y(" the ",l," of "),new y("",g,""),new y("",A,""),new y(" ",k,", "),new y("",k,'"'),new y(".",l,"("),new y("",x," "),new y("",k,'">'),new y("",l,'="'),new y(" ",l,"."),new y(".com/",l,""),new y(" the ",l," of the "),new y("",k,"'"),new y("",l,". This "),new y("",l,","),new y(".",l," "),new y("",k,"("),new y("",k,"."),new y("",l," not "),new y(" ",l,'="'),new y("",l,"er "),new y(" ",x," "),new y("",l,"al "),new y(" ",x,""),new y("",l,"='"),new y("",x,'"'),new y("",k,". "),new y(" ",l,"("),new y("",l,"ful "),new y(" ",k,". "),new y("",l,"ive "),new y("",l,"less "),new y("",x,"'"),new y("",l,"est "),new y(" ",k,"."),new y("",x,'">'),new y(" ",l,"='"),new y("",k,","),new y("",l,"ize "),new y("",x,"."),new y("\xC2\xA0",l,""),new y(" ",l,","),new y("",k,'="'),new y("",x,'="'),new y("",l,"ous "),new y("",x,", "),new y("",k,"='"),new y(" ",k,","),new y(" ",x,'="'),new y(" ",x,", "),new y("",x,","),new y("",x,"("),new y("",x,". "),new y(" ",x,"."),new y("",x,"='"),new y(" ",x,". "),new y(" ",k,'="'),new y(" ",x,"='"),new y(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function lt(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,E,S){var R=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ct<b?0:ct-(b-1),Ct=0,Yt=K,Ot;at>E&&(at=E);for(var J=0;J<R.length;)ot[K++]=R[J++];for(gt+=at,E-=at,ct<=A&&(E-=ct),Ct=0;Ct<E;Ct++)ot[K++]=n.dictionary[gt+Ct];if(Ot=K-E,ct===k)lt(ot,Ot);else if(ct===x)for(;E>0;){var St=lt(ot,Ot);Ot+=St,E-=St}for(var At=0;At<et.length;)ot[K++]=et[At++];return K-Yt}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ss=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Il=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof ss=="function"&&ss;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof ss=="function"&&ss,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var g=d.shift();if(g){if(typeof g!="object")throw new TypeError(g+"must be non-object");for(var h in g)l(g,h)&&(c[h]=g[h])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var m={arraySet:function(c,d,g,h,v){if(d.subarray&&c.subarray){c.set(d.subarray(g,g+h),v);return}for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){var d,g,h,v,_,A;for(h=0,d=0,g=c.length;d<g;d++)h+=c[d].length;for(A=new Uint8Array(h),v=0,d=0,g=c.length;d<g;d++)_=c[d],A.set(_,v),v+=_.length;return A}},f={arraySet:function(c,d,g,h,v){for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,m)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,m=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{m=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(g){var h,v,_,A,k,x=g.length,b=0;for(A=0;A<x;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),b+=v<128?1:v<2048?2:v<65536?3:4;for(h=new n.Buf8(b),k=0,A=0;k<b;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),v<128?h[k++]=v:v<2048?(h[k++]=192|v>>>6,h[k++]=128|v&63):v<65536?(h[k++]=224|v>>>12,h[k++]=128|v>>>6&63,h[k++]=128|v&63):(h[k++]=240|v>>>18,h[k++]=128|v>>>12&63,h[k++]=128|v>>>6&63,h[k++]=128|v&63);return h};function d(g,h){if(h<65534&&(g.subarray&&m||!g.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(g,h));for(var v="",_=0;_<h;_++)v+=String.fromCharCode(g[_]);return v}a.buf2binstring=function(g){return d(g,g.length)},a.binstring2buf=function(g){for(var h=new n.Buf8(g.length),v=0,_=h.length;v<_;v++)h[v]=g.charCodeAt(v);return h},a.buf2string=function(g,h){var v,_,A,k,x=h||g.length,b=new Array(x*2);for(_=0,v=0;v<x;){if(A=g[v++],A<128){b[_++]=A;continue}if(k=f[A],k>4){b[_++]=65533,v+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&v<x;)A=A<<6|g[v++]&63,k--;if(k>1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(g,h){var v;for(h=h||g.length,h>g.length&&(h=g.length),v=h-1;v>=0&&(g[v]&192)===128;)v--;return v<0||v===0?h:v+f[g[v]]>h?v:h}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,m,f,c){for(var d=l&65535|0,g=l>>>16&65535|0,h=0;f!==0;){h=f>2e3?2e3:f,f-=h;do d=d+m[c++]|0,g=g+d|0;while(--h);d%=65521,g%=65521}return d|g<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var g=0;g<8;g++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function m(f,c,d,g){var h=l,v=g+d;f^=-1;for(var _=g;_<v;_++)f=f>>>8^h[(f^c[_])&255];return f^-1}s.exports=m},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,g,h,v,_,A,k,x,b,T,Y,I,D,H,$,bt,W,y,L,lt,ot,K,gt,E,S;d=f.state,g=f.next_in,E=f.input,h=g+(f.avail_in-5),v=f.next_out,S=f.output,_=v-(c-f.avail_out),A=v+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,D=d.bits,H=d.lencode,$=d.distcode,bt=(1<<d.lenbits)-1,W=(1<<d.distbits)-1;t:do{D<15&&(I+=E[g++]<<D,D+=8,I+=E[g++]<<D,D+=8),y=H[I&bt];e:for(;;){if(L=y>>>24,I>>>=L,D-=L,L=y>>>16&255,L===0)S[v++]=y&65535;else if(L&16){lt=y&65535,L&=15,L&&(D<L&&(I+=E[g++]<<D,D+=8),lt+=I&(1<<L)-1,I>>>=L,D-=L),D<15&&(I+=E[g++]<<D,D+=8,I+=E[g++]<<D,D+=8),y=$[I&W];r:for(;;){if(L=y>>>24,I>>>=L,D-=L,L=y>>>16&255,L&16){if(ot=y&65535,L&=15,D<L&&(I+=E[g++]<<D,D+=8,D<L&&(I+=E[g++]<<D,D+=8)),ot+=I&(1<<L)-1,ot>k){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,D-=L,L=v-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}else if(T<L){if(K+=x+T-L,L-=T,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);if(K=0,T<lt){L=T,lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}}else if(K+=T-L,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}for(;lt>2;)S[v++]=gt[K++],S[v++]=gt[K++],S[v++]=gt[K++],lt-=3;lt&&(S[v++]=gt[K++],lt>1&&(S[v++]=gt[K++]))}else{K=v-ot;do S[v++]=S[K++],S[v++]=S[K++],S[v++]=S[K++],lt-=3;while(lt>2);lt&&(S[v++]=S[K++],lt>1&&(S[v++]=S[K++]))}}else if((L&64)===0){y=$[(y&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break t}break}}else if((L&64)===0){y=H[(y&65535)+(I&(1<<L)-1)];continue e}else if(L&32){d.mode=l;break t}else{f.msg="invalid literal/length code",d.mode=n;break t}break}}while(g<h&&v<A);lt=D>>3,g-=lt,D-=lt<<3,I&=(1<<D)-1,f.next_in=g,f.next_out=v,f.avail_in=g<h?5+(h-g):5-(g-h),f.avail_out=v<A?257+(A-v):257-(v-A),d.hold=I,d.bits=D}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),m=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,g=1,h=2,v=4,_=5,A=6,k=0,x=1,b=2,T=-2,Y=-3,I=-4,D=-5,H=8,$=1,bt=2,W=3,y=4,L=5,lt=6,ot=7,K=8,gt=9,E=10,S=11,R=12,et=13,ct=14,at=15,Ct=16,Yt=17,Ot=18,J=19,St=20,At=21,Ce=22,zt=23,nr=24,Ke=25,N=26,O=27,B=28,P=29,V=30,dt=31,rt=32,st=852,wt=592,ut=15,q=ut;function Ft(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Jt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ge(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function ee(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,ge(w))}function Qt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,ee(w))}function Vt(w,M){var i,U;return w?(U=new Jt,w.state=U,U.window=null,i=Qt(w,M),i!==k&&(w.state=null),i):T}function $t(w){return Vt(w,q)}var re=!0,pt,Kr;function Tr(w){if(re){var M;for(pt=new n.Buf32(512),Kr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(g,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(h,w.lens,0,32,Kr,0,w.work,{bits:5}),re=!1}w.lencode=pt,w.lenbits=9,w.distcode=Kr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pt))),0}function ko(w,M){var i,U,Pt,G,oe,j,Dt,F,C,ar,Tt,Q,ir,lr,It=0,xt,Gt,jt,qt,Ge,ur,Lt,se,Nt=new n.Buf8(4),ne,ue,_r=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return T;i=w.state,i.mode===R&&(i.mode=et),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,ar=j,Tt=Dt,se=k;t:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=et;break}for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Lt,w.adler=i.check=1,i.mode=F&512?E:R,F=0,C=0;break;case bt:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==H){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=m(i.check,Nt,4,0)),F=0,C=0,i.mode=y;case y:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=lt;case lt:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.comment+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.comment=null);i.mode=gt;case gt:if(i.flags&512){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=R;break;case E:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Ft(F),F=0,C=0,i.mode=S;case S:if(i.havedict===0)return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=R;case R:if(M===_||M===A)break t;case et:if(i.last){F>>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(Tr(i),i.mode=St,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Yt;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Dt&&(Q=Dt),Q===0)break t;n.arraySet(Pt,U,G,Q,oe),j-=Q,G+=Q,Dt-=Q,oe+=Q,i.length-=Q;break}i.mode=R;break;case Yt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=Ot;case Ot:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.lens[_r[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[_r[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,ne={bits:i.lenbits},se=c(d,i.lens,0,19,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(jt<16)F>>>=xt,C-=xt,i.lens[i.have++]=jt;else{if(jt===16){for(ue=xt+2;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F>>>=xt,C-=xt,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ue=xt+3;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ue=xt+7;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,ne={bits:i.lenbits},se=c(g,i.lens,0,i.nlen,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,ne={bits:i.distbits},se=c(h,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,ne),i.distbits=ne.bits,se){w.msg="invalid distances set",i.mode=V;break}if(i.mode=St,M===A)break t;case St:i.mode=At;case At:if(j>=6&&Dt>=258){w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===R&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(Gt&&(Gt&240)===0){for(qt=xt,Ge=Gt,ur=jt;It=i.lencode[ur+((F&(1<<qt+Ge)-1)>>qt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=xt,C-=xt,i.back+=xt,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=R;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Gt&15,i.mode=Ce;case Ce:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<<i.distbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((Gt&240)===0){for(qt=xt,Ge=Gt,ur=jt;It=i.distcode[ur+((F&(1<<qt+Ge)-1)>>qt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=xt,C-=xt,i.back+=xt,Gt&64){w.msg="invalid distance code",i.mode=V;break}i.offset=jt,i.extra=Gt&15,i.mode=nr;case nr:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Ke;case Ke:if(Dt===0)break t;if(Q=Tt-Dt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ir=i.wsize-Q):ir=i.wnext-Q,Q>i.length&&(Q=i.length),lr=i.window}else lr=Pt,ir=oe-i.offset,Q=i.length;Q>Dt&&(Q=Dt),Dt-=Q,i.length-=Q;do Pt[oe++]=lr[ir++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Dt===0)break t;Pt[oe++]=i.length,Dt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<<C,C+=8}if(Tt-=Dt,w.total_out+=Tt,i.total+=Tt,Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,oe-Tt):l(i.check,Pt,Tt,oe-Tt)),Tt=Dt,(i.flags?F:Ft(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=P;case P:se=x;break t;case V:se=Y;break t;case dt:return I;case rt:default:return T}return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Tt!==w.avail_out&&i.mode<V&&(i.mode<O||M!==v))&&Mt(w,w.output,w.next_out,Tt-w.avail_out)?(i.mode=dt,I):(ar-=w.avail_in,Tt-=w.avail_out,w.total_in+=ar,w.total_out+=Tt,i.total+=Tt,i.wrap&&Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,w.next_out-Tt):l(i.check,Pt,Tt,w.next_out-Tt)),w.data_type=i.bits+(i.last?64:0)+(i.mode===R?128:0)+(i.mode===St||i.mode===at?256:0),(ar===0&&Tt===0||M===v)&&se===k&&(se=D),se)}function Fe(w){if(!w||!w.state)return T;var M=w.state;return M.window&&(M.window=null),w.state=null,k}function Ee(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?T:(i.head=M,M.done=!1,k)}function ye(w,M){var i=M.length,U,Pt,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==S)?T:U.mode===S&&(Pt=1,Pt=l(Pt,M,i,0),Pt!==U.check)?Y:(G=Mt(w,M,i,i),G?(U.mode=dt,I):(U.havedict=1,k))}a.inflateReset=ee,a.inflateReset2=Qt,a.inflateResetKeep=ge,a.inflateInit=$t,a.inflateInit2=Vt,a.inflate=ko,a.inflateEnd=Fe,a.inflateGetHeader=Ee,a.inflateSetDictionary=ye,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,m=852,f=592,c=0,d=1,g=2,h=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],v=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(x,b,T,Y,I,D,H,$){var bt=$.bits,W=0,y=0,L=0,lt=0,ot=0,K=0,gt=0,E=0,S=0,R=0,et,ct,at,Ct,Yt,Ot=null,J=0,St,At=new n.Buf16(l+1),Ce=new n.Buf16(l+1),zt=null,nr=0,Ke,N,O;for(W=0;W<=l;W++)At[W]=0;for(y=0;y<Y;y++)At[b[T+y]]++;for(ot=bt,lt=l;lt>=1&&At[lt]===0;lt--);if(ot>lt&&(ot=lt),lt===0)return I[D++]=1<<24|64<<16|0,I[D++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<lt&&At[L]===0;L++);for(ot<L&&(ot=L),E=1,W=1;W<=l;W++)if(E<<=1,E-=At[W],E<0)return-1;if(E>0&&(x===c||lt!==1))return-1;for(Ce[1]=0,W=1;W<l;W++)Ce[W+1]=Ce[W]+At[W];for(y=0;y<Y;y++)b[T+y]!==0&&(H[Ce[b[T+y]]++]=y);if(x===c?(Ot=zt=H,St=19):x===d?(Ot=h,J-=257,zt=v,nr-=257,St=256):(Ot=_,zt=A,St=-1),R=0,y=0,W=L,Yt=D,K=ot,gt=0,at=-1,S=1<<ot,Ct=S-1,x===d&&S>m||x===g&&S>f)return 1;for(;;){Ke=W-gt,H[y]<St?(N=0,O=H[y]):H[y]>St?(N=zt[nr+H[y]],O=Ot[J+H[y]]):(N=96,O=0),et=1<<W-gt,ct=1<<K,L=ct;do ct-=et,I[Yt+(R>>gt)+ct]=Ke<<24|N<<16|O|0;while(ct!==0);for(et=1<<W-1;R&et;)et>>=1;if(et!==0?(R&=et-1,R+=et):R=0,y++,--At[W]===0){if(W===lt)break;W=b[T+H[y]]}if(W>ot&&(R&Ct)!==at){for(gt===0&&(gt=ot),Yt+=L,K=W-gt,E=1<<K;K+gt<lt&&(E-=At[K+gt],!(E<=0));)K++,E<<=1;if(S+=1<<K,x===d&&S>m||x===g&&S>f)return 1;at=R&Ct,I[at]=ot<<24|K<<16|Yt-D|0}}return R!==0&&(I[Yt+R]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),m=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),g=o("./zlib/gzheader"),h=Object.prototype.toString;function v(k){if(!(this instanceof v))return new v(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new g,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=m.string2buf(x.dictionary):h.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}v.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,D,H,$,bt,W=!1;if(this.ended)return!1;D=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=m.binstring2buf(k):h.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(D===f.Z_FINISH||D===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=m.utf8border(b.output,b.next_out),$=b.next_out-H,bt=m.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(D=f.Z_FINISH),D===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(D===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},v.prototype.onData=function(k){this.chunks.push(k)},v.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new v(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=v,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var ww=globalThis.fetch,ns=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},od=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;r<o&&t.__mayPropagate;r++)e[r](t)}},sd=new Date("1904-01-01T00:00:00+0000").getTime();function nd(t){return Array.from(t).map(e=>String.fromCharCode(e)).join("")}var ad=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return nd([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(sd+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new ad(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var id=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new ld(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},ld=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},Ll=Il.inflate||void 0,Bl=void 0,ud=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new fd(o)),cd(this,e,r)}},fd=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function cd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(Ll)l=Ll(new Uint8Array(n));else if(Bl)l=Bl(new Uint8Array(n));else{let m="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(m),new Error(m)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Vl=Rl,Dl=void 0,dd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new md(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,m)=>{let f=this.directory[m+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Vl)a=Vl(new Uint8Array(n));else if(Dl)a=new Uint8Array(Dl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}pd(this,a,r)}},md=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=hd(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function pd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function hd(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var Hl={},Wl=!1;Promise.all([Promise.resolve().then(function(){return Ud}),Promise.resolve().then(function(){return Wd}),Promise.resolve().then(function(){return qd}),Promise.resolve().then(function(){return Kd}),Promise.resolve().then(function(){return Qd}),Promise.resolve().then(function(){return om}),Promise.resolve().then(function(){return nm}),Promise.resolve().then(function(){return im}),Promise.resolve().then(function(){return ym}),Promise.resolve().then(function(){return _m}),Promise.resolve().then(function(){return hp}),Promise.resolve().then(function(){return yp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return Tp}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Rp}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Mp}),Promise.resolve().then(function(){return jp}),Promise.resolve().then(function(){return Wp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return Xp}),Promise.resolve().then(function(){return Jp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return eh}),Promise.resolve().then(function(){return oh}),Promise.resolve().then(function(){return ah}),Promise.resolve().then(function(){return dh}),Promise.resolve().then(function(){return gh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Th}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Rh}),Promise.resolve().then(function(){return Dh}),Promise.resolve().then(function(){return zh}),Promise.resolve().then(function(){return jh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];Hl[r]=e[r]}),Wl=!0});function gd(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=Hl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function yd(){let t=0;function e(r,o){if(!Wl)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(gd)}return new Promise((r,o)=>e(r))}function vd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function bd(t,e,r={}){if(!globalThis.document)return;let o=vd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` @font-face { font-family: "${t}"; ${a.join(` `)} src: url("${e}") format("${o}"); -}`,globalThis.document.head.appendChild(s),s}var gd=[0,1,0,0],yd=[79,84,84,79],vd=[119,79,70,70],bd=[119,79,70,50];function as(t,e){if(t.length===e.length){for(let r=0;r<t.length;r++)if(t[r]!==e[r])return;return!0}}function wd(t){let e=[t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3)];if(as(e,gd)||as(e,yd))return"SFNT";if(as(e,vd))return"WOFF";if(as(e,bd))return"WOFF2"}function Sd(t){if(!t.ok)throw new Error(`HTTP ${t.status} - ${t.statusText}`);return t}var ls=class extends $c{constructor(t,e={}){super(),this.name=t,this.options=e,this.metrics=!1}get src(){return this.__src}set src(t){this.__src=t,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await hd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>Sd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new ns("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=wd(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new ns("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return md().then(e=>(t==="SFNT"&&(this.opentype=new od(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new nd(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new ld(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new ns("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new ns("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=ls;var Ye=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},xd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Cd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new Fd(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},Fd=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},kd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,m=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(m,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],m=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let g=n+m,h=l+m;g<=h;g++)d.push(g);else for(let g=0,h=l-n;g<=h;g++)r.currentPosition=c+f+g*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:m,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Od=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),t<this.firstCode)return{};if(t>this.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Td=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new _d(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},_d=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Pd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),t<this.startCharCode||t>this.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Ad=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new Rd(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)<t)continue;let s=e.startCharCode+(t-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Rd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Ed=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Id(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Id=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},Ld=class extends Ye{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new Bd(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},Bd=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Vd(t,e,r){let o=t.uint16;return o===0?new xd(t,e,r):o===2?new Cd(t,e,r):o===4?new kd(t,e,r):o===6?new Od(t,e,r):o===8?new Td(t,e,r):o===10?new Pd(t,e,r):o===12?new Ad(t,e,r):o===13?new Ed(t,e,r):o===14?new Ld(t,e,r):{}}var Dd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Nd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e<this.numTables;e++){let r=this.getSubTable(e).reverse(t);if(r)return r}}getGlyphId(t){let e=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},Nd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Vd(t,r,o)))}},zd=Object.freeze({__proto__:null,cmap:Dd}),Md=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Gd=Object.freeze({__proto__:null,head:Md}),jd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},Ud=Object.freeze({__proto__:null,hhea:jd}),Hd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new Wd(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(m=>o.int16)))}}},Wd=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},Yd=Object.freeze({__proto__:null,hmtx:Hd}),qd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Zd=Object.freeze({__proto__:null,maxp:qd}),Xd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Jd(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new Kd(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},Kd=class{constructor(t,e){this.length=t,this.offset=e}},Jd=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,Qd(t,this)))}};function Qd(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,m=o/2;l<m;l++)n[l]=String.fromCharCode(t.uint16);return n.join("")}let s=t.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var $d=Object.freeze({__proto__:null,name:Xd}),tm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},em=Object.freeze({__proto__:null,OS2:tm}),rm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Nl.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Nl[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Nl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],om=Object.freeze({__proto__:null,post:rm}),sm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new wn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new wn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new wn({offset:t.offset+this.itemVarStoreOffset},e)))}},wn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new nm({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new am({offset:t.offset+this.baseScriptListOffset},e))}},nm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},am=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new im(this.start,r))))}},im=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new lm(e)))}},lm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new um(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new fm(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Yl(t)))}},um=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Yl(e)))}},fm=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new dm(this.parser)}},Yl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new cm(t))))}},cm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},dm=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},mm=Object.freeze({__proto__:null,BASE:sm}),zl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new pm(t)))}},pm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},vo=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new hm(t)))}},hm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},gm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},ym=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new zl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new vm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new wm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new zl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Cm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new gm(r)}))}},vm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new bm(this.parser)}},bm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},wm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new vo(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new Sm(this.parser)}},Sm=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new xm(this.parser)}},xm=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},Cm=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new vo(this.parser)}},Fm=Object.freeze({__proto__:null,GDEF:ym}),Ml=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new km(t))}},km=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Om=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Tm(t))}},Tm=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},Gl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},jl=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new _m(t))}},_m=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Pm=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new Rm(t);if(e.startsWith("cc"))return new Am(t);if(e.startsWith("ss"))return new Em(t)}}},Am=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},Rm=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Em=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function ql(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var Fr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new vo(t)}},xn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Im=class extends Fr{constructor(t){super(t),this.deltaGlyphID=t.int16}},Lm=class extends Fr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new Bm(e)}},Bm=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Vm=class extends Fr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Dm(e)}},Dm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Nm=class extends Fr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new zm(e)}},zm=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Mm(e)}},Mm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Gm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(ql(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new xn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new jm(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new Um(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new vo(e)}},jm=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new Zl(e)}},Zl=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new xn(t))}},Um=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Hm(e)}},Hm=class extends Zl{constructor(t){super(t)}},Wm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(ql(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Xl(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new Ym(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new Zm(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new vo(e)}},Ym=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new qm(e)}},qm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new xn(t))}},Zm=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Xm(e)}},Xm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Xl(t))}},Xl=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Km=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},Jm=class extends Fr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Qm={buildSubtable:function(t,e){let r=new[void 0,Im,Lm,Vm,Nm,Gm,Wm,Km,Jm][t](e);return r.type=t,r}},qe=class extends Bt{constructor(t){super(t)}},$m=class extends qe{constructor(t){super(t),console.log("lookup type 1")}},tp=class extends qe{constructor(t){super(t),console.log("lookup type 2")}},ep=class extends qe{constructor(t){super(t),console.log("lookup type 3")}},rp=class extends qe{constructor(t){super(t),console.log("lookup type 4")}},op=class extends qe{constructor(t){super(t),console.log("lookup type 5")}},sp=class extends qe{constructor(t){super(t),console.log("lookup type 6")}},np=class extends qe{constructor(t){super(t),console.log("lookup type 7")}},ap=class extends qe{constructor(t){super(t),console.log("lookup type 8")}},ip=class extends qe{constructor(t){super(t),console.log("lookup type 9")}},lp={buildSubtable:function(t,e){let r=new[void 0,$m,tp,ep,rp,op,sp,np,ap,ip][t](e);return r.type=t,r}},Ul=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},up=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?Qm:lp;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},Kl=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Ml.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Ml(o))),Z(this,"featureList",()=>a?jl.EMPTY:(o.currentPosition=s+this.featureListOffset,new jl(o))),Z(this,"lookupList",()=>a?Ul.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Ul(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Om(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new Gl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new Gl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Pm(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new up(this.parser,e)}},fp=class extends Kl{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},cp=Object.freeze({__proto__:null,GSUB:fp}),dp=class extends Kl{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},mp=Object.freeze({__proto__:null,GPOS:dp}),pp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new hp(r)}},hp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new gp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},gp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},yp=Object.freeze({__proto__:null,SVG:pp}),vp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new bp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new wp(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(t=>t.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},bp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},wp=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o<r&&(this.postScriptNameID=t.uint16)}},Sp=Object.freeze({__proto__:null,fvar:vp}),xp=class extends mt{constructor(t,e){let{p:r}=super(t,e),o=t.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},Cp=Object.freeze({__proto__:null,cvt:xp}),Fp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},kp=Object.freeze({__proto__:null,fpgm:Fp}),Op=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Tp(r)))}},Tp=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},_p=Object.freeze({__proto__:null,gasp:Op}),Pp=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Ap=Object.freeze({__proto__:null,glyf:Pp}),Rp=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Ep=Object.freeze({__proto__:null,loca:Rp}),Ip=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Lp=Object.freeze({__proto__:null,prep:Ip}),Bp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Vp=Object.freeze({__proto__:null,CFF:Bp}),Dp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Np=Object.freeze({__proto__:null,CFF2:Dp}),zp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Mp(r)))}},Mp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Gp=Object.freeze({__proto__:null,VORG:zp}),jp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new is(t),this.vert=new is(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},Up=class{constructor(t){this.hori=new is(t),this.vert=new is(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},is=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},Jl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new jp(o)))}},Hp=Object.freeze({__proto__:null,EBLC:Jl}),Ql=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},Wp=Object.freeze({__proto__:null,EBDT:Ql}),Yp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new Up(r)))}},qp=Object.freeze({__proto__:null,EBSC:Yp}),Zp=class extends Jl{constructor(t,e){super(t,e,"CBLC")}},Xp=Object.freeze({__proto__:null,CBLC:Zp}),Kp=class extends Ql{constructor(t,e){super(t,e,"CBDT")}},Jp=Object.freeze({__proto__:null,CBDT:Kp}),Qp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},$p=Object.freeze({__proto__:null,sbix:Qp}),th=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new Sn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new Sn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let m=new Sn(this.parser),f=m.gID;if(f===t)return m;f>t?s=l:f<t&&(e=l)}return!1}getLayers(t){let e=this.getBaseGlyphRecord(t);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*e.firstLayerIndex,[...new Array(e.numLayers)].map(r=>new eh(p))}},Sn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},eh=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},rh=Object.freeze({__proto__:null,COLR:th}),oh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new sh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new nh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new ah(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new ih(r,o))))}},sh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},nh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},ah=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},ih=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},lh=Object.freeze({__proto__:null,CPAL:oh}),uh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new fh(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new ch(this.parser)}},fh=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},ch=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},dh=Object.freeze({__proto__:null,DSIG:uh}),mh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new ph(o,s))}},ph=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},hh=Object.freeze({__proto__:null,hdmx:mh}),gh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new yh(r);s.push(n),o+=n}return s})}},yh=class{constructor(t){this.version=t.uint16,this.length=t.uint16,this.coverage=t.flags(8),this.format=t.uint8,this.format===0&&(this.nPairs=t.uint16,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(e=>new vh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},vh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},bh=Object.freeze({__proto__:null,kern:gh}),wh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},Sh=Object.freeze({__proto__:null,LTSH:wh}),xh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Ch=Object.freeze({__proto__:null,MERG:xh}),Fh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new kh(this.tableStart,r))}},kh=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Oh=Object.freeze({__proto__:null,meta:Fh}),Th=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},_h=Object.freeze({__proto__:null,PCLT:Th}),Ph=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Ah(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new Rh(r))}},Ah=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},Rh=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Eh(t))}},Eh=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Ih=Object.freeze({__proto__:null,VDMX:Ph}),Lh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},Bh=Object.freeze({__proto__:null,vhea:Lh}),Vh=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Dh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Dh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},Nh=Object.freeze({__proto__:null,vmtx:Vh});var $l=u(X(),1);var{kebabCase:zh}=yt($l.privateApis);function tu(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:zh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var he=u(z(),1);function Mh(){let{installFonts:t}=(0,bo.useContext)(ie),[e,r]=(0,bo.useState)(!1),[o,s]=(0,bo.useState)(null),a=h=>{l(h)},n=h=>{l(h.target.files)},l=async h=>{if(!h)return;s(null),r(!0);let v=new Set,_=[...h],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(v.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return gn.includes(Y)?(v.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)m(x);else{let b=A?(0,Wr.__)("Sorry, you are not allowed to upload this file type."):(0,Wr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},m=async h=>{let v=await Promise.all(h.map(async _=>{let A=await d(_);return await rr(A,A.file,"all"),A}));g(v)};async function f(h){let v=new ls("Uploaded Font");try{let _=await c(h);return await v.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(h){return new Promise((v,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(h),A.onload=()=>v(A.result),A.onerror=_})}let d=async h=>{let v=await c(h),_=new ls("Uploaded Font");_.fromDataBuffer(v,h.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",D=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=D?`${D.minValue} ${D.maxValue}`:null;return{file:h,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},g=async h=>{let v=tu(h);try{await t(v),s({type:"success",message:(0,Wr.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,he.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,he.jsx)(te.DropZone,{onFilesDrop:a}),(0,he.jsxs)(te.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,he.jsxs)(te.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,he.jsx)("ul",{children:o.errors.map((h,v)=>(0,he.jsx)("li",{children:h},v))})]}),e&&(0,he.jsx)(te.FlexItem,{children:(0,he.jsx)("div",{className:"font-library__upload-area",children:(0,he.jsx)(te.ProgressBar,{})})}),!e&&(0,he.jsx)(te.FormFileUpload,{accept:gn.map(h=>`.${h}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:h})=>(0,he.jsx)(te.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:h,children:(0,Wr.__)("Upload font")})}),(0,he.jsx)(te.__experimentalText,{className:"font-library__upload-area__text",children:(0,Wr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var us=Mh;var ru=u(z(),1),{Tabs:R2}=yt(Cn.privateApis),E2={id:"installed-fonts",title:(0,fs._x)("Library","Font library")},I2={id:"upload-fonts",title:(0,fs._x)("Upload","noun")};var ou=u(it(),1),Fn=u(X(),1),jh=u(vt(),1);var su=u(z(),1);var kn=u(z(),1);var nu=u(it(),1),cs=u(X(),1);var au=u(z(),1);var Tn=u(z(),1);var Pe=u(it(),1),_n=u(X(),1),Kh=u(vt(),1);var iu=u(ae(),1);var Zh=u(z(),1),{useSettingsForBlockElement:u6,TypographyPanel:f6}=yt(iu.privateApis);var Xh=u(z(),1);var Pn=u(z(),1),b6={text:{description:(0,Pe.__)("Manage the fonts used on the site."),title:(0,Pe.__)("Text")},link:{description:(0,Pe.__)("Manage the fonts and typography used on the links."),title:(0,Pe.__)("Links")},heading:{description:(0,Pe.__)("Manage the fonts and typography used on headings."),title:(0,Pe.__)("Headings")},caption:{description:(0,Pe.__)("Manage the fonts and typography used on captions."),title:(0,Pe.__)("Captions")},button:{description:(0,Pe.__)("Manage the fonts and typography used on buttons."),title:(0,Pe.__)("Buttons")}};var tg=u(it(),1),eg=u(X(),1),uu=u(ae(),1);var Yr=u(X(),1),lu=u(it(),1);var $h=u(vt(),1);var Jh=u(X(),1),Qh=u(z(),1);var An=u(z(),1);var Rn=u(z(),1),{useSettingsForBlockElement:B6,ColorPanel:V6}=yt(uu.privateApis);var lg=u(it(),1),gu=u(X(),1);var sg=u(mr(),1),En=u(X(),1),ng=u(it(),1);var ms=u(X(),1);var ds=u(X(),1);var fu=u(z(),1);function cu(){let{paletteColors:t}=Vr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,fu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var So=u(z(),1),rg={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},og=({label:t,isFocused:e,withHoverView:r})=>(0,So.jsx)(zr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,So.jsx)(ds.__unstableMotion.div,{variants:rg,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(ds.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(cu,{})})},o)}),du=og;var kr=u(z(),1),mu=["color"];function ps({title:t,gap:e=2}){let r=zo(mu);return r?.length<=1?null:(0,kr.jsxs)(ms.__experimentalVStack,{spacing:3,children:[t&&(0,kr.jsx)(xe,{level:3,children:t}),(0,kr.jsx)(ms.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,kr.jsx)(Gr,{variation:o,isPill:!0,properties:mu,showTooltip:!0,children:()=>(0,kr.jsx)(du,{})},s))})]})}var pu=u(z(),1);var ag=u(mr(),1),hs=u(X(),1),ig=u(it(),1);var hu=u(z(),1);var In=u(z(),1),{Tabs:iC}=yt(gu.privateApis);var fg=u(it(),1),vu=u(ae(),1),cg=u(X(),1);var yu=u(ae(),1);var ug=u(z(),1);var{BackgroundPanel:cC}=yt(yu.privateApis);var Ln=u(z(),1),{useHasBackgroundPanel:vC}=yt(vu.privateApis);var Or=u(X(),1),Bn=u(it(),1);var gg=u(vt(),1);var dg=u(X(),1),mg=u(it(),1),pg=u(z(),1);var Vn=u(z(),1),{Menu:AC}=yt(Or.privateApis);var Ut=u(X(),1),xo=u(it(),1);var gs=u(vt(),1);var Dn=u(z(),1),{Menu:WC}=yt(Ut.privateApis),YC=[{label:(0,xo.__)("Rename"),action:"rename"},{label:(0,xo.__)("Delete"),action:"delete"}],qC=[{label:(0,xo.__)("Reset"),action:"reset"}];var yg=u(z(),1);var wg=u(it(),1),wu=u(ae(),1);var bu=u(ae(),1),vg=u(vt(),1);var bg=u(z(),1),{useSettingsForBlockElement:rF,DimensionsPanel:oF}=yt(bu.privateApis);var Nn=u(z(),1),{useHasDimensionsPanel:fF,useSettingsForBlockElement:cF}=yt(wu.privateApis);var Ou=u(X(),1),Fg=u(it(),1);var xg=u(it(),1),Cg=u(X(),1);var Su=u(we(),1),xu=u(de(),1),vs=u(vt(),1),Cu=u(X(),1),Fu=u(it(),1);var ys=u(z(),1);function Sg({gap:t=2}){let{user:e}=(0,vs.useContext)(Kt),r=e?.styles,s=(0,xu.useSelect)(n=>{let l=n(Su.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!fo(n,["color"])&&!fo(n,["typography","spacing"])),a=(0,vs.useMemo)(()=>[...[{title:(0,Fu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let m=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(g=>{if(r.blocks?.[g]?.css){let h=m[g]||{},v={css:`${m[g]?.css||""} ${r.blocks?.[g]?.css?.trim()||""}`};m[g]={...h,...v}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(m).length>0?{blocks:m}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,ys.jsx)(Cu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,ys.jsx)(Gr,{variation:n,children:m=>(0,ys.jsx)(an,{label:n?.title,withHoverView:!0,isFocused:m,variation:n})},l))})}var zn=Sg;var ku=u(z(),1);var Mn=u(z(),1);var kg=u(it(),1),Og=u(X(),1),Tu=u(ae(),1);var Gn=u(z(),1),{AdvancedPanel:PF}=yt(Tu.privateApis);var Vu=u(it(),1),Un=u(X(),1),Hn=u(vt(),1);var Tg=u(de(),1),_g=u(we(),1),_u=u(vt(),1);var Ru=u(it(),1),Eu=u(X(),1),bs=u(Au(),1),Pg=u(we(),1),Ag=u(de(),1);var Iu=u(pn(),1),Lu=u(z(),1),LF=3600*1e3*24;var jn=u(X(),1),Co=u(it(),1);var Bu=u(z(),1);var Wn=u(z(),1);var Yn=u(it(),1),Ze=u(X(),1);var Bg=u(vt(),1);var Eg=u(X(),1),Ig=u(it(),1),Lg=u(z(),1);var qn=u(z(),1),{Menu:e3}=yt(Ze.privateApis);var Mu=u(it(),1),Me=u(X(),1);var Gu=u(vt(),1);var Vg=u(ae(),1),Dg=u(it(),1);var Ng=u(z(),1);var zg=u(X(),1),Du=u(it(),1),Mg=u(z(),1);var Fo=u(X(),1),Gg=u(it(),1),jg=u(vt(),1),Nu=u(z(),1);var Xe=u(X(),1),zu=u(z(),1);var Zn=u(z(),1),{Menu:b3}=yt(Me.privateApis);var Kn=u(z(),1);var Jn=u(z(),1);function qr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Jn.jsx)(uo,{value:r,baseValue:o,onChange:s,children:(0,Jn.jsx)(t,{...a})})}}var Yg=qr(zn);var qg=qr(ps);var Zg=qr(Yo);var Zr=u(z(),1);function Qn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Zr.jsx)(us,{});break;case"installed-fonts":s=(0,Zr.jsx)(ts,{});break;default:s=(0,Zr.jsx)(rs,{slug:o})}return(0,Zr.jsx)(uo,{value:t,baseValue:e,onChange:r,children:(0,Zr.jsx)(Xo,{children:s})})}var Hu=u(Ns()),{unlock:$n}=(0,Hu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='89af99528f']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","89af99528f"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:ws}=$n(Wu.privateApis),{useGlobalStyles:Xg}=$n(Yu.privateApis);function Kg(){let{records:t=[]}=(0,Ss.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,Zu.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=Xg(),l=(0,qu.useSelect)(f=>f(Ss.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let m=[{id:"installed-fonts",title:(0,Xr._x)("Library","Font library")}];return l&&(m.push({id:"upload-fonts",title:(0,Xr._x)("Upload","noun")}),m.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,Xr.__)("Install Fonts"):c})))),React.createElement(zs,{title:(0,Xr.__)("Fonts")},React.createElement(ws,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(ws.TabList,null,m.map(({id:f,title:c})=>React.createElement(ws.Tab,{key:f,tabId:f},c)))),m.map(({id:f})=>React.createElement(ws.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Qn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function Jg(){return React.createElement(Kg,null)}var Qg=Jg;export{Qg as stage}; +}`,globalThis.document.head.appendChild(s),s}var wd=[0,1,0,0],Sd=[79,84,84,79],xd=[119,79,70,70],Cd=[119,79,70,50];function as(t,e){if(t.length===e.length){for(let r=0;r<t.length;r++)if(t[r]!==e[r])return;return!0}}function Fd(t){let e=[t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3)];if(as(e,wd)||as(e,Sd))return"SFNT";if(as(e,xd))return"WOFF";if(as(e,Cd))return"WOFF2"}function kd(t){if(!t.ok)throw new Error(`HTTP ${t.status} - ${t.statusText}`);return t}var ls=class extends od{constructor(t,e={}){super(),this.name=t,this.options=e,this.metrics=!1}get src(){return this.__src}set src(t){this.__src=t,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await bd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>kd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new ns("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=Fd(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new ns("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return yd().then(e=>(t==="SFNT"&&(this.opentype=new id(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new ud(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new dd(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new ns("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new ns("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=ls;var Ye=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},Od=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Td=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new _d(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},_d=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},Pd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,m=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(m,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],m=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let g=n+m,h=l+m;g<=h;g++)d.push(g);else for(let g=0,h=l-n;g<=h;g++)r.currentPosition=c+f+g*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:m,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Ad=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),t<this.firstCode)return{};if(t>this.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Ed=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new Rd(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},Rd=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Id=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),t<this.startCharCode||t>this.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Ld=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new Bd(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)<t)continue;let s=e.startCharCode+(t-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Bd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Vd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Dd(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Dd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},Nd=class extends Ye{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new zd(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},zd=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Md(t,e,r){let o=t.uint16;return o===0?new Od(t,e,r):o===2?new Td(t,e,r):o===4?new Pd(t,e,r):o===6?new Ad(t,e,r):o===8?new Ed(t,e,r):o===10?new Id(t,e,r):o===12?new Ld(t,e,r):o===13?new Vd(t,e,r):o===14?new Nd(t,e,r):{}}var Gd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new jd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e<this.numTables;e++){let r=this.getSubTable(e).reverse(t);if(r)return r}}getGlyphId(t){let e=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},jd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Md(t,r,o)))}},Ud=Object.freeze({__proto__:null,cmap:Gd}),Hd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Wd=Object.freeze({__proto__:null,head:Hd}),Yd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},qd=Object.freeze({__proto__:null,hhea:Yd}),Zd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new Xd(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(m=>o.int16)))}}},Xd=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},Kd=Object.freeze({__proto__:null,hmtx:Zd}),Jd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Qd=Object.freeze({__proto__:null,maxp:Jd}),$d=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new em(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new tm(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},tm=class{constructor(t,e){this.length=t,this.offset=e}},em=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,rm(t,this)))}};function rm(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,m=o/2;l<m;l++)n[l]=String.fromCharCode(t.uint16);return n.join("")}let s=t.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var om=Object.freeze({__proto__:null,name:$d}),sm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},nm=Object.freeze({__proto__:null,OS2:sm}),am=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Nl.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Nl[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Nl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],im=Object.freeze({__proto__:null,post:am}),lm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new bn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new bn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new bn({offset:t.offset+this.itemVarStoreOffset},e)))}},bn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new um({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new fm({offset:t.offset+this.baseScriptListOffset},e))}},um=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},fm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new cm(this.start,r))))}},cm=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new dm(e)))}},dm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new mm(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new pm(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Yl(t)))}},mm=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Yl(e)))}},pm=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new gm(this.parser)}},Yl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new hm(t))))}},hm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},gm=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},ym=Object.freeze({__proto__:null,BASE:lm}),zl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new vm(t)))}},vm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},vo=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new bm(t)))}},bm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},wm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},Sm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new zl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new xm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new Fm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new zl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Tm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new wm(r)}))}},xm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new Cm(this.parser)}},Cm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},Fm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new vo(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new km(this.parser)}},km=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new Om(this.parser)}},Om=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},Tm=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new vo(this.parser)}},_m=Object.freeze({__proto__:null,GDEF:Sm}),Ml=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new Pm(t))}},Pm=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Am=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Em(t))}},Em=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},Gl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},jl=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new Rm(t))}},Rm=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Im=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new Bm(t);if(e.startsWith("cc"))return new Lm(t);if(e.startsWith("ss"))return new Vm(t)}}},Lm=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},Bm=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Vm=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function ql(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var Fr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new vo(t)}},Sn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Dm=class extends Fr{constructor(t){super(t),this.deltaGlyphID=t.int16}},Nm=class extends Fr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new zm(e)}},zm=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Mm=class extends Fr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Gm(e)}},Gm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},jm=class extends Fr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new Um(e)}},Um=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Hm(e)}},Hm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Wm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(ql(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Sn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new Ym(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new qm(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new vo(e)}},Ym=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new Zl(e)}},Zl=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Sn(t))}},qm=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Zm(e)}},Zm=class extends Zl{constructor(t){super(t)}},Xm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(ql(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Xl(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new Km(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new Qm(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new vo(e)}},Km=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Jm(e)}},Jm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new Sn(t))}},Qm=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new $m(e)}},$m=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Xl(t))}},Xl=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},tp=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},ep=class extends Fr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},rp={buildSubtable:function(t,e){let r=new[void 0,Dm,Nm,Mm,jm,Wm,Xm,tp,ep][t](e);return r.type=t,r}},qe=class extends Bt{constructor(t){super(t)}},op=class extends qe{constructor(t){super(t),console.log("lookup type 1")}},sp=class extends qe{constructor(t){super(t),console.log("lookup type 2")}},np=class extends qe{constructor(t){super(t),console.log("lookup type 3")}},ap=class extends qe{constructor(t){super(t),console.log("lookup type 4")}},ip=class extends qe{constructor(t){super(t),console.log("lookup type 5")}},lp=class extends qe{constructor(t){super(t),console.log("lookup type 6")}},up=class extends qe{constructor(t){super(t),console.log("lookup type 7")}},fp=class extends qe{constructor(t){super(t),console.log("lookup type 8")}},cp=class extends qe{constructor(t){super(t),console.log("lookup type 9")}},dp={buildSubtable:function(t,e){let r=new[void 0,op,sp,np,ap,ip,lp,up,fp,cp][t](e);return r.type=t,r}},Ul=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},mp=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?rp:dp;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},Kl=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Ml.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Ml(o))),Z(this,"featureList",()=>a?jl.EMPTY:(o.currentPosition=s+this.featureListOffset,new jl(o))),Z(this,"lookupList",()=>a?Ul.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Ul(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Am(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new Gl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new Gl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Im(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new mp(this.parser,e)}},pp=class extends Kl{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},hp=Object.freeze({__proto__:null,GSUB:pp}),gp=class extends Kl{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},yp=Object.freeze({__proto__:null,GPOS:gp}),vp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new bp(r)}},bp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new wp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},wp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},Sp=Object.freeze({__proto__:null,SVG:vp}),xp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new Cp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new Fp(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(t=>t.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},Cp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},Fp=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o<r&&(this.postScriptNameID=t.uint16)}},kp=Object.freeze({__proto__:null,fvar:xp}),Op=class extends mt{constructor(t,e){let{p:r}=super(t,e),o=t.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},Tp=Object.freeze({__proto__:null,cvt:Op}),_p=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Pp=Object.freeze({__proto__:null,fpgm:_p}),Ap=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Ep(r)))}},Ep=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},Rp=Object.freeze({__proto__:null,gasp:Ap}),Ip=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Lp=Object.freeze({__proto__:null,glyf:Ip}),Bp=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Vp=Object.freeze({__proto__:null,loca:Bp}),Dp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Np=Object.freeze({__proto__:null,prep:Dp}),zp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Mp=Object.freeze({__proto__:null,CFF:zp}),Gp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},jp=Object.freeze({__proto__:null,CFF2:Gp}),Up=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Hp(r)))}},Hp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Wp=Object.freeze({__proto__:null,VORG:Up}),Yp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new is(t),this.vert=new is(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},qp=class{constructor(t){this.hori=new is(t),this.vert=new is(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},is=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},Jl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new Yp(o)))}},Zp=Object.freeze({__proto__:null,EBLC:Jl}),Ql=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},Xp=Object.freeze({__proto__:null,EBDT:Ql}),Kp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new qp(r)))}},Jp=Object.freeze({__proto__:null,EBSC:Kp}),Qp=class extends Jl{constructor(t,e){super(t,e,"CBLC")}},$p=Object.freeze({__proto__:null,CBLC:Qp}),th=class extends Ql{constructor(t,e){super(t,e,"CBDT")}},eh=Object.freeze({__proto__:null,CBDT:th}),rh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},oh=Object.freeze({__proto__:null,sbix:rh}),sh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new wn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new wn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let m=new wn(this.parser),f=m.gID;if(f===t)return m;f>t?s=l:f<t&&(e=l)}return!1}getLayers(t){let e=this.getBaseGlyphRecord(t);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*e.firstLayerIndex,[...new Array(e.numLayers)].map(r=>new nh(p))}},wn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},nh=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},ah=Object.freeze({__proto__:null,COLR:sh}),ih=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new lh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new uh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new fh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new ch(r,o))))}},lh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},uh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},fh=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},ch=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},dh=Object.freeze({__proto__:null,CPAL:ih}),mh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new ph(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new hh(this.parser)}},ph=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},hh=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},gh=Object.freeze({__proto__:null,DSIG:mh}),yh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new vh(o,s))}},vh=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},bh=Object.freeze({__proto__:null,hdmx:yh}),wh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new Sh(r);s.push(n),o+=n}return s})}},Sh=class{constructor(t){this.version=t.uint16,this.length=t.uint16,this.coverage=t.flags(8),this.format=t.uint8,this.format===0&&(this.nPairs=t.uint16,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(e=>new xh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},xh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},Ch=Object.freeze({__proto__:null,kern:wh}),Fh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},kh=Object.freeze({__proto__:null,LTSH:Fh}),Oh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Th=Object.freeze({__proto__:null,MERG:Oh}),_h=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new Ph(this.tableStart,r))}},Ph=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Ah=Object.freeze({__proto__:null,meta:_h}),Eh=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Rh=Object.freeze({__proto__:null,PCLT:Eh}),Ih=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Lh(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new Bh(r))}},Lh=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},Bh=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Vh(t))}},Vh=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Dh=Object.freeze({__proto__:null,VDMX:Ih}),Nh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},zh=Object.freeze({__proto__:null,vhea:Nh}),Mh=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Gh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Gh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},jh=Object.freeze({__proto__:null,vmtx:Mh});var $l=u(X(),1);var{kebabCase:Uh}=yt($l.privateApis);function tu(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:Uh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var he=u(z(),1);function Hh(){let{installFonts:t}=(0,bo.useContext)(ie),[e,r]=(0,bo.useState)(!1),[o,s]=(0,bo.useState)(null),a=h=>{l(h)},n=h=>{l(h.target.files)},l=async h=>{if(!h)return;s(null),r(!0);let v=new Set,_=[...h],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(v.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return hn.includes(Y)?(v.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)m(x);else{let b=A?(0,Wr.__)("Sorry, you are not allowed to upload this file type."):(0,Wr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},m=async h=>{let v=await Promise.all(h.map(async _=>{let A=await d(_);return await rr(A,A.file,"all"),A}));g(v)};async function f(h){let v=new ls("Uploaded Font");try{let _=await c(h);return await v.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(h){return new Promise((v,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(h),A.onload=()=>v(A.result),A.onerror=_})}let d=async h=>{let v=await c(h),_=new ls("Uploaded Font");_.fromDataBuffer(v,h.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",D=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=D?`${D.minValue} ${D.maxValue}`:null;return{file:h,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},g=async h=>{let v=tu(h);try{await t(v),s({type:"success",message:(0,Wr.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,he.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,he.jsx)(te.DropZone,{onFilesDrop:a}),(0,he.jsxs)(te.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,he.jsxs)(te.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,he.jsx)("ul",{children:o.errors.map((h,v)=>(0,he.jsx)("li",{children:h},v))})]}),e&&(0,he.jsx)(te.FlexItem,{children:(0,he.jsx)("div",{className:"font-library__upload-area",children:(0,he.jsx)(te.ProgressBar,{})})}),!e&&(0,he.jsx)(te.FormFileUpload,{accept:hn.map(h=>`.${h}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:h})=>(0,he.jsx)(te.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:h,children:(0,Wr.__)("Upload font")})}),(0,he.jsx)(te.__experimentalText,{className:"font-library__upload-area__text",children:(0,Wr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var us=Hh;var ru=u(z(),1),{Tabs:D2}=yt(xn.privateApis),N2={id:"installed-fonts",title:(0,fs._x)("Library","Font library")},z2={id:"upload-fonts",title:(0,fs._x)("Upload","noun")};var ou=u(it(),1),Cn=u(X(),1),Yh=u(vt(),1);var su=u(z(),1);var Fn=u(z(),1);var nu=u(it(),1),cs=u(X(),1);var au=u(z(),1);var On=u(z(),1);var Pe=u(it(),1),Tn=u(X(),1),tg=u(vt(),1);var iu=u(ae(),1);var Qh=u(z(),1),{useSettingsForBlockElement:hC,TypographyPanel:gC}=yt(iu.privateApis);var $h=u(z(),1);var _n=u(z(),1),kC={text:{description:(0,Pe.__)("Manage the fonts used on the site."),title:(0,Pe.__)("Text")},link:{description:(0,Pe.__)("Manage the fonts and typography used on the links."),title:(0,Pe.__)("Links")},heading:{description:(0,Pe.__)("Manage the fonts and typography used on headings."),title:(0,Pe.__)("Headings")},caption:{description:(0,Pe.__)("Manage the fonts and typography used on captions."),title:(0,Pe.__)("Captions")},button:{description:(0,Pe.__)("Manage the fonts and typography used on buttons."),title:(0,Pe.__)("Buttons")}};var sg=u(it(),1),ng=u(X(),1),uu=u(ae(),1);var Yr=u(X(),1),lu=u(it(),1);var og=u(vt(),1);var eg=u(X(),1),rg=u(z(),1);var Pn=u(z(),1);var An=u(z(),1),{useSettingsForBlockElement:GC,ColorPanel:jC}=yt(uu.privateApis);var dg=u(it(),1),gu=u(X(),1);var lg=u(mr(),1),En=u(X(),1),ug=u(it(),1);var ms=u(X(),1);var ds=u(X(),1);var fu=u(z(),1);function cu(){let{paletteColors:t}=Vr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,fu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var So=u(z(),1),ag={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},ig=({label:t,isFocused:e,withHoverView:r})=>(0,So.jsx)(zr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,So.jsx)(ds.__unstableMotion.div,{variants:ag,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(ds.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(cu,{})})},o)}),du=ig;var kr=u(z(),1),mu=["color"];function ps({title:t,gap:e=2}){let r=zo(mu);return r?.length<=1?null:(0,kr.jsxs)(ms.__experimentalVStack,{spacing:3,children:[t&&(0,kr.jsx)(xe,{level:3,children:t}),(0,kr.jsx)(ms.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,kr.jsx)(Gr,{variation:o,isPill:!0,properties:mu,showTooltip:!0,children:()=>(0,kr.jsx)(du,{})},s))})]})}var pu=u(z(),1);var fg=u(mr(),1),hs=u(X(),1),cg=u(it(),1);var hu=u(z(),1);var Rn=u(z(),1),{Tabs:m6}=yt(gu.privateApis);var pg=u(it(),1),vu=u(ae(),1),hg=u(X(),1);var yu=u(ae(),1);var mg=u(z(),1);var{BackgroundPanel:y6}=yt(yu.privateApis);var In=u(z(),1),{useHasBackgroundPanel:F6}=yt(vu.privateApis);var Or=u(X(),1),Ln=u(it(),1);var wg=u(vt(),1);var gg=u(X(),1),yg=u(it(),1),vg=u(z(),1);var Bn=u(z(),1),{Menu:V6}=yt(Or.privateApis);var Ut=u(X(),1),xo=u(it(),1);var gs=u(vt(),1);var Vn=u(z(),1),{Menu:J6}=yt(Ut.privateApis),Q6=[{label:(0,xo.__)("Rename"),action:"rename"},{label:(0,xo.__)("Delete"),action:"delete"}],$6=[{label:(0,xo.__)("Reset"),action:"reset"}];var Sg=u(z(),1);var Fg=u(it(),1),wu=u(ae(),1);var bu=u(ae(),1),xg=u(vt(),1);var Cg=u(z(),1),{useSettingsForBlockElement:lF,DimensionsPanel:uF}=yt(bu.privateApis);var Dn=u(z(),1),{useHasDimensionsPanel:gF,useSettingsForBlockElement:yF}=yt(wu.privateApis);var Ou=u(X(),1),_g=u(it(),1);var Og=u(it(),1),Tg=u(X(),1);var Su=u(we(),1),xu=u(de(),1),vs=u(vt(),1),Cu=u(X(),1),Fu=u(it(),1);var ys=u(z(),1);function kg({gap:t=2}){let{user:e}=(0,vs.useContext)(Kt),r=e?.styles,s=(0,xu.useSelect)(n=>{let l=n(Su.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!fo(n,["color"])&&!fo(n,["typography","spacing"])),a=(0,vs.useMemo)(()=>[...[{title:(0,Fu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let m=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(g=>{if(r.blocks?.[g]?.css){let h=m[g]||{},v={css:`${m[g]?.css||""} ${r.blocks?.[g]?.css?.trim()||""}`};m[g]={...h,...v}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(m).length>0?{blocks:m}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,ys.jsx)(Cu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,ys.jsx)(Gr,{variation:n,children:m=>(0,ys.jsx)(nn,{label:n?.title,withHoverView:!0,isFocused:m,variation:n})},l))})}var Nn=kg;var ku=u(z(),1);var zn=u(z(),1);var Pg=u(it(),1),Ag=u(X(),1),Tu=u(ae(),1);var Mn=u(z(),1),{AdvancedPanel:BF}=yt(Tu.privateApis);var Vu=u(it(),1),jn=u(X(),1),Un=u(vt(),1);var Eg=u(de(),1),Rg=u(we(),1),_u=u(vt(),1);var Eu=u(it(),1),Ru=u(X(),1),bs=u(Au(),1),Ig=u(we(),1),Lg=u(de(),1);var Iu=u(mn(),1),Lu=u(z(),1),MF=3600*1e3*24;var Gn=u(X(),1),Co=u(it(),1);var Bu=u(z(),1);var Hn=u(z(),1);var Wn=u(it(),1),Ze=u(X(),1);var zg=u(vt(),1);var Vg=u(X(),1),Dg=u(it(),1),Ng=u(z(),1);var Yn=u(z(),1),{Menu:i3}=yt(Ze.privateApis);var Mu=u(it(),1),Me=u(X(),1);var Gu=u(vt(),1);var Mg=u(ae(),1),Gg=u(it(),1);var jg=u(z(),1);var Ug=u(X(),1),Du=u(it(),1),Hg=u(z(),1);var Fo=u(X(),1),Wg=u(it(),1),Yg=u(vt(),1),Nu=u(z(),1);var Xe=u(X(),1),zu=u(z(),1);var qn=u(z(),1),{Menu:k3}=yt(Me.privateApis);var Xn=u(z(),1);var Kn=u(z(),1);function qr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Kn.jsx)(uo,{value:r,baseValue:o,onChange:s,children:(0,Kn.jsx)(t,{...a})})}}var Kg=qr(Nn);var Jg=qr(ps);var Qg=qr(Yo);var Zr=u(z(),1);function Jn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Zr.jsx)(us,{});break;case"installed-fonts":s=(0,Zr.jsx)(ts,{});break;default:s=(0,Zr.jsx)(rs,{slug:o})}return(0,Zr.jsx)(uo,{value:t,baseValue:e,onChange:r,children:(0,Zr.jsx)(Xo,{children:s})})}var Hu=u(Ds()),{unlock:Qn}=(0,Hu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='3e5ff62f49']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","3e5ff62f49"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:ws}=Qn(Wu.privateApis),{useGlobalStyles:$g}=Qn(Yu.privateApis);function ty(){let{records:t=[]}=(0,Ss.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,Zu.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=$g(),l=(0,qu.useSelect)(f=>f(Ss.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let m=[{id:"installed-fonts",title:(0,Xr._x)("Library","Font library")}];return l&&(m.push({id:"upload-fonts",title:(0,Xr._x)("Upload","noun")}),m.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,Xr.__)("Install Fonts"):c})))),React.createElement(Ns,{title:(0,Xr.__)("Fonts")},React.createElement(ws,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(ws.TabList,null,m.map(({id:f,title:c})=>React.createElement(ws.Tab,{key:f,tabId:f},c)))),m.map(({id:f})=>React.createElement(ws.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Jn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function ey(){return React.createElement(ty,null)}var ry=ey;export{ry as stage}; /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: diff --git a/src/wp-includes/theme.json b/src/wp-includes/theme.json index 8f00ade148c49..df48a061af01e 100644 --- a/src/wp-includes/theme.json +++ b/src/wp-includes/theme.json @@ -10,6 +10,7 @@ "style": false, "width": false }, + "background": { "gradient": true }, "color": { "background": true, "button": true, From 48733224f35881a33bc100896f4ae71d9cb54f22 Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Tue, 30 Jun 2026 00:26:23 +0000 Subject: [PATCH 271/327] Editor: fix layout value unsetting in viewport states. Enables content and wide width values to be unset when a viewport state is selected, when the default state has a custom value for these properties. Props isabel_brison, mukesh27, talldanwp. Fixes #65544. git-svn-id: https://develop.svn.wordpress.org/trunk@62579 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/layout.php | 63 ++++++++++++++----- .../tests/block-supports/wpGetLayoutStyle.php | 19 +++++- 2 files changed, 67 insertions(+), 15 deletions(-) diff --git a/src/wp-includes/block-supports/layout.php b/src/wp-includes/block-supports/layout.php index c10da1f8db04b..52f1878383324 100644 --- a/src/wp-includes/block-supports/layout.php +++ b/src/wp-includes/block-supports/layout.php @@ -497,13 +497,19 @@ function wp_register_layout_support( $block_type ) { * @return string CSS styles on success. Else, empty string. */ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false, $gap_value = null, $should_skip_gap_serialization = false, $fallback_gap_value = '0.5em', $block_spacing = null, $options = array() ) { - $base_layout = is_array( $layout ) ? $layout : array(); - $viewport_overrides = $options['viewport_overrides'] ?? null; - $layout_for_styles = null === $viewport_overrides ? $base_layout : array_replace( $base_layout, $viewport_overrides ); - $layout_type = $base_layout['type'] ?? 'default'; - $rules_group = $options['rules_group'] ?? null; - $has_block_gap_override = ! empty( $options['has_block_gap_override'] ); - $should_output_block_gap = null === $viewport_overrides || $has_block_gap_override; + $base_layout = is_array( $layout ) ? $layout : array(); + $viewport_overrides = $options['viewport_overrides'] ?? null; + $layout_for_styles = null === $viewport_overrides ? $base_layout : array_replace( $base_layout, $viewport_overrides ); + $layout_type = $base_layout['type'] ?? 'default'; + $rules_group = $options['rules_group'] ?? null; + $has_block_gap_override = ! empty( $options['has_block_gap_override'] ); + $should_output_block_gap = null === $viewport_overrides || $has_block_gap_override; + + /* + * Viewport styles only store changed fields. If a field is present with null, + * the user cleared a value inherited from the default viewport, so check + * whether the key exists rather than whether the value is truthy. + */ $has_viewport_property_override = static function ( $property ) use ( $viewport_overrides ) { return array_key_exists( $property, $viewport_overrides ); }; @@ -546,8 +552,29 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $wide_size = $layout_for_styles['wideSize'] ?? ''; $justify_content = $layout_for_styles['justifyContent'] ?? 'center'; - $all_max_width_value = $content_size ? $content_size : $wide_size; - $wide_max_width_value = $wide_size ? $wide_size : $content_size; + // Check if viewport-specific ("override") values exist. Null values are valid and mean the user cleared a value inherited from the default viewport. + $has_justify_content_override = null !== $viewport_overrides && $has_viewport_property_override( 'justifyContent' ); + $has_content_size_override = null !== $viewport_overrides && $has_viewport_property_override( 'contentSize' ); + $has_wide_size_override = null !== $viewport_overrides && $has_viewport_property_override( 'wideSize' ); + + /* + * Styles should be output either if there are no viewport overrides (this is the default case), or if the user has set a new viewport-specific + * value for contentSize or wideSize. If a viewport clears a custom constrained size, reset to the global layout variable. + */ + $should_output_constrained_sizes = null === $viewport_overrides || $has_content_size_override || $has_wide_size_override; + $is_resetting_constrained_sizes = null !== $viewport_overrides && + ( + ( $has_content_size_override && ! $content_size ) || + ( $has_wide_size_override && ! $wide_size ) + ); + + // If a viewport clears a custom constrained size, reset to the global layout variable. + $all_max_width_value = $content_size + ? $content_size + : ( $wide_size && ! $has_content_size_override ? $wide_size : 'var(--wp--style--global--content-size, none)' ); + $wide_max_width_value = $wide_size + ? $wide_size + : ( $content_size && ! $has_wide_size_override ? $content_size : 'var(--wp--style--global--wide-size, none)' ); // Make sure there is a single CSS rule, and all tags are stripped for security. $all_max_width_value = safecss_filter_attr( explode( ';', $all_max_width_value )[0] ); @@ -556,9 +583,7 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $margin_left = 'left' === $justify_content ? '0 !important' : 'auto !important'; $margin_right = 'right' === $justify_content ? '0 !important' : 'auto !important'; - $has_justify_content_override = null !== $viewport_overrides && $has_viewport_property_override( 'justifyContent' ); - $should_output_constrained_sizes = null === $viewport_overrides || $has_viewport_property_override( 'contentSize' ) || $has_viewport_property_override( 'wideSize' ); - if ( $should_output_constrained_sizes && ( $content_size || $wide_size ) ) { + if ( $should_output_constrained_sizes && ( $content_size || $wide_size || $is_resetting_constrained_sizes ) ) { $content_size_declarations = array( 'max-width' => $all_max_width_value, ); @@ -698,6 +723,10 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $vertical_alignment_options += array( 'space-between' => 'space-between' ); } + /* + * Styles should be output either if there are no viewport overrides (this is the default case), or if the user has set a new viewport-specific + * value for any of the flex properties. + */ $should_output_flex_wrap = null === $viewport_overrides || $has_viewport_property_override( 'flexWrap' ); $should_output_flex_orientation = null === $viewport_overrides || $has_viewport_property_override( 'orientation' ); $should_output_flex_justification = null === $viewport_overrides || $has_viewport_property_override( 'justifyContent' ) || $has_viewport_property_override( 'orientation' ); @@ -828,6 +857,10 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $responsive_gap_value = '0px'; } + /* + * Styles should be output either if there are no viewport overrides (this is the default case), or if the user has set a new viewport-specific + * value for any of the grid properties. + */ $should_output_grid_columns = null === $viewport_overrides || $has_viewport_property_override( 'minimumColumnWidth' ) || $has_viewport_property_override( 'columnCount' ) || $has_viewport_property_override( 'autoFit' ); $uses_gap_in_grid_columns = ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['minimumColumnWidth'] ); if ( $has_block_gap_override && $uses_gap_in_grid_columns ) { @@ -837,8 +870,10 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false $should_output_grid_rows = ( null === $viewport_overrides || $has_viewport_property_override( 'rowCount' ) ) && ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['rowCount'] ); $grid_declarations = array(); - // When enabled, columns stretch to fill the available space using - // `auto-fit`; otherwise empty tracks are preserved with `auto-fill`. + /* + * When enabled, columns stretch to fill the available space using + * `auto-fit`; otherwise empty tracks are preserved with `auto-fill`. + */ $auto_placement = ! empty( $layout_for_styles['autoFit'] ) ? 'auto-fit' : 'auto-fill'; if ( $should_output_grid_columns && ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['minimumColumnWidth'] ) ) { diff --git a/tests/phpunit/tests/block-supports/wpGetLayoutStyle.php b/tests/phpunit/tests/block-supports/wpGetLayoutStyle.php index 190170be1d933..4088a260fc157 100644 --- a/tests/phpunit/tests/block-supports/wpGetLayoutStyle.php +++ b/tests/phpunit/tests/block-supports/wpGetLayoutStyle.php @@ -13,6 +13,7 @@ class Tests_Block_Supports_WpGetLayoutStyle extends WP_UnitTestCase { 'should_skip_gap_serialization' => false, 'fallback_gap_value' => '0.5em', 'block_spacing' => null, + 'options' => array(), ); /** @@ -32,7 +33,8 @@ public function test_wp_get_layout_style( array $args, $expected_output ) { $args['gap_value'], $args['should_skip_gap_serialization'], $args['fallback_gap_value'], - $args['block_spacing'] + $args['block_spacing'], + $args['options'] ); $this->assertSame( $expected_output, $layout_styles ); @@ -120,6 +122,21 @@ public function data_wp_get_layout_style() { ), 'expected_output' => '.wp-layout > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width:800px;margin-left:auto !important;margin-right:auto !important;}.wp-layout > .alignwide{max-width:1200px;}.wp-layout .alignfull{max-width:none;}.wp-layout > .alignfull{margin-right:calc(10px * -1);margin-left:calc(20px * -1);}', ), + 'constrained layout with content size unset in viewport' => array( + 'args' => array( + 'selector' => '.wp-layout', + 'layout' => array( + 'type' => 'constrained', + 'contentSize' => '800px', + ), + 'options' => array( + 'viewport_overrides' => array( + 'contentSize' => null, + ), + ), + ), + 'expected_output' => '.wp-layout > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width:var(--wp--style--global--content-size, none);}.wp-layout > .alignwide{max-width:var(--wp--style--global--wide-size, none);}.wp-layout .alignfull{max-width:none;}', + ), 'constrained layout with block gap support' => array( 'args' => array( 'selector' => '.wp-layout', From 712b5877b0d8d318c31cdf790a9ffb6def5b6cf6 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 30 Jun 2026 00:34:47 +0000 Subject: [PATCH 272/327] General: Bump the pinned hash for Gutenberg to `v23.0.0`. This updates the pinned commit hash of the Gutenberg repository from `5426109cdaf45828ef28ff8527d7d38e7e75fe74` (version `22.9.0`) to `7295bd91a3c2b64bb11dde0a12313210d9d16a12` (version `23.0.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v22.9.0..v23.0.0. The following commits are included: - Classify admin-ui and dataviews to components (https://github.com/WordPress/gutenberg/pull/76959) - Add performance metrics for client-side media processing (https://github.com/WordPress/gutenberg/pull/76792) - Connectors: Update help text from 'reset' to 'manage' (https://github.com/WordPress/gutenberg/pull/76963) - Connectors: Hide Akismet unless already installed (https://github.com/WordPress/gutenberg/pull/76962) - Remove unused catch block variables across the codebase (https://github.com/WordPress/gutenberg/pull/76969) - Wrap sync update processing in try/catch (https://github.com/WordPress/gutenberg/pull/76968) - Backport: Improve validation and permission checks for `WP_HTTP_Polling_Sync_Server` (https://github.com/WordPress/gutenberg/pull/76987) - BlockMover: Remove unused disabled button props (https://github.com/WordPress/gutenberg/pull/76993) - Core Data: Fix incorrect pagination for non-paginated entities (https://github.com/WordPress/gutenberg/pull/76406) - Block Editor: Display shortcuts for moving blocks via tooltips (https://github.com/WordPress/gutenberg/pull/76992) - Convert directories in test/ to workspaces (https://github.com/WordPress/gutenberg/pull/74684) - RTC: Fix core/table cell merging (https://github.com/WordPress/gutenberg/pull/76913) - Components: Extract the autocomplete matcher into a separate function (https://github.com/WordPress/gutenberg/pull/76957) - Added Context for Next/Prev Enlarge Image (https://github.com/WordPress/gutenberg/pull/76967) - Build Tools: Update TypeScript to 6.0.2 (https://github.com/WordPress/gutenberg/pull/77010) - Text: Remove UA margins (https://github.com/WordPress/gutenberg/pull/76970) - Fix pre-existing lint errors across the codebase (https://github.com/WordPress/gutenberg/pull/77002) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (https://github.com/WordPress/gutenberg/pull/77025) - Card: Set default foreground color on root (https://github.com/WordPress/gutenberg/pull/77013) - TypeScript: Migrate a11y package to TS (https://github.com/WordPress/gutenberg/pull/70680) - Button: Remove unused Storybook story stylesheet (https://github.com/WordPress/gutenberg/pull/77031) - Improve CSS setup instructions in package readmes (https://github.com/WordPress/gutenberg/pull/76975) - Use Link component in details story example (https://github.com/WordPress/gutenberg/pull/76997) - @wordpress/ui: Add global CSS defense module (https://github.com/WordPress/gutenberg/pull/76783) - Autocompleters: Move and improve links search (https://github.com/WordPress/gutenberg/pull/76995) - Autocomplete: Refactor useAutocomplete to use useReducer (https://github.com/WordPress/gutenberg/pull/77020) - Components: Fix autocomplete overlapping trigger matching (https://github.com/WordPress/gutenberg/pull/77018) - Fix: A sentence has no ending punctuation in README.md file. (https://github.com/WordPress/gutenberg/pull/77027) - `ValidatedRangeControl`: Fix aria-label rendered as [object Object] (https://github.com/WordPress/gutenberg/pull/77042) - HStack, VStack: Mark as not recommended for use (https://github.com/WordPress/gutenberg/pull/77041) - Tests: Fix wp-env scripts not found in test workspaces (https://github.com/WordPress/gutenberg/pull/77055) - Bump the github-actions group across 1 directory with 2 updates (https://github.com/WordPress/gutenberg/pull/77030) - Autocomplete: Clarify 'isDebounced' setting limitation (https://github.com/WordPress/gutenberg/pull/77062) - Fix SyntaxError in Autocompleter UI when pasting matching content (https://github.com/WordPress/gutenberg/pull/76961) - Connectors: account for mu-plugins when resolving plugin.file status (https://github.com/WordPress/gutenberg/pull/76994) - Storybook: Fix E2E subpath exports and add CI build smoke test (https://github.com/WordPress/gutenberg/pull/77034) - Fix Storybook cursor Default option passing theme token (https://github.com/WordPress/gutenberg/pull/77037) - Storybook: Enable theming toolbar for wp-components (https://github.com/WordPress/gutenberg/pull/77038) - RTC: Fix "Edit as HTML" content reset during collaboration (https://github.com/WordPress/gutenberg/pull/77043) - RTC: Fix inline inserter reset on update sync (https://github.com/WordPress/gutenberg/pull/76980) - RTC: Predefined retry schedules for disconnect dialog, make more lenient (https://github.com/WordPress/gutenberg/pull/76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (https://github.com/WordPress/gutenberg/pull/76989) - Editor: Fix 'selectedNote' action PHPDoc (https://github.com/WordPress/gutenberg/pull/77080) - Tests: Fix argument forwarding for workspace test scripts (https://github.com/WordPress/gutenberg/pull/77083) - Search block: Derive 'isSearchFieldHidden' value (https://github.com/WordPress/gutenberg/pull/77082) - Cover block: fix embed video background Error 153 in editor (https://github.com/WordPress/gutenberg/pull/76904) - Fields: Fix `postContentInfoField` when there are edits (https://github.com/WordPress/gutenberg/pull/76901) - Restore original template registration tests alongside activation variants (https://github.com/WordPress/gutenberg/pull/77068) - i18n: Make sprintf return FormattedText for type-safe createInterpolateElement (https://github.com/WordPress/gutenberg/pull/76974) - Block Editor store: refactor controlledInnerBlocks to Set (https://github.com/WordPress/gutenberg/pull/77094) - DataForm: support disabled controls (https://github.com/WordPress/gutenberg/pull/77090) - ESLint plugin: Disable `jsx-a11y/heading-has-content` (https://github.com/WordPress/gutenberg/pull/77073) - Remove remaining esModuleInterop usage (https://github.com/WordPress/gutenberg/pull/77095) - Avoid stale values in core/cover block for RTC compatibility (https://github.com/WordPress/gutenberg/pull/76916) - RTC: Add optional `shouldSync` function to entity sync config (https://github.com/WordPress/gutenberg/pull/76947) - Bump oras-project/setup-oras (https://github.com/WordPress/gutenberg/pull/77096) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (https://github.com/WordPress/gutenberg/pull/76853) - RTC: Respect WP_ALLOW_COLLABORATION in Gutenberg for activation hook (https://github.com/WordPress/gutenberg/pull/77084) - Add iteration issue template (https://github.com/WordPress/gutenberg/pull/77113) - Media Modal Experiment: Set matching picker grid layout properties for when a user switches between layouts (https://github.com/WordPress/gutenberg/pull/77118) - contentOnly template lock: Fix block insertion and removal rules (https://github.com/WordPress/gutenberg/pull/77119) - Global Styles Revisions: Fix footer overflow (https://github.com/WordPress/gutenberg/pull/77103) - updateBlockListSettings: convert state to Map, do all updates in one action (https://github.com/WordPress/gutenberg/pull/46392) - DataViews: Fix `compact` density clipping and remove top/bottom padding (https://github.com/WordPress/gutenberg/pull/77054) - Icons: Override WP_Icons_Registry singleton with Gutenberg icons registry (https://github.com/WordPress/gutenberg/pull/76455) - Button: Remove obsolete Safari + VoiceOver workaround (https://github.com/WordPress/gutenberg/pull/77107) - E2E Tests: Ensure artifacts generate correctly and remove unnecessary artifacts (https://github.com/WordPress/gutenberg/pull/77093) - UI `Text`: Mark as recommended (https://github.com/WordPress/gutenberg/pull/77044) - ui/AlertDialog: better async confirm APIs, fully use base ui's `AlertDialog` (https://github.com/WordPress/gutenberg/pull/76937) - BlockStyleVariationOverridesWithConfig: change name and fix lint errors (https://github.com/WordPress/gutenberg/pull/77130) - Add `.scss` files to CSS module linting (https://github.com/WordPress/gutenberg/pull/77140) - BoxControl: remove unused state for icon side (https://github.com/WordPress/gutenberg/pull/77143) - Fix overflow of Highlighted white-space in Code Block (https://github.com/WordPress/gutenberg/pull/77085) - move pseudo-state slicing logic into useStyle hook (https://github.com/WordPress/gutenberg/pull/77104) - Autocomplete: Remove getAutoCompleterUI factory pattern (https://github.com/WordPress/gutenberg/pull/77048) - Add `date` field in templates and template parts (https://github.com/WordPress/gutenberg/pull/77134) - Revisions: Simplify fetching (https://github.com/WordPress/gutenberg/pull/77086) - Remove 'Home' and 'End' key usage from Navigation Tests (https://github.com/WordPress/gutenberg/pull/77102) - Guidelines: Update actions-section and import/export workflow (https://github.com/WordPress/gutenberg/pull/76621) - Image block: Hide drag handles while an upload is in progress (https://github.com/WordPress/gutenberg/pull/77121) - Build: Fix glob ignore patterns in dot-prefixed directories (https://github.com/WordPress/gutenberg/pull/75114) - Added missing documentation in `collaboration.php` (https://github.com/WordPress/gutenberg/pull/77173) - `@wordpress/ui`: add `Popover` (https://github.com/WordPress/gutenberg/pull/76438) - Add Site Tagline and Site Title to Design > Identity panel (https://github.com/WordPress/gutenberg/pull/76264) - Revision: Fix 'Show changes' button reset state (https://github.com/WordPress/gutenberg/pull/77122) - Components: update React function names for better ESLint detection (https://github.com/WordPress/gutenberg/pull/77148) - Link picker: Decode HTML entities in link preview title (https://github.com/WordPress/gutenberg/pull/77170) - MediaEdit: handle '*' wildcard in validateMimeType (https://github.com/WordPress/gutenberg/pull/77168) - Search block : Match behaviour of global styling for border and color with local styling (inspector controls) to remove inconsistency (https://github.com/WordPress/gutenberg/pull/77060) - Re-order spacing side controls when unlinked (https://github.com/WordPress/gutenberg/pull/66317) - Dataviews: remove unneeded ref callbacks (https://github.com/WordPress/gutenberg/pull/77179) - Experiment: Add revisions panel to templates, template parts and patterns (https://github.com/WordPress/gutenberg/pull/77008) - Guidelines CPT: Changes slug from wp_content_guidelines to wp_guidelines (https://github.com/WordPress/gutenberg/pull/77147) - TextArea: add disabled styles (https://github.com/WordPress/gutenberg/pull/77129) - Writing Flow: Fix format toolbar not appearing when selecting text from block edge (https://github.com/WordPress/gutenberg/pull/77136) - DataForm: Remove `text-transform` from `panel` field labels (https://github.com/WordPress/gutenberg/pull/77196) - FormTokenField: fix disabled styles (https://github.com/WordPress/gutenberg/pull/77137) - Admin UI: Increase page header vertical padding (https://github.com/WordPress/gutenberg/pull/77152) - Use entity link title for link control preview (https://github.com/WordPress/gutenberg/pull/77155) - TypeScript: migrate annotations package to TS (https://github.com/WordPress/gutenberg/pull/70602) - refactor: migrate bin/api-docs to tools/api-docs as workspace `@wordpress/api-docs-generator` (https://github.com/WordPress/gutenberg/pull/77019) - TypeScript: Migrate viewport package (https://github.com/WordPress/gutenberg/pull/71118) - UI/Tooltip: Add usage guidelines documentation (https://github.com/WordPress/gutenberg/pull/77158) - RadioControl: add support for disabling radio group (https://github.com/WordPress/gutenberg/pull/77127) - Upgrade ESLint to v10 (https://github.com/WordPress/gutenberg/pull/76654) - Add e2e test coverage for the Guidelines settings page (https://github.com/WordPress/gutenberg/pull/77192) - Admin UI: Update Page background color to surface-neutral (https://github.com/WordPress/gutenberg/pull/76869) - Fix lint-staged API docs path (https://github.com/WordPress/gutenberg/pull/77203) - PresetInputControl: Fix clearing of numeric value in custom input control (https://github.com/WordPress/gutenberg/pull/77139) - Upload external media: Ensure notice only fires once (https://github.com/WordPress/gutenberg/pull/77218) - Checkbox: fix disabled styles (https://github.com/WordPress/gutenberg/pull/77132) - FormToggle: Update disabled styles (https://github.com/WordPress/gutenberg/pull/77208) - Calendar: fix disabled styles (https://github.com/WordPress/gutenberg/pull/77138) - Textarea: remove unnecessary styles (https://github.com/WordPress/gutenberg/pull/77221) - Search Block: Ensure color settings apply to input field when button is disabled (https://github.com/WordPress/gutenberg/pull/77219) - iAPI Docs: Fix typos, code errors, and inaccuracies in the documentation (https://github.com/WordPress/gutenberg/pull/76636) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (https://github.com/WordPress/gutenberg/pull/77116) - Guidelines: Improve guideline revision UX (https://github.com/WordPress/gutenberg/pull/76560) - ui/`Dialog`: update Header layout, refactor Title to use Text (https://github.com/WordPress/gutenberg/pull/77161) - ui/docs: add additional global css setup instructions (https://github.com/WordPress/gutenberg/pull/77228) - ui/VisuallyHidden: Standardize composition pattern (https://github.com/WordPress/gutenberg/pull/77190) - ui: expose `container` portal prop on all overlay Popup components (https://github.com/WordPress/gutenberg/pull/77163) - Components: Use `--wpds-cursor-control` for interactive controls (Sass only) (https://github.com/WordPress/gutenberg/pull/76786) - Card: Remove redundant margin reset from Card.Title (https://github.com/WordPress/gutenberg/pull/77187) - Theme: Rename typography tokens to use "typography" prefix (https://github.com/WordPress/gutenberg/pull/76912) - UI: Normalize render prop and ref forwarding patterns (https://github.com/WordPress/gutenberg/pull/77160) - Ensure "Retry" button is stable during retries (https://github.com/WordPress/gutenberg/pull/77234) - RTC: Improve array attribute stability when structural changes occur (https://github.com/WordPress/gutenberg/pull/77164) - Env: Fix loopback requests when running on non-default ports (https://github.com/WordPress/gutenberg/pull/77057) - Connectors: Replace speak() with notice store for state changes (https://github.com/WordPress/gutenberg/pull/77174) - Core Data: Fix 'useEntityProp' for raw attributes (https://github.com/WordPress/gutenberg/pull/77120) - Use image.copyMemory() for batch thumbnail generation (https://github.com/WordPress/gutenberg/pull/76979) - Post Author Biography: Preserve occurance of white spaces (https://github.com/WordPress/gutenberg/pull/71133) - Fix PatternsActions prop name from postType to type (https://github.com/WordPress/gutenberg/pull/77251) - Resolve package-lock.json inconsistency for @babel/eslint-parser (https://github.com/WordPress/gutenberg/pull/77256) - Fix duotone filter not applying on style variation switch (https://github.com/WordPress/gutenberg/pull/77229) - Fix: restore editor canvas padding in classic themes (https://github.com/WordPress/gutenberg/pull/76864) - DataViews: simplify `defaultLayouts` prop (https://github.com/WordPress/gutenberg/pull/77232) - getMergedItemsIds: receive full page bigger than perPage (https://github.com/WordPress/gutenberg/pull/77262) - FormTokenField: remove unnecessary styles (https://github.com/WordPress/gutenberg/pull/77263) - TypeScript: Migrate `packages/list-reusable-blocks` package to TypeScript (https://github.com/WordPress/gutenberg/pull/70518) - RTC: Add filterable flag for meta box RTC compatibility (https://github.com/WordPress/gutenberg/pull/76939) - RTC: Fix disconnect dialog due to uneditable entity (https://github.com/WordPress/gutenberg/pull/77242) - Guidelines: Try removing the jsxRuntime pragma and see what happens (https://github.com/WordPress/gutenberg/pull/77255) - DataForm: Show tooltip in edit button in `panel` layout (https://github.com/WordPress/gutenberg/pull/77024) - blocks: Convert blocks package to TypeScript (https://github.com/WordPress/gutenberg/pull/76312) - Fix Gutenberg_REST_View_Config_Controller_7_1 PHP warnings (https://github.com/WordPress/gutenberg/pull/77290) - renamed focus visible (https://github.com/WordPress/gutenberg/pull/77292) - page.waitForFunction: fix call arguments (https://github.com/WordPress/gutenberg/pull/77300) - Tabs: Simplify anchor handling (https://github.com/WordPress/gutenberg/pull/77189) - Tests: Auto-fix some new 'eslint-plugin-playwright' warnings (https://github.com/WordPress/gutenberg/pull/77314) - Tab Menu Item: simplify active tab menu item style (https://github.com/WordPress/gutenberg/pull/77195) - Eslint: Suggest alternative in `no-setting-ds-tokens` rule (https://github.com/WordPress/gutenberg/pull/77154) - Autocomplete: Fix flaky e2e tests (https://github.com/WordPress/gutenberg/pull/77322) - UI: Update `@base-ui/react` from `1.3.0` to `1.4.0` (https://github.com/WordPress/gutenberg/pull/77308) - Docs: Add README for DatePicker and TimePicker Components (https://github.com/WordPress/gutenberg/pull/70365) - UI: use Text component for Badge typography (https://github.com/WordPress/gutenberg/pull/77295) - Block Editor: Extract getElementCSSRules from useBlockProps (https://github.com/WordPress/gutenberg/pull/77327) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (https://github.com/WordPress/gutenberg/pull/77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (https://github.com/WordPress/gutenberg/pull/77336) - Guidelines CPT: Rename references from content guidelines to guidelines (https://github.com/WordPress/gutenberg/pull/77223) - Dialog: add explicit margin-inline-end rule to Title (https://github.com/WordPress/gutenberg/pull/77334) - Remove sandbox `allow-same-origin` for core/html blocks (https://github.com/WordPress/gutenberg/pull/77212) - Block Directory: Use `--wpds-cursor-control` design token (https://github.com/WordPress/gutenberg/pull/77330) - Registers wp_guideline_type taxonomy (https://github.com/WordPress/gutenberg/pull/77156) - DataForm: Add min/max date range support for date and datetime fields (https://github.com/WordPress/gutenberg/pull/77201) - Separator Block: Apply default block variation when inserting via `---` shortcut (https://github.com/WordPress/gutenberg/pull/77135) - Paragraph: Prevent `onEnter` splitting of parent block when insertion of that block type is not allowed (https://github.com/WordPress/gutenberg/pull/77291) - Media Upload Modal: Persist view configuration (https://github.com/WordPress/gutenberg/pull/77288) - Image block: Validate attachment ID exists before treating image as local (https://github.com/WordPress/gutenberg/pull/77178) - Tabs: remove sequential numbering from new tab labels (https://github.com/WordPress/gutenberg/pull/77321) - DataViews: Use `--wpds-cursor-control` design token for interactive controls (https://github.com/WordPress/gutenberg/pull/77259) - Post Editor: Store metaboxes RTC-compatible flag on location entries (https://github.com/WordPress/gutenberg/pull/77361) - Guidelines CPT: Skip registration when post type already exists (https://github.com/WordPress/gutenberg/pull/77486) - RTC: Fixed orphaned meta causing dirty editor state (https://github.com/WordPress/gutenberg/pull/77529) - Guidelines: Make the CPT type-aware (https://github.com/WordPress/gutenberg/pull/77491) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65557. git-svn-id: https://develop.svn.wordpress.org/trunk@62580 602fd350-edb4-49c9-b593-d223f7449a82 --- package.json | 2 +- .../assets/script-loader-packages.php | 44 +-- .../assets/script-modules-packages.php | 10 +- src/wp-includes/blocks/blocks-json.php | 10 +- src/wp-includes/blocks/image.php | 8 +- src/wp-includes/blocks/search.php | 26 +- src/wp-includes/blocks/search/block.json | 10 +- src/wp-includes/build/constants.php | 2 +- src/wp-includes/build/routes.php | 38 +- .../build/routes/connectors-home/content.js | 348 ++++++++++++------ .../connectors-home/content.min.asset.php | 2 +- .../routes/connectors-home/content.min.js | 2 +- .../build/routes/font-list/content.js | 129 +++++-- .../routes/font-list/content.min.asset.php | 2 +- .../build/routes/font-list/content.min.js | 8 +- src/wp-includes/build/routes/registry.php | 14 +- 16 files changed, 437 insertions(+), 218 deletions(-) diff --git a/package.json b/package.json index 42f3747f991c2..d255f78a56a77 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://develop.svn.wordpress.org/trunk" }, "gutenberg": { - "sha": "5426109cdaf45828ef28ff8527d7d38e7e75fe74", + "sha": "7295bd91a3c2b64bb11dde0a12313210d9d16a12", "ghcrRepo": "WordPress/gutenberg/gutenberg-wp-develop-build" }, "engines": { diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php index b5b19945fba47..574f215ceec04 100644 --- a/src/wp-includes/assets/script-loader-packages.php +++ b/src/wp-includes/assets/script-loader-packages.php @@ -13,7 +13,7 @@ 'wp-i18n', 'wp-rich-text' ), - 'version' => '4b07d06c67c3b5ea590c' + 'version' => 'a97786de6f13be9c6637' ), 'api-fetch.js' => array( 'dependencies' => array( @@ -69,7 +69,6 @@ 'react-dom', 'react-jsx-runtime', 'wp-a11y', - 'wp-api-fetch', 'wp-blob', 'wp-block-serialization-default-parser', 'wp-blocks', @@ -100,7 +99,7 @@ 'wp-url', 'wp-warning' ), - 'version' => 'bba5c1885d3a53871248' + 'version' => '16b3af93a787b1379042' ), 'block-library.js' => array( 'dependencies' => array( @@ -142,7 +141,7 @@ 'import' => 'dynamic' ) ), - 'version' => '3510fa05eaf8c889edb7' + 'version' => '9a3a13b2420931623d63' ), 'block-serialization-default-parser.js' => array( 'dependencies' => array( @@ -175,7 +174,7 @@ 'wp-shortcode', 'wp-warning' ), - 'version' => '27318ac6d6f72eaf78ee' + 'version' => '6ed3c03f430c8984d1e1' ), 'commands.js' => array( 'dependencies' => array( @@ -215,7 +214,7 @@ 'wp-rich-text', 'wp-warning' ), - 'version' => 'dd1b4bbe0c8bd976151c' + 'version' => '97a7ddd1e1d999da982b' ), 'compose.js' => array( 'dependencies' => array( @@ -267,7 +266,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '96a75292a48d3fca7f42' + 'version' => '98b022156a52c57830b3' ), 'customize-widgets.js' => array( 'dependencies' => array( @@ -305,7 +304,7 @@ 'wp-private-apis', 'wp-redux-routine' ), - 'version' => '827870cbde5326e4e88e' + 'version' => '180953b1a59424bb6718' ), 'data-controls.js' => array( 'dependencies' => array( @@ -382,7 +381,7 @@ 'import' => 'static' ) ), - 'version' => '012ef18791dcc2fc8895' + 'version' => '571c6840c1f95e154700' ), 'edit-site.js' => array( 'dependencies' => array( @@ -431,7 +430,7 @@ 'import' => 'static' ) ), - 'version' => 'e24eb77015e7b89ec57d' + 'version' => 'a886b2b87319828b24e3' ), 'edit-widgets.js' => array( 'dependencies' => array( @@ -522,7 +521,7 @@ 'import' => 'static' ) ), - 'version' => '12f43831b63cbf5fd5e2' + 'version' => '823ed6e13dfb89c3f89d' ), 'element.js' => array( 'dependencies' => array( @@ -578,7 +577,7 @@ 'dependencies' => array( 'wp-hooks' ), - 'version' => '781d11515ad3d91786ec' + 'version' => '125448662852c5e18937' ), 'is-shallow-equal.js' => array( 'dependencies' => array( @@ -611,7 +610,7 @@ 'wp-element', 'wp-i18n' ), - 'version' => 'd42cff283dbd5effd14c' + 'version' => 'a44da9be02cdfef6e44d' ), 'media-utils.js' => array( 'dependencies' => array( @@ -631,13 +630,14 @@ 'wp-i18n', 'wp-keycodes', 'wp-notices', + 'wp-preferences', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url', 'wp-warning' ), - 'version' => '02ec6a05ea6e6308bbef' + 'version' => '9750aae5171fb20e5c17' ), 'notices.js' => array( 'dependencies' => array( @@ -776,7 +776,7 @@ 'wp-keycodes', 'wp-private-apis' ), - 'version' => '262898c1e2003840b59f' + 'version' => '1b3e411a54ef29d2bf7a' ), 'router.js' => array( 'dependencies' => array( @@ -820,7 +820,7 @@ 'wp-hooks', 'wp-private-apis' ), - 'version' => 'e0666bb035ab660755be' + 'version' => '5ff90a11bbb5def86790' ), 'theme.js' => array( 'dependencies' => array( @@ -828,7 +828,7 @@ 'wp-element', 'wp-private-apis' ), - 'version' => '544f395a4bf1be7a7f82' + 'version' => 'abeb8783107aed891810' ), 'token-list.js' => array( 'dependencies' => array( @@ -859,21 +859,21 @@ 'import' => 'dynamic' ) ), - 'version' => 'd359c2cccf866d7082d2' + 'version' => 'e03397e1062511119cc5' ), 'url.js' => array( 'dependencies' => array( ), - 'version' => 'bb0f766c3d2efe497871' + 'version' => '9dd5f16a5ce37bf4ba2c' ), 'viewport.js' => array( 'dependencies' => array( - 'react-jsx-runtime', 'wp-compose', - 'wp-data' + 'wp-data', + 'wp-element' ), - 'version' => '8614025b8075d220d78f' + 'version' => '97845df4d1a7269c5c2b' ), 'warning.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php index fec4df88e7927..5c5bb7bf9095a 100644 --- a/src/wp-includes/assets/script-modules-packages.php +++ b/src/wp-includes/assets/script-modules-packages.php @@ -46,7 +46,7 @@ 'import' => 'static' ) ), - 'version' => '7d4d261d10dca47ebecb' + 'version' => 'a9114a756e418400594c' ), 'block-library/form/view.js' => array( 'dependencies' => array( @@ -166,7 +166,7 @@ 'import' => 'static' ) ), - 'version' => '91e28c26a7994ed4332c' + 'version' => '570068c474110f2ff13f' ), 'connectors/index.js' => array( 'dependencies' => array( @@ -177,7 +177,7 @@ 'wp-i18n', 'wp-private-apis' ), - 'version' => 'e973aa806299e3d70144' + 'version' => '274797868955a828dfdc' ), 'core-abilities/index.js' => array( 'dependencies' => array( @@ -273,7 +273,7 @@ 'wp-private-apis', 'wp-style-engine' ), - 'version' => '65892b41e8d17dc72ead' + 'version' => 'fe96a6ab10a4550153ab' ), 'route/index.js' => array( 'dependencies' => array( @@ -300,7 +300,7 @@ 'dependencies' => array( ), - 'version' => '21ff0ef0ab8315e42da9' + 'version' => '34c388850fff0c80f78a' ), 'workflow/index.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php index b96595d7b8d63..12fb2a78b077a 100644 --- a/src/wp-includes/blocks/blocks-json.php +++ b/src/wp-includes/blocks/blocks-json.php @@ -6995,10 +6995,6 @@ 'default' => array( ) - ), - 'isSearchFieldHidden' => array( - 'type' => 'boolean', - 'default' => false ) ), 'supports' => array( @@ -7049,7 +7045,11 @@ 'html' => false ), 'editorStyle' => 'wp-block-search-editor', - 'style' => 'wp-block-search' + 'style' => 'wp-block-search', + 'selectors' => array( + 'color' => '.wp-block-search .wp-block-search__button, .wp-block-search.wp-block-search__no-button .wp-block-search__input', + 'border' => '.wp-block-search.wp-block-search__button-outside .wp-block-search__input, .wp-block-search.wp-block-search__button-outside .wp-block-search__button, .wp-block-search.wp-block-search__no-button .wp-block-search__input, .wp-block-search.wp-block-search__button-only .wp-block-search__input, .wp-block-search.wp-block-search__button-only .wp-block-search__button, .wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper' + ) ), 'separator' => array( '$schema' => 'https://schemas.wp.org/trunk/block.json', diff --git a/src/wp-includes/blocks/image.php b/src/wp-includes/blocks/image.php index 02b60f91c030a..22b0ecc2aea33 100644 --- a/src/wp-includes/blocks/image.php +++ b/src/wp-includes/blocks/image.php @@ -205,8 +205,8 @@ function block_core_image_render_lightbox( $block_content, $block, $block_instan array( 'defaultAriaLabel' => __( 'Enlarged image' ), 'closeButtonText' => esc_html__( 'Close' ), - 'prevButtonText' => esc_html__( 'Previous' ), - 'nextButtonText' => esc_html__( 'Next' ), + 'prevButtonText' => esc_html_x( 'Previous', 'previous image in lightbox' ), + 'nextButtonText' => esc_html_x( 'Next', 'next image in lightbox' ), ) ); @@ -323,8 +323,8 @@ class="lightbox-trigger" function block_core_image_print_lightbox_overlay() { $dialog_label = esc_attr__( 'Enlarged images' ); $close_button_text = esc_attr__( 'Close' ); - $prev_button_text = esc_attr__( 'Previous' ); - $next_button_text = esc_attr__( 'Next' ); + $prev_button_text = esc_attr_x( 'Previous', 'previous image in lightbox' ); + $next_button_text = esc_attr_x( 'Next', 'next image in lightbox' ); $close_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" focusable="false"><path d="m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"></path></svg>'; $prev_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" aria-hidden="true" focusable="false"><path d="M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"></path></svg>'; $next_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" aria-hidden="true" focusable="false"><path d="M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"></path></svg>'; diff --git a/src/wp-includes/blocks/search.php b/src/wp-includes/blocks/search.php index 02158c3b8a277..07c051b8f6eb9 100644 --- a/src/wp-includes/blocks/search.php +++ b/src/wp-includes/blocks/search.php @@ -69,6 +69,9 @@ function render_block_core_search( $attributes ) { if ( ! empty( $typography_classes ) ) { $input_classes[] = $typography_classes; } + if ( ! $show_button && ! empty( $color_classes ) ) { + $input_classes[] = $color_classes; + } if ( $input->next_tag() ) { $input->add_class( implode( ' ', $input_classes ) ); $input->set_attribute( 'id', $input_id ); @@ -430,20 +433,37 @@ function styles_for_block_core_search( $attributes ) { } } + $use_input_for_colors = ! empty( $attributes['buttonPosition'] ) && 'no-button' === $attributes['buttonPosition']; + // Add color styles. $has_text_color = ! empty( $attributes['style']['color']['text'] ); if ( $has_text_color ) { - $button_styles[] = sprintf( 'color: %s;', $attributes['style']['color']['text'] ); + $text_color_style = sprintf( 'color: %s;', $attributes['style']['color']['text'] ); + if ( $use_input_for_colors ) { + $input_styles[] = $text_color_style; + } else { + $button_styles[] = $text_color_style; + } } $has_background_color = ! empty( $attributes['style']['color']['background'] ); if ( $has_background_color ) { - $button_styles[] = sprintf( 'background-color: %s;', $attributes['style']['color']['background'] ); + $background_color_style = sprintf( 'background-color: %s;', $attributes['style']['color']['background'] ); + if ( $use_input_for_colors ) { + $input_styles[] = $background_color_style; + } else { + $button_styles[] = $background_color_style; + } } $has_custom_gradient = ! empty( $attributes['style']['color']['gradient'] ); if ( $has_custom_gradient ) { - $button_styles[] = sprintf( 'background: %s;', $attributes['style']['color']['gradient'] ); + $custom_gradient_style = sprintf( 'background: %s;', $attributes['style']['color']['gradient'] ); + if ( $use_input_for_colors ) { + $input_styles[] = $custom_gradient_style; + } else { + $button_styles[] = $custom_gradient_style; + } } // Get typography styles to be shared across inner elements. diff --git a/src/wp-includes/blocks/search/block.json b/src/wp-includes/blocks/search/block.json index a6146d4404041..be9c0e3cdc2d5 100644 --- a/src/wp-includes/blocks/search/block.json +++ b/src/wp-includes/blocks/search/block.json @@ -42,10 +42,6 @@ "query": { "type": "object", "default": {} - }, - "isSearchFieldHidden": { - "type": "boolean", - "default": false } }, "supports": { @@ -92,5 +88,9 @@ "html": false }, "editorStyle": "wp-block-search-editor", - "style": "wp-block-search" + "style": "wp-block-search", + "selectors": { + "color": ".wp-block-search .wp-block-search__button, .wp-block-search.wp-block-search__no-button .wp-block-search__input", + "border": ".wp-block-search.wp-block-search__button-outside .wp-block-search__input, .wp-block-search.wp-block-search__button-outside .wp-block-search__button, .wp-block-search.wp-block-search__no-button .wp-block-search__input, .wp-block-search.wp-block-search__button-only .wp-block-search__input, .wp-block-search.wp-block-search__button-only .wp-block-search__button, .wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper" + } } diff --git a/src/wp-includes/build/constants.php b/src/wp-includes/build/constants.php index 01b67a55a9851..16088be1d41f4 100644 --- a/src/wp-includes/build/constants.php +++ b/src/wp-includes/build/constants.php @@ -9,6 +9,6 @@ */ return array( - 'version' => '22.9.0', + 'version' => '23.0.0', 'build_url' => includes_url( 'build/' ), ); diff --git a/src/wp-includes/build/routes.php b/src/wp-includes/build/routes.php index f470e6f4cd89f..873414a220566 100644 --- a/src/wp-includes/build/routes.php +++ b/src/wp-includes/build/routes.php @@ -111,25 +111,6 @@ function wp_register_options_connectors_wp_admin_page_routes() { } add_action( 'options-connectors-wp-admin_init', 'wp_register_options_connectors_wp_admin_page_routes' ); -// Page-specific route registration functions for guidelines -/** - * Register routes for guidelines page (full-page mode). - */ -function wp_register_guidelines_page_routes() { - global $wp_guidelines_routes_data; - wp_register_page_routes( $wp_guidelines_routes_data, 'wp_register_guidelines_route' ); -} -add_action( 'guidelines_init', 'wp_register_guidelines_page_routes' ); - -/** - * Register routes for guidelines page (wp-admin mode). - */ -function wp_register_guidelines_wp_admin_page_routes() { - global $wp_guidelines_routes_data; - wp_register_page_routes( $wp_guidelines_routes_data, 'wp_register_guidelines_wp_admin_route' ); -} -add_action( 'guidelines-wp-admin_init', 'wp_register_guidelines_wp_admin_page_routes' ); - // Page-specific route registration functions for font-library /** * Register routes for font-library page (full-page mode). @@ -149,3 +130,22 @@ function wp_register_font_library_wp_admin_page_routes() { } add_action( 'font-library-wp-admin_init', 'wp_register_font_library_wp_admin_page_routes' ); +// Page-specific route registration functions for guidelines +/** + * Register routes for guidelines page (full-page mode). + */ +function wp_register_guidelines_page_routes() { + global $wp_guidelines_routes_data; + wp_register_page_routes( $wp_guidelines_routes_data, 'wp_register_guidelines_route' ); +} +add_action( 'guidelines_init', 'wp_register_guidelines_page_routes' ); + +/** + * Register routes for guidelines page (wp-admin mode). + */ +function wp_register_guidelines_wp_admin_page_routes() { + global $wp_guidelines_routes_data; + wp_register_page_routes( $wp_guidelines_routes_data, 'wp_register_guidelines_wp_admin_route' ); +} +add_action( 'guidelines-wp-admin_init', 'wp_register_guidelines_wp_admin_page_routes' ); + diff --git a/src/wp-includes/build/routes/connectors-home/content.js b/src/wp-includes/build/routes/connectors-home/content.js index 3b3c573df98f7..d3e7309fb1cb4 100644 --- a/src/wp-includes/build/routes/connectors-home/content.js +++ b/src/wp-includes/build/routes/connectors-home/content.js @@ -80,6 +80,13 @@ var require_core_data = __commonJS({ } }); +// package-external:@wordpress/notices +var require_notices = __commonJS({ + "package-external:@wordpress/notices"(exports, module) { + module.exports = window.wp.notices; + } +}); + // package-external:@wordpress/url var require_url = __commonJS({ "package-external:@wordpress/url"(exports, module) { @@ -125,6 +132,9 @@ var NavigableRegion = (0, import_element.forwardRef)( NavigableRegion.displayName = "NavigableRegion"; var navigable_region_default = NavigableRegion; +// packages/ui/build-module/badge/badge.mjs +var import_element3 = __toESM(require_element(), 1); + // node_modules/@base-ui/utils/esm/useRefWithInit.js var React2 = __toESM(require_react(), 1); var UNINITIALIZED = {}; @@ -314,20 +324,21 @@ function resolveStyle(style, state) { // node_modules/@base-ui/react/esm/merge-props/mergeProps.js var EMPTY_PROPS = {}; function mergeProps(a, b, c, d, e) { - let merged = { - ...resolvePropsGetter(a, EMPTY_PROPS) - }; + if (!c && !d && !e && !a) { + return createInitialMergedProps(b); + } + let merged = createInitialMergedProps(a); if (b) { - merged = mergeOne(merged, b); + merged = mergeInto(merged, b); } if (c) { - merged = mergeOne(merged, c); + merged = mergeInto(merged, c); } if (d) { - merged = mergeOne(merged, d); + merged = mergeInto(merged, d); } if (e) { - merged = mergeOne(merged, e); + merged = mergeInto(merged, e); } return merged; } @@ -336,22 +347,40 @@ function mergePropsN(props) { return EMPTY_PROPS; } if (props.length === 1) { - return resolvePropsGetter(props[0], EMPTY_PROPS); + return createInitialMergedProps(props[0]); } - let merged = { - ...resolvePropsGetter(props[0], EMPTY_PROPS) - }; + let merged = createInitialMergedProps(props[0]); for (let i = 1; i < props.length; i += 1) { - merged = mergeOne(merged, props[i]); + merged = mergeInto(merged, props[i]); } return merged; } -function mergeOne(merged, inputProps) { +function createInitialMergedProps(inputProps) { + if (isPropsGetter(inputProps)) { + return { + ...resolvePropsGetter(inputProps, EMPTY_PROPS) + }; + } + return copyInitialProps(inputProps); +} +function mergeInto(merged, inputProps) { if (isPropsGetter(inputProps)) { - return inputProps(merged); + return resolvePropsGetter(inputProps, merged); } return mutablyMergeInto(merged, inputProps); } +function copyInitialProps(inputProps) { + const copiedProps = { + ...inputProps + }; + for (const propName in copiedProps) { + const propValue = copiedProps[propName]; + if (isEventHandler(propName, propValue)) { + copiedProps[propName] = wrapEventHandler(propValue); + } + } + return copiedProps; +} function mutablyMergeInto(mergedProps, externalProps) { if (!externalProps) { return mergedProps; @@ -398,7 +427,7 @@ function mergeEventHandlers(ourHandler, theirHandler) { return ourHandler; } if (!ourHandler) { - return theirHandler; + return wrapEventHandler(theirHandler); } return (event) => { if (isSyntheticEvent(event)) { @@ -415,6 +444,17 @@ function mergeEventHandlers(ourHandler, theirHandler) { return result; }; } +function wrapEventHandler(handler) { + if (!handler) { + return handler; + } + return (event) => { + if (isSyntheticEvent(event)) { + makeEventPreventable(event); + } + return handler(event); + }; +} function makeEventPreventable(event) { event.preventBaseUIHandler = () => { event.baseUIHandlerPrevented = true; @@ -471,7 +511,8 @@ function useRenderElementProps(componentProps, params = {}) { const className = enabled ? resolveClassName(classNameProp, state) : void 0; const style = enabled ? resolveStyle(styleProp, state) : void 0; const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT; - const outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; + const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; + const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; if (typeof document !== "undefined") { if (!enabled) { useMergedRefs(null, null); @@ -492,7 +533,15 @@ function useRenderElementProps(componentProps, params = {}) { } return outProps; } +function resolveRenderFunctionProps(props) { + if (Array.isArray(props)) { + return mergePropsN(props); + } + return mergeProps(void 0, props); +} var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); +var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; +var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; function evaluateRenderProp(element, render, props, state) { if (render) { if (typeof render === "function") { @@ -527,8 +576,10 @@ function warnIfRenderPropLooksLikeComponent(renderFn) { if (functionName.length === 0) { return; } - const firstCharacterCode = functionName.charCodeAt(0); - if (firstCharacterCode < 65 || firstCharacterCode > 90) { + if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { + return; + } + if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { return; } warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); @@ -556,41 +607,74 @@ function useRender(params) { return useRenderElement(params.defaultTagName ?? "div", params, params); } -// packages/ui/build-module/badge/badge.mjs +// packages/ui/build-module/text/text.mjs var import_element2 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='a407d6dd3d']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='4130d64bea']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "4130d64bea"); + style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')); + document.head.appendChild(style); +} +var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "a407d6dd3d"); - style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#d8d8d8);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}')); + style.setAttribute("data-wp-hash", "1fb29d3a3c"); + style.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")); document.head.appendChild(style); } -var style_default = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; -var Badge = (0, import_element2.forwardRef)(function Badge2({ children, intent = "none", render, className, ...props }, ref) { +var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; +var Text = (0, import_element2.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { const element = useRender({ render, defaultTagName: "span", ref, props: mergeProps(props, { className: clsx_default( - style_default.badge, - style_default[`is-${intent}-intent`], + style_default.text, + variant.startsWith("heading-") && global_css_defense_default.heading, + variant.startsWith("body-") && global_css_defense_default.p, + style_default[variant], className - ), - children + ) }) }); return element; }); +// packages/ui/build-module/badge/badge.mjs +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='d6a685e1aa']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "d6a685e1aa"); + style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}")); + document.head.appendChild(style); +} +var style_default2 = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; +var Badge = (0, import_element3.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + Text, + { + ref, + className: clsx_default( + style_default2.badge, + style_default2[`is-${intent}-intent`], + className + ), + ...props, + variant: "body-sm" + } + ); +}); + // packages/ui/build-module/stack/stack.mjs -var import_element3 = __toESM(require_element(), 1); +var import_element4 = __toESM(require_element(), 1); if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='b51ff41489']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "b51ff41489"); style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); document.head.appendChild(style); } -var style_default2 = { "stack": "_19ce0419607e1896__stack" }; +var style_default3 = { "stack": "_19ce0419607e1896__stack" }; var gapTokens = { xs: "var(--wpds-dimension-gap-xs, 4px)", sm: "var(--wpds-dimension-gap-sm, 8px)", @@ -600,7 +684,7 @@ var gapTokens = { "2xl": "var(--wpds-dimension-gap-2xl, 32px)", "3xl": "var(--wpds-dimension-gap-3xl, 40px)" }; -var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { +var Stack = (0, import_element4.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { const style = { gap: gap && gapTokens[gap], alignItems: align, @@ -611,7 +695,7 @@ var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, al const element = useRender({ render, ref, - props: mergeProps(props, { style, className: style_default2.stack }) + props: mergeProps(props, { style, className: style_default3.stack }) }); return element; }); @@ -621,7 +705,7 @@ var import_components = __toESM(require_components(), 1); var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); // packages/admin-ui/build-module/page/header.mjs -var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); function Header({ headingLevel = 2, breadcrumbs, @@ -632,27 +716,27 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( Stack, { direction: "column", className: "admin-ui-page__header", - render: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("header", {}), + render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("header", {}), children: [ - /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( SidebarToggleSlot, { bubblesVirtually: true, className: "admin-ui-page__sidebar-toggle-slot" } ), - title && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), + title && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), breadcrumbs, badges ] }), - /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( Stack, { direction: "row", @@ -664,14 +748,14 @@ function Header({ } ) ] }), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + subTitle && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) ] } ); } // packages/admin-ui/build-module/page/index.mjs -var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); function Page({ headingLevel, breadcrumbs, @@ -687,8 +771,8 @@ function Page({ }) { const classes = clsx_default("admin-ui-page", className); const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); - return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ - (title || breadcrumbs || badges || actions) && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ + (title || breadcrumbs || badges || actions) && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( Header, { headingLevel, @@ -700,7 +784,7 @@ function Page({ showSidebarToggle } ), - hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children ] }); } Page.SidebarToggleFill = SidebarToggleFill; @@ -708,12 +792,12 @@ var page_default = Page; // routes/connectors-home/stage.tsx var import_components4 = __toESM(require_components()); -var import_data3 = __toESM(require_data()); -var import_element7 = __toESM(require_element()); +var import_data4 = __toESM(require_data()); +var import_element8 = __toESM(require_element()); var import_i18n4 = __toESM(require_i18n()); var import_core_data3 = __toESM(require_core_data()); import { - privateApis as connectorsPrivateApis + privateApis as connectorsPrivateApis2 } from "@wordpress/connectors"; // routes/connectors-home/style.scss @@ -727,28 +811,37 @@ if (typeof document !== "undefined" && true && !document.head.querySelector("sty // routes/connectors-home/ai-plugin-callout.tsx var import_components3 = __toESM(require_components()); var import_core_data2 = __toESM(require_core_data()); -var import_data2 = __toESM(require_data()); -var import_element6 = __toESM(require_element()); +var import_data3 = __toESM(require_data()); +var import_element7 = __toESM(require_element()); var import_i18n3 = __toESM(require_i18n()); +var import_notices2 = __toESM(require_notices()); var import_url = __toESM(require_url()); -import { speak as speak2 } from "@wordpress/a11y"; // routes/connectors-home/default-connectors.tsx var import_components2 = __toESM(require_components()); -var import_element5 = __toESM(require_element()); +var import_element6 = __toESM(require_element()); +var import_data2 = __toESM(require_data()); var import_i18n2 = __toESM(require_i18n()); import { __experimentalRegisterConnector as registerConnector, __experimentalConnectorItem as ConnectorItem, - __experimentalDefaultConnectorSettings as DefaultConnectorSettings + __experimentalDefaultConnectorSettings as DefaultConnectorSettings, + privateApis as connectorsPrivateApis } from "@wordpress/connectors"; +// routes/lock-unlock.ts +var import_private_apis = __toESM(require_private_apis()); +var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( + "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", + "@wordpress/routes" +); + // routes/connectors-home/use-connector-plugin.ts var import_core_data = __toESM(require_core_data()); var import_data = __toESM(require_data()); -var import_element4 = __toESM(require_element()); +var import_element5 = __toESM(require_element()); var import_i18n = __toESM(require_i18n()); -import { speak } from "@wordpress/a11y"; +var import_notices = __toESM(require_notices()); function useConnectorPlugin({ file: pluginFileFromServer, settingName, @@ -758,10 +851,10 @@ function useConnectorPlugin({ keySource = "none", initialIsConnected = false }) { - const [isExpanded, setIsExpanded] = (0, import_element4.useState)(false); - const [isBusy, setIsBusy] = (0, import_element4.useState)(false); - const [connectedState, setConnectedState] = (0, import_element4.useState)(initialIsConnected); - const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element4.useState)(null); + const [isExpanded, setIsExpanded] = (0, import_element5.useState)(false); + const [isBusy, setIsBusy] = (0, import_element5.useState)(false); + const [connectedState, setConnectedState] = (0, import_element5.useState)(initialIsConnected); + const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element5.useState)(null); const pluginBasename = pluginFileFromServer?.replace(/\.php$/, ""); const pluginSlug = pluginBasename?.includes("/") ? pluginBasename.split("/")[0] : pluginBasename; const { @@ -770,8 +863,8 @@ function useConnectorPlugin({ currentApiKey, canInstallPlugins } = (0, import_data.useSelect)( - (select) => { - const store2 = select(import_core_data.store); + (select2) => { + const store2 = select2(import_core_data.store); const siteSettings = store2.getEntityRecord("root", "site"); const apiKey = siteSettings?.[settingName] ?? ""; const canCreate = !!store2.canUser("create", { @@ -836,6 +929,7 @@ function useConnectorPlugin({ // update connected state (mirrors what the server would report on page load). pluginStatusOverride === "active" && !!currentApiKey; const { saveEntityRecord, invalidateResolution } = (0, import_data.useDispatch)(import_core_data.store); + const { createSuccessNotice, createErrorNotice } = (0, import_data.useDispatch)(import_notices.store); const installPlugin = async () => { if (!pluginSlug) { return; @@ -851,21 +945,28 @@ function useConnectorPlugin({ setPluginStatusOverride("active"); invalidateResolution("getEntityRecord", ["root", "site"]); setIsExpanded(true); - speak( + createSuccessNotice( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Plugin for %s installed and activated successfully."), connectorName - ) + ), + { + id: "connector-plugin-install-success", + type: "snackbar" + } ); } catch { - speak( + createErrorNotice( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Failed to install plugin for %s."), connectorName ), - "assertive" + { + id: "connector-plugin-install-error", + type: "snackbar" + } ); } finally { setIsBusy(false); @@ -889,21 +990,28 @@ function useConnectorPlugin({ setPluginStatusOverride("active"); invalidateResolution("getEntityRecord", ["root", "site"]); setIsExpanded(true); - speak( + createSuccessNotice( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Plugin for %s activated successfully."), connectorName - ) + ), + { + id: "connector-plugin-activate-success", + type: "snackbar" + } ); } catch { - speak( + createErrorNotice( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Failed to activate plugin for %s."), connectorName ), - "assertive" + { + id: "connector-plugin-activate-error", + type: "snackbar" + } ); } finally { setIsBusy(false); @@ -962,12 +1070,16 @@ function useConnectorPlugin({ ); } setConnectedState(true); - speak( + createSuccessNotice( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("%s connected successfully."), connectorName - ) + ), + { + id: "connector-connect-success", + type: "snackbar" + } ); } catch (error) { console.error("Failed to save API key:", error); @@ -983,22 +1095,29 @@ function useConnectorPlugin({ { throwOnError: true } ); setConnectedState(false); - speak( + createSuccessNotice( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("%s disconnected."), connectorName - ) + ), + { + id: "connector-disconnect-success", + type: "snackbar" + } ); } catch (error) { console.error("Failed to remove API key:", error); - speak( + createErrorNotice( (0, import_i18n.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ (0, import_i18n.__)("Failed to disconnect %s."), connectorName ), - "assertive" + { + id: "connector-disconnect-error", + type: "snackbar" + } ); throw error; } @@ -1181,6 +1300,7 @@ var GeminiLogo = () => /* @__PURE__ */ React.createElement( ); // routes/connectors-home/default-connectors.tsx +var { store: connectorsStore } = unlock(connectorsPrivateApis); function getConnectorData() { try { const parsed = JSON.parse( @@ -1270,9 +1390,9 @@ function ApiKeyConnector({ const isExternallyConfigured = keySource === "env" || keySource === "constant"; const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; const showActionButton = !showUnavailableBadge; - const actionButtonRef = (0, import_element5.useRef)(null); - const pendingFocusRef = (0, import_element5.useRef)(false); - (0, import_element5.useEffect)(() => { + const actionButtonRef = (0, import_element6.useRef)(null); + const pendingFocusRef = (0, import_element6.useRef)(false); + (0, import_element6.useEffect)(() => { if (pendingFocusRef.current && !isBusy) { pendingFocusRef.current = false; actionButtonRef.current?.focus(); @@ -1334,6 +1454,9 @@ function registerDefaultConnectors() { const connectors = getConnectorData(); const sanitize = (s) => s.replace(/[^a-z0-9-_]/gi, "-"); for (const [connectorId, data] of Object.entries(connectors)) { + if (connectorId === "akismet" && !data.plugin?.isInstalled) { + continue; + } const { authentication } = data; const connectorName = sanitize(connectorId); const args = { @@ -1344,7 +1467,10 @@ function registerDefaultConnectors() { authentication, plugin: data.plugin }; - if (authentication.method === "api_key") { + const existing = unlock((0, import_data2.select)(connectorsStore)).getConnector( + connectorName + ); + if (authentication.method === "api_key" && !existing?.render) { args.render = ApiKeyConnector; } registerConnector(connectorName, args); @@ -1394,6 +1520,7 @@ function WpLogoDecoration() { // routes/connectors-home/ai-plugin-callout.tsx var AI_PLUGIN_SLUG = "ai"; +var AI_PLUGIN_PAGE_SLUG = "ai-wp-admin"; var AI_PLUGIN_ID = "ai/ai"; var AI_PLUGIN_URL = "https://wordpress.org/plugins/ai/"; var connectorDataValues = Object.values(getConnectorData()); @@ -1407,15 +1534,15 @@ for (const c of connectorDataValues) { } } function AiPluginCallout() { - const [isBusy, setIsBusy] = (0, import_element6.useState)(false); - const [justActivated, setJustActivated] = (0, import_element6.useState)(false); - const actionButtonRef = (0, import_element6.useRef)(null); - (0, import_element6.useEffect)(() => { + const [isBusy, setIsBusy] = (0, import_element7.useState)(false); + const [justActivated, setJustActivated] = (0, import_element7.useState)(false); + const actionButtonRef = (0, import_element7.useRef)(null); + (0, import_element7.useEffect)(() => { if (justActivated) { actionButtonRef.current?.focus(); } }, [justActivated]); - const initialHasConnectedProvider = (0, import_element6.useRef)( + const initialHasConnectedProvider = (0, import_element7.useRef)( connectorDataValues.some( (c) => c.type === "ai_provider" && c.authentication.method === "api_key" && c.authentication.isConnected ) @@ -1425,8 +1552,8 @@ function AiPluginCallout() { canInstallPlugins, canManagePlugins, hasConnectedProvider - } = (0, import_data2.useSelect)((select) => { - const store2 = select(import_core_data2.store); + } = (0, import_data3.useSelect)((select2) => { + const store2 = select2(import_core_data2.store); const canCreate = !!store2.canUser("create", { kind: "root", name: "plugin" @@ -1468,7 +1595,8 @@ function AiPluginCallout() { hasConnectedProvider: hasConnected }; }, []); - const { saveEntityRecord } = (0, import_data2.useDispatch)(import_core_data2.store); + const { saveEntityRecord } = (0, import_data3.useDispatch)(import_core_data2.store); + const { createSuccessNotice, createErrorNotice } = (0, import_data3.useDispatch)(import_notices2.store); const installPlugin = async () => { setIsBusy(true); try { @@ -1479,9 +1607,18 @@ function AiPluginCallout() { { throwOnError: true } ); setJustActivated(true); - speak2((0, import_i18n3.__)("AI plugin installed and activated successfully.")); + createSuccessNotice( + (0, import_i18n3.__)("AI plugin installed and activated successfully."), + { + id: "ai-plugin-install-success", + type: "snackbar" + } + ); } catch { - speak2((0, import_i18n3.__)("Failed to install the AI plugin."), "assertive"); + createErrorNotice((0, import_i18n3.__)("Failed to install the AI plugin."), { + id: "ai-plugin-install-error", + type: "snackbar" + }); } finally { setIsBusy(false); } @@ -1496,9 +1633,15 @@ function AiPluginCallout() { { throwOnError: true } ); setJustActivated(true); - speak2((0, import_i18n3.__)("AI plugin activated successfully.")); + createSuccessNotice((0, import_i18n3.__)("AI plugin activated successfully."), { + id: "ai-plugin-activate-success", + type: "snackbar" + }); } catch { - speak2((0, import_i18n3.__)("Failed to activate the AI plugin."), "assertive"); + createErrorNotice((0, import_i18n3.__)("Failed to activate the AI plugin."), { + id: "ai-plugin-activate-error", + type: "snackbar" + }); } finally { setIsBusy(false); } @@ -1550,7 +1693,7 @@ function AiPluginCallout() { onClick: isBusy ? void 0 : activatePlugin }; }; - return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element6.createInterpolateElement)(getMessage(), { + return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element7.createInterpolateElement)(getMessage(), { strong: /* @__PURE__ */ React.createElement("strong", null), // @ts-ignore children are injected by createInterpolateElement at runtime. a: /* @__PURE__ */ React.createElement(import_components3.ExternalLink, { href: AI_PLUGIN_URL }) @@ -1572,28 +1715,21 @@ function AiPluginCallout() { variant: "secondary", size: "compact", href: (0, import_url.addQueryArgs)("options-general.php", { - page: AI_PLUGIN_SLUG + page: AI_PLUGIN_PAGE_SLUG }) }, (0, import_i18n3.__)("Control features in the AI plugin") )), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); } -// routes/lock-unlock.ts -var import_private_apis = __toESM(require_private_apis()); -var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( - "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", - "@wordpress/routes" -); - // routes/connectors-home/stage.tsx -var { store } = unlock(connectorsPrivateApis); +var { store } = unlock(connectorsPrivateApis2); registerDefaultConnectors(); function ConnectorsPage() { - const { connectors, canInstallPlugins } = (0, import_data3.useSelect)( - (select) => ({ - connectors: unlock(select(store)).getConnectors(), - canInstallPlugins: select(import_core_data3.store).canUser("create", { + const { connectors, canInstallPlugins } = (0, import_data4.useSelect)( + (select2) => ({ + connectors: unlock(select2(store)).getConnectors(), + canInstallPlugins: select2(import_core_data3.store).canUser("create", { kind: "root", name: "plugin" }) @@ -1647,7 +1783,7 @@ function ConnectorsPage() { } return null; })), - canInstallPlugins && /* @__PURE__ */ React.createElement("p", null, (0, import_element7.createInterpolateElement)( + canInstallPlugins && /* @__PURE__ */ React.createElement("p", null, (0, import_element8.createInterpolateElement)( (0, import_i18n4.__)( "If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available." ), diff --git a/src/wp-includes/build/routes/connectors-home/content.min.asset.php b/src/wp-includes/build/routes/connectors-home/content.min.asset.php index f9d0bc49cbf9c..805bdda10c1a5 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.asset.php +++ b/src/wp-includes/build/routes/connectors-home/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '1b69c8bd8a9b28336a03'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '0ec4c94e5a3b9c814dec'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/connectors-home/content.min.js b/src/wp-includes/build/routes/connectors-home/content.min.js index de9f21dd582b2..d04582cc47fb7 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.js +++ b/src/wp-includes/build/routes/connectors-home/content.min.js @@ -1 +1 @@ -var Nt=Object.create;var He=Object.defineProperty;var qt=Object.getOwnPropertyDescriptor;var Vt=Object.getOwnPropertyNames;var Yt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var R=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var St=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Vt(t))!Xt.call(e,r)&&r!==n&&He(e,r,{get:()=>t[r],enumerable:!(o=qt(t,r))||o.enumerable});return e};var s=(e,t,n)=>(n=e!=null?Nt(Yt(e)):{},St(t||!e||!e.__esModule?He(n,"default",{value:e,enumerable:!0}):n,e));var k=R((On,Te)=>{Te.exports=window.wp.i18n});var U=R((Mn,Ne)=>{Ne.exports=window.wp.components});var oe=R((Rn,qe)=>{qe.exports=window.ReactJSXRuntime});var j=R((Bn,Ye)=>{Ye.exports=window.wp.element});var Z=R((Tn,Ae)=>{Ae.exports=window.React});var st=R((mr,it)=>{it.exports=window.wp.privateApis});var ie=R((jr,gt)=>{gt.exports=window.wp.data});var se=R((Hr,mt)=>{mt.exports=window.wp.coreData});var ht=R((Tr,vt)=>{vt.exports=window.wp.url});function Ve(e){var t,n,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(n=Ve(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}function Et(){for(var e,t,n=0,o="",r=arguments.length;n<r;n++)(e=arguments[n])&&(t=Ve(e))&&(o&&(o+=" "),o+=t);return o}var A=Et;var Xe=s(j(),1),Se=s(oe(),1),Ee=(0,Xe.forwardRef)(({children:e,className:t,ariaLabel:n,as:o="div",...r},a)=>(0,Se.jsx)(o,{ref:a,className:A("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...r,children:e}));Ee.displayName="NavigableRegion";var Ce=Ee;var We=s(Z(),1),Ze={};function ge(e,t){let n=We.useRef(Ze);return n.current===Ze&&(n.current=e(t)),n}function Ct(e,t){return function(o,...r){let a=new URL(e);return a.searchParams.set("code",o.toString()),r.forEach(i=>a.searchParams.append("args[]",i)),`${t} error #${o}; visit ${a} for the full message.`}}var At=Ct("https://base-ui.com/production-error","Base UI"),Ie=At;var S=s(Z(),1);function me(e,t,n,o){let r=ge(ke).current;return Zt(r,e,t,n,o)&&Ue(r,[e,t,n,o]),r.callback}function Ke(e){let t=ge(ke).current;return Wt(t,e)&&Ue(t,e),t.callback}function ke(){return{callback:null,cleanup:null,refs:[]}}function Zt(e,t,n,o,r){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==o||e.refs[3]!==r}function Wt(e,t){return e.refs.length!==t.length||e.refs.some((n,o)=>n!==t[o])}function Ue(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let o=Array(t.length).fill(null);for(let r=0;r<t.length;r+=1){let a=t[r];if(a!=null)switch(typeof a){case"function":{let i=a(n);typeof i=="function"&&(o[r]=i);break}case"object":{a.current=n;break}default:}}e.cleanup=()=>{for(let r=0;r<t.length;r+=1){let a=t[r];if(a!=null)switch(typeof a){case"function":{let i=o[r];typeof i=="function"?i():a(null);break}case"object":{a.current=null;break}default:}}}}}}var Fe=s(Z(),1);var Qe=s(Z(),1),It=parseInt(Qe.version,10);function Je(e){return It>=e}function ve(e){if(!Fe.isValidElement(e))return null;let t=e,n=t.props;return(Je(19)?n?.ref:t.ref)??null}function Q(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function _e(e,t){let n={};for(let o in e){let r=e[o];if(t?.hasOwnProperty(o)){let a=t[o](r);a!=null&&Object.assign(n,a);continue}r===!0?n[`data-${o.toLowerCase()}`]="":r&&(n[`data-${o.toLowerCase()}`]=r.toString())}return n}function $e(e,t){return typeof e=="function"?e(t):e}function et(e,t){return typeof e=="function"?e(t):e}var F={};function W(e,t,n,o,r){let a={...he(e,F)};return t&&(a=J(a,t)),n&&(a=J(a,n)),o&&(a=J(a,o)),r&&(a=J(a,r)),a}function tt(e){if(e.length===0)return F;if(e.length===1)return he(e[0],F);let t={...he(e[0],F)};for(let n=1;n<e.length;n+=1)t=J(t,e[n]);return t}function J(e,t){return nt(t)?t(e):Kt(e,t)}function Kt(e,t){if(!t)return e;for(let n in t){let o=t[n];switch(n){case"style":{e[n]=Q(e.style,o);break}case"className":{e[n]=be(e.className,o);break}default:kt(n,o)?e[n]=Ut(e[n],o):e[n]=o}}return e}function kt(e,t){let n=e.charCodeAt(0),o=e.charCodeAt(1),r=e.charCodeAt(2);return n===111&&o===110&&r>=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function nt(e){return typeof e=="function"}function he(e,t){return nt(e)?e(t):e??F}function Ut(e,t){return t?e?n=>{if(Jt(n)){let r=n;Qt(r);let a=t(r);return r.baseUIHandlerPrevented||e?.(r),a}let o=t(n);return e?.(n),o}:t:e}function Qt(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function be(e,t){return t?e?t+" "+e:t:e}function Jt(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Ft=Object.freeze([]),H=Object.freeze({});var _t="data-base-ui-swipe-ignore",$t="data-swipe-ignore",Un=`[${_t}]`,Qn=`[${$t}]`;var Pe=s(Z(),1);function rt(e,t,n={}){let o=t.render,r=en(t,n);if(n.enabled===!1)return null;let a=n.state??H;return nn(e,o,r,a)}function en(e,t={}){let{className:n,style:o,render:r}=e,{state:a=H,ref:i,props:l,stateAttributesMapping:u,enabled:d=!0}=t,f=d?$e(n,a):void 0,g=d?et(o,a):void 0,x=d?_e(a,u):H,p=d?Q(x,Array.isArray(l)?tt(l):l)??H:H;return typeof document<"u"&&(d?Array.isArray(i)?p.ref=Ke([p.ref,ve(r),...i]):p.ref=me(p.ref,ve(r),i):me(null,null)),d?(f!==void 0&&(p.className=be(p.className,f)),g!==void 0&&(p.style=Q(p.style,g)),p):H}var tn=Symbol.for("react.lazy");function nn(e,t,n,o){if(t){if(typeof t=="function")return t(n,o);let r=W(n,t.props);r.ref=n.ref;let a=t;return a?.$$typeof===tn&&(a=S.Children.toArray(t)[0]),S.cloneElement(a,r)}if(e&&typeof e=="string")return rn(e,n);throw new Error(Ie(8))}function rn(e,t){return e==="button"?(0,Pe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Pe.createElement)("img",{alt:"",...t,key:t.key}):S.createElement(e,t)}function ae(e){return rt(e.defaultTagName??"div",e,e)}var at=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='a407d6dd3d']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","a407d6dd3d"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#d8d8d8);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}')),document.head.appendChild(e)}var ot={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},we=(0,at.forwardRef)(function({children:t,intent:n="none",render:o,className:r,...a},i){return ae({render:o,defaultTagName:"span",ref:i,props:W(a,{className:A(ot.badge,ot[`is-${n}-intent`],r),children:t})})});var ct=s(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","b51ff41489"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var on={stack:"_19ce0419607e1896__stack"},an={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},I=(0,ct.forwardRef)(function({direction:t,gap:n,align:o,justify:r,wrap:a,render:i,...l},u){let d={gap:n&&an[n],alignItems:o,justifyContent:r,flexDirection:t,flexWrap:a};return ae({render:i,ref:u,props:W(l,{style:d,className:on.stack})})});var lt=s(U(),1),{Fill:dt,Slot:ut}=(0,lt.createSlotFill)("SidebarToggle");var w=s(oe(),1);function ft({headingLevel:e=2,breadcrumbs:t,badges:n,title:o,subTitle:r,actions:a,showSidebarToggle:i=!0}){let l=`h${e}`;return(0,w.jsxs)(I,{direction:"column",className:"admin-ui-page__header",render:(0,w.jsx)("header",{}),children:[(0,w.jsxs)(I,{direction:"row",justify:"space-between",gap:"sm",children:[(0,w.jsxs)(I,{direction:"row",gap:"sm",align:"center",justify:"start",children:[i&&(0,w.jsx)(ut,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,w.jsx)(l,{className:"admin-ui-page__header-title",children:o}),t,n]}),(0,w.jsx)(I,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),r&&(0,w.jsx)("p",{className:"admin-ui-page__header-subtitle",children:r})]})}var _=s(oe(),1);function pt({headingLevel:e,breadcrumbs:t,badges:n,title:o,subTitle:r,children:a,className:i,actions:l,ariaLabel:u,hasPadding:d=!1,showSidebarToggle:f=!0}){let g=A("admin-ui-page",i);return(0,_.jsxs)(Ce,{className:g,ariaLabel:u??(typeof o=="string"?o:""),children:[(o||t||n||l)&&(0,_.jsx)(ft,{headingLevel:e,breadcrumbs:t,badges:n,title:o,subTitle:r,actions:l,showSidebarToggle:f}),d?(0,_.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}pt.SidebarToggleFill=dt;var Le=pt;var y=s(U()),jt=s(ie()),Ht=s(j()),C=s(k()),Tt=s(se());import{privateApis as hn}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='31ffc51439']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","31ffc51439"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var te=s(U()),Oe=s(se()),ue=s(ie()),L=s(j()),m=s(k()),Mt=s(ht());import{speak as de}from"@wordpress/a11y";var le=s(U()),ee=s(j()),xe=s(k());import{__experimentalRegisterConnector as sn,__experimentalConnectorItem as cn,__experimentalDefaultConnectorSettings as ln}from"@wordpress/connectors";var ye=s(se()),ce=s(ie()),$=s(j()),c=s(k());import{speak as E}from"@wordpress/a11y";function bt({file:e,settingName:t,connectorName:n,isInstalled:o,isActivated:r,keySource:a="none",initialIsConnected:i=!1}){let[l,u]=(0,$.useState)(!1),[d,f]=(0,$.useState)(!1),[g,x]=(0,$.useState)(i),[p,D]=(0,$.useState)(null),h=e?.replace(/\.php$/,""),G=h?.includes("/")?h.split("/")[0]:h,{derivedPluginStatus:b,canManagePlugins:z,currentApiKey:v,canInstallPlugins:O}=(0,ce.useSelect)(V=>{let Y=V(ye.store),K=Y.getEntityRecord("root","site")?.[t]??"",X=!!Y.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:Y.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:K,canInstallPlugins:X};let je=Y.getEntityRecord("root","plugin",h);if(!Y.hasFinishedResolution("getEntityRecord",["root","plugin",h]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:K,canInstallPlugins:X};if(je)return{derivedPluginStatus:je.status==="active"?"active":"inactive",canManagePlugins:!0,currentApiKey:K,canInstallPlugins:X};let pe="not-installed";return r?pe="active":o&&(pe="inactive"),{derivedPluginStatus:pe,canManagePlugins:!1,currentApiKey:K,canInstallPlugins:X}},[h,t,o,r]),P=p??b,B=z,T=P==="active"&&g||p==="active"&&!!v,{saveEntityRecord:M,invalidateResolution:N}=(0,ce.useDispatch)(ye.store),fe=async()=>{if(G){f(!0);try{await M("root","plugin",{slug:G,status:"active"},{throwOnError:!0}),D("active"),N("getEntityRecord",["root","site"]),u(!0),E((0,c.sprintf)((0,c.__)("Plugin for %s installed and activated successfully."),n))}catch{E((0,c.sprintf)((0,c.__)("Failed to install plugin for %s."),n),"assertive")}finally{f(!1)}}},ne=async()=>{if(e){f(!0);try{await M("root","plugin",{plugin:h,status:"active"},{throwOnError:!0}),D("active"),N("getEntityRecord",["root","site"]),u(!0),E((0,c.sprintf)((0,c.__)("Plugin for %s activated successfully."),n))}catch{E((0,c.sprintf)((0,c.__)("Failed to activate plugin for %s."),n),"assertive")}finally{f(!1)}}};return{pluginStatus:P,canInstallPlugins:O,canActivatePlugins:B,isExpanded:l,setIsExpanded:u,isBusy:d,isConnected:T,currentApiKey:v,keySource:a,handleButtonClick:()=>{if(P==="not-installed"){if(O===!1)return;fe()}else if(P==="inactive"){if(B===!1)return;ne()}else u(!l)},getButtonLabel:()=>{if(d)return P==="not-installed"?(0,c.__)("Installing\u2026"):(0,c.__)("Activating\u2026");if(l)return(0,c.__)("Cancel");if(T)return(0,c.__)("Edit");switch(P){case"checking":return(0,c.__)("Checking\u2026");case"not-installed":return(0,c.__)("Install");case"inactive":return(0,c.__)("Activate");case"active":return(0,c.__)("Set up")}},saveApiKey:async V=>{let Y=v;try{let X=(await M("root","site",{[t]:V},{throwOnError:!0}))?.[t];if(V&&(X===Y||!X))throw new Error("It was not possible to connect to the provider using this key.");x(!0),E((0,c.sprintf)((0,c.__)("%s connected successfully."),n))}catch(re){throw console.error("Failed to save API key:",re),re}},removeApiKey:async()=>{try{await M("root","site",{[t]:""},{throwOnError:!0}),x(!1),E((0,c.sprintf)((0,c.__)("%s disconnected."),n))}catch(V){throw console.error("Failed to remove API key:",V),E((0,c.sprintf)((0,c.__)("Failed to disconnect %s."),n),"assertive"),V}}}}var Pt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),wt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Lt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),yt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),xt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));function Ge(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var dn={google:xt,openai:Pt,anthropic:wt,akismet:yt};function un(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=dn[e];return React.createElement(n||Lt,null)}var fn=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,xe.__)("Connected")),pn=()=>React.createElement(we,null,(0,xe.__)("Not available"));function gn({name:e,description:t,logo:n,authentication:o,plugin:r}){let a=o?.method==="api_key"?o:void 0,i=a?.settingName??"",l=a?.credentialsUrl??void 0,u=r?.file?.replace(/\.php$/,""),d=u?.includes("/")?u.split("/")[0]:u,f;try{l&&(f=new URL(l).hostname)}catch{}let{pluginStatus:g,canInstallPlugins:x,canActivatePlugins:p,isExpanded:D,setIsExpanded:h,isBusy:G,isConnected:b,currentApiKey:z,keySource:v,handleButtonClick:O,getButtonLabel:P,saveApiKey:B,removeApiKey:T}=bt({file:r?.file,settingName:i,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:a?.keySource,initialIsConnected:a?.isConnected}),M=v==="env"||v==="constant",N=g==="not-installed"&&x===!1||g==="inactive"&&p===!1,fe=!N,ne=(0,ee.useRef)(null),q=(0,ee.useRef)(!1);(0,ee.useEffect)(()=>{q.current&&!G&&(q.current=!1,ne.current?.focus())},[G,D,b]);let De=()=>{(g==="not-installed"||g==="inactive")&&(q.current=!0),O()};return React.createElement(cn,{className:d?`connector-item--${d}`:void 0,logo:n,name:e,description:t,actionArea:React.createElement(le.__experimentalHStack,{spacing:3,expanded:!1},b&&React.createElement(fn,null),N&&React.createElement(pn,null),fe&&React.createElement(le.Button,{ref:ne,variant:D||b?"tertiary":"secondary",size:"compact",onClick:De,disabled:g==="checking"||G,isBusy:G},P()))},D&&g==="active"&&React.createElement(ln,{key:b?"connected":"setup",initialValue:M?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":z,helpUrl:l,helpLabel:f,readOnly:b||M,keySource:v,onRemove:M?void 0:async()=>{q.current=!0;try{await T()}catch{q.current=!1}},onSave:async Be=>{await B(Be),q.current=!0,h(!1)}}))}function Gt(){let e=Ge(),t=n=>n.replace(/[^a-z0-9-_]/gi,"-");for(let[n,o]of Object.entries(e)){let{authentication:r}=o,a=t(n),i={name:o.name,description:o.description,type:o.type,logo:un(n,o.logoUrl),authentication:r,plugin:o.plugin};r.method==="api_key"&&(i.render=gn),sn(a,i)}}function zt(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var Ot="ai",ze="ai/ai",mn="https://wordpress.org/plugins/ai/",Me=Object.values(Ge()),vn=Me.some(e=>e.type==="ai_provider"),Rt=[];for(let e of Me)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Rt.push(e.authentication.settingName);function Dt(){let[e,t]=(0,L.useState)(!1),[n,o]=(0,L.useState)(!1),r=(0,L.useRef)(null);(0,L.useEffect)(()=>{n&&r.current?.focus()},[n]);let a=(0,L.useRef)(Me.some(z=>z.type==="ai_provider"&&z.authentication.method==="api_key"&&z.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:l,canManagePlugins:u,hasConnectedProvider:d}=(0,ue.useSelect)(z=>{let v=z(Oe.store),O=!!v.canUser("create",{kind:"root",name:"plugin"}),P=v.getEntityRecord("root","site"),B=a||Rt.some(N=>!!P?.[N]),T=v.getEntityRecord("root","plugin",ze);return v.hasFinishedResolution("getEntityRecord",["root","plugin",ze])?T?{pluginStatus:T.status==="active"?"active":"inactive",canInstallPlugins:O,canManagePlugins:!0,hasConnectedProvider:B}:{pluginStatus:"not-installed",canInstallPlugins:O,canManagePlugins:O,hasConnectedProvider:B}:{pluginStatus:"checking",canInstallPlugins:O,canManagePlugins:void 0,hasConnectedProvider:B}},[]),{saveEntityRecord:f}=(0,ue.useDispatch)(Oe.store),g=async()=>{t(!0);try{await f("root","plugin",{slug:Ot,status:"active"},{throwOnError:!0}),o(!0),de((0,m.__)("AI plugin installed and activated successfully."))}catch{de((0,m.__)("Failed to install the AI plugin."),"assertive")}finally{t(!1)}},x=async()=>{t(!0);try{await f("root","plugin",{plugin:ze,status:"active"},{throwOnError:!0}),o(!0),de((0,m.__)("AI plugin activated successfully."))}catch{de((0,m.__)("Failed to activate the AI plugin."),"assertive")}finally{t(!1)}};if(!vn||i==="checking"||i==="active"&&a&&!n||i==="not-installed"&&l===!1||i==="inactive"&&u===!1)return null;let p=i==="active"&&!d,D=i==="active"&&d&&(!a||n),h=i==="not-installed"||i==="inactive",G=()=>D?(0,m.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):p?(0,m.__)("The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,m.__)("The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),b=()=>i==="not-installed"?{label:e?(0,m.__)("Installing\u2026"):(0,m.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:g}:{label:e?(0,m.__)("Activating\u2026"):(0,m.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:x};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,L.createInterpolateElement)(G(),{strong:React.createElement("strong",null),a:React.createElement(te.ExternalLink,{href:mn})})),h?React.createElement(te.Button,{variant:"primary",size:"compact",isBusy:e,disabled:b().disabled,accessibleWhenDisabled:!0,onClick:b().onClick},b().label):React.createElement(te.Button,{ref:r,variant:"secondary",size:"compact",href:(0,Mt.addQueryArgs)("options-general.php",{page:Ot})},(0,m.__)("Control features in the AI plugin"))),React.createElement(zt,null))}var Bt=s(st()),{lock:kr,unlock:Re}=(0,Bt.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var{store:bn}=Re(hn);Gt();function Pn(){let{connectors:e,canInstallPlugins:t}=(0,jt.useSelect)(r=>({connectors:Re(r(bn)).getConnectors(),canInstallPlugins:r(Tt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),o=e.filter(r=>r.render).length===0;return React.createElement(Le,{title:(0,C.__)("Connectors"),headingLevel:1,subTitle:(0,C.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${o?" connectors-page--empty":""}`},o?React.createElement(y.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(y.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(y.__experimentalHeading,{level:2,size:15,weight:600},(0,C.__)("No connectors yet")),React.createElement(y.__experimentalText,{size:12},(0,C.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(y.Button,{variant:"secondary",href:"plugin-install.php"},(0,C.__)("Learn more"))):React.createElement(y.__experimentalVStack,{spacing:3},React.createElement(Dt,null),e.map(r=>r.render?React.createElement(r.render,{key:r.slug,slug:r.slug,name:r.name,description:r.description,type:r.type,logo:r.logo,authentication:r.authentication,plugin:r.plugin}):null)),t&&React.createElement("p",null,(0,Ht.createInterpolateElement)((0,C.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function wn(){return React.createElement(Pn,null)}var Ln=wn;export{Ln as stage}; +var Wt=Object.create;var He=Object.defineProperty;var Kt=Object.getOwnPropertyDescriptor;var Ut=Object.getOwnPropertyNames;var Qt=Object.getPrototypeOf,Jt=Object.prototype.hasOwnProperty;var x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ft=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ut(t))!Jt.call(e,o)&&o!==n&&He(e,o,{get:()=>t[o],enumerable:!(r=Kt(t,o))||r.enumerable});return e};var s=(e,t,n)=>(n=e!=null?Wt(Qt(e)):{},Ft(t||!e||!e.__esModule?He(n,"default",{value:e,enumerable:!0}):n,e));var Q=x((Zn,je)=>{je.exports=window.wp.i18n});var J=x((In,qe)=>{qe.exports=window.wp.components});var F=x((kn,Ve)=>{Ve.exports=window.ReactJSXRuntime});var D=x((Kn,Ee)=>{Ee.exports=window.wp.element});var I=x((Jn,Ze)=>{Ze.exports=window.React});var mt=x((Eo,ht)=>{ht.exports=window.wp.privateApis});var te=x((er,Lt)=>{Lt.exports=window.wp.data});var le=x((tr,zt)=>{zt.exports=window.wp.coreData});var ze=x((nr,Gt)=>{Gt.exports=window.wp.notices});var Mt=x((or,Ot)=>{Ot.exports=window.wp.url});function Se(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=Se(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function _t(){for(var e,t,n=0,r="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=Se(e))&&(r&&(r+=" "),r+=t);return r}var j=_t;var Ye=s(D(),1),Xe=s(F(),1),Ce=(0,Ye.forwardRef)(({children:e,className:t,ariaLabel:n,as:r="div",...o},a)=>(0,Xe.jsx)(r,{ref:a,className:j("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...o,children:e}));Ce.displayName="NavigableRegion";var Ae=Ce;var ut=s(D(),1);var ke=s(I(),1),Ie={};function ge(e,t){let n=ke.useRef(Ie);return n.current===Ie&&(n.current=e(t)),n}function $t(e,t){return function(r,...o){let a=new URL(e);return a.searchParams.set("code",r.toString()),o.forEach(i=>a.searchParams.append("args[]",i)),`${t} error #${r}; visit ${a} for the full message.`}}var en=$t("https://base-ui.com/production-error","Base UI"),We=en;var C=s(I(),1);function he(e,t,n,r){let o=ge(Ue).current;return tn(o,e,t,n,r)&&Qe(o,[e,t,n,r]),o.callback}function Ke(e){let t=ge(Ue).current;return nn(t,e)&&Qe(t,e),t.callback}function Ue(){return{callback:null,cleanup:null,refs:[]}}function tn(e,t,n,r,o){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==o}function nn(e,t){return e.refs.length!==t.length||e.refs.some((n,r)=>n!==t[r])}function Qe(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let r=Array(t.length).fill(null);for(let o=0;o<t.length;o+=1){let a=t[o];if(a!=null)switch(typeof a){case"function":{let i=a(n);typeof i=="function"&&(r[o]=i);break}case"object":{a.current=n;break}default:}}e.cleanup=()=>{for(let o=0;o<t.length;o+=1){let a=t[o];if(a!=null)switch(typeof a){case"function":{let i=r[o];typeof i=="function"?i():a(null);break}case"object":{a.current=null;break}default:}}}}}}var _e=s(I(),1);var Je=s(I(),1),on=parseInt(Je.version,10);function Fe(e){return on>=e}function me(e){if(!_e.isValidElement(e))return null;let t=e,n=t.props;return(Fe(19)?n?.ref:t.ref)??null}function _(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function $e(e,t){let n={};for(let r in e){let o=e[r];if(t?.hasOwnProperty(r)){let a=t[r](o);a!=null&&Object.assign(n,a);continue}o===!0?n[`data-${r.toLowerCase()}`]="":o&&(n[`data-${r.toLowerCase()}`]=o.toString())}return n}function et(e,t){return typeof e=="function"?e(t):e}function tt(e,t){return typeof e=="function"?e(t):e}var ve={};function Y(e,t,n,r,o){if(!n&&!r&&!o&&!e)return ce(t);let a=ce(e);return t&&(a=$(a,t)),n&&(a=$(a,n)),r&&(a=$(a,r)),o&&(a=$(a,o)),a}function nt(e){if(e.length===0)return ve;if(e.length===1)return ce(e[0]);let t=ce(e[0]);for(let n=1;n<e.length;n+=1)t=$(t,e[n]);return t}function ce(e){return be(e)?{...rt(e,ve)}:rn(e)}function $(e,t){return be(t)?rt(t,e):an(e,t)}function rn(e){let t={...e};for(let n in t){let r=t[n];ot(n,r)&&(t[n]=at(r))}return t}function an(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case"style":{e[n]=_(e.style,r);break}case"className":{e[n]=ye(e.className,r);break}default:ot(n,r)?e[n]=sn(e[n],r):e[n]=r}}return e}function ot(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),o=e.charCodeAt(2);return n===111&&r===110&&o>=65&&o<=90&&(typeof t=="function"||typeof t>"u")}function be(e){return typeof e=="function"}function rt(e,t){return be(e)?e(t):e??ve}function sn(e,t){return t?e?n=>{if(st(n)){let o=n;it(o);let a=t(o);return o.baseUIHandlerPrevented||e?.(o),a}let r=t(n);return e?.(n),r}:at(t):e}function at(e){return e&&(t=>(st(t)&&it(t),e(t)))}function it(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function ye(e,t){return t?e?t+" "+e:t:e}function st(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var cn=Object.freeze([]),X=Object.freeze({});var dn="data-base-ui-swipe-ignore",ln="data-swipe-ignore",fo=`[${dn}]`,uo=`[${ln}]`;var we=s(I(),1);function ct(e,t,n={}){let r=t.render,o=pn(t,n);if(n.enabled===!1)return null;let a=n.state??X;return gn(e,r,o,a)}function pn(e,t={}){let{className:n,style:r,render:o}=e,{state:a=X,ref:i,props:d,stateAttributesMapping:f,enabled:l=!0}=t,u=l?et(n,a):void 0,g=l?tt(r,a):void 0,w=l?$e(a,f):X,N=l&&d?fn(d):void 0,p=l?_(w,N)??{}:X;return typeof document<"u"&&(l?Array.isArray(i)?p.ref=Ke([p.ref,me(o),...i]):p.ref=he(p.ref,me(o),i):he(null,null)),l?(u!==void 0&&(p.className=ye(p.className,u)),g!==void 0&&(p.style=_(p.style,g)),p):X}function fn(e){return Array.isArray(e)?nt(e):Y(void 0,e)}var un=Symbol.for("react.lazy");function gn(e,t,n,r){if(t){if(typeof t=="function")return t(n,r);let o=Y(n,t.props);o.ref=n.ref;let a=t;return a?.$$typeof===un&&(a=C.Children.toArray(t)[0]),C.cloneElement(a,o)}if(e&&typeof e=="string")return hn(e,n);throw new Error(We(8))}function hn(e,t){return e==="button"?(0,we.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,we.createElement)("img",{alt:"",...t,key:t.key}):C.createElement(e,t)}function de(e){return ct(e.defaultTagName??"div",e,e)}var pt=s(D(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4130d64bea']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","4130d64bea"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')),document.head.appendChild(e)}var dt={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","1fb29d3a3c"),e.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")),document.head.appendChild(e)}var lt={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Pe=(0,pt.forwardRef)(function({variant:t="body-md",render:n,className:r,...o},a){return de({render:n,defaultTagName:"span",ref:a,props:Y(o,{className:j(dt.text,t.startsWith("heading-")&<.heading,t.startsWith("body-")&<.p,dt[t],r)})})});var gt=s(F(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='d6a685e1aa']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","d6a685e1aa"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}")),document.head.appendChild(e)}var ft={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},xe=(0,ut.forwardRef)(function({intent:t="none",className:n,...r},o){return(0,gt.jsx)(Pe,{ref:o,className:j(ft.badge,ft[`is-${t}-intent`],n),...r,variant:"body-sm"})});var vt=s(D(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","b51ff41489"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var mn={stack:"_19ce0419607e1896__stack"},vn={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},k=(0,vt.forwardRef)(function({direction:t,gap:n,align:r,justify:o,wrap:a,render:i,...d},f){let l={gap:n&&vn[n],alignItems:r,justifyContent:o,flexDirection:t,flexWrap:a};return de({render:i,ref:f,props:Y(d,{style:l,className:mn.stack})})});var bt=s(J(),1),{Fill:yt,Slot:wt}=(0,bt.createSlotFill)("SidebarToggle");var L=s(F(),1);function Pt({headingLevel:e=2,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:a,showSidebarToggle:i=!0}){let d=`h${e}`;return(0,L.jsxs)(k,{direction:"column",className:"admin-ui-page__header",render:(0,L.jsx)("header",{}),children:[(0,L.jsxs)(k,{direction:"row",justify:"space-between",gap:"sm",children:[(0,L.jsxs)(k,{direction:"row",gap:"sm",align:"center",justify:"start",children:[i&&(0,L.jsx)(wt,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,L.jsx)(d,{className:"admin-ui-page__header-title",children:r}),t,n]}),(0,L.jsx)(k,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),o&&(0,L.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var ee=s(F(),1);function xt({headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,children:a,className:i,actions:d,ariaLabel:f,hasPadding:l=!1,showSidebarToggle:u=!0}){let g=j("admin-ui-page",i);return(0,ee.jsxs)(Ae,{className:g,ariaLabel:f??(typeof r=="string"?r:""),children:[(r||t||n||d)&&(0,ee.jsx)(Pt,{headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:d,showSidebarToggle:u}),l?(0,ee.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}xt.SidebarToggleFill=yt;var Le=xt;var G=s(J()),Zt=s(te()),It=s(D()),A=s(Q()),kt=s(le());import{privateApis as Bn}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='31ffc51439']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","31ffc51439"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var ae=s(J()),De=s(le()),ie=s(te()),z=s(D()),m=s(Q()),Yt=s(ze()),Xt=s(Mt());var pe=s(J()),re=s(D()),Vt=s(te()),Oe=s(Q());import{__experimentalRegisterConnector as bn,__experimentalConnectorItem as yn,__experimentalDefaultConnectorSettings as wn,privateApis as Pn}from"@wordpress/connectors";var Rt=s(mt()),{lock:rr,unlock:W}=(0,Rt.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Ge=s(le()),oe=s(te()),ne=s(D()),c=s(Q()),Dt=s(ze());function Nt({file:e,settingName:t,connectorName:n,isInstalled:r,isActivated:o,keySource:a="none",initialIsConnected:i=!1}){let[d,f]=(0,ne.useState)(!1),[l,u]=(0,ne.useState)(!1),[g,w]=(0,ne.useState)(i),[N,p]=(0,ne.useState)(null),b=e?.replace(/\.php$/,""),O=b?.includes("/")?b.split("/")[0]:b,{derivedPluginStatus:M,canManagePlugins:K,currentApiKey:y,canInstallPlugins:P}=(0,oe.useSelect)(V=>{let S=V(Ge.store),U=S.getEntityRecord("root","site")?.[t]??"",E=!!S.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:S.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:U,canInstallPlugins:E};let Be=S.getEntityRecord("root","plugin",b);if(!S.hasFinishedResolution("getEntityRecord",["root","plugin",b]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:U,canInstallPlugins:E};if(Be)return{derivedPluginStatus:Be.status==="active"?"active":"inactive",canManagePlugins:!0,currentApiKey:U,canInstallPlugins:E};let ue="not-installed";return o?ue="active":r&&(ue="inactive"),{derivedPluginStatus:ue,canManagePlugins:!1,currentApiKey:U,canInstallPlugins:E}},[b,t,r,o]),h=N??M,R=K,Z=h==="active"&&g||N==="active"&&!!y,{saveEntityRecord:v,invalidateResolution:T}=(0,oe.useDispatch)(Ge.store),{createSuccessNotice:q,createErrorNotice:B}=(0,oe.useDispatch)(Dt.store),H=async()=>{if(O){u(!0);try{await v("root","plugin",{slug:O,status:"active"},{throwOnError:!0}),p("active"),T("getEntityRecord",["root","site"]),f(!0),q((0,c.sprintf)((0,c.__)("Plugin for %s installed and activated successfully."),n),{id:"connector-plugin-install-success",type:"snackbar"})}catch{B((0,c.sprintf)((0,c.__)("Failed to install plugin for %s."),n),{id:"connector-plugin-install-error",type:"snackbar"})}finally{u(!1)}}},fe=async()=>{if(e){u(!0);try{await v("root","plugin",{plugin:b,status:"active"},{throwOnError:!0}),p("active"),T("getEntityRecord",["root","site"]),f(!0),q((0,c.sprintf)((0,c.__)("Plugin for %s activated successfully."),n),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{B((0,c.sprintf)((0,c.__)("Failed to activate plugin for %s."),n),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{u(!1)}}};return{pluginStatus:h,canInstallPlugins:P,canActivatePlugins:R,isExpanded:d,setIsExpanded:f,isBusy:l,isConnected:Z,currentApiKey:y,keySource:a,handleButtonClick:()=>{if(h==="not-installed"){if(P===!1)return;H()}else if(h==="inactive"){if(R===!1)return;fe()}else f(!d)},getButtonLabel:()=>{if(l)return h==="not-installed"?(0,c.__)("Installing\u2026"):(0,c.__)("Activating\u2026");if(d)return(0,c.__)("Cancel");if(Z)return(0,c.__)("Edit");switch(h){case"checking":return(0,c.__)("Checking\u2026");case"not-installed":return(0,c.__)("Install");case"inactive":return(0,c.__)("Activate");case"active":return(0,c.__)("Set up")}},saveApiKey:async V=>{let S=y;try{let E=(await v("root","site",{[t]:V},{throwOnError:!0}))?.[t];if(V&&(E===S||!E))throw new Error("It was not possible to connect to the provider using this key.");w(!0),q((0,c.sprintf)((0,c.__)("%s connected successfully."),n),{id:"connector-connect-success",type:"snackbar"})}catch(se){throw console.error("Failed to save API key:",se),se}},removeApiKey:async()=>{try{await v("root","site",{[t]:""},{throwOnError:!0}),w(!1),q((0,c.sprintf)((0,c.__)("%s disconnected."),n),{id:"connector-disconnect-success",type:"snackbar"})}catch(V){throw console.error("Failed to remove API key:",V),B((0,c.sprintf)((0,c.__)("Failed to disconnect %s."),n),{id:"connector-disconnect-error",type:"snackbar"}),V}}}}var Tt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Bt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Ht=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),jt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),qt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:xn}=W(Pn);function Me(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var Ln={google:qt,openai:Tt,anthropic:Bt,akismet:jt};function zn(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=Ln[e];return React.createElement(n||Ht,null)}var Gn=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,Oe.__)("Connected")),On=()=>React.createElement(xe,null,(0,Oe.__)("Not available"));function Mn({name:e,description:t,logo:n,authentication:r,plugin:o}){let a=r?.method==="api_key"?r:void 0,i=a?.settingName??"",d=a?.credentialsUrl??void 0,f=o?.file?.replace(/\.php$/,""),l=f?.includes("/")?f.split("/")[0]:f,u;try{d&&(u=new URL(d).hostname)}catch{}let{pluginStatus:g,canInstallPlugins:w,canActivatePlugins:N,isExpanded:p,setIsExpanded:b,isBusy:O,isConnected:M,currentApiKey:K,keySource:y,handleButtonClick:P,getButtonLabel:h,saveApiKey:R,removeApiKey:Z}=Nt({file:o?.file,settingName:i,connectorName:e,isInstalled:o?.isInstalled,isActivated:o?.isActivated,keySource:a?.keySource,initialIsConnected:a?.isConnected}),v=y==="env"||y==="constant",T=g==="not-installed"&&w===!1||g==="inactive"&&N===!1,q=!T,B=(0,re.useRef)(null),H=(0,re.useRef)(!1);(0,re.useEffect)(()=>{H.current&&!O&&(H.current=!1,B.current?.focus())},[O,p,M]);let fe=()=>{(g==="not-installed"||g==="inactive")&&(H.current=!0),P()};return React.createElement(yn,{className:l?`connector-item--${l}`:void 0,logo:n,name:e,description:t,actionArea:React.createElement(pe.__experimentalHStack,{spacing:3,expanded:!1},M&&React.createElement(Gn,null),T&&React.createElement(On,null),q&&React.createElement(pe.Button,{ref:B,variant:p||M?"tertiary":"secondary",size:"compact",onClick:fe,disabled:g==="checking"||O,isBusy:O},h()))},p&&g==="active"&&React.createElement(wn,{key:M?"connected":"setup",initialValue:v?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":K,helpUrl:d,helpLabel:u,readOnly:M||v,keySource:y,onRemove:v?void 0:async()=>{H.current=!0;try{await Z()}catch{H.current=!1}},onSave:async Te=>{await R(Te),H.current=!0,b(!1)}}))}function St(){let e=Me(),t=n=>n.replace(/[^a-z0-9-_]/gi,"-");for(let[n,r]of Object.entries(e)){if(n==="akismet"&&!r.plugin?.isInstalled)continue;let{authentication:o}=r,a=t(n),i={name:r.name,description:r.description,type:r.type,logo:zn(n,r.logoUrl),authentication:o,plugin:r.plugin},d=W((0,Vt.select)(xn)).getConnector(a);o.method==="api_key"&&!d?.render&&(i.render=Mn),bn(a,i)}}function Et(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAAD4CAYAAADB0SsLAACAAElEQVR4XuzdB7hlRZEH8D73zRBniJLDzBAEVFQMKCaCWXENa1oTYM45hwXEtOa0ZgVzWnPOBHPWVcxgzjnrGvb/O91n5s5lZnjAe4Bw6vvqO3XPPed0rO6q6urqUkYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUaYD3RdtxY9/XuEEUb4F4aBoWdxhBFG+BeHxsxg0+BmwSXBrYPbBTfOI3Dz4NKZV0cYYYTFhMlkskGcm5tbC6f/m5mtlwavGLxacKt8+k7BY4N7B/cLHhbceTrtaRi+A2bTX7JkSY9Lly4tG220UY8jjDDCmcAsM8/iLHOfCYObtS8bPCi4ZfCIJPHw4J6lMvlVgzuslYEpmP7WbPoDc08z+MYbEwpGGGGEdcIUo24V3CG4WXB5o103R4fBtgpuFkRvm3ubBrcPXiTMuElw+66K4uhdgrt3VUx33Se4PMltF1wRREOMTmTfrNHL2/s7BLfMtzdq+dgmaW4UBt8+zH2RYHh7o+2C24fBl45MPsKFGsx8U4w8O+MO918U/FnwLsGH5f5Pcz0ueJT7YbAXB68f/HnwncGr5pmfBD/Z1Rn79OA3ggcEP5N3fpzrFYLvDqKvkaycEPxx8BbBxwd/Erxv8F6NflKeu0lL+1W5HtzS/lDKcLlcfxLm/lLw0mHq0zbZZJOf5rqPmVwZlWWEES5UQJwddNdp0RozTGPuvTb4z+B9MXbu/SPXpwbv6n7efV3wxo3+SPDQPPPP4Le6ysi/C/46ePk8813Phb5K8FPtuesnO28K/jNIbH9Wox8RfEijn5fnbtWef2fwmi1Pn096Vwz+I+X4Ucp0uTD1bzbddNN/ht5vGMC6kcFHuDCBma3prBuHCTYJg4QPJht1VQyeBKfp/YJmZeL1KnSe3TO4W967Wt6/WK475nrl4KVCbx28XJ7bv6u6tpkbbtHumdXd913PbVOqHn75UkX13RvN4LYjOs+sCBL56e/7JO1tglcJXiq4ZdK7StK+fHDLlOmg4JVCL8/9jfO/ciwp1VK/SamWela4gR5hhH9tMEPDaWNUcJsw+qeDX8l/FwsjvC2McGoQc704+OXQ1w4eG/x88NbBu6Pz7IOCN897X8w3n5ZvHZDvvCLX/8zvTlrDzDkfPDNoz+2bb94r12sEr9TyQbowaHw2ab4vaNY+JfhJ94Nme2U6KJ95WfDLwesGn9ToO86kMe88jTDC+QKGDovh4MDowR2iqxJ/idaXy3+no/Psobme0uj/yPWVjX5g8AnoPPtszIbOd94ZvFrE4q9E7315mHzO9+fL5GcGU8/K49OCBprrlZqnrwWv1OhfJs0Dg3/xO1ez/XfRQXr+xxp9y+DrG82KP8II/5owy0wzDM76fI3gdXOPZZoYfr2uOqBcIa/TjYnIl87vfwvuEbxYoy+e5/fMezcMQxONt8v1KpnFLxWcLOQ69FT+ifX7BnfuqjX9Bl1VF1juD09erhFkVb9O8Lru5//Duqrjs8QbCAwMuwUvU2r5LjqV1AgjnH9hihFW/27XywQ/GDw+nX6fMOP7g28JE+yR6+uC7wi9V/573qSKtEReDLRvXqc3n2GggNODxSD2L5aTyWzasygv68Lh/wZPDb6j1PX2Bzf634J3Dn6wXW/caA44PQzvD+mMMML5Da5Vqgj7veAV0WFCIuwBYc5eRE/HZeH+YXuOjnux0Ga/nWaZaejomHuawReLuQeYzcNsfoY8zTJ4A5z5pVLF8lsF39zoBwSf0eint9/o99TXRhjhfA6YNJfb5nqjdPrtgrcOI9wiuG3wdsE7BTmi3Cx4Z88Ht+qqKMx3fPaT/4qAwc3OdwnuFbx68K7BSwYvGzyyVMs9l1m0/0cY4XwFNwy+vNROzGqMfmhwn+DzgkeHWVeEwZ87qcaqLaZnu2HGm8WzA9Oz5/R31kcPvwfw/rruLxIwuj0/eJMgAyP69qUyvDq0Hq8O0U8pdbltLVhMyWWEEQZ4bKni5f+U6jCC/mTw2o3+QddEdBgm2nl9DA7OBcY6v8BLSq2TZwYf1GgiPFEe/flSZ3T0r4LLvDSoJwNSU0YYYTHhysFHBm8QvHipS0A6KSeSxwTvE6bdNddjgo/oquPJWoys016QYT2D1+Glusdep1TJB81llpFRHd62VOebhwXvHrRpZrXOf27ZIEa48IClK3qkjRjEcmvTDGkHBh9VqmWYkQx9ZH1l3TDfWXp9IvN63t++VAeSm5Wa12NKzQtbgBmSpIFhMMvjSl2qunWjDyiV4dCHBA8uleGIzxcpVRrxzFowSCDrgvXdnwdcotR8367U/KI5+rBNPC7fPSYMbpPL7cLYd2uOQz3DjzDCOQEd3Hout84TShUd6YZ0xVkR/Yv1lTUwzNrrYc6FgP2Dny1VzLXe3KsEwcsFf9doS1XfCP6j1AHJ0pT79ogTmf8ePK7UwcH915VqACNGW85aLyxg2ejhsyL6T7vq6deXKcy8f5j6pE033fSrYfCLmskHS/4II5xdGLZW8qUmSjIKEcuJmK8olUno2oOBqIeh029otlsgMIPfo1T1gD/5k4P/Fdyl1PVlTLqy1CWp/y6Vce8QfG6pUsi/l2oUNFsLAoE2w29bahkNGgsK6xkQBkMlMZ2R7YTgf3V1m+szU4dPCYPvFLxjGPu+uVqVWMueMcII8wE9Rae3rLOqVLdLsxjGMCuarV0XC8xe0iOyWlIygPB00+mJ4oeWyryYlHcYRqS33jCdfMtcbx68aegt3CuV8bcO8nO/TakDAi+62wQNXNJwn5pBD3bfrOm/I0stP3FfntSLAU+euLDauOKZO4R23wBoVcHz5xiadGD14XbB/5irnnP/Eea+Q64XsfyY+3fLM7u1Z2c/McIIZxAzWb6+XqpYiFne1ej7lDq7oc1+iwU8vqTB+8tMTHx+TqmztPtvK1XMJm5/IXi1dv/npTJrL86mPGbe37bf3Ea/1u7Tud/X7hOLbXRBm+3/s9FmUrow+pRSZ3fpnV6qtOL+H/MtA92QnkHoR+05g9Q5htYuBp4+jTD0AWHovzVaOKre9z3X6w9tODL5CGvBdMeY6hyDm6XObI80mrhqVqe/mqV6GN5xXSBRnGHs7aXq/WbEt5bKbGZutIGG3v2WUq31DID2dxt0VgRfXarqwAf8Bf5L3jxjR5fBgbOJMtnNZnAgCbjPsGbGRyufVQK0lQLSBPppeWfP4JuDx3d1nf9Vwf9xv9SBSB4x5VmGaVF7qk12Db43/705TL1H8JXBtwf3zr1nd3W/uu2x62rHES7MMHSorsYvu2ZXN3YQec1GGMymiUuXKgqvnHp1IQDD0uUFRJSeWVl6VAGDCesxhmWxX1mqVZuOjJHAwaUyHkeQQ4IHdjViKoOaAA8bdzXo4qHBTXOPjzy3WKK7TSzKy6Nuj/y+VlfFXGkS5cVss3nEzM1X3juet1dc+KerT+r+cOGiRHs5LLh5V7eV+haVgE6tTMR1hsobBQ0O82bA4VntBMPUS+fqJhcbXOxLt/nlepO60UVZb9xVnX3eaYxwAQVLLHPNvzsdxM6pX5Qq7mE8Vmli4U1LnbnQROaFAmrAD0r9rln0w6WKtjdP+sN20fsHe2eaXPlv03s9/4ZSBwD3P93Vvdfu/zC0wQj9f6EvGSS29+JzcPANx8CD2kEyMPN7hnhu7RnNsv4f7ZkPlDVWbdtFe7E8dfbb1N2l+dn7PVe3wH6/vW8g+kR7h5pjpQH98K4xrHqfdlxZH3h+aKfgdhtvvHGfXt65Qn6fjs73rpPnTkbnehfvDOmMcCEEwQEHRwmdKx3FTETU+2yudNeXlbrkpaNaEvvfUg1ZPeg8CwBvDH66VJH52UEhlQ4OPjJ5+EyuDGW37yoT37OreqZnHt3VKC1ooZVEakG/MbgyeFLwg/nGykkNKuG/iwZPaGl4l3X60/nfrHz/dp//PMOZ9B7c1YHuU8Gnhr6U+6FfkXeIxp9Knb07uGrp0qUnpQ4/HnqvoDzIuy2vVht865Cg0FPu3xbTDQw+MPlArw+mvNe2Tpt9IvjV/L543nlTvvXloNmbuP7ZIGPj6ll/ZPILGWDuhkvSUQ5Ip7l0OstmwUunMxwYXJYOQty0AYQ/pB6i982bq3WwBt4jRhO7fcsVQ6PttSY2C9dEdL3spEZS3SV4mUn1Xb9IkGHJdVlQHncKinluhqYDA9FULhrsgqLFQExz0eAlQ4sRtYf352pYpV2DB4QWqdWGGOltHbRP/TK5L4KqjS/S3j3oHXqu0FG+JVSUaC6CTeyfOrxUrsRn4aSUw7sGgsvP1b3vK3O9Yq7b57rLXA0UsWve2d5MHNx72AK7Phj+D05auiLZTFp+klx38eCVJrWuVoW+wmTKPXiECwFMMTfcWbDAXP8RRr9sOk5vkU2nob/qLFfv6tLPmcLQiQbs1uiAK0oVTX2bB9mPct9vrq1f9p+OGHw/Ou/eMOkfj04HvmfwGHTuPSn/sXh7nlGr35Ka6ylBa9nob+W5SwT/lPd+h9ly7UXmSWVgszH66vmvD7o4qUtP/fbNXB8SNJujbZCxJCa9t4em16OFbbpUe/dHZtHU3e9Fqgl9qdTht9r7dOOTGn2T4Ksafc/ctzKA/q+800epyXtvxbwkqpk2KtMwMPmSNqPPrb0OztovX7cJUjHQx3rGs6Nb6wUc0glncdugkL/fTuPrqJ9KRxAa2F5tgQb76CVTzLpOGDrb0OFcW4dzNUDQrz8QevdcPx78elcNW+/r6p5xMyzR93t59xrpwE9Mxxax9DbB+yRfGOlhwZtOapTUZ4QW9PAHwf9JmvsHvx8UG22vvPP14FeCewQ/EfTcfvn/rZ4LfcXg8/PdH+a/64d+VO5/L/Sdg3d0P/eOC17LfcyS62W9G/pdue4T/G5Qfe2Z508Nnp539wmenHveF1r5da1M1879ZylHrrcLPlTeXYNHpKw/zn8vnmXu6baaBv8tmWHw1kbE9Z/k3k1yNSCqk/svnRk4RrgAwtDIraH7WVnHCb1f8OIbV3F9WToNy2wv902q6LdB2c7frZP1hwFMqhjtN9GXWKsjEkUxt2fpyHu1DrnbpIrV7u8U3DfPTZbWAwX2TX42ynULdHB5/tskKELMRZZUERW9k7LlundwBTqI6aDyuuc/z+y8tDJhF9wGnf/ncl2WK3rTliYXUOl2eeeiwe2UsTH2zgOd+6vad/du70jboEJ0ByuCF8/vTYPySZQXhVX5hJraMbhVkKFuRXAT17TFTsFNguhdg5MNMab6a4OpqK4izCrDnsHLJf0dllafdfVxEd9RLyNcgGBgQh0wjXuJzTff/J9m7jT2PhHRf77ZZpv9tnWm1eJfY9rZT60Fw8zeGPrf8x0i4at0/txnpPO/JTdWbzMf77PPBL9vBs+zH096f8x9NoA3h/5T8ned5OM5y5Ytk8c7Bh8W/L/cPy7/39ozwRcHD8tzf87994W+TPAPob8Y3DfP/yz44/x/0eBXQ/vuJfPMibmir5r7r5RGrjfJ/0+QRvDewbu3tJ+a566f//+a914XPDB5/EOuH871Yrn/x/z/jSV1ADBL/8z93Pt8/pPHKwTfpXy5d3juvaR9987BY6WXe653bvePz2/qyZ/znfekXa6inVJHn8h12RZbbNFtvfXW6xWjWhtMt/NLg38J3j/4qKaKvSB0/7/nRrgAAUbUqDphGvivaejTghj81+lg/5frqnSyszW6N0bnIPL7XF+dNPbG7KEFecDg7w5y1LDTi+eZ00VW5ven2qDAQEUH/XPwOsnDfyc/f0+HxOAP1dFz7zHBW+e5v+SZ4zG4d3PvA43BlYmovE/K83sDV+i98v63vJ//L5HfH27PXTnffk1L40Z55om+FRqD38P9XJ+W567nft55w5IaA13+PpZ63BdThj5trsaWI8b/Iv/vl3tf8E7oA0O/W37znesHj2/fvVPwuDbIPjpp3jmI2V+c3zfwbr75pm233dZ6Ouv4u8PYy5YvXz4JkjzWqvtpwOD+14bBl+d76udBwUdKI9cX+n8YvOEIFxBIZ7EMVk2uc3MXx4StI+yajrAinW8uOPvafIA12/c5yoiCyvKuE7EWO99LpyO6C6roOYcZENPRLLx763Bz9ZwxIrrnic/EcqLm8iDG2WJJtfQTf1meged3XVqtymhLVsq0dzr0UL6VS9eIz7vkmYHe1v383wU3a7SDxojsewc395x6WrJmU4e8DiK6mXsQ0VnqIXrPuWZdD+yeq7omolMPpkV0EsX2GzURXRtsWeEyO+6448X33nvvXXbdddfL7rDDDpcIbp4ZfKuUact8S/vNtsFqaGWGxH9l3Trv7L60ShS84Bw6YbVgUKVmPzHCvwJgoCngcnla8I1pUC6bX83/p6ShN9IZzNzzZe6Z73Lx/Gap2yyl4bvWpVeG/mKuzvTipfaRUoMK8u5iWf7frsZh4275rUk16L1kUq3gTi55XDrjd4O3SP7uGSQCPyj//XueOT30U5dUI9u3g68JMrJ9K9cPYrA8/6XgF/P+qlw/vFE1gBkA3pDnTltSZ+Nn5t53gtcKPiTPSO+I3Bc/ThoPDx7imfx+TtK9RPL7zeAbQhvIHNIgWuyqXD8e/EJotgXl/HresZzHcCi9w4JPaWW6VfABrUwPDDoe6bQ894S0wWG5vi//PWqPPfa4Yhj6HsH7hcF53X0k+Ml81+DWq1Hrg4HJl9aBzGD08HxXOVjUbx36By1v40x+AYHBC+ujpe7I+nPwO2lY67Z9Jzib4LA+37UFUxo2hfDDlsZfSnUeMXN7hpcZ495PvdPVo4GGZTLM8F50rg4VfBE617sG+YGjn5j/jmjPvDp4zUZ/ODh4lp0+V2dPevMfl1T9+IftfZb6YZmMiym7wLCExZEHfb9gv2yV/5/Z1fjmaM4ydpcpx6fy23KfTSynRqTm0vqtMNQ/w6DW+DkH/WVSl+747Hv/8CDfeGncJSi4hPuPDfLtVwf0496RJ3k/ZtWqVZblMOq9d9llF8clSfunKQ9j5Jnq0NrUIOC5vMsHX3qW/npvwK76tq9mcDjCvy5QrK3d2nwBdMqViG4Dy1/zALHCbK8cwNKXGbunG3PrPOhBLEdzcEG7x88bzQ+cUwk1giOLdWuWeGeCcRzhjMLxhTsoxxMqh3PGOJMs9cxcXQNnXefMgil6m8Nc3YHV52NSHV04w+wYxPREXtZnNKu/b3Ga6QNE5vtm7kG96B1r0PnuJTF0ROdNw+QXD+6PjjRk7Z1PgeOGe0eXSRWHV0yqE5FDE5SPEwqVwYrAQXnvotG7t4u+fdUVK1Zc/sADD7xYmPzKwcuvXLlyh4juB3kuuJH8tzJMVf0Zwf8NV03qkicnHSsXh6YM6kddL2l4pt8b4TwGHW8KbBSx/nx0qQz9mlJFaWAP87xh5rtmbSK3/dP2SfPTFgrJrM1Z5dhS90vbjvncvOsc7/el81APeHdx5Xx/V0X3F3XVrdQSGtfRU7p6OCAf9A8Hr593uHYST4VXvm67/6iubvrw/LPyP1fVk7vqALMy+J7gu4J2YTlL7ORJ9ez67/YckfdRk+okc1Dwjo3m4umklZO66s9tgwiV4phSB68PBZ9tFu3qmvMTdtppJ3r4HYP32X777TGQ3WZcWA18T/N+VzeBiEkn7zbz3LGrIvedgjbbeOZhGTCunPffmm89EpNnkHgk9SHfNSC+Jfi2fJc9g5eeQcsgVzYE/p/GfOMWwY+F/q/gYcHPTep5awakM5UMRjj/AP2YWPfaUiOSfC5oEwfgXXZ2AxI8s9TvCo98VKkbRGyRPLjdJ2oTYYmBHFrsDvtns6qbrf7a/jNjswt4xwaRE9t9Hb73ZAt9j+Ax6EllnKFMNm70m02CzgS3E83zorhyi3X/r6ENOj9r//ElJz6jr1LqVlO0M8AdQIA2sNiKiqZ2GCR9y8YU+8ypIP+bvBgwPfMmBrHQGOOe2223HWmEDt5b0UvdR/73rpbJAOsdwRl6T7bg40MbHOX1FfmGlQhlfUukAd6EnIPevPnmm5O+nIVOxCcJOAPt0EmVcCS/QZhibni/UvNhABS3XXrfwOCYm2i/8QbW3Ec4/4CoJWZYMw/QSUQ4PaewMohBlpfqT07/ZTwDBhJr3QBD2OChUxFT+ZzraDZ6XBldKmMbGID901xjHb3LWGXLpeN7DQR2f60Kbh/E2NxoSQC2ctKNqQqeF6WFlMAecGhXfdylZYsoK78Z2ekp6D1DH9KesWXUu3zwWRsx1+CiSxde2Wi73pyRRkQ/eKuttrrirrvuuv0222xzYKN3yEB2UBjl6mESPvXqw2YWZ6/Jsx1fVhGkTRqxxEbKYHe4VN7hQ3696N1XiEi+XdK4dvCq+eZWuX+Dhr5LbfEs0bplbcPQ1XaADJo8Aq/SBot/z/VaSWcJ5macw+AMryOc/wCT2OLI2GNWMxPesVSR/DFTz50p6AxTIAADSWDYI/7CUju+2UtABfuczdTuC2uESRjKHtlVeGHwGa2DMV4dH9SDqAwvL1Wk5wNOwpD3I7tqgcf8RFoBHGwjxYRokUZtWEH/Z1cZhq83kdggJkKLvOyY/54efEVX93nbDopemSsRXNrEezPny7o6GCjjS4M36qo7LVrwB3vR0UR74Z9Z/Y+L+CxG2n3CJA/IDG4ftjK/IPekQcp5ZX4bXH1DHg8tdQuuvDvZ5TDPBO/aBgT5eGTe78JokzAazz4edWutXw84X+jq4Opqw8vjg06aoZ5YWXhivu845ncnvdfmuiUmPwfG1xEWCXQWFlOd6IhSLb3TkUZfPzyowc8CiK7iffuaHx0kZhNlndDhPnHWMhkRlh6OMdwngpMkiIH2Z1tPdh+amb/XaDM5ewFagASMh753njEIoA0QgwWYPjqIz1SPIYQSC/0gokN68K8bjclObbTB6R2NFiCh32xSqn3hno2mdgxqALXD7I+mdhhQerUjaBecaK2nRpQ2ONlS+tOUl2QxlImILkor+m7BJzaaqC4MlRUHzE9k/k2QjrxaHx6WuzD5wNRnhbl9Z4rBDZREcqsS/WaaXG091Xf+2ZyCth2W2UY4fwFmYg3eps0g9m/r/ERYoY/6pRdwFhkc8+oMgDRgABmsMVfrqp4NMMQQqggDCsQAHLtLPJWupSczGKBCkDj0VnkT7JDoTbwXiGFFVw1iZnQMujLXo4KeZUM4MnjdUoMuouVxy1IjovquLa83KfWctM1yvWapARjdl4Y6Qa9o70qb6uEdhj+VhCYtAPk+WDnaDHh46jnkhJRxo2XLlhGfGeluGeYQQIOqwBipfujNR5Qa0UVZlMmecX4Jt/fd4KpSDZb/Lg2I0RYCWp4hEd1aOBHdPoC7B29OXE9Z7h48Knnn+LPBtfYRziXQcFOgsxNTWYOJz2Y/nX1eMPOtB5b6LQYlIuwjShWlGdDMQnaZYZojg/ZGG+69Iw8APaT9kOC9G83I86hGE+dJBAYgDh+P7apF/fBSDyIws9N7Hx+kR5tFn5ArxpQvMyDR1/LfE0pVJTDTMaWuHmB8+fBd+SUBPKarujy1wnMs4gxi8oTBfEtZ3ROmyTq8QQmn+SbGnAseE8a4X5iAzeBBwYeEKTyPQY9OfcjHkaWmh6kNFMpEmjJb9mUq1YahHAaCRYXG4NNoKfLpwQckv/sGn57yHJfrMrP+IEGMcP4BDEn0E0nE7E3cIzKfHRjEWYYsVmtiOaagV7oPzOSnlLo01u/JLtVjbWWpZ2qJAmNQcJ8YiuGI8X5jpO+jG+N+tNEGk94ppFQ1gO0AzXpvQEC/tauRUdF820kK6J93dXZEQ4OcOkAbLL7aaBLAOxttMBxEdOKyAQMtwowZGE1E37/RvNkGFeSPYY6VpZVpUh1gqB2s4kR0W2P/VuoAQT3qreilMrTVB6L6oBJQGRYdZhjcQClPXw0z9yJ66D9N6lr97IA/wvkAdEgzIlGZWPnYUkXdHs5igzHOmckcJIDJ6afE85WlDh6ilJi1b1aqYQxgjkMafUSp+QB3KFUMBZjUt4DvPLjUI5EsVwn4L71rlTWRTDEvQ9ohpZaJocxAQ7Q9OnhE/jNYuM8LjZpCYvBdAwqmVQ4zuPSk4b68eYbxTDoGE0BMx3QGB7O2+4e0/xgC6bCcQh4UvEuQRf5ewfuFVg5lFe5JXbFRGBDlj2QjbQOFEM6McaQTA5K8q8cezmI7nWUYGLyrjkXDDE5cf0zwYZMaPHLR8zHCemCm4hlwdBy6Nr0S82D0swo6M2bAHJgME5ltzMCYDHNoeLqvNC1HyQidk1gN6LFmStAvYbWOQgc3Mw/P+BYwC2N8yp48c2bBfNK7a6lMjKmJvWZEM6Q80qUxDUYk+hKH0b7rfYMIcZw+TvS19oxmwDMIodkVjipV515Zms5eaoRWxsRhSRGNCUHv3KNMYYKjgjdvjMJ2QHQ34MnPHUJTO9QBpxZ1KD15Mvv7Hiu+pUNlUr5BtZlt30WBgcmnmF0Iqwd01flG3VJ39AX1OcK5CTMdgPhMxHtUqbP3/5VqkT2rQH8cxFnr3KKqEj110t5vu5zRio4p3Gdx9s6fgu9O/uiy7ltP3SUXQQn91lmIpmidiDiLNih8pNEGDyK65+jt7AjuP6tMieilDg5oIjrmQf+srLF2QzOzMvmWwe8r7f7BZY2IznL99EYbJAYR3T2iPNqz+6BTtm91TUS3xzr0yvYMml3gh42WHhFd2qQFji5oZaB/e8fVIGpvwFtKg3ODwcEMg/d1mOtvuqkjn0u1dYxwbsJMByASnlBqJzILHF+qcaeHs9BZrEvbdMF9dM9SR+8XdHWGOSL4nK46a9DVdH4xyHX6pwZtkiAae/+2G220kW8RZ2+y2Wabmel9ywAE6NR0XrMd8dUS29aldnS2A7O2gcP6OlGWNd6aOkY0iLy41FnRLIj2be94BsOQJujP1tvNwu69sN0fysQf3uz9vFIZ1yBmADHQWAVQPmlt2t4nfbA4yff98i5ruR1mNovwY39qrpbxOLQcXeqApz4MGGgDgjI9t1SjGhVE2sqGmZTbwNLDWWizcwzSaihIhzX7Z3V1oJJX9UZiG+HchJkOoMPQ3zCljo52bz5AjLRsBOmMOpylIDT9kJhufze90TIX0Zb4fmhQZ6Zzes4sDdDyAGymsMRlhhC8QEcGmNYgAYjdOjvAsAYoTGX92gytc2EODEbPN+sTgZWPWE7cP6RUyQBtkKNDe97SFakE8xoclNWM7D6a6E+94L0m/yza7lNVzGbyMYD6AMpnw4k24F1niRBNbOdJ5xnlmy4TT7Y+amypaVg+k961Uy+WAQ0EpBZ10UP7zrkCbfZ2pX5x+uFFuE1QP2BvUIfnap5GWBuIfkQps6HZA/3K4c8zaZhBlCY6YpoflSqWY4RPt/8wGjWAGGkmZwF2n95P3PxdqbMR5hrEWaIxUfUTpTKl+57DlKzpfptdv91ozHZSo6V3QqnWZ0azYxttVh3E5zeXqk/L62fKmrPJ5J9o7D5VxYz88/bfFUq16ruP0d7e7rMk+/YfSl3CM+u6Txrx3Z+W6qSiTO6fWuoAJI3fpn4FhHCfeMs1d1A7MPegdhjQXl5qPd+u1OU5ao6ykcA888bS4EzabEFhSky3Q4/ziyW/YcWgVzvkZ8ARzn0gCr+v1NlWZz2lVFG0B423ATAbv7ehGfK1pW76wHBEZ0zH4EW8lobZkFHM0huR04yPoTGiAeLdperoBg6DwtNKnV3tp35tV4/84SpqmcvsT+TFaBj/P0vd1CFthsIPlbq8hCFOLJW5zXTK51ki9MmliuMYWV7ZHpTDdyw7Eb+HMmFQ4rLvmi2PafQhpRq/5F0dKhP6iPaO5a0HlFqm95Sa3opS6+M1XZ2Nlcc7JA6DnbTV7TGllo/IK/9vK1UkNzjRuUkdBlP3V7fZuclIUwxul5pddQyHewTfFnxXV89FW83g52beLsyACQ4uVXQ0Ew7i7/kWdIzWkfadNNG9q9Z3TAQwBEZlUf+XgNmO3zq/2d0MCHYsdZABBjRi+gCCUWwa/V15Ob9QRc4TmGLyAW3xPSRoxxoVjYplI1Afjmtk8kUAFT8FJ5YqQtGdzRjoo6cfOD+BDjF4RrE85xanEBtBvoYulSnMjsTnYTntfA+zzN06/ndKLRNj3QcbTQoa2kn5qAK/L21dPfiLUo2j5xkMzK2NchX62dbUv01qUI1hZaDfBTgy+CLATKWyMH+5VHHSYXZiod11eOasNIBGnX5vQ/R80TftRtpss836WG/Q7xYr7KPBL3KHzLOvC34haKajB3+uqwcJzhtm056+tz76nKLyDT7itlUOO68wR/5/e1fLZDMNcf7zpRoeqR10clKKdvtoWSOif7hMDdDSOC9gGISDu0W6EGPui5Ma9ea9ydNXurpuf57l78IEq4I2KnDSoL9a++Vffb6qfIyNAYLLgg5WwBiCBoqgilEweZ/vUh1MhiUZS1KcQ87X4vqwbzrX3cLgO7fdXkJBDXor67nVhtlXZ4EeP1jqz1NoDA4uAic1jJWVA3v6+yi58yjPCOcQGGX+mIo2AzyTFberYYxWzzDnNgxpD2hGa8y91bJly07OldENM/wyKOKJ0L1OwvxbV9erxR5XDgYwFnqzmqWa8wXMlg8zY/Dg1inbH9o2S2GbvxzG+EfKJpjD21uZ2EweF/x2K5/3iesMlgyJPy7VqNnDedF+AzQGd4KM3WYOMjRgCdD596C95KvrYITFA8tg9CLW2Cemsi3XPHSo+POig0x3funrKJg8M/ZyzJ3ri8IMjub5etApIAIRfiDP/zR4kVIdVZxTRh/njspbTec/38B0GYfy2UGW8n03+KOUy0z+0fwnvJI1bo4jPwuy7Bu0hItmUKOHf6vU3XbXDH6j1COKpw1daxI+F2Fg8MbcfBkwOFH9l5MaNHKtehhhAaBVJM+vqvhVcY5ex0tsYwzS1SWo86zSk64DEIij/UaFdAR7ih0kgMmdibWs6eEOL9i8ibPDe7Of8x+/8NU/p2j3h3rgAUdNWRToasaoCa7O5+UAQq3o1YuUwYClTLsGd0KnyLZakk4GJrCddObLZwBqSv/d4MZ5v4+Pdh4yuait8iAQow3v+wVFYTUoa2NRZvW786y/XSBgpoE/UKooZ1mJRfbbpXp1nWcj6kz+eND9Knl4Q1fPpf51GOCjwZXp+L8Ic38jV4f8OfnTDE63s54uXjoPMiLqV0p18aR6KCOD2y1LjQxjLdo69Q9KXYs+tFQnFmv4PSwCQ5AseKZZwuL08stSI6CKy/bLMMCpKcuKzN6nB50QuuPSenaZGZwebs1fm5FKrN0rh+/cttTjlInovPe+k+eenG8K+ywC7RMGBjcQnhcg7YZ2DX4p+ItJndGdCPvrrm4gOtf73AUKZjrsJyc1+D14RanLLBxbejgfVLSADfRN0TqJd/TsLwb3oHOn8/88nd8xPc4MswRD4uAtZ2mMOyRxVvkYDQGnFc4smMH9h5XK+H8q1Qfduqz7LNM9LEIdGGwwpPXrPj15Doqb/reUwekkznRzvpvy7tJ0cMuAq/IcBx95ZDnns8+LjwWdY5D7LOvsDPaPvzDvXHKzzTb7bN5/xsBgGP28gCkGF/DRUcnKLhjlR1s92N67GHV+4YEZBmdhZowCNnPodNP+0uc18FNn2bc8ZL+0s7oEJCS27hymdhYYevPc78/Fap1jPtNu7w/dgHOMGR+YGVcMfyxCZ5M31n1Xde4QBIEVtc2eKccuGDBlNHM7iw1D2ojSW85bfqbzPk2TDgbwzUFER+8wVT+LCUO5BpVnzR9rGNzhCMptiUwebUqxDXi6jCOcHZipPP7QXyy1Uz+50fMyQg0NsdCNMTMAyQs/7edP6trpV4Jv1Pkzg38p6GRPZ4ifmPufbe++LPip9j4jFPdPHl82h/A3HzagmOm5rFoz/kKpPtx8zr9Uqo93Dwtdvhk4MGgt2Nr9ykk1PL0/DL1tyqRsnzZw5b/Xd3UdnH2Aq652Mhg/sNQAkcrAzVc5SCeMbF/M84JaOCCBTwNpZlHabAakTW1g0GTjWQ1T6Ysg+6GWL3X+6uDXQnt3sfN3wYaZysM8xNmDy5qIoEcNf84w27kCM/nDgP8I6gx2YxHDvxmkv/6TCBt6qyARm4hnZtTJlYMkgtmtDKws1Yfbfb7ndy11YwYdlojuPvH9sFLrA/OfG3D1Ust3alfj3SnPr1LvnEL6DTShxVf/JrrUTTZsDGiDwwsbTa0ymPnWI0qtN/dfWupg5v4w6C02DPXJ9rHWLD7F4GZqnnbajLpikPLO+WYJ818WZhjIbMbohBn4N9NPOYOcX2AwSBHhWMadJ2YtmNi6D2Nbo1lgual6x6i0PjVj+v6glwMbN8yOgIPPRaf+W2wgmgptZEAlpfTlm9Rzx3rRvatbageHHRaygQaYfgCrIIMFzT57bUnhvlxZEwJrsUGbHVKqNHSGGaKVR0gqvugOjKBiqHOTzLSKMcLZgSkGV/ncU80IGuNMYWZwMBh8vNRZcrFkKjPqB0s9jocawbrtbDJLRoxNg9h5QqnqBniQ5xvN+PSkUvN3eKm70TCvvL+91DV/xio7xe5d1vivP7FU24TtnWbEM+iTCwQGWPXvLDS2hfdmsHr5pJ40QmwlmnuO+vSG9o7yEX9tpLl9qTvvMDDJZNi9pnzqiuFNGtSUJ5TK5CeVKhIvVpmk/aFS+1Y/2Mz0m9Uz+RRY3fAOKU25rOtvO/3ACPMABhuzwzCKljWbGOald88Anda73y7rGKnPLsjfFFAXpMGqTc/s0+vaIQG5/qWrMc+J1f5j3MGg1I1hJnOfSI/Rib1ESMzs/nGlLsURYQ0Qh7b7ny2V2T9W6qCwPongnMK1Si2HkE29iM57LXWw86SubviP8Y9O+7dSZ7gT3S91LzoRHH2bskYFObZUxkdTOwxyaIMxaUhdUVsWrEwzbaY+padMvT+CfscYOg1TDO5lTjnagIhOCqG6cLUdYb7QrLFrMXmpBhGVOi2uzheIiRpTJ10sWFHq7raDS3U+MQsL9i//hwSv0MphFjbqA5tMVjYamBEGmBZTzXpDJ6cHSktnE0WF2Ey0pef6dg9TnXKhwCzlQAJlSbNMRGQZyid//UaMsrZITpUY8sQ5ybZeDxF11ZNvMipeo1TVQxlFmVEW93m8abMFL0wD56SJ2qIsfX9rqx4bOnABQ+uH4sl7yKC93odHmIGhonPdMtcXB1ltHR97bNC5VcS4+XRgnYaoSEw045hBHj38OY/3zwmYhRmVGMbMagI7PK79d0ypUWGA2cv6NtBxHtpo4p9ZHLPw4/a+GQ0TiA3HUEWffX5oMdJ2L9XV9Uk6nbItdPm6qovq1Dz1xA2XtkMN3H9sWaNq3L2sOQeOtZzqQC8nlj+rVGnDIEV9odZoz+eX6rZqRlRvnHqUT5l8d5BwFgSGusnVQZD61H+mPM4151L84lyXYfJ1ONl48ehS+5KBi3RFhVjMieOCBVMMbm11EP0cunc6urT90uvqwDP3BtH2Q6WKfsSq73rMn+t6fwHB7CRt6WFKFme/zWLyQYTlcsof232zgAgnPMUES8DQ7mMQe6bRBgiMjSaKYw60LaZmRrSIoMN6clkoaN8jldgPbbC111u7/KmrEV36diqVkb9TqmhtcDq51NBOBqdXtGdYzakbaNc7Nvo1papfaCsDDKpo3npWHBYE1iWipwxfy/1D0fbrp60cfbUuJxuVOrSZfsgeoqz3W/3AAtb7BRKmGJzxRmD9+3b1ZMxbB9Gr5tmBzdqYHHMTfRlxMEwP83j/nAAPsLuU6korIZ2aPg3MZAOtExPlgdnrOo1mUfacdzGNUzgxEiYTg5xIbIC4fWgi7Rapp7vnesSkOmbMduRzDF3VUfmM2zJpFhc//KatLZRzKNPBpdo8AIPocN+gwNvPILey1DoR78xAQJKxBu6/O5XaZspNGqCzLxawjzjg8Rapr53S7+4bxr7zXN1Nti4GB1yHvUNqunap/cqgPMJ8YOicweWTesrEcZPq9qixH9vV2WM+DErPNUOY9TTGsaWuKZ8bwKr9yFI7K2OaWXhIW2dWFsAybiAAmN1sBujfdytVvF8RvE8rN2Z4YFfDBxlEHpbrrVI/26UzOg/s/sElg+1ioaExM7Q2/IiuBdlwLTW/wKw4lA8DGGTp09QOore2IJY/pNQBAJMJ2mEN3ECs3jC1Qe5RpQaBZHchqhP9DXILBeqZ2mawstR3bPAhkxqyaTWDz/Q17XVcV0MrG7z0MTaDEeYDUwxurZgoOzgYsM4SjSytzFZ6DzP37lGq+GRph4HOu0TmcwPMYn8Onl7qUpe0B8vyIM4Sy4mzRHbGtg+2+wam5zaa0Y4HGFoHN3ug2RZ6ET1l5lHWi+icaUJzhV3NjAsJwze7JqJvsskm0jeYDWUyw7N6ozHuRxutPl7Z6KPKmvPW6O53bvRry5rDHIjoyqRuflzqgOC+39NGvHMK+pJ24byjj/VqR+pw62kGnxksv9nekVciunyNIvp8YYrBzeBmb/uEdRYd/Wmlit7zqcjLl2rMYrwh3j6xTDXEIsPKUhnynmaDUo1tZi9gg8VgWDNTmckAQ83wDMMamhWa6M7zi5Wa4enoru5k4jBDohEJVISYJ0esfNSkwmIzuBn8cUHShN/aZigHBn5Eo81wZmTitkFWPSiPZbNjuxqeyiyK4ZXJ7K7eSDlmcOvh6oG1He05Us1CwT6lHYCYtHdLvT0l9XhMroJBnoHBW1nl5+ldPRCDdCi/4ww+X1CZTcTcfFLPv7pb0AYOot89usrs8+m8OtIdSnVmoK8eWapuR88jNupEay94LhwQKY8MHr506VJWZstLh7cOQmwlmgOz1LCur8P4b4CBxuQ37upMib5F6AO66jF2m9TNNUPb8XT7oCUfsyhxWV2REuZTV/OCln9IB7/dVJnMZkM5zITsB4AITj9Xz2Z9ARYx7qpS7SHKbEY20GESbXNEqYMBUfyorkbtwdRHNqTyLBRoJ2lcP3UnPNOd0veOCG48q4NPld2pMLa1Wq1Q1iPLeLzR/GGKwW3S6EU/FRnsrZddO8RPZc/CzD16ofd5SbHievfrpXY69/9Q6syyGHBoqWmcmrJYFvqlFYHQ9GaiOxFPR/92e87MNYjoJI9BRNfxLfOhzWCYAv0/Kcs1Gs2KbkZUPtFTGOD6eguuap2yLARMfUuZfP93pUpHvSpVqnGR2sFyrtN/uN1XH4OIbmClt6JJIOwU6Gkr+ifKmuOYifyMWEOZqDM9LEC5BjXny12VJnrnnbTTVtMM3vrjgPdIv3QiqXK/vtT9+UcOH/TMCBuAQTRSyXNtHXxS44hbOnpLVx075tO4vMl0qsH4Y5nmmFINOa8q9RCABVt+mQFqhEMBjt5ss82sHT84ZXhIaNFNnhx8Ycs/8dW6r56ko1sPNuiYEblPEl8tTb2ktCORu+rqiklIMi/vqrFrZfBVQaLjitw/IdeXBm3+mE9dzQumvmNwUofPKnWN+smlLu0BZZJ3UhNJ6cWlDmAGq+ODwhCz/MufM91IMS8rVbQnMr+8VH8ADKT9iNBmWvd9ay0j2wKUTdrUnj31tTD2C3IVdWetGXyKwRk4SUrKJ8/PLvN0nx6hrMXgLJmHB28yqadOWJ4RMqh35JgHGOmJuYP4ZLRmwOJ1RFS/eqneYAsKA0PpIBnpl2y77bYGqkuFuS+lXJtssgld2pKQx3VoMzYw8AwdBZObiYGOxGNM2enzB3dVTBQwwplgwz5lZ6cdPKmB+q/bVbFzwdfEwfC94dtBA/DgeUfsHjz19ih1+csL1Cz+DLZfsh8c0tXlT2eVYRrtpEzEcyqIdnb+mQGOiI/muacODBACLpytKKfD8111rVWHIqaK3KLOrpN2sq13LQYHA5MPaQZXtb+00QjzgSkGt+mfGM0yLFSORqdvir82+1oPM/dZZ1ld31GaiF7q2Vw8kNz/dWmzwfq+d3YhnaMLQ0+22GKLTXLtO0Hy/+Ctttpqd5bnUsVCuieLrN869/sbTa8bRPQjgw9uNGMOqzqaxdkA5Tsi3Qwi+g9TbxhencGVQ6dcSGj1ZVcZBu2aQxL1h41AHfuN0U9q9KF5zAzclyn0o9G5EtXv0GjhnSyVeeYjXVM1cv1OVwcP9/nzo6kG/ttfXlp+5gXD8+0dhk3qhP35vYie+7+eayL6rE86GBi8Aeck+TrCD/cXuq4vcDDF4NsE3xn8SCpNDDAdykjbHx8zDzBLnxJ8tE4RPDnIvRLDnRx8U9cCAi5Go4S5J8uWLVtKRM/3bx285zbbbLNtV10jxfUyuDjKl+5t+Uyn/0CpjEGtcN9sbaY6satGrYNzD80/QPSYk3K1u4t32Sm5vjb15UigD6RzfiDXHdc1E50TUF8Nt5vUIITD/WcG/SC2s3vQxw1KIseKiPKAVg6zNaelk9rVoK1tWOQN4gaFp3RVSnFffRlIPpi03pkr//G3hjYIrOzOAoMPz04h9eCUXJ+fOhKG6iOpr7cGxc5bHfd9Gmb6yrGlthnpYjWDL0Z/usCAztg6pdC1YlMfGrQuaYdDj7PvTAFdz95de5OHM6V0FOIeURGjs2oTeXtxeFKdGkRA3dB3zzKEubt0ELO4b18sHWWfVrZ9kqb9zzqEfBJve4Zp+UMTY9HKu2nwEkHeagI1XnpSd3ChL5dv+q5lnSvk25cJLk/nvFLSvEpw0/X4VJ8jGDrxFJK2iN3yzn9BnQ+0iKSeMSBgIuUhDotSus2keiweMKll4oVHAhnet6f+Yt5P+S6Xcvgt4unlcr1ycBP/wTOD9j3PGiy0/96h+dT7zqXn6qx91dTXQblulbY7aNNNN71K2m3TWSaf+h5PPCoE9Ul7KEM/6M0nTxdKGESjXLfL9Ve5JZjfZdc3E6lIld2ApZmY9exgL87mf4Y5M5/7RDEiOvrHrYGvkO9eKUyx8QZ2EJ1lcKpJKws9lBj31XQaA9APuhq0j+fUqf4LrRO/u9FEbwZAtGVC68vK8bigNX30K4O9FT15N+v0Inqu3056l046f2MNTnlWmIXgQkPr4JAc+ykrHl31rvtSqXk3QL0PnbxePXg8Ovk9MvTR7f7RwSPb/eNDE5nd/1De7dspND/xvfK/gxV+nzLumSuffe/sp0+sq19Mg/8nrZ8Eecb1/SJIylNvnw7ytPtnyvGj4OVb/XHm2Ws4fgpo06Hspe7T/3tX3XYPzn9PzTevOZ88XSgBY0/hNqnozwe/m4ref7g/C0PDNeBwYW8vhw9r0N9JpT8v9OVT4afl+qagGdQzAvRvlWcuke9fMrhkIRnBYNHytqLUuGTEaYa0jwRPDb1j0n9H8ndarnvk9wtz/WauJA0dX7inm+T/OyWP3871fsEbyHuuT85/B+X+6cHX5jcD3mmhT0y6pIWvpUN+LeXZxewz4ELC0Mm7GnqKmPqJSZ2l39HKIdoLpv1G8mdWfELydnquNw7ewzO53jPXGyuH/0NfKfitvPPSSW0ndfDu/LdL3hV2+vNLawDLTwYNZntiOLghwGyTNdLGEUF1/ry8d1i+89185y25Xj74ndTZx1JXjKJfDZ6Welw5zeD64NS3XhQ8Pd+6ZZA09aD8Pkh6cIQp0EiNibeAqWxB9S+TCr9Crn6vd4/uwOBd1dXo6TunggXgPyC4a3BpEBPsMVcBvV/SWaKTJI29gwvK4FMMINM80+jJfu8V1Hl1AlFJ924dgqMFsVHH2aLdnyypR+zuvaQelsABY9+g882S9aUXD64Mkj4MUvumDETKSwcPCG4eXBlUvk0XsnwDtLpXplUt78TUla1MPOz2SF67oB1aewVZqB2awFbgCtCCN3qnj0bb3ldup6XoF3ulfHu2fnDR/L5UrnPtv9lsnQGmmHKX4IHSaWleTj3mW0JaX67V25Zh6MsGD9y0wmoGB/LW8kqyIAGyF4kqe8lW5pHBp0FlwUY/JBV9P42ZSv1+dNl/pMIx+joZXKMNzFTqOvfvU7lPyndu3sSs1y+p50z9KXhKkBfSH3PPEUL75du/zHN/zvdXSmMRmIBH3U+DXyt12ei0oGCFjqj9TAvGeInk5y1BftDE2ae3PB6RZx7YynFs6FsG/xx8SX4f5n7y+0EdM/iX0KemPPvnm79L3f3cTJTrt4Oeu/z66vAcAss5C7pjlwygn25lInW9I/in4NWT7vPb+WW3CT5cWXN9WO7ftpWvn1GDyk0KMHj9Kfc/l+suy5cv/2vK8ZP83jHX70nDwKw8Z1YmzDbF4HcNSuO1+e5123c+HLxy8K/Bb2DuzN6/Sr7+EHqPaQaXlr5qUAn9llam2+XeE5POn4OPHxh86NMXelARDY3oD0iF3TuVt8cm9cSMP2Fwz62rIWcYnK/zb1K5T8x3/j2NhRleHfrKuffb4Id0nPz+XfArG9UZ78dpvF8vIoNbAvtJqQyO2b+evDolgy75yaT3R8yQ/Lyx5fEawacF5bFn8JRfOY4O/kfu/T7XFwYPUzd5/70Y3HeC/4vBMTdmCH3JIFEdo1x2PswwX2j1DawAYPDv5p7Z91NJ4w/J56WCb1PXSyuDP7eV47YYu5XjYcHbtPvPyb1DPZ9vvCUoAMPv8t6n8t+Oeea3wR/k93atX/wxtFn9TGdwzDbD4Or2VcHrSjv1c3K+ww7zh9Bfyz2z90/D5L8+EwZ/kz6W37cNYmyTy2OlBz03QlmzNJYKyWVul1x3TgWyPhPD6EbzFdFZbS8zqfot0RbjONbWd1mid5+r505h8r3y/Um+2evgaailmHt9aZwD0Mr8yKkPk+C+ycfFWplXzK0xFDnkbt+WP8Y/1nHnYy2fq5byLZZUcX0Q0Ym61Izdk+eNcr1Y8n/R4EbpoBcPXiL0ZsqX/y4b7KOUnBkznE1wTJHlQAy0x6Qe+qAc2pIoDIjD6E2DVBC0MimH57dt9UB3H8TcVcEdllSG6l1UG0MT2/fVfsrj/zODgcHlaVJtMlSg1SJ6kD3GIMhIuWXq74Aw9eWCm2HuTaZsGC0/rr2InqujhqmCxHUbgkYRfRpaY/adPGhkfclcDTX82aDjcTDqOjunRpsCftvf6aqR6nDv5jtcD+nljoB961zV8b6b/z6R7+2RBmXdPj1Xhpx1prEQ0KQMy1+2dzL47Zl8vF8eJ3UZ7GUtj4dOqsUc/R/Buzf6wXPVq+87uT5jSVU7HKnz+uT5UsHvJ/8fCe6TzvgtM3dos+An8ox6oB8ueMczaOXCYg55op3Y8msZ7FUtv4cE7dRC3zx430bfJ3izRhNxlUn7vWJS/R6+HXxf7l0k5WCU+8JcXTJ1yIKyGwDmVaZW//DI4Hfz3RflvWvmm98Pvi31d0V0rh9PvV0q9ffNMPa3c3X22mrJTv+Q3qQOGIyB3w/eIvf0OfQj23/zyteFAoYKCdqy994gEU2n/1Eagz53WZWFyWdBo03BY0tdouGTbSuf5RAOLXaUuf+p/L4EujXsvmnMP6QB/d7d9+VjoUEeW/ms+/5qrp7dZRb/Sql55F//HnRXd2jxT0eLaMO3G/34SVtSmtRlsmFJ6eTku9+YsbRa1englnfomZj6e0Ma82WGswJdDfhIheJXYPfaN0pNz2pAv4Em1+vl90sbfYfQgyfbMaFv3+iXBPsy5co5pt8Dnv+tOOyWfDsL7deTuo5tj7jnhhjtNTNnAl1lcBFY+n4RtOtN//pkkAehfsCqzl7x54jo9PO9MPfA4EMfgflWvx8819vn99Pbd58y/L/Qdf0vC0OFTNY4dej8xDjnMRvVBWCcT4XZoMA7SSfwLUH1iI+Al9Rg6WVFHxxP6IqXCT3xX3t29rvnCIa8tzQ4a7DiOpbW+jfpAr1n0rURw7G08izvZnwOMO7bBspBxPvEQQ461JG9llTr+mWaqOnI4gNy4fRCpOcY4zBEjjLzZob5groKkl9xgIq7VMuvo505gsij7aV80dG2tiqT9nDlGILmocYJyfsr2ne5oqoXtLoaHIE4Cqmf+QaYNDPQvXyfc5Hdibwj7XG4qvTnqopwFYNlkEX9oOBVgpvPSnZDmvIUPLirquGqRrvOJ08XHhg63qT6Tn882BvDgu+eq+LYeh0aZiryLqXGB7eLSWV/vKuBCexFdv9FXe1I0nhzvseV84NBbp4a5m155vNlgWNsDeWbq3r0iUGSBG8tO84+KX9ddfX8RFc9o4RismXyRrkeWWqccGGQ+Gork5nPJhXums9J59PxnXr5+sw0LNknJQ11uEee49b5qW6Nl9xUzhYcMNEbS82jOvzvVg57AYRfUg6z5h3bM3fIlcSCFrbpQHTuqQv1g7ZLjpfch0O/B13q/gL/8TFYJ6jvKRDogy/Cw0uN4vKpUiPQYvRPT6qobfDR196u76VOnbf2sdTjrpjbzA1mvmvWVrf29wvL5bvCa/V/zjx74YWBAYJ9KKBUkCUts9xv/M51veLlUJkNeLLZm2wLn+ACvvX2rp0VlqtD7vq9zEnr55OqB9ts4D+i+w/QpcZHWzCYKt9FMhv4vvTNVKej5S94cqMFOHgZutSBqhdngyLbYAy0UNK2j/4peHJ0xWGzCecMjPVX6aRsjhf6WfsP88zW10KDnV7q0GYe23U/Wmp+MdVrGn235KH3OCw1Uuxd0V3d7tqHbMrVe8O+dnVkJQJtL72VCP1Cu+kv64SZcooE5H3bcfv0gvza5WvoF4eg1VeQ4axvp7k1fgr9h2aYdtjDf+dSz3dHP3P4c2TwBipPZeRKjLxerteeq6FrrxFkLOtjZA2j6AZgVanx0HtLZqk7s9zT4M52ZsGWFo+pfvvmpAbvPyjXuVzNNN5fyMB+0wy+tKubLWxOYJDiK48mwtJj0daV7ZiyNdLMtbLUCCcrSo15do18hwWZ2nJYmPvS22+//dZbbbXVlYOX22abbZYHrpq64jpJTDZ4+K5tmbMdf6EBFxxcat6lRy+nV/PVxow2lhBnlcU2TaK4Zbarl3qmm+2th5W6711j+1a/nbar7sZsKdIweKiTNd4nGwaDt1nWVX9As3tQ5UgQ+gZ1ga2AHwJbybVSv/qi0GGrmbVbu/7kzbe4IGszwUhcR5iGYYQM9tFB0zEfnqvln5enI789v/dcH4PPVDjDmigbfLb5Mr+21BC3lqmIw49OQ1lrf32+99+hbWg5IVeBE4QLErTA+3us/uICgDw2tH/5lcE3dlUXNNoTac1Q1vDdN3OZZQRWxBBm9P8pNeSwTi5/95rUM6sZ2x6w00477Zcy3S14ux133JGdgS/+CSmbYBPPa2ksaJnWA/RwW12lR1IifSgHRmfcUg7MTLpCCwd9aKnnmtlBR/pQPuI8pkGbfQWY0JYnlLpL7UWlfpfNZZ2gvqfgiFKPYzbTGhhs8xQXj3HSfeK6IB1vzpUax3agv8iXOlwfg2sz75sUqBu+e9Tw58yzF16YYnBul58M0lP5A/diUmjri7Ov9TBTiU8qVUzSyXorev63iaOPOppG+lpXZ8QhAinf8D4NjVpqBM//KzUo4IKBPDakP/bpBRmJBpWApMFGgNb5X43uaoA/Yqz7z8pvNgbi75snbaOETpiZm0Ryp/wumcEPaM//1SCQa79hp6wJILGYIIDCz0tND+PSSdE3LZXp5Zfa8ZR2X3v1mz9KPW/NDIj2Xt9mpYZs6lW3hgYOqgkRfb22kpl+YSD1rogwbBloW1pv3GibfuQX/atuzUES8nvRof3AzHdPac8ZnIj/aBuFeph59sILUwzOqeM6RPO5KqJbXzwyVzP7OnXwGdChzd5GY5E/b1ZqyF01/W9dtbwaja8zqZZljWBE7/fzlipOYrA+WOFCwdBBumptNsLfJfS2pRqc7PNGE92PKPXMKzaA23YtwB86yKK8Mld7qA/MIGhjxy0zCB6y5557rsjva2XQOni33XbbKWL7DfPfjVNfRFhBD32X6L/YwNR8y1KNaAYzM5u8E4Utm/VlKpVhlYM1fEWpgSyIu+pB3LmDuxoSySBtICMZaEvBK+n5yqSdtyjzAzO1PGFcA4TZliog7duXGiJLAA71RKogMciT/PZx+7p1M7jy+e5FS80/eojQM8IAUwwuprftdocFeQc9bq6K0tbH18ngMxXO8PTkUkP6qPQnlhqFVCNZI7+954OCQNyr0US1o0tdSrEbzayisc8NIIqaXeiiZhYqAobWsVlo2QQMQNb1r1+qqEtkvVXqwgYPPvd32nbbbYnlDwzeMTM4Zjom+Jj8tuRG18c4a4GyD2LnAgMRWh7U531LLROGxjDKRDq6dqnlMKCSLJ5a6sDKgIY2APJcQz+41MFJu2pDqtRxpX7XILJOUL4pIBkwvBok1CmaxKOu0dp9z0ZTK6gH+oH02QhWw8x3zdzeMSBTpdCkghGmYYrBrUta1jo6tN1Xf83fRGnr4evskDMVrlFYWolLZoJBFOsdQYJEdKMz2jleZgYir98alc/4X8oijcIzebWk1IuzXdVDe3E29H8Eiatonnn/hS5V9BvES0tfjDtEVb7fOq373+OFVWodeJ8KQppR/gV3sl8HaCCd3exICvpSqfnCvHRV9H1KZRw0UZ3Ijn5D8juIzJ8pa0R0baIMaGiwoEahL1nmB6LMeP74Ug/EQNviShJA2ycgz+jfljVpQxPF+uAjpT6jXXrnpFLPD+9hpr0v3NBmaLHQDwteLSi8kbPIHhF68HOefW0WLIeZkem0HCuMzMQonVvDsu6qeAargdb5btfeF/nTmqlZYrGBOGIG4KnGWGSGe2RXbQHEUjQHEFZwM70ymXFEUb1+6sqs/9DgLcLULMBCIh0VGmMxaEEiM1CX50Zvk4ayrCi1zonnymdmJoE8olSm1E7WpK0iYF5tZla3+vHQUgcEbWD2Jk4TxdkjDA5D+Ty31uy6AdAHjilVwrNagTabY16GMmK6PMurbxsYDa4PKRvuC9SRY0v9pvyTLEglI6wLBiaGXfWEIkY/pKteXPMZEc1kxEKziI6GqQ8ulZk04mHtO8Sp/ntdXQvFXEDHYvQhEg6dc5/230KD0YqYqBPLqw6nU/Hc0lkMTpiBSCtemYiklmB0dFFTrQwYjG6a+tLR0UeEpo4oN+yXHdZTb0eUxT9XS70q06quBlSUdzOwGfL+XV2bVyZ5Z4NQD9pPm2Bk9w2+jHeYW5kwu4HRd9dSPWbKybCnfJbW9AsDAnWHhIM2ext40NIYBhffph5IW343ZI/RZt65dKnfVafoEdYHjbmhHUW9mNRtIBb6zL1B9CMu6VzE72kR3VZNzNsfE9veHUQxnesXjcZUnytV1MX0iwFmOOnJI/GwF9FLzffr0cmfGYQdwX0rA4N4+Y6uOWkE/7ervvasyr/o6nq6+75rJloffKLU5+4/3JiHhHRW4dRS88WmMIjopDK6OFp79SJ67ln2Gso0LaL/tKwtopNiqG6+i6lWw0xfeGupzx9d1qg5J5Q1VnsiuoEefXZFdA45nlEGA8J3y+LW578+DIzcVecP65PP66of82wDrguIgf9dqvOBmYHuxdpqFKbv3bF957hujZGN2MiwAjDUM7q6nKXR6L3z1fPOKphdzTAvSHpmEjPUC0qdAUgP7rMmKxObgs6v46GP6urMR9+7X1fP9FJundnsg3GU12y3PpCe9eRDZu6fI5hpI9KJ/HJcOaLRZlMHHsg7kdlgqp7ZTKgnaAOZcjBaaR8zNaPak9p97frSMrMOPpM20V75iMys5Ohbljqjo/kaaFu0WVja8mdZckWp6UmHzWZ9QJz3/lVLXd9nBKQOjLA+aEyHZITSqTXKfEMlE/8872qmZrQx4gOdyUzg+8RdrqJo4rwGAhrfIXiWs9BmnrU60QKC4d0y2W1K7URmEGd/22ii06Mx/rCkpDOuzNWARSLZvtSyHtLVM8ictkEMXl5quYmgyrE+kB6m29AMdZZhpp2IxCQSkoQ8o9kODE7yTv2xN4CUpD2Uw6xqILMCIGQ0hmFLUCb9oVc75gH0fOVTf/s3msVenaLZNKg5BlMqkfqUP2kYUIjf2l99rg8OKfVblt5GOIug07MSE4GIneuEmQ5FFPtDqeKsxvLuu8sakYvIqFHRvym1IQdRzKhNHETrjER09GKK6EN6mO3jjZbv16JTNjPgait6fg8i+tu6NRbnL5RqZ0D7nk48XabVMFNXg3hJtOxh5v+zBTPfGKzoGOVNjbYZY1ClzMirHV26umlDuakrfTm6ehyxAcEz1A6MuE6YSXtQCRgoH9/oF5e1HV0GK7p+cWijf1XmL6IPji7sASOcRdis1POo3lbqEtY6YaZRjyh1p9GdS20knYqhxPt0PCLUpqW6SdrpxPj2slJ3LDHkcPEUZhljENWkbTZdDDATKd8HSxUV5U3ezTz3bbQZHsOjGQlZ/tEP7qpL69tLHQDMIGi2B+u59M+3lBlmmKmrxwTfWdacCrogMJUGgohL1yUN0U3lkVMRKUTdWhIk2srrPbq6PRR9TKlr6eheTA6NYV/bbeC4opl7mE75SATqEM2AZrZGP7LUgRz9tFKlO/QJpTK1vJocNmTHoNp5x8A0wtkA4jNRClNqDI0z36URyxs6FmYFGGKg6YQcRXQKPt3DEThoHleYj2hvVDfLnxswlE9n1tnQxNc9SmVs1nWdnthre6mlL+Jrf5RwVzdpWHaSd4Pj5sOH1wOkIiL9UCeLDeoTM7NvsKmoW+WhSvXt1NUY6wZmYjRgZdcmvSrV1SVDYa9mmXldYNBUvpWlfg9tIGQtp66xdRgA1bNBXH9RtweX9Rwr3dK1SqEPesY3zs06vEAB3YeVmbVURQ7ingqdD5jx/lyqqGag8O7nu3q++LBd1F7fXhSb1DjeP0DnGcz2iVJFwpsOHWqRraKfLjWPjE2vRHf1OJ9evMyVL/ogXpJMBoszcVanRP+kVCMUKYCdgRqwGmYY48RS32FMnP1vMcCMLT0i+aB2KBtjl/KtPpssV6JvbzkPfXpXBzl7ErST8NLrbIuZ/L++1DQeXqq0gmZE69MrVSoa6vDzperTaH3uDIN6qx+gbzDcYXRivndGy/nZACMk8QejGXWJ0pZP1isyz1Qu0ZNeS9Q2cvvOi7u6BfPTwbfNzc1tnU4joubH52o8a5s4Phdk/GEd/WyeO7Q17oIzwcz3Tih1ADKLHNtoDjn2T6OtGzM6of+rq8EK0Md31SEG/a6uHs5oQDwg2Ec8mU5rwFLtFDo249zsfwsCM9+ib3+2VJGZqIy+c1f17s/kyrHHsUUGOgEfzK6CKbwm7SHayqeCH56rkX7O4La8jjJod+U7otRAIGiOQWwXaPvrSYdouwlJNGhMi3nXgvZdYFurfJKSnlnqO1SNmTdGWCfMNNSq4V6p1mzrnhuyavbQ3qVT78/91W9M29W9yP5zwICwR31kzKVrTsjYc65GkhFbiUgsPJKwSSs16qSe3DE7kJxt8J2pshJFiaH2TlMf0PJOnL3ipPrjG5zQ8rb1pJ66KlILvZQ7L0a3r32os9XpBHOrj+piw42NOHZJEel9UxpCR1EJFqx8M0BMvnype8OVy+GJ1AwOTTad9KfGdlUVWb1qos4bQ4s4K358v214msHbe1AbCxclDVs+lY8aYGsuelVX+wBa+T2nnqlo0rxCV+vHvv216rD9BuqQX4Y6HNLot5ROPz/CemBgoK42/A+JZSo1f32yVJHZDLfOytxss8364HjtfcswxKeXdlWs+l3wpNYoInWI5CkW+h9sHQ2TXzQzuWin/hNN5sOeCx6ee724F/q+Q/50snMKOulUeT+cW0RQM+rx6Fzvnd/Wyvtgfl3dLuq+We2G8pfrh4MHy3d+i2Yqbtvq+nFtaei0X2zvKxPVBX1kaGvo6CcM+VmI8k3no1TDpvZQhr5M+e/YroZtUg7SFW829wXeNMgRy7+aeto97TScTSbC6ur8zdThye27JB8GR/SDgkc32kmsd2zpvTFoSdR9IaNIRP8Ifr+rA8/qvA/fn9SgIP3qSq7e7cuU+2IO9M9MDzwjrAPaaK0BnTr5+dBC0RqZiesqX0Osk8G32GKL1Yf+5R3WWiLrcekYDC5fDv5PVy3k35urkTT7M6822WST7+SZlUT14E+W1LO+3hT80Vzd3eZ4WfSdpvI3k/pZh+nOGdoGkh+1Tve0rp71fcf8flCuDko8Jmht/Ie5Pm+uRr358Vw9JMCsLn+fmdRjj/pvDmk0dHyTI3g91x8G2NK72aSGaUY/3HtwIcrnO1Nt9cJcHbxoC+aD81u7PmBSQw4r65NDO6DiB7m+KteVyYMBXmyA3dM+P871tCXtiKN1MfikMq1y3LirTlLq6m7B+7f7j8nzQlGjhea+ZqPfEezrsKsHVPYSxNDHpr5PsjP4eEdknRc2WqTY1XU+wgZgaDw4VyOfiqYp6uiqVDjrN5F5nQwOnMsdhp3bdtttt86MvtfOO++8Q0b/OSdU5JuOufXunrnu2tJxhNBw5hXawQJOSli1pMZjt0d9ZVDk1T4Iv061EDB8q6GyOhZX1NGVk3o0MPHU+WVoV+dfocUDdx6WU1f7QxHmav6ESZb31Xmcqk/nnIlW630hsPacq7HupCEsMbpXW4Z3FwK0U6tze9s5s1AtGMpENd0qaW08V+OeKY9nbX0dDkHQBn046+Bm2sI3/R5gyG/Dvg7navmGOhRrf6hD5VReYbj39NykRqkl/pN8qGHiuS+VZziThsMcPNun0fJKten71fD8CBsAESwbCl37zeCv52p44BPTOX4dFMtrnQy+1VZbdWHsuS233HLjvO/MZ0f93G7rrbc2g5+ed96Z7+xdqs+2IPo6kNNLf9xE9C9kMHDUjtMu3hP8bfC6wZdtVI/jufvAMBr8nMIU88H3LqnH9two+Jzgb1t6j5R28vD40Hdo908IHp77jv/x3lVz/ze5fnluJsT01PedVvixVo5rB82SvnXr4JOXVvH3WM961/Wcgu8MHT/4cunlqgwOBxDj/GGhb6McSe/ZoQ8Oam8Rby/W6v/zU2U4Q76GvDZ8l3LM1cMUiOOOsbp37jsDTR0+OfTtWrlfGdS2jjH6YO45J9yZcV+Z1Jhsqxl26vsOOxRtVX6vm3de1tIQv75/Xn5G2AAsXcPgjg/+sbBNqUyzCz3pT92abZ6zr2LwyTbbbDMXht4k73NP1Ci3yu9Lt80lJ06qhfwPuX59rp58+bM8+5vgPhvXc6noemJjfyj4f6GvH3y193PVWVaP6OcUlHPoPKFPSSdU1psFnbrxl1zvlfvHtLR1zju2+05/uYH7ecfBB1cL/j3oGF6z4hkYPO8vybOf805+Xye/39C+5VytZ7TDHx7jWe+6nlPwjaHTB1+vfGmDO+feMdoy10fm/hEtbWrQocG/hn5Xrpdo5aaDmznPkKfh20MZg+9v5btF8LnSyPV++cYj2reent9HtjQcSnm9lvZHcu8q+d5fgqevj8Hz/lzK8On2joCMbCHecfrMOIPPF3R8lRkkchGJ6OOcOzg+sF6uk8FBmHlu2bJlG+24447bZybfd7fddtt9+fLlm6SBBSbsI8P41qSGTNZBnO8FibCOS7pkcBN0/nN4AIZhZWd4cyzxJLjRpKoNs8mfZRg6T3A4p4xK4MyrK87VpTtipZh0RFXH6qKJtIxNjtthWV6+pB4r7LhdsK7vO8KXyuG7RNghDSKrM9uca+26IIPXAMP3JvVYYasXLP4s2ftjpPy3yaSeBT6I6J4Z9v+rj/70kvbf6u+2/913fpuDH5xTZta/QgbqbcOEjoVG7xSm3C14hfy3Ms8R2dXhcB6a1QeHbRC50UR27XsGBm91qL7VlfzynaC7O1duZPD5whSDq0w6Ef1IfHPbPQ9dH4MT0cPMvQ6e5z3HCPLg/Kb7fa6rsbct1xDDPhTU4J9NOl/Mde9cPxh0BpaTLozO35irp30+K/e+taSKd2K5PXRSLdfrzMdZhaED6cStI1sH/mauZpv7J0+n5/qI4K1z75u5PjN47dw/LejYYYPT6u9Mgzz65pIK71COuTpTPrd969/naiTb03Jl0OvfWYhyDTB8c/hu0O6tr+Z6z9y7Yf7/Wq7HTeoRTtrmJZPK6J5h1OqG98FA5z3tfJugWdrgLSKqE1b/LeV5TGgnq94pzM3KTWJ7VPAWee4bQaHArq4+cn1D0BKZ/uUwibUmkVZ/cC74VnUVZKjkfKSdbjedvxHOBDB4KpDV1xoljyzLFl8pdZnlerPPDxDmLptvvnn/fiqbvzOR8BWh7Rb7ffAToenj7rN+mvX+THScq2us3/PfXGXij6FzFcCQH7v7lq0Om9TzpwRuXDBG0IGGTtK15ZdcWX/5qMvHM4McRNA6ZL/ZJO99UUcfOuE0DJ3UN+eq8a2vw9wTs673LMt/R4V+TrvPgWbByjQNQ121bw+bTY7u6sktaMx5SKM/0NXdc5ZFT+uae6pvDN9qaNmKD/txTnTpqp/+LyLB3Sp10S/9RXJ7QP6z4USUWXp+v0zW1T0HfP3RHG0Obmn/pGvLZFPprB5QAr1HZa7/Nlmz1NifZtKe6fM4wplAGoje5SAEaOsgD7bDSvUf1ku09hmGTBXcOhPHCaMyi3l/yMCkWm6tB6MZ7nR6YipkzWUddVYVMZIjhlmaUwZx0qmfK1rjW6PlM77gzNC+yfGCMXH3SV0PtiRDjJW+mcOJJUReNHEzl7U715CvroL/PUQEFdCSw44yWXcmLqsjNCcTr6nXhS3Y2rCy1IMHOJrYFszRpZ81G23LLPqypW4j7V8arkB5g/qIo4T3zMC+LAP8ZSPFHbbffvvtue+++15uxYoV17xEYPfdd7/YFltscViecWAENeSwSbWWUwWUWz/RXw7uquNK7wEojVz7ypvU+sPgVDXtoQ6pjfpFn9/p/I0wD2gVDLmtvjR4Uql+5WYArqdmsTPAUNlTlW6jiV1NdpDpxMTz1wZXBN+RBnvPpJ5r/Wr/dZXBnp3nT+yqBHFc8OSuujkarYlxIpP035fPcwoz3zg2KD1OL3cKntLVABXSd//Y4CHuT6pY6lC91d+YGuSs51JtPjapXm7PD548qae5PKZUxx/+Asp0cqnBMexP5+L7n0NmFqF8dwq+q9RtpDaa2LXFR3xVqT7iHGHs4uI2qt17UEbQyuZqsObDflLE8stnUjgmZX9VGPqaYeZbZva+3W677Xbj7bff/lZ59v1h7vvkGa6xyv3YIMlOnzq+a3U4ja0eLcvankv6OyBIteFchLGn++iQzRHmC1OVZpQ/vVRxSHQOzEqcIrL2MNsJZyrdO57/cle3WRJNLbldYm5NWCgz9o8areH5vfsPU/Xhf7q6H9v2RTT9a8EYfKaDDOGGOIQMGzOInMPe6bd2Na7cUKYzMHjrnKQNIYiIlMpEvPxH7qsPDPb3/H/7UiPJ9CJzqdso/1bqWWI9zOTtbMFMHT251H37RGeba6RNTTBj/zX4obImTNP3S5MmhnxM1bt+8W3PRQy/Vn7/T/CzO+2000223HLLm3s2s/otwuh9vaUOnhcG50lnA5OzyW7Y0qB797P2kIb8tnokWfy6vX9I17wB8z9dvn9uIdr/wg6USzuNNJqNJzqr0Z/BbD5ArLe5nxfcFqWe2mm5TRTXG8Cubrm0dZAXFHHt0FID7fPTtjvrZqWen6UTyofrgsHQsRpcqdTyWdKji6JtHvEbLT8rS82HGbhXvodvNIOQzulophsEb5rfnGSI5zfNTLZzfjuP7ab5TYrhQCTgv33Q6lRZF7R8M2DzD5fjYeuvPQbDzjebPvZstPY4uNFnYPCuAo++m0bv3jni+aHbbLPNzQ466KADg9ddtWrVTa5xjWtce//997/q1ltvfYswvXO/rY7cPGV2HhmVZ4iEc4Y6bLYgqps6vPlcXdWgFt1y0mL1j8y9MGCkthvp1aV2ADMb+urTD20AdCBbMB14sDJXYp3Ya3QnLpT8oDU20f8VpTLSMfn9qlI3SNw3iLZN8IhGi8TZw9ApzgnMfEO8NOVjUMTQaOlJHy0/9k2jH1/W3zmX5WrWso5vuZGl+hURX3m9UTFelv90dGL5K7vqXy1NdXXn/mNT3z0nMPMNAwhf8cNKjYVGXQC4RfAF22KBwRiuBb7VkJHticFXRETfP2V9UMrzor322uuwHXfc8dZh+nvsscceN95hhx04vrx4o402OjLPsG1YTXlAUNtqyyeW2sdWw2wdBl+Xb+w3qdZ+Kyw2+owMvkBgdO8t3KVGOTmp0UTm+QAxm1j2ja6dO5Xr77u6rXIQ0c1YP2+0WUMoJDRRmF6IvlepouQgMi8YzDBAn16pwQANbOjnlTWHBPj/po0WEXQ1g+twc2uWdbYZzndLZ2dL+F90xFaMzLf/j5NqRSeiE8uPKVVs9g5L/oLBDCM8o9Q06PmkkG+VWk5BIdzXvsDAbLA9AyhrV20z+sXfwoDXye++X2yxxRa3DTNzDHp3GP8+ocWSt2rynOCwH/w9pe4HZ6mX/voYfGubkbyTeqV39ysRufJpny3XCGcTNOQdSo16SoxkKDHLEV/nA3uUGsLHZg2np1h/dSYYjyVGLPuStyv1LCqzh22TZhm6mxnG3nK0AQHzYzQi/GKBjoe5zTDEdWW1d5mYjjbLXqzU+jiyzDA4bB10k3TuO2T2vsfOO++8avvtt79hOutt995770tGZL1e/rt7GIDDB6Pb3bvqK47J2Dakt1jAsIbRMDD1SXuuaP8Rl5UbbNpwndBVEJDyHikrZ5YbBu+57bbbXiyi+jVD3yn6+EH57Tjle6Ssh+Y5thbr4uwQVAXSoL6lj62GKQbfNHiH4H1ST8RyBjubZHoHnJHBFwcYSohVB5YaPVVDnSEKxzTo/I0BbDx4YvBhk7pJ4JiunlXGamsQeHzoVaV2cuKvDk+EZezCCDojWtifa5RqdNNBepDGAoP0lNUVs6MZxs4ArYzCTdsBx4nDzquHp6M+OmLrxdPBbxZmv+VlLnOZq2y33XY3z3+PJtrmWbPfY1MXGI+EY+0dAwC6MkZcLGBMu1/Qcp+B6ohSRff1gWf8Tz8XmEHYaNtc9wgeFXxCpJYDUi4OPMdmQDs0ZWaAe2zq4UYpszZ8QqkHBa4XSEENbXLhUvukSd1cYoCghy9obIAR1oZPlypmmQWM/Eb9DRrcGnND6+n/JLqGps/34ldXAwX8sv0+JNhbS0sVhYmznjFzi4TiPpHyYY0mMvewCAxONJeGcENmb/SJ0w+AxtxQbDED1qPSMUkuvRU9M9nBZnPP7rrrrofnv170T6cnydCHWdQNdqzo0qCbrix1SfJI7y0SULOkR/XRHoJQPn2tJ9YGMzrRHpMyuH6/1LbB8KcE/x5mPCK/2RGI1Ta2GLDsY2Bv0Wf+L3hy+946Yaq/sKL/sdRvHTKpfuecjri3jgy+UDDDONZRzaKYVegcxrIzGGOmYWiMSY3k8l9tBucscmxX15V9Q7RSszbGILI+IWjTyuoZvFQbAI8vgwox1v3FNLhZysGM0jXDmsGPmn4AeKehQBmCE14xzLttyvfglPWYPfbY42KZyW5qBj/ggAOunBncppZj2wzOEm9dmJMHf//HlaqWbFJqmvutndqCAumAqmGFQ3q3nfl/FnjzkDIYBzkkDTM4/4bbo1MeOwnF0kPbiKN8nuGVqA0NDmcqdbnf8vSwrnr5SUNQTisvfRSXkcEXCGYagdGMwYtoTkx+YKlLR+uFKQang98reGRXl8Po33fpmg5e6oxCXGdco3djdsx8z64yuyU6aRP1zDho//ewvs5yVmDmGwYRkoMrZkAT19cHW5Wa77vO1dNaGZzusssuu+wepr7B5ptvfuvo4PtFB7+W+xtvvLG95bzK1AEvMsxMBcJEpCPfMsj0sBDlmwE2FQ42Qlb5ONVAva4PGFzvmketJFhmE7mHu6rQTIyH7Cv82A9r7cxjkaca+pDWhtpMmfrCrKNM1D5qA9QXqA0cjaQxPZiu9dII5wBmKvMTpVrF6aIvK1XEM7P1sK6KHxi8a1b0ICs6y/kgojPs9Fb0Uk8LmRbRB6u2zj5Y0aXHEMYKy6+7h3WlfVZh5huDSjBtRf/Q8Ofw7NQ7GMYzRFWMokx/CmMbkPqVgeXLlzu8UJn+mGeI6MR/77Cgi0KKPr6scUJR3z0sQvkw6m9KDTp5SKnpfWDq/1ng3tq3Wakeit9Gd2tEdPQRpS71oR/VVYnE8y8u1bai76wW0ddRJuvwQxrsPL9qtMF9ZO7FgJkKpYNZxjmkVHHVerDllvXC0Chdjcn2xuALgjYoiJ4KzdTWYF/e1cB6x5S6NozxMRadlLRAXEezspu50XTjHhai4We+obPyKiNd6MTKSmLpYXh26p0dSu3Iz8+AtjL3nxx8ie2T+f2o4AkR03nwUUFOyJVIru5eXur3+RagzaoGCAMo42MPC1G+GZAeGwA1x4qFtmDZXh9QyQx6L+vqmWyPy1U7WVXwnjVuYrh1fPThXV0R0U7qUhnfWOpg1sM6yjTUIZQn/cL7JMYRzgXYvNTzyihAZmGzLKYkvtkcQjdb6wXg3gzqLIIXQsYU1mTea0S/Q0r1fiOWmfWJ7KuC/NTRNhpofDRbwGKBpTkdlHg+eJnRi3sYyjlVJlb0fws64G9ZGJpjxw2W1NBTopagRX2x2eLwXIVPsqHF8+wQRFK09WcrE9QB5V8rvQWElaWmZ7UCiJ67oRURVnTLhJYStfNhpapsZnY2BO1nmdPgpG1ET8X8+ogZfz6wrNTvQ3kxkHt/8LwbYZFBZ9ew9E0zGpGLN5Q1VbuDuJSuszMO9xti2F4U6+pM/ZP2++CuRc8slcmJ4OjVvuilLqGZ2dBvKosH/11qGlQDuiP6/cOf1A4wVaZevJzUKKvq6Rel+p8r3+CLjumHlYFblaZ2hCaemwWlYSY1mLA4f1gaCwUz7cLAJr3XlXrE1KPLhg1t2py/uvyKT/6tRl+za44uuXqfFOK7jyi1b6CJ7fOBWRH9Z41ePbCOsLhAnNa4y0vtIHSvo/zu6k6w3hiyPvBfQ9sFBRR4T+h9g68JnthVxsBYJ3X17O1jStXZWLLpcOijSh3Vdaqj65cXBgambXD/Uk8voatKD/3k4c+hLIONISjqi91xdpEZwHRq+6vN/ganD7XyWQ5TVh5unH1OLHUwM2OjOfwQdenDVgoWDGbKx0j20VLrmGhMVLf2vj7YtNTTaj6YPOsHxGjlsD5NHbHzziD/kEb7vrYySK0W/dXZBoAU866GZv83lGqHUG8jnJvQ1QD2ZlziJdRhN+hlNMUMwgWJxUV0Jc7aL321Sd0iyKvLt4h+mB/tkICVQe/Yq22ppE/Pc6Va8i85m945BD1x6I3TdL1RmdtOqF0n1XFHuCHlEKGVr7YBj5Vc0AT2B4H90b0YG7TX3q4z20kNmPbOo+13591FBVpZqiun2YwV+twGDSltebFMJt+Wq5RbO1kWXBakNtnPb3lQm1h6M9hrs4PLhk8KtcxqpYK6hdaWjGrUOHCGuh/h3IHBWvrw4LHoNK4oLj0Tz60jwsZwf66GH/7bknrmlVhcvdNErgYMI7bv2nlmBEdbPuL4gT62q0s1f8n1JV01VBHjzBqrZ9XFhCGNrg5sjw59j6CgBpwy/jypAQl+VGp+zT6fabSObxaUX3oqIxL6/rnPYIh+dqkSC/rtpc7mROMvlwaLXb4p2LXUfPyuVPGZ2qEcBhv5QR+W/FBderUj9PHoXB1X1PeLXF86fHBoI9hgOL/uh6W6yv6pVPVkgw5UIywCtE49/HxK8LuT6mF093Tsb89VV9Rpd8Opt9dyQ9wtzP0VmHc5fAifK16X2Y+4bnOKjmPn2Te7uqWS3m0PtvRYmtGPznuss5ahjh86zmIzgO83NNveNVfbIFcmL0JCf3pSY8m/P3hqV2dvu6DsfSbOPqWrMciIs9QANL9u2yKV1YkgZrGvljoAEFVPLVP2hoUon3oacPr3DJCO1O1H89+OuZ48qfHaGAeFXvr6pEotL07exZa7fvBxadfTc8/hEQat73RTIamGuptKnzHTxh2edKQw6Rk8VrY8jHBeQBpm4zTU8kkNVk//FNReWB6HAdj7u85g/n6nA4jBs1lw07kas8y5ZKJ2iOLKWQIjEN2J40472WrjjTfecaONNrrk8uXLd7jIRS6y3bJlyy651VZb7bbNNtts6f6kelStq5MuOAydNKgO+pBO7be8WxaTD7O75UA0x56VjSbSOrMLLWCE54bOTqzt46CVelopUR3sFuw9uIb0z2Xoz07r6tZeIjiafzi3Ufu2SWS82LS9gy1si+Xso29YXSDSTzO4OmCQVQ8s5yzvpALqCNHcas25XsgRGgyNNTRYGvTxAijm+qw0rAio/wi+DzO3zr7W++5P4f+3dy/AmhTVHcB77iLC3c2yBhZQF3YvPsDoSpnSKJa6gEpekkppLOOrQFETX4SKEo1GBY2SxKI0vlIqiQjxDRrK4Ks0IBQqiRqVSolGixXEoAZ8RTSJ0ZzfnOm9w8e9y33iZe1/1ak533zz6Jnp033O6dOnpR7eOai3bOyPB/0kyDpe77A/zj8xiJf363HMs4OeMBz/grivoRs937vdq153NTFUUiSPu3LITirvnAT+355KIVcmCQfNB5e0n9rKJjcn/n+7HB4z0eR/YitC7GneYZfzrI9xbsnx5Ls7t6Sav+v+txKMjlDPv9Glr+Ga4Tmkv7Zc00/W5aIJ/2h/vIvHxDO8GR/04r2GhJbdqL4MJKOrZ6UZcKZ61p0lI9ka1gJ8KB+PMImtDrox6Mx1uQaVVS4u8H/9wJOoghi0Mc67MsiiCJIy8qx/L7aivtjY3w8y3ZT3WTrlp8SxvM7u+9Tp6enj4r8vBJ07uubE3VYW9dm7XAXVSiHW1dKTXxO0cyp79M/F/zdM5frnH44yeQ5ONIE+eMNLJmTgxXI/MY4R5XdakHhvUWYCUeCGMjtXe9UF3POhkt51vgSNlSmbX4oyet4jpjI/mhVTHhT7zvf9gh4VAv4GE4pC43rhMO1zV3nrdYN+e3huZoyZep6PWt4EfC2hCtNUJqCnYpsSKpE9/rCpXDpXgr4+d9kkfPy9Mrc4L7ShM55oqjaVm4qu17BowH7r168/ONTzIw899NCZ7du3HzEzM3PUEUcc8Stbt269Y6jr26NibVORamVaTYwqqmejskov5bdtjZvmIa/LJvOQGwnAa330jPUadfleNM4LzrNeoeJLbdX/qNvVwqg8yPfYNvAaLg2W94yntTBTmGZMqf3iW2mwLS65Ye9cd26u69bREtemklPPxeILpmlYCxgEu5K44/+MrVlgHE7XB1GZ2Vo8x3oumLzMTXrc4RgZP77dZYyzWG35sh8XJHCCI+dpUYF+z71i+8yNGzceF/u/FP9b82vVBdwzjIiH/Lqgy7q0tzkHOaEI+eVBVs0URMIh9a0uI7skjRTYY2iIQ83z9U62Yb+gF0NGris01Pl60Y/0BSi3qoB7jmu7fCZCfkXQdV0OX1ox1XeidcmK6/tbk65P2ECwoxef77rm9DvXeHd91s+V1oOvHVRhGj6YgAy22RuCFzDBvvpIlwEwx3Y55xsmL9NjdB3SWeecC/wQCy5a7qQukwW4x3Pj3ifG7w/FlmlQh5QEzqx65Z+A8WH35gnnLf9B0A1BhpcsHOA9zARdNhynQfj7gdcwvWzgTcN98sB7TsKPF2WmZ8OL8LtVMHwLtDXesXf+nS57W4LomcxA6yfQdOkv+NDAP9k3UDcI+W7g23qmT5aMUjNxyFApr33DWsGoIvRrXnXZ4lNNOZNUeKq537vUy/lQr1VyvFV8NO/qtiAedTHcB4Yw3ztU9QP3339/XvQjN23atCV68A2xnzd3ZjifOrC6Rvgs3NBEiOoJt+293V0G6rBhQRTYOJ56HPM9rtRj3vH1OcSJ12vdGujq9wiS8JB/Ac/z7V0L5GGa+Da85Lzhpryap7C7Rtbz+JP5cZ+SATBUdN9bDP6t9d0aFopRRagfVuCJcVuqqGgzvZt84irFYlXo1wRRCznVBLd8Pnjjq0JHBbY8PwR/R8neTYir4Rb3Fu99U/1w5fDQoC+WXBhA7/rZkmPUbGxluqjLJBj2/XNJoWVq8IIb7jIjT3mN/+q1nS/JgzBRvKAe6ZQcI5bbOc51v60lx4kvKhn5VlYByuX5Lozrs60/E3TZVPpDqOW+gXFwQUhXBIlsm6wDPSZ++2YcaQKWjPN7Pqp9E+q1jokPae52rzJ3mQqY6mahOUvQ7Eqqt0Cwx12rRrKJcDqtyyyr9p8VvJlH9guUqKrtzrKCAj6utCVnULnHp0qq6D+N/6+JLSefZ/3vMut9dhx1XRw7Xk/1roE3BfYVA+/5TnKtkvHuRw/7LxjO+UnJVFZ6PPu/U3JG12TZVgK82p5jZ5ez9njE/bayqiEzvJ77y/iS00An68Bc6E23klNGzRL7cclnWnBlaFgb0OP46Bxr1HMzqCz1WofUdjlhFgC9CUG4Y0l1XYwyj72ZTbKFCMBwITzHD6F2jJDH1YJ7E4IaX03V7MMqu1zA4LBhvzJX3jnbBp6nWE9cwYlWMd7PVGGmAE2hBsfwZ4gJ7wVqkRrRQkBl9nxUbvcQQ9/fL+5lDjunKZODc8y3XZBjLL654/T23pX3cUzJOPfdtgoNaxRD5ZDN5KNRMV4XdM/4yJcFWQZWUvte2BcBs6w4cx5T0kHFA6vnE954YdDpXc6lxhs/Xq2eQaUUI0591juLLWdKqPTnlszIAq8u6SSjghrDp9JS3fXUeMJMw5FAwzU1ZvbTSNjceNNkqfh6vZfHO9Ngnh909lRGia3GmL9GyjRdJo+IMkk6qNLm+5t/wPzx3HPCdx+hzgNn1jCfzgl6zuzfDbdJDMKN2M68sFT0XvXbd999/d6kYk5UhluC6YlUPIJVVXR2KfsVf0lJjyx1lsq8Wio6DzA1nH2tcXFv3mVqOR4R5OtLqtzGvNmbeA0QgXbM0WVWRX9KyamV+DNLPgez4/1Do2X/Z6enp2diewOVOUiYb79s8wrDdzJywasN7q3sBP/G4XdNEnFL0AA7/k9K5mJj2y90bnjDWsVIwKmVhrhk1dw/KuTjgx4ZfB9vvUgBpxI+oaS6SmiMpVaw6fSCajtnjt+rBR5wQ3Psb6i9EzAN6n7lrD0Ys6Xy+5WbJjek4lfYX9Uaz1MDZR4YDeM9Q6jXhZAfFZrP/aI372hAGzZULX7FoHGiRTB1wHtG+5RMRMGWdsxCQEvxfrbFMzBZCLkGpOG2jpGQV/KRzwrZNrPIpAVq9FllaWOfR5dUITm8VKI3lFRn8ZIknl5ysoae44/LrC27EjAsJoHDH5Yc7nllySygQBX/04HnbHzpwGuYXj7wvOV4Kr2e8GUlEx1sHngCz7xwzG/ts88+JmqcEu/t+EMOOeTgEOrfDOF+2KZNm9YLJNm4caGytmBsK/k+PYsG81UltQoCPicmGmqmFM2KYB9b8nzfqWFPw4SA64Gpaz8MXiWm9vk9djItFKLanCtopHq1P1FyeSM89VIPenlJ7/pSGpH50I8MlBy6Iuye45slG5GqzqrxNwy/NQKGtqi9HGfvKWlGGCoi0I6R6kgGFPv/sqQmYP/b9t57bwEm7w0BP3XLli3UdXb3joMOOugAfgwq+oSALRd1JMIogHdYvxOtaSGoJojG9UUls8saJmzYEzEScCrai0tmQiVwTx9oKW5gSQKkTqY66rX/qMsEEXptvekJJVVhPgA284rZ4yV7WpFnvPvwuBGvPHpoIMBUeaC2116MZ12ZQC9ejwfOw2pUU5MFmfBeHx8q+v03b958h+jBH0hFp65T0asvYwWFvL5DjY53+LySjjFlXQiYRxJYmI8gaeRzulwyevK4hj0YejuVhrBT/U4uqVbzHi8W4rv16NRg3l2qJfVZg4LXEKyEiv7ckgJIwJWbcw84yB4x8AS6+gaOKenxB3Yn2xX0+hoFMFxUGwHQCNgHBMxQI+G1iMKxoa7fLgTaVMvjqO4hQGbZ8XH06vMyhIhG9VclnWL8Bd4bk2deTNzL+3a+kQDP8+IuM63yIUjrNLPCjVDDWsPExyWIVZ2Fbw2/tfiLxYklz/1USbvPNanonFT2I8K+KOg5Rzix5HXeVdIMMH+Z+q83tv/a4bjvDb/hGyWDOQgfL7r9MyWz0QoYoYbzD3yuzDoFHcNu52xzrghA59j/+RBynvofhHALNqEFyYTymW4Yi16MAM3zfJ8t2TAxFb5d5rG75xDW+nw0J15y5sjphDu0jL/pMqXy5DkNezCofpwvotPYqKeWjODSeywW1HUOO8LCRsUTEtd6VZcTYZYb9WU4jL2sd9KDu/7jh//M/tLbQt3Co8rswgzUbaou6M3rWPDWksNj1XPOZCHQwIZ96FBmPare2jNYc/vpA/+0kmu59Scs4/k0rIYhfQeBKG8qOYR3s0CF+h4n7uU5OR6ZIoRchKGEFvwHZv6JfJs8p+EXCFRTKrYeimBQD4VJLhldzq2mvloiqI/bXkYFI3SGiEyo0auxoetQF0/x9oHXwFQBJbw1ok5PX4edNBCVV6A6rAaG0mohjy6zDZ7IQPOnPQN7VgARvtd46nNN9MorDtcf7muYU4NjvW9lpIHwS/ROQKjvu9Jql61h7YIDjBda8IiKT02k7vEqLxldZv4UVEOdrUkYJg+bFxMVUuX9bkn1k/NM+ajohBhPHQf8DwfePr/Z/zzuTAe9Iy+6/Q8qmZPc8Rq3x5ZU/f+iZI/qGBFzAkyovIJEmBr2f7fLVMt94AleeXnVFxHnf4uo74wjr9Lg9JPoon++Lld7vRRf0ha/2fmLee8Nex72LjkefkHJWVQi1Qy1LDggovYsMKpUxto/EHRel1M3l1PRDB29taQ6bVjvnJJON57lvytpb7p+bxIM/EtKjskDFdYzelYONuqwnnxHySEkw1EEmWrMqy6Y5i0lZ5uJDT+7pCORynx2l5lZ3cOMvbNC8G7Ho14zqEwmWlgIxu+n8oMw7xLu6rWfSrw+6B/iOOaLMfsPlWHiyRirEErbcBsHYeKh5lHnKKMOU3sFhdivEdgtagWdpGXA3GzeYM5BoErX8XvJD2R/VfGlMer5LueC67GBwPKeg2EwAl0x5o0IVImggdTxe+bAzPAc8sBJeuh+spc+gOAFHR7Cfd+g6clUSYvF6J0Jsjkq7vFrQesF2cT2d4P2i3sfHfQ7QWLUl/t+G35BoJbwyFJV2eXvK6n6cSYZhvlO0J+rTCr47tTRUSVdicp3Ysly6MVpFuLELynDWlpRlquDNgX9LATLbyu3XDecI0BE3DqeAPPEU9cNuXFk2W946qSSqjhn4zEDT6vRsDnGvPit+BAw2Vu38Kb7He/h7sG/a/369VfE/e9FuHf3bm4Jo/cmwu7SdZkh9/ANGzb09zMOH7+/io9jJMdciXfcsKdiVDkw55acP62S81xfVtJ7zb77WMm10Ppzhp6ynnszVNVyBUCVNmvslC4nf1xcMnzTOO/Hg86NsuwbFf/DQRfGPTmhpEeW/IGKbcTg4yVDUnnTL+4y4b+xcfuptob4XJdaTkuxn5rPicXGfWOXyxpdEtd/X9DmEOKPhDBfGttDYvvCUM3fGPzMcm3x+n67HIpjdpwR99vifkGfDl4q6PPiWa+I5z5q0CYmL9PQMCfYmYjkqujmEG+OCtWv6RXbg6KnkgKKjd2ngkKrAKo0gawgODUIhYe/TgS5S5TpThqSqPCHxDF3HmzVzVHpa7ZVHv2ZgTdkx94mFFTgnh+Ar2PPVPqqonsPdT64lWAOH9Tye8f97nO7BP6ooP2WIuCj9+j+Gh9RdMp3v9jeN+5JK6GqS5NsgYq9ggTeTDXhblgqONt4ik8o6Xyr6qx48NOi8j1c5VLZOZZQqKo9LQUTFfWUkvcDfgE96tjDbeVQKjeV+StRhjtHw/OzuLf84AfGvq/F/9R1DREthDrLln77wNNKziiprhsWpKG4Ls3gN0oGm5xf0t7H/0ucIx+5+32DkEev/X3Tb0OYjwy+V5nj3g9ZiIBrkMbk2QcBF9WmHJ+O3/wD1wddG//jr/XfVK5osssJ19CwVAha+feSIZ8CPwwVGdeWqfVFDlA5VeaxcKOo+KPLLAwTlZWq/E8lc8wJpmE7KwPHnwgySRDuEXRVCNXFBDzu+6Wgf4vyUJ8vjbJdFaQXf09c+6rY3jvIemtXTeVa4a5n/wldpk7eGb8FsjBPvlIybbJG4aogyxLLWnN1nEtNPjzucWUI9s649/bgPxHb/1g363Qr88H7qsdUqkIexDHoud8W+4zfG+KTAprW8umgq4P6deCbcDcsF8aQRb31avtUOq+6DRs2bJzKZPsbh97qgBDwO4Rw7RW0NWhLCHi3FCGfD50aPQvjwN0gEIdEOQ5UjhC2rVGOQzU28dvUTmmHHXPAVC4EgeeBtoYZO11GUsKyb5ceawLMWedeHHiG0oAdX9f3Wh/XnB4EU2acXwqyeIQloCTSsNbbbEkn4L9BoJ1roQrneRYLFljEwP/MESMC9v/yVC4LrLzmpjI36vppDQ0rh9prBJ0YvOWCXhKV8TiqcQjzB0OwHjw9Pf3ToCtDyPcZBG2XKokGIanq6JIxXIP6fUGU4fVxn21RhhuCriPkcfsrY3tj7L9rCNHHgn4Q939AbM+JfZZpMvuN2SFo5VlBT4/r/FfsPzNIdNuHS86+u8k963NUQR0auDl74/GzVhqde4r3Fr//OniLFwjA6RuskuP0r43y8xfIzbZ9KlMlL/u9NTTMi1HlfeaQ+um1se8R0XP+OCrjB0OoHmwoJ/77YvzeR8Wvlb3SZIWfD5PHTQrJQGKtec3fFPcyjPTDuPf1ce+7RVm+Yo2uKJ+VUy2o+KPY7ojf7xjKbgUYQ383xjVMrzw5zrH/NVM5zdKIwUsny+O+VbgnBXzy+ebC6Bonxzk/Cv71se3fW/CnB22Lw/42jjszrmuJoSrg/fJT8123oWHZqJV7KpctpqKbH03F5GS6a9D6oF8NYpOaL02VR2ArMb+eSM+En3PNtIVAWaYyFfQBcZ9Ncb8uBPvgENKDBj9An2plaJQsq2uJZeozNVrZmRtGAbZ1uVQydX1bbKnAyiXPevXaLwhVALtU+V2PaWPrPlT82w/3YmJI4MhZdtBeuT7cYVEma8T1Jk/wUmxJC8VT3id4bGhYdRDwCZLvjTPr3KiYDwjhtsTtR6NiWrTw6tj/hfifM0ygyNe6XIHF+PTXu5yrvOReSaVXBj2o4JLq6GP742vAySDku7ZoaCAmNYKb7J+rXHX/XDT8D0JH318ynbT0S9eUDNaRTuqa2Pe8Lp16X+1yjNscgH8N/o2T5ajP2NBwq2FCEJ5Ycqjq4iDBItRiywwbv+3X1Qo6Moit67c837zghqqOnbj0olEFFxFmgl0FnYCPhXpMk0JEQOt2TItFl+B9Fz0nh/m7Sz7rs6fSJMCLlzc0Zzjs7JIJK6SYslhFXw7lbmj4uWEkHAJKOInutS7VXymNBMRswAfdHx//3z/oQVO54ikhV/l56OmeuijSNBe/1nRT5amSX8tZ99f/DGmZXkrdp708ZCqXHpoJevCwZQIIIuJHYAqY2urYJTUsDVWRoScAAAP6SURBVA0rjtrbjGnUS1qw8ElBjw26Uwj9R2P7yTjGsNQ7u1zeV1CHGV/i383iOn3gzfh6xsCbxbXrfnVb+Xrfyrs31F568ph67lKo5Piz6bRmbgmZvahkskmRbu8tOdXWyieeyfNJGPHSoMvj/o+JMh0fWsY5sX208oyu29CwNjGPcCOrkZ4R9GfBc8D1EyXiOCufCtbwm4pOQPCE+p0DLwBFJpiqwv7cMQij4TNlYm4IgDGH3m/BN+xs/MPKMLkljjHHnOAzYU6Nd/GM6enpr4WQn1oboDkakYaGtY1BwG8fdI+gu69Ldf34oEdNpZdab22BBIEkZodJqSTunADhDys58wtvvvPPFSMB5A2XCumYIKbGw4N+3f6SGWDY0qa27oh9jw4SRcfRZkjOexDA8tAQ9LvxF3hPDQ23SdSefD7P9Qg8zjXBxLMG3rxzGWXwJ5SMff9AyZlgxqgvLDl91VRO+wWGmCgidlzACBv47OE4DcWrh+PYuUJs8XpaOdjwQnE1OI5Xhh0Dz2SQz0ziitd1ObHlvKA3x3PcKejsoLfH/pk4Tgis8vbzyz1jpardjJ2BqKHhNo0q2Lcg4FeUVG2lTSKc+OeXnJeNl3FFRhY8YSSIeOf1XvuSyf3rJBRkkYfvD/zRQV8eeBqBABa8Oe5vGXgRbacN/Lklh7RMQrm0ZL4z6vbOKLuY+Lq+25HD8f7TS39z+K1MNxPwsQnTPOQNezQmBNxkEon+9bqSMMjOarqkHh1vjFh2FceY5bUtSGipRRUOLjkppar75ndrKPB6Zf85Rlaap5bMAqPnNiNOj69RIOicfe6BJ8TK8uySmoPQUQs7/H4I6YFBzwxyH88hqeQfBLmf4cKTy9Jyyzc0NAzYu6S9zu7dVjL18wtKCqLppK8YeHHkEj1QnzUUeOr6SfgQSur6I2NrP6HX87oWxxjjWHooqZ56TPbG4x56osFqaGhYBgidnp7zbUdJtVgqqV59HoiKLltqVdH7udolVfSLBl4v/taB5wdgb/9fmV1HnNDr2XuMhXkuAW+C3tAwByZt8vn4CeiVqcVbS9rqbHbqN0F9Wcke3Pj5K4dj2fB6ag6wJw28HlzeObze+5iSyR6o9tKi3qWket9DOeu2er9rbz7+v6GhoaGhoaGhoeEXHGMVf2wHL4SHsWq9G5OgoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaFhDeL/AbL/6dpoj+OHAAAAAElFTkSuQmCC",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var Rn="ai",Dn="ai-wp-admin",Re="ai/ai",Nn="https://wordpress.org/plugins/ai/",Ne=Object.values(Me()),Tn=Ne.some(e=>e.type==="ai_provider"),Ct=[];for(let e of Ne)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Ct.push(e.authentication.settingName);function At(){let[e,t]=(0,z.useState)(!1),[n,r]=(0,z.useState)(!1),o=(0,z.useRef)(null);(0,z.useEffect)(()=>{n&&o.current?.focus()},[n]);let a=(0,z.useRef)(Ne.some(P=>P.type==="ai_provider"&&P.authentication.method==="api_key"&&P.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:d,canManagePlugins:f,hasConnectedProvider:l}=(0,ie.useSelect)(P=>{let h=P(De.store),R=!!h.canUser("create",{kind:"root",name:"plugin"}),Z=h.getEntityRecord("root","site"),v=a||Ct.some(B=>!!Z?.[B]),T=h.getEntityRecord("root","plugin",Re);return h.hasFinishedResolution("getEntityRecord",["root","plugin",Re])?T?{pluginStatus:T.status==="active"?"active":"inactive",canInstallPlugins:R,canManagePlugins:!0,hasConnectedProvider:v}:{pluginStatus:"not-installed",canInstallPlugins:R,canManagePlugins:R,hasConnectedProvider:v}:{pluginStatus:"checking",canInstallPlugins:R,canManagePlugins:void 0,hasConnectedProvider:v}},[]),{saveEntityRecord:u}=(0,ie.useDispatch)(De.store),{createSuccessNotice:g,createErrorNotice:w}=(0,ie.useDispatch)(Yt.store),N=async()=>{t(!0);try{await u("root","plugin",{slug:Rn,status:"active"},{throwOnError:!0}),r(!0),g((0,m.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{w((0,m.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},p=async()=>{t(!0);try{await u("root","plugin",{plugin:Re,status:"active"},{throwOnError:!0}),r(!0),g((0,m.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{w((0,m.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!Tn||i==="checking"||i==="active"&&a&&!n||i==="not-installed"&&d===!1||i==="inactive"&&f===!1)return null;let b=i==="active"&&!l,O=i==="active"&&l&&(!a||n),M=i==="not-installed"||i==="inactive",K=()=>O?(0,m.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):b?(0,m.__)("The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,m.__)("The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),y=()=>i==="not-installed"?{label:e?(0,m.__)("Installing\u2026"):(0,m.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:N}:{label:e?(0,m.__)("Activating\u2026"):(0,m.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:p};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,z.createInterpolateElement)(K(),{strong:React.createElement("strong",null),a:React.createElement(ae.ExternalLink,{href:Nn})})),M?React.createElement(ae.Button,{variant:"primary",size:"compact",isBusy:e,disabled:y().disabled,accessibleWhenDisabled:!0,onClick:y().onClick},y().label):React.createElement(ae.Button,{ref:o,variant:"secondary",size:"compact",href:(0,Xt.addQueryArgs)("options-general.php",{page:Dn})},(0,m.__)("Control features in the AI plugin"))),React.createElement(Et,null))}var{store:Hn}=W(Bn);St();function jn(){let{connectors:e,canInstallPlugins:t}=(0,Zt.useSelect)(o=>({connectors:W(o(Hn)).getConnectors(),canInstallPlugins:o(kt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),r=e.filter(o=>o.render).length===0;return React.createElement(Le,{title:(0,A.__)("Connectors"),headingLevel:1,subTitle:(0,A.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${r?" connectors-page--empty":""}`},r?React.createElement(G.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(G.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(G.__experimentalHeading,{level:2,size:15,weight:600},(0,A.__)("No connectors yet")),React.createElement(G.__experimentalText,{size:12},(0,A.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(G.Button,{variant:"secondary",href:"plugin-install.php"},(0,A.__)("Learn more"))):React.createElement(G.__experimentalVStack,{spacing:3},React.createElement(At,null),e.map(o=>o.render?React.createElement(o.render,{key:o.slug,slug:o.slug,name:o.name,description:o.description,type:o.type,logo:o.logo,authentication:o.authentication,plugin:o.plugin}):null)),t&&React.createElement("p",null,(0,It.createInterpolateElement)((0,A.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function qn(){return React.createElement(jn,null)}var Vn=qn;export{Vn as stage}; diff --git a/src/wp-includes/build/routes/font-list/content.js b/src/wp-includes/build/routes/font-list/content.js index ce44c77a0b26b..18617c650e946 100644 --- a/src/wp-includes/build/routes/font-list/content.js +++ b/src/wp-includes/build/routes/font-list/content.js @@ -535,20 +535,21 @@ function resolveStyle(style, state) { // node_modules/@base-ui/react/esm/merge-props/mergeProps.js var EMPTY_PROPS = {}; function mergeProps(a2, b2, c2, d2, e2) { - let merged = { - ...resolvePropsGetter(a2, EMPTY_PROPS) - }; + if (!c2 && !d2 && !e2 && !a2) { + return createInitialMergedProps(b2); + } + let merged = createInitialMergedProps(a2); if (b2) { - merged = mergeOne(merged, b2); + merged = mergeInto(merged, b2); } if (c2) { - merged = mergeOne(merged, c2); + merged = mergeInto(merged, c2); } if (d2) { - merged = mergeOne(merged, d2); + merged = mergeInto(merged, d2); } if (e2) { - merged = mergeOne(merged, e2); + merged = mergeInto(merged, e2); } return merged; } @@ -557,22 +558,40 @@ function mergePropsN(props) { return EMPTY_PROPS; } if (props.length === 1) { - return resolvePropsGetter(props[0], EMPTY_PROPS); + return createInitialMergedProps(props[0]); } - let merged = { - ...resolvePropsGetter(props[0], EMPTY_PROPS) - }; + let merged = createInitialMergedProps(props[0]); for (let i2 = 1; i2 < props.length; i2 += 1) { - merged = mergeOne(merged, props[i2]); + merged = mergeInto(merged, props[i2]); } return merged; } -function mergeOne(merged, inputProps) { +function createInitialMergedProps(inputProps) { if (isPropsGetter(inputProps)) { - return inputProps(merged); + return { + ...resolvePropsGetter(inputProps, EMPTY_PROPS) + }; + } + return copyInitialProps(inputProps); +} +function mergeInto(merged, inputProps) { + if (isPropsGetter(inputProps)) { + return resolvePropsGetter(inputProps, merged); } return mutablyMergeInto(merged, inputProps); } +function copyInitialProps(inputProps) { + const copiedProps = { + ...inputProps + }; + for (const propName in copiedProps) { + const propValue = copiedProps[propName]; + if (isEventHandler(propName, propValue)) { + copiedProps[propName] = wrapEventHandler(propValue); + } + } + return copiedProps; +} function mutablyMergeInto(mergedProps, externalProps) { if (!externalProps) { return mergedProps; @@ -619,7 +638,7 @@ function mergeEventHandlers(ourHandler, theirHandler) { return ourHandler; } if (!ourHandler) { - return theirHandler; + return wrapEventHandler(theirHandler); } return (event) => { if (isSyntheticEvent(event)) { @@ -636,6 +655,17 @@ function mergeEventHandlers(ourHandler, theirHandler) { return result; }; } +function wrapEventHandler(handler) { + if (!handler) { + return handler; + } + return (event) => { + if (isSyntheticEvent(event)) { + makeEventPreventable(event); + } + return handler(event); + }; +} function makeEventPreventable(event) { event.preventBaseUIHandler = () => { event.baseUIHandlerPrevented = true; @@ -692,7 +722,8 @@ function useRenderElementProps(componentProps, params = {}) { const className = enabled ? resolveClassName(classNameProp, state) : void 0; const style = enabled ? resolveStyle(styleProp, state) : void 0; const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT; - const outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; + const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; + const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; if (typeof document !== "undefined") { if (!enabled) { useMergedRefs(null, null); @@ -713,7 +744,15 @@ function useRenderElementProps(componentProps, params = {}) { } return outProps; } +function resolveRenderFunctionProps(props) { + if (Array.isArray(props)) { + return mergePropsN(props); + } + return mergeProps(void 0, props); +} var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); +var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; +var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; function evaluateRenderProp(element, render, props, state) { if (render) { if (typeof render === "function") { @@ -748,8 +787,10 @@ function warnIfRenderPropLooksLikeComponent(renderFn) { if (functionName.length === 0) { return; } - const firstCharacterCode = functionName.charCodeAt(0); - if (firstCharacterCode < 65 || firstCharacterCode > 90) { + if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { + return; + } + if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { return; } warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); @@ -1830,7 +1871,7 @@ var VALID_ELEMENT_STATES = { { value: ":visited", label: (0, import_i18n.__)("Visited") }, { value: ":hover", label: (0, import_i18n.__)("Hover") }, { value: ":focus", label: (0, import_i18n.__)("Focus") }, - { value: ":focus-visible", label: (0, import_i18n.__)("Focus Visible") }, + { value: ":focus-visible", label: (0, import_i18n.__)("Focus-visible") }, { value: ":active", label: (0, import_i18n.__)("Active") } ], button: [ @@ -1839,7 +1880,7 @@ var VALID_ELEMENT_STATES = { { value: ":visited", label: (0, import_i18n.__)("Visited") }, { value: ":hover", label: (0, import_i18n.__)("Hover") }, { value: ":focus", label: (0, import_i18n.__)("Focus") }, - { value: ":focus-visible", label: (0, import_i18n.__)("Focus Visible") }, + { value: ":focus-visible", label: (0, import_i18n.__)("Focus-visible") }, { value: ":active", label: (0, import_i18n.__)("Active") } ] }; @@ -1847,7 +1888,7 @@ var VALID_BLOCK_STATES = { "core/button": [ { value: ":hover", label: (0, import_i18n.__)("Hover") }, { value: ":focus", label: (0, import_i18n.__)("Focus") }, - { value: ":focus-visible", label: (0, import_i18n.__)("Focus Visible") }, + { value: ":focus-visible", label: (0, import_i18n.__)("Focus-visible") }, { value: ":active", label: (0, import_i18n.__)("Active") } ] }; @@ -1935,7 +1976,7 @@ function getFontFamilies(themeJson) { // packages/global-styles-ui/build-module/hooks.mjs k([a11y_default]); -function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true) { +function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true, state) { const { user, base, merged, onChange } = (0, import_element6.useContext)(GlobalStylesContext); let sourceValue = merged; if (readFrom === "base") { @@ -1943,21 +1984,42 @@ function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = tru } else if (readFrom === "user") { sourceValue = user; } - const styleValue = (0, import_element6.useMemo)( - () => getStyle(sourceValue, path, blockName, shouldDecodeEncode), - [sourceValue, path, blockName, shouldDecodeEncode] - ); + const styleValue = (0, import_element6.useMemo)(() => { + const rawValue = getStyle( + sourceValue, + path, + blockName, + shouldDecodeEncode + ); + if (state) { + return rawValue?.[state] ?? {}; + } + return rawValue; + }, [sourceValue, path, blockName, shouldDecodeEncode, state]); const setStyleValue = (0, import_element6.useCallback)( (newValue) => { + let valueToSet = newValue; + if (state) { + const fullCurrentValue = getStyle( + user, + path, + blockName, + false + ); + valueToSet = { + ...fullCurrentValue, + [state]: newValue + }; + } const newGlobalStyles = setStyle( user, path, - newValue, + valueToSet, blockName ); onChange(newGlobalStyles); }, - [user, onChange, path, blockName] + [user, onChange, path, blockName, state] ); return [styleValue, setStyleValue]; } @@ -4418,7 +4480,7 @@ function FontCollection({ slug }) { }) ); } - } catch (error) { + } catch { setNotice({ type: "error", message: (0, import_i18n16.__)( @@ -4688,6 +4750,7 @@ function FontCollection({ slug }) { ), { div: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { "aria-hidden": true }), + // @ts-expect-error — Tag injected via sprintf argument, not visible in format string. CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( import_components27.SelectControl, { @@ -14878,7 +14941,7 @@ function UploadFonts() { const buffer = await readFileAsArrayBuffer(file); await font2.fromDataBuffer(buffer, "font"); return true; - } catch (error) { + } catch { return false; } } @@ -15517,10 +15580,10 @@ var { unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPI ); // routes/font-list/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='3e5ff62f49']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='eb78745b9d']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "3e5ff62f49"); - style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); + style.setAttribute("data-wp-hash", "eb78745b9d"); + style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); document.head.appendChild(style); } diff --git a/src/wp-includes/build/routes/font-list/content.min.asset.php b/src/wp-includes/build/routes/font-list/content.min.asset.php index 0f5d92358d076..f2d678e694dae 100644 --- a/src/wp-includes/build/routes/font-list/content.min.asset.php +++ b/src/wp-includes/build/routes/font-list/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'd19524ae4135fa13d2bb'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '446d1b789bc80d307815'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/font-list/content.min.js b/src/wp-includes/build/routes/font-list/content.min.js index 2228acf1d08c1..37ab9e260cb03 100644 --- a/src/wp-includes/build/routes/font-list/content.min.js +++ b/src/wp-includes/build/routes/font-list/content.min.js @@ -1,12 +1,12 @@ -var Ju=Object.create;var oa=Object.defineProperty;var Qu=Object.getOwnPropertyDescriptor;var $u=Object.getOwnPropertyNames;var tf=Object.getPrototypeOf,ef=Object.prototype.hasOwnProperty;var ce=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var rf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of $u(e))!ef.call(t,s)&&s!==r&&oa(t,s,{get:()=>e[s],enumerable:!(o=Qu(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Ju(tf(t)):{},rf(e||!t||!t.__esModule?oa(r,"default",{value:t,enumerable:!0}):r,t));var it=Ht((sy,sa)=>{sa.exports=window.wp.i18n});var X=Ht((ny,na)=>{na.exports=window.wp.components});var z=Ht((ay,aa)=>{aa.exports=window.ReactJSXRuntime});var vt=Ht((ly,la)=>{la.exports=window.wp.element});var Ar=Ht((cy,ma)=>{ma.exports=window.React});var Er=Ht((jy,Aa)=>{Aa.exports=window.wp.primitives});var Ds=Ht((sv,Ea)=>{Ea.exports=window.wp.privateApis});var mr=Ht((nv,Ra)=>{Ra.exports=window.wp.compose});var Ma=Ht((Sv,za)=>{za.exports=window.wp.editor});var we=Ht((xv,Ga)=>{Ga.exports=window.wp.coreData});var de=Ht((Cv,ja)=>{ja.exports=window.wp.data});var Ir=Ht((Fv,Ua)=>{Ua.exports=window.wp.blocks});var ae=Ht((kv,Ha)=>{Ha.exports=window.wp.blockEditor});var Ya=Ht((Ev,Wa)=>{Wa.exports=window.wp.styleEngine});var Ja=Ht((Uv,Ka)=>{"use strict";Ka.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var ei=Ht((Wv,ti)=>{"use strict";var Vf=function(e){return Df(e)&&!Nf(e)};function Df(t){return!!t&&typeof t=="object"}function Nf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Gf(t)}var zf=typeof Symbol=="function"&&Symbol.for,Mf=zf?Symbol.for("react.element"):60103;function Gf(t){return t.$$typeof===Mf}function jf(t){return Array.isArray(t)?[]:{}}function io(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Br(jf(t),t,e):t}function Uf(t,e,r){return t.concat(e).map(function(o){return io(o,r)})}function Hf(t,e){if(!e.customMerge)return Br;var r=e.customMerge(t);return typeof r=="function"?r:Br}function Wf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function Qa(t){return Object.keys(t).concat(Wf(t))}function $a(t,e){try{return e in t}catch{return!1}}function Yf(t,e){return $a(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function qf(t,e,r){var o={};return r.isMergeableObject(t)&&Qa(t).forEach(function(s){o[s]=io(t[s],r)}),Qa(e).forEach(function(s){Yf(t,s)||($a(t,s)&&r.isMergeableObject(e[s])?o[s]=Hf(s,r)(t[s],e[s],r):o[s]=io(e[s],r))}),o}function Br(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||Uf,r.isMergeableObject=r.isMergeableObject||Vf,r.cloneUnlessOtherwiseSpecified=io;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):qf(t,e,r):io(e,r)}Br.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Br(o,s,r)},{})};var Zf=Br;ti.exports=Zf});var mn=Ht((nb,Qi)=>{Qi.exports=window.wp.keycodes});var ol=Ht((gb,rl)=>{rl.exports=window.wp.apiFetch});var Au=Ht((zF,Pu)=>{Pu.exports=window.wp.date});function ia(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e<s;e++)t[e]&&(r=ia(t[e]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}function of(){for(var t,e,r=0,o="",s=arguments.length;r<s;r++)(t=arguments[r])&&(e=ia(t))&&(o&&(o+=" "),o+=e);return o}var be=of;var ua=u(vt(),1),fa=u(z(),1),ca=(0,ua.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...s},a)=>(0,fa.jsx)(o,{ref:a,className:be("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));ca.displayName="NavigableRegion";var da=ca;var ha=u(Ar(),1),pa={};function ks(t,e){let r=ha.useRef(pa);return r.current===pa&&(r.current=t(e)),r}function sf(t,e){return function(o,...s){let a=new URL(t);return a.searchParams.set("code",o.toString()),s.forEach(n=>a.searchParams.append("args[]",n)),`${e} error #${o}; visit ${a} for the full message.`}}var nf=sf("https://base-ui.com/production-error","Base UI"),ga=nf;var fr=u(Ar(),1);function Os(t,e,r,o){let s=ks(va).current;return af(s,t,e,r,o)&&ba(s,[t,e,r,o]),s.callback}function ya(t){let e=ks(va).current;return lf(e,t)&&ba(e,t),e.callback}function va(){return{callback:null,cleanup:null,refs:[]}}function af(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function lf(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function ba(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}t.cleanup=()=>{for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var xa=u(Ar(),1);var wa=u(Ar(),1),uf=parseInt(wa.version,10);function Sa(t){return uf>=t}function Ts(t){if(!xa.isValidElement(t))return null;let e=t,r=e.props;return(Sa(19)?r?.ref:e.ref)??null}function to(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Ca(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Fa(t,e){return typeof t=="function"?t(e):t}function ka(t,e){return typeof t=="function"?t(e):t}var ro={};function To(t,e,r,o,s){let a={..._s(t,ro)};return e&&(a=eo(a,e)),r&&(a=eo(a,r)),o&&(a=eo(a,o)),s&&(a=eo(a,s)),a}function Oa(t){if(t.length===0)return ro;if(t.length===1)return _s(t[0],ro);let e={..._s(t[0],ro)};for(let r=1;r<t.length;r+=1)e=eo(e,t[r]);return e}function eo(t,e){return Ta(e)?e(t):ff(t,e)}function ff(t,e){if(!e)return t;for(let r in e){let o=e[r];switch(r){case"style":{t[r]=to(t.style,o);break}case"className":{t[r]=Ps(t.className,o);break}default:cf(r,o)?t[r]=df(t[r],o):t[r]=o}}return t}function cf(t,e){let r=t.charCodeAt(0),o=t.charCodeAt(1),s=t.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function Ta(t){return typeof t=="function"}function _s(t,e){return Ta(t)?t(e):t??ro}function df(t,e){return e?t?r=>{if(pf(r)){let s=r;mf(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:e:t}function mf(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Ps(t,e){return e?t?e+" "+t:e:t}function pf(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var hf=Object.freeze([]),Je=Object.freeze({});var gf="data-base-ui-swipe-ignore",yf="data-swipe-ignore",Oy=`[${gf}]`,Ty=`[${yf}]`;var As=u(Ar(),1);function _a(t,e,r={}){let o=e.render,s=vf(e,r);if(r.enabled===!1)return null;let a=r.state??Je;return wf(t,o,s,a)}function vf(t,e={}){let{className:r,style:o,render:s}=t,{state:a=Je,ref:n,props:l,stateAttributesMapping:m,enabled:f=!0}=e,c=f?Fa(r,a):void 0,d=f?ka(o,a):void 0,g=f?Ca(a,m):Je,h=f?to(g,Array.isArray(l)?Oa(l):l)??Je:Je;return typeof document<"u"&&(f?Array.isArray(n)?h.ref=ya([h.ref,Ts(s),...n]):h.ref=Os(h.ref,Ts(s),n):Os(null,null)),f?(c!==void 0&&(h.className=Ps(h.className,c)),d!==void 0&&(h.style=to(h.style,d)),h):Je}var bf=Symbol.for("react.lazy");function wf(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=To(r,e.props);s.ref=r.ref;let a=e;return a?.$$typeof===bf&&(a=fr.Children.toArray(e)[0]),fr.cloneElement(a,s)}if(t&&typeof t=="string")return Sf(t,r);throw new Error(ga(8))}function Sf(t,e){return t==="button"?(0,As.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,As.createElement)("img",{alt:"",...e,key:e.key}):fr.createElement(t,e)}function Pa(t){return _a(t.defaultTagName??"div",t,t)}var _o=u(vt(),1),oo=(0,_o.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,_o.cloneElement)(t,{width:e,height:e,...r,ref:o}));var Po=u(Er(),1),Es=u(z(),1),cr=(0,Es.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Es.jsx)(Po.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Ao=u(Er(),1),Rs=u(z(),1),dr=(0,Rs.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Rs.jsx)(Ao.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Eo=u(Er(),1),Is=u(z(),1),Ls=(0,Is.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Eo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Ro=u(Er(),1),Bs=u(z(),1),Io=(0,Bs.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bs.jsx)(Ro.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Lo=u(Er(),1),Vs=u(z(),1),Bo=(0,Vs.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Vs.jsx)(Lo.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Ia=u(vt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","b51ff41489"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var xf={stack:"_19ce0419607e1896__stack"},Cf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Rr=(0,Ia.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},m){let f={gap:r&&Cf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return Pa({render:n,ref:m,props:To(l,{style:f,className:xf.stack})})});var La=u(X(),1),{Fill:Ba,Slot:Va}=(0,La.createSlotFill)("SidebarToggle");var Re=u(z(),1);function Da({headingLevel:t=2,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Re.jsxs)(Rr,{direction:"column",className:"admin-ui-page__header",render:(0,Re.jsx)("header",{}),children:[(0,Re.jsxs)(Rr,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Re.jsxs)(Rr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Re.jsx)(Va,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Re.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Re.jsx)(Rr,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Re.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var so=u(z(),1);function Na({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,ariaLabel:m,hasPadding:f=!1,showSidebarToggle:c=!0}){let d=be("admin-ui-page",n);return(0,so.jsxs)(da,{className:d,ariaLabel:m??(typeof o=="string"?o:""),children:[(o||e||r||l)&&(0,so.jsx)(Da,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:c}),f?(0,so.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Na.SidebarToggleFill=Ba;var Ns=Na;var Xr=u(it()),Wu=u(X()),Yu=u(Ma()),Ss=u(we()),qu=u(de()),Zu=u(vt());var ju=u(X(),1),Uu=u(Ir(),1),qg=u(de(),1),Zg=u(ae(),1),Zn=u(vt(),1),Xg=u(mr(),1);function Lr(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var Se=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var Ff=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function zs(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return Se(t,a)??Se(t,n);let l={};return Ff.forEach(m=>{let f=Se(t,`settings${o}.${m}`)??Se(t,`settings.${m}`);f!==void 0&&(l=Lr(l,m.split("."),f))}),l}function Ms(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Lr(t,n.split("."),r)}var Rf=u(Ya(),1);var kf="1600px",Of="320px",Tf=1,_f=.25,Pf=.75,Af="14px";function qa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=Of,maximumViewportWidth:s=kf,scaleFactor:a=Tf,minimumFontSizeLimit:n}){if(n=Ie(n)?n:Af,r){let b=Ie(r);if(!b?.unit||!b?.value)return null;let T=Ie(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),_f),Pf),D=no(b.value*I,3);T?.value&&D<T?.value?t=`${T.value}${T.unit}`:t=`${D}${b.unit}`}}let l=Ie(t),m=l?.unit||"rem",f=Ie(e,{coerceTo:m});if(!l||!f)return null;let c=Ie(t,{coerceTo:"rem"}),d=Ie(s,{coerceTo:m}),g=Ie(o,{coerceTo:m});if(!d||!g||!c)return null;let h=d.value-g.value;if(!h)return null;let v=no(g.value/100,3),_=no(v,3)+m,A=100*((f.value-l.value)/h),k=no((A||1)*a,3),x=`${c.value}${c.unit} + ((1vw - ${_}) * ${k})`;return`clamp(${t}, ${x}, ${e})`}function Ie(t,e={}){if(typeof t!="string"&&typeof t!="number")return null;isFinite(t)&&(t=`${t}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...e},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=t.toString().match(n);if(!l||l.length<3)return null;let[,m,f]=l,c=parseFloat(m);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:no(c,3),unit:f}:null}function no(t,e=3){let r=Math.pow(10,e);return Math.round(t*r)/r}function Gs(t){let e=t?.fluid;return e===!0||e&&typeof e=="object"&&Object.keys(e).length>0}function Ef(t){let e=t?.typography??{},r=t?.layout,o=Ie(r?.wideSize)?r?.wideSize:null;return Gs(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function Za(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!Gs(e?.typography)&&!Gs(t))return r;let o=Ef(e)?.fluid??{},s=qa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var If=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>Za(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function Xa(t,e,r=[],o="slug",s){let a=[e?Se(t,["blocks",e,...r]):void 0,Se(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let m of l){let f=n[m];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||Xa(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Lf(t,e,r,[o,s]=[]){let a=If.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=Xa(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,m=n[l];return Vo(t,e,m)}return r}function Bf(t,e,r,o=[]){let s=(e?Se(t?.settings??{},["blocks",e,"custom",...o]):void 0)??Se(t?.settings??{},["custom",...o]);return s?Vo(t,e,s):r}function Vo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=Se(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...m]=n;return l==="preset"?Lf(t,e,r,m):l==="custom"?Bf(t,e,r,m):r}function js(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=Se(t,a);return o?Vo(t,r,n):n}function Us(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Lr(t,a.split("."),r)}var Hs=u(Ja(),1);function ao(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Hs.default)(t?.styles,e?.styles)&&(0,Hs.default)(t?.settings,e?.settings)}var si=u(ei(),1);function ri(t){return Object.prototype.toString.call(t)==="[object Object]"}function oi(t){var e,r;return ri(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ri(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function pr(t,e){return(0,si.default)(t,e,{isMergeableObject:oi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var Xf={grad:.9,turn:360,rad:360/(2*Math.PI)},Ue=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Zt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},ke=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},di=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ni=function(t){return{r:ke(t.r,0,255),g:ke(t.g,0,255),b:ke(t.b,0,255),a:ke(t.a)}},Ws=function(t){return{r:Zt(t.r),g:Zt(t.g),b:Zt(t.b),a:Zt(t.a,3)}},Kf=/^#([0-9a-f]{3,8})$/i,Do=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},mi=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},pi=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),m=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,m,o][f],g:255*[m,o,o,l,n,n][f],b:255*[n,n,m,o,o,l][f],a:s}},ai=function(t){return{h:di(t.h),s:ke(t.s,0,100),l:ke(t.l,0,100),a:ke(t.a)}},ii=function(t){return{h:Zt(t.h),s:Zt(t.s),l:Zt(t.l),a:Zt(t.a,3)}},li=function(t){return pi((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},lo=function(t){return{h:(e=mi(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},Jf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Qf=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$f=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,tc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zs={string:[[function(t){var e=Kf.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Zt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Zt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=$f.exec(t)||tc.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:ni({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Jf.exec(t)||Qf.exec(t);if(!e)return null;var r,o,s=ai({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(Xf[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return li(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return Ue(e)&&Ue(r)&&Ue(o)?ni({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=ai({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return li(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=(function(l){return{h:di(l.h),s:ke(l.s,0,100),v:ke(l.v,0,100),a:ke(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return pi(n)},"hsv"]]},ui=function(t,e){for(var r=0;r<e.length;r++){var o=e[r][0](t);if(o)return[o,e[r][1]]}return[null,void 0]},ec=function(t){return typeof t=="string"?ui(t.trim(),Zs.string):typeof t=="object"&&t!==null?ui(t,Zs.object):[null,void 0]};var Ys=function(t,e){var r=lo(t);return{h:r.h,s:ke(r.s+100*e,0,100),l:r.l,a:r.a}},qs=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},fi=function(t,e){var r=lo(t);return{h:r.h,s:r.s,l:ke(r.l+100*e,0,100),a:r.a}},Xs=(function(){function t(e){this.parsed=ec(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return Zt(qs(this.rgba),2)},t.prototype.isDark=function(){return qs(this.rgba)<.5},t.prototype.isLight=function(){return qs(this.rgba)>=.5},t.prototype.toHex=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?Do(Zt(255*a)):"","#"+Do(r)+Do(o)+Do(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ws(this.rgba)},t.prototype.toRgbString=function(){return e=Ws(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return ii(lo(this.rgba))},t.prototype.toHslString=function(){return e=ii(lo(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=mi(this.rgba),{h:Zt(e.h),s:Zt(e.s),v:Zt(e.v),a:Zt(e.a,3)};var e},t.prototype.invert=function(){return Le({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Le(Ys(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Le(Ys(this.rgba,-e))},t.prototype.grayscale=function(){return Le(Ys(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Le(fi(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Le(fi(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Le({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Zt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=lo(this.rgba);return typeof e=="number"?Le({h:e,s:r.s,l:r.l,a:r.a}):Zt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Le(e).toHex()},t})(),Le=function(t){return t instanceof Xs?t:new Xs(t)},ci=[],hi=function(t){t.forEach(function(e){ci.indexOf(e)<0&&(e(Xs,Zs),ci.push(e))})};var Ks=u(vt(),1);var gi=u(vt(),1),Kt=(0,gi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var yi=u(z(),1);function uo({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Ks.useMemo)(()=>pr(r,e),[r,e]),n=(0,Ks.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,yi.jsx)(Kt.Provider,{value:n,children:t})}var He=u(X(),1),Vi=u(it(),1);var hc=u(de(),1),gc=u(we(),1);var vi=u(z(),1);function Js({className:t,...e}){return(0,vi.jsx)(oo,{className:be(t,"global-styles-ui-icon-with-current-color"),...e})}var Qe=u(X(),1);var hr=u(z(),1);function rc({icon:t,children:e,...r}){return(0,hr.jsxs)(Qe.__experimentalItem,{...r,children:[t&&(0,hr.jsxs)(Qe.__experimentalHStack,{justify:"flex-start",children:[(0,hr.jsx)(Js,{icon:t,size:24}),(0,hr.jsx)(Qe.FlexItem,{children:e})]}),!t&&e]})}function Be(t){return(0,hr.jsx)(Qe.Navigator.Button,{as:rc,...t})}var nc=u(X(),1);var ac=u(it(),1),ki=u(ae(),1);var Qs=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},$s=function(t){return .2126*Qs(t.r)+.7152*Qs(t.g)+.0722*Qs(t.b)};function bi(t){t.prototype.luminance=function(){return e=$s(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,m,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=$s(a),m=$s(n),r=l>m?(l+.05)/(m+.05):(m+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Ae=u(vt(),1),xi=u(de(),1),Ci=u(we(),1),en=u(it(),1);var Wt=u(it(),1),p1={link:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}],button:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}]},h1={"core/button":[{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus Visible")},{value:":active",label:(0,Wt.__)("Active")}]};function tn(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&tn(t[r],e);return t}var No=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=No(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function fo(t,e){let r=No(structuredClone(t),e);return ao(r,t)}function wi(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function Si(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=wi(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=wi(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}hi([bi]);function kt(t,e,r="merged",o=!0){let{user:s,base:a,merged:n,onChange:l}=(0,Ae.useContext)(Kt),m=n;r==="base"?m=a:r==="user"&&(m=s);let f=(0,Ae.useMemo)(()=>js(m,t,e,o),[m,t,e,o]),c=(0,Ae.useCallback)(d=>{let g=Us(s,t,d,e);l(g)},[s,l,t,e]);return[f,c]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Ae.useContext)(Kt),l=a;r==="base"?l=s:r==="user"&&(l=o);let m=(0,Ae.useMemo)(()=>zs(l,t,e),[l,t,e]),f=(0,Ae.useCallback)(c=>{let d=Ms(o,t,c,e);n(d)},[o,n,t,e]);return[m,f]}var oc=[];function sc({title:t,settings:e,styles:r}){return t===(0,en.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function zo(t=[]){let{variationsFromTheme:e}=(0,xi.useSelect)(o=>({variationsFromTheme:o(Ci.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||oc}),[]),{user:r}=(0,Ae.useContext)(Kt);return(0,Ae.useMemo)(()=>{let o=structuredClone(r),s=tn(o,t);s.title=(0,en.__)("Default");let a=e.filter(l=>fo(l,t)).map(l=>pr(s,l)),n=[s,...a];return n?.length?n.filter(sc):[]},[t,r,e])}var Fi=u(Ds(),1),{lock:C1,unlock:yt}=(0,Fi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var rn=u(z(),1),{useHasDimensionsPanel:_1,useHasTypographyPanel:P1,useHasColorPanel:A1,useSettingsForBlockElement:E1,useHasBackgroundPanel:R1}=yt(ki.privateApis);var Ve=u(X(),1);function Vr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],m=(n??[]).concat(l??[]).concat(a??[]),f=m.filter(({color:g})=>g===t),c=m.filter(({color:g})=>g===s),d=f.concat(c).concat(m).filter(({color:g})=>g!==e).slice(0,2);return{paletteColors:m,highlightedColors:d}}var _i=u(vt(),1),Pi=u(X(),1),sn=u(it(),1);function ic(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function lc(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Oi(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function on(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Dr(t){let e={fontFamily:Oi(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=lc(r),s=ic(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function Ti(t){return{fontFamily:Oi(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var co=u(z(),1);function Mo({fontSize:t,variation:e}){let{base:r}=(0,_i.useContext)(Kt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=Si(o),l=a?Dr(a):{},m=n?Dr(n):{};return s&&(l.color=s,m.color=s),t&&(l.fontSize=t,m.fontSize=t),(0,co.jsxs)(Pi.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,co.jsx)("span",{style:m,children:(0,sn._x)("A","Uppercase letter A")}),(0,co.jsx)("span",{style:l,children:(0,sn._x)("a","Lowercase letter A")})]})}var Ai=u(X(),1);var Ei=u(z(),1);function Ri({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Vr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Ei.jsx)(Ai.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Bi=u(X(),1),Nr=u(mr(),1),gr=u(vt(),1);var $e=u(z(),1),Ii=248,Li=152,uc={leading:!0,trailing:!0};function fc({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Nr.useReducedMotion)(),[l,m]=(0,gr.useState)(!1),[f,{width:c}]=(0,Nr.useResizeObserver)(),[d,g]=(0,gr.useState)(c),[h,v]=(0,gr.useState)(),_=(0,Nr.useThrottle)(g,250,uc);(0,gr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,gr.useLayoutEffect)(()=>{let b=d?d/Ii:1,T=b-(h||0);(Math.abs(T)>.1||!h)&&v(b)},[d,h]);let A=c?c/Ii:1,k=h||A;return(0,$e.jsxs)($e.Fragment,{children:[(0,$e.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,$e.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:Li*k},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),tabIndex:-1,children:(0,$e.jsx)(Bi.__unstableMotion.div,{style:{height:Li*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var zr=fc;var me=u(z(),1),cc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},dc={hover:{opacity:1},start:{opacity:.5}},mc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function pc({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[m="black"]=kt("color.text"),[f=m]=kt("elements.h1.color.text"),{paletteColors:c}=Vr();return(0,me.jsxs)(zr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:g})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:cc,style:{height:"100%",overflow:"hidden"},children:(0,me.jsxs)(Ve.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,me.jsx)(Mo,{fontSize:65*d,variation:o}),(0,me.jsx)(Ve.__experimentalVStack,{spacing:4*d,children:(0,me.jsx)(Ri,{normalizedColorSwatchSize:32,ratio:d})})]})},g),({key:d})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:r?dc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,me.jsx)(Ve.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:g},h)=>(0,me.jsx)("div",{style:{height:"100%",background:g,flexGrow:1}},h))})},d),({ratio:d,key:g})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:mc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,me.jsx)(Ve.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,me.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},g)]})}var nn=pc;var Di=u(z(),1);var ln=u(Ir(),1),Mr=u(it(),1),vr=u(X(),1),un=u(de(),1),tr=u(vt(),1),Go=u(ae(),1),Ui=u(mr(),1);import{speak as wc}from"@wordpress/a11y";var Ni=u(Ir(),1),zi=u(de(),1),yc=u(X(),1);var vc=u(z(),1);function bc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function an(t){let e=(0,zi.useSelect)(s=>{let{getBlockStyles:a}=s(Ni.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return bc(e,o)}var yr=u(X(),1),Mi=u(it(),1);var Gi=u(ae(),1);var ji=u(z(),1),{StateControl:l0}=yt(Gi.privateApis);var De=u(z(),1),{useHasDimensionsPanel:Sc,useHasTypographyPanel:xc,useHasBorderPanel:Cc,useSettingsForBlockElement:Fc,useHasColorPanel:kc}=yt(Go.privateApis);function Oc(){let t=(0,un.useSelect)(s=>s(ln.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function Tc(t){let[e]=_t("",t),r=Fc(e,t),o=xc(r),s=kc(r),a=Cc(r),n=Sc(r),l=a||n,m=!!an(t)?.length;return o||s||l||m}function _c({block:t}){return Tc(t.name)?(0,De.jsx)(Be,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,De.jsxs)(vr.__experimentalHStack,{justify:"flex-start",children:[(0,De.jsx)(Go.BlockIcon,{icon:t.icon}),(0,De.jsx)(vr.FlexItem,{children:t.title})]})}):null}function Pc({filterValue:t}){let e=Oc(),r=(0,Ui.useDebounce)(wc,500),{isMatchingSearchTerm:o}=(0,un.useSelect)(ln.store),s=t?e.filter(n=>o(n,t)):e,a=(0,tr.useRef)(null);return(0,tr.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Mr.sprintf)((0,Mr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,De.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,De.jsx)(vr.__experimentalText,{align:"center",as:"p",children:(0,Mr.__)("No blocks found.")}):s.map(n=>(0,De.jsx)(_c,{block:n},"menu-itemblock-"+n.name))})}var g0=(0,tr.memo)(Pc);var Lc=u(Ir(),1),qi=u(ae(),1),fn=u(vt(),1),Bc=u(de(),1),Vc=u(we(),1),cn=u(X(),1),Zi=u(it(),1);var Ac=u(ae(),1),Hi=u(Ir(),1),Ec=u(X(),1),Rc=u(vt(),1);var Ic=u(z(),1);var Wi=u(X(),1),Yi=u(z(),1);function xe({children:t,level:e=2}){return(0,Yi.jsx)(Wi.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var dn=u(z(),1);var{useHasDimensionsPanel:I0,useHasTypographyPanel:L0,useHasBorderPanel:B0,useSettingsForBlockElement:V0,useHasColorPanel:D0,useHasFiltersPanel:N0,useHasImageSettingsPanel:z0,useHasBackgroundPanel:M0,BackgroundPanel:G0,BorderPanel:j0,ColorPanel:U0,TypographyPanel:H0,DimensionsPanel:W0,FiltersPanel:Y0,ImageSettingsPanel:q0,AdvancedPanel:Z0}=yt(qi.privateApis);var Xh=u(it(),1),Kh=u(X(),1),Jh=u(vt(),1);var Dc=u(X(),1);var Nc=u(z(),1);var zc=u(it(),1),jo=u(X(),1);var Xi=u(z(),1);var Wo=u(X(),1);var Ki=u(X(),1);var Uo=u(z(),1),Mc=({variation:t,isFocused:e,withHoverView:r})=>(0,Uo.jsx)(zr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,Uo.jsx)(Ki.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Uo.jsx)(Mo,{variation:t,fontSize:85*o})},s)}),Ji=Mc;var $i=u(X(),1),br=u(vt(),1),tl=u(mn(),1),Ho=u(it(),1);var mo=u(z(),1);function Gr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,br.useState)(!1),{base:l,user:m,onChange:f}=(0,br.useContext)(Kt),c=(0,br.useMemo)(()=>{let A=pr(l,t);return o&&(A=No(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),g=A=>{A.keyCode===tl.ENTER&&(A.preventDefault(),d())},h=(0,br.useMemo)(()=>ao(m,t),[m,t]),v=t?.title;t?.description&&(v=(0,Ho.sprintf)((0,Ho._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item",{"is-active":h}),role:"button",onClick:d,onKeyDown:g,tabIndex:0,"aria-label":v,"aria-current":h,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,mo.jsx)(Kt.Provider,{value:c,children:s?(0,mo.jsx)($i.Tooltip,{text:t?.title,children:_}):_})}var wr=u(z(),1),el=["typography"];function Yo({title:t,gap:e=2}){let r=zo(el);return r?.length<=1?null:(0,wr.jsxs)(Wo.__experimentalVStack,{spacing:3,children:[t&&(0,wr.jsx)(xe,{level:3,children:t}),(0,wr.jsx)(Wo.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,wr.jsx)(Gr,{variation:o,properties:el,showTooltip:!0,children:()=>(0,wr.jsx)(Ji,{variation:o})},s))})]})}var qh=u(it(),1),wo=u(X(),1);var Zh=u(vt(),1);var We=u(vt(),1),sr=u(de(),1),or=u(we(),1),yn=u(it(),1);var pn=u(ol(),1),sl=u(we(),1),nl="/wp/v2/font-families";function al(t){let{receiveEntityRecords:e}=t.dispatch(sl.store);e("postType","wp_font_family",[],void 0,!0)}async function il(t,e){let o=await(0,pn.default)({path:nl,method:"POST",body:t});return al(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function ll(t,e,r){let o={path:`${nl}/${t}/font-faces`,method:"POST",body:e},s=await(0,pn.default)(o);return al(r),{id:s.id,...s.font_face_settings}}var cl=u(X(),1);var Oe=u(it(),1),hn=["otf","ttf","woff","woff2"],ul={100:(0,Oe._x)("Thin","font weight"),200:(0,Oe._x)("Extra-light","font weight"),300:(0,Oe._x)("Light","font weight"),400:(0,Oe._x)("Normal","font weight"),500:(0,Oe._x)("Medium","font weight"),600:(0,Oe._x)("Semi-bold","font weight"),700:(0,Oe._x)("Bold","font weight"),800:(0,Oe._x)("Extra-bold","font weight"),900:(0,Oe._x)("Black","font weight")},fl={normal:(0,Oe._x)("Normal","font style"),italic:(0,Oe._x)("Italic","font style")};var{File:dl}=window,{kebabCase:Gc}=yt(cl.privateApis);function er(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function jc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function qo(t){let e=ul[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":fl[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function Uc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function ml(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=Uc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function rr(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof dl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(on(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function po(t,e="all"){let r=o=>{o.forEach(s=>{s.family===on(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function jr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return jc(e)||(e=encodeURI(e)),e}function pl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Gc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function hl(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((m,f)=>{let c=`file-${o}-${f}`;a.append(c,m,m.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function gl(t,e,r){let o=[];for(let a of e)try{let n=await ll(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function yl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new dl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function gn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function vl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function Zo(t,e,r=[]){let o=m=>m.slug===t.slug,s=m=>m.find(o),a=m=>m?r.filter(f=>!o(f)):[...r,t],n=m=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!m)return[...r,{...t,fontFace:[e]}];let c=m.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var bl=u(z(),1),ie=(0,We.createContext)({});ie.displayName="FontLibraryContext";function Hc({children:t}){let e=(0,sr.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,sr.useDispatch)(or.store),{globalStylesId:s}=(0,sr.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:R}=S(or.store);return{globalStylesId:R()}},[]),a=(0,or.useEntityRecord)("root","globalStyles",s),[n,l]=(0,We.useState)(!1),{records:m=[],isResolving:f}=(0,or.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(m||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(R=>R.font_face_settings)||[]}))||[],[d,g]=_t("typography.fontFamilies"),h=async S=>{if(!a.record)return;let R=a.record,et=vl(R??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[v,_]=(0,We.useState)(""),[A,k]=(0,We.useState)(void 0),x=d?.theme?d.theme.map(S=>er(S,{source:"theme"})).sort((S,R)=>S.name.localeCompare(R.name)):[],b=d?.custom?d.custom.map(S=>er(S,{source:"custom"})).sort((S,R)=>S.name.localeCompare(R.name)):[],T=c?c.map(S=>er(S,{source:"custom"})).sort((S,R)=>S.name.localeCompare(R.name)):[];(0,We.useEffect)(()=>{v||k(void 0)},[v]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,We.useState)(new Set),D=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>D(S==="theme"?x:b),$=(S,R,et,ct)=>!R&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((R??"")+(et??"")),bt=(S,R)=>H(R)[S]||[];async function W(S){l(!0);try{let R=[],et=[];for(let at of S){let Ct=!1,Yt=await(0,sr.resolveSelect)(or.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Yt&&Yt.length>0?Yt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await il(pl(at),e));let St=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&gn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!gn(zt,J.fontFace)));let At=[],Ce=[];if(at?.fontFace?.length??!1){let zt=await gl(J.id,hl(at),e);At=zt?.successes,Ce=zt?.errors}(At?.length>0||St?.length>0)&&(J.fontFace=[...At],R.push(J)),J&&!at?.fontFace?.length&&R.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(Ce)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(R.length>0){let at=lt(R);await h(at)}if(ct.length>0){let at=new Error((0,yn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function y(S){if(!S?.id)throw new Error((0,yn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let R=L(S);return await h(R),{deleted:!0}}catch(R){throw console.error("There was an error uninstalling the font family:",R),R}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return g(ct),S.fontFace&&S.fontFace.forEach(at=>{po(at,"all")}),ct},lt=S=>{let R=ot(S),et={...d,custom:ml(d?.custom,R)};return g(et),K(R),et},ot=S=>S.map(({id:R,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(R=>{R.fontFace&&R.fontFace.forEach(et=>{let ct=jr(et?.src??"");ct&&rr(et,ct,"all")})})},gt=(S,R)=>{let et=d?.[S.source??""]??[],ct=Zo(S,R,et);g({...d,[S.source??""]:ct});let at=$(S.slug,R?.fontStyle??"",R?.fontWeight??"",S.source??"custom");if(R&&at)po(R,"all");else{let Ct=jr(R?.src??"");R&&Ct&&rr(R,Ct,"all")}},E=async S=>{if(!S.src)return;let R=jr(S.src);!R||I.has(R)||(rr(S,R,"document"),I.add(R))};return(0,bl.jsx)(ie.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:E,installFonts:W,uninstallFontFamily:y,toggleActivateFont:gt,getAvailableFontsOutline:D,modalTabOpen:v,setModalTabOpen:_,saveFontFamilies:h,isResolvingLibrary:f,isInstalling:n},children:t})}var Xo=Hc;var fs=u(it(),1),xn=u(X(),1),eu=u(we(),1),Wh=u(de(),1);var ht=u(X(),1),go=u(we(),1),vn=u(de(),1),xr=u(vt(),1),Rt=u(it(),1);var Hr=u(it(),1),Te=u(X(),1);var wl=u(X(),1),Ne=u(vt(),1);var Ko=u(z(),1);function Wc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function Yc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function qc({font:t,text:e}){let r=(0,Ne.useRef)(null),o=Yc(t),s=Dr(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,Ne.useState)(!1),[m,f]=(0,Ne.useState)(!1),{loadFontFaceAsset:c}=(0,Ne.useContext)(ie),d=a??Wc(o),g=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),h=Ti(o),v={fontSize:"18px",lineHeight:1,opacity:m?"1":"0",...s,...h};return(0,Ne.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,Ne.useEffect)(()=>{(async()=>n&&(!g&&o.src&&await c(o),f(!0)))()},[o,n,c,g]),(0,Ko.jsx)("div",{ref:r,children:g?(0,Ko.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Ko.jsx)(wl.__experimentalText,{style:v,className:"font-library__font-variant_demo-text",children:e})})}var Ur=qc;var ze=u(z(),1);function Zc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Te.useNavigator)();return(0,ze.jsx)(Te.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,ze.jsxs)(Te.Flex,{justify:"space-between",wrap:!1,children:[(0,ze.jsx)(Ur,{font:t}),(0,ze.jsxs)(Te.Flex,{justify:"flex-end",children:[(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(Te.__experimentalText,{className:"font-library__font-card__count",children:r||(0,Hr.sprintf)((0,Hr._n)("%d variant","%d variants",s),s)})}),(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(oo,{icon:(0,Hr.isRTL)()?cr:dr})})]})]})})}var ho=Zc;var Jo=u(vt(),1),Qo=u(X(),1);var Sr=u(z(),1);function Xc({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Jo.useContext)(ie),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+qo(t),l=(0,Jo.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(Qo.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(Qo.CheckboxControl,{checked:s,onChange:a,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Ur,{font:t,text:n,onClick:a})})]})})}var Sl=Xc;function xl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function $o(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?xl(e.fontWeight?.toString()??"normal")-xl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function Kc(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,xr.useContext)(ie),[m,f]=_t("typography.fontFamilies"),[c,d]=(0,xr.useState)(!1),[g,h]=(0,xr.useState)(null),[v]=_t("typography.fontFamilies",void 0,"base"),_=(0,vn.useSelect)(E=>{let{__experimentalGetCurrentGlobalStylesId:S}=E(go.store);return S()},[]),k=!!(0,go.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=m?.theme?m.theme.map(E=>er(E,{source:"theme"})).sort((E,S)=>E.name.localeCompare(S.name)):[],b=new Set(x.map(E=>E.slug)),T=v?.theme?x.concat(v.theme.filter(E=>!b.has(E.slug)).map(E=>er(E,{source:"theme"})).sort((E,S)=>E.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,vn.useSelect)(E=>{let{canUser:S}=E(go.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),D=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{h(null);try{await n(m),h({type:"success",message:(0,Rt.__)("Font family updated successfully.")})}catch(E){h({type:"error",message:(0,Rt.sprintf)((0,Rt.__)("There was an error updating the font family. %s"),E.message)})}},bt=E=>E?!E.fontFace||!E.fontFace.length?[{fontFamily:E.fontFamily,fontStyle:"normal",fontWeight:"400"}]:$o(E.fontFace):[],W=E=>{let S=E?.fontFace&&(E?.fontFace?.length??0)>0?E.fontFace.length:1,R=l(E.slug,E.source).length;return(0,Rt.sprintf)((0,Rt.__)("%1$d/%2$d variants active"),R,S)};(0,xr.useEffect)(()=>{r(e)},[]);let y=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),lt=y>0&&y!==L,ot=y===L,K=()=>{if(!e||!e?.source)return;let E=m?.[e.source]?.filter(R=>R.slug!==e.slug)??[],S=ot?E:[...E,e];f({...m,[e.source]:S}),e.fontFace&&e.fontFace.forEach(R=>{if(ot)po(R,"all");else{let et=jr(R?.src??"");et&&rr(R,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[g&&(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Rt.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Rt._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(E=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:E,navigatorPath:"/fontFamily",variantsText:W(E),onClick:()=>{h(null),r(E)}})},E.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Rt._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(E=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:E,navigatorPath:"/fontFamily",variantsText:W(E),onClick:()=>{h(null),r(E)}})},E.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(Jc,{font:e,isOpen:c,setIsOpen:d,setNotice:h,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Rt.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),h(null)},label:(0,Rt.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),g&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:g.type,onRemove:()=>h(null),children:g.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Rt.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ot,onChange:K,indeterminate:lt}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((E,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(Sl,{font:e,face:E},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),D&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Rt.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Rt.__)("Update")})]})]})]})}function Jc({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Rt.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Rt.__)("There was an error uninstalling the font family.")+f.message})}},m=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Rt.__)("Cancel"),confirmButtonText:(0,Rt.__)("Delete"),onCancel:m,onConfirm:l,size:"medium",children:t&&(0,Rt.sprintf)((0,Rt.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var ts=Kc;var Xt=u(vt(),1),nt=u(X(),1),Al=u(mr(),1),Et=u(it(),1);var El=u(we(),1);function Cl(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Fl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function kl(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var yo=u(it(),1),le=u(X(),1),_e=u(z(),1);function Qc(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,_e.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,_e.jsx)(le.Card,{children:(0,_e.jsxs)(le.CardBody,{children:[(0,_e.jsx)(le.__experimentalHeading,{level:2,children:(0,yo.__)("Connect to Google Fonts")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:3}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,yo.__)("Allow access to Google Fonts")})]})})})}var Ol=Qc;var Tl=u(vt(),1),es=u(X(),1);var Cr=u(z(),1);function $c({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+qo(t),n=(0,Tl.useId)();return(0,Cr.jsx)("div",{className:"font-library__font-card",children:(0,Cr.jsxs)(es.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Cr.jsx)(es.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Cr.jsx)("label",{htmlFor:n,children:(0,Cr.jsx)(Ur,{font:t,text:a,onClick:s})})]})})}var _l=$c;var tt=u(z(),1),td={slug:"all",name:(0,Et._x)("All","font categories")},Pl="wp-font-library-google-fonts-permission",ed=500;function rd({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Pl)==="true",[o,s]=(0,Xt.useState)(null),[a,n]=(0,Xt.useState)(null),[l,m]=(0,Xt.useState)([]),[f,c]=(0,Xt.useState)(1),[d,g]=(0,Xt.useState)({}),[h,v]=(0,Xt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Xt.useContext)(ie),{record:k,isResolving:x}=(0,El.useEntityRecord)("root","fontCollection",t);(0,Xt.useEffect)(()=>{let J=()=>{v(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Pl,"false"),window.dispatchEvent(new Event("storage"))};(0,Xt.useEffect)(()=>{s(null)},[t]),(0,Xt.useEffect)(()=>{m([])},[o]);let T=(0,Xt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[td,...Y],D=(0,Xt.useMemo)(()=>Cl(T,d),[T,d]),H=Math.max(window.innerHeight,ed),$=Math.floor((H-417)/61),bt=Math.ceil(D.length/$),W=(f-1)*$,y=f*$,L=D.slice(W,y),lt=J=>{g({...d,category:J}),c(1)},K=(0,Al.debounce)(J=>{g({...d,search:J}),c(1)},300),gt=(J,St)=>{let At=Zo(J,St,l);m(At)},E=Fl(l),S=()=>{m([])},R=l.length>0?l[0]?.fontFace?.length??0:0,et=R>0&&R!==o?.fontFace?.length,ct=R===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),m(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async St=>{St.src&&(St.file=await yl(St.src))}))}catch{n({type:"error",message:(0,Et.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Et.__)("Fonts were installed successfully.")})}catch(St){n({type:"error",message:St.message})}S()},Yt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:$o(J.fontFace):[];if(h)return(0,tt.jsx)(Ol,{});let Ot=()=>t!=="google-fonts"||h||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Ls,label:(0,Et.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Et.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Et.__)("Font name\u2026"),label:(0,Et.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Et.__)("Category"),value:d.category,onChange:lt,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!D.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Et.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(ho,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Et.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),n(null)},label:(0,Et.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Et.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Yt(o).map((J,St)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(_l,{font:o,face:J,handleToggleVariant:gt,selected:kl(o.slug,o.fontFace?J:null,E)})},`face${St}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Et.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Xt.createInterpolateElement)((0,Et.sprintf)((0,Et._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Et.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,St)=>({label:(St+1).toString(),value:(St+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Et.__)("Previous page"),icon:(0,Et.isRTL)()?Io:Bo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Et.__)("Next page"),icon:(0,Et.isRTL)()?Bo:Io,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var rs=rd;var Wr=u(it(),1),te=u(X(),1),bo=u(vt(),1);var os=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Rl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof os=="function"&&os;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof os=="function"&&os,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,m=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=m,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,g=this.input_.read(this.buf_,d,n);if(g<0)throw new Error("Unexpected end of input");if(g<n){this.eos_=1;for(var h=0;h<32;h++)this.buf_[d+g+h]=0}if(d===0){for(var h=0;h<32;h++)this.buf_[(n<<1)+h]=this.buf_[h];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=g<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&m]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var g=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,g},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,m=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,m=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,g=o("./context"),h=o("./prefix"),v=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,D=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,y=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),lt=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<<O)}return 0}function gt(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function E(N){var O=new gt,B,P,V;if(O.input_end=N.readBits(1),O.input_end&&N.readBits(1))return O;if(B=N.readBits(2)+4,B===7){if(O.is_metadata=!0,N.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=N.readBits(2),P===0)return O;for(V=0;V<P;V++){var dt=N.readBits(8);if(V+1===P&&P>1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<<V*8}}else for(V=0;V<B;++V){var rt=N.readBits(4);if(V+1===B&&B>4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<<V*4}return++O.meta_block_length,!O.input_end&&!O.is_metadata&&(O.is_uncompressed=N.readBits(1)),O}function S(N,O,B){var P=O,V;return B.fillBitWindow(),O+=B.val_>>>B.bit_pos_&D,V=N[O].bits-I,V>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=N[O].bits,N[O].value}function R(N,O,B,P){for(var V=0,dt=_,rt=0,st=0,wt=32768,ut=[],q=0;q<32;q++)ut.push(new c(0,0));for(d(ut,0,5,N,$);V<O&&wt>0;){var Ft=0,Jt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=ut[Ft].bits,Jt=ut[Ft].value&255,Jt<A)rt=0,B[V++]=Jt,Jt!==0&&(dt=Jt,wt-=32768>>Jt);else{var ge=Jt-14,ee,Qt,Vt=0;if(Jt===A&&(Vt=dt),st!==Vt&&(rt=0,st=Vt),ee=rt,rt>0&&(rt-=2,rt<<=ge),rt+=P.readBits(ge)+3,Qt=rt-ee,V+Qt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var $t=0;$t<Qt;$t++)B[V+$t]=st;V+=Qt,st!==0&&(wt-=Qt<<15-st)}}if(wt!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+wt);for(;V<O;V++)B[V]=0}function et(N,O,B,P){var V=0,dt,rt=new Uint8Array(N);if(P.readMoreInput(),dt=P.readBits(2),dt===1){for(var st,wt=N-1,ut=0,q=new Int32Array(4),Ft=P.readBits(2)+1;wt;)wt>>=1,++ut;for(st=0;st<Ft;++st)q[st]=P.readBits(ut)%N,rt[q[st]]=2;switch(rt[q[0]]=1,Ft){case 1:break;case 3:if(q[0]===q[1]||q[0]===q[2]||q[1]===q[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(q[0]===q[1])throw new Error("[ReadHuffmanCode] invalid symbols");rt[q[1]]=1;break;case 4:if(q[0]===q[1]||q[0]===q[2]||q[0]===q[3]||q[1]===q[2]||q[1]===q[3]||q[2]===q[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(rt[q[2]]=3,rt[q[3]]=3):rt[q[0]]=2;break}}else{var st,Jt=new Uint8Array($),ge=32,ee=0,Qt=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(st=dt;st<$&&ge>0;++st){var Vt=bt[st],$t=0,re;P.fillBitWindow(),$t+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Qt[$t].bits,re=Qt[$t].value,Jt[Vt]=re,re!==0&&(ge-=32>>re,++ee)}if(!(ee===1||ge===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");R(Jt,N,rt,P)}if(V=d(O,B,I,rt,N),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ct(N,O,B){var P,V;return P=S(N,O,B),V=h.kBlockLengthPrefixCode[P].nbits,h.kBlockLengthPrefixCode[P].offset+B.readBits(V)}function at(N,O,B){var P;return N<W?(B+=y[N],B&=3,P=O[B]+L[N]):P=N-W+1,P}function Ct(N,O){for(var B=N[O],P=O;P;--P)N[P]=N[P-1];N[0]=B}function Yt(N,O){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<O;++P){var V=N[P];N[P]=B[V],V&&Ct(B,V)}}function Ot(N,O){this.alphabet_size=N,this.num_htrees=O,this.codes=new Array(O+O*lt[N+31>>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O<this.num_htrees;++O)this.htrees[O]=P,B=et(this.alphabet_size,this.codes,P,N),P+=B};function J(N,O){var B={num_htrees:null,context_map:null},P,V=0,dt,rt;O.readMoreInput();var st=B.num_htrees=K(O)+1,wt=B.context_map=new Uint8Array(N);if(st<=1)return B;for(P=O.readBits(1),P&&(V=O.readBits(4)+1),dt=[],rt=0;rt<H;rt++)dt[rt]=new c(0,0);for(et(st+V,dt,0,O),rt=0;rt<N;){var ut;if(O.readMoreInput(),ut=S(dt,0,O),ut===0)wt[rt]=0,++rt;else if(ut<=V)for(var q=1+(1<<ut)+O.readBits(ut);--q;){if(rt>=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=ut-V,++rt}return O.readBits(1)&&Yt(wt,N),B}function St(N,O,B,P,V,dt,rt){var st=B*2,wt=B,ut=S(O,B*H,rt),q;ut===0?q=V[st+(dt[wt]&1)]:ut===1?q=V[st+(dt[wt]-1&1)]+1:q=ut-2,q>=N&&(q-=N),P[B]=q,V[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,V,dt){var rt=V+1,st=B&V,wt=dt.pos_&m.IBUF_MASK,ut;if(O<8||dt.bit_pos_+(O<<3)<dt.bit_end_pos_){for(;O-- >0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(ut=dt.bit_end_pos_-dt.bit_pos_>>3,wt+ut>m.IBUF_MASK){for(var q=m.IBUF_MASK+1-wt,Ft=0;Ft<q;Ft++)P[st+Ft]=dt.buf_[wt+Ft];ut-=q,st+=q,O-=q,wt=0}for(var Ft=0;Ft<ut;Ft++)P[st+Ft]=dt.buf_[wt+Ft];if(st+=ut,O-=ut,st>=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft<st;Ft++)P[Ft]=P[rt+Ft]}for(;st+O>=rt;){if(ut=rt-st,dt.input_.read(P,st,ut)<ut)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");N.write(P,rt),O-=ut,st=0}if(dt.input_.read(P,st,O)<O)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");dt.reset()}function Ce(N){var O=N.bit_pos_+7&-8,B=N.readBits(O-N.bit_pos_);return B==0}function zt(N){var O=new n(N),B=new m(O);ot(B);var P=E(B);return P.meta_block_length}a.BrotliDecompressedSize=zt;function nr(N,O){var B=new n(N);O==null&&(O=zt(N));var P=new Uint8Array(O),V=new l(P);return Ke(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}a.BrotliDecompressBuffer=nr;function Ke(N,O){var B,P=0,V=0,dt=0,rt,st=0,wt,ut,q,Ft,Jt=[16,15,11,4],ge=0,ee=0,Qt=0,Vt=[new Ot(0,0),new Ot(0,0),new Ot(0,0)],$t,re,pt,Kr=128+m.READ_SIZE;pt=new m(N),dt=ot(pt),rt=(1<<dt)-16,wt=1<<dt,ut=wt-1,q=new Uint8Array(wt+Kr+f.maxDictionaryWordLength),Ft=wt,$t=[],re=[];for(var Tr=0;Tr<3*H;Tr++)$t[Tr]=new c(0,0),re[Tr]=new c(0,0);for(;!V;){var Mt=0,ko,Fe=[1<<28,1<<28,1<<28],Ee=[0],ye=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pt,G,oe=null,j=null,Dt,F=null,C,ar=0,Tt=null,Q=0,ir=0,lr=null,It=0,xt=0,Gt=0,jt,qt;for(B=0;B<3;++B)Vt[B].codes=null,Vt[B].htrees=null;pt.readMoreInput();var Ge=E(pt);if(Mt=Ge.meta_block_length,P+Mt>O.buffer.length){var ur=new Uint8Array(P+Mt);ur.set(O.buffer),O.buffer=ur}if(V=Ge.input_end,ko=Ge.is_uncompressed,Ge.is_metadata){for(Ce(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(ko){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,ut,pt),P+=Mt;continue}for(B=0;B<3;++B)ye[B]=K(pt)+1,ye[B]>=2&&(et(ye[B]+2,$t,B*H,pt),et(b,re,B*H,pt),Fe[B]=ct(re,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<<i),Pt=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(ye[0]),B=0;B<ye[0];++B)pt.readMoreInput(),j[B]=pt.readBits(2)<<1;var Lt=J(ye[0]<<T,pt);Dt=Lt.num_htrees,oe=Lt.context_map;var se=J(ye[2]<<Y,pt);for(C=se.num_htrees,F=se.context_map,Vt[0]=new Ot(k,Dt),Vt[1]=new Ot(x,ye[1]),Vt[2]=new Ot(G,C),B=0;B<3;++B)Vt[B].decode(pt);for(Tt=0,lr=0,jt=j[Ee[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1],qt=Vt[1].htrees[0];Mt>0;){var Nt,ne,ue,_r,xs,fe,ve,je,Jr,Pr,Qr;for(pt.readMoreInput(),Fe[1]===0&&(St(ye[1],$t,1,Ee,w,M,pt),Fe[1]=ct(re,H,pt),qt=Vt[1].htrees[Ee[1]]),--Fe[1],Nt=S(Vt[1].codes,qt,pt),ne=Nt>>6,ne>=2?(ne-=2,ve=-1):ve=0,ue=h.kInsertRangeLut[ne]+(Nt>>3&7),_r=h.kCopyRangeLut[ne]+(Nt&7),xs=h.kInsertLengthPrefixCode[ue].offset+pt.readBits(h.kInsertLengthPrefixCode[ue].nbits),fe=h.kCopyLengthPrefixCode[_r].offset+pt.readBits(h.kCopyLengthPrefixCode[_r].nbits),ee=q[P-1&ut],Qt=q[P-2&ut],Pr=0;Pr<xs;++Pr)pt.readMoreInput(),Fe[0]===0&&(St(ye[0],$t,0,Ee,w,M,pt),Fe[0]=ct(re,0,pt),ar=Ee[0]<<T,Tt=ar,jt=j[Ee[0]],xt=g.lookupOffsets[jt],Gt=g.lookupOffsets[jt+1]),Jr=g.lookup[xt+ee]|g.lookup[Gt+Qt],Q=oe[Tt+Jr],--Fe[0],Qt=ee,ee=S(Vt[0].codes,Vt[0].htrees[Q],pt),q[P&ut]=ee,(P&ut)===ut&&O.write(q,wt),++P;if(Mt-=xs,Mt<=0)break;if(ve<0){var Jr;if(pt.readMoreInput(),Fe[2]===0&&(St(ye[2],$t,2,Ee,w,M,pt),Fe[2]=ct(re,2*H,pt),ir=Ee[2]<<Y,lr=ir),--Fe[2],Jr=(fe>4?3:fe-2)&255,It=F[lr+Jr],ve=S(Vt[2].codes,Vt[2].htrees[It],pt),ve>=U){var Cs,$n,$r;ve-=U,$n=ve&Pt,ve>>=i,Cs=(ve>>1)+1,$r=(2+(ve&1)<<Cs)-4,ve=U+($r+pt.readBits(Cs)<<i)+$n}}if(je=at(ve,Jt,ge),je<0)throw new Error("[BrotliDecompress] invalid distance");if(P<rt&&st!==rt?st=P:st=rt,Qr=P&ut,je>st)if(fe>=f.minDictionaryWordLength&&fe<=f.maxDictionaryWordLength){var $r=f.offsetsByLength[fe],ta=je-st-1,ea=f.sizeBitsByLength[fe],Xu=(1<<ea)-1,Ku=ta&Xu,ra=ta>>ea;if($r+=Ku*fe,ra<v.kNumTransforms){var Fs=v.transformDictionaryWord(q,Qr,$r,fe,ra);if(Qr+=Fs,P+=Fs,Mt-=Fs,Qr>=Ft){O.write(q,wt);for(var Oo=0;Oo<Qr-Ft;Oo++)q[Oo]=q[Ft+Oo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);else{if(ve>0&&(Jt[ge&3]=je,++ge),fe>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);for(Pr=0;Pr<fe;++Pr)q[P&ut]=q[P-je&ut],(P&ut)===ut&&O.write(q,wt),++P,--Mt}ee=q[P-1&ut],Qt=q[P-2&ut]}P&=1073741823}}O.write(q,P&ut)}a.BrotliDecompress=Ke,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,m=n.toByteArray(o("./dictionary.bin.js"));return l(m)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="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"},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,g){this.bits=d,this.value=g}a.HuffmanCode=n;var l=15;function m(d,g){for(var h=1<<g-1;d&h;)h>>=1;return(d&h-1)+h}function f(d,g,h,v,_){do v-=h,d[g+v]=new n(_.bits,_.value);while(v>0)}function c(d,g,h){for(var v=1<<g-h;g<l&&(v-=d[g],!(v<=0));)++g,v<<=1;return g-h}a.BrotliBuildHuffmanTable=function(d,g,h,v,_){var A=g,k,x,b,T,Y,I,D,H,$,bt,W,y=new Int32Array(l+1),L=new Int32Array(l+1);for(W=new Int32Array(_),b=0;b<_;b++)y[v[b]]++;for(L[1]=0,x=1;x<l;x++)L[x+1]=L[x]+y[x];for(b=0;b<_;b++)v[b]!==0&&(W[L[v[b]]++]=b);if(H=h,$=1<<H,bt=$,L[l]===1){for(T=0;T<bt;++T)d[g+T]=new n(0,W[0]&65535);return bt}for(T=0,b=0,x=1,Y=2;x<=h;++x,Y<<=1)for(;y[x]>0;--y[x])k=new n(x&255,W[b++]&65535),f(d,g+T,Y,$,k),T=m(T,x);for(D=bt-1,I=-1,x=h+1,Y=2;x<=l;++x,Y<<=1)for(;y[x]>0;--y[x])(T&D)!==I&&(g+=$,H=c(y,x,h),$=1<<H,bt+=$,I=T&D,d[A+I]=new n(H+h&255,g-A-I&65535)),k=new n(x-h&255,W[b++]&65535),f(d,g+(T>>h),Y,$,k),T=m(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=h,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],m=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function g(b){var T=b.length;if(T%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function h(b){var T=g(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function v(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=g(b),I=Y[0],D=Y[1],H=new m(v(b,I,D)),$=0,bt=D>0?I-4:I,W=0;W<bt;W+=4)T=l[b.charCodeAt(W)]<<18|l[b.charCodeAt(W+1)]<<12|l[b.charCodeAt(W+2)]<<6|l[b.charCodeAt(W+3)],H[$++]=T>>16&255,H[$++]=T>>8&255,H[$++]=T&255;return D===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),D===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,D=[],H=T;H<Y;H+=3)I=(b[H]<<16&16711680)+(b[H+1]<<8&65280)+(b[H+2]&255),D.push(A(I));return D.join("")}function x(b){for(var T,Y=b.length,I=Y%3,D=[],H=16383,$=0,bt=Y-I;$<bt;$+=H)D.push(k(b,$,$+H>bt?bt:$+H));return I===1?(T=b[Y-1],D.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],D.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),D.join("")}},{}],9:[function(o,s,a){function n(l,m){this.offset=l,this.nbits=m}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(m){this.buffer=m,this.pos=0}n.prototype.read=function(m,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)m[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(m){this.buffer=m,this.pos=0}l.prototype.write=function(m,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(m.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,m=1,f=2,c=3,d=4,g=5,h=6,v=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,D=16,H=17,$=18,bt=19,W=20;function y(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var E=0;E<ot.length;E++)this.prefix[E]=ot.charCodeAt(E);for(var E=0;E<gt.length;E++)this.suffix[E]=gt.charCodeAt(E)}var L=[new y("",l,""),new y("",l," "),new y(" ",l," "),new y("",b,""),new y("",k," "),new y("",l," the "),new y(" ",l,""),new y("s ",l," "),new y("",l," of "),new y("",k,""),new y("",l," and "),new y("",T,""),new y("",m,""),new y(", ",l," "),new y("",l,", "),new y(" ",k," "),new y("",l," in "),new y("",l," to "),new y("e ",l," "),new y("",l,'"'),new y("",l,"."),new y("",l,'">'),new y("",l,` -`),new y("",c,""),new y("",l,"]"),new y("",l," for "),new y("",Y,""),new y("",f,""),new y("",l," a "),new y("",l," that "),new y(" ",k,""),new y("",l,". "),new y(".",l,""),new y(" ",l,", "),new y("",I,""),new y("",l," with "),new y("",l,"'"),new y("",l," from "),new y("",l," by "),new y("",D,""),new y("",H,""),new y(" the ",l,""),new y("",d,""),new y("",l,". The "),new y("",x,""),new y("",l," on "),new y("",l," as "),new y("",l," is "),new y("",v,""),new y("",m,"ing "),new y("",l,` - `),new y("",l,":"),new y(" ",l,". "),new y("",l,"ed "),new y("",W,""),new y("",$,""),new y("",h,""),new y("",l,"("),new y("",k,", "),new y("",_,""),new y("",l," at "),new y("",l,"ly "),new y(" the ",l," of "),new y("",g,""),new y("",A,""),new y(" ",k,", "),new y("",k,'"'),new y(".",l,"("),new y("",x," "),new y("",k,'">'),new y("",l,'="'),new y(" ",l,"."),new y(".com/",l,""),new y(" the ",l," of the "),new y("",k,"'"),new y("",l,". This "),new y("",l,","),new y(".",l," "),new y("",k,"("),new y("",k,"."),new y("",l," not "),new y(" ",l,'="'),new y("",l,"er "),new y(" ",x," "),new y("",l,"al "),new y(" ",x,""),new y("",l,"='"),new y("",x,'"'),new y("",k,". "),new y(" ",l,"("),new y("",l,"ful "),new y(" ",k,". "),new y("",l,"ive "),new y("",l,"less "),new y("",x,"'"),new y("",l,"est "),new y(" ",k,"."),new y("",x,'">'),new y(" ",l,"='"),new y("",k,","),new y("",l,"ize "),new y("",x,"."),new y("\xC2\xA0",l,""),new y(" ",l,","),new y("",k,'="'),new y("",x,'="'),new y("",l,"ous "),new y("",x,", "),new y("",k,"='"),new y(" ",k,","),new y(" ",x,'="'),new y(" ",x,", "),new y("",x,","),new y("",x,"("),new y("",x,". "),new y(" ",x,"."),new y("",x,"='"),new y(" ",x,". "),new y(" ",k,'="'),new y(" ",x,"='"),new y(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function lt(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,E,S){var R=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ct<b?0:ct-(b-1),Ct=0,Yt=K,Ot;at>E&&(at=E);for(var J=0;J<R.length;)ot[K++]=R[J++];for(gt+=at,E-=at,ct<=A&&(E-=ct),Ct=0;Ct<E;Ct++)ot[K++]=n.dictionary[gt+Ct];if(Ot=K-E,ct===k)lt(ot,Ot);else if(ct===x)for(;E>0;){var St=lt(ot,Ot);Ot+=St,E-=St}for(var At=0;At<et.length;)ot[K++]=et[At++];return K-Yt}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ss=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Il=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var g=typeof ss=="function"&&ss;if(!d&&g)return g(c,!0);if(m)return m(c,!0);var h=new Error("Cannot find module '"+c+"'");throw h.code="MODULE_NOT_FOUND",h}var v=a[c]={exports:{}};s[c][0].call(v.exports,function(_){var A=s[c][1][_];return l(A||_)},v,v.exports,o,s,a,n)}return a[c].exports}for(var m=typeof ss=="function"&&ss,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var g=d.shift();if(g){if(typeof g!="object")throw new TypeError(g+"must be non-object");for(var h in g)l(g,h)&&(c[h]=g[h])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var m={arraySet:function(c,d,g,h,v){if(d.subarray&&c.subarray){c.set(d.subarray(g,g+h),v);return}for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){var d,g,h,v,_,A;for(h=0,d=0,g=c.length;d<g;d++)h+=c[d].length;for(A=new Uint8Array(h),v=0,d=0,g=c.length;d<g;d++)_=c[d],A.set(_,v),v+=_.length;return A}},f={arraySet:function(c,d,g,h,v){for(var _=0;_<h;_++)c[v+_]=d[g+_]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,m)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,m=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{m=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(g){var h,v,_,A,k,x=g.length,b=0;for(A=0;A<x;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),b+=v<128?1:v<2048?2:v<65536?3:4;for(h=new n.Buf8(b),k=0,A=0;k<b;A++)v=g.charCodeAt(A),(v&64512)===55296&&A+1<x&&(_=g.charCodeAt(A+1),(_&64512)===56320&&(v=65536+(v-55296<<10)+(_-56320),A++)),v<128?h[k++]=v:v<2048?(h[k++]=192|v>>>6,h[k++]=128|v&63):v<65536?(h[k++]=224|v>>>12,h[k++]=128|v>>>6&63,h[k++]=128|v&63):(h[k++]=240|v>>>18,h[k++]=128|v>>>12&63,h[k++]=128|v>>>6&63,h[k++]=128|v&63);return h};function d(g,h){if(h<65534&&(g.subarray&&m||!g.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(g,h));for(var v="",_=0;_<h;_++)v+=String.fromCharCode(g[_]);return v}a.buf2binstring=function(g){return d(g,g.length)},a.binstring2buf=function(g){for(var h=new n.Buf8(g.length),v=0,_=h.length;v<_;v++)h[v]=g.charCodeAt(v);return h},a.buf2string=function(g,h){var v,_,A,k,x=h||g.length,b=new Array(x*2);for(_=0,v=0;v<x;){if(A=g[v++],A<128){b[_++]=A;continue}if(k=f[A],k>4){b[_++]=65533,v+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&v<x;)A=A<<6|g[v++]&63,k--;if(k>1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(g,h){var v;for(h=h||g.length,h>g.length&&(h=g.length),v=h-1;v>=0&&(g[v]&192)===128;)v--;return v<0||v===0?h:v+f[g[v]]>h?v:h}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,m,f,c){for(var d=l&65535|0,g=l>>>16&65535|0,h=0;f!==0;){h=f>2e3?2e3:f,f-=h;do d=d+m[c++]|0,g=g+d|0;while(--h);d%=65521,g%=65521}return d|g<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var g=0;g<8;g++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function m(f,c,d,g){var h=l,v=g+d;f^=-1;for(var _=g;_<v;_++)f=f>>>8^h[(f^c[_])&255];return f^-1}s.exports=m},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,g,h,v,_,A,k,x,b,T,Y,I,D,H,$,bt,W,y,L,lt,ot,K,gt,E,S;d=f.state,g=f.next_in,E=f.input,h=g+(f.avail_in-5),v=f.next_out,S=f.output,_=v-(c-f.avail_out),A=v+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,D=d.bits,H=d.lencode,$=d.distcode,bt=(1<<d.lenbits)-1,W=(1<<d.distbits)-1;t:do{D<15&&(I+=E[g++]<<D,D+=8,I+=E[g++]<<D,D+=8),y=H[I&bt];e:for(;;){if(L=y>>>24,I>>>=L,D-=L,L=y>>>16&255,L===0)S[v++]=y&65535;else if(L&16){lt=y&65535,L&=15,L&&(D<L&&(I+=E[g++]<<D,D+=8),lt+=I&(1<<L)-1,I>>>=L,D-=L),D<15&&(I+=E[g++]<<D,D+=8,I+=E[g++]<<D,D+=8),y=$[I&W];r:for(;;){if(L=y>>>24,I>>>=L,D-=L,L=y>>>16&255,L&16){if(ot=y&65535,L&=15,D<L&&(I+=E[g++]<<D,D+=8,D<L&&(I+=E[g++]<<D,D+=8)),ot+=I&(1<<L)-1,ot>k){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,D-=L,L=v-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}else if(T<L){if(K+=x+T-L,L-=T,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);if(K=0,T<lt){L=T,lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}}}else if(K+=T-L,L<lt){lt-=L;do S[v++]=Y[K++];while(--L);K=v-ot,gt=S}for(;lt>2;)S[v++]=gt[K++],S[v++]=gt[K++],S[v++]=gt[K++],lt-=3;lt&&(S[v++]=gt[K++],lt>1&&(S[v++]=gt[K++]))}else{K=v-ot;do S[v++]=S[K++],S[v++]=S[K++],S[v++]=S[K++],lt-=3;while(lt>2);lt&&(S[v++]=S[K++],lt>1&&(S[v++]=S[K++]))}}else if((L&64)===0){y=$[(y&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break t}break}}else if((L&64)===0){y=H[(y&65535)+(I&(1<<L)-1)];continue e}else if(L&32){d.mode=l;break t}else{f.msg="invalid literal/length code",d.mode=n;break t}break}}while(g<h&&v<A);lt=D>>3,g-=lt,D-=lt<<3,I&=(1<<D)-1,f.next_in=g,f.next_out=v,f.avail_in=g<h?5+(h-g):5-(g-h),f.avail_out=v<A?257+(A-v):257-(v-A),d.hold=I,d.bits=D}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),m=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,g=1,h=2,v=4,_=5,A=6,k=0,x=1,b=2,T=-2,Y=-3,I=-4,D=-5,H=8,$=1,bt=2,W=3,y=4,L=5,lt=6,ot=7,K=8,gt=9,E=10,S=11,R=12,et=13,ct=14,at=15,Ct=16,Yt=17,Ot=18,J=19,St=20,At=21,Ce=22,zt=23,nr=24,Ke=25,N=26,O=27,B=28,P=29,V=30,dt=31,rt=32,st=852,wt=592,ut=15,q=ut;function Ft(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Jt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ge(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function ee(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,ge(w))}function Qt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,ee(w))}function Vt(w,M){var i,U;return w?(U=new Jt,w.state=U,U.window=null,i=Qt(w,M),i!==k&&(w.state=null),i):T}function $t(w){return Vt(w,q)}var re=!0,pt,Kr;function Tr(w){if(re){var M;for(pt=new n.Buf32(512),Kr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(g,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(h,w.lens,0,32,Kr,0,w.work,{bits:5}),re=!1}w.lencode=pt,w.lenbits=9,w.distcode=Kr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pt))),0}function ko(w,M){var i,U,Pt,G,oe,j,Dt,F,C,ar,Tt,Q,ir,lr,It=0,xt,Gt,jt,qt,Ge,ur,Lt,se,Nt=new n.Buf8(4),ne,ue,_r=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return T;i=w.state,i.mode===R&&(i.mode=et),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,ar=j,Tt=Dt,se=k;t:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=et;break}for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Lt,w.adler=i.check=1,i.mode=F&512?E:R,F=0,C=0;break;case bt:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==H){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=m(i.check,Nt,4,0)),F=0,C=0,i.mode=y;case y:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=m(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=lt;case lt:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.comment+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=m(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.comment=null);i.mode=gt;case gt:if(i.flags&512){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=R;break;case E:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Ft(F),F=0,C=0,i.mode=S;case S:if(i.havedict===0)return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=R;case R:if(M===_||M===A)break t;case et:if(i.last){F>>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(Tr(i),i.mode=St,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Yt;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Dt&&(Q=Dt),Q===0)break t;n.arraySet(Pt,U,G,Q,oe),j-=Q,G+=Q,Dt-=Q,oe+=Q,i.length-=Q;break}i.mode=R;break;case Yt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=Ot;case Ot:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.lens[_r[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[_r[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,ne={bits:i.lenbits},se=c(d,i.lens,0,19,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(jt<16)F>>>=xt,C-=xt,i.lens[i.have++]=jt;else{if(jt===16){for(ue=xt+2;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F>>>=xt,C-=xt,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ue=xt+3;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ue=xt+7;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=xt,C-=xt,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,ne={bits:i.lenbits},se=c(g,i.lens,0,i.nlen,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,ne={bits:i.distbits},se=c(h,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,ne),i.distbits=ne.bits,se){w.msg="invalid distances set",i.mode=V;break}if(i.mode=St,M===A)break t;case St:i.mode=At;case At:if(j>=6&&Dt>=258){w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===R&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<<i.lenbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(Gt&&(Gt&240)===0){for(qt=xt,Ge=Gt,ur=jt;It=i.lencode[ur+((F&(1<<qt+Ge)-1)>>qt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=xt,C-=xt,i.back+=xt,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=R;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Gt&15,i.mode=Ce;case Ce:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<<i.distbits)-1],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((Gt&240)===0){for(qt=xt,Ge=Gt,ur=jt;It=i.distcode[ur+((F&(1<<qt+Ge)-1)>>qt)],xt=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+xt<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=xt,C-=xt,i.back+=xt,Gt&64){w.msg="invalid distance code",i.mode=V;break}i.offset=jt,i.extra=Gt&15,i.mode=nr;case nr:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Ke;case Ke:if(Dt===0)break t;if(Q=Tt-Dt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ir=i.wsize-Q):ir=i.wnext-Q,Q>i.length&&(Q=i.length),lr=i.window}else lr=Pt,ir=oe-i.offset,Q=i.length;Q>Dt&&(Q=Dt),Dt-=Q,i.length-=Q;do Pt[oe++]=lr[ir++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Dt===0)break t;Pt[oe++]=i.length,Dt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<<C,C+=8}if(Tt-=Dt,w.total_out+=Tt,i.total+=Tt,Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,oe-Tt):l(i.check,Pt,Tt,oe-Tt)),Tt=Dt,(i.flags?F:Ft(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=P;case P:se=x;break t;case V:se=Y;break t;case dt:return I;case rt:default:return T}return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Tt!==w.avail_out&&i.mode<V&&(i.mode<O||M!==v))&&Mt(w,w.output,w.next_out,Tt-w.avail_out)?(i.mode=dt,I):(ar-=w.avail_in,Tt-=w.avail_out,w.total_in+=ar,w.total_out+=Tt,i.total+=Tt,i.wrap&&Tt&&(w.adler=i.check=i.flags?m(i.check,Pt,Tt,w.next_out-Tt):l(i.check,Pt,Tt,w.next_out-Tt)),w.data_type=i.bits+(i.last?64:0)+(i.mode===R?128:0)+(i.mode===St||i.mode===at?256:0),(ar===0&&Tt===0||M===v)&&se===k&&(se=D),se)}function Fe(w){if(!w||!w.state)return T;var M=w.state;return M.window&&(M.window=null),w.state=null,k}function Ee(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?T:(i.head=M,M.done=!1,k)}function ye(w,M){var i=M.length,U,Pt,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==S)?T:U.mode===S&&(Pt=1,Pt=l(Pt,M,i,0),Pt!==U.check)?Y:(G=Mt(w,M,i,i),G?(U.mode=dt,I):(U.havedict=1,k))}a.inflateReset=ee,a.inflateReset2=Qt,a.inflateResetKeep=ge,a.inflateInit=$t,a.inflateInit2=Vt,a.inflate=ko,a.inflateEnd=Fe,a.inflateGetHeader=Ee,a.inflateSetDictionary=ye,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,m=852,f=592,c=0,d=1,g=2,h=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],v=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(x,b,T,Y,I,D,H,$){var bt=$.bits,W=0,y=0,L=0,lt=0,ot=0,K=0,gt=0,E=0,S=0,R=0,et,ct,at,Ct,Yt,Ot=null,J=0,St,At=new n.Buf16(l+1),Ce=new n.Buf16(l+1),zt=null,nr=0,Ke,N,O;for(W=0;W<=l;W++)At[W]=0;for(y=0;y<Y;y++)At[b[T+y]]++;for(ot=bt,lt=l;lt>=1&&At[lt]===0;lt--);if(ot>lt&&(ot=lt),lt===0)return I[D++]=1<<24|64<<16|0,I[D++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<lt&&At[L]===0;L++);for(ot<L&&(ot=L),E=1,W=1;W<=l;W++)if(E<<=1,E-=At[W],E<0)return-1;if(E>0&&(x===c||lt!==1))return-1;for(Ce[1]=0,W=1;W<l;W++)Ce[W+1]=Ce[W]+At[W];for(y=0;y<Y;y++)b[T+y]!==0&&(H[Ce[b[T+y]]++]=y);if(x===c?(Ot=zt=H,St=19):x===d?(Ot=h,J-=257,zt=v,nr-=257,St=256):(Ot=_,zt=A,St=-1),R=0,y=0,W=L,Yt=D,K=ot,gt=0,at=-1,S=1<<ot,Ct=S-1,x===d&&S>m||x===g&&S>f)return 1;for(;;){Ke=W-gt,H[y]<St?(N=0,O=H[y]):H[y]>St?(N=zt[nr+H[y]],O=Ot[J+H[y]]):(N=96,O=0),et=1<<W-gt,ct=1<<K,L=ct;do ct-=et,I[Yt+(R>>gt)+ct]=Ke<<24|N<<16|O|0;while(ct!==0);for(et=1<<W-1;R&et;)et>>=1;if(et!==0?(R&=et-1,R+=et):R=0,y++,--At[W]===0){if(W===lt)break;W=b[T+H[y]]}if(W>ot&&(R&Ct)!==at){for(gt===0&&(gt=ot),Yt+=L,K=W-gt,E=1<<K;K+gt<lt&&(E-=At[K+gt],!(E<=0));)K++,E<<=1;if(S+=1<<K,x===d&&S>m||x===g&&S>f)return 1;at=R&Ct,I[at]=ot<<24|K<<16|Yt-D|0}}return R!==0&&(I[Yt+R]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),m=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),g=o("./zlib/gzheader"),h=Object.prototype.toString;function v(k){if(!(this instanceof v))return new v(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new g,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=m.string2buf(x.dictionary):h.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}v.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,D,H,$,bt,W=!1;if(this.ended)return!1;D=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=m.binstring2buf(k):h.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(D===f.Z_FINISH||D===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=m.utf8border(b.output,b.next_out),$=b.next_out-H,bt=m.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(D=f.Z_FINISH),D===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(D===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},v.prototype.onData=function(k){this.chunks.push(k)},v.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new v(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=v,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var ww=globalThis.fetch,ns=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},od=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;r<o&&t.__mayPropagate;r++)e[r](t)}},sd=new Date("1904-01-01T00:00:00+0000").getTime();function nd(t){return Array.from(t).map(e=>String.fromCharCode(e)).join("")}var ad=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return nd([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(sd+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new ad(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var id=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new ld(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},ld=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},Ll=Il.inflate||void 0,Bl=void 0,ud=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new fd(o)),cd(this,e,r)}},fd=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function cd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(Ll)l=Ll(new Uint8Array(n));else if(Bl)l=Bl(new Uint8Array(n));else{let m="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(m),new Error(m)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Vl=Rl,Dl=void 0,dd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new md(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,m)=>{let f=this.directory[m+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Vl)a=Vl(new Uint8Array(n));else if(Dl)a=new Uint8Array(Dl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}pd(this,a,r)}},md=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=hd(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function pd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function hd(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var Hl={},Wl=!1;Promise.all([Promise.resolve().then(function(){return Ud}),Promise.resolve().then(function(){return Wd}),Promise.resolve().then(function(){return qd}),Promise.resolve().then(function(){return Kd}),Promise.resolve().then(function(){return Qd}),Promise.resolve().then(function(){return om}),Promise.resolve().then(function(){return nm}),Promise.resolve().then(function(){return im}),Promise.resolve().then(function(){return ym}),Promise.resolve().then(function(){return _m}),Promise.resolve().then(function(){return hp}),Promise.resolve().then(function(){return yp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return Tp}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Rp}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Mp}),Promise.resolve().then(function(){return jp}),Promise.resolve().then(function(){return Wp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return Xp}),Promise.resolve().then(function(){return Jp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return eh}),Promise.resolve().then(function(){return oh}),Promise.resolve().then(function(){return ah}),Promise.resolve().then(function(){return dh}),Promise.resolve().then(function(){return gh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Th}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Rh}),Promise.resolve().then(function(){return Dh}),Promise.resolve().then(function(){return zh}),Promise.resolve().then(function(){return jh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];Hl[r]=e[r]}),Wl=!0});function gd(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=Hl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function yd(){let t=0;function e(r,o){if(!Wl)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(gd)}return new Promise((r,o)=>e(r))}function vd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function bd(t,e,r={}){if(!globalThis.document)return;let o=vd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` +var rf=Object.create;var sa=Object.defineProperty;var of=Object.getOwnPropertyDescriptor;var sf=Object.getOwnPropertyNames;var nf=Object.getPrototypeOf,af=Object.prototype.hasOwnProperty;var ce=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var lf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of sf(e))!af.call(t,s)&&s!==r&&sa(t,s,{get:()=>e[s],enumerable:!(o=of(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?rf(nf(t)):{},lf(e||!t||!t.__esModule?sa(r,"default",{value:t,enumerable:!0}):r,t));var it=Ht((ly,na)=>{na.exports=window.wp.i18n});var X=Ht((uy,aa)=>{aa.exports=window.wp.components});var z=Ht((fy,ia)=>{ia.exports=window.ReactJSXRuntime});var vt=Ht((dy,ua)=>{ua.exports=window.wp.element});var Ar=Ht((hy,pa)=>{pa.exports=window.React});var Er=Ht((Yy,Ba)=>{Ba.exports=window.wp.primitives});var zs=Ht((lv,Va)=>{Va.exports=window.wp.privateApis});var mr=Ht((mv,Na)=>{Na.exports=window.wp.compose});var Wa=Ht((kv,Ha)=>{Ha.exports=window.wp.editor});var we=Ht((Ov,Ya)=>{Ya.exports=window.wp.coreData});var de=Ht((Tv,qa)=>{qa.exports=window.wp.data});var Ir=Ht((_v,Za)=>{Za.exports=window.wp.blocks});var ae=Ht((Pv,Xa)=>{Xa.exports=window.wp.blockEditor});var Ja=Ht((Bv,Ka)=>{Ka.exports=window.wp.styleEngine});var ri=Ht((qv,ei)=>{"use strict";ei.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var ai=Ht((Xv,ni)=>{"use strict";var Mf=function(e){return Gf(e)&&!jf(e)};function Gf(t){return!!t&&typeof t=="object"}function jf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Wf(t)}var Uf=typeof Symbol=="function"&&Symbol.for,Hf=Uf?Symbol.for("react.element"):60103;function Wf(t){return t.$$typeof===Hf}function Yf(t){return Array.isArray(t)?[]:{}}function io(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Br(Yf(t),t,e):t}function qf(t,e,r){return t.concat(e).map(function(o){return io(o,r)})}function Zf(t,e){if(!e.customMerge)return Br;var r=e.customMerge(t);return typeof r=="function"?r:Br}function Xf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function oi(t){return Object.keys(t).concat(Xf(t))}function si(t,e){try{return e in t}catch{return!1}}function Kf(t,e){return si(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function Jf(t,e,r){var o={};return r.isMergeableObject(t)&&oi(t).forEach(function(s){o[s]=io(t[s],r)}),oi(e).forEach(function(s){Kf(t,s)||(si(t,s)&&r.isMergeableObject(e[s])?o[s]=Zf(s,r)(t[s],e[s],r):o[s]=io(e[s],r))}),o}function Br(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||qf,r.isMergeableObject=r.isMergeableObject||Mf,r.cloneUnlessOtherwiseSpecified=io;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):Jf(t,e,r):io(e,r)}Br.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Br(o,s,r)},{})};var Qf=Br;ni.exports=Qf});var pn=Ht((ub,ol)=>{ol.exports=window.wp.keycodes});var ll=Ht((wb,il)=>{il.exports=window.wp.apiFetch});var Bu=Ht((UF,Lu)=>{Lu.exports=window.wp.date});function la(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e<s;e++)t[e]&&(r=la(t[e]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}function uf(){for(var t,e,r=0,o="",s=arguments.length;r<s;r++)(t=arguments[r])&&(e=la(t))&&(o&&(o+=" "),o+=e);return o}var be=uf;var fa=u(vt(),1),ca=u(z(),1),da=(0,fa.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...s},a)=>(0,ca.jsx)(o,{ref:a,className:be("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));da.displayName="NavigableRegion";var ma=da;var ga=u(Ar(),1),ha={};function Os(t,e){let r=ga.useRef(ha);return r.current===ha&&(r.current=t(e)),r}function ff(t,e){return function(o,...s){let a=new URL(t);return a.searchParams.set("code",o.toString()),s.forEach(n=>a.searchParams.append("args[]",n)),`${e} error #${o}; visit ${a} for the full message.`}}var cf=ff("https://base-ui.com/production-error","Base UI"),ya=cf;var fr=u(Ar(),1);function Ts(t,e,r,o){let s=Os(ba).current;return df(s,t,e,r,o)&&wa(s,[t,e,r,o]),s.callback}function va(t){let e=Os(ba).current;return mf(e,t)&&wa(e,t),e.callback}function ba(){return{callback:null,cleanup:null,refs:[]}}function df(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function mf(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function wa(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}t.cleanup=()=>{for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var Ca=u(Ar(),1);var Sa=u(Ar(),1),pf=parseInt(Sa.version,10);function xa(t){return pf>=t}function _s(t){if(!Ca.isValidElement(t))return null;let e=t,r=e.props;return(xa(19)?r?.ref:e.ref)??null}function to(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Fa(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function ka(t,e){return typeof t=="function"?t(e):t}function Oa(t,e){return typeof t=="function"?t(e):t}var Ps={};function ro(t,e,r,o,s){if(!r&&!o&&!s&&!t)return To(e);let a=To(t);return e&&(a=eo(a,e)),r&&(a=eo(a,r)),o&&(a=eo(a,o)),s&&(a=eo(a,s)),a}function Ta(t){if(t.length===0)return Ps;if(t.length===1)return To(t[0]);let e=To(t[0]);for(let r=1;r<t.length;r+=1)e=eo(e,t[r]);return e}function To(t){return As(t)?{...Pa(t,Ps)}:hf(t)}function eo(t,e){return As(e)?Pa(e,t):gf(t,e)}function hf(t){let e={...t};for(let r in e){let o=e[r];_a(r,o)&&(e[r]=Aa(o))}return e}function gf(t,e){if(!e)return t;for(let r in e){let o=e[r];switch(r){case"style":{t[r]=to(t.style,o);break}case"className":{t[r]=Es(t.className,o);break}default:_a(r,o)?t[r]=yf(t[r],o):t[r]=o}}return t}function _a(t,e){let r=t.charCodeAt(0),o=t.charCodeAt(1),s=t.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function As(t){return typeof t=="function"}function Pa(t,e){return As(t)?t(e):t??Ps}function yf(t,e){return e?t?r=>{if(Ra(r)){let s=r;Ea(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:Aa(e):t}function Aa(t){return t&&(e=>(Ra(e)&&Ea(e),t(e)))}function Ea(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Es(t,e){return e?t?e+" "+t:e:t}function Ra(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var vf=Object.freeze([]),ur=Object.freeze({});var bf="data-base-ui-swipe-ignore",wf="data-swipe-ignore",Ay=`[${bf}]`,Ey=`[${wf}]`;var Rs=u(Ar(),1);function Ia(t,e,r={}){let o=e.render,s=Sf(e,r);if(r.enabled===!1)return null;let a=r.state??ur;return Ff(t,o,s,a)}function Sf(t,e={}){let{className:r,style:o,render:s}=t,{state:a=ur,ref:n,props:l,stateAttributesMapping:h,enabled:f=!0}=e,c=f?ka(r,a):void 0,d=f?Oa(o,a):void 0,m=f?Fa(a,h):ur,g=f&&l?xf(l):void 0,y=f?to(m,g)??{}:ur;return typeof document<"u"&&(f?Array.isArray(n)?y.ref=va([y.ref,_s(s),...n]):y.ref=Ts(y.ref,_s(s),n):Ts(null,null)),f?(c!==void 0&&(y.className=Es(y.className,c)),d!==void 0&&(y.style=to(y.style,d)),y):ur}function xf(t){return Array.isArray(t)?Ta(t):ro(void 0,t)}var Cf=Symbol.for("react.lazy");function Ff(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=ro(r,e.props);s.ref=r.ref;let a=e;return a?.$$typeof===Cf&&(a=fr.Children.toArray(e)[0]),fr.cloneElement(a,s)}if(t&&typeof t=="string")return kf(t,r);throw new Error(ya(8))}function kf(t,e){return t==="button"?(0,Rs.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,Rs.createElement)("img",{alt:"",...e,key:e.key}):fr.createElement(t,e)}function La(t){return Ia(t.defaultTagName??"div",t,t)}var _o=u(vt(),1),oo=(0,_o.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,_o.cloneElement)(t,{width:e,height:e,...r,ref:o}));var Po=u(Er(),1),Is=u(z(),1),cr=(0,Is.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Po.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Ao=u(Er(),1),Ls=u(z(),1),dr=(0,Ls.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ls.jsx)(Ao.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Eo=u(Er(),1),Bs=u(z(),1),Vs=(0,Bs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bs.jsx)(Eo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Ro=u(Er(),1),Ds=u(z(),1),Io=(0,Ds.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Ro.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Lo=u(Er(),1),Ns=u(z(),1),Bo=(0,Ns.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ns.jsx)(Lo.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Da=u(vt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","b51ff41489"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var Of={stack:"_19ce0419607e1896__stack"},Tf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Rr=(0,Da.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},h){let f={gap:r&&Tf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return La({render:n,ref:h,props:ro(l,{style:f,className:Of.stack})})});var za=u(X(),1),{Fill:Ma,Slot:Ga}=(0,za.createSlotFill)("SidebarToggle");var Re=u(z(),1);function ja({headingLevel:t=2,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Re.jsxs)(Rr,{direction:"column",className:"admin-ui-page__header",render:(0,Re.jsx)("header",{}),children:[(0,Re.jsxs)(Rr,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Re.jsxs)(Rr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Re.jsx)(Ga,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Re.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Re.jsx)(Rr,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Re.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var so=u(z(),1);function Ua({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,ariaLabel:h,hasPadding:f=!1,showSidebarToggle:c=!0}){let d=be("admin-ui-page",n);return(0,so.jsxs)(ma,{className:d,ariaLabel:h??(typeof o=="string"?o:""),children:[(o||e||r||l)&&(0,so.jsx)(ja,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:c}),f?(0,so.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Ua.SidebarToggleFill=Ma;var Ms=Ua;var Xr=u(it()),Ku=u(X()),Ju=u(Wa()),xs=u(we()),Qu=u(de()),$u=u(vt());var qu=u(X(),1),Zu=u(Ir(),1),Jg=u(de(),1),Qg=u(ae(),1),Xn=u(vt(),1),$g=u(mr(),1);function Lr(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var Se=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var _f=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function Gs(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return Se(t,a)??Se(t,n);let l={};return _f.forEach(h=>{let f=Se(t,`settings${o}.${h}`)??Se(t,`settings.${h}`);f!==void 0&&(l=Lr(l,h.split("."),f))}),l}function js(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Lr(t,n.split("."),r)}var Vf=u(Ja(),1);var Pf="1600px",Af="320px",Ef=1,Rf=.25,If=.75,Lf="14px";function Qa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=Af,maximumViewportWidth:s=Pf,scaleFactor:a=Ef,minimumFontSizeLimit:n}){if(n=Ie(n)?n:Lf,r){let b=Ie(r);if(!b?.unit||!b?.value)return null;let T=Ie(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),Rf),If),D=no(b.value*I,3);T?.value&&D<T?.value?t=`${T.value}${T.unit}`:t=`${D}${b.unit}`}}let l=Ie(t),h=l?.unit||"rem",f=Ie(e,{coerceTo:h});if(!l||!f)return null;let c=Ie(t,{coerceTo:"rem"}),d=Ie(s,{coerceTo:h}),m=Ie(o,{coerceTo:h});if(!d||!m||!c)return null;let g=d.value-m.value;if(!g)return null;let y=no(m.value/100,3),_=no(y,3)+h,A=100*((f.value-l.value)/g),k=no((A||1)*a,3),x=`${c.value}${c.unit} + ((1vw - ${_}) * ${k})`;return`clamp(${t}, ${x}, ${e})`}function Ie(t,e={}){if(typeof t!="string"&&typeof t!="number")return null;isFinite(t)&&(t=`${t}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...e},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=t.toString().match(n);if(!l||l.length<3)return null;let[,h,f]=l,c=parseFloat(h);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:no(c,3),unit:f}:null}function no(t,e=3){let r=Math.pow(10,e);return Math.round(t*r)/r}function Us(t){let e=t?.fluid;return e===!0||e&&typeof e=="object"&&Object.keys(e).length>0}function Bf(t){let e=t?.typography??{},r=t?.layout,o=Ie(r?.wideSize)?r?.wideSize:null;return Us(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function $a(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!Us(e?.typography)&&!Us(t))return r;let o=Bf(e)?.fluid??{},s=Qa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Df=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>$a(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function ti(t,e,r=[],o="slug",s){let a=[e?Se(t,["blocks",e,...r]):void 0,Se(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let h of l){let f=n[h];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||ti(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Nf(t,e,r,[o,s]=[]){let a=Df.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=ti(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,h=n[l];return Vo(t,e,h)}return r}function zf(t,e,r,o=[]){let s=(e?Se(t?.settings??{},["blocks",e,"custom",...o]):void 0)??Se(t?.settings??{},["custom",...o]);return s?Vo(t,e,s):r}function Vo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=Se(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...h]=n;return l==="preset"?Nf(t,e,r,h):l==="custom"?zf(t,e,r,h):r}function Do(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=Se(t,a);return o?Vo(t,r,n):n}function Hs(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Lr(t,a.split("."),r)}var Ws=u(ri(),1);function ao(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Ws.default)(t?.styles,e?.styles)&&(0,Ws.default)(t?.settings,e?.settings)}var ui=u(ai(),1);function ii(t){return Object.prototype.toString.call(t)==="[object Object]"}function li(t){var e,r;return ii(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ii(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function pr(t,e){return(0,ui.default)(t,e,{isMergeableObject:li,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var $f={grad:.9,turn:360,rad:360/(2*Math.PI)},Ue=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Zt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},ke=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},yi=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},fi=function(t){return{r:ke(t.r,0,255),g:ke(t.g,0,255),b:ke(t.b,0,255),a:ke(t.a)}},Ys=function(t){return{r:Zt(t.r),g:Zt(t.g),b:Zt(t.b),a:Zt(t.a,3)}},tc=/^#([0-9a-f]{3,8})$/i,No=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},vi=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},bi=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),h=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,h,o][f],g:255*[h,o,o,l,n,n][f],b:255*[n,n,h,o,o,l][f],a:s}},ci=function(t){return{h:yi(t.h),s:ke(t.s,0,100),l:ke(t.l,0,100),a:ke(t.a)}},di=function(t){return{h:Zt(t.h),s:Zt(t.s),l:Zt(t.l),a:Zt(t.a,3)}},mi=function(t){return bi((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},lo=function(t){return{h:(e=vi(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},ec=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,oc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,sc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Xs={string:[[function(t){var e=tc.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Zt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Zt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=oc.exec(t)||sc.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:fi({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=ec.exec(t)||rc.exec(t);if(!e)return null;var r,o,s=ci({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*($f[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return mi(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return Ue(e)&&Ue(r)&&Ue(o)?fi({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=ci({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return mi(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=(function(l){return{h:yi(l.h),s:ke(l.s,0,100),v:ke(l.v,0,100),a:ke(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return bi(n)},"hsv"]]},pi=function(t,e){for(var r=0;r<e.length;r++){var o=e[r][0](t);if(o)return[o,e[r][1]]}return[null,void 0]},nc=function(t){return typeof t=="string"?pi(t.trim(),Xs.string):typeof t=="object"&&t!==null?pi(t,Xs.object):[null,void 0]};var qs=function(t,e){var r=lo(t);return{h:r.h,s:ke(r.s+100*e,0,100),l:r.l,a:r.a}},Zs=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},hi=function(t,e){var r=lo(t);return{h:r.h,s:r.s,l:ke(r.l+100*e,0,100),a:r.a}},Ks=(function(){function t(e){this.parsed=nc(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return Zt(Zs(this.rgba),2)},t.prototype.isDark=function(){return Zs(this.rgba)<.5},t.prototype.isLight=function(){return Zs(this.rgba)>=.5},t.prototype.toHex=function(){return e=Ys(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?No(Zt(255*a)):"","#"+No(r)+No(o)+No(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ys(this.rgba)},t.prototype.toRgbString=function(){return e=Ys(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return di(lo(this.rgba))},t.prototype.toHslString=function(){return e=di(lo(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=vi(this.rgba),{h:Zt(e.h),s:Zt(e.s),v:Zt(e.v),a:Zt(e.a,3)};var e},t.prototype.invert=function(){return Le({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Le(qs(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Le(qs(this.rgba,-e))},t.prototype.grayscale=function(){return Le(qs(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Le(hi(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Le(hi(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Le({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Zt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=lo(this.rgba);return typeof e=="number"?Le({h:e,s:r.s,l:r.l,a:r.a}):Zt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Le(e).toHex()},t})(),Le=function(t){return t instanceof Ks?t:new Ks(t)},gi=[],wi=function(t){t.forEach(function(e){gi.indexOf(e)<0&&(e(Ks,Xs),gi.push(e))})};var Js=u(vt(),1);var Si=u(vt(),1),Kt=(0,Si.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var xi=u(z(),1);function uo({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Js.useMemo)(()=>pr(r,e),[r,e]),n=(0,Js.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,xi.jsx)(Kt.Provider,{value:n,children:t})}var He=u(X(),1),Gi=u(it(),1);var bc=u(de(),1),wc=u(we(),1);var Ci=u(z(),1);function Qs({className:t,...e}){return(0,Ci.jsx)(oo,{className:be(t,"global-styles-ui-icon-with-current-color"),...e})}var Je=u(X(),1);var hr=u(z(),1);function ac({icon:t,children:e,...r}){return(0,hr.jsxs)(Je.__experimentalItem,{...r,children:[t&&(0,hr.jsxs)(Je.__experimentalHStack,{justify:"flex-start",children:[(0,hr.jsx)(Qs,{icon:t,size:24}),(0,hr.jsx)(Je.FlexItem,{children:e})]}),!t&&e]})}function Be(t){return(0,hr.jsx)(Je.Navigator.Button,{as:ac,...t})}var uc=u(X(),1);var fc=u(it(),1),Ai=u(ae(),1);var $s=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},tn=function(t){return .2126*$s(t.r)+.7152*$s(t.g)+.0722*$s(t.b)};function Fi(t){t.prototype.luminance=function(){return e=tn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,h,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=tn(a),h=tn(n),r=l>h?(l+.05)/(h+.05):(h+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Ae=u(vt(),1),Ti=u(de(),1),_i=u(we(),1),rn=u(it(),1);var Wt=u(it(),1),v1={link:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus-visible")},{value:":active",label:(0,Wt.__)("Active")}],button:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus-visible")},{value:":active",label:(0,Wt.__)("Active")}]},b1={"core/button":[{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus-visible")},{value:":active",label:(0,Wt.__)("Active")}]};function en(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&en(t[r],e);return t}var zo=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=zo(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function fo(t,e){let r=zo(structuredClone(t),e);return ao(r,t)}function ki(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function Oi(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=ki(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=ki(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}wi([Fi]);function kt(t,e,r="merged",o=!0,s){let{user:a,base:n,merged:l,onChange:h}=(0,Ae.useContext)(Kt),f=l;r==="base"?f=n:r==="user"&&(f=a);let c=(0,Ae.useMemo)(()=>{let m=Do(f,t,e,o);return s?m?.[s]??{}:m},[f,t,e,o,s]),d=(0,Ae.useCallback)(m=>{let g=m;s&&(g={...Do(a,t,e,!1),[s]:m});let y=Hs(a,t,g,e);h(y)},[a,h,t,e,s]);return[c,d]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Ae.useContext)(Kt),l=a;r==="base"?l=s:r==="user"&&(l=o);let h=(0,Ae.useMemo)(()=>Gs(l,t,e),[l,t,e]),f=(0,Ae.useCallback)(c=>{let d=js(o,t,c,e);n(d)},[o,n,t,e]);return[h,f]}var ic=[];function lc({title:t,settings:e,styles:r}){return t===(0,rn.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function Mo(t=[]){let{variationsFromTheme:e}=(0,Ti.useSelect)(o=>({variationsFromTheme:o(_i.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||ic}),[]),{user:r}=(0,Ae.useContext)(Kt);return(0,Ae.useMemo)(()=>{let o=structuredClone(r),s=en(o,t);s.title=(0,rn.__)("Default");let a=e.filter(l=>fo(l,t)).map(l=>pr(s,l)),n=[s,...a];return n?.length?n.filter(lc):[]},[t,r,e])}var Pi=u(zs(),1),{lock:T1,unlock:yt}=(0,Pi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var on=u(z(),1),{useHasDimensionsPanel:R1,useHasTypographyPanel:I1,useHasColorPanel:L1,useSettingsForBlockElement:B1,useHasBackgroundPanel:V1}=yt(Ai.privateApis);var Ve=u(X(),1);function Vr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],h=(n??[]).concat(l??[]).concat(a??[]),f=h.filter(({color:m})=>m===t),c=h.filter(({color:m})=>m===s),d=f.concat(c).concat(h).filter(({color:m})=>m!==e).slice(0,2);return{paletteColors:h,highlightedColors:d}}var Ii=u(vt(),1),Li=u(X(),1),nn=u(it(),1);function cc(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function dc(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Ei(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function sn(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Dr(t){let e={fontFamily:Ei(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=dc(r),s=cc(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function Ri(t){return{fontFamily:Ei(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var co=u(z(),1);function Go({fontSize:t,variation:e}){let{base:r}=(0,Ii.useContext)(Kt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=Oi(o),l=a?Dr(a):{},h=n?Dr(n):{};return s&&(l.color=s,h.color=s),t&&(l.fontSize=t,h.fontSize=t),(0,co.jsxs)(Li.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,co.jsx)("span",{style:h,children:(0,nn._x)("A","Uppercase letter A")}),(0,co.jsx)("span",{style:l,children:(0,nn._x)("a","Lowercase letter A")})]})}var Bi=u(X(),1);var Vi=u(z(),1);function Di({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Vr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Vi.jsx)(Bi.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Mi=u(X(),1),Nr=u(mr(),1),gr=u(vt(),1);var Qe=u(z(),1),Ni=248,zi=152,mc={leading:!0,trailing:!0};function pc({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Nr.useReducedMotion)(),[l,h]=(0,gr.useState)(!1),[f,{width:c}]=(0,Nr.useResizeObserver)(),[d,m]=(0,gr.useState)(c),[g,y]=(0,gr.useState)(),_=(0,Nr.useThrottle)(m,250,mc);(0,gr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,gr.useLayoutEffect)(()=>{let b=d?d/Ni:1,T=b-(g||0);(Math.abs(T)>.1||!g)&&y(b)},[d,g]);let A=c?c/Ni:1,k=g||A;return(0,Qe.jsxs)(Qe.Fragment,{children:[(0,Qe.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qe.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:zi*k},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),tabIndex:-1,children:(0,Qe.jsx)(Mi.__unstableMotion.div,{style:{height:zi*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var zr=pc;var me=u(z(),1),hc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},gc={hover:{opacity:1},start:{opacity:.5}},yc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function vc({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[h="black"]=kt("color.text"),[f=h]=kt("elements.h1.color.text"),{paletteColors:c}=Vr();return(0,me.jsxs)(zr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:m})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:hc,style:{height:"100%",overflow:"hidden"},children:(0,me.jsxs)(Ve.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,me.jsx)(Go,{fontSize:65*d,variation:o}),(0,me.jsx)(Ve.__experimentalVStack,{spacing:4*d,children:(0,me.jsx)(Di,{normalizedColorSwatchSize:32,ratio:d})})]})},m),({key:d})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:r?gc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,me.jsx)(Ve.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:m},g)=>(0,me.jsx)("div",{style:{height:"100%",background:m,flexGrow:1}},g))})},d),({ratio:d,key:m})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:yc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,me.jsx)(Ve.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,me.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},m)]})}var an=vc;var ji=u(z(),1);var un=u(Ir(),1),Mr=u(it(),1),vr=u(X(),1),fn=u(de(),1),$e=u(vt(),1),jo=u(ae(),1),Zi=u(mr(),1);import{speak as Fc}from"@wordpress/a11y";var Ui=u(Ir(),1),Hi=u(de(),1),Sc=u(X(),1);var xc=u(z(),1);function Cc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function ln(t){let e=(0,Hi.useSelect)(s=>{let{getBlockStyles:a}=s(Ui.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return Cc(e,o)}var yr=u(X(),1),Wi=u(it(),1);var Yi=u(ae(),1);var qi=u(z(),1),{StateControl:d0}=yt(Yi.privateApis);var De=u(z(),1),{useHasDimensionsPanel:kc,useHasTypographyPanel:Oc,useHasBorderPanel:Tc,useSettingsForBlockElement:_c,useHasColorPanel:Pc}=yt(jo.privateApis);function Ac(){let t=(0,fn.useSelect)(s=>s(un.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function Ec(t){let[e]=_t("",t),r=_c(e,t),o=Oc(r),s=Pc(r),a=Tc(r),n=kc(r),l=a||n,h=!!ln(t)?.length;return o||s||l||h}function Rc({block:t}){return Ec(t.name)?(0,De.jsx)(Be,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,De.jsxs)(vr.__experimentalHStack,{justify:"flex-start",children:[(0,De.jsx)(jo.BlockIcon,{icon:t.icon}),(0,De.jsx)(vr.FlexItem,{children:t.title})]})}):null}function Ic({filterValue:t}){let e=Ac(),r=(0,Zi.useDebounce)(Fc,500),{isMatchingSearchTerm:o}=(0,fn.useSelect)(un.store),s=t?e.filter(n=>o(n,t)):e,a=(0,$e.useRef)(null);return(0,$e.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Mr.sprintf)((0,Mr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,De.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,De.jsx)(vr.__experimentalText,{align:"center",as:"p",children:(0,Mr.__)("No blocks found.")}):s.map(n=>(0,De.jsx)(Rc,{block:n},"menu-itemblock-"+n.name))})}var w0=(0,$e.memo)(Ic);var Nc=u(Ir(),1),Qi=u(ae(),1),cn=u(vt(),1),zc=u(de(),1),Mc=u(we(),1),dn=u(X(),1),$i=u(it(),1);var Lc=u(ae(),1),Xi=u(Ir(),1),Bc=u(X(),1),Vc=u(vt(),1);var Dc=u(z(),1);var Ki=u(X(),1),Ji=u(z(),1);function xe({children:t,level:e=2}){return(0,Ji.jsx)(Ki.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var mn=u(z(),1);var{useHasDimensionsPanel:D0,useHasTypographyPanel:N0,useHasBorderPanel:z0,useSettingsForBlockElement:M0,useHasColorPanel:G0,useHasFiltersPanel:j0,useHasImageSettingsPanel:U0,useHasBackgroundPanel:H0,BackgroundPanel:W0,BorderPanel:Y0,ColorPanel:q0,TypographyPanel:Z0,DimensionsPanel:X0,FiltersPanel:K0,ImageSettingsPanel:J0,AdvancedPanel:Q0}=yt(Qi.privateApis);var $h=u(it(),1),tg=u(X(),1),eg=u(vt(),1);var Gc=u(X(),1);var jc=u(z(),1);var Uc=u(it(),1),Uo=u(X(),1);var tl=u(z(),1);var Yo=u(X(),1);var el=u(X(),1);var Ho=u(z(),1),Hc=({variation:t,isFocused:e,withHoverView:r})=>(0,Ho.jsx)(zr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,Ho.jsx)(el.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Ho.jsx)(Go,{variation:t,fontSize:85*o})},s)}),rl=Hc;var sl=u(X(),1),br=u(vt(),1),nl=u(pn(),1),Wo=u(it(),1);var mo=u(z(),1);function Gr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,br.useState)(!1),{base:l,user:h,onChange:f}=(0,br.useContext)(Kt),c=(0,br.useMemo)(()=>{let A=pr(l,t);return o&&(A=zo(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),m=A=>{A.keyCode===nl.ENTER&&(A.preventDefault(),d())},g=(0,br.useMemo)(()=>ao(h,t),[h,t]),y=t?.title;t?.description&&(y=(0,Wo.sprintf)((0,Wo._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:d,onKeyDown:m,tabIndex:0,"aria-label":y,"aria-current":g,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,mo.jsx)(Kt.Provider,{value:c,children:s?(0,mo.jsx)(sl.Tooltip,{text:t?.title,children:_}):_})}var wr=u(z(),1),al=["typography"];function qo({title:t,gap:e=2}){let r=Mo(al);return r?.length<=1?null:(0,wr.jsxs)(Yo.__experimentalVStack,{spacing:3,children:[t&&(0,wr.jsx)(xe,{level:3,children:t}),(0,wr.jsx)(Yo.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,wr.jsx)(Gr,{variation:o,properties:al,showTooltip:!0,children:()=>(0,wr.jsx)(rl,{variation:o})},s))})]})}var Jh=u(it(),1),wo=u(X(),1);var Qh=u(vt(),1);var We=u(vt(),1),or=u(de(),1),rr=u(we(),1),vn=u(it(),1);var hn=u(ll(),1),ul=u(we(),1),fl="/wp/v2/font-families";function cl(t){let{receiveEntityRecords:e}=t.dispatch(ul.store);e("postType","wp_font_family",[],void 0,!0)}async function dl(t,e){let o=await(0,hn.default)({path:fl,method:"POST",body:t});return cl(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function ml(t,e,r){let o={path:`${fl}/${t}/font-faces`,method:"POST",body:e},s=await(0,hn.default)(o);return cl(r),{id:s.id,...s.font_face_settings}}var gl=u(X(),1);var Oe=u(it(),1),gn=["otf","ttf","woff","woff2"],pl={100:(0,Oe._x)("Thin","font weight"),200:(0,Oe._x)("Extra-light","font weight"),300:(0,Oe._x)("Light","font weight"),400:(0,Oe._x)("Normal","font weight"),500:(0,Oe._x)("Medium","font weight"),600:(0,Oe._x)("Semi-bold","font weight"),700:(0,Oe._x)("Bold","font weight"),800:(0,Oe._x)("Extra-bold","font weight"),900:(0,Oe._x)("Black","font weight")},hl={normal:(0,Oe._x)("Normal","font style"),italic:(0,Oe._x)("Italic","font style")};var{File:yl}=window,{kebabCase:Wc}=yt(gl.privateApis);function tr(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function Yc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function Zo(t){let e=pl[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":hl[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function qc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function vl(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=qc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function er(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof yl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(sn(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function po(t,e="all"){let r=o=>{o.forEach(s=>{s.family===sn(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function jr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return Yc(e)||(e=encodeURI(e)),e}function bl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Wc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function wl(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((h,f)=>{let c=`file-${o}-${f}`;a.append(c,h,h.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function Sl(t,e,r){let o=[];for(let a of e)try{let n=await ml(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function xl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new yl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function yn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function Cl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function Xo(t,e,r=[]){let o=h=>h.slug===t.slug,s=h=>h.find(o),a=h=>h?r.filter(f=>!o(f)):[...r,t],n=h=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!h)return[...r,{...t,fontFace:[e]}];let c=h.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var Fl=u(z(),1),ie=(0,We.createContext)({});ie.displayName="FontLibraryContext";function Zc({children:t}){let e=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:R}=S(rr.store);return{globalStylesId:R()}},[]),a=(0,rr.useEntityRecord)("root","globalStyles",s),[n,l]=(0,We.useState)(!1),{records:h=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(h||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(R=>R.font_face_settings)||[]}))||[],[d,m]=_t("typography.fontFamilies"),g=async S=>{if(!a.record)return;let R=a.record,et=Cl(R??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[y,_]=(0,We.useState)(""),[A,k]=(0,We.useState)(void 0),x=d?.theme?d.theme.map(S=>tr(S,{source:"theme"})).sort((S,R)=>S.name.localeCompare(R.name)):[],b=d?.custom?d.custom.map(S=>tr(S,{source:"custom"})).sort((S,R)=>S.name.localeCompare(R.name)):[],T=c?c.map(S=>tr(S,{source:"custom"})).sort((S,R)=>S.name.localeCompare(R.name)):[];(0,We.useEffect)(()=>{y||k(void 0)},[y]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,We.useState)(new Set),D=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>D(S==="theme"?x:b),$=(S,R,et,ct)=>!R&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((R??"")+(et??"")),bt=(S,R)=>H(R)[S]||[];async function W(S){l(!0);try{let R=[],et=[];for(let at of S){let Ct=!1,Yt=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Yt&&Yt.length>0?Yt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await dl(bl(at),e));let xt=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&yn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!yn(zt,J.fontFace)));let At=[],Ce=[];if(at?.fontFace?.length??!1){let zt=await Sl(J.id,wl(at),e);At=zt?.successes,Ce=zt?.errors}(At?.length>0||xt?.length>0)&&(J.fontFace=[...At],R.push(J)),J&&!at?.fontFace?.length&&R.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(Ce)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(R.length>0){let at=lt(R);await g(at)}if(ct.length>0){let at=new Error((0,vn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function v(S){if(!S?.id)throw new Error((0,vn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let R=L(S);return await g(R),{deleted:!0}}catch(R){throw console.error("There was an error uninstalling the font family:",R),R}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return m(ct),S.fontFace&&S.fontFace.forEach(at=>{po(at,"all")}),ct},lt=S=>{let R=ot(S),et={...d,custom:vl(d?.custom,R)};return m(et),K(R),et},ot=S=>S.map(({id:R,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(R=>{R.fontFace&&R.fontFace.forEach(et=>{let ct=jr(et?.src??"");ct&&er(et,ct,"all")})})},gt=(S,R)=>{let et=d?.[S.source??""]??[],ct=Xo(S,R,et);m({...d,[S.source??""]:ct});let at=$(S.slug,R?.fontStyle??"",R?.fontWeight??"",S.source??"custom");if(R&&at)po(R,"all");else{let Ct=jr(R?.src??"");R&&Ct&&er(R,Ct,"all")}},E=async S=>{if(!S.src)return;let R=jr(S.src);!R||I.has(R)||(er(S,R,"document"),I.add(R))};return(0,Fl.jsx)(ie.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:E,installFonts:W,uninstallFontFamily:v,toggleActivateFont:gt,getAvailableFontsOutline:D,modalTabOpen:y,setModalTabOpen:_,saveFontFamilies:g,isResolvingLibrary:f,isInstalling:n},children:t})}var Ko=Zc;var cs=u(it(),1),Cn=u(X(),1),au=u(we(),1),Xh=u(de(),1);var ht=u(X(),1),go=u(we(),1),bn=u(de(),1),xr=u(vt(),1),Rt=u(it(),1);var Hr=u(it(),1),Te=u(X(),1);var kl=u(X(),1),Ne=u(vt(),1);var Jo=u(z(),1);function Xc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function Kc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function Jc({font:t,text:e}){let r=(0,Ne.useRef)(null),o=Kc(t),s=Dr(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,Ne.useState)(!1),[h,f]=(0,Ne.useState)(!1),{loadFontFaceAsset:c}=(0,Ne.useContext)(ie),d=a??Xc(o),m=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Ri(o),y={fontSize:"18px",lineHeight:1,opacity:h?"1":"0",...s,...g};return(0,Ne.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,Ne.useEffect)(()=>{(async()=>n&&(!m&&o.src&&await c(o),f(!0)))()},[o,n,c,m]),(0,Jo.jsx)("div",{ref:r,children:m?(0,Jo.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Jo.jsx)(kl.__experimentalText,{style:y,className:"font-library__font-variant_demo-text",children:e})})}var Ur=Jc;var ze=u(z(),1);function Qc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Te.useNavigator)();return(0,ze.jsx)(Te.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,ze.jsxs)(Te.Flex,{justify:"space-between",wrap:!1,children:[(0,ze.jsx)(Ur,{font:t}),(0,ze.jsxs)(Te.Flex,{justify:"flex-end",children:[(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(Te.__experimentalText,{className:"font-library__font-card__count",children:r||(0,Hr.sprintf)((0,Hr._n)("%d variant","%d variants",s),s)})}),(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(oo,{icon:(0,Hr.isRTL)()?cr:dr})})]})]})})}var ho=Qc;var Qo=u(vt(),1),$o=u(X(),1);var Sr=u(z(),1);function $c({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Qo.useContext)(ie),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+Zo(t),l=(0,Qo.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)($o.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)($o.CheckboxControl,{checked:s,onChange:a,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Ur,{font:t,text:n,onClick:a})})]})})}var Ol=$c;function Tl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function ts(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?Tl(e.fontWeight?.toString()??"normal")-Tl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function td(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,xr.useContext)(ie),[h,f]=_t("typography.fontFamilies"),[c,d]=(0,xr.useState)(!1),[m,g]=(0,xr.useState)(null),[y]=_t("typography.fontFamilies",void 0,"base"),_=(0,bn.useSelect)(E=>{let{__experimentalGetCurrentGlobalStylesId:S}=E(go.store);return S()},[]),k=!!(0,go.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=h?.theme?h.theme.map(E=>tr(E,{source:"theme"})).sort((E,S)=>E.name.localeCompare(S.name)):[],b=new Set(x.map(E=>E.slug)),T=y?.theme?x.concat(y.theme.filter(E=>!b.has(E.slug)).map(E=>tr(E,{source:"theme"})).sort((E,S)=>E.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,bn.useSelect)(E=>{let{canUser:S}=E(go.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),D=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{g(null);try{await n(h),g({type:"success",message:(0,Rt.__)("Font family updated successfully.")})}catch(E){g({type:"error",message:(0,Rt.sprintf)((0,Rt.__)("There was an error updating the font family. %s"),E.message)})}},bt=E=>E?!E.fontFace||!E.fontFace.length?[{fontFamily:E.fontFamily,fontStyle:"normal",fontWeight:"400"}]:ts(E.fontFace):[],W=E=>{let S=E?.fontFace&&(E?.fontFace?.length??0)>0?E.fontFace.length:1,R=l(E.slug,E.source).length;return(0,Rt.sprintf)((0,Rt.__)("%1$d/%2$d variants active"),R,S)};(0,xr.useEffect)(()=>{r(e)},[]);let v=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),lt=v>0&&v!==L,ot=v===L,K=()=>{if(!e||!e?.source)return;let E=h?.[e.source]?.filter(R=>R.slug!==e.slug)??[],S=ot?E:[...E,e];f({...h,[e.source]:S}),e.fontFace&&e.fontFace.forEach(R=>{if(ot)po(R,"all");else{let et=jr(R?.src??"");et&&er(R,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[m&&(0,ft.jsx)(ht.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Rt.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Rt._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(E=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:E,navigatorPath:"/fontFamily",variantsText:W(E),onClick:()=>{g(null),r(E)}})},E.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Rt._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(E=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:E,navigatorPath:"/fontFamily",variantsText:W(E),onClick:()=>{g(null),r(E)}})},E.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(ed,{font:e,isOpen:c,setIsOpen:d,setNotice:g,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Rt.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),g(null)},label:(0,Rt.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),m&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Rt.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ot,onChange:K,indeterminate:lt}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((E,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(Ol,{font:e,face:E},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),D&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Rt.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Rt.__)("Update")})]})]})]})}function ed({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Rt.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Rt.__)("There was an error uninstalling the font family.")+f.message})}},h=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Rt.__)("Cancel"),confirmButtonText:(0,Rt.__)("Delete"),onCancel:h,onConfirm:l,size:"medium",children:t&&(0,Rt.sprintf)((0,Rt.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var es=td;var Xt=u(vt(),1),nt=u(X(),1),Bl=u(mr(),1),Et=u(it(),1);var Vl=u(we(),1);function _l(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Pl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Al(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var yo=u(it(),1),le=u(X(),1),_e=u(z(),1);function rd(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,_e.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,_e.jsx)(le.Card,{children:(0,_e.jsxs)(le.CardBody,{children:[(0,_e.jsx)(le.__experimentalHeading,{level:2,children:(0,yo.__)("Connect to Google Fonts")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:3}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,yo.__)("Allow access to Google Fonts")})]})})})}var El=rd;var Rl=u(vt(),1),rs=u(X(),1);var Cr=u(z(),1);function od({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+Zo(t),n=(0,Rl.useId)();return(0,Cr.jsx)("div",{className:"font-library__font-card",children:(0,Cr.jsxs)(rs.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Cr.jsx)(rs.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Cr.jsx)("label",{htmlFor:n,children:(0,Cr.jsx)(Ur,{font:t,text:a,onClick:s})})]})})}var Il=od;var tt=u(z(),1),sd={slug:"all",name:(0,Et._x)("All","font categories")},Ll="wp-font-library-google-fonts-permission",nd=500;function ad({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Ll)==="true",[o,s]=(0,Xt.useState)(null),[a,n]=(0,Xt.useState)(null),[l,h]=(0,Xt.useState)([]),[f,c]=(0,Xt.useState)(1),[d,m]=(0,Xt.useState)({}),[g,y]=(0,Xt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Xt.useContext)(ie),{record:k,isResolving:x}=(0,Vl.useEntityRecord)("root","fontCollection",t);(0,Xt.useEffect)(()=>{let J=()=>{y(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Ll,"false"),window.dispatchEvent(new Event("storage"))};(0,Xt.useEffect)(()=>{s(null)},[t]),(0,Xt.useEffect)(()=>{h([])},[o]);let T=(0,Xt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[sd,...Y],D=(0,Xt.useMemo)(()=>_l(T,d),[T,d]),H=Math.max(window.innerHeight,nd),$=Math.floor((H-417)/61),bt=Math.ceil(D.length/$),W=(f-1)*$,v=f*$,L=D.slice(W,v),lt=J=>{m({...d,category:J}),c(1)},K=(0,Bl.debounce)(J=>{m({...d,search:J}),c(1)},300),gt=(J,xt)=>{let At=Xo(J,xt,l);h(At)},E=Pl(l),S=()=>{h([])},R=l.length>0?l[0]?.fontFace?.length??0:0,et=R>0&&R!==o?.fontFace?.length,ct=R===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),h(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async xt=>{xt.src&&(xt.file=await xl(xt.src))}))}catch{n({type:"error",message:(0,Et.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Et.__)("Fonts were installed successfully.")})}catch(xt){n({type:"error",message:xt.message})}S()},Yt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:ts(J.fontFace):[];if(g)return(0,tt.jsx)(El,{});let Ot=()=>t!=="google-fonts"||g||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Vs,label:(0,Et.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Et.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Et.__)("Font name\u2026"),label:(0,Et.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Et.__)("Category"),value:d.category,onChange:lt,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!D.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Et.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(ho,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Et.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),n(null)},label:(0,Et.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Et.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Yt(o).map((J,xt)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(Il,{font:o,face:J,handleToggleVariant:gt,selected:Al(o.slug,o.fontFace?J:null,E)})},`face${xt}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Et.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Xt.createInterpolateElement)((0,Et.sprintf)((0,Et._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Et.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,xt)=>({label:(xt+1).toString(),value:(xt+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Et.__)("Previous page"),icon:(0,Et.isRTL)()?Io:Bo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Et.__)("Next page"),icon:(0,Et.isRTL)()?Bo:Io,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var os=ad;var Wr=u(it(),1),te=u(X(),1),bo=u(vt(),1);var ss=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Dl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var m=typeof ss=="function"&&ss;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=a[c]={exports:{}};s[c][0].call(y.exports,function(_){var A=s[c][1][_];return l(A||_)},y,y.exports,o,s,a,n)}return a[c].exports}for(var h=typeof ss=="function"&&ss,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,h=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=h,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,m=this.input_.read(this.buf_,d,n);if(m<0)throw new Error("Unexpected end of input");if(m<n){this.eos_=1;for(var g=0;g<32;g++)this.buf_[d+m+g]=0}if(d===0){for(var g=0;g<32;g++)this.buf_[(n<<1)+g]=this.buf_[g];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=m<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&h]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var m=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,m},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,h=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,h=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,m=o("./context"),g=o("./prefix"),y=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,D=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,v=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),lt=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<<O)}return 0}function gt(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function E(N){var O=new gt,B,P,V;if(O.input_end=N.readBits(1),O.input_end&&N.readBits(1))return O;if(B=N.readBits(2)+4,B===7){if(O.is_metadata=!0,N.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=N.readBits(2),P===0)return O;for(V=0;V<P;V++){var dt=N.readBits(8);if(V+1===P&&P>1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<<V*8}}else for(V=0;V<B;++V){var rt=N.readBits(4);if(V+1===B&&B>4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<<V*4}return++O.meta_block_length,!O.input_end&&!O.is_metadata&&(O.is_uncompressed=N.readBits(1)),O}function S(N,O,B){var P=O,V;return B.fillBitWindow(),O+=B.val_>>>B.bit_pos_&D,V=N[O].bits-I,V>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=N[O].bits,N[O].value}function R(N,O,B,P){for(var V=0,dt=_,rt=0,st=0,wt=32768,ut=[],q=0;q<32;q++)ut.push(new c(0,0));for(d(ut,0,5,N,$);V<O&&wt>0;){var Ft=0,Jt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=ut[Ft].bits,Jt=ut[Ft].value&255,Jt<A)rt=0,B[V++]=Jt,Jt!==0&&(dt=Jt,wt-=32768>>Jt);else{var ge=Jt-14,ee,Qt,Vt=0;if(Jt===A&&(Vt=dt),st!==Vt&&(rt=0,st=Vt),ee=rt,rt>0&&(rt-=2,rt<<=ge),rt+=P.readBits(ge)+3,Qt=rt-ee,V+Qt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var $t=0;$t<Qt;$t++)B[V+$t]=st;V+=Qt,st!==0&&(wt-=Qt<<15-st)}}if(wt!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+wt);for(;V<O;V++)B[V]=0}function et(N,O,B,P){var V=0,dt,rt=new Uint8Array(N);if(P.readMoreInput(),dt=P.readBits(2),dt===1){for(var st,wt=N-1,ut=0,q=new Int32Array(4),Ft=P.readBits(2)+1;wt;)wt>>=1,++ut;for(st=0;st<Ft;++st)q[st]=P.readBits(ut)%N,rt[q[st]]=2;switch(rt[q[0]]=1,Ft){case 1:break;case 3:if(q[0]===q[1]||q[0]===q[2]||q[1]===q[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(q[0]===q[1])throw new Error("[ReadHuffmanCode] invalid symbols");rt[q[1]]=1;break;case 4:if(q[0]===q[1]||q[0]===q[2]||q[0]===q[3]||q[1]===q[2]||q[1]===q[3]||q[2]===q[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(rt[q[2]]=3,rt[q[3]]=3):rt[q[0]]=2;break}}else{var st,Jt=new Uint8Array($),ge=32,ee=0,Qt=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(st=dt;st<$&&ge>0;++st){var Vt=bt[st],$t=0,re;P.fillBitWindow(),$t+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Qt[$t].bits,re=Qt[$t].value,Jt[Vt]=re,re!==0&&(ge-=32>>re,++ee)}if(!(ee===1||ge===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");R(Jt,N,rt,P)}if(V=d(O,B,I,rt,N),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ct(N,O,B){var P,V;return P=S(N,O,B),V=g.kBlockLengthPrefixCode[P].nbits,g.kBlockLengthPrefixCode[P].offset+B.readBits(V)}function at(N,O,B){var P;return N<W?(B+=v[N],B&=3,P=O[B]+L[N]):P=N-W+1,P}function Ct(N,O){for(var B=N[O],P=O;P;--P)N[P]=N[P-1];N[0]=B}function Yt(N,O){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<O;++P){var V=N[P];N[P]=B[V],V&&Ct(B,V)}}function Ot(N,O){this.alphabet_size=N,this.num_htrees=O,this.codes=new Array(O+O*lt[N+31>>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O<this.num_htrees;++O)this.htrees[O]=P,B=et(this.alphabet_size,this.codes,P,N),P+=B};function J(N,O){var B={num_htrees:null,context_map:null},P,V=0,dt,rt;O.readMoreInput();var st=B.num_htrees=K(O)+1,wt=B.context_map=new Uint8Array(N);if(st<=1)return B;for(P=O.readBits(1),P&&(V=O.readBits(4)+1),dt=[],rt=0;rt<H;rt++)dt[rt]=new c(0,0);for(et(st+V,dt,0,O),rt=0;rt<N;){var ut;if(O.readMoreInput(),ut=S(dt,0,O),ut===0)wt[rt]=0,++rt;else if(ut<=V)for(var q=1+(1<<ut)+O.readBits(ut);--q;){if(rt>=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=ut-V,++rt}return O.readBits(1)&&Yt(wt,N),B}function xt(N,O,B,P,V,dt,rt){var st=B*2,wt=B,ut=S(O,B*H,rt),q;ut===0?q=V[st+(dt[wt]&1)]:ut===1?q=V[st+(dt[wt]-1&1)]+1:q=ut-2,q>=N&&(q-=N),P[B]=q,V[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,V,dt){var rt=V+1,st=B&V,wt=dt.pos_&h.IBUF_MASK,ut;if(O<8||dt.bit_pos_+(O<<3)<dt.bit_end_pos_){for(;O-- >0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(ut=dt.bit_end_pos_-dt.bit_pos_>>3,wt+ut>h.IBUF_MASK){for(var q=h.IBUF_MASK+1-wt,Ft=0;Ft<q;Ft++)P[st+Ft]=dt.buf_[wt+Ft];ut-=q,st+=q,O-=q,wt=0}for(var Ft=0;Ft<ut;Ft++)P[st+Ft]=dt.buf_[wt+Ft];if(st+=ut,O-=ut,st>=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft<st;Ft++)P[Ft]=P[rt+Ft]}for(;st+O>=rt;){if(ut=rt-st,dt.input_.read(P,st,ut)<ut)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");N.write(P,rt),O-=ut,st=0}if(dt.input_.read(P,st,O)<O)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");dt.reset()}function Ce(N){var O=N.bit_pos_+7&-8,B=N.readBits(O-N.bit_pos_);return B==0}function zt(N){var O=new n(N),B=new h(O);ot(B);var P=E(B);return P.meta_block_length}a.BrotliDecompressedSize=zt;function sr(N,O){var B=new n(N);O==null&&(O=zt(N));var P=new Uint8Array(O),V=new l(P);return Ke(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}a.BrotliDecompressBuffer=sr;function Ke(N,O){var B,P=0,V=0,dt=0,rt,st=0,wt,ut,q,Ft,Jt=[16,15,11,4],ge=0,ee=0,Qt=0,Vt=[new Ot(0,0),new Ot(0,0),new Ot(0,0)],$t,re,pt,Kr=128+h.READ_SIZE;pt=new h(N),dt=ot(pt),rt=(1<<dt)-16,wt=1<<dt,ut=wt-1,q=new Uint8Array(wt+Kr+f.maxDictionaryWordLength),Ft=wt,$t=[],re=[];for(var Tr=0;Tr<3*H;Tr++)$t[Tr]=new c(0,0),re[Tr]=new c(0,0);for(;!V;){var Mt=0,ko,Fe=[1<<28,1<<28,1<<28],Ee=[0],ye=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pt,G,oe=null,j=null,Dt,F=null,C,nr=0,Tt=null,Q=0,ar=0,ir=null,It=0,St=0,Gt=0,jt,qt;for(B=0;B<3;++B)Vt[B].codes=null,Vt[B].htrees=null;pt.readMoreInput();var Ge=E(pt);if(Mt=Ge.meta_block_length,P+Mt>O.buffer.length){var lr=new Uint8Array(P+Mt);lr.set(O.buffer),O.buffer=lr}if(V=Ge.input_end,ko=Ge.is_uncompressed,Ge.is_metadata){for(Ce(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(ko){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,ut,pt),P+=Mt;continue}for(B=0;B<3;++B)ye[B]=K(pt)+1,ye[B]>=2&&(et(ye[B]+2,$t,B*H,pt),et(b,re,B*H,pt),Fe[B]=ct(re,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<<i),Pt=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(ye[0]),B=0;B<ye[0];++B)pt.readMoreInput(),j[B]=pt.readBits(2)<<1;var Lt=J(ye[0]<<T,pt);Dt=Lt.num_htrees,oe=Lt.context_map;var se=J(ye[2]<<Y,pt);for(C=se.num_htrees,F=se.context_map,Vt[0]=new Ot(k,Dt),Vt[1]=new Ot(x,ye[1]),Vt[2]=new Ot(G,C),B=0;B<3;++B)Vt[B].decode(pt);for(Tt=0,ir=0,jt=j[Ee[0]],St=m.lookupOffsets[jt],Gt=m.lookupOffsets[jt+1],qt=Vt[1].htrees[0];Mt>0;){var Nt,ne,ue,_r,Cs,fe,ve,je,Jr,Pr,Qr;for(pt.readMoreInput(),Fe[1]===0&&(xt(ye[1],$t,1,Ee,w,M,pt),Fe[1]=ct(re,H,pt),qt=Vt[1].htrees[Ee[1]]),--Fe[1],Nt=S(Vt[1].codes,qt,pt),ne=Nt>>6,ne>=2?(ne-=2,ve=-1):ve=0,ue=g.kInsertRangeLut[ne]+(Nt>>3&7),_r=g.kCopyRangeLut[ne]+(Nt&7),Cs=g.kInsertLengthPrefixCode[ue].offset+pt.readBits(g.kInsertLengthPrefixCode[ue].nbits),fe=g.kCopyLengthPrefixCode[_r].offset+pt.readBits(g.kCopyLengthPrefixCode[_r].nbits),ee=q[P-1&ut],Qt=q[P-2&ut],Pr=0;Pr<Cs;++Pr)pt.readMoreInput(),Fe[0]===0&&(xt(ye[0],$t,0,Ee,w,M,pt),Fe[0]=ct(re,0,pt),nr=Ee[0]<<T,Tt=nr,jt=j[Ee[0]],St=m.lookupOffsets[jt],Gt=m.lookupOffsets[jt+1]),Jr=m.lookup[St+ee]|m.lookup[Gt+Qt],Q=oe[Tt+Jr],--Fe[0],Qt=ee,ee=S(Vt[0].codes,Vt[0].htrees[Q],pt),q[P&ut]=ee,(P&ut)===ut&&O.write(q,wt),++P;if(Mt-=Cs,Mt<=0)break;if(ve<0){var Jr;if(pt.readMoreInput(),Fe[2]===0&&(xt(ye[2],$t,2,Ee,w,M,pt),Fe[2]=ct(re,2*H,pt),ar=Ee[2]<<Y,ir=ar),--Fe[2],Jr=(fe>4?3:fe-2)&255,It=F[ir+Jr],ve=S(Vt[2].codes,Vt[2].htrees[It],pt),ve>=U){var Fs,ta,$r;ve-=U,ta=ve&Pt,ve>>=i,Fs=(ve>>1)+1,$r=(2+(ve&1)<<Fs)-4,ve=U+($r+pt.readBits(Fs)<<i)+ta}}if(je=at(ve,Jt,ge),je<0)throw new Error("[BrotliDecompress] invalid distance");if(P<rt&&st!==rt?st=P:st=rt,Qr=P&ut,je>st)if(fe>=f.minDictionaryWordLength&&fe<=f.maxDictionaryWordLength){var $r=f.offsetsByLength[fe],ea=je-st-1,ra=f.sizeBitsByLength[fe],tf=(1<<ra)-1,ef=ea&tf,oa=ea>>ra;if($r+=ef*fe,oa<y.kNumTransforms){var ks=y.transformDictionaryWord(q,Qr,$r,fe,oa);if(Qr+=ks,P+=ks,Mt-=ks,Qr>=Ft){O.write(q,wt);for(var Oo=0;Oo<Qr-Ft;Oo++)q[Oo]=q[Ft+Oo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);else{if(ve>0&&(Jt[ge&3]=je,++ge),fe>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);for(Pr=0;Pr<fe;++Pr)q[P&ut]=q[P-je&ut],(P&ut)===ut&&O.write(q,wt),++P,--Mt}ee=q[P-1&ut],Qt=q[P-2&ut]}P&=1073741823}}O.write(q,P&ut)}a.BrotliDecompress=Ke,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,h=n.toByteArray(o("./dictionary.bin.js"));return l(h)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="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"},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,m){this.bits=d,this.value=m}a.HuffmanCode=n;var l=15;function h(d,m){for(var g=1<<m-1;d&g;)g>>=1;return(d&g-1)+g}function f(d,m,g,y,_){do y-=g,d[m+y]=new n(_.bits,_.value);while(y>0)}function c(d,m,g){for(var y=1<<m-g;m<l&&(y-=d[m],!(y<=0));)++m,y<<=1;return m-g}a.BrotliBuildHuffmanTable=function(d,m,g,y,_){var A=m,k,x,b,T,Y,I,D,H,$,bt,W,v=new Int32Array(l+1),L=new Int32Array(l+1);for(W=new Int32Array(_),b=0;b<_;b++)v[y[b]]++;for(L[1]=0,x=1;x<l;x++)L[x+1]=L[x]+v[x];for(b=0;b<_;b++)y[b]!==0&&(W[L[y[b]]++]=b);if(H=g,$=1<<H,bt=$,L[l]===1){for(T=0;T<bt;++T)d[m+T]=new n(0,W[0]&65535);return bt}for(T=0,b=0,x=1,Y=2;x<=g;++x,Y<<=1)for(;v[x]>0;--v[x])k=new n(x&255,W[b++]&65535),f(d,m+T,Y,$,k),T=h(T,x);for(D=bt-1,I=-1,x=g+1,Y=2;x<=l;++x,Y<<=1)for(;v[x]>0;--v[x])(T&D)!==I&&(m+=$,H=c(v,x,g),$=1<<H,bt+=$,I=T&D,d[A+I]=new n(H+g&255,m-A-I&65535)),k=new n(x-g&255,W[b++]&65535),f(d,m+(T>>g),Y,$,k),T=h(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=g,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],h=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function m(b){var T=b.length;if(T%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function g(b){var T=m(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function y(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=m(b),I=Y[0],D=Y[1],H=new h(y(b,I,D)),$=0,bt=D>0?I-4:I,W=0;W<bt;W+=4)T=l[b.charCodeAt(W)]<<18|l[b.charCodeAt(W+1)]<<12|l[b.charCodeAt(W+2)]<<6|l[b.charCodeAt(W+3)],H[$++]=T>>16&255,H[$++]=T>>8&255,H[$++]=T&255;return D===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),D===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,D=[],H=T;H<Y;H+=3)I=(b[H]<<16&16711680)+(b[H+1]<<8&65280)+(b[H+2]&255),D.push(A(I));return D.join("")}function x(b){for(var T,Y=b.length,I=Y%3,D=[],H=16383,$=0,bt=Y-I;$<bt;$+=H)D.push(k(b,$,$+H>bt?bt:$+H));return I===1?(T=b[Y-1],D.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],D.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),D.join("")}},{}],9:[function(o,s,a){function n(l,h){this.offset=l,this.nbits=h}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(h){this.buffer=h,this.pos=0}n.prototype.read=function(h,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)h[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(h){this.buffer=h,this.pos=0}l.prototype.write=function(h,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(h.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,h=1,f=2,c=3,d=4,m=5,g=6,y=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,D=16,H=17,$=18,bt=19,W=20;function v(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var E=0;E<ot.length;E++)this.prefix[E]=ot.charCodeAt(E);for(var E=0;E<gt.length;E++)this.suffix[E]=gt.charCodeAt(E)}var L=[new v("",l,""),new v("",l," "),new v(" ",l," "),new v("",b,""),new v("",k," "),new v("",l," the "),new v(" ",l,""),new v("s ",l," "),new v("",l," of "),new v("",k,""),new v("",l," and "),new v("",T,""),new v("",h,""),new v(", ",l," "),new v("",l,", "),new v(" ",k," "),new v("",l," in "),new v("",l," to "),new v("e ",l," "),new v("",l,'"'),new v("",l,"."),new v("",l,'">'),new v("",l,` +`),new v("",c,""),new v("",l,"]"),new v("",l," for "),new v("",Y,""),new v("",f,""),new v("",l," a "),new v("",l," that "),new v(" ",k,""),new v("",l,". "),new v(".",l,""),new v(" ",l,", "),new v("",I,""),new v("",l," with "),new v("",l,"'"),new v("",l," from "),new v("",l," by "),new v("",D,""),new v("",H,""),new v(" the ",l,""),new v("",d,""),new v("",l,". The "),new v("",x,""),new v("",l," on "),new v("",l," as "),new v("",l," is "),new v("",y,""),new v("",h,"ing "),new v("",l,` + `),new v("",l,":"),new v(" ",l,". "),new v("",l,"ed "),new v("",W,""),new v("",$,""),new v("",g,""),new v("",l,"("),new v("",k,", "),new v("",_,""),new v("",l," at "),new v("",l,"ly "),new v(" the ",l," of "),new v("",m,""),new v("",A,""),new v(" ",k,", "),new v("",k,'"'),new v(".",l,"("),new v("",x," "),new v("",k,'">'),new v("",l,'="'),new v(" ",l,"."),new v(".com/",l,""),new v(" the ",l," of the "),new v("",k,"'"),new v("",l,". This "),new v("",l,","),new v(".",l," "),new v("",k,"("),new v("",k,"."),new v("",l," not "),new v(" ",l,'="'),new v("",l,"er "),new v(" ",x," "),new v("",l,"al "),new v(" ",x,""),new v("",l,"='"),new v("",x,'"'),new v("",k,". "),new v(" ",l,"("),new v("",l,"ful "),new v(" ",k,". "),new v("",l,"ive "),new v("",l,"less "),new v("",x,"'"),new v("",l,"est "),new v(" ",k,"."),new v("",x,'">'),new v(" ",l,"='"),new v("",k,","),new v("",l,"ize "),new v("",x,"."),new v("\xC2\xA0",l,""),new v(" ",l,","),new v("",k,'="'),new v("",x,'="'),new v("",l,"ous "),new v("",x,", "),new v("",k,"='"),new v(" ",k,","),new v(" ",x,'="'),new v(" ",x,", "),new v("",x,","),new v("",x,"("),new v("",x,". "),new v(" ",x,"."),new v("",x,"='"),new v(" ",x,". "),new v(" ",k,'="'),new v(" ",x,"='"),new v(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function lt(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,E,S){var R=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ct<b?0:ct-(b-1),Ct=0,Yt=K,Ot;at>E&&(at=E);for(var J=0;J<R.length;)ot[K++]=R[J++];for(gt+=at,E-=at,ct<=A&&(E-=ct),Ct=0;Ct<E;Ct++)ot[K++]=n.dictionary[gt+Ct];if(Ot=K-E,ct===k)lt(ot,Ot);else if(ct===x)for(;E>0;){var xt=lt(ot,Ot);Ot+=xt,E-=xt}for(var At=0;At<et.length;)ot[K++]=et[At++];return K-Yt}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ns=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Nl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var m=typeof ns=="function"&&ns;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=a[c]={exports:{}};s[c][0].call(y.exports,function(_){var A=s[c][1][_];return l(A||_)},y,y.exports,o,s,a,n)}return a[c].exports}for(var h=typeof ns=="function"&&ns,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var m=d.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var g in m)l(m,g)&&(c[g]=m[g])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var h={arraySet:function(c,d,m,g,y){if(d.subarray&&c.subarray){c.set(d.subarray(m,m+g),y);return}for(var _=0;_<g;_++)c[y+_]=d[m+_]},flattenChunks:function(c){var d,m,g,y,_,A;for(g=0,d=0,m=c.length;d<m;d++)g+=c[d].length;for(A=new Uint8Array(g),y=0,d=0,m=c.length;d<m;d++)_=c[d],A.set(_,y),y+=_.length;return A}},f={arraySet:function(c,d,m,g,y){for(var _=0;_<g;_++)c[y+_]=d[m+_]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,h)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{h=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(m){var g,y,_,A,k,x=m.length,b=0;for(A=0;A<x;A++)y=m.charCodeAt(A),(y&64512)===55296&&A+1<x&&(_=m.charCodeAt(A+1),(_&64512)===56320&&(y=65536+(y-55296<<10)+(_-56320),A++)),b+=y<128?1:y<2048?2:y<65536?3:4;for(g=new n.Buf8(b),k=0,A=0;k<b;A++)y=m.charCodeAt(A),(y&64512)===55296&&A+1<x&&(_=m.charCodeAt(A+1),(_&64512)===56320&&(y=65536+(y-55296<<10)+(_-56320),A++)),y<128?g[k++]=y:y<2048?(g[k++]=192|y>>>6,g[k++]=128|y&63):y<65536?(g[k++]=224|y>>>12,g[k++]=128|y>>>6&63,g[k++]=128|y&63):(g[k++]=240|y>>>18,g[k++]=128|y>>>12&63,g[k++]=128|y>>>6&63,g[k++]=128|y&63);return g};function d(m,g){if(g<65534&&(m.subarray&&h||!m.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(m,g));for(var y="",_=0;_<g;_++)y+=String.fromCharCode(m[_]);return y}a.buf2binstring=function(m){return d(m,m.length)},a.binstring2buf=function(m){for(var g=new n.Buf8(m.length),y=0,_=g.length;y<_;y++)g[y]=m.charCodeAt(y);return g},a.buf2string=function(m,g){var y,_,A,k,x=g||m.length,b=new Array(x*2);for(_=0,y=0;y<x;){if(A=m[y++],A<128){b[_++]=A;continue}if(k=f[A],k>4){b[_++]=65533,y+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&y<x;)A=A<<6|m[y++]&63,k--;if(k>1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(m,g){var y;for(g=g||m.length,g>m.length&&(g=m.length),y=g-1;y>=0&&(m[y]&192)===128;)y--;return y<0||y===0?g:y+f[m[y]]>g?y:g}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,h,f,c){for(var d=l&65535|0,m=l>>>16&65535|0,g=0;f!==0;){g=f>2e3?2e3:f,f-=g;do d=d+h[c++]|0,m=m+d|0;while(--g);d%=65521,m%=65521}return d|m<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var m=0;m<8;m++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function h(f,c,d,m){var g=l,y=m+d;f^=-1;for(var _=m;_<y;_++)f=f>>>8^g[(f^c[_])&255];return f^-1}s.exports=h},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,m,g,y,_,A,k,x,b,T,Y,I,D,H,$,bt,W,v,L,lt,ot,K,gt,E,S;d=f.state,m=f.next_in,E=f.input,g=m+(f.avail_in-5),y=f.next_out,S=f.output,_=y-(c-f.avail_out),A=y+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,D=d.bits,H=d.lencode,$=d.distcode,bt=(1<<d.lenbits)-1,W=(1<<d.distbits)-1;t:do{D<15&&(I+=E[m++]<<D,D+=8,I+=E[m++]<<D,D+=8),v=H[I&bt];e:for(;;){if(L=v>>>24,I>>>=L,D-=L,L=v>>>16&255,L===0)S[y++]=v&65535;else if(L&16){lt=v&65535,L&=15,L&&(D<L&&(I+=E[m++]<<D,D+=8),lt+=I&(1<<L)-1,I>>>=L,D-=L),D<15&&(I+=E[m++]<<D,D+=8,I+=E[m++]<<D,D+=8),v=$[I&W];r:for(;;){if(L=v>>>24,I>>>=L,D-=L,L=v>>>16&255,L&16){if(ot=v&65535,L&=15,D<L&&(I+=E[m++]<<D,D+=8,D<L&&(I+=E[m++]<<D,D+=8)),ot+=I&(1<<L)-1,ot>k){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,D-=L,L=y-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L<lt){lt-=L;do S[y++]=Y[K++];while(--L);K=y-ot,gt=S}}else if(T<L){if(K+=x+T-L,L-=T,L<lt){lt-=L;do S[y++]=Y[K++];while(--L);if(K=0,T<lt){L=T,lt-=L;do S[y++]=Y[K++];while(--L);K=y-ot,gt=S}}}else if(K+=T-L,L<lt){lt-=L;do S[y++]=Y[K++];while(--L);K=y-ot,gt=S}for(;lt>2;)S[y++]=gt[K++],S[y++]=gt[K++],S[y++]=gt[K++],lt-=3;lt&&(S[y++]=gt[K++],lt>1&&(S[y++]=gt[K++]))}else{K=y-ot;do S[y++]=S[K++],S[y++]=S[K++],S[y++]=S[K++],lt-=3;while(lt>2);lt&&(S[y++]=S[K++],lt>1&&(S[y++]=S[K++]))}}else if((L&64)===0){v=$[(v&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break t}break}}else if((L&64)===0){v=H[(v&65535)+(I&(1<<L)-1)];continue e}else if(L&32){d.mode=l;break t}else{f.msg="invalid literal/length code",d.mode=n;break t}break}}while(m<g&&y<A);lt=D>>3,m-=lt,D-=lt<<3,I&=(1<<D)-1,f.next_in=m,f.next_out=y,f.avail_in=m<g?5+(g-m):5-(m-g),f.avail_out=y<A?257+(A-y):257-(y-A),d.hold=I,d.bits=D}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),h=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,m=1,g=2,y=4,_=5,A=6,k=0,x=1,b=2,T=-2,Y=-3,I=-4,D=-5,H=8,$=1,bt=2,W=3,v=4,L=5,lt=6,ot=7,K=8,gt=9,E=10,S=11,R=12,et=13,ct=14,at=15,Ct=16,Yt=17,Ot=18,J=19,xt=20,At=21,Ce=22,zt=23,sr=24,Ke=25,N=26,O=27,B=28,P=29,V=30,dt=31,rt=32,st=852,wt=592,ut=15,q=ut;function Ft(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Jt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ge(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function ee(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,ge(w))}function Qt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,ee(w))}function Vt(w,M){var i,U;return w?(U=new Jt,w.state=U,U.window=null,i=Qt(w,M),i!==k&&(w.state=null),i):T}function $t(w){return Vt(w,q)}var re=!0,pt,Kr;function Tr(w){if(re){var M;for(pt=new n.Buf32(512),Kr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(m,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(g,w.lens,0,32,Kr,0,w.work,{bits:5}),re=!1}w.lencode=pt,w.lenbits=9,w.distcode=Kr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pt))),0}function ko(w,M){var i,U,Pt,G,oe,j,Dt,F,C,nr,Tt,Q,ar,ir,It=0,St,Gt,jt,qt,Ge,lr,Lt,se,Nt=new n.Buf8(4),ne,ue,_r=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return T;i=w.state,i.mode===R&&(i.mode=et),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,nr=j,Tt=Dt,se=k;t:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=et;break}for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=h(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Lt,w.adler=i.check=1,i.mode=F&512?E:R,F=0,C=0;break;case bt:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==H){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=h(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=h(i.check,Nt,4,0)),F=0,C=0,i.mode=v;case v:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=h(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=h(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=lt;case lt:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.comment+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.comment=null);i.mode=gt;case gt:if(i.flags&512){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=R;break;case E:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Ft(F),F=0,C=0,i.mode=S;case S:if(i.havedict===0)return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=R;case R:if(M===_||M===A)break t;case et:if(i.last){F>>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(Tr(i),i.mode=xt,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Yt;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Dt&&(Q=Dt),Q===0)break t;n.arraySet(Pt,U,G,Q,oe),j-=Q,G+=Q,Dt-=Q,oe+=Q,i.length-=Q;break}i.mode=R;break;case Yt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=Ot;case Ot:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.lens[_r[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[_r[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,ne={bits:i.lenbits},se=c(d,i.lens,0,19,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;It=i.lencode[F&(1<<i.lenbits)-1],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(jt<16)F>>>=St,C-=St,i.lens[i.have++]=jt;else{if(jt===16){for(ue=St+2;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F>>>=St,C-=St,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ue=St+3;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=St,C-=St,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ue=St+7;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=St,C-=St,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,ne={bits:i.lenbits},se=c(m,i.lens,0,i.nlen,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,ne={bits:i.distbits},se=c(g,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,ne),i.distbits=ne.bits,se){w.msg="invalid distances set",i.mode=V;break}if(i.mode=xt,M===A)break t;case xt:i.mode=At;case At:if(j>=6&&Dt>=258){w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===R&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<<i.lenbits)-1],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(Gt&&(Gt&240)===0){for(qt=St,Ge=Gt,lr=jt;It=i.lencode[lr+((F&(1<<qt+Ge)-1)>>qt)],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=St,C-=St,i.back+=St,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=R;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Gt&15,i.mode=Ce;case Ce:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<<i.distbits)-1],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((Gt&240)===0){for(qt=St,Ge=Gt,lr=jt;It=i.distcode[lr+((F&(1<<qt+Ge)-1)>>qt)],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=St,C-=St,i.back+=St,Gt&64){w.msg="invalid distance code",i.mode=V;break}i.offset=jt,i.extra=Gt&15,i.mode=sr;case sr:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Ke;case Ke:if(Dt===0)break t;if(Q=Tt-Dt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pt,ar=oe-i.offset,Q=i.length;Q>Dt&&(Q=Dt),Dt-=Q,i.length-=Q;do Pt[oe++]=ir[ar++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Dt===0)break t;Pt[oe++]=i.length,Dt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<<C,C+=8}if(Tt-=Dt,w.total_out+=Tt,i.total+=Tt,Tt&&(w.adler=i.check=i.flags?h(i.check,Pt,Tt,oe-Tt):l(i.check,Pt,Tt,oe-Tt)),Tt=Dt,(i.flags?F:Ft(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=P;case P:se=x;break t;case V:se=Y;break t;case dt:return I;case rt:default:return T}return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Tt!==w.avail_out&&i.mode<V&&(i.mode<O||M!==y))&&Mt(w,w.output,w.next_out,Tt-w.avail_out)?(i.mode=dt,I):(nr-=w.avail_in,Tt-=w.avail_out,w.total_in+=nr,w.total_out+=Tt,i.total+=Tt,i.wrap&&Tt&&(w.adler=i.check=i.flags?h(i.check,Pt,Tt,w.next_out-Tt):l(i.check,Pt,Tt,w.next_out-Tt)),w.data_type=i.bits+(i.last?64:0)+(i.mode===R?128:0)+(i.mode===xt||i.mode===at?256:0),(nr===0&&Tt===0||M===y)&&se===k&&(se=D),se)}function Fe(w){if(!w||!w.state)return T;var M=w.state;return M.window&&(M.window=null),w.state=null,k}function Ee(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?T:(i.head=M,M.done=!1,k)}function ye(w,M){var i=M.length,U,Pt,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==S)?T:U.mode===S&&(Pt=1,Pt=l(Pt,M,i,0),Pt!==U.check)?Y:(G=Mt(w,M,i,i),G?(U.mode=dt,I):(U.havedict=1,k))}a.inflateReset=ee,a.inflateReset2=Qt,a.inflateResetKeep=ge,a.inflateInit=$t,a.inflateInit2=Vt,a.inflate=ko,a.inflateEnd=Fe,a.inflateGetHeader=Ee,a.inflateSetDictionary=ye,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,h=852,f=592,c=0,d=1,m=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(x,b,T,Y,I,D,H,$){var bt=$.bits,W=0,v=0,L=0,lt=0,ot=0,K=0,gt=0,E=0,S=0,R=0,et,ct,at,Ct,Yt,Ot=null,J=0,xt,At=new n.Buf16(l+1),Ce=new n.Buf16(l+1),zt=null,sr=0,Ke,N,O;for(W=0;W<=l;W++)At[W]=0;for(v=0;v<Y;v++)At[b[T+v]]++;for(ot=bt,lt=l;lt>=1&&At[lt]===0;lt--);if(ot>lt&&(ot=lt),lt===0)return I[D++]=1<<24|64<<16|0,I[D++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<lt&&At[L]===0;L++);for(ot<L&&(ot=L),E=1,W=1;W<=l;W++)if(E<<=1,E-=At[W],E<0)return-1;if(E>0&&(x===c||lt!==1))return-1;for(Ce[1]=0,W=1;W<l;W++)Ce[W+1]=Ce[W]+At[W];for(v=0;v<Y;v++)b[T+v]!==0&&(H[Ce[b[T+v]]++]=v);if(x===c?(Ot=zt=H,xt=19):x===d?(Ot=g,J-=257,zt=y,sr-=257,xt=256):(Ot=_,zt=A,xt=-1),R=0,v=0,W=L,Yt=D,K=ot,gt=0,at=-1,S=1<<ot,Ct=S-1,x===d&&S>h||x===m&&S>f)return 1;for(;;){Ke=W-gt,H[v]<xt?(N=0,O=H[v]):H[v]>xt?(N=zt[sr+H[v]],O=Ot[J+H[v]]):(N=96,O=0),et=1<<W-gt,ct=1<<K,L=ct;do ct-=et,I[Yt+(R>>gt)+ct]=Ke<<24|N<<16|O|0;while(ct!==0);for(et=1<<W-1;R&et;)et>>=1;if(et!==0?(R&=et-1,R+=et):R=0,v++,--At[W]===0){if(W===lt)break;W=b[T+H[v]]}if(W>ot&&(R&Ct)!==at){for(gt===0&&(gt=ot),Yt+=L,K=W-gt,E=1<<K;K+gt<lt&&(E-=At[K+gt],!(E<=0));)K++,E<<=1;if(S+=1<<K,x===d&&S>h||x===m&&S>f)return 1;at=R&Ct,I[at]=ot<<24|K<<16|Yt-D|0}}return R!==0&&(I[Yt+R]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),h=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),m=o("./zlib/gzheader"),g=Object.prototype.toString;function y(k){if(!(this instanceof y))return new y(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new m,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=h.string2buf(x.dictionary):g.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}y.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,D,H,$,bt,W=!1;if(this.ended)return!1;D=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=h.binstring2buf(k):g.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(D===f.Z_FINISH||D===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=h.utf8border(b.output,b.next_out),$=b.next_out-H,bt=h.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(D=f.Z_FINISH),D===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(D===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},y.prototype.onData=function(k){this.chunks.push(k)},y.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new y(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=y,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var Fw=globalThis.fetch,as=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},id=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;r<o&&t.__mayPropagate;r++)e[r](t)}},ld=new Date("1904-01-01T00:00:00+0000").getTime();function ud(t){return Array.from(t).map(e=>String.fromCharCode(e)).join("")}var fd=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return ud([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(ld+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new fd(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var cd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new dd(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},dd=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},zl=Nl.inflate||void 0,Ml=void 0,md=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new pd(o)),hd(this,e,r)}},pd=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function hd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(zl)l=zl(new Uint8Array(n));else if(Ml)l=Ml(new Uint8Array(n));else{let h="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(h),new Error(h)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Gl=Dl,jl=void 0,gd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new yd(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,h)=>{let f=this.directory[h+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Gl)a=Gl(new Uint8Array(n));else if(jl)a=new Uint8Array(jl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}vd(this,a,r)}},yd=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=bd(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function vd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function bd(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var Xl={},Kl=!1;Promise.all([Promise.resolve().then(function(){return qd}),Promise.resolve().then(function(){return Xd}),Promise.resolve().then(function(){return Jd}),Promise.resolve().then(function(){return tm}),Promise.resolve().then(function(){return rm}),Promise.resolve().then(function(){return im}),Promise.resolve().then(function(){return um}),Promise.resolve().then(function(){return cm}),Promise.resolve().then(function(){return Sm}),Promise.resolve().then(function(){return Rm}),Promise.resolve().then(function(){return bp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Ep}),Promise.resolve().then(function(){return Ip}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Mp}),Promise.resolve().then(function(){return jp}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Yp}),Promise.resolve().then(function(){return Xp}),Promise.resolve().then(function(){return Qp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return eh}),Promise.resolve().then(function(){return oh}),Promise.resolve().then(function(){return nh}),Promise.resolve().then(function(){return ih}),Promise.resolve().then(function(){return fh}),Promise.resolve().then(function(){return gh}),Promise.resolve().then(function(){return wh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return Th}),Promise.resolve().then(function(){return Ph}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Lh}),Promise.resolve().then(function(){return Vh}),Promise.resolve().then(function(){return Gh}),Promise.resolve().then(function(){return Uh}),Promise.resolve().then(function(){return Yh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];Xl[r]=e[r]}),Kl=!0});function wd(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=Xl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Sd(){let t=0;function e(r,o){if(!Kl)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(wd)}return new Promise((r,o)=>e(r))}function xd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function Cd(t,e,r={}){if(!globalThis.document)return;let o=xd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` @font-face { font-family: "${t}"; ${a.join(` `)} src: url("${e}") format("${o}"); -}`,globalThis.document.head.appendChild(s),s}var wd=[0,1,0,0],Sd=[79,84,84,79],xd=[119,79,70,70],Cd=[119,79,70,50];function as(t,e){if(t.length===e.length){for(let r=0;r<t.length;r++)if(t[r]!==e[r])return;return!0}}function Fd(t){let e=[t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3)];if(as(e,wd)||as(e,Sd))return"SFNT";if(as(e,xd))return"WOFF";if(as(e,Cd))return"WOFF2"}function kd(t){if(!t.ok)throw new Error(`HTTP ${t.status} - ${t.statusText}`);return t}var ls=class extends od{constructor(t,e={}){super(),this.name=t,this.options=e,this.metrics=!1}get src(){return this.__src}set src(t){this.__src=t,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await bd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>kd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new ns("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=Fd(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new ns("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return yd().then(e=>(t==="SFNT"&&(this.opentype=new id(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new ud(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new dd(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new ns("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new ns("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=ls;var Ye=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},Od=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Td=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new _d(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},_d=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},Pd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,m=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(m,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],m=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let g=n+m,h=l+m;g<=h;g++)d.push(g);else for(let g=0,h=l-n;g<=h;g++)r.currentPosition=c+f+g*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:m,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Ad=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),t<this.firstCode)return{};if(t>this.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Ed=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new Rd(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},Rd=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Id=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),t<this.startCharCode||t>this.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Ld=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new Bd(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)<t)continue;let s=e.startCharCode+(t-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Bd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Vd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Dd(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Dd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},Nd=class extends Ye{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new zd(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},zd=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Md(t,e,r){let o=t.uint16;return o===0?new Od(t,e,r):o===2?new Td(t,e,r):o===4?new Pd(t,e,r):o===6?new Ad(t,e,r):o===8?new Ed(t,e,r):o===10?new Id(t,e,r):o===12?new Ld(t,e,r):o===13?new Vd(t,e,r):o===14?new Nd(t,e,r):{}}var Gd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new jd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e<this.numTables;e++){let r=this.getSubTable(e).reverse(t);if(r)return r}}getGlyphId(t){let e=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},jd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Md(t,r,o)))}},Ud=Object.freeze({__proto__:null,cmap:Gd}),Hd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Wd=Object.freeze({__proto__:null,head:Hd}),Yd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},qd=Object.freeze({__proto__:null,hhea:Yd}),Zd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new Xd(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(m=>o.int16)))}}},Xd=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},Kd=Object.freeze({__proto__:null,hmtx:Zd}),Jd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Qd=Object.freeze({__proto__:null,maxp:Jd}),$d=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new em(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new tm(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},tm=class{constructor(t,e){this.length=t,this.offset=e}},em=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,rm(t,this)))}};function rm(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,m=o/2;l<m;l++)n[l]=String.fromCharCode(t.uint16);return n.join("")}let s=t.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var om=Object.freeze({__proto__:null,name:$d}),sm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},nm=Object.freeze({__proto__:null,OS2:sm}),am=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Nl.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Nl[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Nl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],im=Object.freeze({__proto__:null,post:am}),lm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new bn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new bn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new bn({offset:t.offset+this.itemVarStoreOffset},e)))}},bn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new um({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new fm({offset:t.offset+this.baseScriptListOffset},e))}},um=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},fm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new cm(this.start,r))))}},cm=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new dm(e)))}},dm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new mm(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new pm(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Yl(t)))}},mm=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Yl(e)))}},pm=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new gm(this.parser)}},Yl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new hm(t))))}},hm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},gm=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},ym=Object.freeze({__proto__:null,BASE:lm}),zl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new vm(t)))}},vm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},vo=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new bm(t)))}},bm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},wm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},Sm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new zl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new xm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new Fm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new zl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Tm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new wm(r)}))}},xm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new Cm(this.parser)}},Cm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},Fm=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new vo(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new km(this.parser)}},km=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new Om(this.parser)}},Om=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},Tm=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new vo(this.parser)}},_m=Object.freeze({__proto__:null,GDEF:Sm}),Ml=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new Pm(t))}},Pm=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Am=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Em(t))}},Em=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},Gl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},jl=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new Rm(t))}},Rm=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Im=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new Bm(t);if(e.startsWith("cc"))return new Lm(t);if(e.startsWith("ss"))return new Vm(t)}}},Lm=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},Bm=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Vm=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function ql(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var Fr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new vo(t)}},Sn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Dm=class extends Fr{constructor(t){super(t),this.deltaGlyphID=t.int16}},Nm=class extends Fr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new zm(e)}},zm=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Mm=class extends Fr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Gm(e)}},Gm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},jm=class extends Fr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new Um(e)}},Um=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Hm(e)}},Hm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Wm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(ql(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Sn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new Ym(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new qm(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new vo(e)}},Ym=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new Zl(e)}},Zl=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Sn(t))}},qm=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Zm(e)}},Zm=class extends Zl{constructor(t){super(t)}},Xm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(ql(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Xl(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new Km(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new Qm(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new vo(e)}},Km=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new Jm(e)}},Jm=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new Sn(t))}},Qm=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new $m(e)}},$m=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new Xl(t))}},Xl=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},tp=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},ep=class extends Fr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},rp={buildSubtable:function(t,e){let r=new[void 0,Dm,Nm,Mm,jm,Wm,Xm,tp,ep][t](e);return r.type=t,r}},qe=class extends Bt{constructor(t){super(t)}},op=class extends qe{constructor(t){super(t),console.log("lookup type 1")}},sp=class extends qe{constructor(t){super(t),console.log("lookup type 2")}},np=class extends qe{constructor(t){super(t),console.log("lookup type 3")}},ap=class extends qe{constructor(t){super(t),console.log("lookup type 4")}},ip=class extends qe{constructor(t){super(t),console.log("lookup type 5")}},lp=class extends qe{constructor(t){super(t),console.log("lookup type 6")}},up=class extends qe{constructor(t){super(t),console.log("lookup type 7")}},fp=class extends qe{constructor(t){super(t),console.log("lookup type 8")}},cp=class extends qe{constructor(t){super(t),console.log("lookup type 9")}},dp={buildSubtable:function(t,e){let r=new[void 0,op,sp,np,ap,ip,lp,up,fp,cp][t](e);return r.type=t,r}},Ul=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},mp=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?rp:dp;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},Kl=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Ml.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Ml(o))),Z(this,"featureList",()=>a?jl.EMPTY:(o.currentPosition=s+this.featureListOffset,new jl(o))),Z(this,"lookupList",()=>a?Ul.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Ul(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Am(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new Gl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new Gl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Im(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new mp(this.parser,e)}},pp=class extends Kl{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},hp=Object.freeze({__proto__:null,GSUB:pp}),gp=class extends Kl{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},yp=Object.freeze({__proto__:null,GPOS:gp}),vp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new bp(r)}},bp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new wp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},wp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},Sp=Object.freeze({__proto__:null,SVG:vp}),xp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new Cp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new Fp(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(t=>t.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},Cp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},Fp=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o<r&&(this.postScriptNameID=t.uint16)}},kp=Object.freeze({__proto__:null,fvar:xp}),Op=class extends mt{constructor(t,e){let{p:r}=super(t,e),o=t.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},Tp=Object.freeze({__proto__:null,cvt:Op}),_p=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Pp=Object.freeze({__proto__:null,fpgm:_p}),Ap=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Ep(r)))}},Ep=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},Rp=Object.freeze({__proto__:null,gasp:Ap}),Ip=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Lp=Object.freeze({__proto__:null,glyf:Ip}),Bp=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Vp=Object.freeze({__proto__:null,loca:Bp}),Dp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Np=Object.freeze({__proto__:null,prep:Dp}),zp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Mp=Object.freeze({__proto__:null,CFF:zp}),Gp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},jp=Object.freeze({__proto__:null,CFF2:Gp}),Up=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Hp(r)))}},Hp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Wp=Object.freeze({__proto__:null,VORG:Up}),Yp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new is(t),this.vert=new is(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},qp=class{constructor(t){this.hori=new is(t),this.vert=new is(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},is=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},Jl=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new Yp(o)))}},Zp=Object.freeze({__proto__:null,EBLC:Jl}),Ql=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},Xp=Object.freeze({__proto__:null,EBDT:Ql}),Kp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new qp(r)))}},Jp=Object.freeze({__proto__:null,EBSC:Kp}),Qp=class extends Jl{constructor(t,e){super(t,e,"CBLC")}},$p=Object.freeze({__proto__:null,CBLC:Qp}),th=class extends Ql{constructor(t,e){super(t,e,"CBDT")}},eh=Object.freeze({__proto__:null,CBDT:th}),rh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},oh=Object.freeze({__proto__:null,sbix:rh}),sh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new wn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new wn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let m=new wn(this.parser),f=m.gID;if(f===t)return m;f>t?s=l:f<t&&(e=l)}return!1}getLayers(t){let e=this.getBaseGlyphRecord(t);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*e.firstLayerIndex,[...new Array(e.numLayers)].map(r=>new nh(p))}},wn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},nh=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},ah=Object.freeze({__proto__:null,COLR:sh}),ih=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new lh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new uh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new fh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new ch(r,o))))}},lh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},uh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},fh=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},ch=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},dh=Object.freeze({__proto__:null,CPAL:ih}),mh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new ph(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new hh(this.parser)}},ph=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},hh=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},gh=Object.freeze({__proto__:null,DSIG:mh}),yh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new vh(o,s))}},vh=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},bh=Object.freeze({__proto__:null,hdmx:yh}),wh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new Sh(r);s.push(n),o+=n}return s})}},Sh=class{constructor(t){this.version=t.uint16,this.length=t.uint16,this.coverage=t.flags(8),this.format=t.uint8,this.format===0&&(this.nPairs=t.uint16,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(e=>new xh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},xh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},Ch=Object.freeze({__proto__:null,kern:wh}),Fh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},kh=Object.freeze({__proto__:null,LTSH:Fh}),Oh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Th=Object.freeze({__proto__:null,MERG:Oh}),_h=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new Ph(this.tableStart,r))}},Ph=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Ah=Object.freeze({__proto__:null,meta:_h}),Eh=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Rh=Object.freeze({__proto__:null,PCLT:Eh}),Ih=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Lh(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new Bh(r))}},Lh=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},Bh=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Vh(t))}},Vh=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Dh=Object.freeze({__proto__:null,VDMX:Ih}),Nh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},zh=Object.freeze({__proto__:null,vhea:Nh}),Mh=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Gh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Gh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},jh=Object.freeze({__proto__:null,vmtx:Mh});var $l=u(X(),1);var{kebabCase:Uh}=yt($l.privateApis);function tu(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:Uh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var he=u(z(),1);function Hh(){let{installFonts:t}=(0,bo.useContext)(ie),[e,r]=(0,bo.useState)(!1),[o,s]=(0,bo.useState)(null),a=h=>{l(h)},n=h=>{l(h.target.files)},l=async h=>{if(!h)return;s(null),r(!0);let v=new Set,_=[...h],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(v.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return hn.includes(Y)?(v.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)m(x);else{let b=A?(0,Wr.__)("Sorry, you are not allowed to upload this file type."):(0,Wr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},m=async h=>{let v=await Promise.all(h.map(async _=>{let A=await d(_);return await rr(A,A.file,"all"),A}));g(v)};async function f(h){let v=new ls("Uploaded Font");try{let _=await c(h);return await v.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(h){return new Promise((v,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(h),A.onload=()=>v(A.result),A.onerror=_})}let d=async h=>{let v=await c(h),_=new ls("Uploaded Font");_.fromDataBuffer(v,h.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",D=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=D?`${D.minValue} ${D.maxValue}`:null;return{file:h,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},g=async h=>{let v=tu(h);try{await t(v),s({type:"success",message:(0,Wr.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,he.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,he.jsx)(te.DropZone,{onFilesDrop:a}),(0,he.jsxs)(te.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,he.jsxs)(te.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,he.jsx)("ul",{children:o.errors.map((h,v)=>(0,he.jsx)("li",{children:h},v))})]}),e&&(0,he.jsx)(te.FlexItem,{children:(0,he.jsx)("div",{className:"font-library__upload-area",children:(0,he.jsx)(te.ProgressBar,{})})}),!e&&(0,he.jsx)(te.FormFileUpload,{accept:hn.map(h=>`.${h}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:h})=>(0,he.jsx)(te.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:h,children:(0,Wr.__)("Upload font")})}),(0,he.jsx)(te.__experimentalText,{className:"font-library__upload-area__text",children:(0,Wr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var us=Hh;var ru=u(z(),1),{Tabs:D2}=yt(xn.privateApis),N2={id:"installed-fonts",title:(0,fs._x)("Library","Font library")},z2={id:"upload-fonts",title:(0,fs._x)("Upload","noun")};var ou=u(it(),1),Cn=u(X(),1),Yh=u(vt(),1);var su=u(z(),1);var Fn=u(z(),1);var nu=u(it(),1),cs=u(X(),1);var au=u(z(),1);var On=u(z(),1);var Pe=u(it(),1),Tn=u(X(),1),tg=u(vt(),1);var iu=u(ae(),1);var Qh=u(z(),1),{useSettingsForBlockElement:hC,TypographyPanel:gC}=yt(iu.privateApis);var $h=u(z(),1);var _n=u(z(),1),kC={text:{description:(0,Pe.__)("Manage the fonts used on the site."),title:(0,Pe.__)("Text")},link:{description:(0,Pe.__)("Manage the fonts and typography used on the links."),title:(0,Pe.__)("Links")},heading:{description:(0,Pe.__)("Manage the fonts and typography used on headings."),title:(0,Pe.__)("Headings")},caption:{description:(0,Pe.__)("Manage the fonts and typography used on captions."),title:(0,Pe.__)("Captions")},button:{description:(0,Pe.__)("Manage the fonts and typography used on buttons."),title:(0,Pe.__)("Buttons")}};var sg=u(it(),1),ng=u(X(),1),uu=u(ae(),1);var Yr=u(X(),1),lu=u(it(),1);var og=u(vt(),1);var eg=u(X(),1),rg=u(z(),1);var Pn=u(z(),1);var An=u(z(),1),{useSettingsForBlockElement:GC,ColorPanel:jC}=yt(uu.privateApis);var dg=u(it(),1),gu=u(X(),1);var lg=u(mr(),1),En=u(X(),1),ug=u(it(),1);var ms=u(X(),1);var ds=u(X(),1);var fu=u(z(),1);function cu(){let{paletteColors:t}=Vr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,fu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var So=u(z(),1),ag={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},ig=({label:t,isFocused:e,withHoverView:r})=>(0,So.jsx)(zr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,So.jsx)(ds.__unstableMotion.div,{variants:ag,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(ds.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(cu,{})})},o)}),du=ig;var kr=u(z(),1),mu=["color"];function ps({title:t,gap:e=2}){let r=zo(mu);return r?.length<=1?null:(0,kr.jsxs)(ms.__experimentalVStack,{spacing:3,children:[t&&(0,kr.jsx)(xe,{level:3,children:t}),(0,kr.jsx)(ms.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,kr.jsx)(Gr,{variation:o,isPill:!0,properties:mu,showTooltip:!0,children:()=>(0,kr.jsx)(du,{})},s))})]})}var pu=u(z(),1);var fg=u(mr(),1),hs=u(X(),1),cg=u(it(),1);var hu=u(z(),1);var Rn=u(z(),1),{Tabs:m6}=yt(gu.privateApis);var pg=u(it(),1),vu=u(ae(),1),hg=u(X(),1);var yu=u(ae(),1);var mg=u(z(),1);var{BackgroundPanel:y6}=yt(yu.privateApis);var In=u(z(),1),{useHasBackgroundPanel:F6}=yt(vu.privateApis);var Or=u(X(),1),Ln=u(it(),1);var wg=u(vt(),1);var gg=u(X(),1),yg=u(it(),1),vg=u(z(),1);var Bn=u(z(),1),{Menu:V6}=yt(Or.privateApis);var Ut=u(X(),1),xo=u(it(),1);var gs=u(vt(),1);var Vn=u(z(),1),{Menu:J6}=yt(Ut.privateApis),Q6=[{label:(0,xo.__)("Rename"),action:"rename"},{label:(0,xo.__)("Delete"),action:"delete"}],$6=[{label:(0,xo.__)("Reset"),action:"reset"}];var Sg=u(z(),1);var Fg=u(it(),1),wu=u(ae(),1);var bu=u(ae(),1),xg=u(vt(),1);var Cg=u(z(),1),{useSettingsForBlockElement:lF,DimensionsPanel:uF}=yt(bu.privateApis);var Dn=u(z(),1),{useHasDimensionsPanel:gF,useSettingsForBlockElement:yF}=yt(wu.privateApis);var Ou=u(X(),1),_g=u(it(),1);var Og=u(it(),1),Tg=u(X(),1);var Su=u(we(),1),xu=u(de(),1),vs=u(vt(),1),Cu=u(X(),1),Fu=u(it(),1);var ys=u(z(),1);function kg({gap:t=2}){let{user:e}=(0,vs.useContext)(Kt),r=e?.styles,s=(0,xu.useSelect)(n=>{let l=n(Su.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!fo(n,["color"])&&!fo(n,["typography","spacing"])),a=(0,vs.useMemo)(()=>[...[{title:(0,Fu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let m=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(g=>{if(r.blocks?.[g]?.css){let h=m[g]||{},v={css:`${m[g]?.css||""} ${r.blocks?.[g]?.css?.trim()||""}`};m[g]={...h,...v}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(m).length>0?{blocks:m}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,ys.jsx)(Cu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,ys.jsx)(Gr,{variation:n,children:m=>(0,ys.jsx)(nn,{label:n?.title,withHoverView:!0,isFocused:m,variation:n})},l))})}var Nn=kg;var ku=u(z(),1);var zn=u(z(),1);var Pg=u(it(),1),Ag=u(X(),1),Tu=u(ae(),1);var Mn=u(z(),1),{AdvancedPanel:BF}=yt(Tu.privateApis);var Vu=u(it(),1),jn=u(X(),1),Un=u(vt(),1);var Eg=u(de(),1),Rg=u(we(),1),_u=u(vt(),1);var Eu=u(it(),1),Ru=u(X(),1),bs=u(Au(),1),Ig=u(we(),1),Lg=u(de(),1);var Iu=u(mn(),1),Lu=u(z(),1),MF=3600*1e3*24;var Gn=u(X(),1),Co=u(it(),1);var Bu=u(z(),1);var Hn=u(z(),1);var Wn=u(it(),1),Ze=u(X(),1);var zg=u(vt(),1);var Vg=u(X(),1),Dg=u(it(),1),Ng=u(z(),1);var Yn=u(z(),1),{Menu:i3}=yt(Ze.privateApis);var Mu=u(it(),1),Me=u(X(),1);var Gu=u(vt(),1);var Mg=u(ae(),1),Gg=u(it(),1);var jg=u(z(),1);var Ug=u(X(),1),Du=u(it(),1),Hg=u(z(),1);var Fo=u(X(),1),Wg=u(it(),1),Yg=u(vt(),1),Nu=u(z(),1);var Xe=u(X(),1),zu=u(z(),1);var qn=u(z(),1),{Menu:k3}=yt(Me.privateApis);var Xn=u(z(),1);var Kn=u(z(),1);function qr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Kn.jsx)(uo,{value:r,baseValue:o,onChange:s,children:(0,Kn.jsx)(t,{...a})})}}var Kg=qr(Nn);var Jg=qr(ps);var Qg=qr(Yo);var Zr=u(z(),1);function Jn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Zr.jsx)(us,{});break;case"installed-fonts":s=(0,Zr.jsx)(ts,{});break;default:s=(0,Zr.jsx)(rs,{slug:o})}return(0,Zr.jsx)(uo,{value:t,baseValue:e,onChange:r,children:(0,Zr.jsx)(Xo,{children:s})})}var Hu=u(Ds()),{unlock:Qn}=(0,Hu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='3e5ff62f49']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","3e5ff62f49"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:ws}=Qn(Wu.privateApis),{useGlobalStyles:$g}=Qn(Yu.privateApis);function ty(){let{records:t=[]}=(0,Ss.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,Zu.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=$g(),l=(0,qu.useSelect)(f=>f(Ss.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let m=[{id:"installed-fonts",title:(0,Xr._x)("Library","Font library")}];return l&&(m.push({id:"upload-fonts",title:(0,Xr._x)("Upload","noun")}),m.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,Xr.__)("Install Fonts"):c})))),React.createElement(Ns,{title:(0,Xr.__)("Fonts")},React.createElement(ws,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(ws.TabList,null,m.map(({id:f,title:c})=>React.createElement(ws.Tab,{key:f,tabId:f},c)))),m.map(({id:f})=>React.createElement(ws.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Jn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function ey(){return React.createElement(ty,null)}var ry=ey;export{ry as stage}; +}`,globalThis.document.head.appendChild(s),s}var Fd=[0,1,0,0],kd=[79,84,84,79],Od=[119,79,70,70],Td=[119,79,70,50];function is(t,e){if(t.length===e.length){for(let r=0;r<t.length;r++)if(t[r]!==e[r])return;return!0}}function _d(t){let e=[t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3)];if(is(e,Fd)||is(e,kd))return"SFNT";if(is(e,Od))return"WOFF";if(is(e,Td))return"WOFF2"}function Pd(t){if(!t.ok)throw new Error(`HTTP ${t.status} - ${t.statusText}`);return t}var us=class extends id{constructor(t,e={}){super(),this.name=t,this.options=e,this.metrics=!1}get src(){return this.__src}set src(t){this.__src=t,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await Cd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>Pd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new as("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=_d(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new as("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return Sd().then(e=>(t==="SFNT"&&(this.opentype=new cd(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new md(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new gd(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new as("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new as("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=us;var Ye=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},Ad=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Ed=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new Rd(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},Rd=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},Id=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,h=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(h,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],h=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let m=n+h,g=l+h;m<=g;m++)d.push(m);else for(let m=0,g=l-n;m<=g;m++)r.currentPosition=c+f+m*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:h,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Ld=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),t<this.firstCode)return{};if(t>this.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Bd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new Vd(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},Vd=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Dd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),t<this.startCharCode||t>this.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Nd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new zd(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)<t)continue;let s=e.startCharCode+(t-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},zd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Md=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Gd(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Gd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},jd=class extends Ye{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new Ud(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},Ud=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Hd(t,e,r){let o=t.uint16;return o===0?new Ad(t,e,r):o===2?new Ed(t,e,r):o===4?new Id(t,e,r):o===6?new Ld(t,e,r):o===8?new Bd(t,e,r):o===10?new Dd(t,e,r):o===12?new Nd(t,e,r):o===13?new Md(t,e,r):o===14?new jd(t,e,r):{}}var Wd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Yd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e<this.numTables;e++){let r=this.getSubTable(e).reverse(t);if(r)return r}}getGlyphId(t){let e=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},Yd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Hd(t,r,o)))}},qd=Object.freeze({__proto__:null,cmap:Wd}),Zd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Xd=Object.freeze({__proto__:null,head:Zd}),Kd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},Jd=Object.freeze({__proto__:null,hhea:Kd}),Qd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new $d(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(h=>o.int16)))}}},$d=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},tm=Object.freeze({__proto__:null,hmtx:Qd}),em=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},rm=Object.freeze({__proto__:null,maxp:em}),om=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new nm(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new sm(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},sm=class{constructor(t,e){this.length=t,this.offset=e}},nm=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,am(t,this)))}};function am(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,h=o/2;l<h;l++)n[l]=String.fromCharCode(t.uint16);return n.join("")}let s=t.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var im=Object.freeze({__proto__:null,name:om}),lm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},um=Object.freeze({__proto__:null,OS2:lm}),fm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Ul.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Ul[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Ul=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],cm=Object.freeze({__proto__:null,post:fm}),dm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new wn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new wn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new wn({offset:t.offset+this.itemVarStoreOffset},e)))}},wn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new mm({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new pm({offset:t.offset+this.baseScriptListOffset},e))}},mm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},pm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new hm(this.start,r))))}},hm=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new gm(e)))}},gm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new ym(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new vm(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Jl(t)))}},ym=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Jl(e)))}},vm=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new wm(this.parser)}},Jl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new bm(t))))}},bm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},wm=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},Sm=Object.freeze({__proto__:null,BASE:dm}),Hl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new xm(t)))}},xm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},vo=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new Cm(t)))}},Cm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},Fm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},km=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new Hl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new Om(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new _m(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new Hl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Em(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Fm(r)}))}},Om=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new Tm(this.parser)}},Tm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},_m=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new vo(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new Pm(this.parser)}},Pm=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new Am(this.parser)}},Am=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},Em=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new vo(this.parser)}},Rm=Object.freeze({__proto__:null,GDEF:km}),Wl=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new Im(t))}},Im=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Lm=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Bm(t))}},Bm=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},Yl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},ql=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new Vm(t))}},Vm=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Dm=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new zm(t);if(e.startsWith("cc"))return new Nm(t);if(e.startsWith("ss"))return new Mm(t)}}},Nm=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},zm=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Mm=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function Ql(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var Fr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new vo(t)}},xn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Gm=class extends Fr{constructor(t){super(t),this.deltaGlyphID=t.int16}},jm=class extends Fr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new Um(e)}},Um=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Hm=class extends Fr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Wm(e)}},Wm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Ym=class extends Fr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new qm(e)}},qm=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Zm(e)}},Zm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Xm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Ql(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new xn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new Km(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new Jm(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new vo(e)}},Km=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new $l(e)}},$l=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new xn(t))}},Jm=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Qm(e)}},Qm=class extends $l{constructor(t){super(t)}},$m=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Ql(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new tu(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new tp(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new rp(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new vo(e)}},tp=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new ep(e)}},ep=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new xn(t))}},rp=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new op(e)}},op=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new tu(t))}},tu=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},sp=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},np=class extends Fr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},ap={buildSubtable:function(t,e){let r=new[void 0,Gm,jm,Hm,Ym,Xm,$m,sp,np][t](e);return r.type=t,r}},qe=class extends Bt{constructor(t){super(t)}},ip=class extends qe{constructor(t){super(t),console.log("lookup type 1")}},lp=class extends qe{constructor(t){super(t),console.log("lookup type 2")}},up=class extends qe{constructor(t){super(t),console.log("lookup type 3")}},fp=class extends qe{constructor(t){super(t),console.log("lookup type 4")}},cp=class extends qe{constructor(t){super(t),console.log("lookup type 5")}},dp=class extends qe{constructor(t){super(t),console.log("lookup type 6")}},mp=class extends qe{constructor(t){super(t),console.log("lookup type 7")}},pp=class extends qe{constructor(t){super(t),console.log("lookup type 8")}},hp=class extends qe{constructor(t){super(t),console.log("lookup type 9")}},gp={buildSubtable:function(t,e){let r=new[void 0,ip,lp,up,fp,cp,dp,mp,pp,hp][t](e);return r.type=t,r}},Zl=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},yp=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?ap:gp;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},eu=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Wl.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Wl(o))),Z(this,"featureList",()=>a?ql.EMPTY:(o.currentPosition=s+this.featureListOffset,new ql(o))),Z(this,"lookupList",()=>a?Zl.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Zl(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Lm(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new Yl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new Yl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Dm(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new yp(this.parser,e)}},vp=class extends eu{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},bp=Object.freeze({__proto__:null,GSUB:vp}),wp=class extends eu{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},Sp=Object.freeze({__proto__:null,GPOS:wp}),xp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new Cp(r)}},Cp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new Fp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},Fp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},kp=Object.freeze({__proto__:null,SVG:xp}),Op=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new Tp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new _p(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(t=>t.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},Tp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},_p=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o<r&&(this.postScriptNameID=t.uint16)}},Pp=Object.freeze({__proto__:null,fvar:Op}),Ap=class extends mt{constructor(t,e){let{p:r}=super(t,e),o=t.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},Ep=Object.freeze({__proto__:null,cvt:Ap}),Rp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Ip=Object.freeze({__proto__:null,fpgm:Rp}),Lp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Bp(r)))}},Bp=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},Vp=Object.freeze({__proto__:null,gasp:Lp}),Dp=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Np=Object.freeze({__proto__:null,glyf:Dp}),zp=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Mp=Object.freeze({__proto__:null,loca:zp}),Gp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},jp=Object.freeze({__proto__:null,prep:Gp}),Up=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Hp=Object.freeze({__proto__:null,CFF:Up}),Wp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Yp=Object.freeze({__proto__:null,CFF2:Wp}),qp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Zp(r)))}},Zp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Xp=Object.freeze({__proto__:null,VORG:qp}),Kp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new ls(t),this.vert=new ls(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},Jp=class{constructor(t){this.hori=new ls(t),this.vert=new ls(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},ls=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},ru=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new Kp(o)))}},Qp=Object.freeze({__proto__:null,EBLC:ru}),ou=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},$p=Object.freeze({__proto__:null,EBDT:ou}),th=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new Jp(r)))}},eh=Object.freeze({__proto__:null,EBSC:th}),rh=class extends ru{constructor(t,e){super(t,e,"CBLC")}},oh=Object.freeze({__proto__:null,CBLC:rh}),sh=class extends ou{constructor(t,e){super(t,e,"CBDT")}},nh=Object.freeze({__proto__:null,CBDT:sh}),ah=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},ih=Object.freeze({__proto__:null,sbix:ah}),lh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new Sn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new Sn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let h=new Sn(this.parser),f=h.gID;if(f===t)return h;f>t?s=l:f<t&&(e=l)}return!1}getLayers(t){let e=this.getBaseGlyphRecord(t);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*e.firstLayerIndex,[...new Array(e.numLayers)].map(r=>new uh(p))}},Sn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},uh=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},fh=Object.freeze({__proto__:null,COLR:lh}),ch=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new dh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new mh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new ph(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new hh(r,o))))}},dh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},mh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},ph=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},hh=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},gh=Object.freeze({__proto__:null,CPAL:ch}),yh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new vh(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new bh(this.parser)}},vh=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},bh=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},wh=Object.freeze({__proto__:null,DSIG:yh}),Sh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new xh(o,s))}},xh=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},Ch=Object.freeze({__proto__:null,hdmx:Sh}),Fh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new kh(r);s.push(n),o+=n}return s})}},kh=class{constructor(t){this.version=t.uint16,this.length=t.uint16,this.coverage=t.flags(8),this.format=t.uint8,this.format===0&&(this.nPairs=t.uint16,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(e=>new Oh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},Oh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},Th=Object.freeze({__proto__:null,kern:Fh}),_h=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},Ph=Object.freeze({__proto__:null,LTSH:_h}),Ah=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Eh=Object.freeze({__proto__:null,MERG:Ah}),Rh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new Ih(this.tableStart,r))}},Ih=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Lh=Object.freeze({__proto__:null,meta:Rh}),Bh=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Vh=Object.freeze({__proto__:null,PCLT:Bh}),Dh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Nh(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new zh(r))}},Nh=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},zh=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Mh(t))}},Mh=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Gh=Object.freeze({__proto__:null,VDMX:Dh}),jh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},Uh=Object.freeze({__proto__:null,vhea:jh}),Hh=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Wh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Wh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},Yh=Object.freeze({__proto__:null,vmtx:Hh});var su=u(X(),1);var{kebabCase:qh}=yt(su.privateApis);function nu(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:qh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var he=u(z(),1);function Zh(){let{installFonts:t}=(0,bo.useContext)(ie),[e,r]=(0,bo.useState)(!1),[o,s]=(0,bo.useState)(null),a=g=>{l(g)},n=g=>{l(g.target.files)},l=async g=>{if(!g)return;s(null),r(!0);let y=new Set,_=[...g],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(y.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return gn.includes(Y)?(y.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)h(x);else{let b=A?(0,Wr.__)("Sorry, you are not allowed to upload this file type."):(0,Wr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},h=async g=>{let y=await Promise.all(g.map(async _=>{let A=await d(_);return await er(A,A.file,"all"),A}));m(y)};async function f(g){let y=new us("Uploaded Font");try{let _=await c(g);return await y.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(g){return new Promise((y,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(g),A.onload=()=>y(A.result),A.onerror=_})}let d=async g=>{let y=await c(g),_=new us("Uploaded Font");_.fromDataBuffer(y,g.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",D=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=D?`${D.minValue} ${D.maxValue}`:null;return{file:g,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},m=async g=>{let y=nu(g);try{await t(y),s({type:"success",message:(0,Wr.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,he.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,he.jsx)(te.DropZone,{onFilesDrop:a}),(0,he.jsxs)(te.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,he.jsxs)(te.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,he.jsx)("ul",{children:o.errors.map((g,y)=>(0,he.jsx)("li",{children:g},y))})]}),e&&(0,he.jsx)(te.FlexItem,{children:(0,he.jsx)("div",{className:"font-library__upload-area",children:(0,he.jsx)(te.ProgressBar,{})})}),!e&&(0,he.jsx)(te.FormFileUpload,{accept:gn.map(g=>`.${g}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:g})=>(0,he.jsx)(te.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,Wr.__)("Upload font")})}),(0,he.jsx)(te.__experimentalText,{className:"font-library__upload-area__text",children:(0,Wr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var fs=Zh;var iu=u(z(),1),{Tabs:G2}=yt(Cn.privateApis),j2={id:"installed-fonts",title:(0,cs._x)("Library","Font library")},U2={id:"upload-fonts",title:(0,cs._x)("Upload","noun")};var lu=u(it(),1),Fn=u(X(),1),Kh=u(vt(),1);var uu=u(z(),1);var kn=u(z(),1);var fu=u(it(),1),ds=u(X(),1);var cu=u(z(),1);var Tn=u(z(),1);var Pe=u(it(),1),_n=u(X(),1),sg=u(vt(),1);var du=u(ae(),1);var rg=u(z(),1),{useSettingsForBlockElement:bC,TypographyPanel:wC}=yt(du.privateApis);var og=u(z(),1);var Pn=u(z(),1),PC={text:{description:(0,Pe.__)("Manage the fonts used on the site."),title:(0,Pe.__)("Text")},link:{description:(0,Pe.__)("Manage the fonts and typography used on the links."),title:(0,Pe.__)("Links")},heading:{description:(0,Pe.__)("Manage the fonts and typography used on headings."),title:(0,Pe.__)("Headings")},caption:{description:(0,Pe.__)("Manage the fonts and typography used on captions."),title:(0,Pe.__)("Captions")},button:{description:(0,Pe.__)("Manage the fonts and typography used on buttons."),title:(0,Pe.__)("Buttons")}};var lg=u(it(),1),ug=u(X(),1),pu=u(ae(),1);var Yr=u(X(),1),mu=u(it(),1);var ig=u(vt(),1);var ng=u(X(),1),ag=u(z(),1);var An=u(z(),1);var En=u(z(),1),{useSettingsForBlockElement:WC,ColorPanel:YC}=yt(pu.privateApis);var gg=u(it(),1),Su=u(X(),1);var dg=u(mr(),1),Rn=u(X(),1),mg=u(it(),1);var ps=u(X(),1);var ms=u(X(),1);var hu=u(z(),1);function gu(){let{paletteColors:t}=Vr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,hu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var So=u(z(),1),fg={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},cg=({label:t,isFocused:e,withHoverView:r})=>(0,So.jsx)(zr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,So.jsx)(ms.__unstableMotion.div,{variants:fg,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(ms.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(gu,{})})},o)}),yu=cg;var kr=u(z(),1),vu=["color"];function hs({title:t,gap:e=2}){let r=Mo(vu);return r?.length<=1?null:(0,kr.jsxs)(ps.__experimentalVStack,{spacing:3,children:[t&&(0,kr.jsx)(xe,{level:3,children:t}),(0,kr.jsx)(ps.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,kr.jsx)(Gr,{variation:o,isPill:!0,properties:vu,showTooltip:!0,children:()=>(0,kr.jsx)(yu,{})},s))})]})}var bu=u(z(),1);var pg=u(mr(),1),gs=u(X(),1),hg=u(it(),1);var wu=u(z(),1);var In=u(z(),1),{Tabs:y6}=yt(Su.privateApis);var vg=u(it(),1),Cu=u(ae(),1),bg=u(X(),1);var xu=u(ae(),1);var yg=u(z(),1);var{BackgroundPanel:S6}=yt(xu.privateApis);var Ln=u(z(),1),{useHasBackgroundPanel:_6}=yt(Cu.privateApis);var Or=u(X(),1),Bn=u(it(),1);var Fg=u(vt(),1);var wg=u(X(),1),Sg=u(it(),1),xg=u(z(),1);var Vn=u(z(),1),{Menu:M6}=yt(Or.privateApis);var Ut=u(X(),1),xo=u(it(),1);var ys=u(vt(),1);var Dn=u(z(),1),{Menu:eF}=yt(Ut.privateApis),rF=[{label:(0,xo.__)("Rename"),action:"rename"},{label:(0,xo.__)("Delete"),action:"delete"}],oF=[{label:(0,xo.__)("Reset"),action:"reset"}];var kg=u(z(),1);var _g=u(it(),1),ku=u(ae(),1);var Fu=u(ae(),1),Og=u(vt(),1);var Tg=u(z(),1),{useSettingsForBlockElement:dF,DimensionsPanel:mF}=yt(Fu.privateApis);var Nn=u(z(),1),{useHasDimensionsPanel:wF,useSettingsForBlockElement:SF}=yt(ku.privateApis);var Eu=u(X(),1),Rg=u(it(),1);var Ag=u(it(),1),Eg=u(X(),1);var Ou=u(we(),1),Tu=u(de(),1),bs=u(vt(),1),_u=u(X(),1),Pu=u(it(),1);var vs=u(z(),1);function Pg({gap:t=2}){let{user:e}=(0,bs.useContext)(Kt),r=e?.styles,s=(0,Tu.useSelect)(n=>{let l=n(Ou.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!fo(n,["color"])&&!fo(n,["typography","spacing"])),a=(0,bs.useMemo)(()=>[...[{title:(0,Pu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let h=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(m=>{if(r.blocks?.[m]?.css){let g=h[m]||{},y={css:`${h[m]?.css||""} ${r.blocks?.[m]?.css?.trim()||""}`};h[m]={...g,...y}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(h).length>0?{blocks:h}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,vs.jsx)(_u.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,vs.jsx)(Gr,{variation:n,children:h=>(0,vs.jsx)(an,{label:n?.title,withHoverView:!0,isFocused:h,variation:n})},l))})}var zn=Pg;var Au=u(z(),1);var Mn=u(z(),1);var Ig=u(it(),1),Lg=u(X(),1),Ru=u(ae(),1);var Gn=u(z(),1),{AdvancedPanel:zF}=yt(Ru.privateApis);var Gu=u(it(),1),Un=u(X(),1),Hn=u(vt(),1);var Bg=u(de(),1),Vg=u(we(),1),Iu=u(vt(),1);var Vu=u(it(),1),Du=u(X(),1),ws=u(Bu(),1),Dg=u(we(),1),Ng=u(de(),1);var Nu=u(pn(),1),zu=u(z(),1),HF=3600*1e3*24;var jn=u(X(),1),Co=u(it(),1);var Mu=u(z(),1);var Wn=u(z(),1);var Yn=u(it(),1),Ze=u(X(),1);var Ug=u(vt(),1);var Mg=u(X(),1),Gg=u(it(),1),jg=u(z(),1);var qn=u(z(),1),{Menu:c3}=yt(Ze.privateApis);var Wu=u(it(),1),Me=u(X(),1);var Yu=u(vt(),1);var Hg=u(ae(),1),Wg=u(it(),1);var Yg=u(z(),1);var qg=u(X(),1),ju=u(it(),1),Zg=u(z(),1);var Fo=u(X(),1),Xg=u(it(),1),Kg=u(vt(),1),Uu=u(z(),1);var Xe=u(X(),1),Hu=u(z(),1);var Zn=u(z(),1),{Menu:P3}=yt(Me.privateApis);var Kn=u(z(),1);var Jn=u(z(),1);function qr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Jn.jsx)(uo,{value:r,baseValue:o,onChange:s,children:(0,Jn.jsx)(t,{...a})})}}var ty=qr(zn);var ey=qr(hs);var ry=qr(qo);var Zr=u(z(),1);function Qn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Zr.jsx)(fs,{});break;case"installed-fonts":s=(0,Zr.jsx)(es,{});break;default:s=(0,Zr.jsx)(os,{slug:o})}return(0,Zr.jsx)(uo,{value:t,baseValue:e,onChange:r,children:(0,Zr.jsx)(Ko,{children:s})})}var Xu=u(zs()),{unlock:$n}=(0,Xu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='eb78745b9d']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","eb78745b9d"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:Ss}=$n(Ku.privateApis),{useGlobalStyles:oy}=$n(Ju.privateApis);function sy(){let{records:t=[]}=(0,xs.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,$u.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=oy(),l=(0,Qu.useSelect)(f=>f(xs.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let h=[{id:"installed-fonts",title:(0,Xr._x)("Library","Font library")}];return l&&(h.push({id:"upload-fonts",title:(0,Xr._x)("Upload","noun")}),h.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,Xr.__)("Install Fonts"):c})))),React.createElement(Ms,{title:(0,Xr.__)("Fonts")},React.createElement(Ss,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(Ss.TabList,null,h.map(({id:f,title:c})=>React.createElement(Ss.Tab,{key:f,tabId:f},c)))),h.map(({id:f})=>React.createElement(Ss.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Qn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function ny(){return React.createElement(sy,null)}var ay=ny;export{ay as stage}; /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: diff --git a/src/wp-includes/build/routes/registry.php b/src/wp-includes/build/routes/registry.php index 2009a1063d831..8cfe65cb89b96 100644 --- a/src/wp-includes/build/routes/registry.php +++ b/src/wp-includes/build/routes/registry.php @@ -14,13 +14,6 @@ 'has_route' => true, 'has_content' => true, ), - array( - 'name' => 'content-guidelines', - 'path' => '/', - 'page' => 'guidelines', - 'has_route' => true, - 'has_content' => true, - ), array( 'name' => 'font-list', 'path' => '/font-list', @@ -34,5 +27,12 @@ 'page' => 'font-library', 'has_route' => true, 'has_content' => false, + ), + array( + 'name' => 'guidelines', + 'path' => '/', + 'page' => 'guidelines', + 'has_route' => true, + 'has_content' => true, ) ); From c76e811ca8aa4440c417f32a9ad606479bddf722 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 30 Jun 2026 00:50:42 +0000 Subject: [PATCH 273/327] General: Bump the pinned hash for Gutenberg to `v23.1.0`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the pinned commit hash of the Gutenberg repository from `7295bd91a3c2b64bb11dde0a12313210d9d16a12 ` (version `23.0.0`) to `585cf86bb6f408b1dc61175f75db016aa4760653` (version `23.1.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v23.0.0..v23.1.0. The following commits are included: - Edit Site: Move show-icon-labels handling to specific edit-site call sites (https://github.com/WordPress/gutenberg/pull/77287) - Boot: Use `--wpds-cursor-control` design token (https://github.com/WordPress/gutenberg/pull/77357) - Image: Fix non-local image ID removal undo trap (https://github.com/WordPress/gutenberg/pull/77367) - Block Editor: Use `--wpds-cursor-control` design token (https://github.com/WordPress/gutenberg/pull/77354) - Test: Connectors Point to the righ page. (https://github.com/WordPress/gutenberg/pull/77272) - Commands: Use `--wpds-cursor-control` design token (https://github.com/WordPress/gutenberg/pull/77358) - UI: use Text in Notice.ActionLink typography (https://github.com/WordPress/gutenberg/pull/77332) - Jest setup: remove unneeded rAF polyfills (https://github.com/WordPress/gutenberg/pull/77378) - Fields: Use `--wpds-cursor-control` design token (https://github.com/WordPress/gutenberg/pull/77373) - Widgets: Use --wpds-cursor-control design token (https://github.com/WordPress/gutenberg/pull/77368) - EditPost: Use `--wpds-cursor-control` design token for interactive controls (https://github.com/WordPress/gutenberg/pull/77360) - Post Editor: Store metaboxes RTC-compatible flag on location entries (https://github.com/WordPress/gutenberg/pull/77361) - UI: Use shared style-imports types (https://github.com/WordPress/gutenberg/pull/77388) - Stop adding “noreferrer” to external links except File block. (https://github.com/WordPress/gutenberg/pull/26968) - Core Abilities: Export initialization promise as `ready` (https://github.com/WordPress/gutenberg/pull/77254) - Externalize react-dom/client (https://github.com/WordPress/gutenberg/pull/77326) - Data: Export and consolidate 'onSubKey' helper (https://github.com/WordPress/gutenberg/pull/77364) - Paragraph: Refactor replacement logic in 'useOnEnter' hook (https://github.com/WordPress/gutenberg/pull/77383) - Fix pseudo selector block style rendering in the editor (https://github.com/WordPress/gutenberg/pull/76879) - Tabs: Lock top-level structure and disable visibility controls (https://github.com/WordPress/gutenberg/pull/77370) - Share React CSS custom properties typing (https://github.com/WordPress/gutenberg/pull/77394) - Notes: Refactor and extract offset calculation logic (https://github.com/WordPress/gutenberg/pull/77414) - Tabs: Remove redundant version field from block.json (https://github.com/WordPress/gutenberg/pull/77417) - Latest Comments: Fix uneven padding issue causing mis-alignment (https://github.com/WordPress/gutenberg/pull/77379) - Workflow: Use --wpds-cursor-control design token (https://github.com/WordPress/gutenberg/pull/77369) - blocks: Port over some of the type information for @wordpress/blocks from DefinitelyTyped (https://github.com/WordPress/gutenberg/pull/77393) - Notes: Extract floating notes state into a dedicated store (https://github.com/WordPress/gutenberg/pull/77424) - Tabs: Handle duplicating tabs (https://github.com/WordPress/gutenberg/pull/76449) - Components: Refactor NavigableContainer from class to function component (https://github.com/WordPress/gutenberg/pull/77171) - UI: Fix focus-trap broken by ThemeProvider's display:contents (https://github.com/WordPress/gutenberg/pull/77381) - viewport visibility: use 'key' instead of 'value' for device type (https://github.com/WordPress/gutenberg/pull/77410) - Update changelog for blocks package (https://github.com/WordPress/gutenberg/pull/77437) - Tabs: Clean up Edit components (https://github.com/WordPress/gutenberg/pull/77426) - Media editor: remove unused dependency (https://github.com/WordPress/gutenberg/pull/77438) - Block Editor: Strip per-block custom CSS on save for users without edit_css (https://github.com/WordPress/gutenberg/pull/76650) - Ensure Post Template fallback styles don't apply when minimumColumnWidth is defined (https://github.com/WordPress/gutenberg/pull/77411) - UI: Upgrade title validation to cleanup-based re-validation (https://github.com/WordPress/gutenberg/pull/77165) - ui/Tabs: Fix `act()` warnings in tests (https://github.com/WordPress/gutenberg/pull/77319) - docs: Clarify UI package setup for different contexts (https://github.com/WordPress/gutenberg/pull/77338) - Fix: Preserve aspectRatio and scale when switching to wide/full align… (https://github.com/WordPress/gutenberg/pull/76914) - Link: Honor `openInNewTab` consistently (https://github.com/WordPress/gutenberg/pull/77422) - Block Supports: Add min width support to dimensions (https://github.com/WordPress/gutenberg/pull/76949) - Link: Remove underline from unstyled icon links (https://github.com/WordPress/gutenberg/pull/77420) - Theme: Update Terrazzo packages to 2.0 (https://github.com/WordPress/gutenberg/pull/77432) - Editor: Use `--wpds-cursor-control` design token (https://github.com/WordPress/gutenberg/pull/77376) - GlobalStylesUI: Use `--wpds-cursor-control` design token for interact… (https://github.com/WordPress/gutenberg/pull/77335) - Typescript: Migrate keyboard-shortcuts to TS (https://github.com/WordPress/gutenberg/pull/76287) - GlobalStylesUI: Remove unused CSS rule (https://github.com/WordPress/gutenberg/pull/77456) - Writing Flow: fix arrow keys skipping paragraph containing link (https://github.com/WordPress/gutenberg/pull/77474) - Ensure layout classnames are applied to the inner blocks wrapper and not to its siblings (https://github.com/WordPress/gutenberg/pull/77408) - Fix: Change Featured Image toggle label to 'Make image a link' (https://github.com/WordPress/gutenberg/pull/71931) - Autocomplete: Skip stale triggers from completed mentions (https://github.com/WordPress/gutenberg/pull/77185) - Fix: Add cursor pointer to the ariakit menu item component - Issue - https://github.com/WordPress/gutenberg/pull/70411 (https://github.com/WordPress/gutenberg/pull/70412) - Guidelines CPT: Skip registration when post type already exists (https://github.com/WordPress/gutenberg/pull/77486) - ESLint: Introduce bulk suppressions workflow (https://github.com/WordPress/gutenberg/pull/77392) - Add heading level 1 for the fonts page (https://github.com/WordPress/gutenberg/pull/77482) - CollapsibleCard: Fix missing keyboard focus ring on the header chevron icon when rendered inside wp-admin (https://github.com/WordPress/gutenberg/pull/77468) - Docs: Add ESLint v10 migration guide and polish docs (https://github.com/WordPress/gutenberg/pull/77217) - Tabs: Fix missing keyboard focus ring on the panel in Windows High Contrast mode when rendered inside wp-admin (https://github.com/WordPress/gutenberg/pull/77469) - EditSite: Remove unused CSS rule (https://github.com/WordPress/gutenberg/pull/77494) - Card: Remove unused CardContext (https://github.com/WordPress/gutenberg/pull/77463) - design-system-mcp: Add new package for design system MCP tooling (https://github.com/WordPress/gutenberg/pull/77159) - Storybook: Fix component descriptions in manifest files (https://github.com/WordPress/gutenberg/pull/77112) - Notes: Reduce passes in useBlockComments memo and rename outputs (https://github.com/WordPress/gutenberg/pull/77440) - Upload Media: Enable concurrent sideload uploads (https://github.com/WordPress/gutenberg/pull/75888) - Deduplicate client-side image sizes with matching dimensions (https://github.com/WordPress/gutenberg/pull/77036) - Convert tests/unit to npm workspace (https://github.com/WordPress/gutenberg/pull/77063) - UI: Portal prop and Portal subcomponents for overlay Popups (https://github.com/WordPress/gutenberg/pull/77452) - Storybook: add global preview styles for @wordpress/ui overlays (https://github.com/WordPress/gutenberg/pull/77451) - Experiment: Add custom taxonomies (https://github.com/WordPress/gutenberg/pull/77497) - Storybook: Fix 'Open source file' links for storybook-local stories (https://github.com/WordPress/gutenberg/pull/76758) - UI Dialog: Add Description, modal context, and misc improvements (https://github.com/WordPress/gutenberg/pull/77194) - Docs: Update parameter type from `number` to `int` in CSS declaration methods (https://github.com/WordPress/gutenberg/pull/77519) - Fix: use node_modules/.bin/stylelint to avoid npm warnings on Node 24 (https://github.com/WordPress/gutenberg/pull/77512) - Text: Apply both heading and paragraph CSS defenses unconditionally (https://github.com/WordPress/gutenberg/pull/77461) - Notes: Compute note positions centrally in useFloatingBoard (https://github.com/WordPress/gutenberg/pull/77433) - Stylelint: Add cursor pointer rule and block-library override (https://github.com/WordPress/gutenberg/pull/77501) - Admin UI: Add visual prop to Page header component (https://github.com/WordPress/gutenberg/pull/76469) - Fix: post saving should be locked during media uploads (https://github.com/WordPress/gutenberg/pull/76973) - RTC: Fixed orphaned meta causing dirty editor state (https://github.com/WordPress/gutenberg/pull/77529) - Media Editor experiment: add experimental image editor and cropper (https://github.com/WordPress/gutenberg/pull/77479) - UI: Start recommending new Card components (https://github.com/WordPress/gutenberg/pull/77423) - Media Editor Modal: Add a media editor modal experiment (https://github.com/WordPress/gutenberg/pull/77480) - Expand support for `isElementVisible` (`VisuallyHidden`) (https://github.com/WordPress/gutenberg/pull/77191) - Experiments Page: Update labels for the media-related experiments to group them together and better clarify what the experiments do (https://github.com/WordPress/gutenberg/pull/77536) - Media Editor: render cropper in media editor modal for images (https://github.com/WordPress/gutenberg/pull/77537) - Tabs: Rename tabs blocks to follow WCAG Tabs pattern (https://github.com/WordPress/gutenberg/pull/77418) - [Video Block]: Update z-index for tracks popover to ensure proper stacking context (https://github.com/WordPress/gutenberg/pull/77517) - Guidelines: Make the CPT type-aware (https://github.com/WordPress/gutenberg/pull/77491) - Taxonomies: add spacing above Add Taxonomy modal actions (https://github.com/WordPress/gutenberg/pull/77523) - Taxonomies Route: Declare @wordpress/base-styles dependency (https://github.com/WordPress/gutenberg/pull/77543) - Taxonomies: warn when editing an existing taxonomy's slug (https://github.com/WordPress/gutenberg/pull/77527) - Site Logo Block: Enable the media editor modal experiment for the crop button (https://github.com/WordPress/gutenberg/pull/77548) - Menu: Fix flaky submenu focus test (https://github.com/WordPress/gutenberg/pull/77430) - Add no-unsafe-render-order ESLint rule (https://github.com/WordPress/gutenberg/pull/77428) - UI: Update `@base-ui/react` from `1.4.0` to `1.4.1` (https://github.com/WordPress/gutenberg/pull/77520) - components: Menu popover render + surface/motion split (https://github.com/WordPress/gutenberg/pull/77460) - Upload Media: Use .jpg extension for HEIC-to-JPEG client conversion (https://github.com/WordPress/gutenberg/pull/77506) - Consolidate ESLint config into tools/eslint/ workspace package (https://github.com/WordPress/gutenberg/pull/77215) - UI: Add Drawer primitive (https://github.com/WordPress/gutenberg/pull/76690) - Fix import order in block-editor `custom-css.js` (https://github.com/WordPress/gutenberg/pull/77566) - Experiment: Follow up improvements on taxonomies(77497) (https://github.com/WordPress/gutenberg/pull/77567) - Client-side media: declare convert_format as boolean arg on sideload route (https://github.com/WordPress/gutenberg/pull/77565) - Media Upload Modal: Enhance filtering logic to support "text/vtt" and "video/*" (https://github.com/WordPress/gutenberg/pull/77550) - Media Editor: add cropper controls to the media editor modal (https://github.com/WordPress/gutenberg/pull/77540) - Media Editor: add zoom control and hide fine rotation on narrow viewports (https://github.com/WordPress/gutenberg/pull/77585) - Remove ZebulanStanphill from CODEOWNERS (https://github.com/WordPress/gutenberg/pull/77586) - Image editor: reserve inner gutter so crop handles stay accessible (https://github.com/WordPress/gutenberg/pull/77547) - Docs: Auto-generate per-block API reference pages from block.json (https://github.com/WordPress/gutenberg/pull/77350) - Embed: Fix variation upgrade undo trap (https://github.com/WordPress/gutenberg/pull/77546) - fix: block-mover up/down button tooltip positions (https://github.com/WordPress/gutenberg/pull/77588) - fix: edit-post back button tooltip position (https://github.com/WordPress/gutenberg/pull/77587) - Revert "Docs: Auto-generate per-block API reference pages from block.json (https://github.com/WordPress/gutenberg/pull/7…" (https://github.com/WordPress/gutenberg/pull/77590) - Experiment: Add delete action to taxonomy management (https://github.com/WordPress/gutenberg/pull/77524) - Tests: Remove duplicate mentions spec (https://github.com/WordPress/gutenberg/pull/77593) - Notes: Refactor to use new '@wordpress/ui' components (https://github.com/WordPress/gutenberg/pull/77589) - wp-build: Widen optional peer dependency ranges (https://github.com/WordPress/gutenberg/pull/77568) - Eslint: Improve design token linting for CSS declaration strings (https://github.com/WordPress/gutenberg/pull/77384) - ESLint: Add `use-import-as` rule (https://github.com/WordPress/gutenberg/pull/77389) - Experiments: register `gutenberg-dashboard-widgets` flag (https://github.com/WordPress/gutenberg/pull/77569) - Media: Move image output format filtering to upload response (https://github.com/WordPress/gutenberg/pull/75793) - Dashboard: register admin page route + sidebar menu (shell) (https://github.com/WordPress/gutenberg/pull/77573) - Experiment: Fix console errors/warnings for taxonomies (https://github.com/WordPress/gutenberg/pull/77601) - Experiment: Improve `taxonomies` DataViews height (https://github.com/WordPress/gutenberg/pull/77603) - Experimental Image Cropper: Ensure focus is on canvas when dragging (https://github.com/WordPress/gutenberg/pull/77591) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (https://github.com/WordPress/gutenberg/pull/77581) - Experimental Image Cropper: Tweak the keyboard interactions with drag handles and canvas (https://github.com/WordPress/gutenberg/pull/77639) - Fix: block-mover horizontal tooltip position (https://github.com/WordPress/gutenberg/pull/77597) - Experiment: Render taxonomy status as a Badge (https://github.com/WordPress/gutenberg/pull/77635) - Guidelines: Drop default_term from wp_guideline_type taxonomy (https://github.com/WordPress/gutenberg/pull/77592) - Form blocks: Update block categories for form, form-input, form-submission-notification, and form-submit-button (https://github.com/WordPress/gutenberg/pull/61916) - Experiment: Split status action to two actions, make them bulk-capable (https://github.com/WordPress/gutenberg/pull/77637) - ButtonGroup: Inline z-index (https://github.com/WordPress/gutenberg/pull/77621) - VisuallyHidden: Recommend @wordpress/ui and migrate usages (https://github.com/WordPress/gutenberg/pull/77575) - Experiment: Improve taxonomy `edit` action (https://github.com/WordPress/gutenberg/pull/77605) - FormToggle: Inline z-index (https://github.com/WordPress/gutenberg/pull/77619) - ResizableBox: Inline handle z-index (https://github.com/WordPress/gutenberg/pull/77620) - Build: Skip sourcemaps for WASM-inlined script module workers (https://github.com/WordPress/gutenberg/pull/75993) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (https://github.com/WordPress/gutenberg/pull/77631) - Experiments: Rebuild the wp-admin Experiments screen on the wp-build routes pattern (https://github.com/WordPress/gutenberg/pull/77443) - Connectors: Treat network-active plugins as active in plugin status check (https://github.com/WordPress/gutenberg/pull/77661) - Update TypeScript to tsgo (7.0) (https://github.com/WordPress/gutenberg/pull/77177) - Revert tsgo update as it breaks trunk (https://github.com/WordPress/gutenberg/pull/77680) - Image editor: fix locked-ratio resize driver-axis on non-square images (https://github.com/WordPress/gutenberg/pull/77664) - Image editor: hold Shift while resizing to lock current aspect ratio (https://github.com/WordPress/gutenberg/pull/77663) - [Admin UI]: Move to CSS modules and implement logical properties (https://github.com/WordPress/gutenberg/pull/77088) - ui: Forward style and className on *.Popup to inner Base UI Popup (https://github.com/WordPress/gutenberg/pull/77693) - ui: Align WithCustomZIndex Storybook examples across overlays (https://github.com/WordPress/gutenberg/pull/77648) - ui: Uniform title and description styles across overlays (https://github.com/WordPress/gutenberg/pull/77692) - UI: Add `Autocomplete` primitive (https://github.com/WordPress/gutenberg/pull/77642) - Admin UI: change default heading level from h2 to h1 (https://github.com/WordPress/gutenberg/pull/77617) - ui/Dialog, ui/AlertDialog, ui/Drawer: support sticky header and footer (https://github.com/WordPress/gutenberg/pull/77559) - e2e: shorten visit-site-editor canvas-loader visible wait (https://github.com/WordPress/gutenberg/pull/77725) - Gutenberg Experiments: Ensure the experiment is active before outputting flags (https://github.com/WordPress/gutenberg/pull/77728) - Image editor: formalize cropper contract (https://github.com/WordPress/gutenberg/pull/77668) - Image Editor experiment: Pass theme aspect ratios to media editor (https://github.com/WordPress/gutenberg/pull/77665) - Media Editor Modal: save via Core's /edit modifiers (https://github.com/WordPress/gutenberg/pull/77641) - Experiment: Taxonomies new package and `add/edit` screens (https://github.com/WordPress/gutenberg/pull/77657) - Media editor: confirm before discarding unsaved changes (https://github.com/WordPress/gutenberg/pull/77730) - `FormTokenField`: Add `help` prop to render additional help text below the field (https://github.com/WordPress/gutenberg/pull/77552) - Migrate `test/integration` into `@wordpress/integration-tests` workspace (https://github.com/WordPress/gutenberg/pull/77556) - Tabs: Add classic theme styles to reset button defaults (https://github.com/WordPress/gutenberg/pull/77607) - Media Editor Modal: surface save failures as scoped snackbar notices (https://github.com/WordPress/gutenberg/pull/77733) - DataForm: Render field `description` as help text in the `array` control (https://github.com/WordPress/gutenberg/pull/77554) - Revisions: Improve screen reader accessibility for diff markers region and slider (https://github.com/WordPress/gutenberg/pull/77660) - fix: disable custom css command for non block themes (https://github.com/WordPress/gutenberg/pull/77685) - Experiments: Declare `@wordpress/base-styles` dependency (https://github.com/WordPress/gutenberg/pull/77684) - Notes: Refactor internals into smaller components (https://github.com/WordPress/gutenberg/pull/77614) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (https://github.com/WordPress/gutenberg/pull/77689) - Admin UI: use UI Text component in header (https://github.com/WordPress/gutenberg/pull/77372) - I18N: Polyfill script module translations for WordPress < 7.0 (https://github.com/WordPress/gutenberg/pull/77214) - Refactor Admin UI / Breadcrumbs to use DS components and design tokens (https://github.com/WordPress/gutenberg/pull/77012) - ui: Unify hairline border across overlay popups (https://github.com/WordPress/gutenberg/pull/77691) - Base Styles: Remove stale z-index entries (https://github.com/WordPress/gutenberg/pull/77714) - CircularOptionPicker: Inline z-index values (https://github.com/WordPress/gutenberg/pull/77715) - ComplementaryArea: Inline z-index values (https://github.com/WordPress/gutenberg/pull/77717) - Disable TinyMCE: Warning instead of direct redirect (https://github.com/WordPress/gutenberg/pull/77747) - Tooltip: Fix flaky unit test (https://github.com/WordPress/gutenberg/pull/77751) - Admin UI: ensure consistent header spacing with and without actions (https://github.com/WordPress/gutenberg/pull/76683) - RTC: fix connection lost error on large update cause by mismatch between update size bounds check and expanded base64 update size (https://github.com/WordPress/gutenberg/pull/77669) - Add `@wordpress/grid` package (https://github.com/WordPress/gutenberg/pull/77562) - Base styles: update changelog to be clearer (https://github.com/WordPress/gutenberg/pull/77767) - Media editor modal: add interactive grid (https://github.com/WordPress/gutenberg/pull/77771) - Media editor: avoid double-mount flicker on open (https://github.com/WordPress/gutenberg/pull/77732) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (https://github.com/WordPress/gutenberg/pull/77638) - Accordion: Remove invalid `isBlock` prop from `ToggleControl` (https://github.com/WordPress/gutenberg/pull/77776) - Guidelines: Extract initial public API methods (https://github.com/WordPress/gutenberg/pull/77643) - Embed: Restore paragraph with URL when undoing paste-to-embed transform (https://github.com/WordPress/gutenberg/pull/77551) - Guidelines: Split singleton REST API into dedicated /content-guidelines route (https://github.com/WordPress/gutenberg/pull/77734) - Allow EmptyState from @wordpress/ui in recommended components (https://github.com/WordPress/gutenberg/pull/77765) - Block Editor: Fix blockGap fallback parsing for nested var() values (https://github.com/WordPress/gutenberg/pull/77750) - Core Data: Remove redundant memoization wrapper from 'getQueriedItems' (https://github.com/WordPress/gutenberg/pull/77483) - Enhancement: Add descriptive name for docker container images (https://github.com/WordPress/gutenberg/pull/67827) - Fix: Add Missing Dimension Controls & Limited Customization in Accordion Block (https://github.com/WordPress/gutenberg/pull/77780) - Connectors: keep focus on action Button during install (https://github.com/WordPress/gutenberg/pull/77544) - Widgets: add widget-types data layer (https://github.com/WordPress/gutenberg/pull/77752) - Grid: fix `width: 'fill'` when tiles span multiple rows (https://github.com/WordPress/gutenberg/pull/77769) - CollapsibleCard: Prevent focus ring clipping by content overflow (https://github.com/WordPress/gutenberg/pull/77667) - Block editor: Remove stale reusable block z-index styles (https://github.com/WordPress/gutenberg/pull/77774) - Grid: add @types/jest devDependency (https://github.com/WordPress/gutenberg/pull/77801) - Env: Minor refactoring of cacheDirectoryPath evaluation (https://github.com/WordPress/gutenberg/pull/77799) - User Taxonomies: show Public field in create/edit form (https://github.com/WordPress/gutenberg/pull/77802) - Experiment: Taxonomies REST controller (https://github.com/WordPress/gutenberg/pull/77697) - Experiment: Taxonomies implement `auto-fill labels` (https://github.com/WordPress/gutenberg/pull/77786) - UI: Recommend Link component for use (https://github.com/WordPress/gutenberg/pull/77505) - ExternalLink: Align appearance with Link from @wordpress/ui (https://github.com/WordPress/gutenberg/pull/77790) - Disable TinyMCE: Repurpose experiment as Classic block removal (https://github.com/WordPress/gutenberg/pull/77838) - Media Upload Modal: Fix pagination and search (https://github.com/WordPress/gutenberg/pull/77872) - Disable Classic block: Always register, hide from inserter conditionally (https://github.com/WordPress/gutenberg/pull/77840) - Disable Classic block: Control inserter support via filter (https://github.com/WordPress/gutenberg/pull/77845) - Classic Block: Unwrap experiment to hide it from inserter (https://github.com/WordPress/gutenberg/pull/77911) - RTC: Attach sync observers after hydrating persisted CRDT doc (https://github.com/WordPress/gutenberg/pull/77966) - RTC: Fix compaction unit test (https://github.com/WordPress/gutenberg/pull/77986) - RTC: Fix divergence when two offline users reconnect (https://github.com/WordPress/gutenberg/pull/77980) - Fix PHP multisite tests (https://github.com/WordPress/gutenberg/pull/77825) - Connectors: Stop e2e capability restriction from leaking across specs (https://github.com/WordPress/gutenberg/pull/77857) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65558. git-svn-id: https://develop.svn.wordpress.org/trunk@62581 602fd350-edb4-49c9-b593-d223f7449a82 --- package.json | 2 +- .../assets/script-loader-packages.php | 71 ++- .../assets/script-modules-packages.php | 38 +- .../blocks/accordion-item/block.json | 1 + src/wp-includes/blocks/blocks-json.php | 9 +- src/wp-includes/blocks/group/block.json | 3 +- src/wp-includes/blocks/latest-posts.php | 2 +- src/wp-includes/blocks/post-template.php | 3 + src/wp-includes/blocks/pullquote/block.json | 5 +- src/wp-includes/build/constants.php | 2 +- src/wp-includes/build/pages.php | 6 + .../pages/font-library/page-wp-admin.php | 2 +- .../build/pages/font-library/page.php | 2 +- .../options-connectors/page-wp-admin.php | 2 +- .../build/pages/options-connectors/page.php | 2 +- src/wp-includes/build/routes.php | 57 ++ .../build/routes/connectors-home/content.js | 316 ++++++----- .../connectors-home/content.min.asset.php | 2 +- .../routes/connectors-home/content.min.js | 2 +- .../build/routes/font-list/content.js | 498 +++++++++++------- .../routes/font-list/content.min.asset.php | 2 +- .../build/routes/font-list/content.min.js | 12 +- src/wp-includes/build/routes/registry.php | 28 + src/wp-includes/images/icon-library/tab.svg | 2 +- .../images/icon-library/tabs-menu-item.svg | 1 - .../images/icon-library/tabs-menu.svg | 1 - 26 files changed, 664 insertions(+), 407 deletions(-) delete mode 100644 src/wp-includes/images/icon-library/tabs-menu-item.svg delete mode 100644 src/wp-includes/images/icon-library/tabs-menu.svg diff --git a/package.json b/package.json index d255f78a56a77..b91302a28e020 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://develop.svn.wordpress.org/trunk" }, "gutenberg": { - "sha": "7295bd91a3c2b64bb11dde0a12313210d9d16a12", + "sha": "585cf86bb6f408b1dc61175f75db016aa4760653", "ghcrRepo": "WordPress/gutenberg/gutenberg-wp-develop-build" }, "engines": { diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php index 574f215ceec04..96d181286022e 100644 --- a/src/wp-includes/assets/script-loader-packages.php +++ b/src/wp-includes/assets/script-loader-packages.php @@ -42,6 +42,8 @@ ), 'block-directory.js' => array( 'dependencies' => array( + 'react', + 'react-dom', 'react-jsx-runtime', 'wp-a11y', 'wp-api-fetch', @@ -59,9 +61,11 @@ 'wp-notices', 'wp-plugins', 'wp-primitives', + 'wp-private-apis', + 'wp-theme', 'wp-url' ), - 'version' => '9170d925439ce315b76e' + 'version' => '110a088de3bda59ac5de' ), 'block-editor.js' => array( 'dependencies' => array( @@ -99,11 +103,12 @@ 'wp-url', 'wp-warning' ), - 'version' => '16b3af93a787b1379042' + 'version' => '9041ae4f01562bcb4d33' ), 'block-library.js' => array( 'dependencies' => array( 'react', + 'react-dom', 'react-jsx-runtime', 'wp-a11y', 'wp-api-fetch', @@ -131,6 +136,7 @@ 'wp-private-apis', 'wp-rich-text', 'wp-server-side-render', + 'wp-theme', 'wp-upload-media', 'wp-url', 'wp-wordcount' @@ -141,7 +147,7 @@ 'import' => 'dynamic' ) ), - 'version' => '9a3a13b2420931623d63' + 'version' => '52817755f853f6ab7153' ), 'block-serialization-default-parser.js' => array( 'dependencies' => array( @@ -174,7 +180,7 @@ 'wp-shortcode', 'wp-warning' ), - 'version' => '6ed3c03f430c8984d1e1' + 'version' => '9aea2a60e4a82baa898c' ), 'commands.js' => array( 'dependencies' => array( @@ -214,7 +220,7 @@ 'wp-rich-text', 'wp-warning' ), - 'version' => '97a7ddd1e1d999da982b' + 'version' => 'c74d7795ae739efd8470' ), 'compose.js' => array( 'dependencies' => array( @@ -245,7 +251,7 @@ 'wp-router', 'wp-url' ), - 'version' => 'b209152e7e51279d7c28' + 'version' => 'c5adbb84012bd7834c04' ), 'core-data.js' => array( 'dependencies' => array( @@ -266,11 +272,14 @@ 'wp-url', 'wp-warning' ), - 'version' => '98b022156a52c57830b3' + 'version' => '84dfcb788b38527ce29d' ), 'customize-widgets.js' => array( 'dependencies' => array( + 'react', + 'react-dom', 'react-jsx-runtime', + 'wp-a11y', 'wp-block-editor', 'wp-block-library', 'wp-blocks', @@ -289,9 +298,10 @@ 'wp-preferences', 'wp-primitives', 'wp-private-apis', + 'wp-theme', 'wp-widgets' ), - 'version' => '524dc7a4326b77064831' + 'version' => '206784568d822411270a' ), 'data.js' => array( 'dependencies' => array( @@ -304,7 +314,7 @@ 'wp-private-apis', 'wp-redux-routine' ), - 'version' => '180953b1a59424bb6718' + 'version' => '148d59ef2548b2513db8' ), 'data-controls.js' => array( 'dependencies' => array( @@ -381,7 +391,7 @@ 'import' => 'static' ) ), - 'version' => '571c6840c1f95e154700' + 'version' => 'c43a4fa8b00c3ba4431f' ), 'edit-site.js' => array( 'dependencies' => array( @@ -430,7 +440,7 @@ 'import' => 'static' ) ), - 'version' => 'a886b2b87319828b24e3' + 'version' => 'aa6e9b6786aea68585db' ), 'edit-widgets.js' => array( 'dependencies' => array( @@ -471,7 +481,7 @@ 'import' => 'static' ) ), - 'version' => 'd45dfe7a91d82507fb71' + 'version' => '073d2e7bb4648840803a' ), 'editor.js' => array( 'dependencies' => array( @@ -521,7 +531,7 @@ 'import' => 'static' ) ), - 'version' => '823ed6e13dfb89c3f89d' + 'version' => '9496d99a5f41ee4b8d8c' ), 'element.js' => array( 'dependencies' => array( @@ -529,7 +539,7 @@ 'react-dom', 'wp-escape-html' ), - 'version' => '204b9776501c644953b6' + 'version' => 'ce395381f7d64d2a6d71' ), 'escape-html.js' => array( 'dependencies' => array( @@ -539,6 +549,8 @@ ), 'format-library.js' => array( 'dependencies' => array( + 'react', + 'react-dom', 'react-jsx-runtime', 'wp-a11y', 'wp-block-editor', @@ -551,6 +563,7 @@ 'wp-primitives', 'wp-private-apis', 'wp-rich-text', + 'wp-theme', 'wp-url' ), 'module_dependencies' => array( @@ -559,7 +572,7 @@ 'import' => 'dynamic' ) ), - 'version' => 'f89be9586f2d9ce4545a' + 'version' => '6f640c16ab0835901167' ), 'hooks.js' => array( 'dependencies' => array( @@ -592,7 +605,7 @@ 'wp-element', 'wp-keycodes' ), - 'version' => '2ed78d3b4c23f38804e0' + 'version' => '0dd268b2132a3f82b1d4' ), 'keycodes.js' => array( 'dependencies' => array( @@ -637,7 +650,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '9750aae5171fb20e5c17' + 'version' => '1ef9847260fd7de4188f' ), 'notices.js' => array( 'dependencies' => array( @@ -645,7 +658,7 @@ 'wp-components', 'wp-data' ), - 'version' => '9182f940c250945fb2d4' + 'version' => '1869781df3f0e4f0c6b8' ), 'nux.js' => array( 'dependencies' => array( @@ -658,7 +671,7 @@ 'wp-i18n', 'wp-primitives' ), - 'version' => '14d2335a0007b36b9112' + 'version' => 'ee8845ac5a9ad98ee3f7' ), 'patterns.js' => array( 'dependencies' => array( @@ -678,7 +691,7 @@ 'wp-private-apis', 'wp-url' ), - 'version' => '71e91fc63676088fcd47' + 'version' => '714c49ed2942c98d088f' ), 'plugins.js' => array( 'dependencies' => array( @@ -690,7 +703,7 @@ 'wp-is-shallow-equal', 'wp-primitives' ), - 'version' => '72e3cf01c2b3535a9432' + 'version' => '9bce3a8f6306f5380b9a' ), 'preferences.js' => array( 'dependencies' => array( @@ -706,7 +719,7 @@ 'wp-primitives', 'wp-private-apis' ), - 'version' => '035813168e404aa30193' + 'version' => '6595a0115a9c144c0f3a' ), 'preferences-persistence.js' => array( 'dependencies' => array( @@ -731,7 +744,7 @@ 'dependencies' => array( ), - 'version' => 'd33c33dda9790dfcae63' + 'version' => '7378f2cb5ba25f7aa9e5' ), 'react-i18n.js' => array( 'dependencies' => array( @@ -761,7 +774,7 @@ 'wp-primitives', 'wp-url' ), - 'version' => '21d86e46535b79d9afda' + 'version' => '372c845659b9a298e4fb' ), 'rich-text.js' => array( 'dependencies' => array( @@ -812,7 +825,7 @@ 'dependencies' => array( ), - 'version' => 'c9d9033f75b117821889' + 'version' => '10a88969c2fbccc89f91' ), 'sync.js' => array( 'dependencies' => array( @@ -820,7 +833,7 @@ 'wp-hooks', 'wp-private-apis' ), - 'version' => '5ff90a11bbb5def86790' + 'version' => '63df27e4e1555a2ed89e' ), 'theme.js' => array( 'dependencies' => array( @@ -828,7 +841,7 @@ 'wp-element', 'wp-private-apis' ), - 'version' => 'abeb8783107aed891810' + 'version' => '798ec32c86815d7e8a14' ), 'token-list.js' => array( 'dependencies' => array( @@ -859,7 +872,7 @@ 'import' => 'dynamic' ) ), - 'version' => 'e03397e1062511119cc5' + 'version' => '688c688a0ccf0f0d020b' ), 'url.js' => array( 'dependencies' => array( @@ -896,7 +909,7 @@ 'wp-notices', 'wp-primitives' ), - 'version' => '02b8dd683bc610f979fa' + 'version' => '3ab93e442c755a6b2b4e' ), 'wordcount.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php index 5c5bb7bf9095a..b93f4f354fd1d 100644 --- a/src/wp-includes/assets/script-modules-packages.php +++ b/src/wp-includes/assets/script-modules-packages.php @@ -166,7 +166,7 @@ 'import' => 'static' ) ), - 'version' => '570068c474110f2ff13f' + 'version' => '1ea95bd3abfe75ec1bbc' ), 'connectors/index.js' => array( 'dependencies' => array( @@ -177,7 +177,7 @@ 'wp-i18n', 'wp-private-apis' ), - 'version' => '274797868955a828dfdc' + 'version' => 'dce5e2b0fc240815717b' ), 'core-abilities/index.js' => array( 'dependencies' => array( @@ -190,7 +190,7 @@ 'import' => 'static' ) ), - 'version' => '7cd8fe3a80dded97579b' + 'version' => '012760fd849397dd0031' ), 'edit-site-init/index.js' => array( 'dependencies' => array( @@ -205,7 +205,7 @@ 'import' => 'static' ) ), - 'version' => '1a0581e64b050d2d1474' + 'version' => '3e9b6e117adbaf70a10f' ), 'interactivity/index.js' => array( 'dependencies' => array( @@ -273,7 +273,7 @@ 'wp-private-apis', 'wp-style-engine' ), - 'version' => 'fe96a6ab10a4550153ab' + 'version' => '4dbbb677aac222671901' ), 'route/index.js' => array( 'dependencies' => array( @@ -284,6 +284,30 @@ ), 'version' => '48a77bfa70722b4254e4' ), + 'user-taxonomies/index.js' => array( + 'dependencies' => array( + 'react', + 'react-dom', + 'react-jsx-runtime', + 'wp-components', + 'wp-compose', + 'wp-core-data', + 'wp-data', + 'wp-element', + 'wp-i18n', + 'wp-notices', + 'wp-primitives', + 'wp-private-apis', + 'wp-theme' + ), + 'module_dependencies' => array( + array( + 'id' => '@wordpress/a11y', + 'import' => 'static' + ) + ), + 'version' => '339ee65736f7a738a4ad' + ), 'vips/loader.js' => array( 'dependencies' => array( @@ -300,7 +324,7 @@ 'dependencies' => array( ), - 'version' => '34c388850fff0c80f78a' + 'version' => 'de1b94d254f242c2192e' ), 'workflow/index.js' => array( 'dependencies' => array( @@ -321,6 +345,6 @@ 'import' => 'static' ) ), - 'version' => '8d5b553b2fcab74a6606' + 'version' => 'c1055ffa9d3634a7dfe7' ) ); \ No newline at end of file diff --git a/src/wp-includes/blocks/accordion-item/block.json b/src/wp-includes/blocks/accordion-item/block.json index 74bfddde0e68b..22987b9558a5f 100644 --- a/src/wp-includes/blocks/accordion-item/block.json +++ b/src/wp-includes/blocks/accordion-item/block.json @@ -16,6 +16,7 @@ "interactivity": true, "spacing": { "margin": [ "top", "bottom" ], + "padding": true, "blockGap": true }, "__experimentalBorder": { diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php index 12fb2a78b077a..e35268ffe6c74 100644 --- a/src/wp-includes/blocks/blocks-json.php +++ b/src/wp-includes/blocks/blocks-json.php @@ -224,6 +224,7 @@ 'top', 'bottom' ), + 'padding' => true, 'blockGap' => true ), '__experimentalBorder' => array( @@ -2905,7 +2906,8 @@ ) ), 'dimensions' => array( - 'minHeight' => true + 'minHeight' => true, + 'minWidth' => true ), '__experimentalBorder' => array( 'color' => true, @@ -6127,10 +6129,7 @@ ) ), 'dimensions' => array( - 'minHeight' => true, - '__experimentalDefaultControls' => array( - 'minHeight' => false - ) + 'minHeight' => true ), 'spacing' => array( 'margin' => true, diff --git a/src/wp-includes/blocks/group/block.json b/src/wp-includes/blocks/group/block.json index 39792cec51295..7fa2ad2ccf4c7 100644 --- a/src/wp-includes/blocks/group/block.json +++ b/src/wp-includes/blocks/group/block.json @@ -55,7 +55,8 @@ } }, "dimensions": { - "minHeight": true + "minHeight": true, + "minWidth": true }, "__experimentalBorder": { "color": true, diff --git a/src/wp-includes/blocks/latest-posts.php b/src/wp-includes/blocks/latest-posts.php index 44231ac6d14a1..c829852f8cfde 100644 --- a/src/wp-includes/blocks/latest-posts.php +++ b/src/wp-includes/blocks/latest-posts.php @@ -163,7 +163,7 @@ function render_block_core_latest_posts( $attributes ) { $trimmed_excerpt = substr( $trimmed_excerpt, 0, -11 ); $trimmed_excerpt .= sprintf( /* translators: 1: A URL to a post, 2: Hidden accessibility text: Post title */ - __( '… <a class="wp-block-latest-posts__read-more" href="%1$s" rel="noopener noreferrer">Read more<span class="screen-reader-text">: %2$s</span></a>' ), + __( '… <a class="wp-block-latest-posts__read-more" href="%1$s" rel="noopener">Read more<span class="screen-reader-text">: %2$s</span></a>' ), esc_url( $post_link ), esc_html( $title ) ); diff --git a/src/wp-includes/blocks/post-template.php b/src/wp-includes/blocks/post-template.php index 72ebbe0e13d13..9ce4ce47343e1 100644 --- a/src/wp-includes/blocks/post-template.php +++ b/src/wp-includes/blocks/post-template.php @@ -94,6 +94,9 @@ function render_block_core_post_template( $attributes, $content, $block ) { if ( isset( $attributes['layout']['type'] ) && 'grid' === $attributes['layout']['type'] && ! empty( $attributes['layout']['columnCount'] ) ) { $classnames .= ' ' . sanitize_title( 'columns-' . $attributes['layout']['columnCount'] ); } + if ( isset( $attributes['layout']['type'] ) && 'grid' === $attributes['layout']['type'] && ! empty( $attributes['layout']['columnCount'] ) && ! empty( $attributes['layout']['minimumColumnWidth'] ) ) { + $classnames .= ' has-native-responsive-grid'; + } $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => trim( $classnames ) ) ); diff --git a/src/wp-includes/blocks/pullquote/block.json b/src/wp-includes/blocks/pullquote/block.json index 271bba74d0252..9469f420d1db7 100644 --- a/src/wp-includes/blocks/pullquote/block.json +++ b/src/wp-includes/blocks/pullquote/block.json @@ -43,10 +43,7 @@ } }, "dimensions": { - "minHeight": true, - "__experimentalDefaultControls": { - "minHeight": false - } + "minHeight": true }, "spacing": { "margin": true, diff --git a/src/wp-includes/build/constants.php b/src/wp-includes/build/constants.php index 16088be1d41f4..dd4ff3d3b0fe3 100644 --- a/src/wp-includes/build/constants.php +++ b/src/wp-includes/build/constants.php @@ -9,6 +9,6 @@ */ return array( - 'version' => '23.0.0', + 'version' => '23.1.0', 'build_url' => includes_url( 'build/' ), ); diff --git a/src/wp-includes/build/pages.php b/src/wp-includes/build/pages.php index b8084ed2032f9..1d8e3b10f73a7 100644 --- a/src/wp-includes/build/pages.php +++ b/src/wp-includes/build/pages.php @@ -12,3 +12,9 @@ require_once __DIR__ . '/pages/options-connectors/page-wp-admin.php'; require_once __DIR__ . '/pages/guidelines/page.php'; require_once __DIR__ . '/pages/guidelines/page-wp-admin.php'; +require_once __DIR__ . '/pages/experiments/page.php'; +require_once __DIR__ . '/pages/experiments/page-wp-admin.php'; +require_once __DIR__ . '/pages/taxonomies/page.php'; +require_once __DIR__ . '/pages/taxonomies/page-wp-admin.php'; +require_once __DIR__ . '/pages/dashboard/page.php'; +require_once __DIR__ . '/pages/dashboard/page-wp-admin.php'; diff --git a/src/wp-includes/build/pages/font-library/page-wp-admin.php b/src/wp-includes/build/pages/font-library/page-wp-admin.php index 4d41be02ae892..4867edd329dc0 100644 --- a/src/wp-includes/build/pages/font-library/page-wp-admin.php +++ b/src/wp-includes/build/pages/font-library/page-wp-admin.php @@ -89,7 +89,7 @@ function wp_font_library_wp_admin_preload_data() { // Define paths to preload - same for all pages // Please also change packages/core-data/src/entities.js when changing this. $preload_paths = array( - '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,image_output_formats,jpeg_interlaced,png_interlaced,gif_interlaced,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', + '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', array( '/wp/v2/settings', 'OPTIONS' ), ); diff --git a/src/wp-includes/build/pages/font-library/page.php b/src/wp-includes/build/pages/font-library/page.php index e2849c954ba37..c7ce3cfa7fb67 100644 --- a/src/wp-includes/build/pages/font-library/page.php +++ b/src/wp-includes/build/pages/font-library/page.php @@ -90,7 +90,7 @@ function wp_font_library_preload_data() { // Define paths to preload - same for all pages // Please also change packages/core-data/src/entities.js when changing this. $preload_paths = array( - '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,image_output_formats,jpeg_interlaced,png_interlaced,gif_interlaced,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', + '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', array( '/wp/v2/settings', 'OPTIONS' ), ); diff --git a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php index 3f3048b8fb98b..434708997ea0c 100644 --- a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php +++ b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php @@ -89,7 +89,7 @@ function wp_options_connectors_wp_admin_preload_data() { // Define paths to preload - same for all pages // Please also change packages/core-data/src/entities.js when changing this. $preload_paths = array( - '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,image_output_formats,jpeg_interlaced,png_interlaced,gif_interlaced,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', + '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', array( '/wp/v2/settings', 'OPTIONS' ), ); diff --git a/src/wp-includes/build/pages/options-connectors/page.php b/src/wp-includes/build/pages/options-connectors/page.php index 6009dbb2570a9..95ee80c2900d0 100644 --- a/src/wp-includes/build/pages/options-connectors/page.php +++ b/src/wp-includes/build/pages/options-connectors/page.php @@ -90,7 +90,7 @@ function wp_options_connectors_preload_data() { // Define paths to preload - same for all pages // Please also change packages/core-data/src/entities.js when changing this. $preload_paths = array( - '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,image_output_formats,jpeg_interlaced,png_interlaced,gif_interlaced,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', + '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', array( '/wp/v2/settings', 'OPTIONS' ), ); diff --git a/src/wp-includes/build/routes.php b/src/wp-includes/build/routes.php index 873414a220566..bac9b0657e868 100644 --- a/src/wp-includes/build/routes.php +++ b/src/wp-includes/build/routes.php @@ -111,6 +111,44 @@ function wp_register_options_connectors_wp_admin_page_routes() { } add_action( 'options-connectors-wp-admin_init', 'wp_register_options_connectors_wp_admin_page_routes' ); +// Page-specific route registration functions for dashboard +/** + * Register routes for dashboard page (full-page mode). + */ +function wp_register_dashboard_page_routes() { + global $wp_dashboard_routes_data; + wp_register_page_routes( $wp_dashboard_routes_data, 'wp_register_dashboard_route' ); +} +add_action( 'dashboard_init', 'wp_register_dashboard_page_routes' ); + +/** + * Register routes for dashboard page (wp-admin mode). + */ +function wp_register_dashboard_wp_admin_page_routes() { + global $wp_dashboard_routes_data; + wp_register_page_routes( $wp_dashboard_routes_data, 'wp_register_dashboard_wp_admin_route' ); +} +add_action( 'dashboard-wp-admin_init', 'wp_register_dashboard_wp_admin_page_routes' ); + +// Page-specific route registration functions for experiments +/** + * Register routes for experiments page (full-page mode). + */ +function wp_register_experiments_page_routes() { + global $wp_experiments_routes_data; + wp_register_page_routes( $wp_experiments_routes_data, 'wp_register_experiments_route' ); +} +add_action( 'experiments_init', 'wp_register_experiments_page_routes' ); + +/** + * Register routes for experiments page (wp-admin mode). + */ +function wp_register_experiments_wp_admin_page_routes() { + global $wp_experiments_routes_data; + wp_register_page_routes( $wp_experiments_routes_data, 'wp_register_experiments_wp_admin_route' ); +} +add_action( 'experiments-wp-admin_init', 'wp_register_experiments_wp_admin_page_routes' ); + // Page-specific route registration functions for font-library /** * Register routes for font-library page (full-page mode). @@ -149,3 +187,22 @@ function wp_register_guidelines_wp_admin_page_routes() { } add_action( 'guidelines-wp-admin_init', 'wp_register_guidelines_wp_admin_page_routes' ); +// Page-specific route registration functions for taxonomies +/** + * Register routes for taxonomies page (full-page mode). + */ +function wp_register_taxonomies_page_routes() { + global $wp_taxonomies_routes_data; + wp_register_page_routes( $wp_taxonomies_routes_data, 'wp_register_taxonomies_route' ); +} +add_action( 'taxonomies_init', 'wp_register_taxonomies_page_routes' ); + +/** + * Register routes for taxonomies page (wp-admin mode). + */ +function wp_register_taxonomies_wp_admin_page_routes() { + global $wp_taxonomies_routes_data; + wp_register_page_routes( $wp_taxonomies_routes_data, 'wp_register_taxonomies_wp_admin_route' ); +} +add_action( 'taxonomies-wp-admin_init', 'wp_register_taxonomies_wp_admin_page_routes' ); + diff --git a/src/wp-includes/build/routes/connectors-home/content.js b/src/wp-includes/build/routes/connectors-home/content.js index d3e7309fb1cb4..2c1dafc85dd82 100644 --- a/src/wp-includes/build/routes/connectors-home/content.js +++ b/src/wp-includes/build/routes/connectors-home/content.js @@ -31,20 +31,6 @@ var require_i18n = __commonJS({ } }); -// package-external:@wordpress/components -var require_components = __commonJS({ - "package-external:@wordpress/components"(exports, module) { - module.exports = window.wp.components; - } -}); - -// vendor-external:react/jsx-runtime -var require_jsx_runtime = __commonJS({ - "vendor-external:react/jsx-runtime"(exports, module) { - module.exports = window.ReactJSXRuntime; - } -}); - // package-external:@wordpress/element var require_element = __commonJS({ "package-external:@wordpress/element"(exports, module) { @@ -59,6 +45,13 @@ var require_react = __commonJS({ } }); +// vendor-external:react/jsx-runtime +var require_jsx_runtime = __commonJS({ + "vendor-external:react/jsx-runtime"(exports, module) { + module.exports = window.ReactJSXRuntime; + } +}); + // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { @@ -66,6 +59,13 @@ var require_private_apis = __commonJS({ } }); +// package-external:@wordpress/components +var require_components = __commonJS({ + "package-external:@wordpress/components"(exports, module) { + module.exports = window.wp.components; + } +}); + // package-external:@wordpress/data var require_data = __commonJS({ "package-external:@wordpress/data"(exports, module) { @@ -110,30 +110,8 @@ function clsx() { } var clsx_default = clsx; -// packages/admin-ui/build-module/navigable-region/index.mjs -var import_element = __toESM(require_element(), 1); -var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); -var NavigableRegion = (0, import_element.forwardRef)( - ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { - return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( - Tag, - { - ref, - className: clsx_default("admin-ui-navigable-region", className), - "aria-label": ariaLabel, - role: "region", - tabIndex: "-1", - ...props, - children - } - ); - } -); -NavigableRegion.displayName = "NavigableRegion"; -var navigable_region_default = NavigableRegion; - // packages/ui/build-module/badge/badge.mjs -var import_element3 = __toESM(require_element(), 1); +var import_element2 = __toESM(require_element(), 1); // node_modules/@base-ui/utils/esm/useRefWithInit.js var React2 = __toESM(require_react(), 1); @@ -161,7 +139,7 @@ function warn(...messages) { } } -// node_modules/@base-ui/react/esm/utils/useRenderElement.js +// node_modules/@base-ui/react/esm/internals/useRenderElement.js var React5 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/useMergedRefs.js @@ -290,7 +268,11 @@ function mergeObjects(a, b) { return void 0; } -// node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js +// node_modules/@base-ui/utils/esm/empty.js +var EMPTY_ARRAY = Object.freeze([]); +var EMPTY_OBJECT = Object.freeze({}); + +// node_modules/@base-ui/react/esm/internals/getStateAttributesProps.js function getStateAttributesProps(state, customMapping) { const props = {}; for (const key in state) { @@ -429,18 +411,19 @@ function mergeEventHandlers(ourHandler, theirHandler) { if (!ourHandler) { return wrapEventHandler(theirHandler); } - return (event) => { + return (...args) => { + const event = args[0]; if (isSyntheticEvent(event)) { const baseUIEvent = event; makeEventPreventable(baseUIEvent); - const result2 = theirHandler(baseUIEvent); + const result2 = theirHandler(...args); if (!baseUIEvent.baseUIHandlerPrevented) { - ourHandler?.(baseUIEvent); + ourHandler?.(...args); } return result2; } - const result = theirHandler(event); - ourHandler?.(event); + const result = theirHandler(...args); + ourHandler?.(...args); return result; }; } @@ -448,11 +431,12 @@ function wrapEventHandler(handler) { if (!handler) { return handler; } - return (event) => { + return (...args) => { + const event = args[0]; if (isSyntheticEvent(event)) { makeEventPreventable(event); } - return handler(event); + return handler(...args); }; } function makeEventPreventable(event) { @@ -474,17 +458,7 @@ function isSyntheticEvent(event) { return event != null && typeof event === "object" && "nativeEvent" in event; } -// node_modules/@base-ui/utils/esm/empty.js -var EMPTY_ARRAY = Object.freeze([]); -var EMPTY_OBJECT = Object.freeze({}); - -// node_modules/@base-ui/react/esm/utils/constants.js -var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; -var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; -var BASE_UI_SWIPE_IGNORE_SELECTOR = `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; -var LEGACY_SWIPE_IGNORE_SELECTOR = `[${LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; - -// node_modules/@base-ui/react/esm/utils/useRenderElement.js +// node_modules/@base-ui/react/esm/internals/useRenderElement.js var import_react = __toESM(require_react(), 1); function useRenderElement(element, componentProps, params = {}) { const renderProp = componentProps.render; @@ -608,7 +582,7 @@ function useRender(params) { } // packages/ui/build-module/text/text.mjs -var import_element2 = __toESM(require_element(), 1); +var import_element = __toESM(require_element(), 1); if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='4130d64bea']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "4130d64bea"); @@ -623,7 +597,7 @@ if (typeof document !== "undefined" && true && !document.head.querySelector("sty document.head.appendChild(style); } var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; -var Text = (0, import_element2.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { +var Text = (0, import_element.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { const element = useRender({ render, defaultTagName: "span", @@ -631,8 +605,8 @@ var Text = (0, import_element2.forwardRef)(function Text2({ variant = "body-md", props: mergeProps(props, { className: clsx_default( style_default.text, - variant.startsWith("heading-") && global_css_defense_default.heading, - variant.startsWith("body-") && global_css_defense_default.p, + global_css_defense_default.heading, + global_css_defense_default.p, style_default[variant], className ) @@ -642,7 +616,7 @@ var Text = (0, import_element2.forwardRef)(function Text2({ variant = "body-md", }); // packages/ui/build-module/badge/badge.mjs -var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='d6a685e1aa']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "d6a685e1aa"); @@ -650,8 +624,8 @@ if (typeof document !== "undefined" && true && !document.head.querySelector("sty document.head.appendChild(style); } var style_default2 = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; -var Badge = (0, import_element3.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) { - return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( +var Badge = (0, import_element2.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( Text, { ref, @@ -667,7 +641,7 @@ var Badge = (0, import_element3.forwardRef)(function Badge2({ intent = "none", c }); // packages/ui/build-module/stack/stack.mjs -var import_element4 = __toESM(require_element(), 1); +var import_element3 = __toESM(require_element(), 1); if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='b51ff41489']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "b51ff41489"); @@ -684,7 +658,7 @@ var gapTokens = { "2xl": "var(--wpds-dimension-gap-2xl, 32px)", "3xl": "var(--wpds-dimension-gap-3xl, 40px)" }; -var Stack = (0, import_element4.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { +var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { const style = { gap: gap && gapTokens[gap], alignItems: align, @@ -700,16 +674,46 @@ var Stack = (0, import_element4.forwardRef)(function Stack2({ direction, gap, al return element; }); +// packages/admin-ui/build-module/navigable-region/index.mjs +var import_element4 = __toESM(require_element(), 1); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element4.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + Tag, + { + ref, + className: clsx_default("admin-ui-navigable-region", className), + "aria-label": ariaLabel, + role: "region", + tabIndex: "-1", + ...props, + children + } + ); + } +); +NavigableRegion.displayName = "NavigableRegion"; +var navigable_region_default = NavigableRegion; + // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs var import_components = __toESM(require_components(), 1); var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); // packages/admin-ui/build-module/page/header.mjs var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='aa9c241ccc']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "aa9c241ccc"); + style.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")); + document.head.appendChild(style); +} +var style_default4 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Header({ - headingLevel = 2, + headingLevel = 1, breadcrumbs, badges, + visual, title, subTitle, actions, @@ -720,35 +724,67 @@ function Header({ Stack, { direction: "column", - className: "admin-ui-page__header", + className: style_default4.header, render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("header", {}), children: [ - /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( - SidebarToggleSlot, - { - bubblesVirtually: true, - className: "admin-ui-page__sidebar-toggle-slot" - } - ), - title && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), - breadcrumbs, - badges - ] }), - /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( - Stack, - { - direction: "row", - gap: "sm", - style: { width: "auto", flexShrink: 0 }, - className: "admin-ui-page__header-actions", - align: "center", - children: actions - } - ) - ] }), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( + Stack, + { + className: style_default4["header-content"], + direction: "row", + gap: "sm", + justify: "space-between", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: style_default4["sidebar-toggle-slot"] + } + ), + visual && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + "div", + { + className: style_default4["header-visual"], + "aria-hidden": "true", + children: visual + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + Text, + { + className: style_default4["header-title"], + render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HeadingTag, {}), + variant: "heading-lg", + children: title + } + ), + breadcrumbs, + badges + ] }), + actions && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + Stack, + { + align: "center", + className: style_default4["header-actions"], + direction: "row", + gap: "sm", + children: actions + } + ) + ] + } + ), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( + Text, + { + render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", {}), + variant: "body-md", + className: style_default4["header-subtitle"], + children: subTitle + } + ) ] } ); @@ -756,10 +792,18 @@ function Header({ // packages/admin-ui/build-module/page/index.mjs var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='aa9c241ccc']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "aa9c241ccc"); + style.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")); + document.head.appendChild(style); +} +var style_default5 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Page({ headingLevel, breadcrumbs, badges, + visual, title, subTitle, children, @@ -769,22 +813,32 @@ function Page({ hasPadding = false, showSidebarToggle = true }) { - const classes = clsx_default("admin-ui-page", className); + const classes = clsx_default(style_default5.page, className); const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ - (title || breadcrumbs || badges || actions) && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( + (title || breadcrumbs || badges || actions || visual) && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( Header, { headingLevel, breadcrumbs, badges, + visual, title, subTitle, actions, showSidebarToggle } ), - hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( + "div", + { + className: clsx_default( + style_default5.content, + style_default5["has-padding"] + ), + children + } + ) : children ] }); } Page.SidebarToggleFill = SidebarToggleFill; @@ -901,8 +955,9 @@ function useConnectorPlugin({ }; } if (plugin) { + const isPluginActive = plugin.status === "active" || plugin.status === "network-active"; return { - derivedPluginStatus: plugin.status === "active" ? "active" : "inactive", + derivedPluginStatus: isPluginActive ? "active" : "inactive", canManagePlugins: true, currentApiKey: apiKey, canInstallPlugins: canCreate @@ -1391,19 +1446,6 @@ function ApiKeyConnector({ const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; const showActionButton = !showUnavailableBadge; const actionButtonRef = (0, import_element6.useRef)(null); - const pendingFocusRef = (0, import_element6.useRef)(false); - (0, import_element6.useEffect)(() => { - if (pendingFocusRef.current && !isBusy) { - pendingFocusRef.current = false; - actionButtonRef.current?.focus(); - } - }, [isBusy, isExpanded, isConnected]); - const handleActionClick = () => { - if (pluginStatus === "not-installed" || pluginStatus === "inactive") { - pendingFocusRef.current = true; - } - handleButtonClick(); - }; return /* @__PURE__ */ React.createElement( ConnectorItem, { @@ -1417,9 +1459,10 @@ function ApiKeyConnector({ ref: actionButtonRef, variant: isExpanded || isConnected ? "tertiary" : "secondary", size: "compact", - onClick: handleActionClick, + onClick: handleButtonClick, disabled: pluginStatus === "checking" || isBusy, - isBusy + isBusy, + accessibleWhenDisabled: true }, getButtonLabel() )) @@ -1434,17 +1477,13 @@ function ApiKeyConnector({ readOnly: isConnected || isExternallyConfigured, keySource, onRemove: isExternallyConfigured ? void 0 : async () => { - pendingFocusRef.current = true; - try { - await removeApiKey(); - } catch { - pendingFocusRef.current = false; - } + await removeApiKey(); + actionButtonRef.current?.focus(); }, onSave: async (apiKey) => { await saveApiKey(apiKey); - pendingFocusRef.current = true; setIsExpanded(false); + actionButtonRef.current?.focus(); } } ) @@ -1744,7 +1783,6 @@ function ConnectorsPage() { page_default, { title: (0, import_i18n4.__)("Connectors"), - headingLevel: 1, subTitle: (0, import_i18n4.__)( "All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere." ) @@ -1765,24 +1803,26 @@ function ConnectorsPage() { "Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place." ))), /* @__PURE__ */ React.createElement(import_components4.Button, { variant: "secondary", href: "plugin-install.php" }, (0, import_i18n4.__)("Learn more")) - ) : /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3 }, /* @__PURE__ */ React.createElement(AiPluginCallout, null), connectors.map((connector) => { - if (connector.render) { - return /* @__PURE__ */ React.createElement( - connector.render, - { - key: connector.slug, - slug: connector.slug, - name: connector.name, - description: connector.description, - type: connector.type, - logo: connector.logo, - authentication: connector.authentication, - plugin: connector.plugin - } - ); + ) : /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3 }, /* @__PURE__ */ React.createElement(AiPluginCallout, null), /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3, role: "list" }, connectors.map( + (connector) => { + if (connector.render) { + return /* @__PURE__ */ React.createElement( + connector.render, + { + key: connector.slug, + slug: connector.slug, + name: connector.name, + description: connector.description, + type: connector.type, + logo: connector.logo, + authentication: connector.authentication, + plugin: connector.plugin + } + ); + } + return null; } - return null; - })), + ))), canInstallPlugins && /* @__PURE__ */ React.createElement("p", null, (0, import_element8.createInterpolateElement)( (0, import_i18n4.__)( "If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available." diff --git a/src/wp-includes/build/routes/connectors-home/content.min.asset.php b/src/wp-includes/build/routes/connectors-home/content.min.asset.php index 805bdda10c1a5..13d2f57add4b7 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.asset.php +++ b/src/wp-includes/build/routes/connectors-home/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '0ec4c94e5a3b9c814dec'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '475bdb5abdcf92eb1b13'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/connectors-home/content.min.js b/src/wp-includes/build/routes/connectors-home/content.min.js index d04582cc47fb7..80437d9305554 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.js +++ b/src/wp-includes/build/routes/connectors-home/content.min.js @@ -1 +1 @@ -var Wt=Object.create;var He=Object.defineProperty;var Kt=Object.getOwnPropertyDescriptor;var Ut=Object.getOwnPropertyNames;var Qt=Object.getPrototypeOf,Jt=Object.prototype.hasOwnProperty;var x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ft=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ut(t))!Jt.call(e,o)&&o!==n&&He(e,o,{get:()=>t[o],enumerable:!(r=Kt(t,o))||r.enumerable});return e};var s=(e,t,n)=>(n=e!=null?Wt(Qt(e)):{},Ft(t||!e||!e.__esModule?He(n,"default",{value:e,enumerable:!0}):n,e));var Q=x((Zn,je)=>{je.exports=window.wp.i18n});var J=x((In,qe)=>{qe.exports=window.wp.components});var F=x((kn,Ve)=>{Ve.exports=window.ReactJSXRuntime});var D=x((Kn,Ee)=>{Ee.exports=window.wp.element});var I=x((Jn,Ze)=>{Ze.exports=window.React});var mt=x((Eo,ht)=>{ht.exports=window.wp.privateApis});var te=x((er,Lt)=>{Lt.exports=window.wp.data});var le=x((tr,zt)=>{zt.exports=window.wp.coreData});var ze=x((nr,Gt)=>{Gt.exports=window.wp.notices});var Mt=x((or,Ot)=>{Ot.exports=window.wp.url});function Se(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=Se(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function _t(){for(var e,t,n=0,r="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=Se(e))&&(r&&(r+=" "),r+=t);return r}var j=_t;var Ye=s(D(),1),Xe=s(F(),1),Ce=(0,Ye.forwardRef)(({children:e,className:t,ariaLabel:n,as:r="div",...o},a)=>(0,Xe.jsx)(r,{ref:a,className:j("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...o,children:e}));Ce.displayName="NavigableRegion";var Ae=Ce;var ut=s(D(),1);var ke=s(I(),1),Ie={};function ge(e,t){let n=ke.useRef(Ie);return n.current===Ie&&(n.current=e(t)),n}function $t(e,t){return function(r,...o){let a=new URL(e);return a.searchParams.set("code",r.toString()),o.forEach(i=>a.searchParams.append("args[]",i)),`${t} error #${r}; visit ${a} for the full message.`}}var en=$t("https://base-ui.com/production-error","Base UI"),We=en;var C=s(I(),1);function he(e,t,n,r){let o=ge(Ue).current;return tn(o,e,t,n,r)&&Qe(o,[e,t,n,r]),o.callback}function Ke(e){let t=ge(Ue).current;return nn(t,e)&&Qe(t,e),t.callback}function Ue(){return{callback:null,cleanup:null,refs:[]}}function tn(e,t,n,r,o){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==o}function nn(e,t){return e.refs.length!==t.length||e.refs.some((n,r)=>n!==t[r])}function Qe(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let r=Array(t.length).fill(null);for(let o=0;o<t.length;o+=1){let a=t[o];if(a!=null)switch(typeof a){case"function":{let i=a(n);typeof i=="function"&&(r[o]=i);break}case"object":{a.current=n;break}default:}}e.cleanup=()=>{for(let o=0;o<t.length;o+=1){let a=t[o];if(a!=null)switch(typeof a){case"function":{let i=r[o];typeof i=="function"?i():a(null);break}case"object":{a.current=null;break}default:}}}}}}var _e=s(I(),1);var Je=s(I(),1),on=parseInt(Je.version,10);function Fe(e){return on>=e}function me(e){if(!_e.isValidElement(e))return null;let t=e,n=t.props;return(Fe(19)?n?.ref:t.ref)??null}function _(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function $e(e,t){let n={};for(let r in e){let o=e[r];if(t?.hasOwnProperty(r)){let a=t[r](o);a!=null&&Object.assign(n,a);continue}o===!0?n[`data-${r.toLowerCase()}`]="":o&&(n[`data-${r.toLowerCase()}`]=o.toString())}return n}function et(e,t){return typeof e=="function"?e(t):e}function tt(e,t){return typeof e=="function"?e(t):e}var ve={};function Y(e,t,n,r,o){if(!n&&!r&&!o&&!e)return ce(t);let a=ce(e);return t&&(a=$(a,t)),n&&(a=$(a,n)),r&&(a=$(a,r)),o&&(a=$(a,o)),a}function nt(e){if(e.length===0)return ve;if(e.length===1)return ce(e[0]);let t=ce(e[0]);for(let n=1;n<e.length;n+=1)t=$(t,e[n]);return t}function ce(e){return be(e)?{...rt(e,ve)}:rn(e)}function $(e,t){return be(t)?rt(t,e):an(e,t)}function rn(e){let t={...e};for(let n in t){let r=t[n];ot(n,r)&&(t[n]=at(r))}return t}function an(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case"style":{e[n]=_(e.style,r);break}case"className":{e[n]=ye(e.className,r);break}default:ot(n,r)?e[n]=sn(e[n],r):e[n]=r}}return e}function ot(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),o=e.charCodeAt(2);return n===111&&r===110&&o>=65&&o<=90&&(typeof t=="function"||typeof t>"u")}function be(e){return typeof e=="function"}function rt(e,t){return be(e)?e(t):e??ve}function sn(e,t){return t?e?n=>{if(st(n)){let o=n;it(o);let a=t(o);return o.baseUIHandlerPrevented||e?.(o),a}let r=t(n);return e?.(n),r}:at(t):e}function at(e){return e&&(t=>(st(t)&&it(t),e(t)))}function it(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function ye(e,t){return t?e?t+" "+e:t:e}function st(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var cn=Object.freeze([]),X=Object.freeze({});var dn="data-base-ui-swipe-ignore",ln="data-swipe-ignore",fo=`[${dn}]`,uo=`[${ln}]`;var we=s(I(),1);function ct(e,t,n={}){let r=t.render,o=pn(t,n);if(n.enabled===!1)return null;let a=n.state??X;return gn(e,r,o,a)}function pn(e,t={}){let{className:n,style:r,render:o}=e,{state:a=X,ref:i,props:d,stateAttributesMapping:f,enabled:l=!0}=t,u=l?et(n,a):void 0,g=l?tt(r,a):void 0,w=l?$e(a,f):X,N=l&&d?fn(d):void 0,p=l?_(w,N)??{}:X;return typeof document<"u"&&(l?Array.isArray(i)?p.ref=Ke([p.ref,me(o),...i]):p.ref=he(p.ref,me(o),i):he(null,null)),l?(u!==void 0&&(p.className=ye(p.className,u)),g!==void 0&&(p.style=_(p.style,g)),p):X}function fn(e){return Array.isArray(e)?nt(e):Y(void 0,e)}var un=Symbol.for("react.lazy");function gn(e,t,n,r){if(t){if(typeof t=="function")return t(n,r);let o=Y(n,t.props);o.ref=n.ref;let a=t;return a?.$$typeof===un&&(a=C.Children.toArray(t)[0]),C.cloneElement(a,o)}if(e&&typeof e=="string")return hn(e,n);throw new Error(We(8))}function hn(e,t){return e==="button"?(0,we.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,we.createElement)("img",{alt:"",...t,key:t.key}):C.createElement(e,t)}function de(e){return ct(e.defaultTagName??"div",e,e)}var pt=s(D(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4130d64bea']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","4130d64bea"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')),document.head.appendChild(e)}var dt={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","1fb29d3a3c"),e.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")),document.head.appendChild(e)}var lt={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Pe=(0,pt.forwardRef)(function({variant:t="body-md",render:n,className:r,...o},a){return de({render:n,defaultTagName:"span",ref:a,props:Y(o,{className:j(dt.text,t.startsWith("heading-")&<.heading,t.startsWith("body-")&<.p,dt[t],r)})})});var gt=s(F(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='d6a685e1aa']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","d6a685e1aa"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}")),document.head.appendChild(e)}var ft={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},xe=(0,ut.forwardRef)(function({intent:t="none",className:n,...r},o){return(0,gt.jsx)(Pe,{ref:o,className:j(ft.badge,ft[`is-${t}-intent`],n),...r,variant:"body-sm"})});var vt=s(D(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","b51ff41489"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var mn={stack:"_19ce0419607e1896__stack"},vn={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},k=(0,vt.forwardRef)(function({direction:t,gap:n,align:r,justify:o,wrap:a,render:i,...d},f){let l={gap:n&&vn[n],alignItems:r,justifyContent:o,flexDirection:t,flexWrap:a};return de({render:i,ref:f,props:Y(d,{style:l,className:mn.stack})})});var bt=s(J(),1),{Fill:yt,Slot:wt}=(0,bt.createSlotFill)("SidebarToggle");var L=s(F(),1);function Pt({headingLevel:e=2,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:a,showSidebarToggle:i=!0}){let d=`h${e}`;return(0,L.jsxs)(k,{direction:"column",className:"admin-ui-page__header",render:(0,L.jsx)("header",{}),children:[(0,L.jsxs)(k,{direction:"row",justify:"space-between",gap:"sm",children:[(0,L.jsxs)(k,{direction:"row",gap:"sm",align:"center",justify:"start",children:[i&&(0,L.jsx)(wt,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,L.jsx)(d,{className:"admin-ui-page__header-title",children:r}),t,n]}),(0,L.jsx)(k,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),o&&(0,L.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var ee=s(F(),1);function xt({headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,children:a,className:i,actions:d,ariaLabel:f,hasPadding:l=!1,showSidebarToggle:u=!0}){let g=j("admin-ui-page",i);return(0,ee.jsxs)(Ae,{className:g,ariaLabel:f??(typeof r=="string"?r:""),children:[(r||t||n||d)&&(0,ee.jsx)(Pt,{headingLevel:e,breadcrumbs:t,badges:n,title:r,subTitle:o,actions:d,showSidebarToggle:u}),l?(0,ee.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}xt.SidebarToggleFill=yt;var Le=xt;var G=s(J()),Zt=s(te()),It=s(D()),A=s(Q()),kt=s(le());import{privateApis as Bn}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='31ffc51439']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","31ffc51439"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var ae=s(J()),De=s(le()),ie=s(te()),z=s(D()),m=s(Q()),Yt=s(ze()),Xt=s(Mt());var pe=s(J()),re=s(D()),Vt=s(te()),Oe=s(Q());import{__experimentalRegisterConnector as bn,__experimentalConnectorItem as yn,__experimentalDefaultConnectorSettings as wn,privateApis as Pn}from"@wordpress/connectors";var Rt=s(mt()),{lock:rr,unlock:W}=(0,Rt.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Ge=s(le()),oe=s(te()),ne=s(D()),c=s(Q()),Dt=s(ze());function Nt({file:e,settingName:t,connectorName:n,isInstalled:r,isActivated:o,keySource:a="none",initialIsConnected:i=!1}){let[d,f]=(0,ne.useState)(!1),[l,u]=(0,ne.useState)(!1),[g,w]=(0,ne.useState)(i),[N,p]=(0,ne.useState)(null),b=e?.replace(/\.php$/,""),O=b?.includes("/")?b.split("/")[0]:b,{derivedPluginStatus:M,canManagePlugins:K,currentApiKey:y,canInstallPlugins:P}=(0,oe.useSelect)(V=>{let S=V(Ge.store),U=S.getEntityRecord("root","site")?.[t]??"",E=!!S.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:S.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:U,canInstallPlugins:E};let Be=S.getEntityRecord("root","plugin",b);if(!S.hasFinishedResolution("getEntityRecord",["root","plugin",b]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:U,canInstallPlugins:E};if(Be)return{derivedPluginStatus:Be.status==="active"?"active":"inactive",canManagePlugins:!0,currentApiKey:U,canInstallPlugins:E};let ue="not-installed";return o?ue="active":r&&(ue="inactive"),{derivedPluginStatus:ue,canManagePlugins:!1,currentApiKey:U,canInstallPlugins:E}},[b,t,r,o]),h=N??M,R=K,Z=h==="active"&&g||N==="active"&&!!y,{saveEntityRecord:v,invalidateResolution:T}=(0,oe.useDispatch)(Ge.store),{createSuccessNotice:q,createErrorNotice:B}=(0,oe.useDispatch)(Dt.store),H=async()=>{if(O){u(!0);try{await v("root","plugin",{slug:O,status:"active"},{throwOnError:!0}),p("active"),T("getEntityRecord",["root","site"]),f(!0),q((0,c.sprintf)((0,c.__)("Plugin for %s installed and activated successfully."),n),{id:"connector-plugin-install-success",type:"snackbar"})}catch{B((0,c.sprintf)((0,c.__)("Failed to install plugin for %s."),n),{id:"connector-plugin-install-error",type:"snackbar"})}finally{u(!1)}}},fe=async()=>{if(e){u(!0);try{await v("root","plugin",{plugin:b,status:"active"},{throwOnError:!0}),p("active"),T("getEntityRecord",["root","site"]),f(!0),q((0,c.sprintf)((0,c.__)("Plugin for %s activated successfully."),n),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{B((0,c.sprintf)((0,c.__)("Failed to activate plugin for %s."),n),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{u(!1)}}};return{pluginStatus:h,canInstallPlugins:P,canActivatePlugins:R,isExpanded:d,setIsExpanded:f,isBusy:l,isConnected:Z,currentApiKey:y,keySource:a,handleButtonClick:()=>{if(h==="not-installed"){if(P===!1)return;H()}else if(h==="inactive"){if(R===!1)return;fe()}else f(!d)},getButtonLabel:()=>{if(l)return h==="not-installed"?(0,c.__)("Installing\u2026"):(0,c.__)("Activating\u2026");if(d)return(0,c.__)("Cancel");if(Z)return(0,c.__)("Edit");switch(h){case"checking":return(0,c.__)("Checking\u2026");case"not-installed":return(0,c.__)("Install");case"inactive":return(0,c.__)("Activate");case"active":return(0,c.__)("Set up")}},saveApiKey:async V=>{let S=y;try{let E=(await v("root","site",{[t]:V},{throwOnError:!0}))?.[t];if(V&&(E===S||!E))throw new Error("It was not possible to connect to the provider using this key.");w(!0),q((0,c.sprintf)((0,c.__)("%s connected successfully."),n),{id:"connector-connect-success",type:"snackbar"})}catch(se){throw console.error("Failed to save API key:",se),se}},removeApiKey:async()=>{try{await v("root","site",{[t]:""},{throwOnError:!0}),w(!1),q((0,c.sprintf)((0,c.__)("%s disconnected."),n),{id:"connector-disconnect-success",type:"snackbar"})}catch(V){throw console.error("Failed to remove API key:",V),B((0,c.sprintf)((0,c.__)("Failed to disconnect %s."),n),{id:"connector-disconnect-error",type:"snackbar"}),V}}}}var Tt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Bt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Ht=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),jt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),qt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:xn}=W(Pn);function Me(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var Ln={google:qt,openai:Tt,anthropic:Bt,akismet:jt};function zn(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=Ln[e];return React.createElement(n||Ht,null)}var Gn=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,Oe.__)("Connected")),On=()=>React.createElement(xe,null,(0,Oe.__)("Not available"));function Mn({name:e,description:t,logo:n,authentication:r,plugin:o}){let a=r?.method==="api_key"?r:void 0,i=a?.settingName??"",d=a?.credentialsUrl??void 0,f=o?.file?.replace(/\.php$/,""),l=f?.includes("/")?f.split("/")[0]:f,u;try{d&&(u=new URL(d).hostname)}catch{}let{pluginStatus:g,canInstallPlugins:w,canActivatePlugins:N,isExpanded:p,setIsExpanded:b,isBusy:O,isConnected:M,currentApiKey:K,keySource:y,handleButtonClick:P,getButtonLabel:h,saveApiKey:R,removeApiKey:Z}=Nt({file:o?.file,settingName:i,connectorName:e,isInstalled:o?.isInstalled,isActivated:o?.isActivated,keySource:a?.keySource,initialIsConnected:a?.isConnected}),v=y==="env"||y==="constant",T=g==="not-installed"&&w===!1||g==="inactive"&&N===!1,q=!T,B=(0,re.useRef)(null),H=(0,re.useRef)(!1);(0,re.useEffect)(()=>{H.current&&!O&&(H.current=!1,B.current?.focus())},[O,p,M]);let fe=()=>{(g==="not-installed"||g==="inactive")&&(H.current=!0),P()};return React.createElement(yn,{className:l?`connector-item--${l}`:void 0,logo:n,name:e,description:t,actionArea:React.createElement(pe.__experimentalHStack,{spacing:3,expanded:!1},M&&React.createElement(Gn,null),T&&React.createElement(On,null),q&&React.createElement(pe.Button,{ref:B,variant:p||M?"tertiary":"secondary",size:"compact",onClick:fe,disabled:g==="checking"||O,isBusy:O},h()))},p&&g==="active"&&React.createElement(wn,{key:M?"connected":"setup",initialValue:v?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":K,helpUrl:d,helpLabel:u,readOnly:M||v,keySource:y,onRemove:v?void 0:async()=>{H.current=!0;try{await Z()}catch{H.current=!1}},onSave:async Te=>{await R(Te),H.current=!0,b(!1)}}))}function St(){let e=Me(),t=n=>n.replace(/[^a-z0-9-_]/gi,"-");for(let[n,r]of Object.entries(e)){if(n==="akismet"&&!r.plugin?.isInstalled)continue;let{authentication:o}=r,a=t(n),i={name:r.name,description:r.description,type:r.type,logo:zn(n,r.logoUrl),authentication:o,plugin:r.plugin},d=W((0,Vt.select)(xn)).getConnector(a);o.method==="api_key"&&!d?.render&&(i.render=Mn),bn(a,i)}}function Et(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var Rn="ai",Dn="ai-wp-admin",Re="ai/ai",Nn="https://wordpress.org/plugins/ai/",Ne=Object.values(Me()),Tn=Ne.some(e=>e.type==="ai_provider"),Ct=[];for(let e of Ne)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Ct.push(e.authentication.settingName);function At(){let[e,t]=(0,z.useState)(!1),[n,r]=(0,z.useState)(!1),o=(0,z.useRef)(null);(0,z.useEffect)(()=>{n&&o.current?.focus()},[n]);let a=(0,z.useRef)(Ne.some(P=>P.type==="ai_provider"&&P.authentication.method==="api_key"&&P.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:d,canManagePlugins:f,hasConnectedProvider:l}=(0,ie.useSelect)(P=>{let h=P(De.store),R=!!h.canUser("create",{kind:"root",name:"plugin"}),Z=h.getEntityRecord("root","site"),v=a||Ct.some(B=>!!Z?.[B]),T=h.getEntityRecord("root","plugin",Re);return h.hasFinishedResolution("getEntityRecord",["root","plugin",Re])?T?{pluginStatus:T.status==="active"?"active":"inactive",canInstallPlugins:R,canManagePlugins:!0,hasConnectedProvider:v}:{pluginStatus:"not-installed",canInstallPlugins:R,canManagePlugins:R,hasConnectedProvider:v}:{pluginStatus:"checking",canInstallPlugins:R,canManagePlugins:void 0,hasConnectedProvider:v}},[]),{saveEntityRecord:u}=(0,ie.useDispatch)(De.store),{createSuccessNotice:g,createErrorNotice:w}=(0,ie.useDispatch)(Yt.store),N=async()=>{t(!0);try{await u("root","plugin",{slug:Rn,status:"active"},{throwOnError:!0}),r(!0),g((0,m.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{w((0,m.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},p=async()=>{t(!0);try{await u("root","plugin",{plugin:Re,status:"active"},{throwOnError:!0}),r(!0),g((0,m.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{w((0,m.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!Tn||i==="checking"||i==="active"&&a&&!n||i==="not-installed"&&d===!1||i==="inactive"&&f===!1)return null;let b=i==="active"&&!l,O=i==="active"&&l&&(!a||n),M=i==="not-installed"||i==="inactive",K=()=>O?(0,m.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):b?(0,m.__)("The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,m.__)("The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),y=()=>i==="not-installed"?{label:e?(0,m.__)("Installing\u2026"):(0,m.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:N}:{label:e?(0,m.__)("Activating\u2026"):(0,m.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:p};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,z.createInterpolateElement)(K(),{strong:React.createElement("strong",null),a:React.createElement(ae.ExternalLink,{href:Nn})})),M?React.createElement(ae.Button,{variant:"primary",size:"compact",isBusy:e,disabled:y().disabled,accessibleWhenDisabled:!0,onClick:y().onClick},y().label):React.createElement(ae.Button,{ref:o,variant:"secondary",size:"compact",href:(0,Xt.addQueryArgs)("options-general.php",{page:Dn})},(0,m.__)("Control features in the AI plugin"))),React.createElement(Et,null))}var{store:Hn}=W(Bn);St();function jn(){let{connectors:e,canInstallPlugins:t}=(0,Zt.useSelect)(o=>({connectors:W(o(Hn)).getConnectors(),canInstallPlugins:o(kt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),r=e.filter(o=>o.render).length===0;return React.createElement(Le,{title:(0,A.__)("Connectors"),headingLevel:1,subTitle:(0,A.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${r?" connectors-page--empty":""}`},r?React.createElement(G.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(G.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(G.__experimentalHeading,{level:2,size:15,weight:600},(0,A.__)("No connectors yet")),React.createElement(G.__experimentalText,{size:12},(0,A.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(G.Button,{variant:"secondary",href:"plugin-install.php"},(0,A.__)("Learn more"))):React.createElement(G.__experimentalVStack,{spacing:3},React.createElement(At,null),e.map(o=>o.render?React.createElement(o.render,{key:o.slug,slug:o.slug,name:o.name,description:o.description,type:o.type,logo:o.logo,authentication:o.authentication,plugin:o.plugin}):null)),t&&React.createElement("p",null,(0,It.createInterpolateElement)((0,A.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function qn(){return React.createElement(jn,null)}var Vn=qn;export{Vn as stage}; +var Ut=Object.create;var je=Object.defineProperty;var Qt=Object.getOwnPropertyDescriptor;var Jt=Object.getOwnPropertyNames;var Ft=Object.getPrototypeOf,_t=Object.prototype.hasOwnProperty;var z=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $t=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Jt(t))!_t.call(e,a)&&a!==n&&je(e,a,{get:()=>t[a],enumerable:!(r=Qt(t,a))||r.enumerable});return e};var s=(e,t,n)=>(n=e!=null?Ut(Ft(e)):{},$t(t||!e||!e.__esModule?je(n,"default",{value:e,enumerable:!0}):n,e));var J=z((kn,He)=>{He.exports=window.wp.i18n});var N=z((An,Te)=>{Te.exports=window.wp.element});var Z=z((Wn,Ve)=>{Ve.exports=window.React});var F=z((In,Se)=>{Se.exports=window.ReactJSXRuntime});var lt=z((Na,ct)=>{ct.exports=window.wp.privateApis});var ee=z((Xa,mt)=>{mt.exports=window.wp.components});var ne=z((Qa,Pt)=>{Pt.exports=window.wp.data});var le=z((Ja,Lt)=>{Lt.exports=window.wp.coreData});var Ge=z((Fa,zt)=>{zt.exports=window.wp.notices});var Mt=z((_a,Gt)=>{Gt.exports=window.wp.url});function qe(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=qe(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function en(){for(var e,t,n=0,r="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=qe(e))&&(r&&(r+=" "),r+=t);return r}var R=en;var st=s(N(),1);var Ye=s(Z(),1),Xe={};function he(e,t){let n=Ye.useRef(Xe);return n.current===Xe&&(n.current=e(t)),n}function tn(e,t){return function(r,...a){let o=new URL(e);return o.searchParams.set("code",r.toString()),a.forEach(i=>o.searchParams.append("args[]",i)),`${t} error #${r}; visit ${o} for the full message.`}}var nn=tn("https://base-ui.com/production-error","Base UI"),Ee=nn;var S=s(Z(),1);function me(e,t,n,r){let a=he(ke).current;return an(a,e,t,n,r)&&Ze(a,[e,t,n,r]),a.callback}function Ce(e){let t=he(ke).current;return rn(t,e)&&Ze(t,e),t.callback}function ke(){return{callback:null,cleanup:null,refs:[]}}function an(e,t,n,r,a){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==a}function rn(e,t){return e.refs.length!==t.length||e.refs.some((n,r)=>n!==t[r])}function Ze(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let r=Array(t.length).fill(null);for(let a=0;a<t.length;a+=1){let o=t[a];if(o!=null)switch(typeof o){case"function":{let i=o(n);typeof i=="function"&&(r[a]=i);break}case"object":{o.current=n;break}default:}}e.cleanup=()=>{for(let a=0;a<t.length;a+=1){let o=t[a];if(o!=null)switch(typeof o){case"function":{let i=r[a];typeof i=="function"?i():o(null);break}case"object":{o.current=null;break}default:}}}}}}var Ke=s(Z(),1);var Ae=s(Z(),1),on=parseInt(Ae.version,10);function We(e){return on>=e}function ve(e){if(!Ke.isValidElement(e))return null;let t=e,n=t.props;return(We(19)?n?.ref:t.ref)??null}function _(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}var ta=Object.freeze([]),A=Object.freeze({});function Ie(e,t){let n={};for(let r in e){let a=e[r];if(t?.hasOwnProperty(r)){let o=t[r](a);o!=null&&Object.assign(n,o);continue}a===!0?n[`data-${r.toLowerCase()}`]="":a&&(n[`data-${r.toLowerCase()}`]=a.toString())}return n}function Ue(e,t){return typeof e=="function"?e(t):e}function Qe(e,t){return typeof e=="function"?e(t):e}var be={};function Y(e,t,n,r,a){if(!n&&!r&&!a&&!e)return de(t);let o=de(e);return t&&(o=$(o,t)),n&&(o=$(o,n)),r&&(o=$(o,r)),a&&(o=$(o,a)),o}function Je(e){if(e.length===0)return be;if(e.length===1)return de(e[0]);let t=de(e[0]);for(let n=1;n<e.length;n+=1)t=$(t,e[n]);return t}function de(e){return we(e)?{..._e(e,be)}:sn(e)}function $(e,t){return we(t)?_e(t,e):dn(e,t)}function sn(e){let t={...e};for(let n in t){let r=t[n];Fe(n,r)&&(t[n]=$e(r))}return t}function dn(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case"style":{e[n]=_(e.style,r);break}case"className":{e[n]=ye(e.className,r);break}default:Fe(n,r)?e[n]=cn(e[n],r):e[n]=r}}return e}function Fe(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),a=e.charCodeAt(2);return n===111&&r===110&&a>=65&&a<=90&&(typeof t=="function"||typeof t>"u")}function we(e){return typeof e=="function"}function _e(e,t){return we(e)?e(t):e??be}function cn(e,t){return t?e?(...n)=>{let r=n[0];if(tt(r)){let o=r;et(o);let i=t(...n);return o.baseUIHandlerPrevented||e?.(...n),i}let a=t(...n);return e?.(...n),a}:$e(t):e}function $e(e){return e&&((...t)=>{let n=t[0];return tt(n)&&et(n),e(...t)})}function et(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function ye(e,t){return t?e?t+" "+e:t:e}function tt(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var xe=s(Z(),1);function nt(e,t,n={}){let r=t.render,a=ln(t,n);if(n.enabled===!1)return null;let o=n.state??A;return un(e,r,a,o)}function ln(e,t={}){let{className:n,style:r,render:a}=e,{state:o=A,ref:i,props:c,stateAttributesMapping:p,enabled:l=!0}=t,u=l?Ue(n,o):void 0,g=l?Qe(r,o):void 0,w=l?Ie(o,p):A,M=l&&c?pn(c):void 0,f=l?_(w,M)??{}:A;return typeof document<"u"&&(l?Array.isArray(i)?f.ref=Ce([f.ref,ve(a),...i]):f.ref=me(f.ref,ve(a),i):me(null,null)),l?(u!==void 0&&(f.className=ye(f.className,u)),g!==void 0&&(f.style=_(f.style,g)),f):A}function pn(e){return Array.isArray(e)?Je(e):Y(void 0,e)}var fn=Symbol.for("react.lazy");function un(e,t,n,r){if(t){if(typeof t=="function")return t(n,r);let a=Y(n,t.props);a.ref=n.ref;let o=t;return o?.$$typeof===fn&&(o=S.Children.toArray(t)[0]),S.cloneElement(o,a)}if(e&&typeof e=="string")return gn(e,n);throw new Error(Ee(8))}function gn(e,t){return e==="button"?(0,xe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,xe.createElement)("img",{alt:"",...t,key:t.key}):S.createElement(e,t)}function ce(e){return nt(e.defaultTagName??"div",e,e)}var ot=s(N(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4130d64bea']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","4130d64bea"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')),document.head.appendChild(e)}var at={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","1fb29d3a3c"),e.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")),document.head.appendChild(e)}var rt={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},W=(0,ot.forwardRef)(function({variant:t="body-md",render:n,className:r,...a},o){return ce({render:n,defaultTagName:"span",ref:o,props:Y(a,{className:R(at.text,rt.heading,rt.p,at[t],r)})})});var dt=s(F(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='d6a685e1aa']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","d6a685e1aa"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}")),document.head.appendChild(e)}var it={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},Pe=(0,st.forwardRef)(function({intent:t="none",className:n,...r},a){return(0,dt.jsx)(W,{ref:a,className:R(it.badge,it[`is-${t}-intent`],n),...r,variant:"body-sm"})});var pt=s(N(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","b51ff41489"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var hn={stack:"_19ce0419607e1896__stack"},mn={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},K=(0,pt.forwardRef)(function({direction:t,gap:n,align:r,justify:a,wrap:o,render:i,...c},p){let l={gap:n&&mn[n],alignItems:r,justifyContent:a,flexDirection:t,flexWrap:o};return ce({render:i,ref:p,props:Y(c,{style:l,className:hn.stack})})});var ft=s(N(),1),ut=s(F(),1),gt=(0,ft.forwardRef)(({children:e,className:t,ariaLabel:n,as:r="div",...a},o)=>(0,ut.jsx)(r,{ref:o,className:R("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...a,children:e}));gt.displayName="NavigableRegion";var ht=gt;var vt=s(ee(),1),{Fill:bt,Slot:wt}=(0,vt.createSlotFill)("SidebarToggle");var m=s(F(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='aa9c241ccc']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","aa9c241ccc"),e.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")),document.head.appendChild(e)}var E={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function yt({headingLevel:e=1,breadcrumbs:t,badges:n,visual:r,title:a,subTitle:o,actions:i,showSidebarToggle:c=!0}){let p=`h${e}`;return(0,m.jsxs)(K,{direction:"column",className:E.header,render:(0,m.jsx)("header",{}),children:[(0,m.jsxs)(K,{className:E["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,m.jsxs)(K,{direction:"row",gap:"sm",align:"center",justify:"start",children:[c&&(0,m.jsx)(wt,{bubblesVirtually:!0,className:E["sidebar-toggle-slot"]}),r&&(0,m.jsx)("div",{className:E["header-visual"],"aria-hidden":"true",children:r}),a&&(0,m.jsx)(W,{className:E["header-title"],render:(0,m.jsx)(p,{}),variant:"heading-lg",children:a}),t,n]}),i&&(0,m.jsx)(K,{align:"center",className:E["header-actions"],direction:"row",gap:"sm",children:i})]}),o&&(0,m.jsx)(W,{render:(0,m.jsx)("p",{}),variant:"body-md",className:E["header-subtitle"],children:o})]})}var te=s(F(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='aa9c241ccc']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","aa9c241ccc"),e.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")),document.head.appendChild(e)}var Le={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function xt({headingLevel:e,breadcrumbs:t,badges:n,visual:r,title:a,subTitle:o,children:i,className:c,actions:p,ariaLabel:l,hasPadding:u=!1,showSidebarToggle:g=!0}){let w=R(Le.page,c);return(0,te.jsxs)(ht,{className:w,ariaLabel:l??(typeof a=="string"?a:""),children:[(a||t||n||p||r)&&(0,te.jsx)(yt,{headingLevel:e,breadcrumbs:t,badges:n,visual:r,title:a,subTitle:o,actions:p,showSidebarToggle:g}),u?(0,te.jsx)("div",{className:R(Le.content,Le["has-padding"]),children:i}):i]})}xt.SidebarToggleFill=bt;var ze=xt;var P=s(ee()),Zt=s(ne()),At=s(N()),C=s(J()),Wt=s(le());import{privateApis as Bn}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='31ffc51439']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","31ffc51439"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var oe=s(ee()),Ne=s(le()),ie=s(ne()),G=s(N()),v=s(J()),St=s(Ge()),Et=s(Mt());var pe=s(ee()),Tt=s(N()),Vt=s(ne()),Oe=s(J());import{__experimentalRegisterConnector as vn,__experimentalConnectorItem as bn,__experimentalDefaultConnectorSettings as wn,privateApis as yn}from"@wordpress/connectors";var Ot=s(lt()),{lock:$a,unlock:I}=(0,Ot.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Me=s(le()),re=s(ne()),ae=s(N()),d=s(J()),Dt=s(Ge());function Rt({file:e,settingName:t,connectorName:n,isInstalled:r,isActivated:a,keySource:o="none",initialIsConnected:i=!1}){let[c,p]=(0,ae.useState)(!1),[l,u]=(0,ae.useState)(!1),[g,w]=(0,ae.useState)(i),[M,f]=(0,ae.useState)(null),y=e?.replace(/\.php$/,""),H=y?.includes("/")?y.split("/")[0]:y,{derivedPluginStatus:B,canManagePlugins:U,currentApiKey:x,canInstallPlugins:L}=(0,re.useSelect)(T=>{let V=T(Me.store),Q=V.getEntityRecord("root","site")?.[t]??"",X=!!V.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:V.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:Q,canInstallPlugins:X};let ue=V.getEntityRecord("root","plugin",y);if(!V.hasFinishedResolution("getEntityRecord",["root","plugin",y]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:Q,canInstallPlugins:X};if(ue)return{derivedPluginStatus:ue.status==="active"||ue.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:Q,canInstallPlugins:X};let ge="not-installed";return a?ge="active":r&&(ge="inactive"),{derivedPluginStatus:ge,canManagePlugins:!1,currentApiKey:Q,canInstallPlugins:X}},[y,t,r,a]),h=M??B,O=U,k=h==="active"&&g||M==="active"&&!!x,{saveEntityRecord:b,invalidateResolution:j}=(0,re.useDispatch)(Me.store),{createSuccessNotice:q,createErrorNotice:D}=(0,re.useDispatch)(Dt.store),fe=async()=>{if(H){u(!0);try{await b("root","plugin",{slug:H,status:"active"},{throwOnError:!0}),f("active"),j("getEntityRecord",["root","site"]),p(!0),q((0,d.sprintf)((0,d.__)("Plugin for %s installed and activated successfully."),n),{id:"connector-plugin-install-success",type:"snackbar"})}catch{D((0,d.sprintf)((0,d.__)("Failed to install plugin for %s."),n),{id:"connector-plugin-install-error",type:"snackbar"})}finally{u(!1)}}},Kt=async()=>{if(e){u(!0);try{await b("root","plugin",{plugin:y,status:"active"},{throwOnError:!0}),f("active"),j("getEntityRecord",["root","site"]),p(!0),q((0,d.sprintf)((0,d.__)("Plugin for %s activated successfully."),n),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{D((0,d.sprintf)((0,d.__)("Failed to activate plugin for %s."),n),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{u(!1)}}};return{pluginStatus:h,canInstallPlugins:L,canActivatePlugins:O,isExpanded:c,setIsExpanded:p,isBusy:l,isConnected:k,currentApiKey:x,keySource:o,handleButtonClick:()=>{if(h==="not-installed"){if(L===!1)return;fe()}else if(h==="inactive"){if(O===!1)return;Kt()}else p(!c)},getButtonLabel:()=>{if(l)return h==="not-installed"?(0,d.__)("Installing\u2026"):(0,d.__)("Activating\u2026");if(c)return(0,d.__)("Cancel");if(k)return(0,d.__)("Edit");switch(h){case"checking":return(0,d.__)("Checking\u2026");case"not-installed":return(0,d.__)("Install");case"inactive":return(0,d.__)("Activate");case"active":return(0,d.__)("Set up")}},saveApiKey:async T=>{let V=x;try{let X=(await b("root","site",{[t]:T},{throwOnError:!0}))?.[t];if(T&&(X===V||!X))throw new Error("It was not possible to connect to the provider using this key.");w(!0),q((0,d.sprintf)((0,d.__)("%s connected successfully."),n),{id:"connector-connect-success",type:"snackbar"})}catch(se){throw console.error("Failed to save API key:",se),se}},removeApiKey:async()=>{try{await b("root","site",{[t]:""},{throwOnError:!0}),w(!1),q((0,d.sprintf)((0,d.__)("%s disconnected."),n),{id:"connector-disconnect-success",type:"snackbar"})}catch(T){throw console.error("Failed to remove API key:",T),D((0,d.sprintf)((0,d.__)("Failed to disconnect %s."),n),{id:"connector-disconnect-error",type:"snackbar"}),T}}}}var Nt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Bt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),jt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Ht=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),qt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:xn}=I(yn);function De(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var Pn={google:qt,openai:Nt,anthropic:Bt,akismet:Ht};function Ln(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=Pn[e];return React.createElement(n||jt,null)}var zn=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,Oe.__)("Connected")),Gn=()=>React.createElement(Pe,null,(0,Oe.__)("Not available"));function Mn({name:e,description:t,logo:n,authentication:r,plugin:a}){let o=r?.method==="api_key"?r:void 0,i=o?.settingName??"",c=o?.credentialsUrl??void 0,p=a?.file?.replace(/\.php$/,""),l=p?.includes("/")?p.split("/")[0]:p,u;try{c&&(u=new URL(c).hostname)}catch{}let{pluginStatus:g,canInstallPlugins:w,canActivatePlugins:M,isExpanded:f,setIsExpanded:y,isBusy:H,isConnected:B,currentApiKey:U,keySource:x,handleButtonClick:L,getButtonLabel:h,saveApiKey:O,removeApiKey:k}=Rt({file:a?.file,settingName:i,connectorName:e,isInstalled:a?.isInstalled,isActivated:a?.isActivated,keySource:o?.keySource,initialIsConnected:o?.isConnected}),b=x==="env"||x==="constant",j=g==="not-installed"&&w===!1||g==="inactive"&&M===!1,q=!j,D=(0,Tt.useRef)(null);return React.createElement(bn,{className:l?`connector-item--${l}`:void 0,logo:n,name:e,description:t,actionArea:React.createElement(pe.__experimentalHStack,{spacing:3,expanded:!1},B&&React.createElement(zn,null),j&&React.createElement(Gn,null),q&&React.createElement(pe.Button,{ref:D,variant:f||B?"tertiary":"secondary",size:"compact",onClick:L,disabled:g==="checking"||H,isBusy:H,accessibleWhenDisabled:!0},h()))},f&&g==="active"&&React.createElement(wn,{key:B?"connected":"setup",initialValue:b?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":U,helpUrl:c,helpLabel:u,readOnly:B||b,keySource:x,onRemove:b?void 0:async()=>{await k(),D.current?.focus()},onSave:async fe=>{await O(fe),y(!1),D.current?.focus()}}))}function Xt(){let e=De(),t=n=>n.replace(/[^a-z0-9-_]/gi,"-");for(let[n,r]of Object.entries(e)){if(n==="akismet"&&!r.plugin?.isInstalled)continue;let{authentication:a}=r,o=t(n),i={name:r.name,description:r.description,type:r.type,logo:Ln(n,r.logoUrl),authentication:a,plugin:r.plugin},c=I((0,Vt.select)(xn)).getConnector(o);a.method==="api_key"&&!c?.render&&(i.render=Mn),vn(o,i)}}function Yt(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var On="ai",Dn="ai-wp-admin",Re="ai/ai",Rn="https://wordpress.org/plugins/ai/",Be=Object.values(De()),Nn=Be.some(e=>e.type==="ai_provider"),Ct=[];for(let e of Be)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Ct.push(e.authentication.settingName);function kt(){let[e,t]=(0,G.useState)(!1),[n,r]=(0,G.useState)(!1),a=(0,G.useRef)(null);(0,G.useEffect)(()=>{n&&a.current?.focus()},[n]);let o=(0,G.useRef)(Be.some(L=>L.type==="ai_provider"&&L.authentication.method==="api_key"&&L.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:c,canManagePlugins:p,hasConnectedProvider:l}=(0,ie.useSelect)(L=>{let h=L(Ne.store),O=!!h.canUser("create",{kind:"root",name:"plugin"}),k=h.getEntityRecord("root","site"),b=o||Ct.some(D=>!!k?.[D]),j=h.getEntityRecord("root","plugin",Re);return h.hasFinishedResolution("getEntityRecord",["root","plugin",Re])?j?{pluginStatus:j.status==="active"?"active":"inactive",canInstallPlugins:O,canManagePlugins:!0,hasConnectedProvider:b}:{pluginStatus:"not-installed",canInstallPlugins:O,canManagePlugins:O,hasConnectedProvider:b}:{pluginStatus:"checking",canInstallPlugins:O,canManagePlugins:void 0,hasConnectedProvider:b}},[]),{saveEntityRecord:u}=(0,ie.useDispatch)(Ne.store),{createSuccessNotice:g,createErrorNotice:w}=(0,ie.useDispatch)(St.store),M=async()=>{t(!0);try{await u("root","plugin",{slug:On,status:"active"},{throwOnError:!0}),r(!0),g((0,v.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{w((0,v.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},f=async()=>{t(!0);try{await u("root","plugin",{plugin:Re,status:"active"},{throwOnError:!0}),r(!0),g((0,v.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{w((0,v.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!Nn||i==="checking"||i==="active"&&o&&!n||i==="not-installed"&&c===!1||i==="inactive"&&p===!1)return null;let y=i==="active"&&!l,H=i==="active"&&l&&(!o||n),B=i==="not-installed"||i==="inactive",U=()=>H?(0,v.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):y?(0,v.__)("The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,v.__)("The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),x=()=>i==="not-installed"?{label:e?(0,v.__)("Installing\u2026"):(0,v.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:M}:{label:e?(0,v.__)("Activating\u2026"):(0,v.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:f};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,G.createInterpolateElement)(U(),{strong:React.createElement("strong",null),a:React.createElement(oe.ExternalLink,{href:Rn})})),B?React.createElement(oe.Button,{variant:"primary",size:"compact",isBusy:e,disabled:x().disabled,accessibleWhenDisabled:!0,onClick:x().onClick},x().label):React.createElement(oe.Button,{ref:a,variant:"secondary",size:"compact",href:(0,Et.addQueryArgs)("options-general.php",{page:Dn})},(0,v.__)("Control features in the AI plugin"))),React.createElement(Yt,null))}var{store:jn}=I(Bn);Xt();function Hn(){let{connectors:e,canInstallPlugins:t}=(0,Zt.useSelect)(a=>({connectors:I(a(jn)).getConnectors(),canInstallPlugins:a(Wt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),r=e.filter(a=>a.render).length===0;return React.createElement(ze,{title:(0,C.__)("Connectors"),subTitle:(0,C.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${r?" connectors-page--empty":""}`},r?React.createElement(P.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(P.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(P.__experimentalHeading,{level:2,size:15,weight:600},(0,C.__)("No connectors yet")),React.createElement(P.__experimentalText,{size:12},(0,C.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(P.Button,{variant:"secondary",href:"plugin-install.php"},(0,C.__)("Learn more"))):React.createElement(P.__experimentalVStack,{spacing:3},React.createElement(kt,null),React.createElement(P.__experimentalVStack,{spacing:3,role:"list"},e.map(a=>a.render?React.createElement(a.render,{key:a.slug,slug:a.slug,name:a.name,description:a.description,type:a.type,logo:a.logo,authentication:a.authentication,plugin:a.plugin}):null))),t&&React.createElement("p",null,(0,At.createInterpolateElement)((0,C.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function qn(){return React.createElement(Hn,null)}var Tn=qn;export{Tn as stage}; diff --git a/src/wp-includes/build/routes/font-list/content.js b/src/wp-includes/build/routes/font-list/content.js index 18617c650e946..42fd8bc13ec52 100644 --- a/src/wp-includes/build/routes/font-list/content.js +++ b/src/wp-includes/build/routes/font-list/content.js @@ -37,20 +37,6 @@ var require_i18n = __commonJS({ } }); -// package-external:@wordpress/components -var require_components = __commonJS({ - "package-external:@wordpress/components"(exports, module) { - module.exports = window.wp.components; - } -}); - -// vendor-external:react/jsx-runtime -var require_jsx_runtime = __commonJS({ - "vendor-external:react/jsx-runtime"(exports, module) { - module.exports = window.ReactJSXRuntime; - } -}); - // package-external:@wordpress/element var require_element = __commonJS({ "package-external:@wordpress/element"(exports, module) { @@ -65,6 +51,13 @@ var require_react = __commonJS({ } }); +// vendor-external:react/jsx-runtime +var require_jsx_runtime = __commonJS({ + "vendor-external:react/jsx-runtime"(exports, module) { + module.exports = window.ReactJSXRuntime; + } +}); + // package-external:@wordpress/primitives var require_primitives = __commonJS({ "package-external:@wordpress/primitives"(exports, module) { @@ -72,6 +65,13 @@ var require_primitives = __commonJS({ } }); +// package-external:@wordpress/compose +var require_compose = __commonJS({ + "package-external:@wordpress/compose"(exports, module) { + module.exports = window.wp.compose; + } +}); + // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { @@ -79,10 +79,10 @@ var require_private_apis = __commonJS({ } }); -// package-external:@wordpress/compose -var require_compose = __commonJS({ - "package-external:@wordpress/compose"(exports, module) { - module.exports = window.wp.compose; +// package-external:@wordpress/components +var require_components = __commonJS({ + "package-external:@wordpress/components"(exports, module) { + module.exports = window.wp.components; } }); @@ -324,28 +324,6 @@ function clsx() { } var clsx_default = clsx; -// packages/admin-ui/build-module/navigable-region/index.mjs -var import_element = __toESM(require_element(), 1); -var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); -var NavigableRegion = (0, import_element.forwardRef)( - ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { - return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( - Tag, - { - ref, - className: clsx_default("admin-ui-navigable-region", className), - "aria-label": ariaLabel, - role: "region", - tabIndex: "-1", - ...props, - children - } - ); - } -); -NavigableRegion.displayName = "NavigableRegion"; -var navigable_region_default = NavigableRegion; - // node_modules/@base-ui/utils/esm/useRefWithInit.js var React2 = __toESM(require_react(), 1); var UNINITIALIZED = {}; @@ -372,7 +350,7 @@ function warn(...messages) { } } -// node_modules/@base-ui/react/esm/utils/useRenderElement.js +// node_modules/@base-ui/react/esm/internals/useRenderElement.js var React5 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/useMergedRefs.js @@ -501,7 +479,11 @@ function mergeObjects(a2, b2) { return void 0; } -// node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js +// node_modules/@base-ui/utils/esm/empty.js +var EMPTY_ARRAY = Object.freeze([]); +var EMPTY_OBJECT = Object.freeze({}); + +// node_modules/@base-ui/react/esm/internals/getStateAttributesProps.js function getStateAttributesProps(state, customMapping) { const props = {}; for (const key in state) { @@ -640,18 +622,19 @@ function mergeEventHandlers(ourHandler, theirHandler) { if (!ourHandler) { return wrapEventHandler(theirHandler); } - return (event) => { + return (...args) => { + const event = args[0]; if (isSyntheticEvent(event)) { const baseUIEvent = event; makeEventPreventable(baseUIEvent); - const result2 = theirHandler(baseUIEvent); + const result2 = theirHandler(...args); if (!baseUIEvent.baseUIHandlerPrevented) { - ourHandler?.(baseUIEvent); + ourHandler?.(...args); } return result2; } - const result = theirHandler(event); - ourHandler?.(event); + const result = theirHandler(...args); + ourHandler?.(...args); return result; }; } @@ -659,11 +642,12 @@ function wrapEventHandler(handler) { if (!handler) { return handler; } - return (event) => { + return (...args) => { + const event = args[0]; if (isSyntheticEvent(event)) { makeEventPreventable(event); } - return handler(event); + return handler(...args); }; } function makeEventPreventable(event) { @@ -685,17 +669,7 @@ function isSyntheticEvent(event) { return event != null && typeof event === "object" && "nativeEvent" in event; } -// node_modules/@base-ui/utils/esm/empty.js -var EMPTY_ARRAY = Object.freeze([]); -var EMPTY_OBJECT = Object.freeze({}); - -// node_modules/@base-ui/react/esm/utils/constants.js -var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; -var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; -var BASE_UI_SWIPE_IGNORE_SELECTOR = `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; -var LEGACY_SWIPE_IGNORE_SELECTOR = `[${LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; - -// node_modules/@base-ui/react/esm/utils/useRenderElement.js +// node_modules/@base-ui/react/esm/internals/useRenderElement.js var import_react = __toESM(require_react(), 1); function useRenderElement(element, componentProps, params = {}) { const renderProp = componentProps.render; @@ -818,6 +792,40 @@ function useRender(params) { return useRenderElement(params.defaultTagName ?? "div", params, params); } +// packages/ui/build-module/text/text.mjs +var import_element = __toESM(require_element(), 1); +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='4130d64bea']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "4130d64bea"); + style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')); + document.head.appendChild(style); +} +var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "1fb29d3a3c"); + style.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")); + document.head.appendChild(style); +} +var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; +var Text = (0, import_element.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { + const element = useRender({ + render, + defaultTagName: "span", + ref, + props: mergeProps(props, { + className: clsx_default( + style_default.text, + global_css_defense_default.heading, + global_css_defense_default.p, + style_default[variant], + className + ) + }) + }); + return element; +}); + // packages/icons/build-module/icon/index.mjs var import_element2 = __toESM(require_element(), 1); var icon_default = (0, import_element2.forwardRef)( @@ -833,28 +841,28 @@ var icon_default = (0, import_element2.forwardRef)( // packages/icons/build-module/library/chevron-left.mjs var import_primitives = __toESM(require_primitives(), 1); -var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); -var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) }); +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); +var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) }); // packages/icons/build-module/library/chevron-right.mjs var import_primitives2 = __toESM(require_primitives(), 1); -var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); -var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) }); +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) }); // packages/icons/build-module/library/more-vertical.mjs var import_primitives3 = __toESM(require_primitives(), 1); -var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); -var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); // packages/icons/build-module/library/next.mjs var import_primitives4 = __toESM(require_primitives(), 1); -var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); -var next_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.Path, { d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" }) }); +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var next_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" }) }); // packages/icons/build-module/library/previous.mjs var import_primitives5 = __toESM(require_primitives(), 1); -var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); -var previous_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.Path, { d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" }) }); +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +var previous_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" }) }); // packages/ui/build-module/stack/stack.mjs var import_element3 = __toESM(require_element(), 1); @@ -864,7 +872,7 @@ if (typeof document !== "undefined" && true && !document.head.querySelector("sty style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); document.head.appendChild(style); } -var style_default = { "stack": "_19ce0419607e1896__stack" }; +var style_default2 = { "stack": "_19ce0419607e1896__stack" }; var gapTokens = { xs: "var(--wpds-dimension-gap-xs, 4px)", sm: "var(--wpds-dimension-gap-sm, 8px)", @@ -885,21 +893,51 @@ var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, al const element = useRender({ render, ref, - props: mergeProps(props, { style, className: style_default.stack }) + props: mergeProps(props, { style, className: style_default2.stack }) }); return element; }); +// packages/admin-ui/build-module/navigable-region/index.mjs +var import_element4 = __toESM(require_element(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element4.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( + Tag, + { + ref, + className: clsx_default("admin-ui-navigable-region", className), + "aria-label": ariaLabel, + role: "region", + tabIndex: "-1", + ...props, + children + } + ); + } +); +NavigableRegion.displayName = "NavigableRegion"; +var navigable_region_default = NavigableRegion; + // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs var import_components = __toESM(require_components(), 1); var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); // packages/admin-ui/build-module/page/header.mjs var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='aa9c241ccc']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "aa9c241ccc"); + style.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")); + document.head.appendChild(style); +} +var style_default3 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Header({ - headingLevel = 2, + headingLevel = 1, breadcrumbs, badges, + visual, title, subTitle, actions, @@ -910,35 +948,67 @@ function Header({ Stack, { direction: "column", - className: "admin-ui-page__header", + className: style_default3.header, render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("header", {}), children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - SidebarToggleSlot, - { - bubblesVirtually: true, - className: "admin-ui-page__sidebar-toggle-slot" - } - ), - title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), - breadcrumbs, - badges - ] }), - /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - Stack, - { - direction: "row", - gap: "sm", - style: { width: "auto", flexShrink: 0 }, - className: "admin-ui-page__header-actions", - align: "center", - children: actions - } - ) - ] }), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( + Stack, + { + className: style_default3["header-content"], + direction: "row", + gap: "sm", + justify: "space-between", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: style_default3["sidebar-toggle-slot"] + } + ), + visual && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + "div", + { + className: style_default3["header-visual"], + "aria-hidden": "true", + children: visual + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Text, + { + className: style_default3["header-title"], + render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, {}), + variant: "heading-lg", + children: title + } + ), + breadcrumbs, + badges + ] }), + actions && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Stack, + { + align: "center", + className: style_default3["header-actions"], + direction: "row", + gap: "sm", + children: actions + } + ) + ] + } + ), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Text, + { + render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", {}), + variant: "body-md", + className: style_default3["header-subtitle"], + children: subTitle + } + ) ] } ); @@ -946,10 +1016,18 @@ function Header({ // packages/admin-ui/build-module/page/index.mjs var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='aa9c241ccc']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "aa9c241ccc"); + style.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")); + document.head.appendChild(style); +} +var style_default4 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Page({ headingLevel, breadcrumbs, badges, + visual, title, subTitle, children, @@ -959,22 +1037,32 @@ function Page({ hasPadding = false, showSidebarToggle = true }) { - const classes = clsx_default("admin-ui-page", className); + const classes = clsx_default(style_default4.page, className); const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ - (title || breadcrumbs || badges || actions) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + (title || breadcrumbs || badges || actions || visual) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( Header, { headingLevel, breadcrumbs, badges, + visual, title, subTitle, actions, showSidebarToggle } ), - hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + "div", + { + className: clsx_default( + style_default4.content, + style_default4["has-padding"] + ), + children + } + ) : children ] }); } Page.SidebarToggleFill = SidebarToggleFill; @@ -986,14 +1074,14 @@ var import_components62 = __toESM(require_components()); var import_editor = __toESM(require_editor()); var import_core_data12 = __toESM(require_core_data()); var import_data13 = __toESM(require_data()); -var import_element35 = __toESM(require_element()); +var import_element36 = __toESM(require_element()); // packages/global-styles-ui/build-module/global-styles-ui.mjs var import_components61 = __toESM(require_components(), 1); var import_blocks5 = __toESM(require_blocks(), 1); var import_data12 = __toESM(require_data(), 1); var import_block_editor14 = __toESM(require_block_editor(), 1); -var import_element34 = __toESM(require_element(), 1); +var import_element35 = __toESM(require_element(), 1); var import_compose6 = __toESM(require_compose(), 1); // packages/global-styles-engine/build-module/utils/object.mjs @@ -1053,6 +1141,7 @@ var VALID_SETTINGS = [ "dimensions.aspectRatio", "dimensions.height", "dimensions.minHeight", + "dimensions.minWidth", "dimensions.width", "dimensions.dimensionSizes", "layout.contentSize", @@ -1747,11 +1836,11 @@ var k = function(r3) { }; // packages/global-styles-ui/build-module/provider.mjs -var import_element5 = __toESM(require_element(), 1); +var import_element6 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/context.mjs -var import_element4 = __toESM(require_element(), 1); -var GlobalStylesContext = (0, import_element4.createContext)({ +var import_element5 = __toESM(require_element(), 1); +var GlobalStylesContext = (0, import_element5.createContext)({ user: { styles: {}, settings: {} }, base: { styles: {}, settings: {} }, merged: { styles: {}, settings: {} }, @@ -1769,10 +1858,10 @@ function GlobalStylesProvider({ onChange, fontLibraryEnabled }) { - const merged = (0, import_element5.useMemo)(() => { + const merged = (0, import_element6.useMemo)(() => { return mergeGlobalStyles(baseValue, value); }, [baseValue, value]); - const contextValue = (0, import_element5.useMemo)( + const contextValue = (0, import_element6.useMemo)( () => ({ user: value, base: baseValue, @@ -1857,7 +1946,7 @@ function a11y_default(o3) { } // packages/global-styles-ui/build-module/hooks.mjs -var import_element6 = __toESM(require_element(), 1); +var import_element7 = __toESM(require_element(), 1); var import_data = __toESM(require_data(), 1); var import_core_data = __toESM(require_core_data(), 1); var import_i18n2 = __toESM(require_i18n(), 1); @@ -1977,14 +2066,14 @@ function getFontFamilies(themeJson) { // packages/global-styles-ui/build-module/hooks.mjs k([a11y_default]); function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true, state) { - const { user, base, merged, onChange } = (0, import_element6.useContext)(GlobalStylesContext); + const { user, base, merged, onChange } = (0, import_element7.useContext)(GlobalStylesContext); let sourceValue = merged; if (readFrom === "base") { sourceValue = base; } else if (readFrom === "user") { sourceValue = user; } - const styleValue = (0, import_element6.useMemo)(() => { + const styleValue = (0, import_element7.useMemo)(() => { const rawValue = getStyle( sourceValue, path, @@ -1996,7 +2085,7 @@ function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = tru } return rawValue; }, [sourceValue, path, blockName, shouldDecodeEncode, state]); - const setStyleValue = (0, import_element6.useCallback)( + const setStyleValue = (0, import_element7.useCallback)( (newValue) => { let valueToSet = newValue; if (state) { @@ -2024,18 +2113,18 @@ function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = tru return [styleValue, setStyleValue]; } function useSetting(path, blockName, readFrom = "merged") { - const { user, base, merged, onChange } = (0, import_element6.useContext)(GlobalStylesContext); + const { user, base, merged, onChange } = (0, import_element7.useContext)(GlobalStylesContext); let sourceValue = merged; if (readFrom === "base") { sourceValue = base; } else if (readFrom === "user") { sourceValue = user; } - const settingValue = (0, import_element6.useMemo)( + const settingValue = (0, import_element7.useMemo)( () => getSetting(sourceValue, path, blockName), [sourceValue, path, blockName] ); - const setSettingValue = (0, import_element6.useCallback)( + const setSettingValue = (0, import_element7.useCallback)( (newValue) => { const newGlobalStyles = setSetting( user, @@ -2066,8 +2155,8 @@ function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) { variationsFromTheme: _variationsFromTheme || EMPTY_ARRAY2 }; }, []); - const { user: userVariation } = (0, import_element6.useContext)(GlobalStylesContext); - return (0, import_element6.useMemo)(() => { + const { user: userVariation } = (0, import_element7.useContext)(GlobalStylesContext); + return (0, import_element7.useMemo)(() => { const clonedUserVariation = structuredClone(userVariation); const userVariationWithoutProperties = removePropertiesFromObject( clonedUserVariation, @@ -2144,7 +2233,7 @@ function useStylesPreviewColors() { } // packages/global-styles-ui/build-module/typography-example.mjs -var import_element7 = __toESM(require_element(), 1); +var import_element8 = __toESM(require_element(), 1); var import_components4 = __toESM(require_components(), 1); var import_i18n4 = __toESM(require_i18n(), 1); @@ -2241,7 +2330,7 @@ function PreviewTypography({ fontSize, variation }) { - const { base } = (0, import_element7.useContext)(GlobalStylesContext); + const { base } = (0, import_element8.useContext)(GlobalStylesContext); let config = base; if (variation) { config = { ...base, ...variation }; @@ -2322,7 +2411,7 @@ function HighlightedColors({ // packages/global-styles-ui/build-module/preview-wrapper.mjs var import_components6 = __toESM(require_components(), 1); var import_compose = __toESM(require_compose(), 1); -var import_element8 = __toESM(require_element(), 1); +var import_element9 = __toESM(require_element(), 1); var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); var normalizedWidth = 248; var normalizedHeight = 152; @@ -2339,21 +2428,21 @@ function PreviewWrapper({ const [backgroundColor = "white"] = useStyle("color.background"); const [gradientValue] = useStyle("color.gradient"); const disableMotion = (0, import_compose.useReducedMotion)(); - const [isHovered, setIsHovered] = (0, import_element8.useState)(false); + const [isHovered, setIsHovered] = (0, import_element9.useState)(false); const [containerResizeListener, { width }] = (0, import_compose.useResizeObserver)(); - const [throttledWidth, setThrottledWidthState] = (0, import_element8.useState)(width); - const [ratioState, setRatioState] = (0, import_element8.useState)(); + const [throttledWidth, setThrottledWidthState] = (0, import_element9.useState)(width); + const [ratioState, setRatioState] = (0, import_element9.useState)(); const setThrottledWidth = (0, import_compose.useThrottle)( setThrottledWidthState, 250, THROTTLE_OPTIONS ); - (0, import_element8.useLayoutEffect)(() => { + (0, import_element9.useLayoutEffect)(() => { if (width) { setThrottledWidth(width); } }, [width, setThrottledWidth]); - (0, import_element8.useLayoutEffect)(() => { + (0, import_element9.useLayoutEffect)(() => { const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1; const ratioDiff = newRatio - (ratioState || 0); const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1; @@ -2369,7 +2458,9 @@ function PreviewWrapper({ isReady && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( "div", { - className: "global-styles-ui-preview__wrapper", + className: clsx_default("global-styles-ui-preview__wrapper", { + "is-hoverable": withHoverView + }), style: { height: normalizedHeight * ratio }, @@ -2382,8 +2473,7 @@ function PreviewWrapper({ style: { height: normalizedHeight * ratio, width: "100%", - background: gradientValue ?? backgroundColor, - cursor: withHoverView ? "pointer" : void 0 + background: gradientValue ?? backgroundColor }, initial: "start", animate: (isHovered || isFocused) && !disableMotion && label ? "hover" : "start", @@ -2587,7 +2677,7 @@ var import_blocks2 = __toESM(require_blocks(), 1); var import_i18n7 = __toESM(require_i18n(), 1); var import_components11 = __toESM(require_components(), 1); var import_data4 = __toESM(require_data(), 1); -var import_element9 = __toESM(require_element(), 1); +var import_element10 = __toESM(require_element(), 1); var import_block_editor3 = __toESM(require_block_editor(), 1); var import_compose2 = __toESM(require_compose(), 1); import { speak } from "@wordpress/a11y"; @@ -2683,8 +2773,8 @@ function BlockList({ filterValue }) { const filteredBlockTypes = !filterValue ? sortedBlockTypes : sortedBlockTypes.filter( (blockType) => isMatchingSearchTerm(blockType, filterValue) ); - const blockTypesListRef = (0, import_element9.useRef)(null); - (0, import_element9.useEffect)(() => { + const blockTypesListRef = (0, import_element10.useRef)(null); + (0, import_element10.useEffect)(() => { if (!filterValue) { return; } @@ -2712,12 +2802,12 @@ function BlockList({ filterValue }) { } ); } -var MemoizedBlockList = (0, import_element9.memo)(BlockList); +var MemoizedBlockList = (0, import_element10.memo)(BlockList); // packages/global-styles-ui/build-module/screen-block.mjs var import_blocks4 = __toESM(require_blocks(), 1); var import_block_editor5 = __toESM(require_block_editor(), 1); -var import_element11 = __toESM(require_element(), 1); +var import_element12 = __toESM(require_element(), 1); var import_data5 = __toESM(require_data(), 1); var import_core_data3 = __toESM(require_core_data(), 1); var import_components14 = __toESM(require_components(), 1); @@ -2727,7 +2817,7 @@ var import_i18n8 = __toESM(require_i18n(), 1); var import_block_editor4 = __toESM(require_block_editor(), 1); var import_blocks3 = __toESM(require_blocks(), 1); var import_components12 = __toESM(require_components(), 1); -var import_element10 = __toESM(require_element(), 1); +var import_element11 = __toESM(require_element(), 1); var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/subtitle.mjs @@ -2761,7 +2851,7 @@ var { // packages/global-styles-ui/build-module/screen-typography.mjs var import_i18n22 = __toESM(require_i18n(), 1); var import_components34 = __toESM(require_components(), 1); -var import_element22 = __toESM(require_element(), 1); +var import_element23 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-body.mjs var import_components15 = __toESM(require_components(), 1); @@ -2815,7 +2905,7 @@ var preview_typography_default = StylesPreviewTypography; // packages/global-styles-ui/build-module/variations/variation.mjs var import_components18 = __toESM(require_components(), 1); -var import_element12 = __toESM(require_element(), 1); +var import_element13 = __toESM(require_element(), 1); var import_keycodes = __toESM(require_keycodes(), 1); var import_i18n10 = __toESM(require_i18n(), 1); var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); @@ -2826,13 +2916,13 @@ function Variation({ properties, showTooltip = false }) { - const [isFocused, setIsFocused] = (0, import_element12.useState)(false); + const [isFocused, setIsFocused] = (0, import_element13.useState)(false); const { base, user, onChange: setUserConfig - } = (0, import_element12.useContext)(GlobalStylesContext); - const context = (0, import_element12.useMemo)(() => { + } = (0, import_element13.useContext)(GlobalStylesContext); + const context = (0, import_element13.useMemo)(() => { let merged = mergeGlobalStyles(base, variation); if (properties) { merged = filterObjectByProperties(merged, properties); @@ -2852,7 +2942,7 @@ function Variation({ selectVariation(); } }; - const isActive = (0, import_element12.useMemo)( + const isActive = (0, import_element13.useMemo)( () => areGlobalStylesEqual(user, variation), [user, variation] ); @@ -2939,10 +3029,10 @@ function TypographyVariations({ // packages/global-styles-ui/build-module/font-families.mjs var import_i18n20 = __toESM(require_i18n(), 1); var import_components32 = __toESM(require_components(), 1); -var import_element21 = __toESM(require_element(), 1); +var import_element22 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-library/context.mjs -var import_element13 = __toESM(require_element(), 1); +var import_element14 = __toESM(require_element(), 1); var import_data6 = __toESM(require_data(), 1); var import_core_data5 = __toESM(require_core_data(), 1); var import_i18n12 = __toESM(require_i18n(), 1); @@ -3289,7 +3379,7 @@ function toggleFont(font2, face, initialfonts = []) { // packages/global-styles-ui/build-module/font-library/context.mjs var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); -var FontLibraryContext = (0, import_element13.createContext)( +var FontLibraryContext = (0, import_element14.createContext)( {} ); FontLibraryContext.displayName = "FontLibraryContext"; @@ -3305,7 +3395,7 @@ function FontLibraryProvider({ children }) { "globalStyles", globalStylesId ); - const [isInstalling, setIsInstalling] = (0, import_element13.useState)(false); + const [isInstalling, setIsInstalling] = (0, import_element14.useState)(false); const { records: libraryPosts = [], isResolving: isResolvingLibrary } = (0, import_core_data5.useEntityRecords)( "postType", "wp_font_family", @@ -3335,12 +3425,12 @@ function FontLibraryProvider({ children }) { ); await saveEntityRecord("root", "globalStyles", finalGlobalStyles); }; - const [modalTabOpen, setModalTabOpen] = (0, import_element13.useState)(""); - const [libraryFontSelected, setLibraryFontSelected] = (0, import_element13.useState)(void 0); + const [modalTabOpen, setModalTabOpen] = (0, import_element14.useState)(""); + const [libraryFontSelected, setLibraryFontSelected] = (0, import_element14.useState)(void 0); const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : []; const customFonts = fontFamilies?.custom ? fontFamilies.custom.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : []; const baseCustomFonts = libraryFonts ? libraryFonts.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : []; - (0, import_element13.useEffect)(() => { + (0, import_element14.useEffect)(() => { if (!modalTabOpen) { setLibraryFontSelected(void 0); } @@ -3357,7 +3447,7 @@ function FontLibraryProvider({ children }) { source: font2.source }); }; - const [loadedFontUrls] = (0, import_element13.useState)(/* @__PURE__ */ new Set()); + const [loadedFontUrls] = (0, import_element14.useState)(/* @__PURE__ */ new Set()); const getAvailableFontsOutline = (availableFontFamilies) => { const outline = availableFontFamilies.reduce( (acc, font2) => { @@ -3637,7 +3727,7 @@ var import_data8 = __toESM(require_data(), 1); var import_components24 = __toESM(require_components(), 1); var import_core_data6 = __toESM(require_core_data(), 1); var import_data7 = __toESM(require_data(), 1); -var import_element16 = __toESM(require_element(), 1); +var import_element17 = __toESM(require_element(), 1); var import_i18n14 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/font-library/font-card.mjs @@ -3646,7 +3736,7 @@ var import_components22 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/font-library/font-demo.mjs var import_components21 = __toESM(require_components(), 1); -var import_element14 = __toESM(require_element(), 1); +var import_element15 = __toESM(require_element(), 1); var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); function getPreviewUrl(fontFace) { if (fontFace.preview) { @@ -3673,14 +3763,14 @@ function getDisplayFontFace(font2) { }; } function FontDemo({ font: font2, text }) { - const ref = (0, import_element14.useRef)(null); + const ref = (0, import_element15.useRef)(null); const fontFace = getDisplayFontFace(font2); const style = getFamilyPreviewStyle(font2); text = text || ("name" in font2 ? font2.name : ""); const customPreviewUrl = font2.preview; - const [isIntersecting, setIsIntersecting] = (0, import_element14.useState)(false); - const [isAssetLoaded, setIsAssetLoaded] = (0, import_element14.useState)(false); - const { loadFontFaceAsset } = (0, import_element14.useContext)(FontLibraryContext); + const [isIntersecting, setIsIntersecting] = (0, import_element15.useState)(false); + const [isAssetLoaded, setIsAssetLoaded] = (0, import_element15.useState)(false); + const { loadFontFaceAsset } = (0, import_element15.useContext)(FontLibraryContext); const previewUrl = customPreviewUrl ?? getPreviewUrl(fontFace); const isPreviewImage = previewUrl && previewUrl.match(/\.(png|jpg|jpeg|gif|svg)$/i); const faceStyles = getFacePreviewStyle(fontFace); @@ -3691,7 +3781,7 @@ function FontDemo({ font: font2, text }) { ...style, ...faceStyles }; - (0, import_element14.useEffect)(() => { + (0, import_element15.useEffect)(() => { const observer = new window.IntersectionObserver(([entry]) => { setIsIntersecting(entry.isIntersecting); }, {}); @@ -3700,7 +3790,7 @@ function FontDemo({ font: font2, text }) { } return () => observer.disconnect(); }, [ref]); - (0, import_element14.useEffect)(() => { + (0, import_element15.useEffect)(() => { const loadAsset = async () => { if (isIntersecting) { if (!isPreviewImage && fontFace.src) { @@ -3776,14 +3866,14 @@ function FontCard({ var font_card_default = FontCard; // packages/global-styles-ui/build-module/font-library/library-font-variant.mjs -var import_element15 = __toESM(require_element(), 1); +var import_element16 = __toESM(require_element(), 1); var import_components23 = __toESM(require_components(), 1); var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); function LibraryFontVariant({ face, font: font2 }) { - const { isFontActivated, toggleActivateFont } = (0, import_element15.useContext)(FontLibraryContext); + const { isFontActivated, toggleActivateFont } = (0, import_element16.useContext)(FontLibraryContext); const isInstalled = (font2?.fontFace?.length ?? 0) > 0 ? isFontActivated( font2.slug, face.fontStyle, @@ -3798,7 +3888,7 @@ function LibraryFontVariant({ toggleActivateFont(font2); }; const displayName = font2.name + " " + getFontFaceVariantName(face); - const checkboxId = (0, import_element15.useId)(); + const checkboxId = (0, import_element16.useId)(); return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_components23.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( import_components23.CheckboxControl, @@ -3865,10 +3955,10 @@ function InstalledFonts() { isInstalling, saveFontFamilies, getFontFacesActivated - } = (0, import_element16.useContext)(FontLibraryContext); + } = (0, import_element17.useContext)(FontLibraryContext); const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies"); - const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, import_element16.useState)(false); - const [notice, setNotice] = (0, import_element16.useState)(null); + const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, import_element17.useState)(false); + const [notice, setNotice] = (0, import_element17.useState)(null); const [baseFontFamilies] = useSetting("typography.fontFamilies", void 0, "base"); const globalStylesId = (0, import_data7.useSelect)((select) => { const { __experimentalGetCurrentGlobalStylesId } = select(import_core_data6.store); @@ -3948,7 +4038,7 @@ function InstalledFonts() { variantsInstalled ); }; - (0, import_element16.useEffect)(() => { + (0, import_element17.useEffect)(() => { handleSetLibraryFontSelected(libraryFontSelected); }, []); const activeFontsCount = libraryFontSelected ? getFontFacesActivated( @@ -4253,7 +4343,7 @@ function ConfirmDeleteDialog({ var installed_fonts_default = InstalledFonts; // packages/global-styles-ui/build-module/font-library/font-collection.mjs -var import_element18 = __toESM(require_element(), 1); +var import_element19 = __toESM(require_element(), 1); var import_components27 = __toESM(require_components(), 1); var import_compose3 = __toESM(require_compose(), 1); var import_i18n16 = __toESM(require_i18n(), 1); @@ -4336,7 +4426,7 @@ function GoogleFontsConfirmDialog() { var google_fonts_confirm_dialog_default = GoogleFontsConfirmDialog; // packages/global-styles-ui/build-module/font-library/collection-font-variant.mjs -var import_element17 = __toESM(require_element(), 1); +var import_element18 = __toESM(require_element(), 1); var import_components26 = __toESM(require_components(), 1); var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); function CollectionFontVariant({ @@ -4353,7 +4443,7 @@ function CollectionFontVariant({ handleToggleVariant(font2); }; const displayName = font2.name + " " + getFontFaceVariantName(face); - const checkboxId = (0, import_element17.useId)(); + const checkboxId = (0, import_element18.useId)(); return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_components26.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( import_components26.CheckboxControl, @@ -4388,21 +4478,21 @@ function FontCollection({ slug }) { const getGoogleFontsPermissionFromStorage = () => { return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === "true"; }; - const [selectedFont, setSelectedFont] = (0, import_element18.useState)( + const [selectedFont, setSelectedFont] = (0, import_element19.useState)( null ); - const [notice, setNotice] = (0, import_element18.useState)(null); - const [fontsToInstall, setFontsToInstall] = (0, import_element18.useState)( + const [notice, setNotice] = (0, import_element19.useState)(null); + const [fontsToInstall, setFontsToInstall] = (0, import_element19.useState)( [] ); - const [page, setPage] = (0, import_element18.useState)(1); - const [filters, setFilters] = (0, import_element18.useState)({}); - const [renderConfirmDialog, setRenderConfirmDialog] = (0, import_element18.useState)( + const [page, setPage] = (0, import_element19.useState)(1); + const [filters, setFilters] = (0, import_element19.useState)({}); + const [renderConfirmDialog, setRenderConfirmDialog] = (0, import_element19.useState)( requiresPermission && !getGoogleFontsPermissionFromStorage() ); - const { installFonts, isInstalling } = (0, import_element18.useContext)(FontLibraryContext); + const { installFonts, isInstalling } = (0, import_element19.useContext)(FontLibraryContext); const { record: selectedCollection, isResolving: isLoading } = (0, import_core_data7.useEntityRecord)("root", "fontCollection", slug); - (0, import_element18.useEffect)(() => { + (0, import_element19.useEffect)(() => { const handleStorage = () => { setRenderConfirmDialog( requiresPermission && !getGoogleFontsPermissionFromStorage() @@ -4416,19 +4506,19 @@ function FontCollection({ slug }) { window.localStorage.setItem(LOCAL_STORAGE_ITEM, "false"); window.dispatchEvent(new Event("storage")); }; - (0, import_element18.useEffect)(() => { + (0, import_element19.useEffect)(() => { setSelectedFont(null); }, [slug]); - (0, import_element18.useEffect)(() => { + (0, import_element19.useEffect)(() => { setFontsToInstall([]); }, [selectedFont]); - const collectionFonts = (0, import_element18.useMemo)( + const collectionFonts = (0, import_element19.useMemo)( () => selectedCollection?.font_families ?? [], [selectedCollection] ); const collectionCategories = selectedCollection?.categories ?? []; const categories = [DEFAULT_CATEGORY, ...collectionCategories]; - const fonts = (0, import_element18.useMemo)( + const fonts = (0, import_element19.useMemo)( () => filterFonts(collectionFonts, filters), [collectionFonts, filters] ); @@ -4738,7 +4828,7 @@ function FontCollection({ slug }) { expanded: false, spacing: 1, className: "font-library__page-selection", - children: (0, import_element18.createInterpolateElement)( + children: (0, import_element19.createInterpolateElement)( (0, import_i18n16.sprintf)( // translators: 1: Current page number, 2: Total number of pages. (0, import_i18n16._x)( @@ -4816,7 +4906,7 @@ var font_collection_default = FontCollection; // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs var import_i18n17 = __toESM(require_i18n(), 1); var import_components29 = __toESM(require_components(), 1); -var import_element19 = __toESM(require_element(), 1); +var import_element20 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-library/lib/unbrotli.mjs var __require2 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, { @@ -14875,9 +14965,9 @@ function makeFamiliesFromFaces(fontFaces) { // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); function UploadFonts() { - const { installFonts } = (0, import_element19.useContext)(FontLibraryContext); - const [isUploading, setIsUploading] = (0, import_element19.useState)(false); - const [notice, setNotice] = (0, import_element19.useState)(null); + const { installFonts } = (0, import_element20.useContext)(FontLibraryContext); + const [isUploading, setIsUploading] = (0, import_element20.useState)(false); + const [notice, setNotice] = (0, import_element20.useState)(null); const handleDropZone = (files) => { handleFilesUpload(files); }; @@ -15053,7 +15143,7 @@ var UPLOAD_TAB = { // packages/global-styles-ui/build-module/font-family-item.mjs var import_i18n19 = __toESM(require_i18n(), 1); var import_components31 = __toESM(require_components(), 1); -var import_element20 = __toESM(require_element(), 1); +var import_element21 = __toESM(require_element(), 1); var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-families.mjs @@ -15070,7 +15160,7 @@ var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-typography-element.mjs var import_i18n23 = __toESM(require_i18n(), 1); var import_components35 = __toESM(require_components(), 1); -var import_element23 = __toESM(require_element(), 1); +var import_element24 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/typography-panel.mjs var import_block_editor6 = __toESM(require_block_editor(), 1); @@ -15113,7 +15203,7 @@ var import_block_editor7 = __toESM(require_block_editor(), 1); // packages/global-styles-ui/build-module/palette.mjs var import_components37 = __toESM(require_components(), 1); var import_i18n24 = __toESM(require_i18n(), 1); -var import_element24 = __toESM(require_element(), 1); +var import_element25 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/color-indicator-wrapper.mjs var import_components36 = __toESM(require_components(), 1); @@ -15270,7 +15360,7 @@ var { useHasBackgroundPanel: useHasBackgroundPanel3 } = unlock(import_block_edit // packages/global-styles-ui/build-module/shadows-panel.mjs var import_components46 = __toESM(require_components(), 1); var import_i18n31 = __toESM(require_i18n(), 1); -var import_element25 = __toESM(require_element(), 1); +var import_element26 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/confirm-reset-shadow-dialog.mjs var import_components45 = __toESM(require_components(), 1); @@ -15284,7 +15374,7 @@ var { Menu } = unlock(import_components46.privateApis); // packages/global-styles-ui/build-module/shadows-edit-panel.mjs var import_components47 = __toESM(require_components(), 1); var import_i18n32 = __toESM(require_i18n(), 1); -var import_element26 = __toESM(require_element(), 1); +var import_element27 = __toESM(require_element(), 1); var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu2 } = unlock(import_components47.privateApis); var customShadowMenuItems = [ @@ -15313,7 +15403,7 @@ var import_block_editor11 = __toESM(require_block_editor(), 1); // packages/global-styles-ui/build-module/dimensions-panel.mjs var import_block_editor10 = __toESM(require_block_editor(), 1); -var import_element27 = __toESM(require_element(), 1); +var import_element28 = __toESM(require_element(), 1); var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock(import_block_editor10.privateApis); @@ -15334,14 +15424,14 @@ var import_components49 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/style-variations-container.mjs var import_core_data9 = __toESM(require_core_data(), 1); var import_data9 = __toESM(require_data(), 1); -var import_element28 = __toESM(require_element(), 1); +var import_element29 = __toESM(require_element(), 1); var import_components48 = __toESM(require_components(), 1); var import_i18n34 = __toESM(require_i18n(), 1); var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); function StyleVariationsContainer({ gap = 2 }) { - const { user } = (0, import_element28.useContext)(GlobalStylesContext); + const { user } = (0, import_element29.useContext)(GlobalStylesContext); const userStyles = user?.styles; const variations = (0, import_data9.useSelect)((select) => { const result = select( @@ -15357,7 +15447,7 @@ function StyleVariationsContainer({ ]); } ); - const themeVariations = (0, import_element28.useMemo)(() => { + const themeVariations = (0, import_element29.useMemo)(() => { const withEmptyVariation = [ { title: (0, import_i18n34.__)("Default"), @@ -15441,12 +15531,12 @@ var { AdvancedPanel: StylesAdvancedPanel2 } = unlock(import_block_editor12.priva // packages/global-styles-ui/build-module/screen-revisions/index.mjs var import_i18n40 = __toESM(require_i18n(), 1); var import_components54 = __toESM(require_components(), 1); -var import_element30 = __toESM(require_element(), 1); +var import_element31 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-revisions/use-global-styles-revisions.mjs var import_data10 = __toESM(require_data(), 1); var import_core_data10 = __toESM(require_core_data(), 1); -var import_element29 = __toESM(require_element(), 1); +var import_element30 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-revisions/revisions-buttons.mjs var import_i18n38 = __toESM(require_i18n(), 1); @@ -15469,7 +15559,7 @@ var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs var import_i18n42 = __toESM(require_i18n(), 1); var import_components56 = __toESM(require_components(), 1); -var import_element31 = __toESM(require_element(), 1); +var import_element32 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-sizes/confirm-reset-font-sizes-dialog.mjs var import_components55 = __toESM(require_components(), 1); @@ -15483,7 +15573,7 @@ var { Menu: Menu3 } = unlock(import_components56.privateApis); // packages/global-styles-ui/build-module/font-sizes/font-size.mjs var import_i18n46 = __toESM(require_i18n(), 1); var import_components60 = __toESM(require_components(), 1); -var import_element33 = __toESM(require_element(), 1); +var import_element34 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-sizes/font-size-preview.mjs var import_block_editor13 = __toESM(require_block_editor(), 1); @@ -15498,7 +15588,7 @@ var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/rename-font-size-dialog.mjs var import_components58 = __toESM(require_components(), 1); var import_i18n45 = __toESM(require_i18n(), 1); -var import_element32 = __toESM(require_element(), 1); +var import_element33 = __toESM(require_element(), 1); var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/size-control/index.mjs @@ -15580,10 +15670,10 @@ var { unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPI ); // routes/font-list/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='eb78745b9d']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='befb272134']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "eb78745b9d"); - style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); + style.setAttribute("data-wp-hash", "befb272134"); + style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); document.head.appendChild(style); } @@ -15594,7 +15684,7 @@ function FontLibraryPage() { const { records: collections = [] } = (0, import_core_data12.useEntityRecords)("root", "fontCollection", { _fields: "slug,name,description" }); - const [activeTab, setActiveTab] = (0, import_element35.useState)("installed-fonts"); + const [activeTab, setActiveTab] = (0, import_element36.useState)("installed-fonts"); const { base, user, setUser, isReady } = useGlobalStyles(); const canUserCreate = (0, import_data13.useSelect)((select) => { return select(import_core_data12.store).canUser("create", { @@ -15623,7 +15713,7 @@ function FontLibraryPage() { })) ); } - return /* @__PURE__ */ React.createElement(page_default, { title: (0, import_i18n47.__)("Fonts") }, /* @__PURE__ */ React.createElement( + return /* @__PURE__ */ React.createElement(page_default, { title: (0, import_i18n47.__)("Fonts"), className: "font-library-page" }, /* @__PURE__ */ React.createElement( Tabs3, { selectedTabId: activeTab, diff --git a/src/wp-includes/build/routes/font-list/content.min.asset.php b/src/wp-includes/build/routes/font-list/content.min.asset.php index f2d678e694dae..22411a1db585b 100644 --- a/src/wp-includes/build/routes/font-list/content.min.asset.php +++ b/src/wp-includes/build/routes/font-list/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '446d1b789bc80d307815'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '9baffe4ad18a1709fa57'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/font-list/content.min.js b/src/wp-includes/build/routes/font-list/content.min.js index 37ab9e260cb03..b570a1fa8d9b0 100644 --- a/src/wp-includes/build/routes/font-list/content.min.js +++ b/src/wp-includes/build/routes/font-list/content.min.js @@ -1,12 +1,12 @@ -var rf=Object.create;var sa=Object.defineProperty;var of=Object.getOwnPropertyDescriptor;var sf=Object.getOwnPropertyNames;var nf=Object.getPrototypeOf,af=Object.prototype.hasOwnProperty;var ce=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var lf=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of sf(e))!af.call(t,s)&&s!==r&&sa(t,s,{get:()=>e[s],enumerable:!(o=of(e,s))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?rf(nf(t)):{},lf(e||!t||!t.__esModule?sa(r,"default",{value:t,enumerable:!0}):r,t));var it=Ht((ly,na)=>{na.exports=window.wp.i18n});var X=Ht((uy,aa)=>{aa.exports=window.wp.components});var z=Ht((fy,ia)=>{ia.exports=window.ReactJSXRuntime});var vt=Ht((dy,ua)=>{ua.exports=window.wp.element});var Ar=Ht((hy,pa)=>{pa.exports=window.React});var Er=Ht((Yy,Ba)=>{Ba.exports=window.wp.primitives});var zs=Ht((lv,Va)=>{Va.exports=window.wp.privateApis});var mr=Ht((mv,Na)=>{Na.exports=window.wp.compose});var Wa=Ht((kv,Ha)=>{Ha.exports=window.wp.editor});var we=Ht((Ov,Ya)=>{Ya.exports=window.wp.coreData});var de=Ht((Tv,qa)=>{qa.exports=window.wp.data});var Ir=Ht((_v,Za)=>{Za.exports=window.wp.blocks});var ae=Ht((Pv,Xa)=>{Xa.exports=window.wp.blockEditor});var Ja=Ht((Bv,Ka)=>{Ka.exports=window.wp.styleEngine});var ri=Ht((qv,ei)=>{"use strict";ei.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!t(e[s],r[s]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;for(s of e.entries())if(!t(s[1],r.get(s[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(s of e.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(s=o;s--!==0;)if(e[s]!==r[s])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(a=Object.keys(e),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!t(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var ai=Ht((Xv,ni)=>{"use strict";var Mf=function(e){return Gf(e)&&!jf(e)};function Gf(t){return!!t&&typeof t=="object"}function jf(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Wf(t)}var Uf=typeof Symbol=="function"&&Symbol.for,Hf=Uf?Symbol.for("react.element"):60103;function Wf(t){return t.$$typeof===Hf}function Yf(t){return Array.isArray(t)?[]:{}}function io(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Br(Yf(t),t,e):t}function qf(t,e,r){return t.concat(e).map(function(o){return io(o,r)})}function Zf(t,e){if(!e.customMerge)return Br;var r=e.customMerge(t);return typeof r=="function"?r:Br}function Xf(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function oi(t){return Object.keys(t).concat(Xf(t))}function si(t,e){try{return e in t}catch{return!1}}function Kf(t,e){return si(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function Jf(t,e,r){var o={};return r.isMergeableObject(t)&&oi(t).forEach(function(s){o[s]=io(t[s],r)}),oi(e).forEach(function(s){Kf(t,s)||(si(t,s)&&r.isMergeableObject(e[s])?o[s]=Zf(s,r)(t[s],e[s],r):o[s]=io(e[s],r))}),o}function Br(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||qf,r.isMergeableObject=r.isMergeableObject||Mf,r.cloneUnlessOtherwiseSpecified=io;var o=Array.isArray(e),s=Array.isArray(t),a=o===s;return a?o?r.arrayMerge(t,e,r):Jf(t,e,r):io(e,r)}Br.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(o,s){return Br(o,s,r)},{})};var Qf=Br;ni.exports=Qf});var pn=Ht((ub,ol)=>{ol.exports=window.wp.keycodes});var ll=Ht((wb,il)=>{il.exports=window.wp.apiFetch});var Bu=Ht((UF,Lu)=>{Lu.exports=window.wp.date});function la(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e<s;e++)t[e]&&(r=la(t[e]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}function uf(){for(var t,e,r=0,o="",s=arguments.length;r<s;r++)(t=arguments[r])&&(e=la(t))&&(o&&(o+=" "),o+=e);return o}var be=uf;var fa=u(vt(),1),ca=u(z(),1),da=(0,fa.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...s},a)=>(0,ca.jsx)(o,{ref:a,className:be("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...s,children:t}));da.displayName="NavigableRegion";var ma=da;var ga=u(Ar(),1),ha={};function Os(t,e){let r=ga.useRef(ha);return r.current===ha&&(r.current=t(e)),r}function ff(t,e){return function(o,...s){let a=new URL(t);return a.searchParams.set("code",o.toString()),s.forEach(n=>a.searchParams.append("args[]",n)),`${e} error #${o}; visit ${a} for the full message.`}}var cf=ff("https://base-ui.com/production-error","Base UI"),ya=cf;var fr=u(Ar(),1);function Ts(t,e,r,o){let s=Os(ba).current;return df(s,t,e,r,o)&&wa(s,[t,e,r,o]),s.callback}function va(t){let e=Os(ba).current;return mf(e,t)&&wa(e,t),e.callback}function ba(){return{callback:null,cleanup:null,refs:[]}}function df(t,e,r,o,s){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==s}function mf(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function wa(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}t.cleanup=()=>{for(let s=0;s<e.length;s+=1){let a=e[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var Ca=u(Ar(),1);var Sa=u(Ar(),1),pf=parseInt(Sa.version,10);function xa(t){return pf>=t}function _s(t){if(!Ca.isValidElement(t))return null;let e=t,r=e.props;return(xa(19)?r?.ref:e.ref)??null}function to(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Fa(t,e){let r={};for(let o in t){let s=t[o];if(e?.hasOwnProperty(o)){let a=e[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function ka(t,e){return typeof t=="function"?t(e):t}function Oa(t,e){return typeof t=="function"?t(e):t}var Ps={};function ro(t,e,r,o,s){if(!r&&!o&&!s&&!t)return To(e);let a=To(t);return e&&(a=eo(a,e)),r&&(a=eo(a,r)),o&&(a=eo(a,o)),s&&(a=eo(a,s)),a}function Ta(t){if(t.length===0)return Ps;if(t.length===1)return To(t[0]);let e=To(t[0]);for(let r=1;r<t.length;r+=1)e=eo(e,t[r]);return e}function To(t){return As(t)?{...Pa(t,Ps)}:hf(t)}function eo(t,e){return As(e)?Pa(e,t):gf(t,e)}function hf(t){let e={...t};for(let r in e){let o=e[r];_a(r,o)&&(e[r]=Aa(o))}return e}function gf(t,e){if(!e)return t;for(let r in e){let o=e[r];switch(r){case"style":{t[r]=to(t.style,o);break}case"className":{t[r]=Es(t.className,o);break}default:_a(r,o)?t[r]=yf(t[r],o):t[r]=o}}return t}function _a(t,e){let r=t.charCodeAt(0),o=t.charCodeAt(1),s=t.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof e=="function"||typeof e>"u")}function As(t){return typeof t=="function"}function Pa(t,e){return As(t)?t(e):t??Ps}function yf(t,e){return e?t?r=>{if(Ra(r)){let s=r;Ea(s);let a=e(s);return s.baseUIHandlerPrevented||t?.(s),a}let o=e(r);return t?.(r),o}:Aa(e):t}function Aa(t){return t&&(e=>(Ra(e)&&Ea(e),t(e)))}function Ea(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Es(t,e){return e?t?e+" "+t:e:t}function Ra(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var vf=Object.freeze([]),ur=Object.freeze({});var bf="data-base-ui-swipe-ignore",wf="data-swipe-ignore",Ay=`[${bf}]`,Ey=`[${wf}]`;var Rs=u(Ar(),1);function Ia(t,e,r={}){let o=e.render,s=Sf(e,r);if(r.enabled===!1)return null;let a=r.state??ur;return Ff(t,o,s,a)}function Sf(t,e={}){let{className:r,style:o,render:s}=t,{state:a=ur,ref:n,props:l,stateAttributesMapping:h,enabled:f=!0}=e,c=f?ka(r,a):void 0,d=f?Oa(o,a):void 0,m=f?Fa(a,h):ur,g=f&&l?xf(l):void 0,y=f?to(m,g)??{}:ur;return typeof document<"u"&&(f?Array.isArray(n)?y.ref=va([y.ref,_s(s),...n]):y.ref=Ts(y.ref,_s(s),n):Ts(null,null)),f?(c!==void 0&&(y.className=Es(y.className,c)),d!==void 0&&(y.style=to(y.style,d)),y):ur}function xf(t){return Array.isArray(t)?Ta(t):ro(void 0,t)}var Cf=Symbol.for("react.lazy");function Ff(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let s=ro(r,e.props);s.ref=r.ref;let a=e;return a?.$$typeof===Cf&&(a=fr.Children.toArray(e)[0]),fr.cloneElement(a,s)}if(t&&typeof t=="string")return kf(t,r);throw new Error(ya(8))}function kf(t,e){return t==="button"?(0,Rs.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,Rs.createElement)("img",{alt:"",...e,key:e.key}):fr.createElement(t,e)}function La(t){return Ia(t.defaultTagName??"div",t,t)}var _o=u(vt(),1),oo=(0,_o.forwardRef)(({icon:t,size:e=24,...r},o)=>(0,_o.cloneElement)(t,{width:e,height:e,...r,ref:o}));var Po=u(Er(),1),Is=u(z(),1),cr=(0,Is.jsx)(Po.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Is.jsx)(Po.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Ao=u(Er(),1),Ls=u(z(),1),dr=(0,Ls.jsx)(Ao.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ls.jsx)(Ao.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Eo=u(Er(),1),Bs=u(z(),1),Vs=(0,Bs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bs.jsx)(Eo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Ro=u(Er(),1),Ds=u(z(),1),Io=(0,Ds.jsx)(Ro.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Ro.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var Lo=u(Er(),1),Ns=u(z(),1),Bo=(0,Ns.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ns.jsx)(Lo.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Da=u(vt(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","b51ff41489"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var Of={stack:"_19ce0419607e1896__stack"},Tf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Rr=(0,Da.forwardRef)(function({direction:e,gap:r,align:o,justify:s,wrap:a,render:n,...l},h){let f={gap:r&&Tf[r],alignItems:o,justifyContent:s,flexDirection:e,flexWrap:a};return La({render:n,ref:h,props:ro(l,{style:f,className:Of.stack})})});var za=u(X(),1),{Fill:Ma,Slot:Ga}=(0,za.createSlotFill)("SidebarToggle");var Re=u(z(),1);function ja({headingLevel:t=2,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:a,showSidebarToggle:n=!0}){let l=`h${t}`;return(0,Re.jsxs)(Rr,{direction:"column",className:"admin-ui-page__header",render:(0,Re.jsx)("header",{}),children:[(0,Re.jsxs)(Rr,{direction:"row",justify:"space-between",gap:"sm",children:[(0,Re.jsxs)(Rr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[n&&(0,Re.jsx)(Ga,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),o&&(0,Re.jsx)(l,{className:"admin-ui-page__header-title",children:o}),e,r]}),(0,Re.jsx)(Rr,{direction:"row",gap:"sm",style:{width:"auto",flexShrink:0},className:"admin-ui-page__header-actions",align:"center",children:a})]}),s&&(0,Re.jsx)("p",{className:"admin-ui-page__header-subtitle",children:s})]})}var so=u(z(),1);function Ua({headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,children:a,className:n,actions:l,ariaLabel:h,hasPadding:f=!1,showSidebarToggle:c=!0}){let d=be("admin-ui-page",n);return(0,so.jsxs)(ma,{className:d,ariaLabel:h??(typeof o=="string"?o:""),children:[(o||e||r||l)&&(0,so.jsx)(ja,{headingLevel:t,breadcrumbs:e,badges:r,title:o,subTitle:s,actions:l,showSidebarToggle:c}),f?(0,so.jsx)("div",{className:"admin-ui-page__content has-padding",children:a}):a]})}Ua.SidebarToggleFill=Ma;var Ms=Ua;var Xr=u(it()),Ku=u(X()),Ju=u(Wa()),xs=u(we()),Qu=u(de()),$u=u(vt());var qu=u(X(),1),Zu=u(Ir(),1),Jg=u(de(),1),Qg=u(ae(),1),Xn=u(vt(),1),$g=u(mr(),1);function Lr(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}var Se=(t,e,r)=>{let o=Array.isArray(e)?e:e.split("."),s=t;return o.forEach(a=>{s=s?.[a]}),s??r};var _f=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function Gs(t,e,r){let o=r?".blocks."+r:"",s=e?"."+e:"",a=`settings${o}${s}`,n=`settings${s}`;if(e)return Se(t,a)??Se(t,n);let l={};return _f.forEach(h=>{let f=Se(t,`settings${o}.${h}`)??Se(t,`settings.${h}`);f!==void 0&&(l=Lr(l,h.split("."),f))}),l}function js(t,e,r,o){let s=o?".blocks."+o:"",a=e?"."+e:"",n=`settings${s}${a}`;return Lr(t,n.split("."),r)}var Vf=u(Ja(),1);var Pf="1600px",Af="320px",Ef=1,Rf=.25,If=.75,Lf="14px";function Qa({minimumFontSize:t,maximumFontSize:e,fontSize:r,minimumViewportWidth:o=Af,maximumViewportWidth:s=Pf,scaleFactor:a=Ef,minimumFontSizeLimit:n}){if(n=Ie(n)?n:Lf,r){let b=Ie(r);if(!b?.unit||!b?.value)return null;let T=Ie(n,{coerceTo:b.unit});if(T?.value&&!t&&!e&&b?.value<=T?.value)return null;if(e||(e=`${b.value}${b.unit}`),!t){let Y=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(Y),Rf),If),D=no(b.value*I,3);T?.value&&D<T?.value?t=`${T.value}${T.unit}`:t=`${D}${b.unit}`}}let l=Ie(t),h=l?.unit||"rem",f=Ie(e,{coerceTo:h});if(!l||!f)return null;let c=Ie(t,{coerceTo:"rem"}),d=Ie(s,{coerceTo:h}),m=Ie(o,{coerceTo:h});if(!d||!m||!c)return null;let g=d.value-m.value;if(!g)return null;let y=no(m.value/100,3),_=no(y,3)+h,A=100*((f.value-l.value)/g),k=no((A||1)*a,3),x=`${c.value}${c.unit} + ((1vw - ${_}) * ${k})`;return`clamp(${t}, ${x}, ${e})`}function Ie(t,e={}){if(typeof t!="string"&&typeof t!="number")return null;isFinite(t)&&(t=`${t}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...e},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=t.toString().match(n);if(!l||l.length<3)return null;let[,h,f]=l,c=parseFloat(h);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:no(c,3),unit:f}:null}function no(t,e=3){let r=Math.pow(10,e);return Math.round(t*r)/r}function Us(t){let e=t?.fluid;return e===!0||e&&typeof e=="object"&&Object.keys(e).length>0}function Bf(t){let e=t?.typography??{},r=t?.layout,o=Ie(r?.wideSize)?r?.wideSize:null;return Us(e)&&o?{fluid:{maxViewportWidth:o,...typeof e.fluid=="object"?e.fluid:{}}}:{fluid:e?.fluid}}function $a(t,e){let{size:r}=t;if(!r||r==="0"||t?.fluid===!1||!Us(e?.typography)&&!Us(t))return r;let o=Bf(e)?.fluid??{},s=Qa({minimumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.min,maximumFontSize:typeof t?.fluid=="boolean"?void 0:t?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Df=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:t})=>`url( '#wp-duotone-${t}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(t,e)=>$a(t,e),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:t})=>t,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function ti(t,e,r=[],o="slug",s){let a=[e?Se(t,["blocks",e,...r]):void 0,Se(t,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let h of l){let f=n[h];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||ti(t,e,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Nf(t,e,r,[o,s]=[]){let a=Df.find(l=>l.cssVarInfix===o);if(!a||!t.settings)return r;let n=ti(t.settings,e,a.path,"slug",s);if(n){let{valueKey:l}=a,h=n[l];return Vo(t,e,h)}return r}function zf(t,e,r,o=[]){let s=(e?Se(t?.settings??{},["blocks",e,"custom",...o]):void 0)??Se(t?.settings??{},["custom",...o]);return s?Vo(t,e,s):r}function Vo(t,e,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=Se(t,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...h]=n;return l==="preset"?Nf(t,e,r,h):l==="custom"?zf(t,e,r,h):r}function Do(t,e,r,o=!0){let s=e?"."+e:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!t)return;let n=Se(t,a);return o?Vo(t,r,n):n}function Hs(t,e,r,o){let s=e?"."+e:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Lr(t,a.split("."),r)}var Ws=u(ri(),1);function ao(t,e){return typeof t!="object"||typeof e!="object"?t===e:(0,Ws.default)(t?.styles,e?.styles)&&(0,Ws.default)(t?.settings,e?.settings)}var ui=u(ai(),1);function ii(t){return Object.prototype.toString.call(t)==="[object Object]"}function li(t){var e,r;return ii(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(ii(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function pr(t,e){return(0,ui.default)(t,e,{isMergeableObject:li,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var $f={grad:.9,turn:360,rad:360/(2*Math.PI)},Ue=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Zt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},ke=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},yi=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},fi=function(t){return{r:ke(t.r,0,255),g:ke(t.g,0,255),b:ke(t.b,0,255),a:ke(t.a)}},Ys=function(t){return{r:Zt(t.r),g:Zt(t.g),b:Zt(t.b),a:Zt(t.a,3)}},tc=/^#([0-9a-f]{3,8})$/i,No=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},vi=function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=Math.max(e,r,o),n=a-Math.min(e,r,o),l=n?a===e?(r-o)/n:a===r?2+(o-e)/n:4+(e-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},bi=function(t){var e=t.h,r=t.s,o=t.v,s=t.a;e=e/360*6,r/=100,o/=100;var a=Math.floor(e),n=o*(1-r),l=o*(1-(e-a)*r),h=o*(1-(1-e+a)*r),f=a%6;return{r:255*[o,l,n,n,h,o][f],g:255*[h,o,o,l,n,n][f],b:255*[n,n,h,o,o,l][f],a:s}},ci=function(t){return{h:yi(t.h),s:ke(t.s,0,100),l:ke(t.l,0,100),a:ke(t.a)}},di=function(t){return{h:Zt(t.h),s:Zt(t.s),l:Zt(t.l),a:Zt(t.a,3)}},mi=function(t){return bi((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},lo=function(t){return{h:(e=vi(t)).h,s:(s=(200-(r=e.s))*(o=e.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,r,o,s},ec=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,oc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,sc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Xs={string:[[function(t){var e=tc.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Zt(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Zt(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=oc.exec(t)||sc.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:fi({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=ec.exec(t)||rc.exec(t);if(!e)return null;var r,o,s=ci({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*($f[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return mi(s)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,s=t.a,a=s===void 0?1:s;return Ue(e)&&Ue(r)&&Ue(o)?fi({r:Number(e),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=ci({h:Number(e),s:Number(r),l:Number(o),a:Number(a)});return mi(n)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,s=t.a,a=s===void 0?1:s;if(!Ue(e)||!Ue(r)||!Ue(o))return null;var n=(function(l){return{h:yi(l.h),s:ke(l.s,0,100),v:ke(l.v,0,100),a:ke(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(a)});return bi(n)},"hsv"]]},pi=function(t,e){for(var r=0;r<e.length;r++){var o=e[r][0](t);if(o)return[o,e[r][1]]}return[null,void 0]},nc=function(t){return typeof t=="string"?pi(t.trim(),Xs.string):typeof t=="object"&&t!==null?pi(t,Xs.object):[null,void 0]};var qs=function(t,e){var r=lo(t);return{h:r.h,s:ke(r.s+100*e,0,100),l:r.l,a:r.a}},Zs=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},hi=function(t,e){var r=lo(t);return{h:r.h,s:r.s,l:ke(r.l+100*e,0,100),a:r.a}},Ks=(function(){function t(e){this.parsed=nc(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return Zt(Zs(this.rgba),2)},t.prototype.isDark=function(){return Zs(this.rgba)<.5},t.prototype.isLight=function(){return Zs(this.rgba)>=.5},t.prototype.toHex=function(){return e=Ys(this.rgba),r=e.r,o=e.g,s=e.b,n=(a=e.a)<1?No(Zt(255*a)):"","#"+No(r)+No(o)+No(s)+n;var e,r,o,s,a,n},t.prototype.toRgb=function(){return Ys(this.rgba)},t.prototype.toRgbString=function(){return e=Ys(this.rgba),r=e.r,o=e.g,s=e.b,(a=e.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var e,r,o,s,a},t.prototype.toHsl=function(){return di(lo(this.rgba))},t.prototype.toHslString=function(){return e=di(lo(this.rgba)),r=e.h,o=e.s,s=e.l,(a=e.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var e,r,o,s,a},t.prototype.toHsv=function(){return e=vi(this.rgba),{h:Zt(e.h),s:Zt(e.s),v:Zt(e.v),a:Zt(e.a,3)};var e},t.prototype.invert=function(){return Le({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),Le(qs(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),Le(qs(this.rgba,-e))},t.prototype.grayscale=function(){return Le(qs(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),Le(hi(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),Le(hi(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?Le({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Zt(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=lo(this.rgba);return typeof e=="number"?Le({h:e,s:r.s,l:r.l,a:r.a}):Zt(r.h)},t.prototype.isEqual=function(e){return this.toHex()===Le(e).toHex()},t})(),Le=function(t){return t instanceof Ks?t:new Ks(t)},gi=[],wi=function(t){t.forEach(function(e){gi.indexOf(e)<0&&(e(Ks,Xs),gi.push(e))})};var Js=u(vt(),1);var Si=u(vt(),1),Kt=(0,Si.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var xi=u(z(),1);function uo({children:t,value:e,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,Js.useMemo)(()=>pr(r,e),[r,e]),n=(0,Js.useMemo)(()=>({user:e,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[e,r,a,o,s]);return(0,xi.jsx)(Kt.Provider,{value:n,children:t})}var He=u(X(),1),Gi=u(it(),1);var bc=u(de(),1),wc=u(we(),1);var Ci=u(z(),1);function Qs({className:t,...e}){return(0,Ci.jsx)(oo,{className:be(t,"global-styles-ui-icon-with-current-color"),...e})}var Je=u(X(),1);var hr=u(z(),1);function ac({icon:t,children:e,...r}){return(0,hr.jsxs)(Je.__experimentalItem,{...r,children:[t&&(0,hr.jsxs)(Je.__experimentalHStack,{justify:"flex-start",children:[(0,hr.jsx)(Qs,{icon:t,size:24}),(0,hr.jsx)(Je.FlexItem,{children:e})]}),!t&&e]})}function Be(t){return(0,hr.jsx)(Je.Navigator.Button,{as:ac,...t})}var uc=u(X(),1);var fc=u(it(),1),Ai=u(ae(),1);var $s=function(t){var e=t/255;return e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},tn=function(t){return .2126*$s(t.r)+.7152*$s(t.g)+.0722*$s(t.b)};function Fi(t){t.prototype.luminance=function(){return e=tn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*e)/o+0;var e,r,o},t.prototype.contrast=function(e){e===void 0&&(e="#FFF");var r,o,s,a,n,l,h,f=e instanceof t?e:new t(e);return a=this.rgba,n=f.toRgb(),l=tn(a),h=tn(n),r=l>h?(l+.05)/(h+.05):(h+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},t.prototype.isReadable=function(e,r){return e===void 0&&(e="#FFF"),r===void 0&&(r={}),this.contrast(e)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Ae=u(vt(),1),Ti=u(de(),1),_i=u(we(),1),rn=u(it(),1);var Wt=u(it(),1),v1={link:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus-visible")},{value:":active",label:(0,Wt.__)("Active")}],button:[{value:":link",label:(0,Wt.__)("Link")},{value:":any-link",label:(0,Wt.__)("Any Link")},{value:":visited",label:(0,Wt.__)("Visited")},{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus-visible")},{value:":active",label:(0,Wt.__)("Active")}]},b1={"core/button":[{value:":hover",label:(0,Wt.__)("Hover")},{value:":focus",label:(0,Wt.__)("Focus")},{value:":focus-visible",label:(0,Wt.__)("Focus-visible")},{value:":active",label:(0,Wt.__)("Active")}]};function en(t,e){if(!e?.length||typeof t!="object"||!t||!Object.keys(t).length)return t;for(let r in t)e.includes(r)?delete t[r]:typeof t[r]=="object"&&en(t[r],e);return t}var zo=(t,e)=>{if(!t||!e?.length)return{};let r={};return Object.keys(t).forEach(o=>{if(e.includes(o))r[o]=t[o];else if(typeof t[o]=="object"){let s=zo(t[o],e);Object.keys(s).length&&(r[o]=s)}}),r};function fo(t,e){let r=zo(structuredClone(t),e);return ao(r,t)}function ki(t,e){if(!Array.isArray(t)||!e)return null;let o=e.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return t.find(s=>s.slug===o)}function Oi(t){let e=t?.settings?.typography?.fontFamilies?.theme,r=t?.settings?.typography?.fontFamilies?.custom,o=[];e&&r?o=[...e,...r]:e?o=e:r&&(o=r);let s=t?.styles?.typography?.fontFamily,a=ki(o,s),n=t?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=ki(o,t?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}wi([Fi]);function kt(t,e,r="merged",o=!0,s){let{user:a,base:n,merged:l,onChange:h}=(0,Ae.useContext)(Kt),f=l;r==="base"?f=n:r==="user"&&(f=a);let c=(0,Ae.useMemo)(()=>{let m=Do(f,t,e,o);return s?m?.[s]??{}:m},[f,t,e,o,s]),d=(0,Ae.useCallback)(m=>{let g=m;s&&(g={...Do(a,t,e,!1),[s]:m});let y=Hs(a,t,g,e);h(y)},[a,h,t,e,s]);return[c,d]}function _t(t,e,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Ae.useContext)(Kt),l=a;r==="base"?l=s:r==="user"&&(l=o);let h=(0,Ae.useMemo)(()=>Gs(l,t,e),[l,t,e]),f=(0,Ae.useCallback)(c=>{let d=js(o,t,c,e);n(d)},[o,n,t,e]);return[h,f]}var ic=[];function lc({title:t,settings:e,styles:r}){return t===(0,rn.__)("Default")||Object.keys(e||{}).length>0||Object.keys(r||{}).length>0}function Mo(t=[]){let{variationsFromTheme:e}=(0,Ti.useSelect)(o=>({variationsFromTheme:o(_i.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||ic}),[]),{user:r}=(0,Ae.useContext)(Kt);return(0,Ae.useMemo)(()=>{let o=structuredClone(r),s=en(o,t);s.title=(0,rn.__)("Default");let a=e.filter(l=>fo(l,t)).map(l=>pr(s,l)),n=[s,...a];return n?.length?n.filter(lc):[]},[t,r,e])}var Pi=u(zs(),1),{lock:T1,unlock:yt}=(0,Pi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var on=u(z(),1),{useHasDimensionsPanel:R1,useHasTypographyPanel:I1,useHasColorPanel:L1,useSettingsForBlockElement:B1,useHasBackgroundPanel:V1}=yt(Ai.privateApis);var Ve=u(X(),1);function Vr(){let[t="black"]=kt("color.text"),[e="white"]=kt("color.background"),[r=t]=kt("elements.h1.color.text"),[o=r]=kt("elements.link.color.text"),[s=o]=kt("elements.button.color.background"),[a]=_t("color.palette.core")||[],[n]=_t("color.palette.theme")||[],[l]=_t("color.palette.custom")||[],h=(n??[]).concat(l??[]).concat(a??[]),f=h.filter(({color:m})=>m===t),c=h.filter(({color:m})=>m===s),d=f.concat(c).concat(h).filter(({color:m})=>m!==e).slice(0,2);return{paletteColors:h,highlightedColors:d}}var Ii=u(vt(),1),Li=u(X(),1),nn=u(it(),1);function cc(t,e){return e.length===0?null:(e.sort((r,o)=>Math.abs(t-r)-Math.abs(t-o)),e[0])}function dc(t){let e=[];return t.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)e.push(n)}else o.length===1&&e.push(parseInt(o[0]))}),e}function Ei(t){let e=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=t.trim(),o=s=>(s=s.trim(),s.match(e)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function sn(t){if(!t)return"";let e=t.trim();return e.includes(",")&&(e=(e.split(",").find(r=>r.trim()!=="")??"").trim()),e=e.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(e=`"${e}"`),e}function Dr(t){let e={fontFamily:Ei(t.fontFamily)};if(!("fontFace"in t)||!Array.isArray(t.fontFace))return e.fontWeight="400",e.fontStyle="normal",e;if(t.fontFace){let r=t.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){e.fontStyle="normal";let o=dc(r),s=cc(400,o);e.fontWeight=String(s)||"400"}else e.fontStyle=t.fontFace.length&&t.fontFace[0].fontStyle||"normal",e.fontWeight=t.fontFace.length&&String(t.fontFace[0].fontWeight)||"400"}return e}function Ri(t){return{fontFamily:Ei(t.fontFamily),fontStyle:t.fontStyle||"normal",fontWeight:t.fontWeight||"400"}}var co=u(z(),1);function Go({fontSize:t,variation:e}){let{base:r}=(0,Ii.useContext)(Kt),o=r;e&&(o={...r,...e});let[s]=kt("color.text"),[a,n]=Oi(o),l=a?Dr(a):{},h=n?Dr(n):{};return s&&(l.color=s,h.color=s),t&&(l.fontSize=t,h.fontSize=t),(0,co.jsxs)(Li.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,co.jsx)("span",{style:h,children:(0,nn._x)("A","Uppercase letter A")}),(0,co.jsx)("span",{style:l,children:(0,nn._x)("a","Lowercase letter A")})]})}var Bi=u(X(),1);var Vi=u(z(),1);function Di({normalizedColorSwatchSize:t,ratio:e}){let{highlightedColors:r}=Vr(),o=t*e;return r.map(({slug:s,color:a},n)=>(0,Vi.jsx)(Bi.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var Mi=u(X(),1),Nr=u(mr(),1),gr=u(vt(),1);var Qe=u(z(),1),Ni=248,zi=152,mc={leading:!0,trailing:!0};function pc({children:t,label:e,isFocused:r,withHoverView:o}){let[s="white"]=kt("color.background"),[a]=kt("color.gradient"),n=(0,Nr.useReducedMotion)(),[l,h]=(0,gr.useState)(!1),[f,{width:c}]=(0,Nr.useResizeObserver)(),[d,m]=(0,gr.useState)(c),[g,y]=(0,gr.useState)(),_=(0,Nr.useThrottle)(m,250,mc);(0,gr.useLayoutEffect)(()=>{c&&_(c)},[c,_]),(0,gr.useLayoutEffect)(()=>{let b=d?d/Ni:1,T=b-(g||0);(Math.abs(T)>.1||!g)&&y(b)},[d,g]);let A=c?c/Ni:1,k=g||A;return(0,Qe.jsxs)(Qe.Fragment,{children:[(0,Qe.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qe.jsx)("div",{className:"global-styles-ui-preview__wrapper",style:{height:zi*k},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),tabIndex:-1,children:(0,Qe.jsx)(Mi.__unstableMotion.div,{style:{height:zi*k,width:"100%",background:a??s,cursor:o?"pointer":void 0},initial:"start",animate:(l||r)&&!n&&e?"hover":"start",children:[].concat(t).map((b,T)=>b({ratio:k,key:T}))})})]})}var zr=pc;var me=u(z(),1),hc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},gc={hover:{opacity:1},start:{opacity:.5}},yc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function vc({label:t,isFocused:e,withHoverView:r,variation:o}){let[s]=kt("typography.fontWeight"),[a="serif"]=kt("typography.fontFamily"),[n=a]=kt("elements.h1.typography.fontFamily"),[l=s]=kt("elements.h1.typography.fontWeight"),[h="black"]=kt("color.text"),[f=h]=kt("elements.h1.color.text"),{paletteColors:c}=Vr();return(0,me.jsxs)(zr,{label:t,isFocused:e,withHoverView:r,children:[({ratio:d,key:m})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:hc,style:{height:"100%",overflow:"hidden"},children:(0,me.jsxs)(Ve.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,me.jsx)(Go,{fontSize:65*d,variation:o}),(0,me.jsx)(Ve.__experimentalVStack,{spacing:4*d,children:(0,me.jsx)(Di,{normalizedColorSwatchSize:32,ratio:d})})]})},m),({key:d})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:r?gc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,me.jsx)(Ve.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:m},g)=>(0,me.jsx)("div",{style:{height:"100%",background:m,flexGrow:1}},g))})},d),({ratio:d,key:m})=>(0,me.jsx)(Ve.__unstableMotion.div,{variants:yc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,me.jsx)(Ve.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:t&&(0,me.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:t})})},m)]})}var an=vc;var ji=u(z(),1);var un=u(Ir(),1),Mr=u(it(),1),vr=u(X(),1),fn=u(de(),1),$e=u(vt(),1),jo=u(ae(),1),Zi=u(mr(),1);import{speak as Fc}from"@wordpress/a11y";var Ui=u(Ir(),1),Hi=u(de(),1),Sc=u(X(),1);var xc=u(z(),1);function Cc(t,e){return t?.filter(r=>r.source==="block"||e.includes(r.name))||[]}function ln(t){let e=(0,Hi.useSelect)(s=>{let{getBlockStyles:a}=s(Ui.store);return a(t)},[t]),[r]=kt("variations",t),o=Object.keys(r??{});return Cc(e,o)}var yr=u(X(),1),Wi=u(it(),1);var Yi=u(ae(),1);var qi=u(z(),1),{StateControl:d0}=yt(Yi.privateApis);var De=u(z(),1),{useHasDimensionsPanel:kc,useHasTypographyPanel:Oc,useHasBorderPanel:Tc,useSettingsForBlockElement:_c,useHasColorPanel:Pc}=yt(jo.privateApis);function Ac(){let t=(0,fn.useSelect)(s=>s(un.store).getBlockTypes(),[]),e=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=t.reduce(e,{core:[],noncore:[]});return[...r,...o]}function Ec(t){let[e]=_t("",t),r=_c(e,t),o=Oc(r),s=Pc(r),a=Tc(r),n=kc(r),l=a||n,h=!!ln(t)?.length;return o||s||l||h}function Rc({block:t}){return Ec(t.name)?(0,De.jsx)(Be,{path:"/blocks/"+encodeURIComponent(t.name),children:(0,De.jsxs)(vr.__experimentalHStack,{justify:"flex-start",children:[(0,De.jsx)(jo.BlockIcon,{icon:t.icon}),(0,De.jsx)(vr.FlexItem,{children:t.title})]})}):null}function Ic({filterValue:t}){let e=Ac(),r=(0,Zi.useDebounce)(Fc,500),{isMatchingSearchTerm:o}=(0,fn.useSelect)(un.store),s=t?e.filter(n=>o(n,t)):e,a=(0,$e.useRef)(null);return(0,$e.useEffect)(()=>{if(!t)return;let n=a.current?.childElementCount||0,l=(0,Mr.sprintf)((0,Mr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[t,r]),(0,De.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,De.jsx)(vr.__experimentalText,{align:"center",as:"p",children:(0,Mr.__)("No blocks found.")}):s.map(n=>(0,De.jsx)(Rc,{block:n},"menu-itemblock-"+n.name))})}var w0=(0,$e.memo)(Ic);var Nc=u(Ir(),1),Qi=u(ae(),1),cn=u(vt(),1),zc=u(de(),1),Mc=u(we(),1),dn=u(X(),1),$i=u(it(),1);var Lc=u(ae(),1),Xi=u(Ir(),1),Bc=u(X(),1),Vc=u(vt(),1);var Dc=u(z(),1);var Ki=u(X(),1),Ji=u(z(),1);function xe({children:t,level:e=2}){return(0,Ji.jsx)(Ki.__experimentalHeading,{className:"global-styles-ui-subtitle",level:e,children:t})}var mn=u(z(),1);var{useHasDimensionsPanel:D0,useHasTypographyPanel:N0,useHasBorderPanel:z0,useSettingsForBlockElement:M0,useHasColorPanel:G0,useHasFiltersPanel:j0,useHasImageSettingsPanel:U0,useHasBackgroundPanel:H0,BackgroundPanel:W0,BorderPanel:Y0,ColorPanel:q0,TypographyPanel:Z0,DimensionsPanel:X0,FiltersPanel:K0,ImageSettingsPanel:J0,AdvancedPanel:Q0}=yt(Qi.privateApis);var $h=u(it(),1),tg=u(X(),1),eg=u(vt(),1);var Gc=u(X(),1);var jc=u(z(),1);var Uc=u(it(),1),Uo=u(X(),1);var tl=u(z(),1);var Yo=u(X(),1);var el=u(X(),1);var Ho=u(z(),1),Hc=({variation:t,isFocused:e,withHoverView:r})=>(0,Ho.jsx)(zr,{label:t.title,isFocused:e,withHoverView:r,children:({ratio:o,key:s})=>(0,Ho.jsx)(el.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Ho.jsx)(Go,{variation:t,fontSize:85*o})},s)}),rl=Hc;var sl=u(X(),1),br=u(vt(),1),nl=u(pn(),1),Wo=u(it(),1);var mo=u(z(),1);function Gr({variation:t,children:e,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,br.useState)(!1),{base:l,user:h,onChange:f}=(0,br.useContext)(Kt),c=(0,br.useMemo)(()=>{let A=pr(l,t);return o&&(A=zo(A,o)),{user:t,base:l,merged:A,onChange:()=>{}}},[t,l,o]),d=()=>f(t),m=A=>{A.keyCode===nl.ENTER&&(A.preventDefault(),d())},g=(0,br.useMemo)(()=>ao(h,t),[h,t]),y=t?.title;t?.description&&(y=(0,Wo.sprintf)((0,Wo._x)("%1$s (%2$s)","variation label"),t?.title,t?.description));let _=(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:d,onKeyDown:m,tabIndex:0,"aria-label":y,"aria-current":g,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,mo.jsx)("div",{className:be("global-styles-ui-variations_item-preview",{"is-pill":r}),children:e(a)})});return(0,mo.jsx)(Kt.Provider,{value:c,children:s?(0,mo.jsx)(sl.Tooltip,{text:t?.title,children:_}):_})}var wr=u(z(),1),al=["typography"];function qo({title:t,gap:e=2}){let r=Mo(al);return r?.length<=1?null:(0,wr.jsxs)(Yo.__experimentalVStack,{spacing:3,children:[t&&(0,wr.jsx)(xe,{level:3,children:t}),(0,wr.jsx)(Yo.__experimentalGrid,{columns:3,gap:e,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,wr.jsx)(Gr,{variation:o,properties:al,showTooltip:!0,children:()=>(0,wr.jsx)(rl,{variation:o})},s))})]})}var Jh=u(it(),1),wo=u(X(),1);var Qh=u(vt(),1);var We=u(vt(),1),or=u(de(),1),rr=u(we(),1),vn=u(it(),1);var hn=u(ll(),1),ul=u(we(),1),fl="/wp/v2/font-families";function cl(t){let{receiveEntityRecords:e}=t.dispatch(ul.store);e("postType","wp_font_family",[],void 0,!0)}async function dl(t,e){let o=await(0,hn.default)({path:fl,method:"POST",body:t});return cl(e),{id:o.id,...o.font_family_settings,fontFace:[]}}async function ml(t,e,r){let o={path:`${fl}/${t}/font-faces`,method:"POST",body:e},s=await(0,hn.default)(o);return cl(r),{id:s.id,...s.font_face_settings}}var gl=u(X(),1);var Oe=u(it(),1),gn=["otf","ttf","woff","woff2"],pl={100:(0,Oe._x)("Thin","font weight"),200:(0,Oe._x)("Extra-light","font weight"),300:(0,Oe._x)("Light","font weight"),400:(0,Oe._x)("Normal","font weight"),500:(0,Oe._x)("Medium","font weight"),600:(0,Oe._x)("Semi-bold","font weight"),700:(0,Oe._x)("Bold","font weight"),800:(0,Oe._x)("Extra-bold","font weight"),900:(0,Oe._x)("Black","font weight")},hl={normal:(0,Oe._x)("Normal","font style"),italic:(0,Oe._x)("Italic","font style")};var{File:yl}=window,{kebabCase:Wc}=yt(gl.privateApis);function tr(t,e={}){return!t.name&&(t.fontFamily||t.slug)&&(t.name=t.fontFamily||t.slug),{...t,...e}}function Yc(t){return typeof t!="string"?!1:t!==decodeURIComponent(t)}function Zo(t){let e=pl[t.fontWeight??""]||t.fontWeight,r=t.fontStyle==="normal"?"":hl[t.fontStyle??""]||t.fontStyle;return`${e} ${r}`}function qc(t=[],e=[]){let r=new Map;for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function vl(t=[],e=[]){let r=new Map;for(let o of t)r.set(o.slug,{...o});for(let o of e)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=qc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function er(t,e,r="all"){let o;if(typeof e=="string")o=`url(${e})`;else if(e instanceof yl)o=await e.arrayBuffer();else return;let a=await new window.FontFace(sn(t.fontFamily),o,{style:t.fontStyle,weight:String(t.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function po(t,e="all"){let r=o=>{o.forEach(s=>{s.family===sn(t?.fontFamily)&&s.weight===t?.fontWeight&&s.style===t?.fontStyle&&o.delete(s)})};if((e==="document"||e==="all")&&r(document.fonts),e==="iframe"||e==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function jr(t){if(!t)return;let e;if(Array.isArray(t)?e=t[0]:e=t,!e.startsWith("file:."))return Yc(e)||(e=encodeURI(e)),e}function bl(t){let e=new FormData,{fontFace:r,category:o,...s}=t,a={...s,slug:Wc(t.slug)};return e.append("font_family_settings",JSON.stringify(a)),e}function wl(t){return(t?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((h,f)=>{let c=`file-${o}-${f}`;a.append(c,h,h.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function Sl(t,e,r){let o=[];for(let a of e)try{let n=await ml(t,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:e[n],message:a.reason.message})}),s}async function xl(t){t=Array.isArray(t)?t:[t];let e=await Promise.all(t.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new yl([o],s,{type:o.type})})));return e.length===1?e[0]:e}function yn(t,e){return e.findIndex(r=>r.fontWeight===t.fontWeight&&r.fontStyle===t.fontStyle)!==-1}function Cl(t,e,r){e=Array.isArray(e)?[...e]:[e],t=Array.isArray(t)?[...t]:{...t};let o=e.pop(),s=t;for(let a of e){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,t}function Xo(t,e,r=[]){let o=h=>h.slug===t.slug,s=h=>h.find(o),a=h=>h?r.filter(f=>!o(f)):[...r,t],n=h=>{let f=d=>d.fontWeight===e.fontWeight&&d.fontStyle===e.fontStyle;if(!h)return[...r,{...t,fontFace:[e]}];let c=h.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,e],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return e?n(l):a(l)}var Fl=u(z(),1),ie=(0,We.createContext)({});ie.displayName="FontLibraryContext";function Zc({children:t}){let e=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(S=>{let{__experimentalGetCurrentGlobalStylesId:R}=S(rr.store);return{globalStylesId:R()}},[]),a=(0,rr.useEntityRecord)("root","globalStyles",s),[n,l]=(0,We.useState)(!1),{records:h=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(h||[]).map(S=>({id:S.id,...S.font_family_settings||{},fontFace:S?._embedded?.font_faces?.map(R=>R.font_face_settings)||[]}))||[],[d,m]=_t("typography.fontFamilies"),g=async S=>{if(!a.record)return;let R=a.record,et=Cl(R??{},["settings","typography","fontFamilies"],S);await r("root","globalStyles",et)},[y,_]=(0,We.useState)(""),[A,k]=(0,We.useState)(void 0),x=d?.theme?d.theme.map(S=>tr(S,{source:"theme"})).sort((S,R)=>S.name.localeCompare(R.name)):[],b=d?.custom?d.custom.map(S=>tr(S,{source:"custom"})).sort((S,R)=>S.name.localeCompare(R.name)):[],T=c?c.map(S=>tr(S,{source:"custom"})).sort((S,R)=>S.name.localeCompare(R.name)):[];(0,We.useEffect)(()=>{y||k(void 0)},[y]);let Y=S=>{if(!S){k(void 0);return}let et=(S.source==="theme"?x:T).find(ct=>ct.slug===S.slug);k({...et||S,source:S.source})},[I]=(0,We.useState)(new Set),D=S=>S.reduce((et,ct)=>{let at=ct?.fontFace&&ct.fontFace?.length>0?ct?.fontFace.map(Ct=>`${Ct.fontStyle??""}${Ct.fontWeight??""}`):["normal400"];return et[ct.slug]=at,et},{}),H=S=>D(S==="theme"?x:b),$=(S,R,et,ct)=>!R&&!et?!!H(ct)[S]:!!H(ct)[S]?.includes((R??"")+(et??"")),bt=(S,R)=>H(R)[S]||[];async function W(S){l(!0);try{let R=[],et=[];for(let at of S){let Ct=!1,Yt=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:at.slug,per_page:1,_embed:!0}),Ot=Yt&&Yt.length>0?Yt[0]:null,J=Ot?{id:Ot.id,...Ot.font_family_settings,fontFace:(Ot?._embedded?.font_faces??[]).map(zt=>zt.font_face_settings)||[]}:null;J||(Ct=!0,J=await dl(bl(at),e));let xt=J.fontFace&&at.fontFace?J.fontFace.filter(zt=>zt&&at.fontFace&&yn(zt,at.fontFace)):[];J.fontFace&&at.fontFace&&(at.fontFace=at.fontFace.filter(zt=>!yn(zt,J.fontFace)));let At=[],Ce=[];if(at?.fontFace?.length??!1){let zt=await Sl(J.id,wl(at),e);At=zt?.successes,Ce=zt?.errors}(At?.length>0||xt?.length>0)&&(J.fontFace=[...At],R.push(J)),J&&!at?.fontFace?.length&&R.push(J),Ct&&(at?.fontFace?.length??0)>0&&At?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),et=et.concat(Ce)}let ct=et.reduce((at,Ct)=>at.includes(Ct.message)?at:[...at,Ct.message],[]);if(R.length>0){let at=lt(R);await g(at)}if(ct.length>0){let at=new Error((0,vn.__)("There was an error installing fonts."));throw at.installationErrors=ct,at}}finally{l(!1)}}async function v(S){if(!S?.id)throw new Error((0,vn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",S.id,{force:!0});let R=L(S);return await g(R),{deleted:!0}}catch(R){throw console.error("There was an error uninstalling the font family:",R),R}}let L=S=>{let et=(d?.[S.source??""]??[]).filter(at=>at.slug!==S.slug),ct={...d,[S.source??""]:et};return m(ct),S.fontFace&&S.fontFace.forEach(at=>{po(at,"all")}),ct},lt=S=>{let R=ot(S),et={...d,custom:vl(d?.custom,R)};return m(et),K(R),et},ot=S=>S.map(({id:R,fontFace:et,...ct})=>({...ct,...et&&et.length>0?{fontFace:et.map(({id:at,...Ct})=>Ct)}:{}})),K=S=>{S.forEach(R=>{R.fontFace&&R.fontFace.forEach(et=>{let ct=jr(et?.src??"");ct&&er(et,ct,"all")})})},gt=(S,R)=>{let et=d?.[S.source??""]??[],ct=Xo(S,R,et);m({...d,[S.source??""]:ct});let at=$(S.slug,R?.fontStyle??"",R?.fontWeight??"",S.source??"custom");if(R&&at)po(R,"all");else{let Ct=jr(R?.src??"");R&&Ct&&er(R,Ct,"all")}},E=async S=>{if(!S.src)return;let R=jr(S.src);!R||I.has(R)||(er(S,R,"document"),I.add(R))};return(0,Fl.jsx)(ie.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:Y,fontFamilies:d??{},baseCustomFonts:T,isFontActivated:$,getFontFacesActivated:bt,loadFontFaceAsset:E,installFonts:W,uninstallFontFamily:v,toggleActivateFont:gt,getAvailableFontsOutline:D,modalTabOpen:y,setModalTabOpen:_,saveFontFamilies:g,isResolvingLibrary:f,isInstalling:n},children:t})}var Ko=Zc;var cs=u(it(),1),Cn=u(X(),1),au=u(we(),1),Xh=u(de(),1);var ht=u(X(),1),go=u(we(),1),bn=u(de(),1),xr=u(vt(),1),Rt=u(it(),1);var Hr=u(it(),1),Te=u(X(),1);var kl=u(X(),1),Ne=u(vt(),1);var Jo=u(z(),1);function Xc(t){if(t.preview)return t.preview;if(t.src)return Array.isArray(t.src)?t.src[0]:t.src}function Kc(t){return"fontStyle"in t&&t.fontStyle||"fontWeight"in t&&t.fontWeight?t:"fontFace"in t&&t.fontFace&&t.fontFace.length?t.fontFace.find(e=>e.fontStyle==="normal"&&e.fontWeight==="400")||t.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:t.fontFamily}}function Jc({font:t,text:e}){let r=(0,Ne.useRef)(null),o=Kc(t),s=Dr(t);e=e||("name"in t?t.name:"");let a=t.preview,[n,l]=(0,Ne.useState)(!1),[h,f]=(0,Ne.useState)(!1),{loadFontFaceAsset:c}=(0,Ne.useContext)(ie),d=a??Xc(o),m=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Ri(o),y={fontSize:"18px",lineHeight:1,opacity:h?"1":"0",...s,...g};return(0,Ne.useEffect)(()=>{let _=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&_.observe(r.current),()=>_.disconnect()},[r]),(0,Ne.useEffect)(()=>{(async()=>n&&(!m&&o.src&&await c(o),f(!0)))()},[o,n,c,m]),(0,Jo.jsx)("div",{ref:r,children:m?(0,Jo.jsx)("img",{src:d,loading:"lazy",alt:e,className:"font-library__font-variant_demo-image"}):(0,Jo.jsx)(kl.__experimentalText,{style:y,className:"font-library__font-variant_demo-text",children:e})})}var Ur=Jc;var ze=u(z(),1);function Qc({font:t,onClick:e,variantsText:r,navigatorPath:o}){let s=t.fontFace?.length||1,a={cursor:e?"pointer":"default"},n=(0,Te.useNavigator)();return(0,ze.jsx)(Te.Button,{__next40pxDefaultSize:!0,onClick:()=>{e(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,ze.jsxs)(Te.Flex,{justify:"space-between",wrap:!1,children:[(0,ze.jsx)(Ur,{font:t}),(0,ze.jsxs)(Te.Flex,{justify:"flex-end",children:[(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(Te.__experimentalText,{className:"font-library__font-card__count",children:r||(0,Hr.sprintf)((0,Hr._n)("%d variant","%d variants",s),s)})}),(0,ze.jsx)(Te.FlexItem,{children:(0,ze.jsx)(oo,{icon:(0,Hr.isRTL)()?cr:dr})})]})]})})}var ho=Qc;var Qo=u(vt(),1),$o=u(X(),1);var Sr=u(z(),1);function $c({face:t,font:e}){let{isFontActivated:r,toggleActivateFont:o}=(0,Qo.useContext)(ie),s=(e?.fontFace?.length??0)>0?r(e.slug,t.fontStyle,t.fontWeight,e.source):r(e.slug,void 0,void 0,e.source),a=()=>{if((e?.fontFace?.length??0)>0){o(e,t);return}o(e)},n=e.name+" "+Zo(t),l=(0,Qo.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)($o.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)($o.CheckboxControl,{checked:s,onChange:a,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Ur,{font:t,text:n,onClick:a})})]})})}var Ol=$c;function Tl(t){switch(t){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(t,10)}}function ts(t){return t.sort((e,r)=>e.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&e.fontStyle!=="normal"?1:e.fontStyle===r.fontStyle?Tl(e.fontWeight?.toString()??"normal")-Tl(r.fontWeight?.toString()??"normal"):!e.fontStyle||!r.fontStyle?e.fontStyle?-1:1:e.fontStyle.localeCompare(r.fontStyle))}var ft=u(z(),1);function td(){let{baseCustomFonts:t,libraryFontSelected:e,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,xr.useContext)(ie),[h,f]=_t("typography.fontFamilies"),[c,d]=(0,xr.useState)(!1),[m,g]=(0,xr.useState)(null),[y]=_t("typography.fontFamilies",void 0,"base"),_=(0,bn.useSelect)(E=>{let{__experimentalGetCurrentGlobalStylesId:S}=E(go.store);return S()},[]),k=!!(0,go.useEntityRecord)("root","globalStyles",_)?.edits?.settings?.typography?.fontFamilies,x=h?.theme?h.theme.map(E=>tr(E,{source:"theme"})).sort((E,S)=>E.name.localeCompare(S.name)):[],b=new Set(x.map(E=>E.slug)),T=y?.theme?x.concat(y.theme.filter(E=>!b.has(E.slug)).map(E=>tr(E,{source:"theme"})).sort((E,S)=>E.name.localeCompare(S.name))):[],Y=e?.source==="custom"&&e?.id,I=(0,bn.useSelect)(E=>{let{canUser:S}=E(go.store);return Y&&S("delete",{kind:"postType",name:"wp_font_family",id:Y})},[Y]),D=!!e&&e?.source!=="theme"&&I,H=()=>{d(!0)},$=async()=>{g(null);try{await n(h),g({type:"success",message:(0,Rt.__)("Font family updated successfully.")})}catch(E){g({type:"error",message:(0,Rt.sprintf)((0,Rt.__)("There was an error updating the font family. %s"),E.message)})}},bt=E=>E?!E.fontFace||!E.fontFace.length?[{fontFamily:E.fontFamily,fontStyle:"normal",fontWeight:"400"}]:ts(E.fontFace):[],W=E=>{let S=E?.fontFace&&(E?.fontFace?.length??0)>0?E.fontFace.length:1,R=l(E.slug,E.source).length;return(0,Rt.sprintf)((0,Rt.__)("%1$d/%2$d variants active"),R,S)};(0,xr.useEffect)(()=>{r(e)},[]);let v=e?l(e.slug,e.source).length:0,L=e?.fontFace?.length??(e?.fontFamily?1:0),lt=v>0&&v!==L,ot=v===L,K=()=>{if(!e||!e?.source)return;let E=h?.[e.source]?.filter(R=>R.slug!==e.slug)??[],S=ot?E:[...E,e];f({...h,[e.source]:S}),e.fontFace&&e.fontFace.forEach(R=>{if(ot)po(R,"all");else{let et=jr(R?.src??"");et&&er(R,et,"all")}})},gt=T.length>0||t.length>0;return(0,ft.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,ft.jsx)("div",{className:"font-library__loading",children:(0,ft.jsx)(ht.ProgressBar,{})}),!s&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsxs)(ht.Navigator,{initialPath:e?"/fontFamily":"/",children:[(0,ft.jsx)(ht.Navigator.Screen,{path:"/",children:(0,ft.jsxs)(ht.__experimentalVStack,{spacing:"8",children:[m&&(0,ft.jsx)(ht.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),!gt&&(0,ft.jsx)(ht.__experimentalText,{as:"p",children:(0,Rt.__)("No fonts installed.")}),T.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Rt._x)("Theme","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:T.map(E=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:E,navigatorPath:"/fontFamily",variantsText:W(E),onClick:()=>{g(null),r(E)}})},E.slug))})]}),t.length>0&&(0,ft.jsxs)(ht.__experimentalVStack,{children:[(0,ft.jsx)("h2",{className:"font-library__fonts-title",children:(0,Rt._x)("Custom","font source")}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t.map(E=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(ho,{font:E,navigatorPath:"/fontFamily",variantsText:W(E),onClick:()=>{g(null),r(E)}})},E.slug))})]})]})}),(0,ft.jsxs)(ht.Navigator.Screen,{path:"/fontFamily",children:[e&&(0,ft.jsx)(ed,{font:e,isOpen:c,setIsOpen:d,setNotice:g,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,ft.jsxs)(ht.Flex,{justify:"flex-start",children:[(0,ft.jsx)(ht.Navigator.BackButton,{icon:(0,Rt.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),g(null)},label:(0,Rt.__)("Back")}),(0,ft.jsx)(ht.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:e?.name})]}),m&&(0,ft.jsxs)(ft.Fragment,{children:[(0,ft.jsx)(ht.__experimentalSpacer,{margin:1}),(0,ft.jsx)(ht.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:1})]}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsx)(ht.__experimentalText,{children:(0,Rt.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:4}),(0,ft.jsxs)(ht.__experimentalVStack,{spacing:0,children:[(0,ft.jsx)(ht.CheckboxControl,{className:"font-library__select-all",label:(0,Rt.__)("Select all"),checked:ot,onChange:K,indeterminate:lt}),(0,ft.jsx)(ht.__experimentalSpacer,{margin:8}),(0,ft.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e&&bt(e).map((E,S)=>(0,ft.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ft.jsx)(Ol,{font:e,face:E},`face${S}`)},`face${S}`))})]})]})]}),(0,ft.jsxs)(ht.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,ft.jsx)(ht.ProgressBar,{}),D&&(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:H,children:(0,Rt.__)("Delete")}),(0,ft.jsx)(ht.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!k,accessibleWhenDisabled:!0,children:(0,Rt.__)("Update")})]})]})]})}function ed({font:t,isOpen:e,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,ht.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(t),n.goBack(),a(void 0),o({type:"success",message:(0,Rt.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Rt.__)("There was an error uninstalling the font family.")+f.message})}},h=()=>{r(!1)};return(0,ft.jsx)(ht.__experimentalConfirmDialog,{isOpen:e,cancelButtonText:(0,Rt.__)("Cancel"),confirmButtonText:(0,Rt.__)("Delete"),onCancel:h,onConfirm:l,size:"medium",children:t&&(0,Rt.sprintf)((0,Rt.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),t.name)})}var es=td;var Xt=u(vt(),1),nt=u(X(),1),Bl=u(mr(),1),Et=u(it(),1);var Vl=u(we(),1);function _l(t,e){let{category:r,search:o}=e,s=t||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Pl(t){return t.reduce((e,r)=>({...e,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Al(t,e,r){return e?!!r[t]?.[`${e.fontStyle}-${e.fontWeight}`]:!!r[t]}var yo=u(it(),1),le=u(X(),1),_e=u(z(),1);function rd(){let t=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,_e.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,_e.jsx)(le.Card,{children:(0,_e.jsxs)(le.CardBody,{children:[(0,_e.jsx)(le.__experimentalHeading,{level:2,children:(0,yo.__)("Connect to Google Fonts")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:3}),(0,_e.jsx)(le.__experimentalText,{as:"p",children:(0,yo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,_e.jsx)(le.__experimentalSpacer,{margin:6}),(0,_e.jsx)(le.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:t,children:(0,yo.__)("Allow access to Google Fonts")})]})})})}var El=rd;var Rl=u(vt(),1),rs=u(X(),1);var Cr=u(z(),1);function od({face:t,font:e,handleToggleVariant:r,selected:o}){let s=()=>{if(e?.fontFace){r(e,t);return}r(e)},a=e.name+" "+Zo(t),n=(0,Rl.useId)();return(0,Cr.jsx)("div",{className:"font-library__font-card",children:(0,Cr.jsxs)(rs.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Cr.jsx)(rs.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Cr.jsx)("label",{htmlFor:n,children:(0,Cr.jsx)(Ur,{font:t,text:a,onClick:s})})]})})}var Il=od;var tt=u(z(),1),sd={slug:"all",name:(0,Et._x)("All","font categories")},Ll="wp-font-library-google-fonts-permission",nd=500;function ad({slug:t}){let e=t==="google-fonts",r=()=>window.localStorage.getItem(Ll)==="true",[o,s]=(0,Xt.useState)(null),[a,n]=(0,Xt.useState)(null),[l,h]=(0,Xt.useState)([]),[f,c]=(0,Xt.useState)(1),[d,m]=(0,Xt.useState)({}),[g,y]=(0,Xt.useState)(e&&!r()),{installFonts:_,isInstalling:A}=(0,Xt.useContext)(ie),{record:k,isResolving:x}=(0,Vl.useEntityRecord)("root","fontCollection",t);(0,Xt.useEffect)(()=>{let J=()=>{y(e&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[t,e]);let b=()=>{window.localStorage.setItem(Ll,"false"),window.dispatchEvent(new Event("storage"))};(0,Xt.useEffect)(()=>{s(null)},[t]),(0,Xt.useEffect)(()=>{h([])},[o]);let T=(0,Xt.useMemo)(()=>k?.font_families??[],[k]),Y=k?.categories??[],I=[sd,...Y],D=(0,Xt.useMemo)(()=>_l(T,d),[T,d]),H=Math.max(window.innerHeight,nd),$=Math.floor((H-417)/61),bt=Math.ceil(D.length/$),W=(f-1)*$,v=f*$,L=D.slice(W,v),lt=J=>{m({...d,category:J}),c(1)},K=(0,Bl.debounce)(J=>{m({...d,search:J}),c(1)},300),gt=(J,xt)=>{let At=Xo(J,xt,l);h(At)},E=Pl(l),S=()=>{h([])},R=l.length>0?l[0]?.fontFace?.length??0:0,et=R>0&&R!==o?.fontFace?.length,ct=R===o?.fontFace?.length,at=()=>{let J=[];!ct&&o&&J.push(o),h(J)},Ct=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async xt=>{xt.src&&(xt.file=await xl(xt.src))}))}catch{n({type:"error",message:(0,Et.__)("Error installing the fonts, could not be downloaded.")});return}try{await _([J]),n({type:"success",message:(0,Et.__)("Fonts were installed successfully.")})}catch(xt){n({type:"error",message:xt.message})}S()},Yt=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:ts(J.fontFace):[];if(g)return(0,tt.jsx)(El,{});let Ot=()=>t!=="google-fonts"||g||o?null:(0,tt.jsx)(nt.DropdownMenu,{icon:Vs,label:(0,Et.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Et.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,tt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[x&&(0,tt.jsx)("div",{className:"font-library__loading",children:(0,tt.jsx)(nt.ProgressBar,{})}),!x&&k&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(nt.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,tt.jsxs)(nt.Navigator.Screen,{path:"/",children:[(0,tt.jsxs)(nt.__experimentalHStack,{justify:"space-between",children:[(0,tt.jsxs)(nt.__experimentalVStack,{children:[(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,children:k.name}),(0,tt.jsx)(nt.__experimentalText,{children:k.description})]}),(0,tt.jsx)(Ot,{})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsxs)(nt.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,tt.jsx)(nt.SearchControl,{value:d.search,placeholder:(0,Et.__)("Font name\u2026"),label:(0,Et.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,tt.jsx)(nt.SelectControl,{__next40pxDefaultSize:!0,label:(0,Et.__)("Category"),value:d.category,onChange:lt,children:I&&I.map(J=>(0,tt.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),!!k?.font_families?.length&&!D.length&&(0,tt.jsx)(nt.__experimentalText,{children:(0,Et.__)("No fonts found. Try with a different search term.")}),(0,tt.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(ho,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,tt.jsxs)(nt.Navigator.Screen,{path:"/fontFamily",children:[(0,tt.jsxs)(nt.Flex,{justify:"flex-start",children:[(0,tt.jsx)(nt.Navigator.BackButton,{icon:(0,Et.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),n(null)},label:(0,Et.__)("Back")}),(0,tt.jsx)(nt.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)(nt.__experimentalSpacer,{margin:1}),(0,tt.jsx)(nt.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:1})]}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.__experimentalText,{children:(0,Et.__)("Select font variants to install.")}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:4}),(0,tt.jsx)(nt.CheckboxControl,{className:"font-library__select-all",label:(0,Et.__)("Select all"),checked:ct,onChange:at,indeterminate:et}),(0,tt.jsx)(nt.__experimentalVStack,{spacing:0,children:(0,tt.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&Yt(o).map((J,xt)=>(0,tt.jsx)("li",{className:"font-library__fonts-list-item",children:(0,tt.jsx)(Il,{font:o,face:J,handleToggleVariant:gt,selected:Al(o.slug,o.fontFace?J:null,E)})},`face${xt}`))})}),(0,tt.jsx)(nt.__experimentalSpacer,{margin:16})]})]}),o&&(0,tt.jsx)(nt.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,tt.jsx)(nt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ct,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Et.__)("Install")})}),!o&&(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,tt.jsx)(nt.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Xt.createInterpolateElement)((0,Et.sprintf)((0,Et._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",bt),{div:(0,tt.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,tt.jsx)(nt.SelectControl,{"aria-label":(0,Et.__)("Current page"),value:f.toString(),options:[...Array(bt)].map((J,xt)=>({label:(xt+1).toString(),value:(xt+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,tt.jsxs)(nt.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,tt.jsx)(nt.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Et.__)("Previous page"),icon:(0,Et.isRTL)()?Io:Bo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,tt.jsx)(nt.Button,{onClick:()=>c(f+1),disabled:f===bt,accessibleWhenDisabled:!0,label:(0,Et.__)("Next page"),icon:(0,Et.isRTL)()?Bo:Io,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var os=ad;var Wr=u(it(),1),te=u(X(),1),bo=u(vt(),1);var ss=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Dl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var m=typeof ss=="function"&&ss;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=a[c]={exports:{}};s[c][0].call(y.exports,function(_){var A=s[c][1][_];return l(A||_)},y,y.exports,o,s,a,n)}return a[c].exports}for(var h=typeof ss=="function"&&ss,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,h=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=h,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,m=this.input_.read(this.buf_,d,n);if(m<0)throw new Error("Unexpected end of input");if(m<n){this.eos_=1;for(var g=0;g<32;g++)this.buf_[d+m+g]=0}if(d===0){for(var g=0;g<32;g++)this.buf_[(n<<1)+g]=this.buf_[g];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=m<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&h]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var m=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,m},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,h=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,h=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,m=o("./context"),g=o("./prefix"),y=o("./transform"),_=8,A=16,k=256,x=704,b=26,T=6,Y=2,I=8,D=255,H=1080,$=18,bt=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),W=16,v=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),lt=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function ot(N){var O;return N.readBits(1)===0?16:(O=N.readBits(3),O>0?17+O:(O=N.readBits(3),O>0?8+O:17))}function K(N){if(N.readBits(1)){var O=N.readBits(3);return O===0?1:N.readBits(O)+(1<<O)}return 0}function gt(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function E(N){var O=new gt,B,P,V;if(O.input_end=N.readBits(1),O.input_end&&N.readBits(1))return O;if(B=N.readBits(2)+4,B===7){if(O.is_metadata=!0,N.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=N.readBits(2),P===0)return O;for(V=0;V<P;V++){var dt=N.readBits(8);if(V+1===P&&P>1&&dt===0)throw new Error("Invalid size byte");O.meta_block_length|=dt<<V*8}}else for(V=0;V<B;++V){var rt=N.readBits(4);if(V+1===B&&B>4&&rt===0)throw new Error("Invalid size nibble");O.meta_block_length|=rt<<V*4}return++O.meta_block_length,!O.input_end&&!O.is_metadata&&(O.is_uncompressed=N.readBits(1)),O}function S(N,O,B){var P=O,V;return B.fillBitWindow(),O+=B.val_>>>B.bit_pos_&D,V=N[O].bits-I,V>0&&(B.bit_pos_+=I,O+=N[O].value,O+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=N[O].bits,N[O].value}function R(N,O,B,P){for(var V=0,dt=_,rt=0,st=0,wt=32768,ut=[],q=0;q<32;q++)ut.push(new c(0,0));for(d(ut,0,5,N,$);V<O&&wt>0;){var Ft=0,Jt;if(P.readMoreInput(),P.fillBitWindow(),Ft+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=ut[Ft].bits,Jt=ut[Ft].value&255,Jt<A)rt=0,B[V++]=Jt,Jt!==0&&(dt=Jt,wt-=32768>>Jt);else{var ge=Jt-14,ee,Qt,Vt=0;if(Jt===A&&(Vt=dt),st!==Vt&&(rt=0,st=Vt),ee=rt,rt>0&&(rt-=2,rt<<=ge),rt+=P.readBits(ge)+3,Qt=rt-ee,V+Qt>O)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var $t=0;$t<Qt;$t++)B[V+$t]=st;V+=Qt,st!==0&&(wt-=Qt<<15-st)}}if(wt!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+wt);for(;V<O;V++)B[V]=0}function et(N,O,B,P){var V=0,dt,rt=new Uint8Array(N);if(P.readMoreInput(),dt=P.readBits(2),dt===1){for(var st,wt=N-1,ut=0,q=new Int32Array(4),Ft=P.readBits(2)+1;wt;)wt>>=1,++ut;for(st=0;st<Ft;++st)q[st]=P.readBits(ut)%N,rt[q[st]]=2;switch(rt[q[0]]=1,Ft){case 1:break;case 3:if(q[0]===q[1]||q[0]===q[2]||q[1]===q[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(q[0]===q[1])throw new Error("[ReadHuffmanCode] invalid symbols");rt[q[1]]=1;break;case 4:if(q[0]===q[1]||q[0]===q[2]||q[0]===q[3]||q[1]===q[2]||q[1]===q[3]||q[2]===q[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(rt[q[2]]=3,rt[q[3]]=3):rt[q[0]]=2;break}}else{var st,Jt=new Uint8Array($),ge=32,ee=0,Qt=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(st=dt;st<$&&ge>0;++st){var Vt=bt[st],$t=0,re;P.fillBitWindow(),$t+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=Qt[$t].bits,re=Qt[$t].value,Jt[Vt]=re,re!==0&&(ge-=32>>re,++ee)}if(!(ee===1||ge===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");R(Jt,N,rt,P)}if(V=d(O,B,I,rt,N),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ct(N,O,B){var P,V;return P=S(N,O,B),V=g.kBlockLengthPrefixCode[P].nbits,g.kBlockLengthPrefixCode[P].offset+B.readBits(V)}function at(N,O,B){var P;return N<W?(B+=v[N],B&=3,P=O[B]+L[N]):P=N-W+1,P}function Ct(N,O){for(var B=N[O],P=O;P;--P)N[P]=N[P-1];N[0]=B}function Yt(N,O){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<O;++P){var V=N[P];N[P]=B[V],V&&Ct(B,V)}}function Ot(N,O){this.alphabet_size=N,this.num_htrees=O,this.codes=new Array(O+O*lt[N+31>>>5]),this.htrees=new Uint32Array(O)}Ot.prototype.decode=function(N){var O,B,P=0;for(O=0;O<this.num_htrees;++O)this.htrees[O]=P,B=et(this.alphabet_size,this.codes,P,N),P+=B};function J(N,O){var B={num_htrees:null,context_map:null},P,V=0,dt,rt;O.readMoreInput();var st=B.num_htrees=K(O)+1,wt=B.context_map=new Uint8Array(N);if(st<=1)return B;for(P=O.readBits(1),P&&(V=O.readBits(4)+1),dt=[],rt=0;rt<H;rt++)dt[rt]=new c(0,0);for(et(st+V,dt,0,O),rt=0;rt<N;){var ut;if(O.readMoreInput(),ut=S(dt,0,O),ut===0)wt[rt]=0,++rt;else if(ut<=V)for(var q=1+(1<<ut)+O.readBits(ut);--q;){if(rt>=N)throw new Error("[DecodeContextMap] i >= context_map_size");wt[rt]=0,++rt}else wt[rt]=ut-V,++rt}return O.readBits(1)&&Yt(wt,N),B}function xt(N,O,B,P,V,dt,rt){var st=B*2,wt=B,ut=S(O,B*H,rt),q;ut===0?q=V[st+(dt[wt]&1)]:ut===1?q=V[st+(dt[wt]-1&1)]+1:q=ut-2,q>=N&&(q-=N),P[B]=q,V[st+(dt[wt]&1)]=q,++dt[wt]}function At(N,O,B,P,V,dt){var rt=V+1,st=B&V,wt=dt.pos_&h.IBUF_MASK,ut;if(O<8||dt.bit_pos_+(O<<3)<dt.bit_end_pos_){for(;O-- >0;)dt.readMoreInput(),P[st++]=dt.readBits(8),st===rt&&(N.write(P,rt),st=0);return}if(dt.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;dt.bit_pos_<32;)P[st]=dt.val_>>>dt.bit_pos_,dt.bit_pos_+=8,++st,--O;if(ut=dt.bit_end_pos_-dt.bit_pos_>>3,wt+ut>h.IBUF_MASK){for(var q=h.IBUF_MASK+1-wt,Ft=0;Ft<q;Ft++)P[st+Ft]=dt.buf_[wt+Ft];ut-=q,st+=q,O-=q,wt=0}for(var Ft=0;Ft<ut;Ft++)P[st+Ft]=dt.buf_[wt+Ft];if(st+=ut,O-=ut,st>=rt){N.write(P,rt),st-=rt;for(var Ft=0;Ft<st;Ft++)P[Ft]=P[rt+Ft]}for(;st+O>=rt;){if(ut=rt-st,dt.input_.read(P,st,ut)<ut)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");N.write(P,rt),O-=ut,st=0}if(dt.input_.read(P,st,O)<O)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");dt.reset()}function Ce(N){var O=N.bit_pos_+7&-8,B=N.readBits(O-N.bit_pos_);return B==0}function zt(N){var O=new n(N),B=new h(O);ot(B);var P=E(B);return P.meta_block_length}a.BrotliDecompressedSize=zt;function sr(N,O){var B=new n(N);O==null&&(O=zt(N));var P=new Uint8Array(O),V=new l(P);return Ke(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}a.BrotliDecompressBuffer=sr;function Ke(N,O){var B,P=0,V=0,dt=0,rt,st=0,wt,ut,q,Ft,Jt=[16,15,11,4],ge=0,ee=0,Qt=0,Vt=[new Ot(0,0),new Ot(0,0),new Ot(0,0)],$t,re,pt,Kr=128+h.READ_SIZE;pt=new h(N),dt=ot(pt),rt=(1<<dt)-16,wt=1<<dt,ut=wt-1,q=new Uint8Array(wt+Kr+f.maxDictionaryWordLength),Ft=wt,$t=[],re=[];for(var Tr=0;Tr<3*H;Tr++)$t[Tr]=new c(0,0),re[Tr]=new c(0,0);for(;!V;){var Mt=0,ko,Fe=[1<<28,1<<28,1<<28],Ee=[0],ye=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pt,G,oe=null,j=null,Dt,F=null,C,nr=0,Tt=null,Q=0,ar=0,ir=null,It=0,St=0,Gt=0,jt,qt;for(B=0;B<3;++B)Vt[B].codes=null,Vt[B].htrees=null;pt.readMoreInput();var Ge=E(pt);if(Mt=Ge.meta_block_length,P+Mt>O.buffer.length){var lr=new Uint8Array(P+Mt);lr.set(O.buffer),O.buffer=lr}if(V=Ge.input_end,ko=Ge.is_uncompressed,Ge.is_metadata){for(Ce(pt);Mt>0;--Mt)pt.readMoreInput(),pt.readBits(8);continue}if(Mt!==0){if(ko){pt.bit_pos_=pt.bit_pos_+7&-8,At(O,Mt,P,q,ut,pt),P+=Mt;continue}for(B=0;B<3;++B)ye[B]=K(pt)+1,ye[B]>=2&&(et(ye[B]+2,$t,B*H,pt),et(b,re,B*H,pt),Fe[B]=ct(re,B*H,pt),M[B]=1);for(pt.readMoreInput(),i=pt.readBits(2),U=W+(pt.readBits(4)<<i),Pt=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(ye[0]),B=0;B<ye[0];++B)pt.readMoreInput(),j[B]=pt.readBits(2)<<1;var Lt=J(ye[0]<<T,pt);Dt=Lt.num_htrees,oe=Lt.context_map;var se=J(ye[2]<<Y,pt);for(C=se.num_htrees,F=se.context_map,Vt[0]=new Ot(k,Dt),Vt[1]=new Ot(x,ye[1]),Vt[2]=new Ot(G,C),B=0;B<3;++B)Vt[B].decode(pt);for(Tt=0,ir=0,jt=j[Ee[0]],St=m.lookupOffsets[jt],Gt=m.lookupOffsets[jt+1],qt=Vt[1].htrees[0];Mt>0;){var Nt,ne,ue,_r,Cs,fe,ve,je,Jr,Pr,Qr;for(pt.readMoreInput(),Fe[1]===0&&(xt(ye[1],$t,1,Ee,w,M,pt),Fe[1]=ct(re,H,pt),qt=Vt[1].htrees[Ee[1]]),--Fe[1],Nt=S(Vt[1].codes,qt,pt),ne=Nt>>6,ne>=2?(ne-=2,ve=-1):ve=0,ue=g.kInsertRangeLut[ne]+(Nt>>3&7),_r=g.kCopyRangeLut[ne]+(Nt&7),Cs=g.kInsertLengthPrefixCode[ue].offset+pt.readBits(g.kInsertLengthPrefixCode[ue].nbits),fe=g.kCopyLengthPrefixCode[_r].offset+pt.readBits(g.kCopyLengthPrefixCode[_r].nbits),ee=q[P-1&ut],Qt=q[P-2&ut],Pr=0;Pr<Cs;++Pr)pt.readMoreInput(),Fe[0]===0&&(xt(ye[0],$t,0,Ee,w,M,pt),Fe[0]=ct(re,0,pt),nr=Ee[0]<<T,Tt=nr,jt=j[Ee[0]],St=m.lookupOffsets[jt],Gt=m.lookupOffsets[jt+1]),Jr=m.lookup[St+ee]|m.lookup[Gt+Qt],Q=oe[Tt+Jr],--Fe[0],Qt=ee,ee=S(Vt[0].codes,Vt[0].htrees[Q],pt),q[P&ut]=ee,(P&ut)===ut&&O.write(q,wt),++P;if(Mt-=Cs,Mt<=0)break;if(ve<0){var Jr;if(pt.readMoreInput(),Fe[2]===0&&(xt(ye[2],$t,2,Ee,w,M,pt),Fe[2]=ct(re,2*H,pt),ar=Ee[2]<<Y,ir=ar),--Fe[2],Jr=(fe>4?3:fe-2)&255,It=F[ir+Jr],ve=S(Vt[2].codes,Vt[2].htrees[It],pt),ve>=U){var Fs,ta,$r;ve-=U,ta=ve&Pt,ve>>=i,Fs=(ve>>1)+1,$r=(2+(ve&1)<<Fs)-4,ve=U+($r+pt.readBits(Fs)<<i)+ta}}if(je=at(ve,Jt,ge),je<0)throw new Error("[BrotliDecompress] invalid distance");if(P<rt&&st!==rt?st=P:st=rt,Qr=P&ut,je>st)if(fe>=f.minDictionaryWordLength&&fe<=f.maxDictionaryWordLength){var $r=f.offsetsByLength[fe],ea=je-st-1,ra=f.sizeBitsByLength[fe],tf=(1<<ra)-1,ef=ea&tf,oa=ea>>ra;if($r+=ef*fe,oa<y.kNumTransforms){var ks=y.transformDictionaryWord(q,Qr,$r,fe,oa);if(Qr+=ks,P+=ks,Mt-=ks,Qr>=Ft){O.write(q,wt);for(var Oo=0;Oo<Qr-Ft;Oo++)q[Oo]=q[Ft+Oo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);else{if(ve>0&&(Jt[ge&3]=je,++ge),fe>Mt)throw new Error("Invalid backward reference. pos: "+P+" distance: "+je+" len: "+fe+" bytes left: "+Mt);for(Pr=0;Pr<fe;++Pr)q[P&ut]=q[P-je&ut],(P&ut)===ut&&O.write(q,wt),++P,--Mt}ee=q[P-1&ut],Qt=q[P-2&ut]}P&=1073741823}}O.write(q,P&ut)}a.BrotliDecompress=Ke,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,h=n.toByteArray(o("./dictionary.bin.js"));return l(h)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="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"},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,m){this.bits=d,this.value=m}a.HuffmanCode=n;var l=15;function h(d,m){for(var g=1<<m-1;d&g;)g>>=1;return(d&g-1)+g}function f(d,m,g,y,_){do y-=g,d[m+y]=new n(_.bits,_.value);while(y>0)}function c(d,m,g){for(var y=1<<m-g;m<l&&(y-=d[m],!(y<=0));)++m,y<<=1;return m-g}a.BrotliBuildHuffmanTable=function(d,m,g,y,_){var A=m,k,x,b,T,Y,I,D,H,$,bt,W,v=new Int32Array(l+1),L=new Int32Array(l+1);for(W=new Int32Array(_),b=0;b<_;b++)v[y[b]]++;for(L[1]=0,x=1;x<l;x++)L[x+1]=L[x]+v[x];for(b=0;b<_;b++)y[b]!==0&&(W[L[y[b]]++]=b);if(H=g,$=1<<H,bt=$,L[l]===1){for(T=0;T<bt;++T)d[m+T]=new n(0,W[0]&65535);return bt}for(T=0,b=0,x=1,Y=2;x<=g;++x,Y<<=1)for(;v[x]>0;--v[x])k=new n(x&255,W[b++]&65535),f(d,m+T,Y,$,k),T=h(T,x);for(D=bt-1,I=-1,x=g+1,Y=2;x<=l;++x,Y<<=1)for(;v[x]>0;--v[x])(T&D)!==I&&(m+=$,H=c(v,x,g),$=1<<H,bt+=$,I=T&D,d[A+I]=new n(H+g&255,m-A-I&65535)),k=new n(x-g&255,W[b++]&65535),f(d,m+(T>>g),Y,$,k),T=h(T,x);return bt}},{}],8:[function(o,s,a){"use strict";a.byteLength=g,a.toByteArray=_,a.fromByteArray=x;for(var n=[],l=[],h=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function m(b){var T=b.length;if(T%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=b.indexOf("=");Y===-1&&(Y=T);var I=Y===T?0:4-Y%4;return[Y,I]}function g(b){var T=m(b),Y=T[0],I=T[1];return(Y+I)*3/4-I}function y(b,T,Y){return(T+Y)*3/4-Y}function _(b){for(var T,Y=m(b),I=Y[0],D=Y[1],H=new h(y(b,I,D)),$=0,bt=D>0?I-4:I,W=0;W<bt;W+=4)T=l[b.charCodeAt(W)]<<18|l[b.charCodeAt(W+1)]<<12|l[b.charCodeAt(W+2)]<<6|l[b.charCodeAt(W+3)],H[$++]=T>>16&255,H[$++]=T>>8&255,H[$++]=T&255;return D===2&&(T=l[b.charCodeAt(W)]<<2|l[b.charCodeAt(W+1)]>>4,H[$++]=T&255),D===1&&(T=l[b.charCodeAt(W)]<<10|l[b.charCodeAt(W+1)]<<4|l[b.charCodeAt(W+2)]>>2,H[$++]=T>>8&255,H[$++]=T&255),H}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function k(b,T,Y){for(var I,D=[],H=T;H<Y;H+=3)I=(b[H]<<16&16711680)+(b[H+1]<<8&65280)+(b[H+2]&255),D.push(A(I));return D.join("")}function x(b){for(var T,Y=b.length,I=Y%3,D=[],H=16383,$=0,bt=Y-I;$<bt;$+=H)D.push(k(b,$,$+H>bt?bt:$+H));return I===1?(T=b[Y-1],D.push(n[T>>2]+n[T<<4&63]+"==")):I===2&&(T=(b[Y-2]<<8)+b[Y-1],D.push(n[T>>10]+n[T>>4&63]+n[T<<2&63]+"=")),D.join("")}},{}],9:[function(o,s,a){function n(l,h){this.offset=l,this.nbits=h}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(h){this.buffer=h,this.pos=0}n.prototype.read=function(h,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)h[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(h){this.buffer=h,this.pos=0}l.prototype.write=function(h,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(h.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,h=1,f=2,c=3,d=4,m=5,g=6,y=7,_=8,A=9,k=10,x=11,b=12,T=13,Y=14,I=15,D=16,H=17,$=18,bt=19,W=20;function v(ot,K,gt){this.prefix=new Uint8Array(ot.length),this.transform=K,this.suffix=new Uint8Array(gt.length);for(var E=0;E<ot.length;E++)this.prefix[E]=ot.charCodeAt(E);for(var E=0;E<gt.length;E++)this.suffix[E]=gt.charCodeAt(E)}var L=[new v("",l,""),new v("",l," "),new v(" ",l," "),new v("",b,""),new v("",k," "),new v("",l," the "),new v(" ",l,""),new v("s ",l," "),new v("",l," of "),new v("",k,""),new v("",l," and "),new v("",T,""),new v("",h,""),new v(", ",l," "),new v("",l,", "),new v(" ",k," "),new v("",l," in "),new v("",l," to "),new v("e ",l," "),new v("",l,'"'),new v("",l,"."),new v("",l,'">'),new v("",l,` -`),new v("",c,""),new v("",l,"]"),new v("",l," for "),new v("",Y,""),new v("",f,""),new v("",l," a "),new v("",l," that "),new v(" ",k,""),new v("",l,". "),new v(".",l,""),new v(" ",l,", "),new v("",I,""),new v("",l," with "),new v("",l,"'"),new v("",l," from "),new v("",l," by "),new v("",D,""),new v("",H,""),new v(" the ",l,""),new v("",d,""),new v("",l,". The "),new v("",x,""),new v("",l," on "),new v("",l," as "),new v("",l," is "),new v("",y,""),new v("",h,"ing "),new v("",l,` - `),new v("",l,":"),new v(" ",l,". "),new v("",l,"ed "),new v("",W,""),new v("",$,""),new v("",g,""),new v("",l,"("),new v("",k,", "),new v("",_,""),new v("",l," at "),new v("",l,"ly "),new v(" the ",l," of "),new v("",m,""),new v("",A,""),new v(" ",k,", "),new v("",k,'"'),new v(".",l,"("),new v("",x," "),new v("",k,'">'),new v("",l,'="'),new v(" ",l,"."),new v(".com/",l,""),new v(" the ",l," of the "),new v("",k,"'"),new v("",l,". This "),new v("",l,","),new v(".",l," "),new v("",k,"("),new v("",k,"."),new v("",l," not "),new v(" ",l,'="'),new v("",l,"er "),new v(" ",x," "),new v("",l,"al "),new v(" ",x,""),new v("",l,"='"),new v("",x,'"'),new v("",k,". "),new v(" ",l,"("),new v("",l,"ful "),new v(" ",k,". "),new v("",l,"ive "),new v("",l,"less "),new v("",x,"'"),new v("",l,"est "),new v(" ",k,"."),new v("",x,'">'),new v(" ",l,"='"),new v("",k,","),new v("",l,"ize "),new v("",x,"."),new v("\xC2\xA0",l,""),new v(" ",l,","),new v("",k,'="'),new v("",x,'="'),new v("",l,"ous "),new v("",x,", "),new v("",k,"='"),new v(" ",k,","),new v(" ",x,'="'),new v(" ",x,", "),new v("",x,","),new v("",x,"("),new v("",x,". "),new v(" ",x,"."),new v("",x,"='"),new v(" ",x,". "),new v(" ",k,'="'),new v(" ",x,"='"),new v(" ",k,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function lt(ot,K){return ot[K]<192?(ot[K]>=97&&ot[K]<=122&&(ot[K]^=32),1):ot[K]<224?(ot[K+1]^=32,2):(ot[K+2]^=5,3)}a.transformDictionaryWord=function(ot,K,gt,E,S){var R=L[S].prefix,et=L[S].suffix,ct=L[S].transform,at=ct<b?0:ct-(b-1),Ct=0,Yt=K,Ot;at>E&&(at=E);for(var J=0;J<R.length;)ot[K++]=R[J++];for(gt+=at,E-=at,ct<=A&&(E-=ct),Ct=0;Ct<E;Ct++)ot[K++]=n.dictionary[gt+Ct];if(Ot=K-E,ct===k)lt(ot,Ot);else if(ct===x)for(;E>0;){var xt=lt(ot,Ot);Ot+=xt,E-=xt}for(var At=0;At<et.length;)ot[K++]=et[At++];return K-Yt}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ns=(t=>typeof ce<"u"?ce:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof ce<"u"?ce:e)[r]}):t)(function(t){if(typeof ce<"u")return ce.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),Nl=(function(){var t,e,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var m=typeof ns=="function"&&ns;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=a[c]={exports:{}};s[c][0].call(y.exports,function(_){var A=s[c][1][_];return l(A||_)},y,y.exports,o,s,a,n)}return a[c].exports}for(var h=typeof ns=="function"&&ns,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var m=d.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var g in m)l(m,g)&&(c[g]=m[g])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var h={arraySet:function(c,d,m,g,y){if(d.subarray&&c.subarray){c.set(d.subarray(m,m+g),y);return}for(var _=0;_<g;_++)c[y+_]=d[m+_]},flattenChunks:function(c){var d,m,g,y,_,A;for(g=0,d=0,m=c.length;d<m;d++)g+=c[d].length;for(A=new Uint8Array(g),y=0,d=0,m=c.length;d<m;d++)_=c[d],A.set(_,y),y+=_.length;return A}},f={arraySet:function(c,d,m,g,y){for(var _=0;_<g;_++)c[y+_]=d[m+_]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,h)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{h=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(m){var g,y,_,A,k,x=m.length,b=0;for(A=0;A<x;A++)y=m.charCodeAt(A),(y&64512)===55296&&A+1<x&&(_=m.charCodeAt(A+1),(_&64512)===56320&&(y=65536+(y-55296<<10)+(_-56320),A++)),b+=y<128?1:y<2048?2:y<65536?3:4;for(g=new n.Buf8(b),k=0,A=0;k<b;A++)y=m.charCodeAt(A),(y&64512)===55296&&A+1<x&&(_=m.charCodeAt(A+1),(_&64512)===56320&&(y=65536+(y-55296<<10)+(_-56320),A++)),y<128?g[k++]=y:y<2048?(g[k++]=192|y>>>6,g[k++]=128|y&63):y<65536?(g[k++]=224|y>>>12,g[k++]=128|y>>>6&63,g[k++]=128|y&63):(g[k++]=240|y>>>18,g[k++]=128|y>>>12&63,g[k++]=128|y>>>6&63,g[k++]=128|y&63);return g};function d(m,g){if(g<65534&&(m.subarray&&h||!m.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(m,g));for(var y="",_=0;_<g;_++)y+=String.fromCharCode(m[_]);return y}a.buf2binstring=function(m){return d(m,m.length)},a.binstring2buf=function(m){for(var g=new n.Buf8(m.length),y=0,_=g.length;y<_;y++)g[y]=m.charCodeAt(y);return g},a.buf2string=function(m,g){var y,_,A,k,x=g||m.length,b=new Array(x*2);for(_=0,y=0;y<x;){if(A=m[y++],A<128){b[_++]=A;continue}if(k=f[A],k>4){b[_++]=65533,y+=k-1;continue}for(A&=k===2?31:k===3?15:7;k>1&&y<x;)A=A<<6|m[y++]&63,k--;if(k>1){b[_++]=65533;continue}A<65536?b[_++]=A:(A-=65536,b[_++]=55296|A>>10&1023,b[_++]=56320|A&1023)}return d(b,_)},a.utf8border=function(m,g){var y;for(g=g||m.length,g>m.length&&(g=m.length),y=g-1;y>=0&&(m[y]&192)===128;)y--;return y<0||y===0?g:y+f[m[y]]>g?y:g}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,h,f,c){for(var d=l&65535|0,m=l>>>16&65535|0,g=0;f!==0;){g=f>2e3?2e3:f,f-=g;do d=d+h[c++]|0,m=m+d|0;while(--g);d%=65521,m%=65521}return d|m<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var m=0;m<8;m++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function h(f,c,d,m){var g=l,y=m+d;f^=-1;for(var _=m;_<y;_++)f=f>>>8^g[(f^c[_])&255];return f^-1}s.exports=h},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,m,g,y,_,A,k,x,b,T,Y,I,D,H,$,bt,W,v,L,lt,ot,K,gt,E,S;d=f.state,m=f.next_in,E=f.input,g=m+(f.avail_in-5),y=f.next_out,S=f.output,_=y-(c-f.avail_out),A=y+(f.avail_out-257),k=d.dmax,x=d.wsize,b=d.whave,T=d.wnext,Y=d.window,I=d.hold,D=d.bits,H=d.lencode,$=d.distcode,bt=(1<<d.lenbits)-1,W=(1<<d.distbits)-1;t:do{D<15&&(I+=E[m++]<<D,D+=8,I+=E[m++]<<D,D+=8),v=H[I&bt];e:for(;;){if(L=v>>>24,I>>>=L,D-=L,L=v>>>16&255,L===0)S[y++]=v&65535;else if(L&16){lt=v&65535,L&=15,L&&(D<L&&(I+=E[m++]<<D,D+=8),lt+=I&(1<<L)-1,I>>>=L,D-=L),D<15&&(I+=E[m++]<<D,D+=8,I+=E[m++]<<D,D+=8),v=$[I&W];r:for(;;){if(L=v>>>24,I>>>=L,D-=L,L=v>>>16&255,L&16){if(ot=v&65535,L&=15,D<L&&(I+=E[m++]<<D,D+=8,D<L&&(I+=E[m++]<<D,D+=8)),ot+=I&(1<<L)-1,ot>k){f.msg="invalid distance too far back",d.mode=n;break t}if(I>>>=L,D-=L,L=y-_,ot>L){if(L=ot-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break t}if(K=0,gt=Y,T===0){if(K+=x-L,L<lt){lt-=L;do S[y++]=Y[K++];while(--L);K=y-ot,gt=S}}else if(T<L){if(K+=x+T-L,L-=T,L<lt){lt-=L;do S[y++]=Y[K++];while(--L);if(K=0,T<lt){L=T,lt-=L;do S[y++]=Y[K++];while(--L);K=y-ot,gt=S}}}else if(K+=T-L,L<lt){lt-=L;do S[y++]=Y[K++];while(--L);K=y-ot,gt=S}for(;lt>2;)S[y++]=gt[K++],S[y++]=gt[K++],S[y++]=gt[K++],lt-=3;lt&&(S[y++]=gt[K++],lt>1&&(S[y++]=gt[K++]))}else{K=y-ot;do S[y++]=S[K++],S[y++]=S[K++],S[y++]=S[K++],lt-=3;while(lt>2);lt&&(S[y++]=S[K++],lt>1&&(S[y++]=S[K++]))}}else if((L&64)===0){v=$[(v&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break t}break}}else if((L&64)===0){v=H[(v&65535)+(I&(1<<L)-1)];continue e}else if(L&32){d.mode=l;break t}else{f.msg="invalid literal/length code",d.mode=n;break t}break}}while(m<g&&y<A);lt=D>>3,m-=lt,D-=lt<<3,I&=(1<<D)-1,f.next_in=m,f.next_out=y,f.avail_in=m<g?5+(g-m):5-(m-g),f.avail_out=y<A?257+(A-y):257-(y-A),d.hold=I,d.bits=D}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),h=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,m=1,g=2,y=4,_=5,A=6,k=0,x=1,b=2,T=-2,Y=-3,I=-4,D=-5,H=8,$=1,bt=2,W=3,v=4,L=5,lt=6,ot=7,K=8,gt=9,E=10,S=11,R=12,et=13,ct=14,at=15,Ct=16,Yt=17,Ot=18,J=19,xt=20,At=21,Ce=22,zt=23,sr=24,Ke=25,N=26,O=27,B=28,P=29,V=30,dt=31,rt=32,st=852,wt=592,ut=15,q=ut;function Ft(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Jt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ge(w){var M;return!w||!w.state?T:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(st),M.distcode=M.distdyn=new n.Buf32(wt),M.sane=1,M.back=-1,k)}function ee(w){var M;return!w||!w.state?T:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,ge(w))}function Qt(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?T:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,ee(w))}function Vt(w,M){var i,U;return w?(U=new Jt,w.state=U,U.window=null,i=Qt(w,M),i!==k&&(w.state=null),i):T}function $t(w){return Vt(w,q)}var re=!0,pt,Kr;function Tr(w){if(re){var M;for(pt=new n.Buf32(512),Kr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(m,w.lens,0,288,pt,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(g,w.lens,0,32,Kr,0,w.work,{bits:5}),re=!1}w.lencode=pt,w.lenbits=9,w.distcode=Kr,w.distbits=5}function Mt(w,M,i,U){var Pt,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pt=G.wsize-G.wnext,Pt>U&&(Pt=U),n.arraySet(G.window,M,i-U,Pt,G.wnext),U-=Pt,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pt,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pt))),0}function ko(w,M){var i,U,Pt,G,oe,j,Dt,F,C,nr,Tt,Q,ar,ir,It=0,St,Gt,jt,qt,Ge,lr,Lt,se,Nt=new n.Buf8(4),ne,ue,_r=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return T;i=w.state,i.mode===R&&(i.mode=et),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,nr=j,Tt=Dt,se=k;t:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=et;break}for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=h(i.check,Nt,2,0),F=0,C=0,i.mode=bt;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==H){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Lt=(F&15)+8,i.wbits===0)i.wbits=Lt;else if(Lt>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Lt,w.adler=i.check=1,i.mode=F&512?E:R,F=0,C=0;break;case bt:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==H){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=h(i.check,Nt,2,0)),F=0,C=0,i.mode=W;case W:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,Nt[2]=F>>>16&255,Nt[3]=F>>>24&255,i.check=h(i.check,Nt,4,0)),F=0,C=0,i.mode=v;case v:for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=h(i.check,Nt,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(Nt[0]=F&255,Nt[1]=F>>>8&255,i.check=h(i.check,Nt,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=lt;case lt:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Lt=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Lt)),i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break t;i.length=0,i.mode=ot;case ot:if(i.flags&2048){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.name+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break t;Q=0;do Lt=U[G+Q++],i.head&&Lt&&i.length<65536&&(i.head.comment+=String.fromCharCode(Lt));while(Lt&&Q<j);if(i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,Lt)break t}else i.head&&(i.head.comment=null);i.mode=gt;case gt:if(i.flags&512){for(;C<16;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=R;break;case E:for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Ft(F),F=0,C=0,i.mode=S;case S:if(i.havedict===0)return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=R;case R:if(M===_||M===A)break t;case et:if(i.last){F>>>=C&7,C-=C&7,i.mode=O;break}for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ct;break;case 1:if(Tr(i),i.mode=xt,M===A){F>>>=2,C-=2;break t}break;case 2:i.mode=Yt;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ct:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=at,M===A)break t;case at:i.mode=Ct;case Ct:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Dt&&(Q=Dt),Q===0)break t;n.arraySet(Pt,U,G,Q,oe),j-=Q,G+=Q,Dt-=Q,oe+=Q,i.length-=Q;break}i.mode=R;break;case Yt:for(;C<14;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=Ot;case Ot:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.lens[_r[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[_r[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,ne={bits:i.lenbits},se=c(d,i.lens,0,19,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;It=i.lencode[F&(1<<i.lenbits)-1],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(jt<16)F>>>=St,C-=St,i.lens[i.have++]=jt;else{if(jt===16){for(ue=St+2;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F>>>=St,C-=St,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Lt=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(jt===17){for(ue=St+3;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=St,C-=St,Lt=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ue=St+7;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=St,C-=St,Lt=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Lt}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,ne={bits:i.lenbits},se=c(m,i.lens,0,i.nlen,i.lencode,0,i.work,ne),i.lenbits=ne.bits,se){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,ne={bits:i.distbits},se=c(g,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,ne),i.distbits=ne.bits,se){w.msg="invalid distances set",i.mode=V;break}if(i.mode=xt,M===A)break t;case xt:i.mode=At;case At:if(j>=6&&Dt>=258){w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Tt),oe=w.next_out,Pt=w.output,Dt=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===R&&(i.back=-1);break}for(i.back=0;It=i.lencode[F&(1<<i.lenbits)-1],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(Gt&&(Gt&240)===0){for(qt=St,Ge=Gt,lr=jt;It=i.lencode[lr+((F&(1<<qt+Ge)-1)>>qt)],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=St,C-=St,i.back+=St,i.length=jt,Gt===0){i.mode=N;break}if(Gt&32){i.back=-1,i.mode=R;break}if(Gt&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Gt&15,i.mode=Ce;case Ce:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=zt;case zt:for(;It=i.distcode[F&(1<<i.distbits)-1],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if((Gt&240)===0){for(qt=St,Ge=Gt,lr=jt;It=i.distcode[lr+((F&(1<<qt+Ge)-1)>>qt)],St=It>>>24,Gt=It>>>16&255,jt=It&65535,!(qt+St<=C);){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}F>>>=qt,C-=qt,i.back+=qt}if(F>>>=St,C-=St,i.back+=St,Gt&64){w.msg="invalid distance code",i.mode=V;break}i.offset=jt,i.extra=Gt&15,i.mode=sr;case sr:if(i.extra){for(ue=i.extra;C<ue;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Ke;case Ke:if(Dt===0)break t;if(Q=Tt-Dt,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pt,ar=oe-i.offset,Q=i.length;Q>Dt&&(Q=Dt),Dt-=Q,i.length-=Q;do Pt[oe++]=ir[ar++];while(--Q);i.length===0&&(i.mode=At);break;case N:if(Dt===0)break t;Pt[oe++]=i.length,Dt--,i.mode=At;break;case O:if(i.wrap){for(;C<32;){if(j===0)break t;j--,F|=U[G++]<<C,C+=8}if(Tt-=Dt,w.total_out+=Tt,i.total+=Tt,Tt&&(w.adler=i.check=i.flags?h(i.check,Pt,Tt,oe-Tt):l(i.check,Pt,Tt,oe-Tt)),Tt=Dt,(i.flags?F:Ft(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break t;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=P;case P:se=x;break t;case V:se=Y;break t;case dt:return I;case rt:default:return T}return w.next_out=oe,w.avail_out=Dt,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Tt!==w.avail_out&&i.mode<V&&(i.mode<O||M!==y))&&Mt(w,w.output,w.next_out,Tt-w.avail_out)?(i.mode=dt,I):(nr-=w.avail_in,Tt-=w.avail_out,w.total_in+=nr,w.total_out+=Tt,i.total+=Tt,i.wrap&&Tt&&(w.adler=i.check=i.flags?h(i.check,Pt,Tt,w.next_out-Tt):l(i.check,Pt,Tt,w.next_out-Tt)),w.data_type=i.bits+(i.last?64:0)+(i.mode===R?128:0)+(i.mode===xt||i.mode===at?256:0),(nr===0&&Tt===0||M===y)&&se===k&&(se=D),se)}function Fe(w){if(!w||!w.state)return T;var M=w.state;return M.window&&(M.window=null),w.state=null,k}function Ee(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?T:(i.head=M,M.done=!1,k)}function ye(w,M){var i=M.length,U,Pt,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==S)?T:U.mode===S&&(Pt=1,Pt=l(Pt,M,i,0),Pt!==U.check)?Y:(G=Mt(w,M,i,i),G?(U.mode=dt,I):(U.havedict=1,k))}a.inflateReset=ee,a.inflateReset2=Qt,a.inflateResetKeep=ge,a.inflateInit=$t,a.inflateInit2=Vt,a.inflate=ko,a.inflateEnd=Fe,a.inflateGetHeader=Ee,a.inflateSetDictionary=ye,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,h=852,f=592,c=0,d=1,m=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(x,b,T,Y,I,D,H,$){var bt=$.bits,W=0,v=0,L=0,lt=0,ot=0,K=0,gt=0,E=0,S=0,R=0,et,ct,at,Ct,Yt,Ot=null,J=0,xt,At=new n.Buf16(l+1),Ce=new n.Buf16(l+1),zt=null,sr=0,Ke,N,O;for(W=0;W<=l;W++)At[W]=0;for(v=0;v<Y;v++)At[b[T+v]]++;for(ot=bt,lt=l;lt>=1&&At[lt]===0;lt--);if(ot>lt&&(ot=lt),lt===0)return I[D++]=1<<24|64<<16|0,I[D++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<lt&&At[L]===0;L++);for(ot<L&&(ot=L),E=1,W=1;W<=l;W++)if(E<<=1,E-=At[W],E<0)return-1;if(E>0&&(x===c||lt!==1))return-1;for(Ce[1]=0,W=1;W<l;W++)Ce[W+1]=Ce[W]+At[W];for(v=0;v<Y;v++)b[T+v]!==0&&(H[Ce[b[T+v]]++]=v);if(x===c?(Ot=zt=H,xt=19):x===d?(Ot=g,J-=257,zt=y,sr-=257,xt=256):(Ot=_,zt=A,xt=-1),R=0,v=0,W=L,Yt=D,K=ot,gt=0,at=-1,S=1<<ot,Ct=S-1,x===d&&S>h||x===m&&S>f)return 1;for(;;){Ke=W-gt,H[v]<xt?(N=0,O=H[v]):H[v]>xt?(N=zt[sr+H[v]],O=Ot[J+H[v]]):(N=96,O=0),et=1<<W-gt,ct=1<<K,L=ct;do ct-=et,I[Yt+(R>>gt)+ct]=Ke<<24|N<<16|O|0;while(ct!==0);for(et=1<<W-1;R&et;)et>>=1;if(et!==0?(R&=et-1,R+=et):R=0,v++,--At[W]===0){if(W===lt)break;W=b[T+H[v]]}if(W>ot&&(R&Ct)!==at){for(gt===0&&(gt=ot),Yt+=L,K=W-gt,E=1<<K;K+gt<lt&&(E-=At[K+gt],!(E<=0));)K++,E<<=1;if(S+=1<<K,x===d&&S>h||x===m&&S>f)return 1;at=R&Ct,I[at]=ot<<24|K<<16|Yt-D|0}}return R!==0&&(I[Yt+R]=W-gt<<24|64<<16|0),$.bits=ot,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),h=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),m=o("./zlib/gzheader"),g=Object.prototype.toString;function y(k){if(!(this instanceof y))return new y(k);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},k||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(k&&k.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,x.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new m,n.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=h.string2buf(x.dictionary):g.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(b=n.inflateSetDictionary(this.strm,x.dictionary),b!==f.Z_OK)))throw new Error(c[b])}y.prototype.push=function(k,x){var b=this.strm,T=this.options.chunkSize,Y=this.options.dictionary,I,D,H,$,bt,W=!1;if(this.ended)return!1;D=x===~~x?x:x===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof k=="string"?b.input=h.binstring2buf(k):g.call(k)==="[object ArrayBuffer]"?b.input=new Uint8Array(k):b.input=k,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(T),b.next_out=0,b.avail_out=T),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&Y&&(I=n.inflateSetDictionary(this.strm,Y)),I===f.Z_BUF_ERROR&&W===!0&&(I=f.Z_OK,W=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(D===f.Z_FINISH||D===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(H=h.utf8border(b.output,b.next_out),$=b.next_out-H,bt=h.buf2string(b.output,H),b.next_out=$,b.avail_out=T-$,$&&l.arraySet(b.output,b.output,H,$,0),this.onData(bt)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(W=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(D=f.Z_FINISH),D===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(D===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},y.prototype.onData=function(k){this.chunks.push(k)},y.prototype.onEnd=function(k){k===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function _(k,x){var b=new y(x);if(b.push(k,!0),b.err)throw b.msg||c[b.err];return b.result}function A(k,x){return x=x||{},x.raw=!0,_(k,x)}a.Inflate=y,a.inflate=_,a.inflateRaw=A,a.ungzip=_},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var Fw=globalThis.fetch,as=class{constructor(t,e={},r){this.type=t,this.detail=e,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},id=class{constructor(){this.listeners={}}addEventListener(t,e,r){let o=this.listeners[t]||[];r?o.unshift(e):o.push(e),this.listeners[t]=o}removeEventListener(t,e){let r=this.listeners[t]||[],o=r.findIndex(s=>s===e);o>-1&&(r.splice(o,1),this.listeners[t]=r)}dispatch(t){let e=this.listeners[t.type];if(e)for(let r=0,o=e.length;r<o&&t.__mayPropagate;r++)e[r](t)}},ld=new Date("1904-01-01T00:00:00+0000").getTime();function ud(t){return Array.from(t).map(e=>String.fromCharCode(e)).join("")}var fd=class{constructor(t,e,r){this.name=(r||t.tag||"").trim(),this.length=t.length,this.start=t.offset,this.offset=0,this.data=e,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(t){this.start=t,this.offset=0}skip(t=0,e=8){this.offset+=t*e/8}getValue(t,e){let r=this.start+this.offset;this.offset+=e;try{return this.data[t](r)}catch(o){throw console.error("parser",t,e,this),console.error("parser",this.start,this.offset),o}}flags(t){if(t===8||t===16||t===32||t===64)return this[`uint${t}`].toString(2).padStart(t,0).split("").map(e=>e==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let t=this.uint32;return ud([t>>24&255,t>>16&255,t>>8&255,t&255])}get fixed(){let t=this.int16,e=Math.round(1e3*this.uint16/65356);return t+e/1e3}get legacyFixed(){let t=this.uint16,e=this.uint16.toString(16).padStart(4,0);return parseFloat(`${t}.${e}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let t=0;for(let e=0;e<5;e++){let r=this.uint8;if(t=t*128+(r&127),r<128)break}return t}get longdatetime(){return new Date(ld+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let t=p.uint16,e=[0,1,-2,-1][t>>14],r=t&16383;return e+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(t=0,e=0,r=8,o=!1){if(t=t||this.length,t===0)return[];e&&(this.currentPosition=e);let s=`${o?"":"u"}int${r}`,a=[];for(;t--;)a.push(this[s]);return a}},Bt=class{constructor(t){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>t});let r=t.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(t){Object.keys(t).forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);r.get?this[e]=r.get.bind(this):r.value!==void 0&&(this[e]=r.value)}),this.parser.length&&this.parser.verifyLength()}},mt=class extends Bt{constructor(t,e,r){let{parser:o,start:s}=super(new fd(t,e,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(t,e,r){let o;Object.defineProperty(t,e,{get:()=>o||(o=r(),o),enumerable:!0})}var cd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:12},e,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new dd(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},e);Z(this.tables,s.tag.trim(),a)})}},dd=class{constructor(t){this.tag=t.tag,this.checksum=t.uint32,this.offset=t.uint32,this.length=t.uint32}},zl=Nl.inflate||void 0,Ml=void 0,md=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:44},e,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new pd(o)),hd(this,e,r)}},pd=class{constructor(t){this.tag=t.tag,this.offset=t.uint32,this.compLength=t.uint32,this.origLength=t.uint32,this.origChecksum=t.uint32}};function hd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=0,a=e;if(o.compLength!==o.origLength){let n=e.buffer.slice(o.offset,o.offset+o.compLength),l;if(zl)l=zl(new Uint8Array(n));else if(Ml)l=Ml(new Uint8Array(n));else{let h="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(h),new Error(h)}a=new DataView(l.buffer)}else s=o.offset;return r(t.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Gl=Dl,jl=void 0,gd=class extends mt{constructor(t,e,r){let{p:o}=super({offset:0,length:48},e,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new yd(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,h)=>{let f=this.directory[h+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=e.buffer.slice(s);if(Gl)a=Gl(new Uint8Array(n));else if(jl)a=new Uint8Array(jl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw t.onerror&&t.onerror(l),new Error(l)}vd(this,a,r)}},yd=class{constructor(t){this.flags=t.uint8;let e=this.tagNumber=this.flags&63;e===63?this.tag=t.tag:this.tag=bd(e);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=t.uint128,o&&(this.transformLength=t.uint128)}};function vd(t,e,r){t.tables={},t.directory.forEach(o=>{Z(t.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(e.slice(s,a).buffer);try{return r(t.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function bd(t){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][t&63]}var Xl={},Kl=!1;Promise.all([Promise.resolve().then(function(){return qd}),Promise.resolve().then(function(){return Xd}),Promise.resolve().then(function(){return Jd}),Promise.resolve().then(function(){return tm}),Promise.resolve().then(function(){return rm}),Promise.resolve().then(function(){return im}),Promise.resolve().then(function(){return um}),Promise.resolve().then(function(){return cm}),Promise.resolve().then(function(){return Sm}),Promise.resolve().then(function(){return Rm}),Promise.resolve().then(function(){return bp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return kp}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Ep}),Promise.resolve().then(function(){return Ip}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return Np}),Promise.resolve().then(function(){return Mp}),Promise.resolve().then(function(){return jp}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Yp}),Promise.resolve().then(function(){return Xp}),Promise.resolve().then(function(){return Qp}),Promise.resolve().then(function(){return $p}),Promise.resolve().then(function(){return eh}),Promise.resolve().then(function(){return oh}),Promise.resolve().then(function(){return nh}),Promise.resolve().then(function(){return ih}),Promise.resolve().then(function(){return fh}),Promise.resolve().then(function(){return gh}),Promise.resolve().then(function(){return wh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return Th}),Promise.resolve().then(function(){return Ph}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Lh}),Promise.resolve().then(function(){return Vh}),Promise.resolve().then(function(){return Gh}),Promise.resolve().then(function(){return Uh}),Promise.resolve().then(function(){return Yh})]).then(t=>{t.forEach(e=>{let r=Object.keys(e)[0];Xl[r]=e[r]}),Kl=!0});function wd(t,e,r){let o=e.tag.replace(/[^\w\d]/g,""),s=Xl[o];return s?new s(e,r,t):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Sd(){let t=0;function e(r,o){if(!Kl)return t>10?o(new Error("loading took too long")):(t++,setTimeout(()=>e(r),250));r(wd)}return new Promise((r,o)=>e(r))}function xd(t,e){let r=t.lastIndexOf("."),o=(t.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${t} is not a known webfont format.`),e)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function Cd(t,e,r={}){if(!globalThis.document)return;let o=xd(e,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` +var uf=Object.create;var la=Object.defineProperty;var ff=Object.getOwnPropertyDescriptor;var cf=Object.getOwnPropertyNames;var df=Object.getPrototypeOf,mf=Object.prototype.hasOwnProperty;var dt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var We=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var pf=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of cf(t))!mf.call(e,s)&&s!==r&&la(e,s,{get:()=>t[s],enumerable:!(o=ff(t,s))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?uf(df(e)):{},pf(t||!e||!e.__esModule?la(r,"default",{value:e,enumerable:!0}):r,e));var ie=We((cy,ua)=>{ua.exports=window.wp.i18n});var ve=We((my,ca)=>{ca.exports=window.wp.element});var Rr=We((py,da)=>{da.exports=window.React});var z=We((gy,ha)=>{ha.exports=window.ReactJSXRuntime});var Ir=We((Zy,Va)=>{Va.exports=window.wp.primitives});var mr=We((fv,Na)=>{Na.exports=window.wp.compose});var js=We((cv,Da)=>{Da.exports=window.wp.privateApis});var X=We((vv,Wa)=>{Wa.exports=window.wp.components});var Ja=We((Av,Ka)=>{Ka.exports=window.wp.editor});var xt=We((Rv,Qa)=>{Qa.exports=window.wp.coreData});var mt=We((Ev,$a)=>{$a.exports=window.wp.data});var Br=We((Iv,ei)=>{ei.exports=window.wp.blocks});var it=We((Lv,ti)=>{ti.exports=window.wp.blockEditor});var oi=We((Mv,ri)=>{ri.exports=window.wp.styleEngine});var li=We((Qv,ii)=>{"use strict";ii.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(t)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!e(t[s],r[s]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;for(s of t.entries())if(!e(s[1],r.get(s[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(t[s]!==r[s])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(a=Object.keys(t),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!e(t[n],r[n]))return!1}return!0}return t!==t&&r!==r}});var di=We((e1,ci)=>{"use strict";var Uf=function(t){return Wf(t)&&!Hf(t)};function Wf(e){return!!e&&typeof e=="object"}function Hf(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||Zf(e)}var qf=typeof Symbol=="function"&&Symbol.for,Yf=qf?Symbol.for("react.element"):60103;function Zf(e){return e.$$typeof===Yf}function Xf(e){return Array.isArray(e)?[]:{}}function lo(e,t){return t.clone!==!1&&t.isMergeableObject(e)?Nr(Xf(e),e,t):e}function Kf(e,t,r){return e.concat(t).map(function(o){return lo(o,r)})}function Jf(e,t){if(!t.customMerge)return Nr;var r=t.customMerge(e);return typeof r=="function"?r:Nr}function Qf(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function ui(e){return Object.keys(e).concat(Qf(e))}function fi(e,t){try{return t in e}catch{return!1}}function $f(e,t){return fi(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function ec(e,t,r){var o={};return r.isMergeableObject(e)&&ui(e).forEach(function(s){o[s]=lo(e[s],r)}),ui(t).forEach(function(s){$f(e,s)||(fi(e,s)&&r.isMergeableObject(t[s])?o[s]=Jf(s,r)(e[s],t[s],r):o[s]=lo(t[s],r))}),o}function Nr(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||Kf,r.isMergeableObject=r.isMergeableObject||Uf,r.cloneUnlessOtherwiseSpecified=lo;var o=Array.isArray(t),s=Array.isArray(e),a=o===s;return a?o?r.arrayMerge(e,t,r):ec(e,t,r):lo(t,r)}Nr.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(o,s){return Nr(o,s,r)},{})};var tc=Nr;ci.exports=tc});var vn=We((hb,ul)=>{ul.exports=window.wp.keycodes});var pl=We((kb,ml)=>{ml.exports=window.wp.apiFetch});var Gu=We((X3,Mu)=>{Mu.exports=window.wp.date});function fa(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(r=fa(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function hf(){for(var e,t,r=0,o="",s=arguments.length;r<s;r++)(e=arguments[r])&&(t=fa(e))&&(o&&(o+=" "),o+=t);return o}var Ze=hf;var pa=u(Rr(),1),ma={};function Ps(e,t){let r=pa.useRef(ma);return r.current===ma&&(r.current=e(t)),r}function gf(e,t){return function(o,...s){let a=new URL(e);return a.searchParams.set("code",o.toString()),s.forEach(n=>a.searchParams.append("args[]",n)),`${t} error #${o}; visit ${a} for the full message.`}}var yf=gf("https://base-ui.com/production-error","Base UI"),ga=yf;var fr=u(Rr(),1);function As(e,t,r,o){let s=Ps(va).current;return vf(s,e,t,r,o)&&ba(s,[e,t,r,o]),s.callback}function ya(e){let t=Ps(va).current;return bf(t,e)&&ba(t,e),t.callback}function va(){return{callback:null,cleanup:null,refs:[]}}function vf(e,t,r,o,s){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==s}function bf(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function ba(e,t){if(e.refs=t,t.every(r=>r==null)){e.callback=null;return}e.callback=r=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),r!=null){let o=Array(t.length).fill(null);for(let s=0;s<t.length;s+=1){let a=t[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}e.cleanup=()=>{for(let s=0;s<t.length;s+=1){let a=t[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var Sa=u(Rr(),1);var wa=u(Rr(),1),wf=parseInt(wa.version,10);function xa(e){return wf>=e}function Rs(e){if(!Sa.isValidElement(e))return null;let t=e,r=t.props;return(xa(19)?r?.ref:t.ref)??null}function ro(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}var Fy=Object.freeze([]),Er=Object.freeze({});function Ca(e,t){let r={};for(let o in e){let s=e[o];if(t?.hasOwnProperty(o)){let a=t[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Fa(e,t){return typeof e=="function"?e(t):e}function _a(e,t){return typeof e=="function"?e(t):e}var Es={};function ur(e,t,r,o,s){if(!r&&!o&&!s&&!e)return To(t);let a=To(e);return t&&(a=oo(a,t)),r&&(a=oo(a,r)),o&&(a=oo(a,o)),s&&(a=oo(a,s)),a}function ka(e){if(e.length===0)return Es;if(e.length===1)return To(e[0]);let t=To(e[0]);for(let r=1;r<e.length;r+=1)t=oo(t,e[r]);return t}function To(e){return Is(e)?{...Ta(e,Es)}:xf(e)}function oo(e,t){return Is(t)?Ta(t,e):Sf(e,t)}function xf(e){let t={...e};for(let r in t){let o=t[r];Oa(r,o)&&(t[r]=Pa(o))}return t}function Sf(e,t){if(!t)return e;for(let r in t){let o=t[r];switch(r){case"style":{e[r]=ro(e.style,o);break}case"className":{e[r]=Ls(e.className,o);break}default:Oa(r,o)?e[r]=Cf(e[r],o):e[r]=o}}return e}function Oa(e,t){let r=e.charCodeAt(0),o=e.charCodeAt(1),s=e.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof t=="function"||typeof t>"u")}function Is(e){return typeof e=="function"}function Ta(e,t){return Is(e)?e(t):e??Es}function Cf(e,t){return t?e?(...r)=>{let o=r[0];if(Ra(o)){let a=o;Aa(a);let n=t(...r);return a.baseUIHandlerPrevented||e?.(...r),n}let s=t(...r);return e?.(...r),s}:Pa(t):e}function Pa(e){return e&&((...t)=>{let r=t[0];return Ra(r)&&Aa(r),e(...t)})}function Aa(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Ls(e,t){return t?e?t+" "+e:t:e}function Ra(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Bs=u(Rr(),1);function Ea(e,t,r={}){let o=t.render,s=Ff(t,r);if(r.enabled===!1)return null;let a=r.state??Er;return Of(e,o,s,a)}function Ff(e,t={}){let{className:r,style:o,render:s}=e,{state:a=Er,ref:n,props:l,stateAttributesMapping:h,enabled:f=!0}=t,c=f?Fa(r,a):void 0,d=f?_a(o,a):void 0,m=f?Ca(a,h):Er,g=f&&l?_f(l):void 0,y=f?ro(m,g)??{}:Er;return typeof document<"u"&&(f?Array.isArray(n)?y.ref=ya([y.ref,Rs(s),...n]):y.ref=As(y.ref,Rs(s),n):As(null,null)),f?(c!==void 0&&(y.className=Ls(y.className,c)),d!==void 0&&(y.style=ro(y.style,d)),y):Er}function _f(e){return Array.isArray(e)?ka(e):ur(void 0,e)}var kf=Symbol.for("react.lazy");function Of(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let s=ur(r,t.props);s.ref=r.ref;let a=t;return a?.$$typeof===kf&&(a=fr.Children.toArray(t)[0]),fr.cloneElement(a,s)}if(e&&typeof e=="string")return Tf(e,r);throw new Error(ga(8))}function Tf(e,t){return e==="button"?(0,Bs.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Bs.createElement)("img",{alt:"",...t,key:t.key}):fr.createElement(e,t)}function Po(e){return Ea(e.defaultTagName??"div",e,e)}var Ba=u(ve(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4130d64bea']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","4130d64bea"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')),document.head.appendChild(e)}var Ia={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","1fb29d3a3c"),e.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")),document.head.appendChild(e)}var La={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ao=(0,Ba.forwardRef)(function({variant:t="body-md",render:r,className:o,...s},a){return Po({render:r,defaultTagName:"span",ref:a,props:ur(s,{className:Ze(Ia.text,La.heading,La.p,Ia[t],o)})})});var Ro=u(ve(),1),so=(0,Ro.forwardRef)(({icon:e,size:t=24,...r},o)=>(0,Ro.cloneElement)(e,{width:t,height:t,...r,ref:o}));var Eo=u(Ir(),1),Vs=u(z(),1),cr=(0,Vs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Vs.jsx)(Eo.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Io=u(Ir(),1),Ns=u(z(),1),dr=(0,Ns.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ns.jsx)(Io.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Lo=u(Ir(),1),Ds=u(z(),1),zs=(0,Ds.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Lo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Bo=u(Ir(),1),Ms=u(z(),1),Vo=(0,Ms.jsx)(Bo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ms.jsx)(Bo.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var No=u(Ir(),1),Gs=u(z(),1),Do=(0,Gs.jsx)(No.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Gs.jsx)(No.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var za=u(ve(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","b51ff41489"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var Pf={stack:"_19ce0419607e1896__stack"},Af={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Lr=(0,za.forwardRef)(function({direction:t,gap:r,align:o,justify:s,wrap:a,render:n,...l},h){let f={gap:r&&Af[r],alignItems:o,justifyContent:s,flexDirection:t,flexWrap:a};return Po({render:n,ref:h,props:ur(l,{style:f,className:Pf.stack})})});var Ma=u(ve(),1),Ga=u(z(),1),ja=(0,Ma.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...s},a)=>(0,Ga.jsx)(o,{ref:a,className:Ze("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...s,children:e}));ja.displayName="NavigableRegion";var Ua=ja;var Ha=u(X(),1),{Fill:qa,Slot:Ya}=(0,Ha.createSlotFill)("SidebarToggle");var wt=u(z(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='aa9c241ccc']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","aa9c241ccc"),e.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")),document.head.appendChild(e)}var pr={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function Za({headingLevel:e=1,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:a,actions:n,showSidebarToggle:l=!0}){let h=`h${e}`;return(0,wt.jsxs)(Lr,{direction:"column",className:pr.header,render:(0,wt.jsx)("header",{}),children:[(0,wt.jsxs)(Lr,{className:pr["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,wt.jsxs)(Lr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[l&&(0,wt.jsx)(Ya,{bubblesVirtually:!0,className:pr["sidebar-toggle-slot"]}),o&&(0,wt.jsx)("div",{className:pr["header-visual"],"aria-hidden":"true",children:o}),s&&(0,wt.jsx)(Ao,{className:pr["header-title"],render:(0,wt.jsx)(h,{}),variant:"heading-lg",children:s}),t,r]}),n&&(0,wt.jsx)(Lr,{align:"center",className:pr["header-actions"],direction:"row",gap:"sm",children:n})]}),a&&(0,wt.jsx)(Ao,{render:(0,wt.jsx)("p",{}),variant:"body-md",className:pr["header-subtitle"],children:a})]})}var no=u(z(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='aa9c241ccc']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","aa9c241ccc"),e.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")),document.head.appendChild(e)}var Us={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function Xa({headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:a,children:n,className:l,actions:h,ariaLabel:f,hasPadding:c=!1,showSidebarToggle:d=!0}){let m=Ze(Us.page,l);return(0,no.jsxs)(Ua,{className:m,ariaLabel:f??(typeof s=="string"?s:""),children:[(s||t||r||h||o)&&(0,no.jsx)(Za,{headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:a,actions:h,showSidebarToggle:d}),c?(0,no.jsx)("div",{className:Ze(Us.content,Us["has-padding"]),children:n}):n]})}Xa.SidebarToggleFill=qa;var Ws=Xa;var Jr=u(ie()),rf=u(X()),of=u(Ja()),_s=u(xt()),sf=u(mt()),nf=u(ve());var $u=u(X(),1),ef=u(Br(),1),ey=u(mt(),1),ty=u(it(),1),$n=u(ve(),1),ry=u(mr(),1);function Vr(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let a of t){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,e}var St=(e,t,r)=>{let o=Array.isArray(t)?t:t.split("."),s=e;return o.forEach(a=>{s=s?.[a]}),s??r};var Rf=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.minWidth","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function Hs(e,t,r){let o=r?".blocks."+r:"",s=t?"."+t:"",a=`settings${o}${s}`,n=`settings${s}`;if(t)return St(e,a)??St(e,n);let l={};return Rf.forEach(h=>{let f=St(e,`settings${o}.${h}`)??St(e,`settings.${h}`);f!==void 0&&(l=Vr(l,h.split("."),f))}),l}function qs(e,t,r,o){let s=o?".blocks."+o:"",a=t?"."+t:"",n=`settings${s}${a}`;return Vr(e,n.split("."),r)}var zf=u(oi(),1);var Ef="1600px",If="320px",Lf=1,Bf=.25,Vf=.75,Nf="14px";function si({minimumFontSize:e,maximumFontSize:t,fontSize:r,minimumViewportWidth:o=If,maximumViewportWidth:s=Ef,scaleFactor:a=Lf,minimumFontSizeLimit:n}){if(n=It(n)?n:Nf,r){let b=It(r);if(!b?.unit||!b?.value)return null;let O=It(n,{coerceTo:b.unit});if(O?.value&&!e&&!t&&b?.value<=O?.value)return null;if(t||(t=`${b.value}${b.unit}`),!e){let q=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(q),Bf),Vf),N=ao(b.value*I,3);O?.value&&N<O?.value?e=`${O.value}${O.unit}`:e=`${N}${b.unit}`}}let l=It(e),h=l?.unit||"rem",f=It(t,{coerceTo:h});if(!l||!f)return null;let c=It(e,{coerceTo:"rem"}),d=It(s,{coerceTo:h}),m=It(o,{coerceTo:h});if(!d||!m||!c)return null;let g=d.value-m.value;if(!g)return null;let y=ao(m.value/100,3),T=ao(y,3)+h,A=100*((f.value-l.value)/g),_=ao((A||1)*a,3),S=`${c.value}${c.unit} + ((1vw - ${T}) * ${_})`;return`clamp(${e}, ${S}, ${t})`}function It(e,t={}){if(typeof e!="string"&&typeof e!="number")return null;isFinite(e)&&(e=`${e}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...t},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=e.toString().match(n);if(!l||l.length<3)return null;let[,h,f]=l,c=parseFloat(h);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:ao(c,3),unit:f}:null}function ao(e,t=3){let r=Math.pow(10,t);return Math.round(e*r)/r}function Ys(e){let t=e?.fluid;return t===!0||t&&typeof t=="object"&&Object.keys(t).length>0}function Df(e){let t=e?.typography??{},r=e?.layout,o=It(r?.wideSize)?r?.wideSize:null;return Ys(t)&&o?{fluid:{maxViewportWidth:o,...typeof t.fluid=="object"?t.fluid:{}}}:{fluid:t?.fluid}}function ni(e,t){let{size:r}=e;if(!r||r==="0"||e?.fluid===!1||!Ys(t?.typography)&&!Ys(e))return r;let o=Df(t)?.fluid??{},s=si({minimumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.min,maximumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Mf=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:e})=>`url( '#wp-duotone-${e}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(e,t)=>ni(e,t),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:e})=>e,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function ai(e,t,r=[],o="slug",s){let a=[t?St(e,["blocks",t,...r]):void 0,St(e,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let h of l){let f=n[h];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||ai(e,t,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Gf(e,t,r,[o,s]=[]){let a=Mf.find(l=>l.cssVarInfix===o);if(!a||!e.settings)return r;let n=ai(e.settings,t,a.path,"slug",s);if(n){let{valueKey:l}=a,h=n[l];return zo(e,t,h)}return r}function jf(e,t,r,o=[]){let s=(t?St(e?.settings??{},["blocks",t,"custom",...o]):void 0)??St(e?.settings??{},["custom",...o]);return s?zo(e,t,s):r}function zo(e,t,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=St(e,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...h]=n;return l==="preset"?Gf(e,t,r,h):l==="custom"?jf(e,t,r,h):r}function Mo(e,t,r,o=!0){let s=t?"."+t:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!e)return;let n=St(e,a);return o?zo(e,r,n):n}function Zs(e,t,r,o){let s=t?"."+t:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Vr(e,a.split("."),r)}var Xs=u(li(),1);function io(e,t){return typeof e!="object"||typeof t!="object"?e===t:(0,Xs.default)(e?.styles,t?.styles)&&(0,Xs.default)(e?.settings,t?.settings)}var hi=u(di(),1);function mi(e){return Object.prototype.toString.call(e)==="[object Object]"}function pi(e){var t,r;return mi(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(mi(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function hr(e,t){return(0,hi.default)(e,t,{isMergeableObject:pi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var rc={grad:.9,turn:360,rad:360/(2*Math.PI)},Ut=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Xe=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},kt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Ci=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},gi=function(e){return{r:kt(e.r,0,255),g:kt(e.g,0,255),b:kt(e.b,0,255),a:kt(e.a)}},Ks=function(e){return{r:Xe(e.r),g:Xe(e.g),b:Xe(e.b),a:Xe(e.a,3)}},oc=/^#([0-9a-f]{3,8})$/i,Go=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Fi=function(e){var t=e.r,r=e.g,o=e.b,s=e.a,a=Math.max(t,r,o),n=a-Math.min(t,r,o),l=n?a===t?(r-o)/n:a===r?2+(o-t)/n:4+(t-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},_i=function(e){var t=e.h,r=e.s,o=e.v,s=e.a;t=t/360*6,r/=100,o/=100;var a=Math.floor(t),n=o*(1-r),l=o*(1-(t-a)*r),h=o*(1-(1-t+a)*r),f=a%6;return{r:255*[o,l,n,n,h,o][f],g:255*[h,o,o,l,n,n][f],b:255*[n,n,h,o,o,l][f],a:s}},yi=function(e){return{h:Ci(e.h),s:kt(e.s,0,100),l:kt(e.l,0,100),a:kt(e.a)}},vi=function(e){return{h:Xe(e.h),s:Xe(e.s),l:Xe(e.l),a:Xe(e.a,3)}},bi=function(e){return _i((r=(t=e).s,{h:t.h,s:(r*=((o=t.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:t.a}));var t,r,o},uo=function(e){return{h:(t=Fi(e)).h,s:(s=(200-(r=t.s))*(o=t.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:t.a};var t,r,o,s},sc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ac=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ic=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$s={string:[[function(e){var t=oc.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Xe(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Xe(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=ac.exec(e)||ic.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:gi({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=sc.exec(e)||nc.exec(e);if(!t)return null;var r,o,s=yi({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(rc[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return bi(s)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,s=e.a,a=s===void 0?1:s;return Ut(t)&&Ut(r)&&Ut(o)?gi({r:Number(t),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,s=e.a,a=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var n=yi({h:Number(t),s:Number(r),l:Number(o),a:Number(a)});return bi(n)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,s=e.a,a=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var n=(function(l){return{h:Ci(l.h),s:kt(l.s,0,100),v:kt(l.v,0,100),a:kt(l.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(a)});return _i(n)},"hsv"]]},wi=function(e,t){for(var r=0;r<t.length;r++){var o=t[r][0](e);if(o)return[o,t[r][1]]}return[null,void 0]},lc=function(e){return typeof e=="string"?wi(e.trim(),$s.string):typeof e=="object"&&e!==null?wi(e,$s.object):[null,void 0]};var Js=function(e,t){var r=uo(e);return{h:r.h,s:kt(r.s+100*t,0,100),l:r.l,a:r.a}},Qs=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},xi=function(e,t){var r=uo(e);return{h:r.h,s:r.s,l:kt(r.l+100*t,0,100),a:r.a}},en=(function(){function e(t){this.parsed=lc(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return Xe(Qs(this.rgba),2)},e.prototype.isDark=function(){return Qs(this.rgba)<.5},e.prototype.isLight=function(){return Qs(this.rgba)>=.5},e.prototype.toHex=function(){return t=Ks(this.rgba),r=t.r,o=t.g,s=t.b,n=(a=t.a)<1?Go(Xe(255*a)):"","#"+Go(r)+Go(o)+Go(s)+n;var t,r,o,s,a,n},e.prototype.toRgb=function(){return Ks(this.rgba)},e.prototype.toRgbString=function(){return t=Ks(this.rgba),r=t.r,o=t.g,s=t.b,(a=t.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var t,r,o,s,a},e.prototype.toHsl=function(){return vi(uo(this.rgba))},e.prototype.toHslString=function(){return t=vi(uo(this.rgba)),r=t.h,o=t.s,s=t.l,(a=t.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var t,r,o,s,a},e.prototype.toHsv=function(){return t=Fi(this.rgba),{h:Xe(t.h),s:Xe(t.s),v:Xe(t.v),a:Xe(t.a,3)};var t},e.prototype.invert=function(){return Lt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),Lt(Js(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),Lt(Js(this.rgba,-t))},e.prototype.grayscale=function(){return Lt(Js(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),Lt(xi(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),Lt(xi(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?Lt({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Xe(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=uo(this.rgba);return typeof t=="number"?Lt({h:t,s:r.s,l:r.l,a:r.a}):Xe(r.h)},e.prototype.isEqual=function(t){return this.toHex()===Lt(t).toHex()},e})(),Lt=function(e){return e instanceof en?e:new en(e)},Si=[],ki=function(e){e.forEach(function(t){Si.indexOf(t)<0&&(t(en,$s),Si.push(t))})};var tn=u(ve(),1);var Oi=u(ve(),1),Je=(0,Oi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var Ti=u(z(),1);function fo({children:e,value:t,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,tn.useMemo)(()=>hr(r,t),[r,t]),n=(0,tn.useMemo)(()=>({user:t,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[t,r,a,o,s]);return(0,Ti.jsx)(Je.Provider,{value:n,children:e})}var Wt=u(X(),1),Yi=u(ie(),1);var Sc=u(mt(),1),Cc=u(xt(),1);var Pi=u(z(),1);function rn({className:e,...t}){return(0,Pi.jsx)(so,{className:Ze(e,"global-styles-ui-icon-with-current-color"),...t})}var Jt=u(X(),1);var gr=u(z(),1);function uc({icon:e,children:t,...r}){return(0,gr.jsxs)(Jt.__experimentalItem,{...r,children:[e&&(0,gr.jsxs)(Jt.__experimentalHStack,{justify:"flex-start",children:[(0,gr.jsx)(rn,{icon:e,size:24}),(0,gr.jsx)(Jt.FlexItem,{children:t})]}),!e&&t]})}function Bt(e){return(0,gr.jsx)(Jt.Navigator.Button,{as:uc,...e})}var dc=u(X(),1);var mc=u(ie(),1),Vi=u(it(),1);var on=function(e){var t=e/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},sn=function(e){return .2126*on(e.r)+.7152*on(e.g)+.0722*on(e.b)};function Ai(e){e.prototype.luminance=function(){return t=sn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*t)/o+0;var t,r,o},e.prototype.contrast=function(t){t===void 0&&(t="#FFF");var r,o,s,a,n,l,h,f=t instanceof e?t:new e(t);return a=this.rgba,n=f.toRgb(),l=sn(a),h=sn(n),r=l>h?(l+.05)/(h+.05):(h+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},e.prototype.isReadable=function(t,r){return t===void 0&&(t="#FFF"),r===void 0&&(r={}),this.contrast(t)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Rt=u(ve(),1),Ii=u(mt(),1),Li=u(xt(),1),an=u(ie(),1);var He=u(ie(),1),C1={link:[{value:":link",label:(0,He.__)("Link")},{value:":any-link",label:(0,He.__)("Any Link")},{value:":visited",label:(0,He.__)("Visited")},{value:":hover",label:(0,He.__)("Hover")},{value:":focus",label:(0,He.__)("Focus")},{value:":focus-visible",label:(0,He.__)("Focus-visible")},{value:":active",label:(0,He.__)("Active")}],button:[{value:":link",label:(0,He.__)("Link")},{value:":any-link",label:(0,He.__)("Any Link")},{value:":visited",label:(0,He.__)("Visited")},{value:":hover",label:(0,He.__)("Hover")},{value:":focus",label:(0,He.__)("Focus")},{value:":focus-visible",label:(0,He.__)("Focus-visible")},{value:":active",label:(0,He.__)("Active")}]},F1={"core/button":[{value:":hover",label:(0,He.__)("Hover")},{value:":focus",label:(0,He.__)("Focus")},{value:":focus-visible",label:(0,He.__)("Focus-visible")},{value:":active",label:(0,He.__)("Active")}]};function nn(e,t){if(!t?.length||typeof e!="object"||!e||!Object.keys(e).length)return e;for(let r in e)t.includes(r)?delete e[r]:typeof e[r]=="object"&&nn(e[r],t);return e}var jo=(e,t)=>{if(!e||!t?.length)return{};let r={};return Object.keys(e).forEach(o=>{if(t.includes(o))r[o]=e[o];else if(typeof e[o]=="object"){let s=jo(e[o],t);Object.keys(s).length&&(r[o]=s)}}),r};function co(e,t){let r=jo(structuredClone(e),t);return io(r,e)}function Ri(e,t){if(!Array.isArray(e)||!t)return null;let o=t.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return e.find(s=>s.slug===o)}function Ei(e){let t=e?.settings?.typography?.fontFamilies?.theme,r=e?.settings?.typography?.fontFamilies?.custom,o=[];t&&r?o=[...t,...r]:t?o=t:r&&(o=r);let s=e?.styles?.typography?.fontFamily,a=Ri(o,s),n=e?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=Ri(o,e?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}ki([Ai]);function _e(e,t,r="merged",o=!0,s){let{user:a,base:n,merged:l,onChange:h}=(0,Rt.useContext)(Je),f=l;r==="base"?f=n:r==="user"&&(f=a);let c=(0,Rt.useMemo)(()=>{let m=Mo(f,e,t,o);return s?m?.[s]??{}:m},[f,e,t,o,s]),d=(0,Rt.useCallback)(m=>{let g=m;s&&(g={...Mo(a,e,t,!1),[s]:m});let y=Zs(a,e,g,t);h(y)},[a,h,e,t,s]);return[c,d]}function Te(e,t,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Rt.useContext)(Je),l=a;r==="base"?l=s:r==="user"&&(l=o);let h=(0,Rt.useMemo)(()=>Hs(l,e,t),[l,e,t]),f=(0,Rt.useCallback)(c=>{let d=qs(o,e,c,t);n(d)},[o,n,e,t]);return[h,f]}var fc=[];function cc({title:e,settings:t,styles:r}){return e===(0,an.__)("Default")||Object.keys(t||{}).length>0||Object.keys(r||{}).length>0}function Uo(e=[]){let{variationsFromTheme:t}=(0,Ii.useSelect)(o=>({variationsFromTheme:o(Li.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||fc}),[]),{user:r}=(0,Rt.useContext)(Je);return(0,Rt.useMemo)(()=>{let o=structuredClone(r),s=nn(o,e);s.title=(0,an.__)("Default");let a=t.filter(l=>co(l,e)).map(l=>hr(s,l)),n=[s,...a];return n?.length?n.filter(cc):[]},[e,r,t])}var Bi=u(js(),1),{lock:E1,unlock:ye}=(0,Bi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var ln=u(z(),1),{useHasDimensionsPanel:N1,useHasTypographyPanel:D1,useHasColorPanel:z1,useSettingsForBlockElement:M1,useHasBackgroundPanel:G1}=ye(Vi.privateApis);var Vt=u(X(),1);function Dr(){let[e="black"]=_e("color.text"),[t="white"]=_e("color.background"),[r=e]=_e("elements.h1.color.text"),[o=r]=_e("elements.link.color.text"),[s=o]=_e("elements.button.color.background"),[a]=Te("color.palette.core")||[],[n]=Te("color.palette.theme")||[],[l]=Te("color.palette.custom")||[],h=(n??[]).concat(l??[]).concat(a??[]),f=h.filter(({color:m})=>m===e),c=h.filter(({color:m})=>m===s),d=f.concat(c).concat(h).filter(({color:m})=>m!==t).slice(0,2);return{paletteColors:h,highlightedColors:d}}var zi=u(ve(),1),Mi=u(X(),1),fn=u(ie(),1);function pc(e,t){return t.length===0?null:(t.sort((r,o)=>Math.abs(e-r)-Math.abs(e-o)),t[0])}function hc(e){let t=[];return e.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)t.push(n)}else o.length===1&&t.push(parseInt(o[0]))}),t}function Ni(e){let t=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=e.trim(),o=s=>(s=s.trim(),s.match(t)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function un(e){if(!e)return"";let t=e.trim();return t.includes(",")&&(t=(t.split(",").find(r=>r.trim()!=="")??"").trim()),t=t.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(t=`"${t}"`),t}function zr(e){let t={fontFamily:Ni(e.fontFamily)};if(!("fontFace"in e)||!Array.isArray(e.fontFace))return t.fontWeight="400",t.fontStyle="normal",t;if(e.fontFace){let r=e.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){t.fontStyle="normal";let o=hc(r),s=pc(400,o);t.fontWeight=String(s)||"400"}else t.fontStyle=e.fontFace.length&&e.fontFace[0].fontStyle||"normal",t.fontWeight=e.fontFace.length&&String(e.fontFace[0].fontWeight)||"400"}return t}function Di(e){return{fontFamily:Ni(e.fontFamily),fontStyle:e.fontStyle||"normal",fontWeight:e.fontWeight||"400"}}var mo=u(z(),1);function Wo({fontSize:e,variation:t}){let{base:r}=(0,zi.useContext)(Je),o=r;t&&(o={...r,...t});let[s]=_e("color.text"),[a,n]=Ei(o),l=a?zr(a):{},h=n?zr(n):{};return s&&(l.color=s,h.color=s),e&&(l.fontSize=e,h.fontSize=e),(0,mo.jsxs)(Mi.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,mo.jsx)("span",{style:h,children:(0,fn._x)("A","Uppercase letter A")}),(0,mo.jsx)("span",{style:l,children:(0,fn._x)("a","Lowercase letter A")})]})}var Gi=u(X(),1);var ji=u(z(),1);function Ui({normalizedColorSwatchSize:e,ratio:t}){let{highlightedColors:r}=Dr(),o=e*t;return r.map(({slug:s,color:a},n)=>(0,ji.jsx)(Gi.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var qi=u(X(),1),Mr=u(mr(),1),yr=u(ve(),1);var Qt=u(z(),1),Wi=248,Hi=152,gc={leading:!0,trailing:!0};function yc({children:e,label:t,isFocused:r,withHoverView:o}){let[s="white"]=_e("color.background"),[a]=_e("color.gradient"),n=(0,Mr.useReducedMotion)(),[l,h]=(0,yr.useState)(!1),[f,{width:c}]=(0,Mr.useResizeObserver)(),[d,m]=(0,yr.useState)(c),[g,y]=(0,yr.useState)(),T=(0,Mr.useThrottle)(m,250,gc);(0,yr.useLayoutEffect)(()=>{c&&T(c)},[c,T]),(0,yr.useLayoutEffect)(()=>{let b=d?d/Wi:1,O=b-(g||0);(Math.abs(O)>.1||!g)&&y(b)},[d,g]);let A=c?c/Wi:1,_=g||A;return(0,Qt.jsxs)(Qt.Fragment,{children:[(0,Qt.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qt.jsx)("div",{className:Ze("global-styles-ui-preview__wrapper",{"is-hoverable":o}),style:{height:Hi*_},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),tabIndex:-1,children:(0,Qt.jsx)(qi.__unstableMotion.div,{style:{height:Hi*_,width:"100%",background:a??s},initial:"start",animate:(l||r)&&!n&&t?"hover":"start",children:[].concat(e).map((b,O)=>b({ratio:_,key:O}))})})]})}var Gr=yc;var pt=u(z(),1),vc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},bc={hover:{opacity:1},start:{opacity:.5}},wc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function xc({label:e,isFocused:t,withHoverView:r,variation:o}){let[s]=_e("typography.fontWeight"),[a="serif"]=_e("typography.fontFamily"),[n=a]=_e("elements.h1.typography.fontFamily"),[l=s]=_e("elements.h1.typography.fontWeight"),[h="black"]=_e("color.text"),[f=h]=_e("elements.h1.color.text"),{paletteColors:c}=Dr();return(0,pt.jsxs)(Gr,{label:e,isFocused:t,withHoverView:r,children:[({ratio:d,key:m})=>(0,pt.jsx)(Vt.__unstableMotion.div,{variants:vc,style:{height:"100%",overflow:"hidden"},children:(0,pt.jsxs)(Vt.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,pt.jsx)(Wo,{fontSize:65*d,variation:o}),(0,pt.jsx)(Vt.__experimentalVStack,{spacing:4*d,children:(0,pt.jsx)(Ui,{normalizedColorSwatchSize:32,ratio:d})})]})},m),({key:d})=>(0,pt.jsx)(Vt.__unstableMotion.div,{variants:r?bc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,pt.jsx)(Vt.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:m},g)=>(0,pt.jsx)("div",{style:{height:"100%",background:m,flexGrow:1}},g))})},d),({ratio:d,key:m})=>(0,pt.jsx)(Vt.__unstableMotion.div,{variants:wc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,pt.jsx)(Vt.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:e&&(0,pt.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:e})})},m)]})}var cn=xc;var Zi=u(z(),1);var mn=u(Br(),1),jr=u(ie(),1),br=u(X(),1),pn=u(mt(),1),$t=u(ve(),1),Ho=u(it(),1),el=u(mr(),1);import{speak as Oc}from"@wordpress/a11y";var Xi=u(Br(),1),Ki=u(mt(),1),Fc=u(X(),1);var _c=u(z(),1);function kc(e,t){return e?.filter(r=>r.source==="block"||t.includes(r.name))||[]}function dn(e){let t=(0,Ki.useSelect)(s=>{let{getBlockStyles:a}=s(Xi.store);return a(e)},[e]),[r]=_e("variations",e),o=Object.keys(r??{});return kc(t,o)}var vr=u(X(),1),Ji=u(ie(),1);var Qi=u(it(),1);var $i=u(z(),1),{StateControl:v0}=ye(Qi.privateApis);var Nt=u(z(),1),{useHasDimensionsPanel:Tc,useHasTypographyPanel:Pc,useHasBorderPanel:Ac,useSettingsForBlockElement:Rc,useHasColorPanel:Ec}=ye(Ho.privateApis);function Ic(){let e=(0,pn.useSelect)(s=>s(mn.store).getBlockTypes(),[]),t=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=e.reduce(t,{core:[],noncore:[]});return[...r,...o]}function Lc(e){let[t]=Te("",e),r=Rc(t,e),o=Pc(r),s=Ec(r),a=Ac(r),n=Tc(r),l=a||n,h=!!dn(e)?.length;return o||s||l||h}function Bc({block:e}){return Lc(e.name)?(0,Nt.jsx)(Bt,{path:"/blocks/"+encodeURIComponent(e.name),children:(0,Nt.jsxs)(br.__experimentalHStack,{justify:"flex-start",children:[(0,Nt.jsx)(Ho.BlockIcon,{icon:e.icon}),(0,Nt.jsx)(br.FlexItem,{children:e.title})]})}):null}function Vc({filterValue:e}){let t=Ic(),r=(0,el.useDebounce)(Oc,500),{isMatchingSearchTerm:o}=(0,pn.useSelect)(mn.store),s=e?t.filter(n=>o(n,e)):t,a=(0,$t.useRef)(null);return(0,$t.useEffect)(()=>{if(!e)return;let n=a.current?.childElementCount||0,l=(0,jr.sprintf)((0,jr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[e,r]),(0,Nt.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,Nt.jsx)(br.__experimentalText,{align:"center",as:"p",children:(0,jr.__)("No blocks found.")}):s.map(n=>(0,Nt.jsx)(Bc,{block:n},"menu-itemblock-"+n.name))})}var k0=(0,$t.memo)(Vc);var Gc=u(Br(),1),sl=u(it(),1),hn=u(ve(),1),jc=u(mt(),1),Uc=u(xt(),1),gn=u(X(),1),nl=u(ie(),1);var Nc=u(it(),1),tl=u(Br(),1),Dc=u(X(),1),zc=u(ve(),1);var Mc=u(z(),1);var rl=u(X(),1),ol=u(z(),1);function Ct({children:e,level:t=2}){return(0,ol.jsx)(rl.__experimentalHeading,{className:"global-styles-ui-subtitle",level:t,children:e})}var yn=u(z(),1);var{useHasDimensionsPanel:U0,useHasTypographyPanel:W0,useHasBorderPanel:H0,useSettingsForBlockElement:q0,useHasColorPanel:Y0,useHasFiltersPanel:Z0,useHasImageSettingsPanel:X0,useHasBackgroundPanel:K0,BackgroundPanel:J0,BorderPanel:Q0,ColorPanel:$0,TypographyPanel:eb,DimensionsPanel:tb,FiltersPanel:rb,ImageSettingsPanel:ob,AdvancedPanel:sb}=ye(sl.privateApis);var rg=u(ie(),1),og=u(X(),1),sg=u(ve(),1);var Wc=u(X(),1);var Hc=u(z(),1);var qc=u(ie(),1),qo=u(X(),1);var al=u(z(),1);var Xo=u(X(),1);var il=u(X(),1);var Yo=u(z(),1),Yc=({variation:e,isFocused:t,withHoverView:r})=>(0,Yo.jsx)(Gr,{label:e.title,isFocused:t,withHoverView:r,children:({ratio:o,key:s})=>(0,Yo.jsx)(il.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Yo.jsx)(Wo,{variation:e,fontSize:85*o})},s)}),ll=Yc;var fl=u(X(),1),wr=u(ve(),1),cl=u(vn(),1),Zo=u(ie(),1);var po=u(z(),1);function Ur({variation:e,children:t,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,wr.useState)(!1),{base:l,user:h,onChange:f}=(0,wr.useContext)(Je),c=(0,wr.useMemo)(()=>{let A=hr(l,e);return o&&(A=jo(A,o)),{user:e,base:l,merged:A,onChange:()=>{}}},[e,l,o]),d=()=>f(e),m=A=>{A.keyCode===cl.ENTER&&(A.preventDefault(),d())},g=(0,wr.useMemo)(()=>io(h,e),[h,e]),y=e?.title;e?.description&&(y=(0,Zo.sprintf)((0,Zo._x)("%1$s (%2$s)","variation label"),e?.title,e?.description));let T=(0,po.jsx)("div",{className:Ze("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:d,onKeyDown:m,tabIndex:0,"aria-label":y,"aria-current":g,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,po.jsx)("div",{className:Ze("global-styles-ui-variations_item-preview",{"is-pill":r}),children:t(a)})});return(0,po.jsx)(Je.Provider,{value:c,children:s?(0,po.jsx)(fl.Tooltip,{text:e?.title,children:T}):T})}var xr=u(z(),1),dl=["typography"];function Ko({title:e,gap:t=2}){let r=Uo(dl);return r?.length<=1?null:(0,xr.jsxs)(Xo.__experimentalVStack,{spacing:3,children:[e&&(0,xr.jsx)(Ct,{level:3,children:e}),(0,xr.jsx)(Xo.__experimentalGrid,{columns:3,gap:t,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,xr.jsx)(Ur,{variation:o,properties:dl,showTooltip:!0,children:()=>(0,xr.jsx)(ll,{variation:o})},s))})]})}var eg=u(ie(),1),xo=u(X(),1);var tg=u(ve(),1);var Ht=u(ve(),1),or=u(mt(),1),rr=u(xt(),1),Sn=u(ie(),1);var bn=u(pl(),1),hl=u(xt(),1),gl="/wp/v2/font-families";function yl(e){let{receiveEntityRecords:t}=e.dispatch(hl.store);t("postType","wp_font_family",[],void 0,!0)}async function vl(e,t){let o=await(0,bn.default)({path:gl,method:"POST",body:e});return yl(t),{id:o.id,...o.font_family_settings,fontFace:[]}}async function bl(e,t,r){let o={path:`${gl}/${e}/font-faces`,method:"POST",body:t},s=await(0,bn.default)(o);return yl(r),{id:s.id,...s.font_face_settings}}var Sl=u(X(),1);var Ot=u(ie(),1),wn=["otf","ttf","woff","woff2"],wl={100:(0,Ot._x)("Thin","font weight"),200:(0,Ot._x)("Extra-light","font weight"),300:(0,Ot._x)("Light","font weight"),400:(0,Ot._x)("Normal","font weight"),500:(0,Ot._x)("Medium","font weight"),600:(0,Ot._x)("Semi-bold","font weight"),700:(0,Ot._x)("Bold","font weight"),800:(0,Ot._x)("Extra-bold","font weight"),900:(0,Ot._x)("Black","font weight")},xl={normal:(0,Ot._x)("Normal","font style"),italic:(0,Ot._x)("Italic","font style")};var{File:Cl}=window,{kebabCase:Zc}=ye(Sl.privateApis);function er(e,t={}){return!e.name&&(e.fontFamily||e.slug)&&(e.name=e.fontFamily||e.slug),{...e,...t}}function Xc(e){return typeof e!="string"?!1:e!==decodeURIComponent(e)}function Jo(e){let t=wl[e.fontWeight??""]||e.fontWeight,r=e.fontStyle==="normal"?"":xl[e.fontStyle??""]||e.fontStyle;return`${t} ${r}`}function Kc(e=[],t=[]){let r=new Map;for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function Fl(e=[],t=[]){let r=new Map;for(let o of e)r.set(o.slug,{...o});for(let o of t)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=Kc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function tr(e,t,r="all"){let o;if(typeof t=="string")o=`url(${t})`;else if(t instanceof Cl)o=await t.arrayBuffer();else return;let a=await new window.FontFace(un(e.fontFamily),o,{style:e.fontStyle,weight:String(e.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function ho(e,t="all"){let r=o=>{o.forEach(s=>{s.family===un(e?.fontFamily)&&s.weight===e?.fontWeight&&s.style===e?.fontStyle&&o.delete(s)})};if((t==="document"||t==="all")&&r(document.fonts),t==="iframe"||t==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Wr(e){if(!e)return;let t;if(Array.isArray(e)?t=e[0]:t=e,!t.startsWith("file:."))return Xc(t)||(t=encodeURI(t)),t}function _l(e){let t=new FormData,{fontFace:r,category:o,...s}=e,a={...s,slug:Zc(e.slug)};return t.append("font_family_settings",JSON.stringify(a)),t}function kl(e){return(e?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((h,f)=>{let c=`file-${o}-${f}`;a.append(c,h,h.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function Ol(e,t,r){let o=[];for(let a of t)try{let n=await bl(e,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:t[n],message:a.reason.message})}),s}async function Tl(e){e=Array.isArray(e)?e:[e];let t=await Promise.all(e.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new Cl([o],s,{type:o.type})})));return t.length===1?t[0]:t}function xn(e,t){return t.findIndex(r=>r.fontWeight===e.fontWeight&&r.fontStyle===e.fontStyle)!==-1}function Pl(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let a of t){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,e}function Qo(e,t,r=[]){let o=h=>h.slug===e.slug,s=h=>h.find(o),a=h=>h?r.filter(f=>!o(f)):[...r,e],n=h=>{let f=d=>d.fontWeight===t.fontWeight&&d.fontStyle===t.fontStyle;if(!h)return[...r,{...e,fontFace:[t]}];let c=h.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,t],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return t?n(l):a(l)}var Al=u(z(),1),lt=(0,Ht.createContext)({});lt.displayName="FontLibraryContext";function Jc({children:e}){let t=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(x=>{let{__experimentalGetCurrentGlobalStylesId:E}=x(rr.store);return{globalStylesId:E()}},[]),a=(0,rr.useEntityRecord)("root","globalStyles",s),[n,l]=(0,Ht.useState)(!1),{records:h=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(h||[]).map(x=>({id:x.id,...x.font_family_settings||{},fontFace:x?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,m]=Te("typography.fontFamilies"),g=async x=>{if(!a.record)return;let E=a.record,te=Pl(E??{},["settings","typography","fontFamilies"],x);await r("root","globalStyles",te)},[y,T]=(0,Ht.useState)(""),[A,_]=(0,Ht.useState)(void 0),S=d?.theme?d.theme.map(x=>er(x,{source:"theme"})).sort((x,E)=>x.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[],O=c?c.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[];(0,Ht.useEffect)(()=>{y||_(void 0)},[y]);let q=x=>{if(!x){_(void 0);return}let te=(x.source==="theme"?S:O).find(ce=>ce.slug===x.slug);_({...te||x,source:x.source})},[I]=(0,Ht.useState)(new Set),N=x=>x.reduce((te,ce)=>{let ae=ce?.fontFace&&ce.fontFace?.length>0?ce?.fontFace.map(Ce=>`${Ce.fontStyle??""}${Ce.fontWeight??""}`):["normal400"];return te[ce.slug]=ae,te},{}),W=x=>N(x==="theme"?S:b),$=(x,E,te,ce)=>!E&&!te?!!W(ce)[x]:!!W(ce)[x]?.includes((E??"")+(te??"")),be=(x,E)=>W(E)[x]||[];async function H(x){l(!0);try{let E=[],te=[];for(let ae of x){let Ce=!1,qe=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:ae.slug,per_page:1,_embed:!0}),ke=qe&&qe.length>0?qe[0]:null,J=ke?{id:ke.id,...ke.font_family_settings,fontFace:(ke?._embedded?.font_faces??[]).map(ze=>ze.font_face_settings)||[]}:null;J||(Ce=!0,J=await vl(_l(ae),t));let Se=J.fontFace&&ae.fontFace?J.fontFace.filter(ze=>ze&&ae.fontFace&&xn(ze,ae.fontFace)):[];J.fontFace&&ae.fontFace&&(ae.fontFace=ae.fontFace.filter(ze=>!xn(ze,J.fontFace)));let Ae=[],Ft=[];if(ae?.fontFace?.length??!1){let ze=await Ol(J.id,kl(ae),t);Ae=ze?.successes,Ft=ze?.errors}(Ae?.length>0||Se?.length>0)&&(J.fontFace=[...Ae],E.push(J)),J&&!ae?.fontFace?.length&&E.push(J),Ce&&(ae?.fontFace?.length??0)>0&&Ae?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),te=te.concat(Ft)}let ce=te.reduce((ae,Ce)=>ae.includes(Ce.message)?ae:[...ae,Ce.message],[]);if(E.length>0){let ae=le(E);await g(ae)}if(ce.length>0){let ae=new Error((0,Sn.__)("There was an error installing fonts."));throw ae.installationErrors=ce,ae}}finally{l(!1)}}async function v(x){if(!x?.id)throw new Error((0,Sn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",x.id,{force:!0});let E=L(x);return await g(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=x=>{let te=(d?.[x.source??""]??[]).filter(ae=>ae.slug!==x.slug),ce={...d,[x.source??""]:te};return m(ce),x.fontFace&&x.fontFace.forEach(ae=>{ho(ae,"all")}),ce},le=x=>{let E=oe(x),te={...d,custom:Fl(d?.custom,E)};return m(te),K(E),te},oe=x=>x.map(({id:E,fontFace:te,...ce})=>({...ce,...te&&te.length>0?{fontFace:te.map(({id:ae,...Ce})=>Ce)}:{}})),K=x=>{x.forEach(E=>{E.fontFace&&E.fontFace.forEach(te=>{let ce=Wr(te?.src??"");ce&&tr(te,ce,"all")})})},ge=(x,E)=>{let te=d?.[x.source??""]??[],ce=Qo(x,E,te);m({...d,[x.source??""]:ce});let ae=$(x.slug,E?.fontStyle??"",E?.fontWeight??"",x.source??"custom");if(E&&ae)ho(E,"all");else{let Ce=Wr(E?.src??"");E&&Ce&&tr(E,Ce,"all")}},R=async x=>{if(!x.src)return;let E=Wr(x.src);!E||I.has(E)||(tr(x,E,"document"),I.add(E))};return(0,Al.jsx)(lt.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:q,fontFamilies:d??{},baseCustomFonts:O,isFontActivated:$,getFontFacesActivated:be,loadFontFaceAsset:R,installFonts:H,uninstallFontFamily:v,toggleActivateFont:ge,getAvailableFontsOutline:N,modalTabOpen:y,setModalTabOpen:T,saveFontFamilies:g,isResolvingLibrary:f,isInstalling:n},children:e})}var $o=Jc;var ps=u(ie(),1),On=u(X(),1),du=u(xt(),1),Qh=u(mt(),1);var he=u(X(),1),yo=u(xt(),1),Cn=u(mt(),1),Cr=u(ve(),1),Ee=u(ie(),1);var qr=u(ie(),1),Tt=u(X(),1);var Rl=u(X(),1),Dt=u(ve(),1);var es=u(z(),1);function Qc(e){if(e.preview)return e.preview;if(e.src)return Array.isArray(e.src)?e.src[0]:e.src}function $c(e){return"fontStyle"in e&&e.fontStyle||"fontWeight"in e&&e.fontWeight?e:"fontFace"in e&&e.fontFace&&e.fontFace.length?e.fontFace.find(t=>t.fontStyle==="normal"&&t.fontWeight==="400")||e.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:e.fontFamily}}function ed({font:e,text:t}){let r=(0,Dt.useRef)(null),o=$c(e),s=zr(e);t=t||("name"in e?e.name:"");let a=e.preview,[n,l]=(0,Dt.useState)(!1),[h,f]=(0,Dt.useState)(!1),{loadFontFaceAsset:c}=(0,Dt.useContext)(lt),d=a??Qc(o),m=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Di(o),y={fontSize:"18px",lineHeight:1,opacity:h?"1":"0",...s,...g};return(0,Dt.useEffect)(()=>{let T=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&T.observe(r.current),()=>T.disconnect()},[r]),(0,Dt.useEffect)(()=>{(async()=>n&&(!m&&o.src&&await c(o),f(!0)))()},[o,n,c,m]),(0,es.jsx)("div",{ref:r,children:m?(0,es.jsx)("img",{src:d,loading:"lazy",alt:t,className:"font-library__font-variant_demo-image"}):(0,es.jsx)(Rl.__experimentalText,{style:y,className:"font-library__font-variant_demo-text",children:t})})}var Hr=ed;var zt=u(z(),1);function td({font:e,onClick:t,variantsText:r,navigatorPath:o}){let s=e.fontFace?.length||1,a={cursor:t?"pointer":"default"},n=(0,Tt.useNavigator)();return(0,zt.jsx)(Tt.Button,{__next40pxDefaultSize:!0,onClick:()=>{t(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,zt.jsxs)(Tt.Flex,{justify:"space-between",wrap:!1,children:[(0,zt.jsx)(Hr,{font:e}),(0,zt.jsxs)(Tt.Flex,{justify:"flex-end",children:[(0,zt.jsx)(Tt.FlexItem,{children:(0,zt.jsx)(Tt.__experimentalText,{className:"font-library__font-card__count",children:r||(0,qr.sprintf)((0,qr._n)("%d variant","%d variants",s),s)})}),(0,zt.jsx)(Tt.FlexItem,{children:(0,zt.jsx)(so,{icon:(0,qr.isRTL)()?cr:dr})})]})]})})}var go=td;var ts=u(ve(),1),rs=u(X(),1);var Sr=u(z(),1);function rd({face:e,font:t}){let{isFontActivated:r,toggleActivateFont:o}=(0,ts.useContext)(lt),s=(t?.fontFace?.length??0)>0?r(t.slug,e.fontStyle,e.fontWeight,t.source):r(t.slug,void 0,void 0,t.source),a=()=>{if((t?.fontFace?.length??0)>0){o(t,e);return}o(t)},n=t.name+" "+Jo(e),l=(0,ts.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(rs.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(rs.CheckboxControl,{checked:s,onChange:a,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Hr,{font:e,text:n,onClick:a})})]})})}var El=rd;function Il(e){switch(e){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(e,10)}}function os(e){return e.sort((t,r)=>t.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&t.fontStyle!=="normal"?1:t.fontStyle===r.fontStyle?Il(t.fontWeight?.toString()??"normal")-Il(r.fontWeight?.toString()??"normal"):!t.fontStyle||!r.fontStyle?t.fontStyle?-1:1:t.fontStyle.localeCompare(r.fontStyle))}var fe=u(z(),1);function od(){let{baseCustomFonts:e,libraryFontSelected:t,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,Cr.useContext)(lt),[h,f]=Te("typography.fontFamilies"),[c,d]=(0,Cr.useState)(!1),[m,g]=(0,Cr.useState)(null),[y]=Te("typography.fontFamilies",void 0,"base"),T=(0,Cn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:x}=R(yo.store);return x()},[]),_=!!(0,yo.useEntityRecord)("root","globalStyles",T)?.edits?.settings?.typography?.fontFamilies,S=h?.theme?h.theme.map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name)):[],b=new Set(S.map(R=>R.slug)),O=y?.theme?S.concat(y.theme.filter(R=>!b.has(R.slug)).map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name))):[],q=t?.source==="custom"&&t?.id,I=(0,Cn.useSelect)(R=>{let{canUser:x}=R(yo.store);return q&&x("delete",{kind:"postType",name:"wp_font_family",id:q})},[q]),N=!!t&&t?.source!=="theme"&&I,W=()=>{d(!0)},$=async()=>{g(null);try{await n(h),g({type:"success",message:(0,Ee.__)("Font family updated successfully.")})}catch(R){g({type:"error",message:(0,Ee.sprintf)((0,Ee.__)("There was an error updating the font family. %s"),R.message)})}},be=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(R.fontFace):[],H=R=>{let x=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Ee.sprintf)((0,Ee.__)("%1$d/%2$d variants active"),E,x)};(0,Cr.useEffect)(()=>{r(t)},[]);let v=t?l(t.slug,t.source).length:0,L=t?.fontFace?.length??(t?.fontFamily?1:0),le=v>0&&v!==L,oe=v===L,K=()=>{if(!t||!t?.source)return;let R=h?.[t.source]?.filter(E=>E.slug!==t.slug)??[],x=oe?R:[...R,t];f({...h,[t.source]:x}),t.fontFace&&t.fontFace.forEach(E=>{if(oe)ho(E,"all");else{let te=Wr(E?.src??"");te&&tr(E,te,"all")}})},ge=O.length>0||e.length>0;return(0,fe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,fe.jsx)("div",{className:"font-library__loading",children:(0,fe.jsx)(he.ProgressBar,{})}),!s&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsxs)(he.Navigator,{initialPath:t?"/fontFamily":"/",children:[(0,fe.jsx)(he.Navigator.Screen,{path:"/",children:(0,fe.jsxs)(he.__experimentalVStack,{spacing:"8",children:[m&&(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),!ge&&(0,fe.jsx)(he.__experimentalText,{as:"p",children:(0,Ee.__)("No fonts installed.")}),O.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Theme","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:O.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]}),e.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Custom","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]})]})}),(0,fe.jsxs)(he.Navigator.Screen,{path:"/fontFamily",children:[t&&(0,fe.jsx)(sd,{font:t,isOpen:c,setIsOpen:d,setNotice:g,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,fe.jsxs)(he.Flex,{justify:"flex-start",children:[(0,fe.jsx)(he.Navigator.BackButton,{icon:(0,Ee.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),g(null)},label:(0,Ee.__)("Back")}),(0,fe.jsx)(he.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:t?.name})]}),m&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsx)(he.__experimentalSpacer,{margin:1}),(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),(0,fe.jsx)(he.__experimentalSpacer,{margin:1})]}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsx)(he.__experimentalText,{children:(0,Ee.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsxs)(he.__experimentalVStack,{spacing:0,children:[(0,fe.jsx)(he.CheckboxControl,{className:"font-library__select-all",label:(0,Ee.__)("Select all"),checked:oe,onChange:K,indeterminate:le}),(0,fe.jsx)(he.__experimentalSpacer,{margin:8}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t&&be(t).map((R,x)=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(El,{font:t,face:R},`face${x}`)},`face${x}`))})]})]})]}),(0,fe.jsxs)(he.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,fe.jsx)(he.ProgressBar,{}),N&&(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:W,children:(0,Ee.__)("Delete")}),(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!_,accessibleWhenDisabled:!0,children:(0,Ee.__)("Update")})]})]})]})}function sd({font:e,isOpen:t,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,he.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(e),n.goBack(),a(void 0),o({type:"success",message:(0,Ee.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Ee.__)("There was an error uninstalling the font family.")+f.message})}},h=()=>{r(!1)};return(0,fe.jsx)(he.__experimentalConfirmDialog,{isOpen:t,cancelButtonText:(0,Ee.__)("Cancel"),confirmButtonText:(0,Ee.__)("Delete"),onCancel:h,onConfirm:l,size:"medium",children:e&&(0,Ee.sprintf)((0,Ee.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),e.name)})}var ss=od;var Ke=u(ve(),1),ne=u(X(),1),Gl=u(mr(),1),Re=u(ie(),1);var jl=u(xt(),1);function Ll(e,t){let{category:r,search:o}=t,s=e||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Bl(e){return e.reduce((t,r)=>({...t,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Vl(e,t,r){return t?!!r[e]?.[`${t.fontStyle}-${t.fontWeight}`]:!!r[e]}var vo=u(ie(),1),ut=u(X(),1),Pt=u(z(),1);function nd(){let e=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Pt.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Pt.jsx)(ut.Card,{children:(0,Pt.jsxs)(ut.CardBody,{children:[(0,Pt.jsx)(ut.__experimentalHeading,{level:2,children:(0,vo.__)("Connect to Google Fonts")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:3}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:e,children:(0,vo.__)("Allow access to Google Fonts")})]})})})}var Nl=nd;var Dl=u(ve(),1),ns=u(X(),1);var Fr=u(z(),1);function ad({face:e,font:t,handleToggleVariant:r,selected:o}){let s=()=>{if(t?.fontFace){r(t,e);return}r(t)},a=t.name+" "+Jo(e),n=(0,Dl.useId)();return(0,Fr.jsx)("div",{className:"font-library__font-card",children:(0,Fr.jsxs)(ns.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Fr.jsx)(ns.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Fr.jsx)("label",{htmlFor:n,children:(0,Fr.jsx)(Hr,{font:e,text:a,onClick:s})})]})})}var zl=ad;var ee=u(z(),1),id={slug:"all",name:(0,Re._x)("All","font categories")},Ml="wp-font-library-google-fonts-permission",ld=500;function ud({slug:e}){let t=e==="google-fonts",r=()=>window.localStorage.getItem(Ml)==="true",[o,s]=(0,Ke.useState)(null),[a,n]=(0,Ke.useState)(null),[l,h]=(0,Ke.useState)([]),[f,c]=(0,Ke.useState)(1),[d,m]=(0,Ke.useState)({}),[g,y]=(0,Ke.useState)(t&&!r()),{installFonts:T,isInstalling:A}=(0,Ke.useContext)(lt),{record:_,isResolving:S}=(0,jl.useEntityRecord)("root","fontCollection",e);(0,Ke.useEffect)(()=>{let J=()=>{y(t&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[e,t]);let b=()=>{window.localStorage.setItem(Ml,"false"),window.dispatchEvent(new Event("storage"))};(0,Ke.useEffect)(()=>{s(null)},[e]),(0,Ke.useEffect)(()=>{h([])},[o]);let O=(0,Ke.useMemo)(()=>_?.font_families??[],[_]),q=_?.categories??[],I=[id,...q],N=(0,Ke.useMemo)(()=>Ll(O,d),[O,d]),W=Math.max(window.innerHeight,ld),$=Math.floor((W-417)/61),be=Math.ceil(N.length/$),H=(f-1)*$,v=f*$,L=N.slice(H,v),le=J=>{m({...d,category:J}),c(1)},K=(0,Gl.debounce)(J=>{m({...d,search:J}),c(1)},300),ge=(J,Se)=>{let Ae=Qo(J,Se,l);h(Ae)},R=Bl(l),x=()=>{h([])},E=l.length>0?l[0]?.fontFace?.length??0:0,te=E>0&&E!==o?.fontFace?.length,ce=E===o?.fontFace?.length,ae=()=>{let J=[];!ce&&o&&J.push(o),h(J)},Ce=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async Se=>{Se.src&&(Se.file=await Tl(Se.src))}))}catch{n({type:"error",message:(0,Re.__)("Error installing the fonts, could not be downloaded.")});return}try{await T([J]),n({type:"success",message:(0,Re.__)("Fonts were installed successfully.")})}catch(Se){n({type:"error",message:Se.message})}x()},qe=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(J.fontFace):[];if(g)return(0,ee.jsx)(Nl,{});let ke=()=>e!=="google-fonts"||g||o?null:(0,ee.jsx)(ne.DropdownMenu,{icon:zs,label:(0,Re.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Re.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,ee.jsxs)("div",{className:"font-library__tabpanel-layout",children:[S&&(0,ee.jsx)("div",{className:"font-library__loading",children:(0,ee.jsx)(ne.ProgressBar,{})}),!S&&_&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsxs)(ne.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,ee.jsxs)(ne.Navigator.Screen,{path:"/",children:[(0,ee.jsxs)(ne.__experimentalHStack,{justify:"space-between",children:[(0,ee.jsxs)(ne.__experimentalVStack,{children:[(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,children:_.name}),(0,ee.jsx)(ne.__experimentalText,{children:_.description})]}),(0,ee.jsx)(ke,{})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsxs)(ne.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,ee.jsx)(ne.SearchControl,{value:d.search,placeholder:(0,Re.__)("Font name\u2026"),label:(0,Re.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,ee.jsx)(ne.SelectControl,{__next40pxDefaultSize:!0,label:(0,Re.__)("Category"),value:d.category,onChange:le,children:I&&I.map(J=>(0,ee.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),!!_?.font_families?.length&&!N.length&&(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("No fonts found. Try with a different search term.")}),(0,ee.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(go,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,ee.jsxs)(ne.Navigator.Screen,{path:"/fontFamily",children:[(0,ee.jsxs)(ne.Flex,{justify:"flex-start",children:[(0,ee.jsx)(ne.Navigator.BackButton,{icon:(0,Re.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),n(null)},label:(0,Re.__)("Back")}),(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(ne.__experimentalSpacer,{margin:1}),(0,ee.jsx)(ne.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:1})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("Select font variants to install.")}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.CheckboxControl,{className:"font-library__select-all",label:(0,Re.__)("Select all"),checked:ce,onChange:ae,indeterminate:te}),(0,ee.jsx)(ne.__experimentalVStack,{spacing:0,children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&qe(o).map((J,Se)=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(zl,{font:o,face:J,handleToggleVariant:ge,selected:Vl(o.slug,o.fontFace?J:null,R)})},`face${Se}`))})}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:16})]})]}),o&&(0,ee.jsx)(ne.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,ee.jsx)(ne.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ce,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Re.__)("Install")})}),!o&&(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,ee.jsx)(ne.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Ke.createInterpolateElement)((0,Re.sprintf)((0,Re._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",be),{div:(0,ee.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,ee.jsx)(ne.SelectControl,{"aria-label":(0,Re.__)("Current page"),value:f.toString(),options:[...Array(be)].map((J,Se)=>({label:(Se+1).toString(),value:(Se+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,ee.jsx)(ne.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Re.__)("Previous page"),icon:(0,Re.isRTL)()?Vo:Do,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,ee.jsx)(ne.Button,{onClick:()=>c(f+1),disabled:f===be,accessibleWhenDisabled:!0,label:(0,Re.__)("Next page"),icon:(0,Re.isRTL)()?Do:Vo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var as=ud;var Yr=u(ie(),1),tt=u(X(),1),wo=u(ve(),1);var is=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),Ul=(function(){var e,t,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var m=typeof is=="function"&&is;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=a[c]={exports:{}};s[c][0].call(y.exports,function(T){var A=s[c][1][T];return l(A||T)},y,y.exports,o,s,a,n)}return a[c].exports}for(var h=typeof is=="function"&&is,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,h=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=h,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,m=this.input_.read(this.buf_,d,n);if(m<0)throw new Error("Unexpected end of input");if(m<n){this.eos_=1;for(var g=0;g<32;g++)this.buf_[d+m+g]=0}if(d===0){for(var g=0;g<32;g++)this.buf_[(n<<1)+g]=this.buf_[g];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=m<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&h]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var m=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,m},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,h=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,h=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,m=o("./context"),g=o("./prefix"),y=o("./transform"),T=8,A=16,_=256,S=704,b=26,O=6,q=2,I=8,N=255,W=1080,$=18,be=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),H=16,v=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),le=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function oe(D){var k;return D.readBits(1)===0?16:(k=D.readBits(3),k>0?17+k:(k=D.readBits(3),k>0?8+k:17))}function K(D){if(D.readBits(1)){var k=D.readBits(3);return k===0?1:D.readBits(k)+(1<<k)}return 0}function ge(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(D){var k=new ge,B,P,V;if(k.input_end=D.readBits(1),k.input_end&&D.readBits(1))return k;if(B=D.readBits(2)+4,B===7){if(k.is_metadata=!0,D.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=D.readBits(2),P===0)return k;for(V=0;V<P;V++){var de=D.readBits(8);if(V+1===P&&P>1&&de===0)throw new Error("Invalid size byte");k.meta_block_length|=de<<V*8}}else for(V=0;V<B;++V){var re=D.readBits(4);if(V+1===B&&B>4&&re===0)throw new Error("Invalid size nibble");k.meta_block_length|=re<<V*4}return++k.meta_block_length,!k.input_end&&!k.is_metadata&&(k.is_uncompressed=D.readBits(1)),k}function x(D,k,B){var P=k,V;return B.fillBitWindow(),k+=B.val_>>>B.bit_pos_&N,V=D[k].bits-I,V>0&&(B.bit_pos_+=I,k+=D[k].value,k+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=D[k].bits,D[k].value}function E(D,k,B,P){for(var V=0,de=T,re=0,se=0,we=32768,ue=[],Y=0;Y<32;Y++)ue.push(new c(0,0));for(d(ue,0,5,D,$);V<k&&we>0;){var Fe=0,Qe;if(P.readMoreInput(),P.fillBitWindow(),Fe+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=ue[Fe].bits,Qe=ue[Fe].value&255,Qe<A)re=0,B[V++]=Qe,Qe!==0&&(de=Qe,we-=32768>>Qe);else{var yt=Qe-14,rt,$e,Ve=0;if(Qe===A&&(Ve=de),se!==Ve&&(re=0,se=Ve),rt=re,re>0&&(re-=2,re<<=yt),re+=P.readBits(yt)+3,$e=re-rt,V+$e>k)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var et=0;et<$e;et++)B[V+et]=se;V+=$e,se!==0&&(we-=$e<<15-se)}}if(we!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+we);for(;V<k;V++)B[V]=0}function te(D,k,B,P){var V=0,de,re=new Uint8Array(D);if(P.readMoreInput(),de=P.readBits(2),de===1){for(var se,we=D-1,ue=0,Y=new Int32Array(4),Fe=P.readBits(2)+1;we;)we>>=1,++ue;for(se=0;se<Fe;++se)Y[se]=P.readBits(ue)%D,re[Y[se]]=2;switch(re[Y[0]]=1,Fe){case 1:break;case 3:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[1]===Y[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(Y[0]===Y[1])throw new Error("[ReadHuffmanCode] invalid symbols");re[Y[1]]=1;break;case 4:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[0]===Y[3]||Y[1]===Y[2]||Y[1]===Y[3]||Y[2]===Y[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(re[Y[2]]=3,re[Y[3]]=3):re[Y[0]]=2;break}}else{var se,Qe=new Uint8Array($),yt=32,rt=0,$e=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(se=de;se<$&&yt>0;++se){var Ve=be[se],et=0,ot;P.fillBitWindow(),et+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=$e[et].bits,ot=$e[et].value,Qe[Ve]=ot,ot!==0&&(yt-=32>>ot,++rt)}if(!(rt===1||yt===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Qe,D,re,P)}if(V=d(k,B,I,re,D),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ce(D,k,B){var P,V;return P=x(D,k,B),V=g.kBlockLengthPrefixCode[P].nbits,g.kBlockLengthPrefixCode[P].offset+B.readBits(V)}function ae(D,k,B){var P;return D<H?(B+=v[D],B&=3,P=k[B]+L[D]):P=D-H+1,P}function Ce(D,k){for(var B=D[k],P=k;P;--P)D[P]=D[P-1];D[0]=B}function qe(D,k){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<k;++P){var V=D[P];D[P]=B[V],V&&Ce(B,V)}}function ke(D,k){this.alphabet_size=D,this.num_htrees=k,this.codes=new Array(k+k*le[D+31>>>5]),this.htrees=new Uint32Array(k)}ke.prototype.decode=function(D){var k,B,P=0;for(k=0;k<this.num_htrees;++k)this.htrees[k]=P,B=te(this.alphabet_size,this.codes,P,D),P+=B};function J(D,k){var B={num_htrees:null,context_map:null},P,V=0,de,re;k.readMoreInput();var se=B.num_htrees=K(k)+1,we=B.context_map=new Uint8Array(D);if(se<=1)return B;for(P=k.readBits(1),P&&(V=k.readBits(4)+1),de=[],re=0;re<W;re++)de[re]=new c(0,0);for(te(se+V,de,0,k),re=0;re<D;){var ue;if(k.readMoreInput(),ue=x(de,0,k),ue===0)we[re]=0,++re;else if(ue<=V)for(var Y=1+(1<<ue)+k.readBits(ue);--Y;){if(re>=D)throw new Error("[DecodeContextMap] i >= context_map_size");we[re]=0,++re}else we[re]=ue-V,++re}return k.readBits(1)&&qe(we,D),B}function Se(D,k,B,P,V,de,re){var se=B*2,we=B,ue=x(k,B*W,re),Y;ue===0?Y=V[se+(de[we]&1)]:ue===1?Y=V[se+(de[we]-1&1)]+1:Y=ue-2,Y>=D&&(Y-=D),P[B]=Y,V[se+(de[we]&1)]=Y,++de[we]}function Ae(D,k,B,P,V,de){var re=V+1,se=B&V,we=de.pos_&h.IBUF_MASK,ue;if(k<8||de.bit_pos_+(k<<3)<de.bit_end_pos_){for(;k-- >0;)de.readMoreInput(),P[se++]=de.readBits(8),se===re&&(D.write(P,re),se=0);return}if(de.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;de.bit_pos_<32;)P[se]=de.val_>>>de.bit_pos_,de.bit_pos_+=8,++se,--k;if(ue=de.bit_end_pos_-de.bit_pos_>>3,we+ue>h.IBUF_MASK){for(var Y=h.IBUF_MASK+1-we,Fe=0;Fe<Y;Fe++)P[se+Fe]=de.buf_[we+Fe];ue-=Y,se+=Y,k-=Y,we=0}for(var Fe=0;Fe<ue;Fe++)P[se+Fe]=de.buf_[we+Fe];if(se+=ue,k-=ue,se>=re){D.write(P,re),se-=re;for(var Fe=0;Fe<se;Fe++)P[Fe]=P[re+Fe]}for(;se+k>=re;){if(ue=re-se,de.input_.read(P,se,ue)<ue)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");D.write(P,re),k-=ue,se=0}if(de.input_.read(P,se,k)<k)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");de.reset()}function Ft(D){var k=D.bit_pos_+7&-8,B=D.readBits(k-D.bit_pos_);return B==0}function ze(D){var k=new n(D),B=new h(k);oe(B);var P=R(B);return P.meta_block_length}a.BrotliDecompressedSize=ze;function sr(D,k){var B=new n(D);k==null&&(k=ze(D));var P=new Uint8Array(k),V=new l(P);return Kt(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}a.BrotliDecompressBuffer=sr;function Kt(D,k){var B,P=0,V=0,de=0,re,se=0,we,ue,Y,Fe,Qe=[16,15,11,4],yt=0,rt=0,$e=0,Ve=[new ke(0,0),new ke(0,0),new ke(0,0)],et,ot,pe,Qr=128+h.READ_SIZE;pe=new h(D),de=oe(pe),re=(1<<de)-16,we=1<<de,ue=we-1,Y=new Uint8Array(we+Qr+f.maxDictionaryWordLength),Fe=we,et=[],ot=[];for(var Tr=0;Tr<3*W;Tr++)et[Tr]=new c(0,0),ot[Tr]=new c(0,0);for(;!V;){var Me=0,ko,_t=[1<<28,1<<28,1<<28],Et=[0],vt=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pe,G,st=null,j=null,Ne,F=null,C,nr=0,Oe=null,Q=0,ar=0,ir=null,Ie=0,xe=0,Ge=0,je,Ye;for(B=0;B<3;++B)Ve[B].codes=null,Ve[B].htrees=null;pe.readMoreInput();var Gt=R(pe);if(Me=Gt.meta_block_length,P+Me>k.buffer.length){var lr=new Uint8Array(P+Me);lr.set(k.buffer),k.buffer=lr}if(V=Gt.input_end,ko=Gt.is_uncompressed,Gt.is_metadata){for(Ft(pe);Me>0;--Me)pe.readMoreInput(),pe.readBits(8);continue}if(Me!==0){if(ko){pe.bit_pos_=pe.bit_pos_+7&-8,Ae(k,Me,P,Y,ue,pe),P+=Me;continue}for(B=0;B<3;++B)vt[B]=K(pe)+1,vt[B]>=2&&(te(vt[B]+2,et,B*W,pe),te(b,ot,B*W,pe),_t[B]=ce(ot,B*W,pe),M[B]=1);for(pe.readMoreInput(),i=pe.readBits(2),U=H+(pe.readBits(4)<<i),Pe=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(vt[0]),B=0;B<vt[0];++B)pe.readMoreInput(),j[B]=pe.readBits(2)<<1;var Le=J(vt[0]<<O,pe);Ne=Le.num_htrees,st=Le.context_map;var nt=J(vt[2]<<q,pe);for(C=nt.num_htrees,F=nt.context_map,Ve[0]=new ke(_,Ne),Ve[1]=new ke(S,vt[1]),Ve[2]=new ke(G,C),B=0;B<3;++B)Ve[B].decode(pe);for(Oe=0,ir=0,je=j[Et[0]],xe=m.lookupOffsets[je],Ge=m.lookupOffsets[je+1],Ye=Ve[1].htrees[0];Me>0;){var De,at,ft,Pr,ks,ct,bt,jt,$r,Ar,eo;for(pe.readMoreInput(),_t[1]===0&&(Se(vt[1],et,1,Et,w,M,pe),_t[1]=ce(ot,W,pe),Ye=Ve[1].htrees[Et[1]]),--_t[1],De=x(Ve[1].codes,Ye,pe),at=De>>6,at>=2?(at-=2,bt=-1):bt=0,ft=g.kInsertRangeLut[at]+(De>>3&7),Pr=g.kCopyRangeLut[at]+(De&7),ks=g.kInsertLengthPrefixCode[ft].offset+pe.readBits(g.kInsertLengthPrefixCode[ft].nbits),ct=g.kCopyLengthPrefixCode[Pr].offset+pe.readBits(g.kCopyLengthPrefixCode[Pr].nbits),rt=Y[P-1&ue],$e=Y[P-2&ue],Ar=0;Ar<ks;++Ar)pe.readMoreInput(),_t[0]===0&&(Se(vt[0],et,0,Et,w,M,pe),_t[0]=ce(ot,0,pe),nr=Et[0]<<O,Oe=nr,je=j[Et[0]],xe=m.lookupOffsets[je],Ge=m.lookupOffsets[je+1]),$r=m.lookup[xe+rt]|m.lookup[Ge+$e],Q=st[Oe+$r],--_t[0],$e=rt,rt=x(Ve[0].codes,Ve[0].htrees[Q],pe),Y[P&ue]=rt,(P&ue)===ue&&k.write(Y,we),++P;if(Me-=ks,Me<=0)break;if(bt<0){var $r;if(pe.readMoreInput(),_t[2]===0&&(Se(vt[2],et,2,Et,w,M,pe),_t[2]=ce(ot,2*W,pe),ar=Et[2]<<q,ir=ar),--_t[2],$r=(ct>4?3:ct-2)&255,Ie=F[ir+$r],bt=x(Ve[2].codes,Ve[2].htrees[Ie],pe),bt>=U){var Os,sa,to;bt-=U,sa=bt&Pe,bt>>=i,Os=(bt>>1)+1,to=(2+(bt&1)<<Os)-4,bt=U+(to+pe.readBits(Os)<<i)+sa}}if(jt=ae(bt,Qe,yt),jt<0)throw new Error("[BrotliDecompress] invalid distance");if(P<re&&se!==re?se=P:se=re,eo=P&ue,jt>se)if(ct>=f.minDictionaryWordLength&&ct<=f.maxDictionaryWordLength){var to=f.offsetsByLength[ct],na=jt-se-1,aa=f.sizeBitsByLength[ct],af=(1<<aa)-1,lf=na&af,ia=na>>aa;if(to+=lf*ct,ia<y.kNumTransforms){var Ts=y.transformDictionaryWord(Y,eo,to,ct,ia);if(eo+=Ts,P+=Ts,Me-=Ts,eo>=Fe){k.write(Y,we);for(var Oo=0;Oo<eo-Fe;Oo++)Y[Oo]=Y[Fe+Oo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+jt+" len: "+ct+" bytes left: "+Me)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+jt+" len: "+ct+" bytes left: "+Me);else{if(bt>0&&(Qe[yt&3]=jt,++yt),ct>Me)throw new Error("Invalid backward reference. pos: "+P+" distance: "+jt+" len: "+ct+" bytes left: "+Me);for(Ar=0;Ar<ct;++Ar)Y[P&ue]=Y[P-jt&ue],(P&ue)===ue&&k.write(Y,we),++P,--Me}rt=Y[P-1&ue],$e=Y[P-2&ue]}P&=1073741823}}k.write(Y,P&ue)}a.BrotliDecompress=Kt,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,h=n.toByteArray(o("./dictionary.bin.js"));return l(h)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="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"},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,m){this.bits=d,this.value=m}a.HuffmanCode=n;var l=15;function h(d,m){for(var g=1<<m-1;d&g;)g>>=1;return(d&g-1)+g}function f(d,m,g,y,T){do y-=g,d[m+y]=new n(T.bits,T.value);while(y>0)}function c(d,m,g){for(var y=1<<m-g;m<l&&(y-=d[m],!(y<=0));)++m,y<<=1;return m-g}a.BrotliBuildHuffmanTable=function(d,m,g,y,T){var A=m,_,S,b,O,q,I,N,W,$,be,H,v=new Int32Array(l+1),L=new Int32Array(l+1);for(H=new Int32Array(T),b=0;b<T;b++)v[y[b]]++;for(L[1]=0,S=1;S<l;S++)L[S+1]=L[S]+v[S];for(b=0;b<T;b++)y[b]!==0&&(H[L[y[b]]++]=b);if(W=g,$=1<<W,be=$,L[l]===1){for(O=0;O<be;++O)d[m+O]=new n(0,H[0]&65535);return be}for(O=0,b=0,S=1,q=2;S<=g;++S,q<<=1)for(;v[S]>0;--v[S])_=new n(S&255,H[b++]&65535),f(d,m+O,q,$,_),O=h(O,S);for(N=be-1,I=-1,S=g+1,q=2;S<=l;++S,q<<=1)for(;v[S]>0;--v[S])(O&N)!==I&&(m+=$,W=c(v,S,g),$=1<<W,be+=$,I=O&N,d[A+I]=new n(W+g&255,m-A-I&65535)),_=new n(S-g&255,H[b++]&65535),f(d,m+(O>>g),q,$,_),O=h(O,S);return be}},{}],8:[function(o,s,a){"use strict";a.byteLength=g,a.toByteArray=T,a.fromByteArray=S;for(var n=[],l=[],h=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function m(b){var O=b.length;if(O%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var q=b.indexOf("=");q===-1&&(q=O);var I=q===O?0:4-q%4;return[q,I]}function g(b){var O=m(b),q=O[0],I=O[1];return(q+I)*3/4-I}function y(b,O,q){return(O+q)*3/4-q}function T(b){for(var O,q=m(b),I=q[0],N=q[1],W=new h(y(b,I,N)),$=0,be=N>0?I-4:I,H=0;H<be;H+=4)O=l[b.charCodeAt(H)]<<18|l[b.charCodeAt(H+1)]<<12|l[b.charCodeAt(H+2)]<<6|l[b.charCodeAt(H+3)],W[$++]=O>>16&255,W[$++]=O>>8&255,W[$++]=O&255;return N===2&&(O=l[b.charCodeAt(H)]<<2|l[b.charCodeAt(H+1)]>>4,W[$++]=O&255),N===1&&(O=l[b.charCodeAt(H)]<<10|l[b.charCodeAt(H+1)]<<4|l[b.charCodeAt(H+2)]>>2,W[$++]=O>>8&255,W[$++]=O&255),W}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function _(b,O,q){for(var I,N=[],W=O;W<q;W+=3)I=(b[W]<<16&16711680)+(b[W+1]<<8&65280)+(b[W+2]&255),N.push(A(I));return N.join("")}function S(b){for(var O,q=b.length,I=q%3,N=[],W=16383,$=0,be=q-I;$<be;$+=W)N.push(_(b,$,$+W>be?be:$+W));return I===1?(O=b[q-1],N.push(n[O>>2]+n[O<<4&63]+"==")):I===2&&(O=(b[q-2]<<8)+b[q-1],N.push(n[O>>10]+n[O>>4&63]+n[O<<2&63]+"=")),N.join("")}},{}],9:[function(o,s,a){function n(l,h){this.offset=l,this.nbits=h}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(h){this.buffer=h,this.pos=0}n.prototype.read=function(h,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)h[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(h){this.buffer=h,this.pos=0}l.prototype.write=function(h,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(h.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,h=1,f=2,c=3,d=4,m=5,g=6,y=7,T=8,A=9,_=10,S=11,b=12,O=13,q=14,I=15,N=16,W=17,$=18,be=19,H=20;function v(oe,K,ge){this.prefix=new Uint8Array(oe.length),this.transform=K,this.suffix=new Uint8Array(ge.length);for(var R=0;R<oe.length;R++)this.prefix[R]=oe.charCodeAt(R);for(var R=0;R<ge.length;R++)this.suffix[R]=ge.charCodeAt(R)}var L=[new v("",l,""),new v("",l," "),new v(" ",l," "),new v("",b,""),new v("",_," "),new v("",l," the "),new v(" ",l,""),new v("s ",l," "),new v("",l," of "),new v("",_,""),new v("",l," and "),new v("",O,""),new v("",h,""),new v(", ",l," "),new v("",l,", "),new v(" ",_," "),new v("",l," in "),new v("",l," to "),new v("e ",l," "),new v("",l,'"'),new v("",l,"."),new v("",l,'">'),new v("",l,` +`),new v("",c,""),new v("",l,"]"),new v("",l," for "),new v("",q,""),new v("",f,""),new v("",l," a "),new v("",l," that "),new v(" ",_,""),new v("",l,". "),new v(".",l,""),new v(" ",l,", "),new v("",I,""),new v("",l," with "),new v("",l,"'"),new v("",l," from "),new v("",l," by "),new v("",N,""),new v("",W,""),new v(" the ",l,""),new v("",d,""),new v("",l,". The "),new v("",S,""),new v("",l," on "),new v("",l," as "),new v("",l," is "),new v("",y,""),new v("",h,"ing "),new v("",l,` + `),new v("",l,":"),new v(" ",l,". "),new v("",l,"ed "),new v("",H,""),new v("",$,""),new v("",g,""),new v("",l,"("),new v("",_,", "),new v("",T,""),new v("",l," at "),new v("",l,"ly "),new v(" the ",l," of "),new v("",m,""),new v("",A,""),new v(" ",_,", "),new v("",_,'"'),new v(".",l,"("),new v("",S," "),new v("",_,'">'),new v("",l,'="'),new v(" ",l,"."),new v(".com/",l,""),new v(" the ",l," of the "),new v("",_,"'"),new v("",l,". This "),new v("",l,","),new v(".",l," "),new v("",_,"("),new v("",_,"."),new v("",l," not "),new v(" ",l,'="'),new v("",l,"er "),new v(" ",S," "),new v("",l,"al "),new v(" ",S,""),new v("",l,"='"),new v("",S,'"'),new v("",_,". "),new v(" ",l,"("),new v("",l,"ful "),new v(" ",_,". "),new v("",l,"ive "),new v("",l,"less "),new v("",S,"'"),new v("",l,"est "),new v(" ",_,"."),new v("",S,'">'),new v(" ",l,"='"),new v("",_,","),new v("",l,"ize "),new v("",S,"."),new v("\xC2\xA0",l,""),new v(" ",l,","),new v("",_,'="'),new v("",S,'="'),new v("",l,"ous "),new v("",S,", "),new v("",_,"='"),new v(" ",_,","),new v(" ",S,'="'),new v(" ",S,", "),new v("",S,","),new v("",S,"("),new v("",S,". "),new v(" ",S,"."),new v("",S,"='"),new v(" ",S,". "),new v(" ",_,'="'),new v(" ",S,"='"),new v(" ",_,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function le(oe,K){return oe[K]<192?(oe[K]>=97&&oe[K]<=122&&(oe[K]^=32),1):oe[K]<224?(oe[K+1]^=32,2):(oe[K+2]^=5,3)}a.transformDictionaryWord=function(oe,K,ge,R,x){var E=L[x].prefix,te=L[x].suffix,ce=L[x].transform,ae=ce<b?0:ce-(b-1),Ce=0,qe=K,ke;ae>R&&(ae=R);for(var J=0;J<E.length;)oe[K++]=E[J++];for(ge+=ae,R-=ae,ce<=A&&(R-=ce),Ce=0;Ce<R;Ce++)oe[K++]=n.dictionary[ge+Ce];if(ke=K-R,ce===_)le(oe,ke);else if(ce===S)for(;R>0;){var Se=le(oe,ke);ke+=Se,R-=Se}for(var Ae=0;Ae<te.length;)oe[K++]=te[Ae++];return K-qe}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ls=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),Wl=(function(){var e,t,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var m=typeof ls=="function"&&ls;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=a[c]={exports:{}};s[c][0].call(y.exports,function(T){var A=s[c][1][T];return l(A||T)},y,y.exports,o,s,a,n)}return a[c].exports}for(var h=typeof ls=="function"&&ls,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var m=d.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var g in m)l(m,g)&&(c[g]=m[g])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var h={arraySet:function(c,d,m,g,y){if(d.subarray&&c.subarray){c.set(d.subarray(m,m+g),y);return}for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){var d,m,g,y,T,A;for(g=0,d=0,m=c.length;d<m;d++)g+=c[d].length;for(A=new Uint8Array(g),y=0,d=0,m=c.length;d<m;d++)T=c[d],A.set(T,y),y+=T.length;return A}},f={arraySet:function(c,d,m,g,y){for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,h)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{h=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(m){var g,y,T,A,_,S=m.length,b=0;for(A=0;A<S;A++)y=m.charCodeAt(A),(y&64512)===55296&&A+1<S&&(T=m.charCodeAt(A+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),A++)),b+=y<128?1:y<2048?2:y<65536?3:4;for(g=new n.Buf8(b),_=0,A=0;_<b;A++)y=m.charCodeAt(A),(y&64512)===55296&&A+1<S&&(T=m.charCodeAt(A+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),A++)),y<128?g[_++]=y:y<2048?(g[_++]=192|y>>>6,g[_++]=128|y&63):y<65536?(g[_++]=224|y>>>12,g[_++]=128|y>>>6&63,g[_++]=128|y&63):(g[_++]=240|y>>>18,g[_++]=128|y>>>12&63,g[_++]=128|y>>>6&63,g[_++]=128|y&63);return g};function d(m,g){if(g<65534&&(m.subarray&&h||!m.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(m,g));for(var y="",T=0;T<g;T++)y+=String.fromCharCode(m[T]);return y}a.buf2binstring=function(m){return d(m,m.length)},a.binstring2buf=function(m){for(var g=new n.Buf8(m.length),y=0,T=g.length;y<T;y++)g[y]=m.charCodeAt(y);return g},a.buf2string=function(m,g){var y,T,A,_,S=g||m.length,b=new Array(S*2);for(T=0,y=0;y<S;){if(A=m[y++],A<128){b[T++]=A;continue}if(_=f[A],_>4){b[T++]=65533,y+=_-1;continue}for(A&=_===2?31:_===3?15:7;_>1&&y<S;)A=A<<6|m[y++]&63,_--;if(_>1){b[T++]=65533;continue}A<65536?b[T++]=A:(A-=65536,b[T++]=55296|A>>10&1023,b[T++]=56320|A&1023)}return d(b,T)},a.utf8border=function(m,g){var y;for(g=g||m.length,g>m.length&&(g=m.length),y=g-1;y>=0&&(m[y]&192)===128;)y--;return y<0||y===0?g:y+f[m[y]]>g?y:g}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,h,f,c){for(var d=l&65535|0,m=l>>>16&65535|0,g=0;f!==0;){g=f>2e3?2e3:f,f-=g;do d=d+h[c++]|0,m=m+d|0;while(--g);d%=65521,m%=65521}return d|m<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var m=0;m<8;m++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function h(f,c,d,m){var g=l,y=m+d;f^=-1;for(var T=m;T<y;T++)f=f>>>8^g[(f^c[T])&255];return f^-1}s.exports=h},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,m,g,y,T,A,_,S,b,O,q,I,N,W,$,be,H,v,L,le,oe,K,ge,R,x;d=f.state,m=f.next_in,R=f.input,g=m+(f.avail_in-5),y=f.next_out,x=f.output,T=y-(c-f.avail_out),A=y+(f.avail_out-257),_=d.dmax,S=d.wsize,b=d.whave,O=d.wnext,q=d.window,I=d.hold,N=d.bits,W=d.lencode,$=d.distcode,be=(1<<d.lenbits)-1,H=(1<<d.distbits)-1;e:do{N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=W[I&be];t:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L===0)x[y++]=v&65535;else if(L&16){le=v&65535,L&=15,L&&(N<L&&(I+=R[m++]<<N,N+=8),le+=I&(1<<L)-1,I>>>=L,N-=L),N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=$[I&H];r:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L&16){if(oe=v&65535,L&=15,N<L&&(I+=R[m++]<<N,N+=8,N<L&&(I+=R[m++]<<N,N+=8)),oe+=I&(1<<L)-1,oe>_){f.msg="invalid distance too far back",d.mode=n;break e}if(I>>>=L,N-=L,L=y-T,oe>L){if(L=oe-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break e}if(K=0,ge=q,O===0){if(K+=S-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}else if(O<L){if(K+=S+O-L,L-=O,L<le){le-=L;do x[y++]=q[K++];while(--L);if(K=0,O<le){L=O,le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}}else if(K+=O-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}for(;le>2;)x[y++]=ge[K++],x[y++]=ge[K++],x[y++]=ge[K++],le-=3;le&&(x[y++]=ge[K++],le>1&&(x[y++]=ge[K++]))}else{K=y-oe;do x[y++]=x[K++],x[y++]=x[K++],x[y++]=x[K++],le-=3;while(le>2);le&&(x[y++]=x[K++],le>1&&(x[y++]=x[K++]))}}else if((L&64)===0){v=$[(v&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break e}break}}else if((L&64)===0){v=W[(v&65535)+(I&(1<<L)-1)];continue t}else if(L&32){d.mode=l;break e}else{f.msg="invalid literal/length code",d.mode=n;break e}break}}while(m<g&&y<A);le=N>>3,m-=le,N-=le<<3,I&=(1<<N)-1,f.next_in=m,f.next_out=y,f.avail_in=m<g?5+(g-m):5-(m-g),f.avail_out=y<A?257+(A-y):257-(y-A),d.hold=I,d.bits=N}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),h=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,m=1,g=2,y=4,T=5,A=6,_=0,S=1,b=2,O=-2,q=-3,I=-4,N=-5,W=8,$=1,be=2,H=3,v=4,L=5,le=6,oe=7,K=8,ge=9,R=10,x=11,E=12,te=13,ce=14,ae=15,Ce=16,qe=17,ke=18,J=19,Se=20,Ae=21,Ft=22,ze=23,sr=24,Kt=25,D=26,k=27,B=28,P=29,V=30,de=31,re=32,se=852,we=592,ue=15,Y=ue;function Fe(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Qe(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function yt(w){var M;return!w||!w.state?O:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(se),M.distcode=M.distdyn=new n.Buf32(we),M.sane=1,M.back=-1,_)}function rt(w){var M;return!w||!w.state?O:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,yt(w))}function $e(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?O:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,rt(w))}function Ve(w,M){var i,U;return w?(U=new Qe,w.state=U,U.window=null,i=$e(w,M),i!==_&&(w.state=null),i):O}function et(w){return Ve(w,Y)}var ot=!0,pe,Qr;function Tr(w){if(ot){var M;for(pe=new n.Buf32(512),Qr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(m,w.lens,0,288,pe,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(g,w.lens,0,32,Qr,0,w.work,{bits:5}),ot=!1}w.lencode=pe,w.lenbits=9,w.distcode=Qr,w.distbits=5}function Me(w,M,i,U){var Pe,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pe=G.wsize-G.wnext,Pe>U&&(Pe=U),n.arraySet(G.window,M,i-U,Pe,G.wnext),U-=Pe,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pe,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pe))),0}function ko(w,M){var i,U,Pe,G,st,j,Ne,F,C,nr,Oe,Q,ar,ir,Ie=0,xe,Ge,je,Ye,Gt,lr,Le,nt,De=new n.Buf8(4),at,ft,Pr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return O;i=w.state,i.mode===E&&(i.mode=te),st=w.next_out,Pe=w.output,Ne=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,nr=j,Oe=Ne,nt=_;e:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=te;break}for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,De[0]=F&255,De[1]=F>>>8&255,i.check=h(i.check,De,2,0),F=0,C=0,i.mode=be;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==W){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Le=(F&15)+8,i.wbits===0)i.wbits=Le;else if(Le>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Le,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case be:for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==W){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(De[0]=F&255,De[1]=F>>>8&255,i.check=h(i.check,De,2,0)),F=0,C=0,i.mode=H;case H:for(;C<32;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(De[0]=F&255,De[1]=F>>>8&255,De[2]=F>>>16&255,De[3]=F>>>24&255,i.check=h(i.check,De,4,0)),F=0,C=0,i.mode=v;case v:for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(De[0]=F&255,De[1]=F>>>8&255,i.check=h(i.check,De,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(De[0]=F&255,De[1]=F>>>8&255,i.check=h(i.check,De,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=le;case le:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Le=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Le)),i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break e;i.length=0,i.mode=oe;case oe:if(i.flags&2048){if(j===0)break e;Q=0;do Le=U[G+Q++],i.head&&Le&&i.length<65536&&(i.head.name+=String.fromCharCode(Le));while(Le&&Q<j);if(i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,Le)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break e;Q=0;do Le=U[G+Q++],i.head&&Le&&i.length<65536&&(i.head.comment+=String.fromCharCode(Le));while(Le&&Q<j);if(i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,Le)break e}else i.head&&(i.head.comment=null);i.mode=ge;case ge:if(i.flags&512){for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Fe(F),F=0,C=0,i.mode=x;case x:if(i.havedict===0)return w.next_out=st,w.avail_out=Ne,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===T||M===A)break e;case te:if(i.last){F>>>=C&7,C-=C&7,i.mode=k;break}for(;C<3;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ce;break;case 1:if(Tr(i),i.mode=Se,M===A){F>>>=2,C-=2;break e}break;case 2:i.mode=qe;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ce:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=ae,M===A)break e;case ae:i.mode=Ce;case Ce:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Ne&&(Q=Ne),Q===0)break e;n.arraySet(Pe,U,G,Q,st),j-=Q,G+=Q,Ne-=Q,st+=Q,i.length-=Q;break}i.mode=E;break;case qe:for(;C<14;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=ke;case ke:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.lens[Pr[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[Pr[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,at={bits:i.lenbits},nt=c(d,i.lens,0,19,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(je<16)F>>>=xe,C-=xe,i.lens[i.have++]=je;else{if(je===16){for(ft=xe+2;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(F>>>=xe,C-=xe,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Le=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(je===17){for(ft=xe+3;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ft=xe+7;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Le}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,at={bits:i.lenbits},nt=c(m,i.lens,0,i.nlen,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,at={bits:i.distbits},nt=c(g,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,at),i.distbits=at.bits,nt){w.msg="invalid distances set",i.mode=V;break}if(i.mode=Se,M===A)break e;case Se:i.mode=Ae;case Ae:if(j>=6&&Ne>=258){w.next_out=st,w.avail_out=Ne,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Oe),st=w.next_out,Pe=w.output,Ne=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(Ge&&(Ge&240)===0){for(Ye=xe,Gt=Ge,lr=je;Ie=i.lencode[lr+((F&(1<<Ye+Gt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(Ye+xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,i.length=je,Ge===0){i.mode=D;break}if(Ge&32){i.back=-1,i.mode=E;break}if(Ge&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Ge&15,i.mode=Ft;case Ft:if(i.extra){for(ft=i.extra;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=ze;case ze:for(;Ie=i.distcode[F&(1<<i.distbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if((Ge&240)===0){for(Ye=xe,Gt=Ge,lr=je;Ie=i.distcode[lr+((F&(1<<Ye+Gt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(Ye+xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,Ge&64){w.msg="invalid distance code",i.mode=V;break}i.offset=je,i.extra=Ge&15,i.mode=sr;case sr:if(i.extra){for(ft=i.extra;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Kt;case Kt:if(Ne===0)break e;if(Q=Oe-Ne,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pe,ar=st-i.offset,Q=i.length;Q>Ne&&(Q=Ne),Ne-=Q,i.length-=Q;do Pe[st++]=ir[ar++];while(--Q);i.length===0&&(i.mode=Ae);break;case D:if(Ne===0)break e;Pe[st++]=i.length,Ne--,i.mode=Ae;break;case k:if(i.wrap){for(;C<32;){if(j===0)break e;j--,F|=U[G++]<<C,C+=8}if(Oe-=Ne,w.total_out+=Oe,i.total+=Oe,Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,st-Oe):l(i.check,Pe,Oe,st-Oe)),Oe=Ne,(i.flags?F:Fe(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=P;case P:nt=S;break e;case V:nt=q;break e;case de:return I;case re:default:return O}return w.next_out=st,w.avail_out=Ne,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Oe!==w.avail_out&&i.mode<V&&(i.mode<k||M!==y))&&Me(w,w.output,w.next_out,Oe-w.avail_out)?(i.mode=de,I):(nr-=w.avail_in,Oe-=w.avail_out,w.total_in+=nr,w.total_out+=Oe,i.total+=Oe,i.wrap&&Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,w.next_out-Oe):l(i.check,Pe,Oe,w.next_out-Oe)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===Se||i.mode===ae?256:0),(nr===0&&Oe===0||M===y)&&nt===_&&(nt=N),nt)}function _t(w){if(!w||!w.state)return O;var M=w.state;return M.window&&(M.window=null),w.state=null,_}function Et(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?O:(i.head=M,M.done=!1,_)}function vt(w,M){var i=M.length,U,Pe,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==x)?O:U.mode===x&&(Pe=1,Pe=l(Pe,M,i,0),Pe!==U.check)?q:(G=Me(w,M,i,i),G?(U.mode=de,I):(U.havedict=1,_))}a.inflateReset=rt,a.inflateReset2=$e,a.inflateResetKeep=yt,a.inflateInit=et,a.inflateInit2=Ve,a.inflate=ko,a.inflateEnd=_t,a.inflateGetHeader=Et,a.inflateSetDictionary=vt,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,h=852,f=592,c=0,d=1,m=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(S,b,O,q,I,N,W,$){var be=$.bits,H=0,v=0,L=0,le=0,oe=0,K=0,ge=0,R=0,x=0,E=0,te,ce,ae,Ce,qe,ke=null,J=0,Se,Ae=new n.Buf16(l+1),Ft=new n.Buf16(l+1),ze=null,sr=0,Kt,D,k;for(H=0;H<=l;H++)Ae[H]=0;for(v=0;v<q;v++)Ae[b[O+v]]++;for(oe=be,le=l;le>=1&&Ae[le]===0;le--);if(oe>le&&(oe=le),le===0)return I[N++]=1<<24|64<<16|0,I[N++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<le&&Ae[L]===0;L++);for(oe<L&&(oe=L),R=1,H=1;H<=l;H++)if(R<<=1,R-=Ae[H],R<0)return-1;if(R>0&&(S===c||le!==1))return-1;for(Ft[1]=0,H=1;H<l;H++)Ft[H+1]=Ft[H]+Ae[H];for(v=0;v<q;v++)b[O+v]!==0&&(W[Ft[b[O+v]]++]=v);if(S===c?(ke=ze=W,Se=19):S===d?(ke=g,J-=257,ze=y,sr-=257,Se=256):(ke=T,ze=A,Se=-1),E=0,v=0,H=L,qe=N,K=oe,ge=0,ae=-1,x=1<<oe,Ce=x-1,S===d&&x>h||S===m&&x>f)return 1;for(;;){Kt=H-ge,W[v]<Se?(D=0,k=W[v]):W[v]>Se?(D=ze[sr+W[v]],k=ke[J+W[v]]):(D=96,k=0),te=1<<H-ge,ce=1<<K,L=ce;do ce-=te,I[qe+(E>>ge)+ce]=Kt<<24|D<<16|k|0;while(ce!==0);for(te=1<<H-1;E&te;)te>>=1;if(te!==0?(E&=te-1,E+=te):E=0,v++,--Ae[H]===0){if(H===le)break;H=b[O+W[v]]}if(H>oe&&(E&Ce)!==ae){for(ge===0&&(ge=oe),qe+=L,K=H-ge,R=1<<K;K+ge<le&&(R-=Ae[K+ge],!(R<=0));)K++,R<<=1;if(x+=1<<K,S===d&&x>h||S===m&&x>f)return 1;ae=E&Ce,I[ae]=oe<<24|K<<16|qe-N|0}}return E!==0&&(I[qe+E]=H-ge<<24|64<<16|0),$.bits=oe,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),h=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),m=o("./zlib/gzheader"),g=Object.prototype.toString;function y(_){if(!(this instanceof y))return new y(_);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},_||{});var S=this.options;S.raw&&S.windowBits>=0&&S.windowBits<16&&(S.windowBits=-S.windowBits,S.windowBits===0&&(S.windowBits=-15)),S.windowBits>=0&&S.windowBits<16&&!(_&&_.windowBits)&&(S.windowBits+=32),S.windowBits>15&&S.windowBits<48&&(S.windowBits&15)===0&&(S.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,S.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new m,n.inflateGetHeader(this.strm,this.header),S.dictionary&&(typeof S.dictionary=="string"?S.dictionary=h.string2buf(S.dictionary):g.call(S.dictionary)==="[object ArrayBuffer]"&&(S.dictionary=new Uint8Array(S.dictionary)),S.raw&&(b=n.inflateSetDictionary(this.strm,S.dictionary),b!==f.Z_OK)))throw new Error(c[b])}y.prototype.push=function(_,S){var b=this.strm,O=this.options.chunkSize,q=this.options.dictionary,I,N,W,$,be,H=!1;if(this.ended)return!1;N=S===~~S?S:S===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof _=="string"?b.input=h.binstring2buf(_):g.call(_)==="[object ArrayBuffer]"?b.input=new Uint8Array(_):b.input=_,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(O),b.next_out=0,b.avail_out=O),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&q&&(I=n.inflateSetDictionary(this.strm,q)),I===f.Z_BUF_ERROR&&H===!0&&(I=f.Z_OK,H=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(N===f.Z_FINISH||N===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=h.utf8border(b.output,b.next_out),$=b.next_out-W,be=h.buf2string(b.output,W),b.next_out=$,b.avail_out=O-$,$&&l.arraySet(b.output,b.output,W,$,0),this.onData(be)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(H=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(N=f.Z_FINISH),N===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(N===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},y.prototype.onData=function(_){this.chunks.push(_)},y.prototype.onEnd=function(_){_===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=_,this.msg=this.strm.msg};function T(_,S){var b=new y(S);if(b.push(_,!0),b.err)throw b.msg||c[b.err];return b.result}function A(_,S){return S=S||{},S.raw=!0,T(_,S)}a.Inflate=y,a.inflate=T,a.inflateRaw=A,a.ungzip=T},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var Aw=globalThis.fetch,us=class{constructor(e,t={},r){this.type=e,this.detail=t,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},fd=class{constructor(){this.listeners={}}addEventListener(e,t,r){let o=this.listeners[e]||[];r?o.unshift(t):o.push(t),this.listeners[e]=o}removeEventListener(e,t){let r=this.listeners[e]||[],o=r.findIndex(s=>s===t);o>-1&&(r.splice(o,1),this.listeners[e]=r)}dispatch(e){let t=this.listeners[e.type];if(t)for(let r=0,o=t.length;r<o&&e.__mayPropagate;r++)t[r](e)}},cd=new Date("1904-01-01T00:00:00+0000").getTime();function dd(e){return Array.from(e).map(t=>String.fromCharCode(t)).join("")}var md=class{constructor(e,t,r){this.name=(r||e.tag||"").trim(),this.length=e.length,this.start=e.offset,this.offset=0,this.data=t,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(e){this.start=e,this.offset=0}skip(e=0,t=8){this.offset+=e*t/8}getValue(e,t){let r=this.start+this.offset;this.offset+=t;try{return this.data[e](r)}catch(o){throw console.error("parser",e,t,this),console.error("parser",this.start,this.offset),o}}flags(e){if(e===8||e===16||e===32||e===64)return this[`uint${e}`].toString(2).padStart(e,0).split("").map(t=>t==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let e=this.uint32;return dd([e>>24&255,e>>16&255,e>>8&255,e&255])}get fixed(){let e=this.int16,t=Math.round(1e3*this.uint16/65356);return e+t/1e3}get legacyFixed(){let e=this.uint16,t=this.uint16.toString(16).padStart(4,0);return parseFloat(`${e}.${t}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let e=0;for(let t=0;t<5;t++){let r=this.uint8;if(e=e*128+(r&127),r<128)break}return e}get longdatetime(){return new Date(cd+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let e=p.uint16,t=[0,1,-2,-1][e>>14],r=e&16383;return t+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(e=0,t=0,r=8,o=!1){if(e=e||this.length,e===0)return[];t&&(this.currentPosition=t);let s=`${o?"":"u"}int${r}`,a=[];for(;e--;)a.push(this[s]);return a}},Be=class{constructor(e){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>e});let r=e.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(e){Object.keys(e).forEach(t=>{let r=Object.getOwnPropertyDescriptor(e,t);r.get?this[t]=r.get.bind(this):r.value!==void 0&&(this[t]=r.value)}),this.parser.length&&this.parser.verifyLength()}},me=class extends Be{constructor(e,t,r){let{parser:o,start:s}=super(new md(e,t,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(e,t,r){let o;Object.defineProperty(e,t,{get:()=>o||(o=r(),o),enumerable:!0})}var pd=class extends me{constructor(e,t,r){let{p:o}=super({offset:0,length:12},t,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new hd(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},t);Z(this.tables,s.tag.trim(),a)})}},hd=class{constructor(e){this.tag=e.tag,this.checksum=e.uint32,this.offset=e.uint32,this.length=e.uint32}},Hl=Wl.inflate||void 0,ql=void 0,gd=class extends me{constructor(e,t,r){let{p:o}=super({offset:0,length:44},t,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new yd(o)),vd(this,t,r)}},yd=class{constructor(e){this.tag=e.tag,this.offset=e.uint32,this.compLength=e.uint32,this.origLength=e.uint32,this.origChecksum=e.uint32}};function vd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=0,a=t;if(o.compLength!==o.origLength){let n=t.buffer.slice(o.offset,o.offset+o.compLength),l;if(Hl)l=Hl(new Uint8Array(n));else if(ql)l=ql(new Uint8Array(n));else{let h="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(h),new Error(h)}a=new DataView(l.buffer)}else s=o.offset;return r(e.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Yl=Ul,Zl=void 0,bd=class extends me{constructor(e,t,r){let{p:o}=super({offset:0,length:48},t,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new wd(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,h)=>{let f=this.directory[h+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=t.buffer.slice(s);if(Yl)a=Yl(new Uint8Array(n));else if(Zl)a=new Uint8Array(Zl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw e.onerror&&e.onerror(l),new Error(l)}xd(this,a,r)}},wd=class{constructor(e){this.flags=e.uint8;let t=this.tagNumber=this.flags&63;t===63?this.tag=e.tag:this.tag=Sd(t);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=e.uint128,o&&(this.transformLength=e.uint128)}};function xd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(t.slice(s,a).buffer);try{return r(e.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function Sd(e){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][e&63]}var tu={},ru=!1;Promise.all([Promise.resolve().then(function(){return Kd}),Promise.resolve().then(function(){return Qd}),Promise.resolve().then(function(){return em}),Promise.resolve().then(function(){return om}),Promise.resolve().then(function(){return nm}),Promise.resolve().then(function(){return fm}),Promise.resolve().then(function(){return dm}),Promise.resolve().then(function(){return pm}),Promise.resolve().then(function(){return Fm}),Promise.resolve().then(function(){return Bm}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return Fp}),Promise.resolve().then(function(){return Tp}),Promise.resolve().then(function(){return Ep}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return zp}),Promise.resolve().then(function(){return Gp}),Promise.resolve().then(function(){return Up}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Yp}),Promise.resolve().then(function(){return Xp}),Promise.resolve().then(function(){return Qp}),Promise.resolve().then(function(){return th}),Promise.resolve().then(function(){return rh}),Promise.resolve().then(function(){return sh}),Promise.resolve().then(function(){return ah}),Promise.resolve().then(function(){return lh}),Promise.resolve().then(function(){return fh}),Promise.resolve().then(function(){return mh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Lh}),Promise.resolve().then(function(){return Nh}),Promise.resolve().then(function(){return zh}),Promise.resolve().then(function(){return Wh}),Promise.resolve().then(function(){return qh}),Promise.resolve().then(function(){return Xh})]).then(e=>{e.forEach(t=>{let r=Object.keys(t)[0];tu[r]=t[r]}),ru=!0});function Cd(e,t,r){let o=t.tag.replace(/[^\w\d]/g,""),s=tu[o];return s?new s(t,r,e):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Fd(){let e=0;function t(r,o){if(!ru)return e>10?o(new Error("loading took too long")):(e++,setTimeout(()=>t(r),250));r(Cd)}return new Promise((r,o)=>t(r))}function _d(e,t){let r=e.lastIndexOf("."),o=(e.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${e} is not a known webfont format.`),t)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function kd(e,t,r={}){if(!globalThis.document)return;let o=_d(t,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` @font-face { - font-family: "${t}"; + font-family: "${e}"; ${a.join(` `)} - src: url("${e}") format("${o}"); -}`,globalThis.document.head.appendChild(s),s}var Fd=[0,1,0,0],kd=[79,84,84,79],Od=[119,79,70,70],Td=[119,79,70,50];function is(t,e){if(t.length===e.length){for(let r=0;r<t.length;r++)if(t[r]!==e[r])return;return!0}}function _d(t){let e=[t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3)];if(is(e,Fd)||is(e,kd))return"SFNT";if(is(e,Od))return"WOFF";if(is(e,Td))return"WOFF2"}function Pd(t){if(!t.ok)throw new Error(`HTTP ${t.status} - ${t.statusText}`);return t}var us=class extends id{constructor(t,e={}){super(),this.name=t,this.options=e,this.metrics=!1}get src(){return this.__src}set src(t){this.__src=t,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await Cd(this.name,t,this.options),this.loadFont(t)))()}async loadFont(t,e){fetch(t).then(r=>Pd(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,e||t)).catch(r=>{let o=new as("error",r,`Failed to load font at ${e||t}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(t,e){this.fontData=new DataView(t);let r=_d(this.fontData);if(!r)throw new Error(`${e} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new as("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(t){return Sd().then(e=>(t==="SFNT"&&(this.opentype=new cd(this,this.fontData,e)),t==="WOFF"&&(this.opentype=new md(this,this.fontData,e)),t==="WOFF2"&&(this.opentype=new gd(this,this.fontData,e)),this.opentype))}getGlyphId(t){return this.opentype.tables.cmap.getGlyphId(t)}reverse(t){return this.opentype.tables.cmap.reverse(t)}supports(t){return this.getGlyphId(t)!==0}supportsVariation(t){return this.opentype.tables.cmap.supportsVariation(t)!==!1}measureText(t,e=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=t,r.style.fontFamily=this.name,r.style.fontSize=`${e}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=e,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let t=new as("unload",{font:this});this.dispatch(t),this.onunload&&this.onunload(t)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let t=new as("load",{font:this});this.dispatch(t),this.onload&&this.onload(t)}}};globalThis.Font=us;var Ye=class extends Bt{constructor(t,e,r){super(t),this.plaformID=e,this.encodingID=r}},Ad=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=0,this.length=t.uint16,this.language=t.uint16,this.glyphIdArray=[...new Array(256)].map(o=>t.uint8)}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=t&&t<=255}reverse(t){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Ed=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=2,this.length=t.uint16,this.language=t.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>t.uint16);let o=Math.max(...this.subHeaderKeys),s=t.currentPosition;Z(this,"subHeaders",()=>(t.currentPosition=s,[...new Array(o)].map(n=>new Rd(t))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(t.currentPosition=a,[...new Array(o)].map(n=>t.uint16)))}supports(t){t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let e=t&&255,r=t&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=e&&e<=n}reverse(t){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(t=!1){return t?this.subHeaders.map(e=>({firstCode:e.firstCode,lastCode:e.lastCode})):this.subHeaders.map(e=>({start:e.firstCode,end:e.lastCode}))}},Rd=class{constructor(t){this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=t.int16,this.idRangeOffset=t.uint16}},Id=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=4,this.length=t.uint16,this.language=t.uint16,this.segCountX2=t.uint16,this.segCount=this.segCountX2/2,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16;let o=t.currentPosition;Z(this,"endCode",()=>t.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>t.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>t.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>t.readBytes(this.segCount,n,16));let l=n+this.segCountX2,h=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>t.readBytes(h,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,t))}buildSegments(t,e,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],h=this.idDelta[a],f=this.idRangeOffset[a],c=t+2*a,d=[];if(f===0)for(let m=n+h,g=l+h;m<=g;m++)d.push(m);else for(let m=0,g=l-n;m<=g;m++)r.currentPosition=c+f+m*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:h,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(t){let e=this.segments.find(o=>o.glyphIDs.includes(t));if(!e)return{};let r=e.startCode+e.glyphIDs.indexOf(t);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(t){if(t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535)return 0;let e=this.segments.find(r=>r.startCode<=t&&t<=r.endCode);return e?e.glyphIDs[t-e.startCode]:0}supports(t){return this.getGlyphId(t)!==0}getSupportedCharCodes(t=!1){return t?this.segments:this.segments.map(e=>({start:e.startCode,end:e.endCode}))}},Ld=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=6,this.length=t.uint16,this.language=t.uint16,this.firstCode=t.uint16,this.entryCount=t.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>t.uint16))}supports(t){if(t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),t<this.firstCode)return{};if(t>this.firstCode+this.entryCount)return{};let e=t-this.firstCode;return{code:e,unicode:String.fromCodePoint(e)}}reverse(t){let e=this.glyphIdArray.indexOf(t);if(e>-1)return this.firstCode+e}getSupportedCharCodes(t=!1){return t?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Bd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=8,t.uint16,this.length=t.uint32,this.language=t.uint32,this.is32=[...new Array(8192)].map(s=>t.uint8),this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new Vd(t)))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(e=>e.startcharCode<=t&&t<=e.endcharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startcharCode,end:e.endcharCode}))}},Vd=class{constructor(t){this.startcharCode=t.uint32,this.endcharCode=t.uint32,this.startGlyphID=t.uint32}},Dd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=10,t.uint16,this.length=t.uint32,this.language=t.uint32,this.startCharCode=t.uint32,this.numChars=t.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>t.uint16))}supports(t){return t.charCodeAt&&(t=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),t<this.startCharCode||t>this.startCharCode+this.numChars?!1:t-this.startCharCode}reverse(t){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(t=!1){return t?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Nd=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=12,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new zd(t)))}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),55296<=t&&t<=57343||(t&65534)===65534||(t&65535)===65535?0:this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){for(let e of this.groups){let r=e.startGlyphID;if(r>t)continue;if(r===t)return e.startCharCode;if(r+(e.endCharCode-e.startCharCode)<t)continue;let s=e.startCharCode+(t-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},zd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.startGlyphID=t.uint32}},Md=class extends Ye{constructor(t,e,r){super(t,e,r),this.format=13,t.uint16,this.length=t.uint32,this.language=t.uint32,this.numGroups=t.uint32;let o=[...new Array(this.numGroups)].map(s=>new Gd(t));Z(this,"groups",o)}supports(t){return t.charCodeAt&&(t=t.charCodeAt(0)),this.groups.findIndex(e=>e.startCharCode<=t&&t<=e.endCharCode)!==-1}reverse(t){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(t=!1){return t?this.groups:this.groups.map(e=>({start:e.startCharCode,end:e.endCharCode}))}},Gd=class{constructor(t){this.startCharCode=t.uint32,this.endCharCode=t.uint32,this.glyphID=t.uint32}},jd=class extends Ye{constructor(t,e,r){super(t,e,r),this.subTableStart=t.currentPosition,this.format=14,this.length=t.uint32,this.numVarSelectorRecords=t.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new Ud(t)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(t){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(t){let e=this.varSelector.find(r=>r.varSelector===t);return e||!1}getSupportedVariations(){return this.varSelectors.map(t=>t.varSelector)}},Ud=class{constructor(t){this.varSelector=t.uint24,this.defaultUVSOffset=t.Offset32,this.nonDefaultUVSOffset=t.Offset32}};function Hd(t,e,r){let o=t.uint16;return o===0?new Ad(t,e,r):o===2?new Ed(t,e,r):o===4?new Id(t,e,r):o===6?new Ld(t,e,r):o===8?new Bd(t,e,r):o===10?new Dd(t,e,r):o===12?new Nd(t,e,r):o===13?new Md(t,e,r):o===14?new jd(t,e,r):{}}var Wd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Yd(r,this.tableStart))}getSubTable(t){return this.encodingRecords[t].table}getSupportedEncodings(){return this.encodingRecords.map(t=>({platformID:t.platformID,encodingId:t.encodingID}))}getSupportedCharCodes(t,e){let r=this.encodingRecords.findIndex(s=>s.platformID===t&&s.encodingID===e);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(t){for(let e=0;e<this.numTables;e++){let r=this.getSubTable(e).reverse(t);if(r)return r}}getGlyphId(t){let e=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(e=s.getGlyphId(t),e!==0):!1}),e}supports(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(t)!==!1})}supportsVariation(t){return this.encodingRecords.some((e,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(t)!==!1})}},Yd=class{constructor(t,e){let r=this.platformID=t.uint16,o=this.encodingID=t.uint16,s=this.offset=t.Offset32;Z(this,"table",()=>(t.currentPosition=e+s,Hd(t,r,o)))}},qd=Object.freeze({__proto__:null,cmap:Wd}),Zd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Xd=Object.freeze({__proto__:null,head:Zd}),Kd=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},Jd=Object.freeze({__proto__:null,hhea:Kd}),Qd=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new $d(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(h=>o.int16)))}}},$d=class{constructor(t,e){this.advanceWidth=t,this.lsb=e}},tm=Object.freeze({__proto__:null,hmtx:Qd}),em=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},rm=Object.freeze({__proto__:null,maxp:em}),om=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new nm(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new sm(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(t){let e=this.nameRecords.find(r=>r.nameID===t);if(e)return e.string}},sm=class{constructor(t,e){this.length=t,this.offset=e}},nm=class{constructor(t,e){this.platformID=t.uint16,this.encodingID=t.uint16,this.languageID=t.uint16,this.nameID=t.uint16,this.length=t.uint16,this.offset=t.Offset16,Z(this,"string",()=>(t.currentPosition=e.stringStart+this.offset,am(t,this)))}};function am(t,e){let{platformID:r,length:o}=e;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,h=o/2;l<h;l++)n[l]=String.fromCharCode(t.uint16);return n.join("")}let s=t.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var im=Object.freeze({__proto__:null,name:om}),lm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},um=Object.freeze({__proto__:null,OS2:lm}),fm=class extends mt{constructor(t,e){let{p:r}=super(t,e);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Ul.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(t){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let e=this.glyphNameIndex[t];if(e<258)return Ul[e];let r=this.glyphNameOffsets[t],s=this.glyphNameOffsets[t+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Ul=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],cm=Object.freeze({__proto__:null,post:fm}),dm=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new wn({offset:t.offset+this.horizAxisOffset},e)),Z(this,"vertAxis",()=>new wn({offset:t.offset+this.vertAxisOffset},e)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new wn({offset:t.offset+this.itemVarStoreOffset},e)))}},wn=class extends mt{constructor(t,e){let{p:r}=super(t,e,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new mm({offset:t.offset+this.baseTagListOffset},e)),Z(this,"baseScriptList",()=>new pm({offset:t.offset+this.baseScriptListOffset},e))}},mm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},pm=class extends mt{constructor(t,e){let{p:r}=super(t,e,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new hm(this.start,r))))}},hm=class{constructor(t,e){this.baseScriptTag=e.tag,this.baseScriptOffset=e.Offset16,Z(this,"baseScriptTable",()=>(e.currentPosition=t+this.baseScriptOffset,new gm(e)))}},gm=class{constructor(t){this.start=t.currentPosition,this.baseValuesOffset=t.Offset16,this.defaultMinMaxOffset=t.Offset16,this.baseLangSysCount=t.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(e=>new ym(this.start,t)),Z(this,"baseValues",()=>(t.currentPosition=this.start+this.baseValuesOffset,new vm(t))),Z(this,"defaultMinMax",()=>(t.currentPosition=this.start+this.defaultMinMaxOffset,new Jl(t)))}},ym=class{constructor(t,e){this.baseLangSysTag=e.tag,this.minMaxOffset=e.Offset16,Z(this,"minMax",()=>(e.currentPosition=t+this.minMaxOffset,new Jl(e)))}},vm=class{constructor(t){this.parser=t,this.start=t.currentPosition,this.defaultBaselineIndex=t.uint16,this.baseCoordCount=t.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(e=>t.Offset16)}getTable(t){return this.parser.currentPosition=this.start+this.baseCoords[t],new wm(this.parser)}},Jl=class{constructor(t){this.minCoord=t.Offset16,this.maxCoord=t.Offset16,this.featMinMaxCount=t.uint16;let e=t.currentPosition;Z(this,"featMinMaxRecords",()=>(t.currentPosition=e,[...new Array(this.featMinMaxCount)].map(r=>new bm(t))))}},bm=class{constructor(t){this.featureTableTag=t.tag,this.minCoord=t.Offset16,this.maxCoord=t.Offset16}},wm=class{constructor(t){this.baseCoordFormat=t.uint16,this.coordinate=t.int16,this.baseCoordFormat===2&&(this.referenceGlyph=t.uint16,this.baseCoordPoint=t.uint16),this.baseCoordFormat===3&&(this.deviceTable=t.Offset16)}},Sm=Object.freeze({__proto__:null,BASE:dm}),Hl=class{constructor(t){this.classFormat=t.uint16,this.classFormat===1&&(this.startGlyphID=t.uint16,this.glyphCount=t.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.classFormat===2&&(this.classRangeCount=t.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(e=>new xm(t)))}},xm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.class=t.uint16}},vo=class extends Bt{constructor(t){super(t),this.coverageFormat=t.uint16,this.coverageFormat===1&&(this.glyphCount=t.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(e=>t.uint16)),this.coverageFormat===2&&(this.rangeCount=t.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(e=>new Cm(t)))}},Cm=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.startCoverageIndex=t.uint16}},Fm=class{constructor(t,e){this.table=t,this.parser=e,this.start=e.currentPosition,this.format=e.uint16,this.variationRegionListOffset=e.Offset32,this.itemVariationDataCount=e.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>e.Offset32)}},km=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new Hl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new Om(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new _m(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new Hl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Em(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Fm(r)}))}},Om=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,this.glyphCount=t.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16)}getPoint(t){return this.parser.currentPosition=this.start+this.attachPointOffsets[t],new Tm(this.parser)}},Tm=class{constructor(t){this.pointCount=t.uint16,this.pointIndices=[...new Array(this.pointCount)].map(e=>t.uint16)}},_m=class extends Bt{constructor(t){super(t),this.coverageOffset=t.Offset16,Z(this,"coverage",()=>(t.currentPosition=this.start+this.coverageOffset,new vo(t))),this.ligGlyphCount=t.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(e=>t.Offset16)}getLigGlyph(t){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[t],new Pm(this.parser)}},Pm=class extends Bt{constructor(t){super(t),this.caretCount=t.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(e=>t.Offset16)}getCaretValue(t){return this.parser.currentPosition=this.start+this.caretValueOffsets[t],new Am(this.parser)}},Am=class{constructor(t){this.caretValueFormat=t.uint16,this.caretValueFormat===1&&(this.coordinate=t.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=t.uint16),this.caretValueFormat===3&&(this.coordinate=t.int16,this.deviceOffset=t.Offset16)}},Em=class extends Bt{constructor(t){super(t),this.markGlyphSetTableFormat=t.uint16,this.markGlyphSetCount=t.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(e=>t.Offset32)}getMarkGlyphSet(t){return this.parser.currentPosition=this.start+this.coverageOffsets[t],new vo(this.parser)}},Rm=Object.freeze({__proto__:null,GDEF:km}),Wl=class extends Bt{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(t){super(t),this.scriptCount=t.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(e=>new Im(t))}},Im=class{constructor(t){this.scriptTag=t.tag,this.scriptOffset=t.Offset16}},Lm=class extends Bt{constructor(t){super(t),this.defaultLangSys=t.Offset16,this.langSysCount=t.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(e=>new Bm(t))}},Bm=class{constructor(t){this.langSysTag=t.tag,this.langSysOffset=t.Offset16}},Yl=class{constructor(t){this.lookupOrder=t.Offset16,this.requiredFeatureIndex=t.uint16,this.featureIndexCount=t.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(e=>t.uint16)}},ql=class extends Bt{static EMPTY={featureCount:0,featureRecords:[]};constructor(t){super(t),this.featureCount=t.uint16,this.featureRecords=[...new Array(this.featureCount)].map(e=>new Vm(t))}},Vm=class{constructor(t){this.featureTag=t.tag,this.featureOffset=t.Offset16}},Dm=class extends Bt{constructor(t){super(t),this.featureParams=t.Offset16,this.lookupIndexCount=t.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(e=>t.uint16)}getFeatureParams(){if(this.featureParams>0){let t=this.parser;t.currentPosition=this.start+this.featureParams;let e=this.featureTag;if(e==="size")return new zm(t);if(e.startsWith("cc"))return new Nm(t);if(e.startsWith("ss"))return new Mm(t)}}},Nm=class{constructor(t){this.format=t.uint16,this.featUiLabelNameId=t.uint16,this.featUiTooltipTextNameId=t.uint16,this.sampleTextNameId=t.uint16,this.numNamedParameters=t.uint16,this.firstParamUiLabelNameId=t.uint16,this.charCount=t.uint16,this.character=[...new Array(this.charCount)].map(e=>t.uint24)}},zm=class{constructor(t){this.designSize=t.uint16,this.subfamilyIdentifier=t.uint16,this.subfamilyNameID=t.uint16,this.smallEnd=t.uint16,this.largeEnd=t.uint16}},Mm=class{constructor(t){this.version=t.uint16,this.UINameID=t.uint16}};function Ql(t){t.parser.currentPosition-=2,delete t.coverageOffset,delete t.getCoverageTable}var Fr=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.coverageOffset=t.Offset16}getCoverageTable(){let t=this.parser;return t.currentPosition=this.start+this.coverageOffset,new vo(t)}},xn=class{constructor(t){this.glyphSequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},Gm=class extends Fr{constructor(t){super(t),this.deltaGlyphID=t.int16}},jm=class extends Fr{constructor(t){super(t),this.sequenceCount=t.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(e=>t.Offset16)}getSequence(t){let e=this.parser;return e.currentPosition=this.start+this.sequenceOffsets[t],new Um(e)}},Um=class{constructor(t){this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Hm=class extends Fr{constructor(t){super(t),this.alternateSetCount=t.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(e=>t.Offset16)}getAlternateSet(t){let e=this.parser;return e.currentPosition=this.start+this.alternateSetOffsets[t],new Wm(e)}},Wm=class{constructor(t){this.glyphCount=t.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},Ym=class extends Fr{constructor(t){super(t),this.ligatureSetCount=t.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(e=>t.Offset16)}getLigatureSet(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureSetOffsets[t],new qm(e)}},qm=class extends Bt{constructor(t){super(t),this.ligatureCount=t.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(e=>t.Offset16)}getLigature(t){let e=this.parser;return e.currentPosition=this.start+this.ligatureOffsets[t],new Zm(e)}},Zm=class{constructor(t){this.ligatureGlyph=t.uint16,this.componentCount=t.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(e=>t.uint16)}},Xm=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.subRuleSetCount=t.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.classDefOffset=t.Offset16,this.subClassSetCount=t.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Ql(this),this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(e=>t.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new xn(t)))}getSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.subRuleSetOffsets[t],new Km(e)}getSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.subClassSetOffsets[t],new Jm(e)}getCoverageTable(t){if(this.substFormat!==3&&!t)return super.getCoverageTable();if(!t)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let e=this.parser;return e.currentPosition=this.start+this.coverageOffsets[t],new vo(e)}},Km=class extends Bt{constructor(t){super(t),this.subRuleCount=t.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.subRuleOffsets[t],new $l(e)}},$l=class{constructor(t){this.glyphCount=t.uint16,this.substitutionCount=t.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(e=>t.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new xn(t))}},Jm=class extends Bt{constructor(t){super(t),this.subClassRuleCount=t.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.subClassRuleOffsets[t],new Qm(e)}},Qm=class extends $l{constructor(t){super(t)}},$m=class extends Fr{constructor(t){super(t),this.substFormat===1&&(this.chainSubRuleSetCount=t.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(e=>t.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=t.Offset16,this.inputClassDefOffset=t.Offset16,this.lookaheadClassDefOffset=t.Offset16,this.chainSubClassSetCount=t.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(e=>t.Offset16)),this.substFormat===3&&(Ql(this),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.inputGlyphCount=t.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.seqLookupCount=t.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(e=>new tu(t)))}getChainSubRuleSet(t){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleSetOffsets[t],new tp(e)}getChainSubClassSet(t){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let e=this.parser;return e.currentPosition=this.start+this.chainSubClassSetOffsets[t],new rp(e)}getCoverageFromOffset(t){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let e=this.parser;return e.currentPosition=this.start+t,new vo(e)}},tp=class extends Bt{constructor(t){super(t),this.chainSubRuleCount=t.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(e=>t.Offset16)}getSubRule(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new ep(e)}},ep=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(e=>new xn(t))}},rp=class extends Bt{constructor(t){super(t),this.chainSubClassRuleCount=t.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(e=>t.Offset16)}getSubClass(t){let e=this.parser;return e.currentPosition=this.start+this.chainSubRuleOffsets[t],new op(e)}},op=class{constructor(t){this.backtrackGlyphCount=t.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(e=>t.uint16),this.inputGlyphCount=t.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(e=>t.uint16),this.lookaheadGlyphCount=t.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(e=>t.uint16),this.substitutionCount=t.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(e=>new tu(t))}},tu=class extends Bt{constructor(t){super(t),this.sequenceIndex=t.uint16,this.lookupListIndex=t.uint16}},sp=class extends Bt{constructor(t){super(t),this.substFormat=t.uint16,this.extensionLookupType=t.uint16,this.extensionOffset=t.Offset32}},np=class extends Fr{constructor(t){super(t),this.backtrackGlyphCount=t.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(e=>t.Offset16),this.lookaheadGlyphCount=t.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(e=>t.Offset16),this.glyphCount=t.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(e=>t.uint16)}},ap={buildSubtable:function(t,e){let r=new[void 0,Gm,jm,Hm,Ym,Xm,$m,sp,np][t](e);return r.type=t,r}},qe=class extends Bt{constructor(t){super(t)}},ip=class extends qe{constructor(t){super(t),console.log("lookup type 1")}},lp=class extends qe{constructor(t){super(t),console.log("lookup type 2")}},up=class extends qe{constructor(t){super(t),console.log("lookup type 3")}},fp=class extends qe{constructor(t){super(t),console.log("lookup type 4")}},cp=class extends qe{constructor(t){super(t),console.log("lookup type 5")}},dp=class extends qe{constructor(t){super(t),console.log("lookup type 6")}},mp=class extends qe{constructor(t){super(t),console.log("lookup type 7")}},pp=class extends qe{constructor(t){super(t),console.log("lookup type 8")}},hp=class extends qe{constructor(t){super(t),console.log("lookup type 9")}},gp={buildSubtable:function(t,e){let r=new[void 0,ip,lp,up,fp,cp,dp,mp,pp,hp][t](e);return r.type=t,r}},Zl=class extends Bt{static EMPTY={lookupCount:0,lookups:[]};constructor(t){super(t),this.lookupCount=t.uint16,this.lookups=[...new Array(this.lookupCount)].map(e=>t.Offset16)}},yp=class extends Bt{constructor(t,e){super(t),this.ctType=e,this.lookupType=t.uint16,this.lookupFlag=t.uint16,this.subTableCount=t.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>t.Offset16),this.markFilteringSet=t.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(t){let e=this.ctType==="GSUB"?ap:gp;return this.parser.currentPosition=this.start+this.subtableOffsets[t],e.buildSubtable(this.lookupType,this.parser)}},eu=class extends mt{constructor(t,e,r){let{p:o,tableStart:s}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Wl.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Wl(o))),Z(this,"featureList",()=>a?ql.EMPTY:(o.currentPosition=s+this.featureListOffset,new ql(o))),Z(this,"lookupList",()=>a?Zl.EMPTY:(o.currentPosition=s+this.lookupListOffset,new Zl(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(t=>t.scriptTag)}getScriptTable(t){let e=this.scriptList.scriptRecords.find(o=>o.scriptTag===t);this.parser.currentPosition=this.scriptList.start+e.scriptOffset;let r=new Lm(this.parser);return r.scriptTag=t,r}ensureScriptTable(t){return typeof t=="string"?this.getScriptTable(t):t}getSupportedLangSys(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys!==0,r=t.langSysRecords.map(o=>o.langSysTag);return e&&r.unshift("dflt"),r}getDefaultLangSysTable(t){t=this.ensureScriptTable(t);let e=t.defaultLangSys;if(e!==0){this.parser.currentPosition=t.start+e;let r=new Yl(this.parser);return r.langSysTag="",r.defaultForScript=t.scriptTag,r}}getLangSysTable(t,e="dflt"){if(e==="dflt")return this.getDefaultLangSysTable(t);t=this.ensureScriptTable(t);let r=t.langSysRecords.find(s=>s.langSysTag===e);this.parser.currentPosition=t.start+r.langSysOffset;let o=new Yl(this.parser);return o.langSysTag=e,o}getFeatures(t){return t.featureIndices.map(e=>this.getFeature(e))}getFeature(t){let e;if(parseInt(t)==t?e=this.featureList.featureRecords[t]:e=this.featureList.featureRecords.find(o=>o.featureTag===t),!e)return;this.parser.currentPosition=this.featureList.start+e.featureOffset;let r=new Dm(this.parser);return r.featureTag=e.featureTag,r}getLookups(t){return t.lookupListIndices.map(e=>this.getLookup(e))}getLookup(t,e){let r=this.lookupList.lookups[t];return this.parser.currentPosition=this.lookupList.start+r,new yp(this.parser,e)}},vp=class extends eu{constructor(t,e){super(t,e,"GSUB")}getLookup(t){return super.getLookup(t,"GSUB")}},bp=Object.freeze({__proto__:null,GSUB:vp}),wp=class extends eu{constructor(t,e){super(t,e,"GPOS")}getLookup(t){return super.getLookup(t,"GPOS")}},Sp=Object.freeze({__proto__:null,GPOS:wp}),xp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new Cp(r)}},Cp=class extends Bt{constructor(t){super(t),this.numEntries=t.uint16,this.documentRecords=[...new Array(this.numEntries)].map(e=>new Fp(t))}getDocument(t){let e=this.documentRecords[t];if(!e)return"";let r=this.start+e.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(e.svgDocLength)}getDocumentForGlyph(t){let e=this.documentRecords.findIndex(r=>r.startGlyphID<=t&&t<=r.endGlyphID);return e===-1?"":this.getDocument(e)}},Fp=class{constructor(t){this.startGlyphID=t.uint16,this.endGlyphID=t.uint16,this.svgDocOffset=t.Offset32,this.svgDocLength=t.uint32}},kp=Object.freeze({__proto__:null,SVG:xp}),Op=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new Tp(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new _p(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(t=>t.tag)}getAxis(t){return this.axes.find(e=>e.tag===t)}},Tp=class{constructor(t){this.tag=t.tag,this.minValue=t.fixed,this.defaultValue=t.fixed,this.maxValue=t.fixed,this.flags=t.flags(16),this.axisNameID=t.uint16}},_p=class{constructor(t,e,r){let o=t.currentPosition;this.subfamilyNameID=t.uint16,t.uint16,this.coordinates=[...new Array(e)].map(s=>t.fixed),t.currentPosition-o<r&&(this.postScriptNameID=t.uint16)}},Pp=Object.freeze({__proto__:null,fvar:Op}),Ap=class extends mt{constructor(t,e){let{p:r}=super(t,e),o=t.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},Ep=Object.freeze({__proto__:null,cvt:Ap}),Rp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},Ip=Object.freeze({__proto__:null,fpgm:Rp}),Lp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Bp(r)))}},Bp=class{constructor(t){this.rangeMaxPPEM=t.uint16,this.rangeGaspBehavior=t.uint16}},Vp=Object.freeze({__proto__:null,gasp:Lp}),Dp=class extends mt{constructor(t,e){super(t,e)}getGlyphData(t,e){return this.parser.currentPosition=this.tableStart+t,this.parser.readBytes(e)}},Np=Object.freeze({__proto__:null,glyf:Dp}),zp=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(t){let e=this.offsets[t]*this.x2?2:1,r=this.offsets[t+1]*this.x2?2:1;return{offset:e,length:r-e}}},Mp=Object.freeze({__proto__:null,loca:zp}),Gp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"instructions",()=>[...new Array(t.length)].map(o=>r.uint8))}},jp=Object.freeze({__proto__:null,prep:Gp}),Up=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Hp=Object.freeze({__proto__:null,CFF:Up}),Wp=class extends mt{constructor(t,e){let{p:r}=super(t,e);Z(this,"data",()=>r.readBytes())}},Yp=Object.freeze({__proto__:null,CFF2:Wp}),qp=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Zp(r)))}},Zp=class{constructor(t){this.glyphIndex=t.uint16,this.vertOriginY=t.int16}},Xp=Object.freeze({__proto__:null,VORG:qp}),Kp=class{constructor(t){this.indexSubTableArrayOffset=t.Offset32,this.indexTablesSize=t.uint32,this.numberofIndexSubTables=t.uint32,this.colorRef=t.uint32,this.hori=new ls(t),this.vert=new ls(t),this.startGlyphIndex=t.uint16,this.endGlyphIndex=t.uint16,this.ppemX=t.uint8,this.ppemY=t.uint8,this.bitDepth=t.uint8,this.flags=t.int8}},Jp=class{constructor(t){this.hori=new ls(t),this.vert=new ls(t),this.ppemX=t.uint8,this.ppemY=t.uint8,this.substitutePpemX=t.uint8,this.substitutePpemY=t.uint8}},ls=class{constructor(t){this.ascender=t.int8,this.descender=t.int8,this.widthMax=t.uint8,this.caretSlopeNumerator=t.int8,this.caretSlopeDenominator=t.int8,this.caretOffset=t.int8,this.minOriginSB=t.int8,this.minAdvanceSB=t.int8,this.maxBeforeBL=t.int8,this.minAfterBL=t.int8,this.pad1=t.int8,this.pad2=t.int8}},ru=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new Kp(o)))}},Qp=Object.freeze({__proto__:null,EBLC:ru}),ou=class extends mt{constructor(t,e,r){let{p:o}=super(t,e,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},$p=Object.freeze({__proto__:null,EBDT:ou}),th=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new Jp(r)))}},eh=Object.freeze({__proto__:null,EBSC:th}),rh=class extends ru{constructor(t,e){super(t,e,"CBLC")}},oh=Object.freeze({__proto__:null,CBLC:rh}),sh=class extends ou{constructor(t,e){super(t,e,"CBDT")}},nh=Object.freeze({__proto__:null,CBDT:sh}),ah=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},ih=Object.freeze({__proto__:null,sbix:ah}),lh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(t){let e=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=e;let r=new Sn(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new Sn(this.parser),n=a.gID;if(o===t)return r;if(n===t)return a;for(;e!==s;){let l=e+(s-e)/12;this.parser.currentPosition=l;let h=new Sn(this.parser),f=h.gID;if(f===t)return h;f>t?s=l:f<t&&(e=l)}return!1}getLayers(t){let e=this.getBaseGlyphRecord(t);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*e.firstLayerIndex,[...new Array(e.numLayers)].map(r=>new uh(p))}},Sn=class{constructor(t){this.gID=t.uint16,this.firstLayerIndex=t.uint16,this.numLayers=t.uint16}},uh=class{constructor(t){this.gID=t.uint16,this.paletteIndex=t.uint16}},fh=Object.freeze({__proto__:null,COLR:lh}),ch=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new dh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new mh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new ph(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new hh(r,o))))}},dh=class{constructor(t){this.blue=t.uint8,this.green=t.uint8,this.red=t.uint8,this.alpha=t.uint8}},mh=class{constructor(t,e){this.paletteTypes=[...new Array(e)].map(r=>t.uint32)}},ph=class{constructor(t,e){this.paletteLabels=[...new Array(e)].map(r=>t.uint16)}},hh=class{constructor(t,e){this.paletteEntryLabels=[...new Array(e)].map(r=>t.uint16)}},gh=Object.freeze({__proto__:null,CPAL:ch}),yh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new vh(r))}getData(t){let e=this.signatureRecords[t];return this.parser.currentPosition=this.tableStart+e.offset,new bh(this.parser)}},vh=class{constructor(t){this.format=t.uint32,this.length=t.uint32,this.offset=t.Offset32}},bh=class{constructor(t){t.uint16,t.uint16,this.signatureLength=t.uint32,this.signature=t.readBytes(this.signatureLength)}},wh=Object.freeze({__proto__:null,DSIG:yh}),Sh=class extends mt{constructor(t,e,r){let{p:o}=super(t,e),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new xh(o,s))}},xh=class{constructor(t,e){this.pixelSize=t.uint8,this.maxWidth=t.uint8,this.widths=t.readBytes(e)}},Ch=Object.freeze({__proto__:null,hdmx:Sh}),Fh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new kh(r);s.push(n),o+=n}return s})}},kh=class{constructor(t){this.version=t.uint16,this.length=t.uint16,this.coverage=t.flags(8),this.format=t.uint8,this.format===0&&(this.nPairs=t.uint16,this.searchRange=t.uint16,this.entrySelector=t.uint16,this.rangeShift=t.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(e=>new Oh(t)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},Oh=class{constructor(t){this.left=t.uint16,this.right=t.uint16,this.value=t.fword}},Th=Object.freeze({__proto__:null,kern:Fh}),_h=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},Ph=Object.freeze({__proto__:null,LTSH:_h}),Ah=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Eh=Object.freeze({__proto__:null,MERG:Ah}),Rh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new Ih(this.tableStart,r))}},Ih=class{constructor(t,e){this.tableStart=t,this.parser=e,this.tag=e.tag,this.dataOffset=e.Offset32,this.dataLength=e.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Lh=Object.freeze({__proto__:null,meta:Rh}),Bh=class extends mt{constructor(t,e){super(t,e),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Vh=Object.freeze({__proto__:null,PCLT:Bh}),Dh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Nh(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new zh(r))}},Nh=class{constructor(t){this.bCharSet=t.uint8,this.xRatio=t.uint8,this.yStartRatio=t.uint8,this.yEndRatio=t.uint8}},zh=class{constructor(t){this.recs=t.uint16,this.startsz=t.uint8,this.endsz=t.uint8,this.records=[...new Array(this.recs)].map(e=>new Mh(t))}},Mh=class{constructor(t){this.yPelHeight=t.uint16,this.yMax=t.int16,this.yMin=t.int16}},Gh=Object.freeze({__proto__:null,VDMX:Dh}),jh=class extends mt{constructor(t,e){let{p:r}=super(t,e);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},Uh=Object.freeze({__proto__:null,vhea:jh}),Hh=class extends mt{constructor(t,e,r){super(t,e);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Wh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Wh=class{constructor(t,e){this.advanceHeight=t,this.topSideBearing=e}},Yh=Object.freeze({__proto__:null,vmtx:Hh});var su=u(X(),1);var{kebabCase:qh}=yt(su.privateApis);function nu(t){let e=t.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:qh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(e)}var he=u(z(),1);function Zh(){let{installFonts:t}=(0,bo.useContext)(ie),[e,r]=(0,bo.useState)(!1),[o,s]=(0,bo.useState)(null),a=g=>{l(g)},n=g=>{l(g.target.files)},l=async g=>{if(!g)return;s(null),r(!0);let y=new Set,_=[...g],A=!1,k=_.map(async b=>{if(!await f(b))return A=!0,null;if(y.has(b.name))return null;let Y=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return gn.includes(Y)?(y.add(b.name),b):null}),x=(await Promise.all(k)).filter(b=>b!==null);if(x.length>0)h(x);else{let b=A?(0,Wr.__)("Sorry, you are not allowed to upload this file type."):(0,Wr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},h=async g=>{let y=await Promise.all(g.map(async _=>{let A=await d(_);return await er(A,A.file,"all"),A}));m(y)};async function f(g){let y=new us("Uploaded Font");try{let _=await c(g);return await y.fromDataBuffer(_,"font"),!0}catch{return!1}}async function c(g){return new Promise((y,_)=>{let A=new window.FileReader;A.readAsArrayBuffer(g),A.onload=()=>y(A.result),A.onerror=_})}let d=async g=>{let y=await c(g),_=new us("Uploaded Font");_.fromDataBuffer(y,g.name);let k=(await new Promise($=>_.onload=$)).detail.font,{name:x}=k.opentype.tables,b=x.get(16)||x.get(1),T=x.get(2).toLowerCase().includes("italic"),Y=k.opentype.tables["OS/2"].usWeightClass||"normal",D=!!k.opentype.tables.fvar&&k.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),H=D?`${D.minValue} ${D.maxValue}`:null;return{file:g,fontFamily:b,fontStyle:T?"italic":"normal",fontWeight:H||Y}},m=async g=>{let y=nu(g);try{await t(y),s({type:"success",message:(0,Wr.__)("Fonts were installed successfully.")})}catch(_){let A=_;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,he.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,he.jsx)(te.DropZone,{onFilesDrop:a}),(0,he.jsxs)(te.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,he.jsxs)(te.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,he.jsx)("ul",{children:o.errors.map((g,y)=>(0,he.jsx)("li",{children:g},y))})]}),e&&(0,he.jsx)(te.FlexItem,{children:(0,he.jsx)("div",{className:"font-library__upload-area",children:(0,he.jsx)(te.ProgressBar,{})})}),!e&&(0,he.jsx)(te.FormFileUpload,{accept:gn.map(g=>`.${g}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:g})=>(0,he.jsx)(te.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,Wr.__)("Upload font")})}),(0,he.jsx)(te.__experimentalText,{className:"font-library__upload-area__text",children:(0,Wr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var fs=Zh;var iu=u(z(),1),{Tabs:G2}=yt(Cn.privateApis),j2={id:"installed-fonts",title:(0,cs._x)("Library","Font library")},U2={id:"upload-fonts",title:(0,cs._x)("Upload","noun")};var lu=u(it(),1),Fn=u(X(),1),Kh=u(vt(),1);var uu=u(z(),1);var kn=u(z(),1);var fu=u(it(),1),ds=u(X(),1);var cu=u(z(),1);var Tn=u(z(),1);var Pe=u(it(),1),_n=u(X(),1),sg=u(vt(),1);var du=u(ae(),1);var rg=u(z(),1),{useSettingsForBlockElement:bC,TypographyPanel:wC}=yt(du.privateApis);var og=u(z(),1);var Pn=u(z(),1),PC={text:{description:(0,Pe.__)("Manage the fonts used on the site."),title:(0,Pe.__)("Text")},link:{description:(0,Pe.__)("Manage the fonts and typography used on the links."),title:(0,Pe.__)("Links")},heading:{description:(0,Pe.__)("Manage the fonts and typography used on headings."),title:(0,Pe.__)("Headings")},caption:{description:(0,Pe.__)("Manage the fonts and typography used on captions."),title:(0,Pe.__)("Captions")},button:{description:(0,Pe.__)("Manage the fonts and typography used on buttons."),title:(0,Pe.__)("Buttons")}};var lg=u(it(),1),ug=u(X(),1),pu=u(ae(),1);var Yr=u(X(),1),mu=u(it(),1);var ig=u(vt(),1);var ng=u(X(),1),ag=u(z(),1);var An=u(z(),1);var En=u(z(),1),{useSettingsForBlockElement:WC,ColorPanel:YC}=yt(pu.privateApis);var gg=u(it(),1),Su=u(X(),1);var dg=u(mr(),1),Rn=u(X(),1),mg=u(it(),1);var ps=u(X(),1);var ms=u(X(),1);var hu=u(z(),1);function gu(){let{paletteColors:t}=Vr();return t.slice(0,4).map(({slug:e,color:r},o)=>(0,hu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${e}-${o}`))}var So=u(z(),1),fg={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},cg=({label:t,isFocused:e,withHoverView:r})=>(0,So.jsx)(zr,{label:t,isFocused:e,withHoverView:r,children:({key:o})=>(0,So.jsx)(ms.__unstableMotion.div,{variants:fg,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(ms.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(gu,{})})},o)}),yu=cg;var kr=u(z(),1),vu=["color"];function hs({title:t,gap:e=2}){let r=Mo(vu);return r?.length<=1?null:(0,kr.jsxs)(ps.__experimentalVStack,{spacing:3,children:[t&&(0,kr.jsx)(xe,{level:3,children:t}),(0,kr.jsx)(ps.__experimentalGrid,{gap:e,children:r.map((o,s)=>(0,kr.jsx)(Gr,{variation:o,isPill:!0,properties:vu,showTooltip:!0,children:()=>(0,kr.jsx)(yu,{})},s))})]})}var bu=u(z(),1);var pg=u(mr(),1),gs=u(X(),1),hg=u(it(),1);var wu=u(z(),1);var In=u(z(),1),{Tabs:y6}=yt(Su.privateApis);var vg=u(it(),1),Cu=u(ae(),1),bg=u(X(),1);var xu=u(ae(),1);var yg=u(z(),1);var{BackgroundPanel:S6}=yt(xu.privateApis);var Ln=u(z(),1),{useHasBackgroundPanel:_6}=yt(Cu.privateApis);var Or=u(X(),1),Bn=u(it(),1);var Fg=u(vt(),1);var wg=u(X(),1),Sg=u(it(),1),xg=u(z(),1);var Vn=u(z(),1),{Menu:M6}=yt(Or.privateApis);var Ut=u(X(),1),xo=u(it(),1);var ys=u(vt(),1);var Dn=u(z(),1),{Menu:eF}=yt(Ut.privateApis),rF=[{label:(0,xo.__)("Rename"),action:"rename"},{label:(0,xo.__)("Delete"),action:"delete"}],oF=[{label:(0,xo.__)("Reset"),action:"reset"}];var kg=u(z(),1);var _g=u(it(),1),ku=u(ae(),1);var Fu=u(ae(),1),Og=u(vt(),1);var Tg=u(z(),1),{useSettingsForBlockElement:dF,DimensionsPanel:mF}=yt(Fu.privateApis);var Nn=u(z(),1),{useHasDimensionsPanel:wF,useSettingsForBlockElement:SF}=yt(ku.privateApis);var Eu=u(X(),1),Rg=u(it(),1);var Ag=u(it(),1),Eg=u(X(),1);var Ou=u(we(),1),Tu=u(de(),1),bs=u(vt(),1),_u=u(X(),1),Pu=u(it(),1);var vs=u(z(),1);function Pg({gap:t=2}){let{user:e}=(0,bs.useContext)(Kt),r=e?.styles,s=(0,Tu.useSelect)(n=>{let l=n(Ou.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!fo(n,["color"])&&!fo(n,["typography","spacing"])),a=(0,bs.useMemo)(()=>[...[{title:(0,Pu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let h=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(m=>{if(r.blocks?.[m]?.css){let g=h[m]||{},y={css:`${h[m]?.css||""} ${r.blocks?.[m]?.css?.trim()||""}`};h[m]={...g,...y}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(h).length>0?{blocks:h}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,vs.jsx)(_u.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:t,children:a.map((n,l)=>(0,vs.jsx)(Gr,{variation:n,children:h=>(0,vs.jsx)(an,{label:n?.title,withHoverView:!0,isFocused:h,variation:n})},l))})}var zn=Pg;var Au=u(z(),1);var Mn=u(z(),1);var Ig=u(it(),1),Lg=u(X(),1),Ru=u(ae(),1);var Gn=u(z(),1),{AdvancedPanel:zF}=yt(Ru.privateApis);var Gu=u(it(),1),Un=u(X(),1),Hn=u(vt(),1);var Bg=u(de(),1),Vg=u(we(),1),Iu=u(vt(),1);var Vu=u(it(),1),Du=u(X(),1),ws=u(Bu(),1),Dg=u(we(),1),Ng=u(de(),1);var Nu=u(pn(),1),zu=u(z(),1),HF=3600*1e3*24;var jn=u(X(),1),Co=u(it(),1);var Mu=u(z(),1);var Wn=u(z(),1);var Yn=u(it(),1),Ze=u(X(),1);var Ug=u(vt(),1);var Mg=u(X(),1),Gg=u(it(),1),jg=u(z(),1);var qn=u(z(),1),{Menu:c3}=yt(Ze.privateApis);var Wu=u(it(),1),Me=u(X(),1);var Yu=u(vt(),1);var Hg=u(ae(),1),Wg=u(it(),1);var Yg=u(z(),1);var qg=u(X(),1),ju=u(it(),1),Zg=u(z(),1);var Fo=u(X(),1),Xg=u(it(),1),Kg=u(vt(),1),Uu=u(z(),1);var Xe=u(X(),1),Hu=u(z(),1);var Zn=u(z(),1),{Menu:P3}=yt(Me.privateApis);var Kn=u(z(),1);var Jn=u(z(),1);function qr(t){return function({value:r,baseValue:o,onChange:s,...a}){return(0,Jn.jsx)(uo,{value:r,baseValue:o,onChange:s,children:(0,Jn.jsx)(t,{...a})})}}var ty=qr(zn);var ey=qr(hs);var ry=qr(qo);var Zr=u(z(),1);function Qn({value:t,baseValue:e,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Zr.jsx)(fs,{});break;case"installed-fonts":s=(0,Zr.jsx)(es,{});break;default:s=(0,Zr.jsx)(os,{slug:o})}return(0,Zr.jsx)(uo,{value:t,baseValue:e,onChange:r,children:(0,Zr.jsx)(Ko,{children:s})})}var Xu=u(zs()),{unlock:$n}=(0,Xu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='eb78745b9d']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","eb78745b9d"),t.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(t)}var{Tabs:Ss}=$n(Ku.privateApis),{useGlobalStyles:oy}=$n(Ju.privateApis);function sy(){let{records:t=[]}=(0,xs.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[e,r]=(0,$u.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=oy(),l=(0,Qu.useSelect)(f=>f(xs.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let h=[{id:"installed-fonts",title:(0,Xr._x)("Library","Font library")}];return l&&(h.push({id:"upload-fonts",title:(0,Xr._x)("Upload","noun")}),h.push(...(t||[]).map(({slug:f,name:c})=>({id:f,title:t&&t.length===1&&f==="google-fonts"?(0,Xr.__)("Install Fonts"):c})))),React.createElement(Ms,{title:(0,Xr.__)("Fonts")},React.createElement(Ss,{selectedTabId:e,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(Ss.TabList,null,h.map(({id:f,title:c})=>React.createElement(Ss.Tab,{key:f,tabId:f},c)))),h.map(({id:f})=>React.createElement(Ss.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Qn,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function ny(){return React.createElement(sy,null)}var ay=ny;export{ay as stage}; + src: url("${t}") format("${o}"); +}`,globalThis.document.head.appendChild(s),s}var Od=[0,1,0,0],Td=[79,84,84,79],Pd=[119,79,70,70],Ad=[119,79,70,50];function fs(e,t){if(e.length===t.length){for(let r=0;r<e.length;r++)if(e[r]!==t[r])return;return!0}}function Rd(e){let t=[e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3)];if(fs(t,Od)||fs(t,Td))return"SFNT";if(fs(t,Pd))return"WOFF";if(fs(t,Ad))return"WOFF2"}function Ed(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}var ds=class extends fd{constructor(e,t={}){super(),this.name=e,this.options=t,this.metrics=!1}get src(){return this.__src}set src(e){this.__src=e,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await kd(this.name,e,this.options),this.loadFont(e)))()}async loadFont(e,t){fetch(e).then(r=>Ed(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,t||e)).catch(r=>{let o=new us("error",r,`Failed to load font at ${t||e}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(e,t){this.fontData=new DataView(e);let r=Rd(this.fontData);if(!r)throw new Error(`${t} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new us("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(e){return Fd().then(t=>(e==="SFNT"&&(this.opentype=new pd(this,this.fontData,t)),e==="WOFF"&&(this.opentype=new gd(this,this.fontData,t)),e==="WOFF2"&&(this.opentype=new bd(this,this.fontData,t)),this.opentype))}getGlyphId(e){return this.opentype.tables.cmap.getGlyphId(e)}reverse(e){return this.opentype.tables.cmap.reverse(e)}supports(e){return this.getGlyphId(e)!==0}supportsVariation(e){return this.opentype.tables.cmap.supportsVariation(e)!==!1}measureText(e,t=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=e,r.style.fontFamily=this.name,r.style.fontSize=`${t}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=t,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let e=new us("unload",{font:this});this.dispatch(e),this.onunload&&this.onunload(e)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let e=new us("load",{font:this});this.dispatch(e),this.onload&&this.onload(e)}}};globalThis.Font=ds;var qt=class extends Be{constructor(e,t,r){super(e),this.plaformID=t,this.encodingID=r}},Id=class extends qt{constructor(e,t,r){super(e,t,r),this.format=0,this.length=e.uint16,this.language=e.uint16,this.glyphIdArray=[...new Array(256)].map(o=>e.uint8)}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=e&&e<=255}reverse(e){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Ld=class extends qt{constructor(e,t,r){super(e,t,r),this.format=2,this.length=e.uint16,this.language=e.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>e.uint16);let o=Math.max(...this.subHeaderKeys),s=e.currentPosition;Z(this,"subHeaders",()=>(e.currentPosition=s,[...new Array(o)].map(n=>new Bd(e))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(e.currentPosition=a,[...new Array(o)].map(n=>e.uint16)))}supports(e){e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let t=e&&255,r=e&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=t&&t<=n}reverse(e){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(e=!1){return e?this.subHeaders.map(t=>({firstCode:t.firstCode,lastCode:t.lastCode})):this.subHeaders.map(t=>({start:t.firstCode,end:t.lastCode}))}},Bd=class{constructor(e){this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=e.int16,this.idRangeOffset=e.uint16}},Vd=class extends qt{constructor(e,t,r){super(e,t,r),this.format=4,this.length=e.uint16,this.language=e.uint16,this.segCountX2=e.uint16,this.segCount=this.segCountX2/2,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16;let o=e.currentPosition;Z(this,"endCode",()=>e.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>e.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>e.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>e.readBytes(this.segCount,n,16));let l=n+this.segCountX2,h=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>e.readBytes(h,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,e))}buildSegments(e,t,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],h=this.idDelta[a],f=this.idRangeOffset[a],c=e+2*a,d=[];if(f===0)for(let m=n+h,g=l+h;m<=g;m++)d.push(m);else for(let m=0,g=l-n;m<=g;m++)r.currentPosition=c+f+m*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:h,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(e){let t=this.segments.find(o=>o.glyphIDs.includes(e));if(!t)return{};let r=t.startCode+t.glyphIDs.indexOf(e);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(e){if(e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535)return 0;let t=this.segments.find(r=>r.startCode<=e&&e<=r.endCode);return t?t.glyphIDs[e-t.startCode]:0}supports(e){return this.getGlyphId(e)!==0}getSupportedCharCodes(e=!1){return e?this.segments:this.segments.map(t=>({start:t.startCode,end:t.endCode}))}},Nd=class extends qt{constructor(e,t,r){super(e,t,r),this.format=6,this.length=e.uint16,this.language=e.uint16,this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>e.uint16))}supports(e){if(e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),e<this.firstCode)return{};if(e>this.firstCode+this.entryCount)return{};let t=e-this.firstCode;return{code:t,unicode:String.fromCodePoint(t)}}reverse(e){let t=this.glyphIdArray.indexOf(e);if(t>-1)return this.firstCode+t}getSupportedCharCodes(e=!1){return e?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Dd=class extends qt{constructor(e,t,r){super(e,t,r),this.format=8,e.uint16,this.length=e.uint32,this.language=e.uint32,this.is32=[...new Array(8192)].map(s=>e.uint8),this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new zd(e)))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(t=>t.startcharCode<=e&&e<=t.endcharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startcharCode,end:t.endcharCode}))}},zd=class{constructor(e){this.startcharCode=e.uint32,this.endcharCode=e.uint32,this.startGlyphID=e.uint32}},Md=class extends qt{constructor(e,t,r){super(e,t,r),this.format=10,e.uint16,this.length=e.uint32,this.language=e.uint32,this.startCharCode=e.uint32,this.numChars=e.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>e.uint16))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),e<this.startCharCode||e>this.startCharCode+this.numChars?!1:e-this.startCharCode}reverse(e){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(e=!1){return e?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Gd=class extends qt{constructor(e,t,r){super(e,t,r),this.format=12,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new jd(e)))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535?0:this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){for(let t of this.groups){let r=t.startGlyphID;if(r>e)continue;if(r===e)return t.startCharCode;if(r+(t.endCharCode-t.startCharCode)<e)continue;let s=t.startCharCode+(e-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},jd=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.startGlyphID=e.uint32}},Ud=class extends qt{constructor(e,t,r){super(e,t,r),this.format=13,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32;let o=[...new Array(this.numGroups)].map(s=>new Wd(e));Z(this,"groups",o)}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},Wd=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.glyphID=e.uint32}},Hd=class extends qt{constructor(e,t,r){super(e,t,r),this.subTableStart=e.currentPosition,this.format=14,this.length=e.uint32,this.numVarSelectorRecords=e.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new qd(e)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(e){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(e){let t=this.varSelector.find(r=>r.varSelector===e);return t||!1}getSupportedVariations(){return this.varSelectors.map(e=>e.varSelector)}},qd=class{constructor(e){this.varSelector=e.uint24,this.defaultUVSOffset=e.Offset32,this.nonDefaultUVSOffset=e.Offset32}};function Yd(e,t,r){let o=e.uint16;return o===0?new Id(e,t,r):o===2?new Ld(e,t,r):o===4?new Vd(e,t,r):o===6?new Nd(e,t,r):o===8?new Dd(e,t,r):o===10?new Md(e,t,r):o===12?new Gd(e,t,r):o===13?new Ud(e,t,r):o===14?new Hd(e,t,r):{}}var Zd=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Xd(r,this.tableStart))}getSubTable(e){return this.encodingRecords[e].table}getSupportedEncodings(){return this.encodingRecords.map(e=>({platformID:e.platformID,encodingId:e.encodingID}))}getSupportedCharCodes(e,t){let r=this.encodingRecords.findIndex(s=>s.platformID===e&&s.encodingID===t);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(e){for(let t=0;t<this.numTables;t++){let r=this.getSubTable(t).reverse(e);if(r)return r}}getGlyphId(e){let t=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(t=s.getGlyphId(e),t!==0):!1}),t}supports(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(e)!==!1})}supportsVariation(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(e)!==!1})}},Xd=class{constructor(e,t){let r=this.platformID=e.uint16,o=this.encodingID=e.uint16,s=this.offset=e.Offset32;Z(this,"table",()=>(e.currentPosition=t+s,Yd(e,r,o)))}},Kd=Object.freeze({__proto__:null,cmap:Zd}),Jd=class extends me{constructor(e,t){let{p:r}=super(e,t);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Qd=Object.freeze({__proto__:null,head:Jd}),$d=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},em=Object.freeze({__proto__:null,hhea:$d}),tm=class extends me{constructor(e,t,r){let{p:o}=super(e,t),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new rm(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(h=>o.int16)))}}},rm=class{constructor(e,t){this.advanceWidth=e,this.lsb=t}},om=Object.freeze({__proto__:null,hmtx:tm}),sm=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},nm=Object.freeze({__proto__:null,maxp:sm}),am=class extends me{constructor(e,t){let{p:r}=super(e,t);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new lm(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new im(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(e){let t=this.nameRecords.find(r=>r.nameID===e);if(t)return t.string}},im=class{constructor(e,t){this.length=e,this.offset=t}},lm=class{constructor(e,t){this.platformID=e.uint16,this.encodingID=e.uint16,this.languageID=e.uint16,this.nameID=e.uint16,this.length=e.uint16,this.offset=e.Offset16,Z(this,"string",()=>(e.currentPosition=t.stringStart+this.offset,um(e,this)))}};function um(e,t){let{platformID:r,length:o}=t;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,h=o/2;l<h;l++)n[l]=String.fromCharCode(e.uint16);return n.join("")}let s=e.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var fm=Object.freeze({__proto__:null,name:am}),cm=class extends me{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},dm=Object.freeze({__proto__:null,OS2:cm}),mm=class extends me{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Xl.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(e){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let t=this.glyphNameIndex[e];if(t<258)return Xl[t];let r=this.glyphNameOffsets[e],s=this.glyphNameOffsets[e+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Xl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],pm=Object.freeze({__proto__:null,post:mm}),hm=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new Fn({offset:e.offset+this.horizAxisOffset},t)),Z(this,"vertAxis",()=>new Fn({offset:e.offset+this.vertAxisOffset},t)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new Fn({offset:e.offset+this.itemVarStoreOffset},t)))}},Fn=class extends me{constructor(e,t){let{p:r}=super(e,t,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new gm({offset:e.offset+this.baseTagListOffset},t)),Z(this,"baseScriptList",()=>new ym({offset:e.offset+this.baseScriptListOffset},t))}},gm=class extends me{constructor(e,t){let{p:r}=super(e,t,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},ym=class extends me{constructor(e,t){let{p:r}=super(e,t,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new vm(this.start,r))))}},vm=class{constructor(e,t){this.baseScriptTag=t.tag,this.baseScriptOffset=t.Offset16,Z(this,"baseScriptTable",()=>(t.currentPosition=e+this.baseScriptOffset,new bm(t)))}},bm=class{constructor(e){this.start=e.currentPosition,this.baseValuesOffset=e.Offset16,this.defaultMinMaxOffset=e.Offset16,this.baseLangSysCount=e.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(t=>new wm(this.start,e)),Z(this,"baseValues",()=>(e.currentPosition=this.start+this.baseValuesOffset,new xm(e))),Z(this,"defaultMinMax",()=>(e.currentPosition=this.start+this.defaultMinMaxOffset,new ou(e)))}},wm=class{constructor(e,t){this.baseLangSysTag=t.tag,this.minMaxOffset=t.Offset16,Z(this,"minMax",()=>(t.currentPosition=e+this.minMaxOffset,new ou(t)))}},xm=class{constructor(e){this.parser=e,this.start=e.currentPosition,this.defaultBaselineIndex=e.uint16,this.baseCoordCount=e.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(t=>e.Offset16)}getTable(e){return this.parser.currentPosition=this.start+this.baseCoords[e],new Cm(this.parser)}},ou=class{constructor(e){this.minCoord=e.Offset16,this.maxCoord=e.Offset16,this.featMinMaxCount=e.uint16;let t=e.currentPosition;Z(this,"featMinMaxRecords",()=>(e.currentPosition=t,[...new Array(this.featMinMaxCount)].map(r=>new Sm(e))))}},Sm=class{constructor(e){this.featureTableTag=e.tag,this.minCoord=e.Offset16,this.maxCoord=e.Offset16}},Cm=class{constructor(e){this.baseCoordFormat=e.uint16,this.coordinate=e.int16,this.baseCoordFormat===2&&(this.referenceGlyph=e.uint16,this.baseCoordPoint=e.uint16),this.baseCoordFormat===3&&(this.deviceTable=e.Offset16)}},Fm=Object.freeze({__proto__:null,BASE:hm}),Kl=class{constructor(e){this.classFormat=e.uint16,this.classFormat===1&&(this.startGlyphID=e.uint16,this.glyphCount=e.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.classFormat===2&&(this.classRangeCount=e.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(t=>new _m(e)))}},_m=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.class=e.uint16}},bo=class extends Be{constructor(e){super(e),this.coverageFormat=e.uint16,this.coverageFormat===1&&(this.glyphCount=e.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.coverageFormat===2&&(this.rangeCount=e.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(t=>new km(e)))}},km=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.startCoverageIndex=e.uint16}},Om=class{constructor(e,t){this.table=e,this.parser=t,this.start=t.currentPosition,this.format=t.uint16,this.variationRegionListOffset=t.Offset32,this.itemVariationDataCount=t.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>t.Offset32)}},Tm=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new Kl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new Pm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new Rm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new Kl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Lm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Om(r)}))}},Pm=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,this.glyphCount=e.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16)}getPoint(e){return this.parser.currentPosition=this.start+this.attachPointOffsets[e],new Am(this.parser)}},Am=class{constructor(e){this.pointCount=e.uint16,this.pointIndices=[...new Array(this.pointCount)].map(t=>e.uint16)}},Rm=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,Z(this,"coverage",()=>(e.currentPosition=this.start+this.coverageOffset,new bo(e))),this.ligGlyphCount=e.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(t=>e.Offset16)}getLigGlyph(e){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[e],new Em(this.parser)}},Em=class extends Be{constructor(e){super(e),this.caretCount=e.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(t=>e.Offset16)}getCaretValue(e){return this.parser.currentPosition=this.start+this.caretValueOffsets[e],new Im(this.parser)}},Im=class{constructor(e){this.caretValueFormat=e.uint16,this.caretValueFormat===1&&(this.coordinate=e.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=e.uint16),this.caretValueFormat===3&&(this.coordinate=e.int16,this.deviceOffset=e.Offset16)}},Lm=class extends Be{constructor(e){super(e),this.markGlyphSetTableFormat=e.uint16,this.markGlyphSetCount=e.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(t=>e.Offset32)}getMarkGlyphSet(e){return this.parser.currentPosition=this.start+this.coverageOffsets[e],new bo(this.parser)}},Bm=Object.freeze({__proto__:null,GDEF:Tm}),Jl=class extends Be{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(e){super(e),this.scriptCount=e.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(t=>new Vm(e))}},Vm=class{constructor(e){this.scriptTag=e.tag,this.scriptOffset=e.Offset16}},Nm=class extends Be{constructor(e){super(e),this.defaultLangSys=e.Offset16,this.langSysCount=e.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(t=>new Dm(e))}},Dm=class{constructor(e){this.langSysTag=e.tag,this.langSysOffset=e.Offset16}},Ql=class{constructor(e){this.lookupOrder=e.Offset16,this.requiredFeatureIndex=e.uint16,this.featureIndexCount=e.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(t=>e.uint16)}},$l=class extends Be{static EMPTY={featureCount:0,featureRecords:[]};constructor(e){super(e),this.featureCount=e.uint16,this.featureRecords=[...new Array(this.featureCount)].map(t=>new zm(e))}},zm=class{constructor(e){this.featureTag=e.tag,this.featureOffset=e.Offset16}},Mm=class extends Be{constructor(e){super(e),this.featureParams=e.Offset16,this.lookupIndexCount=e.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(t=>e.uint16)}getFeatureParams(){if(this.featureParams>0){let e=this.parser;e.currentPosition=this.start+this.featureParams;let t=this.featureTag;if(t==="size")return new jm(e);if(t.startsWith("cc"))return new Gm(e);if(t.startsWith("ss"))return new Um(e)}}},Gm=class{constructor(e){this.format=e.uint16,this.featUiLabelNameId=e.uint16,this.featUiTooltipTextNameId=e.uint16,this.sampleTextNameId=e.uint16,this.numNamedParameters=e.uint16,this.firstParamUiLabelNameId=e.uint16,this.charCount=e.uint16,this.character=[...new Array(this.charCount)].map(t=>e.uint24)}},jm=class{constructor(e){this.designSize=e.uint16,this.subfamilyIdentifier=e.uint16,this.subfamilyNameID=e.uint16,this.smallEnd=e.uint16,this.largeEnd=e.uint16}},Um=class{constructor(e){this.version=e.uint16,this.UINameID=e.uint16}};function su(e){e.parser.currentPosition-=2,delete e.coverageOffset,delete e.getCoverageTable}var _r=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.coverageOffset=e.Offset16}getCoverageTable(){let e=this.parser;return e.currentPosition=this.start+this.coverageOffset,new bo(e)}},kn=class{constructor(e){this.glyphSequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},Wm=class extends _r{constructor(e){super(e),this.deltaGlyphID=e.int16}},Hm=class extends _r{constructor(e){super(e),this.sequenceCount=e.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(t=>e.Offset16)}getSequence(e){let t=this.parser;return t.currentPosition=this.start+this.sequenceOffsets[e],new qm(t)}},qm=class{constructor(e){this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Ym=class extends _r{constructor(e){super(e),this.alternateSetCount=e.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(t=>e.Offset16)}getAlternateSet(e){let t=this.parser;return t.currentPosition=this.start+this.alternateSetOffsets[e],new Zm(t)}},Zm=class{constructor(e){this.glyphCount=e.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Xm=class extends _r{constructor(e){super(e),this.ligatureSetCount=e.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(t=>e.Offset16)}getLigatureSet(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureSetOffsets[e],new Km(t)}},Km=class extends Be{constructor(e){super(e),this.ligatureCount=e.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(t=>e.Offset16)}getLigature(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureOffsets[e],new Jm(t)}},Jm=class{constructor(e){this.ligatureGlyph=e.uint16,this.componentCount=e.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(t=>e.uint16)}},Qm=class extends _r{constructor(e){super(e),this.substFormat===1&&(this.subRuleSetCount=e.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.classDefOffset=e.Offset16,this.subClassSetCount=e.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(su(this),this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new kn(e)))}getSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.subRuleSetOffsets[e],new $m(t)}getSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.subClassSetOffsets[e],new ep(t)}getCoverageTable(e){if(this.substFormat!==3&&!e)return super.getCoverageTable();if(!e)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let t=this.parser;return t.currentPosition=this.start+this.coverageOffsets[e],new bo(t)}},$m=class extends Be{constructor(e){super(e),this.subRuleCount=e.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.subRuleOffsets[e],new nu(t)}},nu=class{constructor(e){this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(t=>e.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new kn(e))}},ep=class extends Be{constructor(e){super(e),this.subClassRuleCount=e.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.subClassRuleOffsets[e],new tp(t)}},tp=class extends nu{constructor(e){super(e)}},rp=class extends _r{constructor(e){super(e),this.substFormat===1&&(this.chainSubRuleSetCount=e.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=e.Offset16,this.inputClassDefOffset=e.Offset16,this.lookaheadClassDefOffset=e.Offset16,this.chainSubClassSetCount=e.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(su(this),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.inputGlyphCount=e.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.seqLookupCount=e.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(t=>new au(e)))}getChainSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleSetOffsets[e],new op(t)}getChainSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubClassSetOffsets[e],new np(t)}getCoverageFromOffset(e){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let t=this.parser;return t.currentPosition=this.start+e,new bo(t)}},op=class extends Be{constructor(e){super(e),this.chainSubRuleCount=e.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new sp(t)}},sp=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(t=>new kn(e))}},np=class extends Be{constructor(e){super(e),this.chainSubClassRuleCount=e.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new ap(t)}},ap=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new au(e))}},au=class extends Be{constructor(e){super(e),this.sequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},ip=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.extensionLookupType=e.uint16,this.extensionOffset=e.Offset32}},lp=class extends _r{constructor(e){super(e),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},up={buildSubtable:function(e,t){let r=new[void 0,Wm,Hm,Ym,Xm,Qm,rp,ip,lp][e](t);return r.type=e,r}},Yt=class extends Be{constructor(e){super(e)}},fp=class extends Yt{constructor(e){super(e),console.log("lookup type 1")}},cp=class extends Yt{constructor(e){super(e),console.log("lookup type 2")}},dp=class extends Yt{constructor(e){super(e),console.log("lookup type 3")}},mp=class extends Yt{constructor(e){super(e),console.log("lookup type 4")}},pp=class extends Yt{constructor(e){super(e),console.log("lookup type 5")}},hp=class extends Yt{constructor(e){super(e),console.log("lookup type 6")}},gp=class extends Yt{constructor(e){super(e),console.log("lookup type 7")}},yp=class extends Yt{constructor(e){super(e),console.log("lookup type 8")}},vp=class extends Yt{constructor(e){super(e),console.log("lookup type 9")}},bp={buildSubtable:function(e,t){let r=new[void 0,fp,cp,dp,mp,pp,hp,gp,yp,vp][e](t);return r.type=e,r}},eu=class extends Be{static EMPTY={lookupCount:0,lookups:[]};constructor(e){super(e),this.lookupCount=e.uint16,this.lookups=[...new Array(this.lookupCount)].map(t=>e.Offset16)}},wp=class extends Be{constructor(e,t){super(e),this.ctType=t,this.lookupType=e.uint16,this.lookupFlag=e.uint16,this.subTableCount=e.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>e.Offset16),this.markFilteringSet=e.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(e){let t=this.ctType==="GSUB"?up:bp;return this.parser.currentPosition=this.start+this.subtableOffsets[e],t.buildSubtable(this.lookupType,this.parser)}},iu=class extends me{constructor(e,t,r){let{p:o,tableStart:s}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Jl.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Jl(o))),Z(this,"featureList",()=>a?$l.EMPTY:(o.currentPosition=s+this.featureListOffset,new $l(o))),Z(this,"lookupList",()=>a?eu.EMPTY:(o.currentPosition=s+this.lookupListOffset,new eu(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(e=>e.scriptTag)}getScriptTable(e){let t=this.scriptList.scriptRecords.find(o=>o.scriptTag===e);this.parser.currentPosition=this.scriptList.start+t.scriptOffset;let r=new Nm(this.parser);return r.scriptTag=e,r}ensureScriptTable(e){return typeof e=="string"?this.getScriptTable(e):e}getSupportedLangSys(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys!==0,r=e.langSysRecords.map(o=>o.langSysTag);return t&&r.unshift("dflt"),r}getDefaultLangSysTable(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys;if(t!==0){this.parser.currentPosition=e.start+t;let r=new Ql(this.parser);return r.langSysTag="",r.defaultForScript=e.scriptTag,r}}getLangSysTable(e,t="dflt"){if(t==="dflt")return this.getDefaultLangSysTable(e);e=this.ensureScriptTable(e);let r=e.langSysRecords.find(s=>s.langSysTag===t);this.parser.currentPosition=e.start+r.langSysOffset;let o=new Ql(this.parser);return o.langSysTag=t,o}getFeatures(e){return e.featureIndices.map(t=>this.getFeature(t))}getFeature(e){let t;if(parseInt(e)==e?t=this.featureList.featureRecords[e]:t=this.featureList.featureRecords.find(o=>o.featureTag===e),!t)return;this.parser.currentPosition=this.featureList.start+t.featureOffset;let r=new Mm(this.parser);return r.featureTag=t.featureTag,r}getLookups(e){return e.lookupListIndices.map(t=>this.getLookup(t))}getLookup(e,t){let r=this.lookupList.lookups[e];return this.parser.currentPosition=this.lookupList.start+r,new wp(this.parser,t)}},xp=class extends iu{constructor(e,t){super(e,t,"GSUB")}getLookup(e){return super.getLookup(e,"GSUB")}},Sp=Object.freeze({__proto__:null,GSUB:xp}),Cp=class extends iu{constructor(e,t){super(e,t,"GPOS")}getLookup(e){return super.getLookup(e,"GPOS")}},Fp=Object.freeze({__proto__:null,GPOS:Cp}),_p=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new kp(r)}},kp=class extends Be{constructor(e){super(e),this.numEntries=e.uint16,this.documentRecords=[...new Array(this.numEntries)].map(t=>new Op(e))}getDocument(e){let t=this.documentRecords[e];if(!t)return"";let r=this.start+t.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(t.svgDocLength)}getDocumentForGlyph(e){let t=this.documentRecords.findIndex(r=>r.startGlyphID<=e&&e<=r.endGlyphID);return t===-1?"":this.getDocument(t)}},Op=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.svgDocOffset=e.Offset32,this.svgDocLength=e.uint32}},Tp=Object.freeze({__proto__:null,SVG:_p}),Pp=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new Ap(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new Rp(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(e=>e.tag)}getAxis(e){return this.axes.find(t=>t.tag===e)}},Ap=class{constructor(e){this.tag=e.tag,this.minValue=e.fixed,this.defaultValue=e.fixed,this.maxValue=e.fixed,this.flags=e.flags(16),this.axisNameID=e.uint16}},Rp=class{constructor(e,t,r){let o=e.currentPosition;this.subfamilyNameID=e.uint16,e.uint16,this.coordinates=[...new Array(t)].map(s=>e.fixed),e.currentPosition-o<r&&(this.postScriptNameID=e.uint16)}},Ep=Object.freeze({__proto__:null,fvar:Pp}),Ip=class extends me{constructor(e,t){let{p:r}=super(e,t),o=e.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},Lp=Object.freeze({__proto__:null,cvt:Ip}),Bp=class extends me{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},Vp=Object.freeze({__proto__:null,fpgm:Bp}),Np=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Dp(r)))}},Dp=class{constructor(e){this.rangeMaxPPEM=e.uint16,this.rangeGaspBehavior=e.uint16}},zp=Object.freeze({__proto__:null,gasp:Np}),Mp=class extends me{constructor(e,t){super(e,t)}getGlyphData(e,t){return this.parser.currentPosition=this.tableStart+e,this.parser.readBytes(t)}},Gp=Object.freeze({__proto__:null,glyf:Mp}),jp=class extends me{constructor(e,t,r){let{p:o}=super(e,t),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(e){let t=this.offsets[e]*this.x2?2:1,r=this.offsets[e+1]*this.x2?2:1;return{offset:t,length:r-t}}},Up=Object.freeze({__proto__:null,loca:jp}),Wp=class extends me{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},Hp=Object.freeze({__proto__:null,prep:Wp}),qp=class extends me{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},Yp=Object.freeze({__proto__:null,CFF:qp}),Zp=class extends me{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},Xp=Object.freeze({__proto__:null,CFF2:Zp}),Kp=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Jp(r)))}},Jp=class{constructor(e){this.glyphIndex=e.uint16,this.vertOriginY=e.int16}},Qp=Object.freeze({__proto__:null,VORG:Kp}),$p=class{constructor(e){this.indexSubTableArrayOffset=e.Offset32,this.indexTablesSize=e.uint32,this.numberofIndexSubTables=e.uint32,this.colorRef=e.uint32,this.hori=new cs(e),this.vert=new cs(e),this.startGlyphIndex=e.uint16,this.endGlyphIndex=e.uint16,this.ppemX=e.uint8,this.ppemY=e.uint8,this.bitDepth=e.uint8,this.flags=e.int8}},eh=class{constructor(e){this.hori=new cs(e),this.vert=new cs(e),this.ppemX=e.uint8,this.ppemY=e.uint8,this.substitutePpemX=e.uint8,this.substitutePpemY=e.uint8}},cs=class{constructor(e){this.ascender=e.int8,this.descender=e.int8,this.widthMax=e.uint8,this.caretSlopeNumerator=e.int8,this.caretSlopeDenominator=e.int8,this.caretOffset=e.int8,this.minOriginSB=e.int8,this.minAdvanceSB=e.int8,this.maxBeforeBL=e.int8,this.minAfterBL=e.int8,this.pad1=e.int8,this.pad2=e.int8}},lu=class extends me{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new $p(o)))}},th=Object.freeze({__proto__:null,EBLC:lu}),uu=class extends me{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},rh=Object.freeze({__proto__:null,EBDT:uu}),oh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new eh(r)))}},sh=Object.freeze({__proto__:null,EBSC:oh}),nh=class extends lu{constructor(e,t){super(e,t,"CBLC")}},ah=Object.freeze({__proto__:null,CBLC:nh}),ih=class extends uu{constructor(e,t){super(e,t,"CBDT")}},lh=Object.freeze({__proto__:null,CBDT:ih}),uh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},fh=Object.freeze({__proto__:null,sbix:uh}),ch=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(e){let t=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=t;let r=new _n(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new _n(this.parser),n=a.gID;if(o===e)return r;if(n===e)return a;for(;t!==s;){let l=t+(s-t)/12;this.parser.currentPosition=l;let h=new _n(this.parser),f=h.gID;if(f===e)return h;f>e?s=l:f<e&&(t=l)}return!1}getLayers(e){let t=this.getBaseGlyphRecord(e);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*t.firstLayerIndex,[...new Array(t.numLayers)].map(r=>new dh(p))}},_n=class{constructor(e){this.gID=e.uint16,this.firstLayerIndex=e.uint16,this.numLayers=e.uint16}},dh=class{constructor(e){this.gID=e.uint16,this.paletteIndex=e.uint16}},mh=Object.freeze({__proto__:null,COLR:ch}),ph=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new hh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new gh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new yh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new vh(r,o))))}},hh=class{constructor(e){this.blue=e.uint8,this.green=e.uint8,this.red=e.uint8,this.alpha=e.uint8}},gh=class{constructor(e,t){this.paletteTypes=[...new Array(t)].map(r=>e.uint32)}},yh=class{constructor(e,t){this.paletteLabels=[...new Array(t)].map(r=>e.uint16)}},vh=class{constructor(e,t){this.paletteEntryLabels=[...new Array(t)].map(r=>e.uint16)}},bh=Object.freeze({__proto__:null,CPAL:ph}),wh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new xh(r))}getData(e){let t=this.signatureRecords[e];return this.parser.currentPosition=this.tableStart+t.offset,new Sh(this.parser)}},xh=class{constructor(e){this.format=e.uint32,this.length=e.uint32,this.offset=e.Offset32}},Sh=class{constructor(e){e.uint16,e.uint16,this.signatureLength=e.uint32,this.signature=e.readBytes(this.signatureLength)}},Ch=Object.freeze({__proto__:null,DSIG:wh}),Fh=class extends me{constructor(e,t,r){let{p:o}=super(e,t),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new _h(o,s))}},_h=class{constructor(e,t){this.pixelSize=e.uint8,this.maxWidth=e.uint8,this.widths=e.readBytes(t)}},kh=Object.freeze({__proto__:null,hdmx:Fh}),Oh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new Th(r);s.push(n),o+=n}return s})}},Th=class{constructor(e){this.version=e.uint16,this.length=e.uint16,this.coverage=e.flags(8),this.format=e.uint8,this.format===0&&(this.nPairs=e.uint16,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(t=>new Ph(e)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},Ph=class{constructor(e){this.left=e.uint16,this.right=e.uint16,this.value=e.fword}},Ah=Object.freeze({__proto__:null,kern:Oh}),Rh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},Eh=Object.freeze({__proto__:null,LTSH:Rh}),Ih=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Lh=Object.freeze({__proto__:null,MERG:Ih}),Bh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new Vh(this.tableStart,r))}},Vh=class{constructor(e,t){this.tableStart=e,this.parser=t,this.tag=t.tag,this.dataOffset=t.Offset32,this.dataLength=t.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Nh=Object.freeze({__proto__:null,meta:Bh}),Dh=class extends me{constructor(e,t){super(e,t),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},zh=Object.freeze({__proto__:null,PCLT:Dh}),Mh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Gh(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new jh(r))}},Gh=class{constructor(e){this.bCharSet=e.uint8,this.xRatio=e.uint8,this.yStartRatio=e.uint8,this.yEndRatio=e.uint8}},jh=class{constructor(e){this.recs=e.uint16,this.startsz=e.uint8,this.endsz=e.uint8,this.records=[...new Array(this.recs)].map(t=>new Uh(e))}},Uh=class{constructor(e){this.yPelHeight=e.uint16,this.yMax=e.int16,this.yMin=e.int16}},Wh=Object.freeze({__proto__:null,VDMX:Mh}),Hh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},qh=Object.freeze({__proto__:null,vhea:Hh}),Yh=class extends me{constructor(e,t,r){super(e,t);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Zh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Zh=class{constructor(e,t){this.advanceHeight=e,this.topSideBearing=t}},Xh=Object.freeze({__proto__:null,vmtx:Yh});var fu=u(X(),1);var{kebabCase:Kh}=ye(fu.privateApis);function cu(e){let t=e.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:Kh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(t)}var gt=u(z(),1);function Jh(){let{installFonts:e}=(0,wo.useContext)(lt),[t,r]=(0,wo.useState)(!1),[o,s]=(0,wo.useState)(null),a=g=>{l(g)},n=g=>{l(g.target.files)},l=async g=>{if(!g)return;s(null),r(!0);let y=new Set,T=[...g],A=!1,_=T.map(async b=>{if(!await f(b))return A=!0,null;if(y.has(b.name))return null;let q=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return wn.includes(q)?(y.add(b.name),b):null}),S=(await Promise.all(_)).filter(b=>b!==null);if(S.length>0)h(S);else{let b=A?(0,Yr.__)("Sorry, you are not allowed to upload this file type."):(0,Yr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},h=async g=>{let y=await Promise.all(g.map(async T=>{let A=await d(T);return await tr(A,A.file,"all"),A}));m(y)};async function f(g){let y=new ds("Uploaded Font");try{let T=await c(g);return await y.fromDataBuffer(T,"font"),!0}catch{return!1}}async function c(g){return new Promise((y,T)=>{let A=new window.FileReader;A.readAsArrayBuffer(g),A.onload=()=>y(A.result),A.onerror=T})}let d=async g=>{let y=await c(g),T=new ds("Uploaded Font");T.fromDataBuffer(y,g.name);let _=(await new Promise($=>T.onload=$)).detail.font,{name:S}=_.opentype.tables,b=S.get(16)||S.get(1),O=S.get(2).toLowerCase().includes("italic"),q=_.opentype.tables["OS/2"].usWeightClass||"normal",N=!!_.opentype.tables.fvar&&_.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),W=N?`${N.minValue} ${N.maxValue}`:null;return{file:g,fontFamily:b,fontStyle:O?"italic":"normal",fontWeight:W||q}},m=async g=>{let y=cu(g);try{await e(y),s({type:"success",message:(0,Yr.__)("Fonts were installed successfully.")})}catch(T){let A=T;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,gt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,gt.jsx)(tt.DropZone,{onFilesDrop:a}),(0,gt.jsxs)(tt.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,gt.jsxs)(tt.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,gt.jsx)("ul",{children:o.errors.map((g,y)=>(0,gt.jsx)("li",{children:g},y))})]}),t&&(0,gt.jsx)(tt.FlexItem,{children:(0,gt.jsx)("div",{className:"font-library__upload-area",children:(0,gt.jsx)(tt.ProgressBar,{})})}),!t&&(0,gt.jsx)(tt.FormFileUpload,{accept:wn.map(g=>`.${g}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:g})=>(0,gt.jsx)(tt.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,Yr.__)("Upload font")})}),(0,gt.jsx)(tt.__experimentalText,{className:"font-library__upload-area__text",children:(0,Yr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ms=Jh;var mu=u(z(),1),{Tabs:Y2}=ye(On.privateApis),Z2={id:"installed-fonts",title:(0,ps._x)("Library","Font library")},X2={id:"upload-fonts",title:(0,ps._x)("Upload","noun")};var pu=u(ie(),1),Tn=u(X(),1),$h=u(ve(),1);var hu=u(z(),1);var Pn=u(z(),1);var gu=u(ie(),1),hs=u(X(),1);var yu=u(z(),1);var Rn=u(z(),1);var At=u(ie(),1),En=u(X(),1),ig=u(ve(),1);var vu=u(it(),1);var ng=u(z(),1),{useSettingsForBlockElement:_6,TypographyPanel:k6}=ye(vu.privateApis);var ag=u(z(),1);var In=u(z(),1),B6={text:{description:(0,At.__)("Manage the fonts used on the site."),title:(0,At.__)("Text")},link:{description:(0,At.__)("Manage the fonts and typography used on the links."),title:(0,At.__)("Links")},heading:{description:(0,At.__)("Manage the fonts and typography used on headings."),title:(0,At.__)("Headings")},caption:{description:(0,At.__)("Manage the fonts and typography used on captions."),title:(0,At.__)("Captions")},button:{description:(0,At.__)("Manage the fonts and typography used on buttons."),title:(0,At.__)("Buttons")}};var cg=u(ie(),1),dg=u(X(),1),wu=u(it(),1);var Zr=u(X(),1),bu=u(ie(),1);var fg=u(ve(),1);var lg=u(X(),1),ug=u(z(),1);var Ln=u(z(),1);var Bn=u(z(),1),{useSettingsForBlockElement:J6,ColorPanel:Q6}=ye(wu.privateApis);var bg=u(ie(),1),Ou=u(X(),1);var hg=u(mr(),1),Vn=u(X(),1),gg=u(ie(),1);var ys=u(X(),1);var gs=u(X(),1);var xu=u(z(),1);function Su(){let{paletteColors:e}=Dr();return e.slice(0,4).map(({slug:t,color:r},o)=>(0,xu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${t}-${o}`))}var So=u(z(),1),mg={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},pg=({label:e,isFocused:t,withHoverView:r})=>(0,So.jsx)(Gr,{label:e,isFocused:t,withHoverView:r,children:({key:o})=>(0,So.jsx)(gs.__unstableMotion.div,{variants:mg,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(gs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(Su,{})})},o)}),Cu=pg;var kr=u(z(),1),Fu=["color"];function vs({title:e,gap:t=2}){let r=Uo(Fu);return r?.length<=1?null:(0,kr.jsxs)(ys.__experimentalVStack,{spacing:3,children:[e&&(0,kr.jsx)(Ct,{level:3,children:e}),(0,kr.jsx)(ys.__experimentalGrid,{gap:t,children:r.map((o,s)=>(0,kr.jsx)(Ur,{variation:o,isPill:!0,properties:Fu,showTooltip:!0,children:()=>(0,kr.jsx)(Cu,{})},s))})]})}var _u=u(z(),1);var yg=u(mr(),1),bs=u(X(),1),vg=u(ie(),1);var ku=u(z(),1);var Nn=u(z(),1),{Tabs:CC}=ye(Ou.privateApis);var xg=u(ie(),1),Pu=u(it(),1),Sg=u(X(),1);var Tu=u(it(),1);var wg=u(z(),1);var{BackgroundPanel:OC}=ye(Tu.privateApis);var Dn=u(z(),1),{useHasBackgroundPanel:LC}=ye(Pu.privateApis);var Or=u(X(),1),zn=u(ie(),1);var Og=u(ve(),1);var Cg=u(X(),1),Fg=u(ie(),1),_g=u(z(),1);var Mn=u(z(),1),{Menu:qC}=ye(Or.privateApis);var Ue=u(X(),1),Co=u(ie(),1);var ws=u(ve(),1);var Gn=u(z(),1),{Menu:i3}=ye(Ue.privateApis),l3=[{label:(0,Co.__)("Rename"),action:"rename"},{label:(0,Co.__)("Delete"),action:"delete"}],u3=[{label:(0,Co.__)("Reset"),action:"reset"}];var Tg=u(z(),1);var Rg=u(ie(),1),Ru=u(it(),1);var Au=u(it(),1),Pg=u(ve(),1);var Ag=u(z(),1),{useSettingsForBlockElement:v3,DimensionsPanel:b3}=ye(Au.privateApis);var jn=u(z(),1),{useHasDimensionsPanel:k3,useSettingsForBlockElement:O3}=ye(Ru.privateApis);var Nu=u(X(),1),Bg=u(ie(),1);var Ig=u(ie(),1),Lg=u(X(),1);var Eu=u(xt(),1),Iu=u(mt(),1),Ss=u(ve(),1),Lu=u(X(),1),Bu=u(ie(),1);var xs=u(z(),1);function Eg({gap:e=2}){let{user:t}=(0,Ss.useContext)(Je),r=t?.styles,s=(0,Iu.useSelect)(n=>{let l=n(Eu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!co(n,["color"])&&!co(n,["typography","spacing"])),a=(0,Ss.useMemo)(()=>[...[{title:(0,Bu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let h=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(m=>{if(r.blocks?.[m]?.css){let g=h[m]||{},y={css:`${h[m]?.css||""} ${r.blocks?.[m]?.css?.trim()||""}`};h[m]={...g,...y}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(h).length>0?{blocks:h}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,xs.jsx)(Lu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:e,children:a.map((n,l)=>(0,xs.jsx)(Ur,{variation:n,children:h=>(0,xs.jsx)(cn,{label:n?.title,withHoverView:!0,isFocused:h,variation:n})},l))})}var Un=Eg;var Vu=u(z(),1);var Wn=u(z(),1);var Vg=u(ie(),1),Ng=u(X(),1),Du=u(it(),1);var Hn=u(z(),1),{AdvancedPanel:H3}=ye(Du.privateApis);var Yu=u(ie(),1),Yn=u(X(),1),Zn=u(ve(),1);var Dg=u(mt(),1),zg=u(xt(),1),zu=u(ve(),1);var ju=u(ie(),1),Uu=u(X(),1),Cs=u(Gu(),1),Mg=u(xt(),1),Gg=u(mt(),1);var Wu=u(vn(),1),Hu=u(z(),1),K3=3600*1e3*24;var qn=u(X(),1),Fo=u(ie(),1);var qu=u(z(),1);var Xn=u(z(),1);var Kn=u(ie(),1),Zt=u(X(),1);var qg=u(ve(),1);var Ug=u(X(),1),Wg=u(ie(),1),Hg=u(z(),1);var Jn=u(z(),1),{Menu:y4}=ye(Zt.privateApis);var Ju=u(ie(),1),Mt=u(X(),1);var Qu=u(ve(),1);var Yg=u(it(),1),Zg=u(ie(),1);var Xg=u(z(),1);var Kg=u(X(),1),Zu=u(ie(),1),Jg=u(z(),1);var _o=u(X(),1),Qg=u(ie(),1),$g=u(ve(),1),Xu=u(z(),1);var Xt=u(X(),1),Ku=u(z(),1);var Qn=u(z(),1),{Menu:B4}=ye(Mt.privateApis);var ea=u(z(),1);var ta=u(z(),1);function Xr(e){return function({value:r,baseValue:o,onChange:s,...a}){return(0,ta.jsx)(fo,{value:r,baseValue:o,onChange:s,children:(0,ta.jsx)(e,{...a})})}}var oy=Xr(Un);var sy=Xr(vs);var ny=Xr(Ko);var Kr=u(z(),1);function ra({value:e,baseValue:t,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Kr.jsx)(ms,{});break;case"installed-fonts":s=(0,Kr.jsx)(ss,{});break;default:s=(0,Kr.jsx)(as,{slug:o})}return(0,Kr.jsx)(fo,{value:e,baseValue:t,onChange:r,children:(0,Kr.jsx)($o,{children:s})})}var tf=u(js()),{unlock:oa}=(0,tf.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='befb272134']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","befb272134"),e.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(e)}var{Tabs:Fs}=oa(rf.privateApis),{useGlobalStyles:ay}=oa(of.privateApis);function iy(){let{records:e=[]}=(0,_s.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[t,r]=(0,nf.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=ay(),l=(0,sf.useSelect)(f=>f(_s.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let h=[{id:"installed-fonts",title:(0,Jr._x)("Library","Font library")}];return l&&(h.push({id:"upload-fonts",title:(0,Jr._x)("Upload","noun")}),h.push(...(e||[]).map(({slug:f,name:c})=>({id:f,title:e&&e.length===1&&f==="google-fonts"?(0,Jr.__)("Install Fonts"):c})))),React.createElement(Ws,{title:(0,Jr.__)("Fonts"),className:"font-library-page"},React.createElement(Fs,{selectedTabId:t,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(Fs.TabList,null,h.map(({id:f,title:c})=>React.createElement(Fs.Tab,{key:f,tabId:f},c)))),h.map(({id:f})=>React.createElement(Fs.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(ra,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function ly(){return React.createElement(iy,null)}var uy=ly;export{uy as stage}; /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: diff --git a/src/wp-includes/build/routes/registry.php b/src/wp-includes/build/routes/registry.php index 8cfe65cb89b96..7d9a86e2c9182 100644 --- a/src/wp-includes/build/routes/registry.php +++ b/src/wp-includes/build/routes/registry.php @@ -14,6 +14,20 @@ 'has_route' => true, 'has_content' => true, ), + array( + 'name' => 'dashboard', + 'path' => '/', + 'page' => 'dashboard', + 'has_route' => false, + 'has_content' => true, + ), + array( + 'name' => 'experiments-home', + 'path' => '/', + 'page' => 'experiments', + 'has_route' => true, + 'has_content' => true, + ), array( 'name' => 'font-list', 'path' => '/font-list', @@ -34,5 +48,19 @@ 'page' => 'guidelines', 'has_route' => true, 'has_content' => true, + ), + array( + 'name' => 'taxonomies', + 'path' => '/', + 'page' => 'taxonomies', + 'has_route' => true, + 'has_content' => true, + ), + array( + 'name' => 'taxonomy-edit', + 'path' => '/edit/$id', + 'page' => 'taxonomies', + 'has_route' => true, + 'has_content' => true, ) ); diff --git a/src/wp-includes/images/icon-library/tab.svg b/src/wp-includes/images/icon-library/tab.svg index a6444a9739efd..2e8102d5d7f9b 100644 --- a/src/wp-includes/images/icon-library/tab.svg +++ b/src/wp-includes/images/icon-library/tab.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 16.5h13V15H4v1.5ZM4 12v1.5h16V12H4Zm1.5-4.2c0-.1.1-.2.2-.2h3.5c.1 0 .2.1.2.2v2.5h1.5V7.8c0-1-.8-1.8-1.8-1.8H5.6c-1 0-1.8.8-1.8 1.8v2.5h1.5V7.8Z"/></svg> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 11.25a.25.25 0 0 0-.25-.25h-3.5a.25.25 0 0 0-.25.25v2.5H8.5v-2.5c0-.966.784-1.75 1.75-1.75h3.5c.966 0 1.75.784 1.75 1.75v2.5H14v-2.5Z"/></svg> diff --git a/src/wp-includes/images/icon-library/tabs-menu-item.svg b/src/wp-includes/images/icon-library/tabs-menu-item.svg deleted file mode 100644 index 2e8102d5d7f9b..0000000000000 --- a/src/wp-includes/images/icon-library/tabs-menu-item.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 11.25a.25.25 0 0 0-.25-.25h-3.5a.25.25 0 0 0-.25.25v2.5H8.5v-2.5c0-.966.784-1.75 1.75-1.75h3.5c.966 0 1.75.784 1.75 1.75v2.5H14v-2.5Z"/></svg> diff --git a/src/wp-includes/images/icon-library/tabs-menu.svg b/src/wp-includes/images/icon-library/tabs-menu.svg deleted file mode 100644 index d42453416b532..0000000000000 --- a/src/wp-includes/images/icon-library/tabs-menu.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.2 9.5h-3.5c-1 0-1.8.8-1.8 1.8v2.5h1.5v-2.5c0-.1.1-.2.2-.2h3.5c.1 0 .2.1.2.2v2.5h1.5v-2.5c0-1-.8-1.8-1.8-1.8Zm-9 0H5.7c-1 0-1.8.8-1.8 1.8v2.5h7v-2.5c0-1-.8-1.8-1.8-1.8Z"/></svg> From a317b237c66f721cdb7e4f94cbf890babb2e097a Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 30 Jun 2026 01:02:57 +0000 Subject: [PATCH 274/327] General: Bump the pinned hash for Gutenberg to `v23.2.0`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the pinned commit hash of the Gutenberg repository from `585cf86bb6f408b1dc61175f75db016aa4760653 ` (version `23.1.0`) to `d5ac60e6118060529737127d44a6fdc8abf57eb9` (version `23.2.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v23.1.0..v23.2.0. The following commits are included: - Fix PHP multisite tests (https://github.com/WordPress/gutenberg/pull/77825) - Revise README for FocalPointPicker component to use object-position (https://github.com/WordPress/gutenberg/pull/77722) - Experiment: Add first e2e tests for Taxonomies (https://github.com/WordPress/gutenberg/pull/77828) - Content Types: Add post type management (https://github.com/WordPress/gutenberg/pull/77754) - Grid: lock document cursor during resize gesture (https://github.com/WordPress/gutenberg/pull/77813) - Build: Add experimental `widgets/` folder support to @wordpress/build (https://github.com/WordPress/gutenberg/pull/77347) - TabPanel: Fix tab indicator animation (https://github.com/WordPress/gutenberg/pull/77812) - Disable TinyMCE: Repurpose experiment as Classic block removal (https://github.com/WordPress/gutenberg/pull/77838) - Cover block: Inline z-index values (https://github.com/WordPress/gutenberg/pull/77753) - Button: Align link variant underline with Link and ExternalLink (https://github.com/WordPress/gutenberg/pull/77842) - ui/Drawer: Polish open/close animation, fix swipe on content padding (https://github.com/WordPress/gutenberg/pull/77800) - Site Editor: Remove local z-index helper entries (https://github.com/WordPress/gutenberg/pull/77808) - Inline sticky search z-index values (https://github.com/WordPress/gutenberg/pull/77806) - Block Manager: Inline z-index values (https://github.com/WordPress/gutenberg/pull/77759) - Update TypeScript to tsgo (try 2) (https://github.com/WordPress/gutenberg/pull/77682) - Editor: Inline pattern chooser z-index values (https://github.com/WordPress/gutenberg/pull/77772) - Media editor modal: disable scroll wheel zoom while a crop is active (https://github.com/WordPress/gutenberg/pull/77826) - Media editor modal: disable scroll wheel zoom while a pan/drag is active (https://github.com/WordPress/gutenberg/pull/77863) - Media Editor Modal: Try adding undo/redo for the image cropper (https://github.com/WordPress/gutenberg/pull/77782) - Connectors: Stop e2e capability restriction from leaking across specs (https://github.com/WordPress/gutenberg/pull/77857) - Media Upload Modal: Fix pagination and search (https://github.com/WordPress/gutenberg/pull/77872) - `defaultRenderingMode` value not respected when changed using `block_editor_settings_all` (https://github.com/WordPress/gutenberg/pull/77870) - Media editor modal: expand keyboard shortcuts and add interaction helpers (https://github.com/WordPress/gutenberg/pull/77871) - Media editor modal: name landmark regions and add panel headings (https://github.com/WordPress/gutenberg/pull/77875) - Media Editor Modal: Use shift modifier to adjust keyboard pan speed (https://github.com/WordPress/gutenberg/pull/77878) - Disable Classic block: Always register, hide from inserter conditionally (https://github.com/WordPress/gutenberg/pull/77840) - ESLint: Replace `eslint-plugin-react-compiler` with `eslint-plugin-react-hooks` (https://github.com/WordPress/gutenberg/pull/69962) - Disable Classic block: Control inserter support via filter (https://github.com/WordPress/gutenberg/pull/77845) - Grid: add `renderResizeHandle` render prop (https://github.com/WordPress/gutenberg/pull/77811) - Grid: render resize handle as component (https://github.com/WordPress/gutenberg/pull/77888) - Update uuid dependency (https://github.com/WordPress/gutenberg/pull/77848) - Added Translator Context for Reply (https://github.com/WordPress/gutenberg/pull/77891) - Media editor modal: add Shift+R for counter-clockwise rotation (https://github.com/WordPress/gutenberg/pull/77898) - Update references to default branch. (https://github.com/WordPress/gutenberg/pull/77606) - Notes: Keep tall floating threads scrollable on short content (https://github.com/WordPress/gutenberg/pull/77821) - Taxonomy edit route: declare @wordpress/base-styles as dependency (https://github.com/WordPress/gutenberg/pull/77901) - Post Types DataViews: Make titles clickable to open edit page (https://github.com/WordPress/gutenberg/pull/77885) - Upgrade and unify @types/node version (https://github.com/WordPress/gutenberg/pull/77900) - Widget Types: replace bootstrap with resolver (https://github.com/WordPress/gutenberg/pull/77847) - SlotFill: add dependencies to updateFill effect (https://github.com/WordPress/gutenberg/pull/77907) - Grid: prevent resize runaway near viewport edge (https://github.com/WordPress/gutenberg/pull/77854) - Experiment: Add taxonomy visibility fields (https://github.com/WordPress/gutenberg/pull/77835) - Content Types: Add Duplicate action to taxonomy management (https://github.com/WordPress/gutenberg/pull/77853) - Site Editor: Inline layout z-index values (https://github.com/WordPress/gutenberg/pull/77807) - RTC: Clarify WPBlockSelection type and link to duplicates in other packages. (https://github.com/WordPress/gutenberg/pull/77862) - Editor: Improve revisions diff pairing performance (https://github.com/WordPress/gutenberg/pull/77126) - Media Editor Modal: In the image cropper, pan when dragging the crop instead of constraining to the visible area (https://github.com/WordPress/gutenberg/pull/77899) - Block Editor: Clarify logic for 'directInsert' inner blocks setting (https://github.com/WordPress/gutenberg/pull/77873) - Block Editor: Fix target block for copying direct insert block attributes (https://github.com/WordPress/gutenberg/pull/77877) - Link: Fix awkward focus outline around the new-tab icon (https://github.com/WordPress/gutenberg/pull/77910) - Plugin loader: use require for build/constants.php (https://github.com/WordPress/gutenberg/pull/77908) - Tests: Fix argument forwarding for test:unit workspace scripts (https://github.com/WordPress/gutenberg/pull/77541) - Try responsive global block styles with states (https://github.com/WordPress/gutenberg/pull/77513) - Image editor: suppress image editor undo/redo while a crop interaction is active (https://github.com/WordPress/gutenberg/pull/77930) - Experimental: Content types - disable create/save button based on form validity (https://github.com/WordPress/gutenberg/pull/77931) - Guidelines: Refactor accordion to use CollapsibleCard (https://github.com/WordPress/gutenberg/pull/77903) - Guidelines REST: Require read access for standard route (https://github.com/WordPress/gutenberg/pull/77843) - Embed: Add '[embed]' shortcode transform (https://github.com/WordPress/gutenberg/pull/77937) - Edit Post: Fix suppressed errors in Layout component (https://github.com/WordPress/gutenberg/pull/77940) - Experiment: User post types REST controller (https://github.com/WordPress/gutenberg/pull/77915) - Content Types: Add Duplicate action to post type management (https://github.com/WordPress/gutenberg/pull/77844) - Experiment: Content types fix new instance returned in `useSelect` (https://github.com/WordPress/gutenberg/pull/77916) - Select: Hide user agent focus ring in popup (https://github.com/WordPress/gutenberg/pull/77919) - Interactivity API: Fix popover bind hydration (https://github.com/WordPress/gutenberg/pull/77797) - UI: Use string label type for form controls (https://github.com/WordPress/gutenberg/pull/77860) - Widget Types: bootstrap registry into the dashboard client (https://github.com/WordPress/gutenberg/pull/77917) - ui/Drawer: Forward `render` prop on `Drawer.Content` to the scroll container (https://github.com/WordPress/gutenberg/pull/77941) - ColorPicker : Fix inconsistent HEX input clearing behavior (https://github.com/WordPress/gutenberg/pull/77912) - ExternalLink: Fix focus outline under wp-admin (https://github.com/WordPress/gutenberg/pull/77935) - Experiment: Auto fill `slug` from singular label for taxonomies and post types (https://github.com/WordPress/gutenberg/pull/77938) - Site editor: preserve non-global styles in pattern previews (https://github.com/WordPress/gutenberg/pull/77957) - Classic Block: Unwrap experiment to hide it from inserter (https://github.com/WordPress/gutenberg/pull/77911) - Migrate native tests to workspace (https://github.com/WordPress/gutenberg/pull/77425) - Remove root uuid dependency (https://github.com/WordPress/gutenberg/pull/77960) - Build: Update lint-staged to 16.4.0 (https://github.com/WordPress/gutenberg/pull/77963) - docgen: Automatic documentation handle for TypeScript overloads (https://github.com/WordPress/gutenberg/pull/77558) - Dashboard: Add experimental `WidgetDashboard` rendering engine (https://github.com/WordPress/gutenberg/pull/77770) - Fix flaky Menu test (https://github.com/WordPress/gutenberg/pull/77972) - Widget Types: server-side registry, decouple wp-build pages (https://github.com/WordPress/gutenberg/pull/77958) - RTC: Fix divergence when two offline users reconnect (https://github.com/WordPress/gutenberg/pull/77980) - Media editor: replace fine-rotation slider with RotationRuler (https://github.com/WordPress/gutenberg/pull/77906) - RTC: Fix compaction unit test (https://github.com/WordPress/gutenberg/pull/77986) - RTC: Attach sync observers after hydrating persisted CRDT doc (https://github.com/WordPress/gutenberg/pull/77966) - Fix: Buttons block shows inserter picker when multiple allowed blocks are registered (https://github.com/WordPress/gutenberg/pull/77858) - Update nvm installation script to version 0.40.4 (https://github.com/WordPress/gutenberg/pull/77996) - Use theme gray for muted Text (https://github.com/WordPress/gutenberg/pull/77999) - Add lint rule for non-module stylesheet imports (https://github.com/WordPress/gutenberg/pull/77984) - Dashboard experiment: new icon (https://github.com/WordPress/gutenberg/pull/78016) - Testing: Add `createRecord` e2e request util (https://github.com/WordPress/gutenberg/pull/78017) - Widget Types: REST endpoint and core-data entity (https://github.com/WordPress/gutenberg/pull/77987) - Block Editor: Remove unused reducer action types (https://github.com/WordPress/gutenberg/pull/77880) - Experiment: Sync user taxonomies with post types (https://github.com/WordPress/gutenberg/pull/77997) - Dashboard experiment: remove storybook examples for now (https://github.com/WordPress/gutenberg/pull/78020) - Dashboard: add `WidgetDashboard.Actions` compound (https://github.com/WordPress/gutenberg/pull/78019) - Experiment: add first basic user post types e2e tests and update taxonomy tests (https://github.com/WordPress/gutenberg/pull/77998) - Fill in E2E tests for client-side media processing (https://github.com/WordPress/gutenberg/pull/75949) - Modal: Render as a bottom sheet on mobile (https://github.com/WordPress/gutenberg/pull/77956) - Grid: add warning about being under development (https://github.com/WordPress/gutenberg/pull/78022) - RTC: Fix race condition on room creation which can cause a split update log (https://github.com/WordPress/gutenberg/pull/77675) - Connectors: Clarify AI plugin callout copy (https://github.com/WordPress/gutenberg/pull/78043) - Image editor: update sidebar aspect ratio and resize controls (https://github.com/WordPress/gutenberg/pull/78046) - Fix: Only auto register settings if the plugin the connector references is installed and active. (https://github.com/WordPress/gutenberg/pull/77273) - Connectors: Add is_active callback support to plugin registration (https://github.com/WordPress/gutenberg/pull/77897) - Site Editor e2e tests: reimplement the wait for load (https://github.com/WordPress/gutenberg/pull/77981) - Make Block Inserter search input sticky while scrolling (https://github.com/WordPress/gutenberg/pull/77698) - Embed: Tighten raw URL transform isMatch (https://github.com/WordPress/gutenberg/pull/78021) - Notes: Separate intent from mechanics in openTheSidebar (https://github.com/WordPress/gutenberg/pull/78039) - Image editor: improve media editor crop accessibility and dialog focus (https://github.com/WordPress/gutenberg/pull/78047) - Fix flaky e2e test for Pages dataview keyboard navigation (https://github.com/WordPress/gutenberg/pull/78054) - RTC: Fix find_canonical_storage_post_id() always returning null (https://github.com/WordPress/gutenberg/pull/78053) - Dashboard: persist layout via @wordpress/preferences (https://github.com/WordPress/gutenberg/pull/78034) - Dashboard: backend default layout filter (https://github.com/WordPress/gutenberg/pull/78040) - i18n: add context to scale (https://github.com/WordPress/gutenberg/pull/76917) - Dashboard: lift Suspense + error boundary into widget chrome and add a default header (https://github.com/WordPress/gutenberg/pull/78012) - Dashboard: add widget inserter modal (https://github.com/WordPress/gutenberg/pull/78033) - Fix flaky homepage-settings e2e test (https://github.com/WordPress/gutenberg/pull/78063) - Experiment: Content types single route and package (https://github.com/WordPress/gutenberg/pull/78059) - Configure global fallbackFn for timezone-mock to handle Date subclasses (https://github.com/WordPress/gutenberg/pull/78056) - Content types: flush rewrite rules on rewrite-impacting changes (https://github.com/WordPress/gutenberg/pull/78058) - Editor: Paginate revisions slider by 100 per page (https://github.com/WordPress/gutenberg/pull/77200) - Add RTC cursor-scope regression tests (https://github.com/WordPress/gutenberg/pull/77662) - Dashboard: REST endpoint for the default layout (https://github.com/WordPress/gutenberg/pull/78066) - Paste: preserve leading number when pasting single-line text like dates (https://github.com/WordPress/gutenberg/pull/77949) - Revision: Fix failing e2e test (https://github.com/WordPress/gutenberg/pull/78079) - Global Styles: Refactor client side style states to use nodes (https://github.com/WordPress/gutenberg/pull/78000) - Media Editor Modal: Add focus border styles to the stencil rect when the canvas is keyboard focused (https://github.com/WordPress/gutenberg/pull/78078) - Post Content focus mode: Fix flaky e2e test (https://github.com/WordPress/gutenberg/pull/78084) - Update date-fns to v4.1.0 in components and editor packages (https://github.com/WordPress/gutenberg/pull/78057) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (https://github.com/WordPress/gutenberg/pull/77904) - Admin UI: Fix nested landmark in Page header (https://github.com/WordPress/gutenberg/pull/78001) - Fix: Shortcode block does not render in Navigation Overlay (https://github.com/WordPress/gutenberg/pull/77511) - Fix flaky 'publish panel' e2e test (https://github.com/WordPress/gutenberg/pull/78082) - Experiment: Content types reuse some commone utils (https://github.com/WordPress/gutenberg/pull/78091) - Style Runtime: Support CSS module style injection across documents (https://github.com/WordPress/gutenberg/pull/77965) - Experiment: Add Classic block migration notice (https://github.com/WordPress/gutenberg/pull/78090) - Content Types: Abstract and reuse label autofilling for post types (https://github.com/WordPress/gutenberg/pull/78099) - i18n: add context to table header/footer label (https://github.com/WordPress/gutenberg/pull/78007) - Experiment: Content types reuse `createStatusAction` (https://github.com/WordPress/gutenberg/pull/78102) - Select: Support placeholder prop on Trigger (https://github.com/WordPress/gutenberg/pull/78076) - feat: Enhance Connectors page on read-only file system (https://github.com/WordPress/gutenberg/pull/77521) - Add missing Portal Storybook subcomponents (https://github.com/WordPress/gutenberg/pull/78108) - RTC: Fix title divergence between users on page refresh after title update (https://github.com/WordPress/gutenberg/pull/77666) - Docs: shortcode transforms with wrapped content + rawHandler JSDoc (https://github.com/WordPress/gutenberg/pull/78003) - Connectors: Refine PHPStan type shapes (https://github.com/WordPress/gutenberg/pull/78103) - Fix lockfile drift and missing dep from content-types consolidation (https://github.com/WordPress/gutenberg/pull/78109) - Classic Block: Use onReplace prop for migration actions (https://github.com/WordPress/gutenberg/pull/78113) - Media Editor Experiment: Add a route, based on the media editor modal, refactor the modal components (https://github.com/WordPress/gutenberg/pull/77994) - i18n: add context to (site) identity (https://github.com/WordPress/gutenberg/pull/78132) - Script Modules: Guard setAccessible() calls behind PHP < 8.1 check (https://github.com/WordPress/gutenberg/pull/78137) - Connectors: Avoid using centered text (https://github.com/WordPress/gutenberg/pull/78125) - Content Types: Introduce view items actions (https://github.com/WordPress/gutenberg/pull/78104) - Fix: Guard require_once calls in generated PHP files against deployment race conditions (https://github.com/WordPress/gutenberg/pull/78110) - bin/dev.mjs: warn (not exit) on stale webpack watching this checkout (https://github.com/WordPress/gutenberg/pull/78098) - E2E: Reset preferences after navigable-toolbar tests (https://github.com/WordPress/gutenberg/pull/78115) - Editor: Refactor 'PostPublishPanel' into function component (https://github.com/WordPress/gutenberg/pull/78083) - Document how to ignore VSCode Workplace Settings. (https://github.com/WordPress/gutenberg/pull/77608) - Select: Fix disabled cursor styles (https://github.com/WordPress/gutenberg/pull/78112) - Revisions: Add tooltip to diff marker buttons (https://github.com/WordPress/gutenberg/pull/77690) - Experiment: Make content types `_builtin` (https://github.com/WordPress/gutenberg/pull/78150) - Experiment: Content types - use `form` for quick edit dialogs (https://github.com/WordPress/gutenberg/pull/78149) - Experiment: Content types use `toggle` for `active` prop edit (https://github.com/WordPress/gutenberg/pull/78146) - Experiment: Update view content types actions (https://github.com/WordPress/gutenberg/pull/78159) - Block Editor: Add translation context for “Exit pattern” (https://github.com/WordPress/gutenberg/pull/78158) - ColorPalette: Fix duplicate-key warnings and incorrect selection with identical color values (https://github.com/WordPress/gutenberg/pull/78004) - Menu: Fix flaky keyboard focus test (https://github.com/WordPress/gutenberg/pull/78162) - e2e tests: use editPost and createNewPost helpers everywhere (https://github.com/WordPress/gutenberg/pull/78170) - Support object values in Select primitive (https://github.com/WordPress/gutenberg/pull/77861) - Text: Fix render prop CSS defenses (https://github.com/WordPress/gutenberg/pull/78172) - Design System: Add missing packages to Storybook introduction (https://github.com/WordPress/gutenberg/pull/77504) - Add SelectControl component to @wordpress/ui (https://github.com/WordPress/gutenberg/pull/77809) - Dashboard experiment: animate customize UX (https://github.com/WordPress/gutenberg/pull/78065) - Add RTC y-websocket-server tests (https://github.com/WordPress/gutenberg/pull/78179) - Grid: add DashboardLanes masonry surface (https://github.com/WordPress/gutenberg/pull/78107) - Dashboard: staging layer for in-progress layout edits (https://github.com/WordPress/gutenberg/pull/78071) - Media: Guard gutenberg_delete_heic_companion_file() against non-string $metadata['original'] (https://github.com/WordPress/gutenberg/pull/78128) - Image block: Try syncing updated metadata fields (alt and caption) from the media editor (https://github.com/WordPress/gutenberg/pull/78139) - Correct capitalization in help text for Breadcrumbs block (https://github.com/WordPress/gutenberg/pull/78175) - Add min release age to npm config (https://github.com/WordPress/gutenberg/pull/78191) - isFulfilled: don't change resolution state, call in resolveSelect (https://github.com/WordPress/gutenberg/pull/78151) - Add aria-label to Revisions button in Post Summary sidebar (https://github.com/WordPress/gutenberg/pull/78140) - Experiment: Content types invaidate cache for synced taxonomies-post types (https://github.com/WordPress/gutenberg/pull/78143) - Shortcode: Offer block-specific transforms when text matches a registered shortcode (https://github.com/WordPress/gutenberg/pull/77944) - E2E: Remove slash from bad embed request mock (https://github.com/WordPress/gutenberg/pull/78200) - UI: Add component status notes to Storybook (https://github.com/WordPress/gutenberg/pull/77988) - ui/Tooltip, ui/IconButton: Add positioner slot API (https://github.com/WordPress/gutenberg/pull/78089) - Add motion design tokens (duration and easing) to @wordpress/theme (https://github.com/WordPress/gutenberg/pull/76097) - Grid: add edit-mode overlay to DashboardGrid and DashboardLanes (https://github.com/WordPress/gutenberg/pull/78199) - Grid: fix keyboard activation on draggable items (https://github.com/WordPress/gutenberg/pull/78163) - ui/CollapsibleCard: support rendering Header as a heading element (https://github.com/WordPress/gutenberg/pull/77962) - Revisions diff markers: enforce 24×24px minimum target size (WCAG 2.5.8) (https://github.com/WordPress/gutenberg/pull/77671) - Popover: Remove close button z-index (https://github.com/WordPress/gutenberg/pull/78180) - Button: Align compound component metadata (https://github.com/WordPress/gutenberg/pull/78184) - Dashboard: use design animation tokens (https://github.com/WordPress/gutenberg/pull/78204) - Tools: Remove save-exact from .npmrc (https://github.com/WordPress/gutenberg/pull/78196) - UI: Improve docs for compound exports (https://github.com/WordPress/gutenberg/pull/78212) - Bump addressable in /packages/react-native-editor/ios (https://github.com/WordPress/gutenberg/pull/77128) - Bump follow-redirects from 1.15.6 to 1.16.0 (https://github.com/WordPress/gutenberg/pull/77278) - Bump vite from 7.3.0 to 7.3.2 (https://github.com/WordPress/gutenberg/pull/77076) - Bump flatted from 3.3.1 to 3.4.2 (https://github.com/WordPress/gutenberg/pull/76708) - Bump @xmldom/xmldom from 0.8.10 to 0.8.13 (https://github.com/WordPress/gutenberg/pull/77577) - Media Editor Modal: Fix empty author and attached to fields (https://github.com/WordPress/gutenberg/pull/78189) - Bump fast-xml-parser from 4.5.0 to 4.5.4 (https://github.com/WordPress/gutenberg/pull/76081) - Bump node-forge from 1.3.1 to 1.3.2 (https://github.com/WordPress/gutenberg/pull/73601) - Experiment: Integrate `useView` in content types lists (https://github.com/WordPress/gutenberg/pull/78197) - Experiment: Add term/post type count fields in content types (https://github.com/WordPress/gutenberg/pull/78157) - Connectors: Increase right padding of callout for mobile layout (https://github.com/WordPress/gutenberg/pull/78126) - UI: Fix subcomponent story labels (https://github.com/WordPress/gutenberg/pull/78210) - Fonts: Move admin menu compat from experimental to wordpress-7.0 (https://github.com/WordPress/gutenberg/pull/78227) - Experiment: Render badges for some content types' fields (https://github.com/WordPress/gutenberg/pull/78194) - Testing: Consolidate CI workflows for changelog testing (https://github.com/WordPress/gutenberg/pull/78169) - Edit Post: Inline meta boxes z-index values (https://github.com/WordPress/gutenberg/pull/78181) - Backport package publish commits to release/23.2 (https://github.com/WordPress/gutenberg/pull/78347) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65559. git-svn-id: https://develop.svn.wordpress.org/trunk@62582 602fd350-edb4-49c9-b593-d223f7449a82 --- package.json | 2 +- .../assets/script-loader-packages.php | 37 +- .../assets/script-modules-packages.php | 65 +- src/wp-includes/blocks/navigation.php | 12 +- src/wp-includes/build/constants.php | 2 +- src/wp-includes/build/pages.php | 32 +- .../pages/font-library/page-wp-admin.php | 15 + .../build/pages/font-library/page.php | 15 + .../options-connectors/page-wp-admin.php | 15 + .../build/pages/options-connectors/page.php | 15 + src/wp-includes/build/routes.php | 41 +- .../build/routes/connectors-home/content.js | 10453 +++++++++++++++- .../connectors-home/content.min.asset.php | 2 +- .../routes/connectors-home/content.min.js | 26 +- .../build/routes/font-list/content.js | 564 +- .../routes/font-list/content.min.asset.php | 2 +- .../build/routes/font-list/content.min.js | 8 +- src/wp-includes/build/routes/registry.php | 38 +- .../images/icon-library/tab-list.svg | 1 + .../images/icon-library/tab-panel.svg | 1 + 20 files changed, 10824 insertions(+), 522 deletions(-) create mode 100644 src/wp-includes/images/icon-library/tab-list.svg create mode 100644 src/wp-includes/images/icon-library/tab-panel.svg diff --git a/package.json b/package.json index b91302a28e020..a976b26ea37ad 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://develop.svn.wordpress.org/trunk" }, "gutenberg": { - "sha": "585cf86bb6f408b1dc61175f75db016aa4760653", + "sha": "d5ac60e6118060529737127d44a6fdc8abf57eb9", "ghcrRepo": "WordPress/gutenberg/gutenberg-wp-develop-build" }, "engines": { diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php index 96d181286022e..50e8794c491c2 100644 --- a/src/wp-includes/assets/script-loader-packages.php +++ b/src/wp-includes/assets/script-loader-packages.php @@ -13,7 +13,7 @@ 'wp-i18n', 'wp-rich-text' ), - 'version' => 'a97786de6f13be9c6637' + 'version' => 'd4fe1eeb787c2fd5ee89' ), 'api-fetch.js' => array( 'dependencies' => array( @@ -65,7 +65,7 @@ 'wp-theme', 'wp-url' ), - 'version' => '110a088de3bda59ac5de' + 'version' => '43a9d7ab2fbaa04615a1' ), 'block-editor.js' => array( 'dependencies' => array( @@ -103,7 +103,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '9041ae4f01562bcb4d33' + 'version' => '5a398d1da02bf80f3f98' ), 'block-library.js' => array( 'dependencies' => array( @@ -136,6 +136,7 @@ 'wp-private-apis', 'wp-rich-text', 'wp-server-side-render', + 'wp-shortcode', 'wp-theme', 'wp-upload-media', 'wp-url', @@ -147,7 +148,7 @@ 'import' => 'dynamic' ) ), - 'version' => '52817755f853f6ab7153' + 'version' => '9c1171e882b2ba2f7411' ), 'block-serialization-default-parser.js' => array( 'dependencies' => array( @@ -180,7 +181,7 @@ 'wp-shortcode', 'wp-warning' ), - 'version' => '9aea2a60e4a82baa898c' + 'version' => 'ece1f172d5b708916ebc' ), 'commands.js' => array( 'dependencies' => array( @@ -220,7 +221,7 @@ 'wp-rich-text', 'wp-warning' ), - 'version' => 'c74d7795ae739efd8470' + 'version' => '83936472a0d07a3a4c92' ), 'compose.js' => array( 'dependencies' => array( @@ -272,7 +273,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '84dfcb788b38527ce29d' + 'version' => '21fd0114d22869dbe459' ), 'customize-widgets.js' => array( 'dependencies' => array( @@ -301,7 +302,7 @@ 'wp-theme', 'wp-widgets' ), - 'version' => '206784568d822411270a' + 'version' => '4da0091c281df82bd222' ), 'data.js' => array( 'dependencies' => array( @@ -314,7 +315,7 @@ 'wp-private-apis', 'wp-redux-routine' ), - 'version' => '148d59ef2548b2513db8' + 'version' => 'ee4e907a070c9780da2b' ), 'data-controls.js' => array( 'dependencies' => array( @@ -391,7 +392,7 @@ 'import' => 'static' ) ), - 'version' => 'c43a4fa8b00c3ba4431f' + 'version' => 'e5a1146f8586938ade23' ), 'edit-site.js' => array( 'dependencies' => array( @@ -440,7 +441,7 @@ 'import' => 'static' ) ), - 'version' => 'aa6e9b6786aea68585db' + 'version' => '25ce07d8e96c49452e7a' ), 'edit-widgets.js' => array( 'dependencies' => array( @@ -481,7 +482,7 @@ 'import' => 'static' ) ), - 'version' => '073d2e7bb4648840803a' + 'version' => '3382b8166d24bc8ebc42' ), 'editor.js' => array( 'dependencies' => array( @@ -531,7 +532,7 @@ 'import' => 'static' ) ), - 'version' => '9496d99a5f41ee4b8d8c' + 'version' => '3e365e98ba94f24ff5cf' ), 'element.js' => array( 'dependencies' => array( @@ -572,7 +573,7 @@ 'import' => 'dynamic' ) ), - 'version' => '6f640c16ab0835901167' + 'version' => 'b38d376fe79b3eac1578' ), 'hooks.js' => array( 'dependencies' => array( @@ -650,7 +651,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '1ef9847260fd7de4188f' + 'version' => '597bd2b6e79b271e52c7' ), 'notices.js' => array( 'dependencies' => array( @@ -744,7 +745,7 @@ 'dependencies' => array( ), - 'version' => '7378f2cb5ba25f7aa9e5' + 'version' => 'ebe55c7ec838043537c7' ), 'react-i18n.js' => array( 'dependencies' => array( @@ -841,7 +842,7 @@ 'wp-element', 'wp-private-apis' ), - 'version' => '798ec32c86815d7e8a14' + 'version' => '3b1949512f2ec0c938bd' ), 'token-list.js' => array( 'dependencies' => array( @@ -872,7 +873,7 @@ 'import' => 'dynamic' ) ), - 'version' => '688c688a0ccf0f0d020b' + 'version' => '1399274c1ad48fc29498' ), 'url.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php index b93f4f354fd1d..2c6038198b9fe 100644 --- a/src/wp-includes/assets/script-modules-packages.php +++ b/src/wp-includes/assets/script-modules-packages.php @@ -166,7 +166,7 @@ 'import' => 'static' ) ), - 'version' => '1ea95bd3abfe75ec1bbc' + 'version' => '5e02fdb03b9e05e7ba82' ), 'connectors/index.js' => array( 'dependencies' => array( @@ -179,6 +179,41 @@ ), 'version' => 'dce5e2b0fc240815717b' ), + 'content-types/index.js' => array( + 'dependencies' => array( + 'react', + 'react-dom', + 'react-jsx-runtime', + 'wp-components', + 'wp-compose', + 'wp-core-data', + 'wp-data', + 'wp-date', + 'wp-deprecated', + 'wp-element', + 'wp-i18n', + 'wp-is-shallow-equal', + 'wp-keycodes', + 'wp-notices', + 'wp-preferences', + 'wp-primitives', + 'wp-private-apis', + 'wp-theme', + 'wp-url', + 'wp-warning' + ), + 'module_dependencies' => array( + array( + 'id' => '@wordpress/a11y', + 'import' => 'static' + ), + array( + 'id' => '@wordpress/route', + 'import' => 'static' + ) + ), + 'version' => '9a35d0da8badd6a33cf8' + ), 'core-abilities/index.js' => array( 'dependencies' => array( 'wp-api-fetch', @@ -211,7 +246,7 @@ 'dependencies' => array( ), - 'version' => '4d2a3a72c7410d548881' + 'version' => 'efaa5193bbad9c60ffd1' ), 'interactivity-router/full-page.js' => array( 'dependencies' => array( @@ -273,7 +308,7 @@ 'wp-private-apis', 'wp-style-engine' ), - 'version' => '4dbbb677aac222671901' + 'version' => '8bd91519756b243fc835' ), 'route/index.js' => array( 'dependencies' => array( @@ -284,30 +319,6 @@ ), 'version' => '48a77bfa70722b4254e4' ), - 'user-taxonomies/index.js' => array( - 'dependencies' => array( - 'react', - 'react-dom', - 'react-jsx-runtime', - 'wp-components', - 'wp-compose', - 'wp-core-data', - 'wp-data', - 'wp-element', - 'wp-i18n', - 'wp-notices', - 'wp-primitives', - 'wp-private-apis', - 'wp-theme' - ), - 'module_dependencies' => array( - array( - 'id' => '@wordpress/a11y', - 'import' => 'static' - ) - ), - 'version' => '339ee65736f7a738a4ad' - ), 'vips/loader.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/blocks/navigation.php b/src/wp-includes/blocks/navigation.php index 8602373837009..a530494ff36e7 100644 --- a/src/wp-includes/blocks/navigation.php +++ b/src/wp-includes/blocks/navigation.php @@ -425,7 +425,11 @@ private static function get_overlay_blocks_from_template_part( $overlay_template $full_template_part_id = $theme . '//' . $slug; $block_template = get_block_file_template( $full_template_part_id, 'wp_template_part' ); if ( isset( $block_template->content ) ) { - $parsed_blocks = parse_blocks( $block_template->content ); + // Expand shortcodes before parsing blocks, matching the order in + // `render_block_core_template_part()`. + $content = shortcode_unautop( $block_template->content ); + $content = do_shortcode( $content ); + $parsed_blocks = parse_blocks( $content ); $blocks = block_core_navigation_filter_out_empty_blocks( $parsed_blocks ); // Disable overlay menu for any navigation blocks within the overlay to prevent nested overlays. $blocks = static::disable_overlay_menu_for_nested_navigation_blocks( $blocks ); @@ -449,6 +453,12 @@ private static function get_overlay_blocks_from_template_part( $overlay_template // Re-serialize, and run Block Hooks algorithm to inject hooked blocks. $markup = serialize_blocks( $blocks ); $markup = apply_block_hooks_to_content_from_post_object( $markup, $template_part_post ); + + // Expand shortcodes before parsing blocks, matching the order in + // `render_block_core_template_part()`. + $markup = shortcode_unautop( $markup ); + $markup = do_shortcode( $markup ); + $blocks = parse_blocks( $markup ); // Disable overlay menu for any navigation blocks within the overlay to prevent nested overlays. diff --git a/src/wp-includes/build/constants.php b/src/wp-includes/build/constants.php index dd4ff3d3b0fe3..09f9b1d22697a 100644 --- a/src/wp-includes/build/constants.php +++ b/src/wp-includes/build/constants.php @@ -9,6 +9,6 @@ */ return array( - 'version' => '23.1.0', + 'version' => '23.2.0', 'build_url' => includes_url( 'build/' ), ); diff --git a/src/wp-includes/build/pages.php b/src/wp-includes/build/pages.php index 1d8e3b10f73a7..d9fa3cfef0f7f 100644 --- a/src/wp-includes/build/pages.php +++ b/src/wp-includes/build/pages.php @@ -6,15 +6,23 @@ * @package wp */ -require_once __DIR__ . '/pages/font-library/page.php'; -require_once __DIR__ . '/pages/font-library/page-wp-admin.php'; -require_once __DIR__ . '/pages/options-connectors/page.php'; -require_once __DIR__ . '/pages/options-connectors/page-wp-admin.php'; -require_once __DIR__ . '/pages/guidelines/page.php'; -require_once __DIR__ . '/pages/guidelines/page-wp-admin.php'; -require_once __DIR__ . '/pages/experiments/page.php'; -require_once __DIR__ . '/pages/experiments/page-wp-admin.php'; -require_once __DIR__ . '/pages/taxonomies/page.php'; -require_once __DIR__ . '/pages/taxonomies/page-wp-admin.php'; -require_once __DIR__ . '/pages/dashboard/page.php'; -require_once __DIR__ . '/pages/dashboard/page-wp-admin.php'; +foreach ( [ + __DIR__ . '/pages/media-editor/page.php', + __DIR__ . '/pages/media-editor/page-wp-admin.php', + __DIR__ . '/pages/font-library/page.php', + __DIR__ . '/pages/font-library/page-wp-admin.php', + __DIR__ . '/pages/options-connectors/page.php', + __DIR__ . '/pages/options-connectors/page-wp-admin.php', + __DIR__ . '/pages/guidelines/page.php', + __DIR__ . '/pages/guidelines/page-wp-admin.php', + __DIR__ . '/pages/experiments/page.php', + __DIR__ . '/pages/experiments/page-wp-admin.php', + __DIR__ . '/pages/content-types/page.php', + __DIR__ . '/pages/content-types/page-wp-admin.php', + __DIR__ . '/pages/dashboard/page.php', + __DIR__ . '/pages/dashboard/page-wp-admin.php', +] as $file ) { + if ( file_exists( $file ) ) { + require_once $file; + } +} diff --git a/src/wp-includes/build/pages/font-library/page-wp-admin.php b/src/wp-includes/build/pages/font-library/page-wp-admin.php index 4867edd329dc0..aa54ca9045668 100644 --- a/src/wp-includes/build/pages/font-library/page-wp-admin.php +++ b/src/wp-includes/build/pages/font-library/page-wp-admin.php @@ -196,6 +196,21 @@ function ( $handle ) { } } + /** + * Filters the boot script-module dependencies for the + * font-library-wp-admin page. + * + * Surfaces extending this page can append entries to the boot + * dependency list. Each entry is an array with 'import' (string + * 'static' or 'dynamic') and 'id' (script-module handle) keys. + * + * @param array $boot_dependencies Boot dependencies for the page. + */ + $boot_dependencies = apply_filters( + 'font-library-wp-admin_boot_dependencies', + $boot_dependencies + ); + // Dummy script module to ensure dependencies are loaded wp_register_script_module( 'font-library-wp-admin', diff --git a/src/wp-includes/build/pages/font-library/page.php b/src/wp-includes/build/pages/font-library/page.php index c7ce3cfa7fb67..f41ec1e443227 100644 --- a/src/wp-includes/build/pages/font-library/page.php +++ b/src/wp-includes/build/pages/font-library/page.php @@ -209,6 +209,21 @@ function ( $handle ) { } } + /** + * Filters the boot script-module dependencies for the + * font-library page. + * + * Surfaces extending this page can append entries to the boot + * dependency list. Each entry is an array with 'import' (string + * 'static' or 'dynamic') and 'id' (script-module handle) keys. + * + * @param array $boot_dependencies Boot dependencies for the page. + */ + $boot_dependencies = apply_filters( + 'font-library_boot_dependencies', + $boot_dependencies + ); + // Dummy script module to ensure dependencies are loaded wp_register_script_module( 'font-library', diff --git a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php index 434708997ea0c..e5c7b8dce0544 100644 --- a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php +++ b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php @@ -196,6 +196,21 @@ function ( $handle ) { } } + /** + * Filters the boot script-module dependencies for the + * options-connectors-wp-admin page. + * + * Surfaces extending this page can append entries to the boot + * dependency list. Each entry is an array with 'import' (string + * 'static' or 'dynamic') and 'id' (script-module handle) keys. + * + * @param array $boot_dependencies Boot dependencies for the page. + */ + $boot_dependencies = apply_filters( + 'options-connectors-wp-admin_boot_dependencies', + $boot_dependencies + ); + // Dummy script module to ensure dependencies are loaded wp_register_script_module( 'options-connectors-wp-admin', diff --git a/src/wp-includes/build/pages/options-connectors/page.php b/src/wp-includes/build/pages/options-connectors/page.php index 95ee80c2900d0..6be01a05641c0 100644 --- a/src/wp-includes/build/pages/options-connectors/page.php +++ b/src/wp-includes/build/pages/options-connectors/page.php @@ -209,6 +209,21 @@ function ( $handle ) { } } + /** + * Filters the boot script-module dependencies for the + * options-connectors page. + * + * Surfaces extending this page can append entries to the boot + * dependency list. Each entry is an array with 'import' (string + * 'static' or 'dynamic') and 'id' (script-module handle) keys. + * + * @param array $boot_dependencies Boot dependencies for the page. + */ + $boot_dependencies = apply_filters( + 'options-connectors_boot_dependencies', + $boot_dependencies + ); + // Dummy script module to ensure dependencies are loaded wp_register_script_module( 'options-connectors', diff --git a/src/wp-includes/build/routes.php b/src/wp-includes/build/routes.php index bac9b0657e868..bb6177aee952e 100644 --- a/src/wp-includes/build/routes.php +++ b/src/wp-includes/build/routes.php @@ -111,6 +111,25 @@ function wp_register_options_connectors_wp_admin_page_routes() { } add_action( 'options-connectors-wp-admin_init', 'wp_register_options_connectors_wp_admin_page_routes' ); +// Page-specific route registration functions for content-types +/** + * Register routes for content-types page (full-page mode). + */ +function wp_register_content_types_page_routes() { + global $wp_content_types_routes_data; + wp_register_page_routes( $wp_content_types_routes_data, 'wp_register_content_types_route' ); +} +add_action( 'content-types_init', 'wp_register_content_types_page_routes' ); + +/** + * Register routes for content-types page (wp-admin mode). + */ +function wp_register_content_types_wp_admin_page_routes() { + global $wp_content_types_routes_data; + wp_register_page_routes( $wp_content_types_routes_data, 'wp_register_content_types_wp_admin_route' ); +} +add_action( 'content-types-wp-admin_init', 'wp_register_content_types_wp_admin_page_routes' ); + // Page-specific route registration functions for dashboard /** * Register routes for dashboard page (full-page mode). @@ -187,22 +206,22 @@ function wp_register_guidelines_wp_admin_page_routes() { } add_action( 'guidelines-wp-admin_init', 'wp_register_guidelines_wp_admin_page_routes' ); -// Page-specific route registration functions for taxonomies +// Page-specific route registration functions for media-editor /** - * Register routes for taxonomies page (full-page mode). + * Register routes for media-editor page (full-page mode). */ -function wp_register_taxonomies_page_routes() { - global $wp_taxonomies_routes_data; - wp_register_page_routes( $wp_taxonomies_routes_data, 'wp_register_taxonomies_route' ); +function wp_register_media_editor_page_routes() { + global $wp_media_editor_routes_data; + wp_register_page_routes( $wp_media_editor_routes_data, 'wp_register_media_editor_route' ); } -add_action( 'taxonomies_init', 'wp_register_taxonomies_page_routes' ); +add_action( 'media-editor_init', 'wp_register_media_editor_page_routes' ); /** - * Register routes for taxonomies page (wp-admin mode). + * Register routes for media-editor page (wp-admin mode). */ -function wp_register_taxonomies_wp_admin_page_routes() { - global $wp_taxonomies_routes_data; - wp_register_page_routes( $wp_taxonomies_routes_data, 'wp_register_taxonomies_wp_admin_route' ); +function wp_register_media_editor_wp_admin_page_routes() { + global $wp_media_editor_routes_data; + wp_register_page_routes( $wp_media_editor_routes_data, 'wp_register_media_editor_wp_admin_route' ); } -add_action( 'taxonomies-wp-admin_init', 'wp_register_taxonomies_wp_admin_page_routes' ); +add_action( 'media-editor-wp-admin_init', 'wp_register_media_editor_wp_admin_page_routes' ); diff --git a/src/wp-includes/build/routes/connectors-home/content.js b/src/wp-includes/build/routes/connectors-home/content.js index 2c1dafc85dd82..b3231790cb6d4 100644 --- a/src/wp-includes/build/routes/connectors-home/content.js +++ b/src/wp-includes/build/routes/connectors-home/content.js @@ -7,6 +7,10 @@ var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) @@ -52,6 +56,182 @@ var require_jsx_runtime = __commonJS({ } }); +// vendor-external:react-dom +var require_react_dom = __commonJS({ + "vendor-external:react-dom"(exports, module) { + module.exports = window.ReactDOM; + } +}); + +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +var require_use_sync_external_store_shim_development = __commonJS({ + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { + "use strict"; + (function() { + function is(x, y) { + return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; + } + function useSyncExternalStore$2(subscribe, getSnapshot) { + didWarnOld18Alpha || void 0 === React53.startTransition || (didWarnOld18Alpha = true, console.error( + "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." + )); + var value = getSnapshot(); + if (!didWarnUncachedGetSnapshot) { + var cachedValue = getSnapshot(); + objectIs(value, cachedValue) || (console.error( + "The result of getSnapshot should be cached to avoid an infinite loop" + ), didWarnUncachedGetSnapshot = true); + } + cachedValue = useState14({ + inst: { value, getSnapshot } + }); + var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; + useLayoutEffect4( + function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }, + [subscribe, value, getSnapshot] + ); + useEffect15( + function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + return subscribe(function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }); + }, + [subscribe] + ); + useDebugValue2(value); + return value; + } + function checkIfSnapshotChanged(inst) { + var latestGetSnapshot = inst.getSnapshot; + inst = inst.value; + try { + var nextValue = latestGetSnapshot(); + return !objectIs(inst, nextValue); + } catch (error2) { + return true; + } + } + function useSyncExternalStore$1(subscribe, getSnapshot) { + return getSnapshot(); + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React53 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState14 = React53.useState, useEffect15 = React53.useEffect, useLayoutEffect4 = React53.useLayoutEffect, useDebugValue2 = React53.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; + exports.useSyncExternalStore = void 0 !== React53.useSyncExternalStore ? React53.useSyncExternalStore : shim; + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); + })(); + } +}); + +// node_modules/use-sync-external-store/shim/index.js +var require_shim = __commonJS({ + "node_modules/use-sync-external-store/shim/index.js"(exports, module) { + "use strict"; + if (false) { + module.exports = null; + } else { + module.exports = require_use_sync_external_store_shim_development(); + } + } +}); + +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +var require_with_selector_development = __commonJS({ + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) { + "use strict"; + (function() { + function is(x, y) { + return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React53 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore2 = shim.useSyncExternalStore, useRef21 = React53.useRef, useEffect15 = React53.useEffect, useMemo17 = React53.useMemo, useDebugValue2 = React53.useDebugValue; + exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { + var instRef = useRef21(null); + if (null === instRef.current) { + var inst = { hasValue: false, value: null }; + instRef.current = inst; + } else inst = instRef.current; + instRef = useMemo17( + function() { + function memoizedSelector(nextSnapshot) { + if (!hasMemo) { + hasMemo = true; + memoizedSnapshot = nextSnapshot; + nextSnapshot = selector(nextSnapshot); + if (void 0 !== isEqual && inst.hasValue) { + var currentSelection = inst.value; + if (isEqual(currentSelection, nextSnapshot)) + return memoizedSelection = currentSelection; + } + return memoizedSelection = nextSnapshot; + } + currentSelection = memoizedSelection; + if (objectIs(memoizedSnapshot, nextSnapshot)) + return currentSelection; + var nextSelection = selector(nextSnapshot); + if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) + return memoizedSnapshot = nextSnapshot, currentSelection; + memoizedSnapshot = nextSnapshot; + return memoizedSelection = nextSelection; + } + var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; + return [ + function() { + return memoizedSelector(getSnapshot()); + }, + null === maybeGetServerSnapshot ? void 0 : function() { + return memoizedSelector(maybeGetServerSnapshot()); + } + ]; + }, + [getSnapshot, getServerSnapshot, selector, isEqual] + ); + var value = useSyncExternalStore2(subscribe, instRef[0], instRef[1]); + useEffect15( + function() { + inst.hasValue = true; + inst.value = value; + }, + [value] + ); + useDebugValue2(value); + return value; + }; + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); + })(); + } +}); + +// node_modules/use-sync-external-store/shim/with-selector.js +var require_with_selector = __commonJS({ + "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { + "use strict"; + if (false) { + module.exports = null; + } else { + module.exports = require_with_selector_development(); + } + } +}); + +// package-external:@wordpress/primitives +var require_primitives = __commonJS({ + "package-external:@wordpress/primitives"(exports, module) { + module.exports = window.wp.primitives; + } +}); + +// package-external:@wordpress/theme +var require_theme = __commonJS({ + "package-external:@wordpress/theme"(exports, module) { + module.exports = window.wp.theme; + } +}); + // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { @@ -111,7 +291,25 @@ function clsx() { var clsx_default = clsx; // packages/ui/build-module/badge/badge.mjs -var import_element2 = __toESM(require_element(), 1); +var import_element9 = __toESM(require_element(), 1); + +// node_modules/@base-ui/utils/esm/error.js +var set; +if (true) { + set = /* @__PURE__ */ new Set(); +} +function error(...messages) { + if (true) { + const messageKey = messages.join(" "); + if (!set.has(messageKey)) { + set.add(messageKey); + console.error(`Base UI: ${messageKey}`); + } + } +} + +// node_modules/@base-ui/utils/esm/useStableCallback.js +var React3 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/useRefWithInit.js var React2 = __toESM(require_react(), 1); @@ -124,23 +322,71 @@ function useRefWithInit(init, initArg) { return ref; } +// node_modules/@base-ui/utils/esm/useStableCallback.js +var useInsertionEffect = React3[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0, -3)]; +var useSafeInsertionEffect = ( + // React 17 doesn't have useInsertionEffect. + useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. + useInsertionEffect !== React3.useLayoutEffect ? useInsertionEffect : (fn) => fn() +); +function useStableCallback(callback) { + const stable = useRefWithInit(createStableCallback).current; + stable.next = callback; + useSafeInsertionEffect(stable.effect); + return stable.trampoline; +} +function createStableCallback() { + const stable = { + next: void 0, + callback: assertNotCalled, + trampoline: (...args) => stable.callback?.(...args), + effect: () => { + stable.callback = stable.next; + } + }; + return stable; +} +function assertNotCalled() { + if (true) { + throw ( + /* minify-error-disabled */ + new Error("Base UI: Cannot call an event handler while rendering.") + ); + } +} + +// node_modules/@base-ui/utils/esm/useIsoLayoutEffect.js +var React4 = __toESM(require_react(), 1); +var noop = () => { +}; +var useIsoLayoutEffect = typeof document !== "undefined" ? React4.useLayoutEffect : noop; + // node_modules/@base-ui/utils/esm/warn.js -var set; +var set2; if (true) { - set = /* @__PURE__ */ new Set(); + set2 = /* @__PURE__ */ new Set(); } function warn(...messages) { if (true) { const messageKey = messages.join(" "); - if (!set.has(messageKey)) { - set.add(messageKey); + if (!set2.has(messageKey)) { + set2.add(messageKey); console.warn(`Base UI: ${messageKey}`); } } } -// node_modules/@base-ui/react/esm/internals/useRenderElement.js +// node_modules/@base-ui/react/esm/internals/direction-context/DirectionContext.js var React5 = __toESM(require_react(), 1); +var DirectionContext = /* @__PURE__ */ React5.createContext(void 0); +if (true) DirectionContext.displayName = "DirectionContext"; +function useDirection() { + const context = React5.useContext(DirectionContext); + return context?.direction ?? "ltr"; +} + +// node_modules/@base-ui/react/esm/internals/useRenderElement.js +var React8 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/useMergedRefs.js function useMergedRefs(a, b, c, d) { @@ -168,7 +414,7 @@ function didChange(forkRef, a, b, c, d) { return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d; } function didChangeN(forkRef, newRefs) { - return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]); + return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); } function update(forkRef, refs) { forkRef.refs = refs; @@ -232,18 +478,18 @@ function update(forkRef, refs) { } // node_modules/@base-ui/utils/esm/getReactElementRef.js -var React4 = __toESM(require_react(), 1); +var React7 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/reactVersion.js -var React3 = __toESM(require_react(), 1); -var majorVersion = parseInt(React3.version, 10); +var React6 = __toESM(require_react(), 1); +var majorVersion = parseInt(React6.version, 10); function isReactVersionAtLeast(reactVersionToCheck) { return majorVersion >= reactVersionToCheck; } // node_modules/@base-ui/utils/esm/getReactElementRef.js function getReactElementRef(element) { - if (!/* @__PURE__ */ React4.isValidElement(element)) { + if (!/* @__PURE__ */ React7.isValidElement(element)) { return null; } const reactElement = element; @@ -269,6 +515,8 @@ function mergeObjects(a, b) { } // node_modules/@base-ui/utils/esm/empty.js +function NOOP() { +} var EMPTY_ARRAY = Object.freeze([]); var EMPTY_OBJECT = Object.freeze({}); @@ -479,12 +727,12 @@ function useRenderElementProps(componentProps, params = {}) { state = EMPTY_OBJECT, ref, props, - stateAttributesMapping, + stateAttributesMapping: stateAttributesMapping3, enabled = true } = params; const className = enabled ? resolveClassName(classNameProp, state) : void 0; const style = enabled ? resolveStyle(styleProp, state) : void 0; - const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT; + const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping3) : EMPTY_OBJECT; const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; if (typeof document !== "undefined") { @@ -528,158 +776,9510 @@ function evaluateRenderProp(element, render, props, state) { mergedProps.ref = props.ref; let newElement = render; if (newElement?.$$typeof === REACT_LAZY_TYPE) { - const children = React5.Children.toArray(render); + const children = React8.Children.toArray(render); newElement = children[0]; } if (true) { - if (!/* @__PURE__ */ React5.isValidElement(newElement)) { + if (!/* @__PURE__ */ React8.isValidElement(newElement)) { throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join("\n")); } } - return /* @__PURE__ */ React5.cloneElement(newElement, mergedProps); + return /* @__PURE__ */ React8.cloneElement(newElement, mergedProps); } if (element) { if (typeof element === "string") { return renderTag(element, props); } } - throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8)); + throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8)); +} +function warnIfRenderPropLooksLikeComponent(renderFn) { + const functionName = renderFn.name; + if (functionName.length === 0) { + return; + } + if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { + return; + } + if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { + return; + } + warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); +} +function renderTag(Tag, props) { + if (Tag === "button") { + return /* @__PURE__ */ (0, import_react.createElement)("button", { + type: "button", + ...props, + key: props.key + }); + } + if (Tag === "img") { + return /* @__PURE__ */ (0, import_react.createElement)("img", { + alt: "", + ...props, + key: props.key + }); + } + return /* @__PURE__ */ React8.createElement(Tag, props); +} + +// node_modules/@base-ui/react/esm/internals/reason-parts.js +var reason_parts_exports = {}; +__export(reason_parts_exports, { + cancelOpen: () => cancelOpen, + chipRemovePress: () => chipRemovePress, + clearPress: () => clearPress, + closePress: () => closePress, + closeWatcher: () => closeWatcher, + decrementPress: () => decrementPress, + disabled: () => disabled, + drag: () => drag, + escapeKey: () => escapeKey, + focusOut: () => focusOut, + imperativeAction: () => imperativeAction, + incrementPress: () => incrementPress, + inputBlur: () => inputBlur, + inputChange: () => inputChange, + inputClear: () => inputClear, + inputPaste: () => inputPaste, + inputPress: () => inputPress, + itemPress: () => itemPress, + keyboard: () => keyboard, + linkPress: () => linkPress, + listNavigation: () => listNavigation, + none: () => none, + outsidePress: () => outsidePress, + pointer: () => pointer, + scrub: () => scrub, + siblingOpen: () => siblingOpen, + swipe: () => swipe, + trackPress: () => trackPress, + triggerFocus: () => triggerFocus, + triggerHover: () => triggerHover, + triggerPress: () => triggerPress, + wheel: () => wheel, + windowResize: () => windowResize +}); +var none = "none"; +var triggerPress = "trigger-press"; +var triggerHover = "trigger-hover"; +var triggerFocus = "trigger-focus"; +var outsidePress = "outside-press"; +var itemPress = "item-press"; +var closePress = "close-press"; +var linkPress = "link-press"; +var clearPress = "clear-press"; +var chipRemovePress = "chip-remove-press"; +var trackPress = "track-press"; +var incrementPress = "increment-press"; +var decrementPress = "decrement-press"; +var inputChange = "input-change"; +var inputClear = "input-clear"; +var inputBlur = "input-blur"; +var inputPaste = "input-paste"; +var inputPress = "input-press"; +var focusOut = "focus-out"; +var escapeKey = "escape-key"; +var closeWatcher = "close-watcher"; +var listNavigation = "list-navigation"; +var keyboard = "keyboard"; +var pointer = "pointer"; +var drag = "drag"; +var wheel = "wheel"; +var scrub = "scrub"; +var cancelOpen = "cancel-open"; +var siblingOpen = "sibling-open"; +var disabled = "disabled"; +var imperativeAction = "imperative-action"; +var swipe = "swipe"; +var windowResize = "window-resize"; + +// node_modules/@base-ui/react/esm/internals/createBaseUIEventDetails.js +function createChangeEventDetails(reason, event, trigger, customProperties) { + let canceled = false; + let allowPropagation = false; + const custom = customProperties ?? EMPTY_OBJECT; + const details = { + reason, + event: event ?? new Event("base-ui"), + cancel() { + canceled = true; + }, + allowPropagation() { + allowPropagation = true; + }, + get isCanceled() { + return canceled; + }, + get isPropagationAllowed() { + return allowPropagation; + }, + trigger, + ...custom + }; + return details; +} + +// node_modules/@base-ui/utils/esm/useId.js +var React10 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/safeReact.js +var React9 = __toESM(require_react(), 1); +var SafeReact = { + ...React9 +}; + +// node_modules/@base-ui/utils/esm/useId.js +var globalId = 0; +function useGlobalId(idOverride, prefix = "mui") { + const [defaultId, setDefaultId] = React10.useState(idOverride); + const id = idOverride || defaultId; + React10.useEffect(() => { + if (defaultId == null) { + globalId += 1; + setDefaultId(`${prefix}-${globalId}`); + } + }, [defaultId, prefix]); + return id; +} +var maybeReactUseId = SafeReact.useId; +function useId(idOverride, prefix) { + if (maybeReactUseId !== void 0) { + const reactId = maybeReactUseId(); + return idOverride ?? (prefix ? `${prefix}-${reactId}` : reactId); + } + return useGlobalId(idOverride, prefix); +} + +// node_modules/@base-ui/react/esm/internals/useBaseUiId.js +function useBaseUiId(idOverride) { + return useId(idOverride, "base-ui"); +} + +// node_modules/@base-ui/react/esm/internals/useAnimationsFinished.js +var ReactDOM = __toESM(require_react_dom(), 1); + +// node_modules/@base-ui/utils/esm/useOnMount.js +var React11 = __toESM(require_react(), 1); +var EMPTY = []; +function useOnMount(fn) { + React11.useEffect(fn, EMPTY); +} + +// node_modules/@base-ui/utils/esm/useAnimationFrame.js +var EMPTY2 = null; +var LAST_RAF = globalThis.requestAnimationFrame; +var Scheduler = class { + /* This implementation uses an array as a backing data-structure for frame callbacks. + * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it + * never calls the native `cancelAnimationFrame` if there are no frames left. This can + * be much more efficient if there is a call pattern that alterns as + * "request-cancel-request-cancel-…". + * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation + * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ + callbacks = []; + callbacksCount = 0; + nextId = 1; + startId = 1; + isScheduled = false; + tick = (timestamp) => { + this.isScheduled = false; + const currentCallbacks = this.callbacks; + const currentCallbacksCount = this.callbacksCount; + this.callbacks = []; + this.callbacksCount = 0; + this.startId = this.nextId; + if (currentCallbacksCount > 0) { + for (let i = 0; i < currentCallbacks.length; i += 1) { + currentCallbacks[i]?.(timestamp); + } + } + }; + request(fn) { + const id = this.nextId; + this.nextId += 1; + this.callbacks.push(fn); + this.callbacksCount += 1; + const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); + if (!this.isScheduled || didRAFChange) { + requestAnimationFrame(this.tick); + this.isScheduled = true; + } + return id; + } + cancel(id) { + const index2 = id - this.startId; + if (index2 < 0 || index2 >= this.callbacks.length) { + return; + } + this.callbacks[index2] = null; + this.callbacksCount -= 1; + } +}; +var scheduler = new Scheduler(); +var AnimationFrame = class _AnimationFrame { + static create() { + return new _AnimationFrame(); + } + static request(fn) { + return scheduler.request(fn); + } + static cancel(id) { + return scheduler.cancel(id); + } + currentId = EMPTY2; + /** + * Executes `fn` after `delay`, clearing any previously scheduled call. + */ + request(fn) { + this.cancel(); + this.currentId = scheduler.request(() => { + this.currentId = EMPTY2; + fn(); + }); + } + cancel = () => { + if (this.currentId !== EMPTY2) { + scheduler.cancel(this.currentId); + this.currentId = EMPTY2; + } + }; + disposeEffect = () => { + return this.cancel; + }; +}; +function useAnimationFrame() { + const timeout = useRefWithInit(AnimationFrame.create).current; + useOnMount(timeout.disposeEffect); + return timeout; +} + +// node_modules/@base-ui/react/esm/utils/resolveRef.js +function resolveRef(maybeRef) { + if (maybeRef == null) { + return maybeRef; + } + return "current" in maybeRef ? maybeRef.current : maybeRef; +} + +// node_modules/@base-ui/react/esm/internals/stateAttributesMapping.js +var TransitionStatusDataAttributes = /* @__PURE__ */ (function(TransitionStatusDataAttributes2) { + TransitionStatusDataAttributes2["startingStyle"] = "data-starting-style"; + TransitionStatusDataAttributes2["endingStyle"] = "data-ending-style"; + return TransitionStatusDataAttributes2; +})({}); +var STARTING_HOOK = { + [TransitionStatusDataAttributes.startingStyle]: "" +}; +var ENDING_HOOK = { + [TransitionStatusDataAttributes.endingStyle]: "" +}; +var transitionStatusMapping = { + transitionStatus(value) { + if (value === "starting") { + return STARTING_HOOK; + } + if (value === "ending") { + return ENDING_HOOK; + } + return null; + } +}; + +// node_modules/@base-ui/react/esm/internals/useAnimationsFinished.js +function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, treatAbortedAsFinished = true) { + const frame = useAnimationFrame(); + return useStableCallback((fnToExecute, signal = null) => { + frame.cancel(); + const element = resolveRef(elementOrRef); + if (element == null) { + return; + } + const resolvedElement = element; + const done = () => { + ReactDOM.flushSync(fnToExecute); + }; + if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { + fnToExecute(); + return; + } + function exec() { + Promise.all(resolvedElement.getAnimations().map((animation) => animation.finished)).then(() => { + if (!signal?.aborted) { + done(); + } + }).catch(() => { + if (treatAbortedAsFinished) { + if (!signal?.aborted) { + done(); + } + return; + } + const currentAnimations = resolvedElement.getAnimations(); + if (!signal?.aborted && currentAnimations.length > 0 && currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { + exec(); + } + }); + } + if (waitForStartingStyleRemoved) { + const startingStyleAttribute = TransitionStatusDataAttributes.startingStyle; + if (!resolvedElement.hasAttribute(startingStyleAttribute)) { + frame.request(exec); + return; + } + const attributeObserver = new MutationObserver(() => { + if (!resolvedElement.hasAttribute(startingStyleAttribute)) { + attributeObserver.disconnect(); + exec(); + } + }); + attributeObserver.observe(resolvedElement, { + attributes: true, + attributeFilter: [startingStyleAttribute] + }); + signal?.addEventListener("abort", () => attributeObserver.disconnect(), { + once: true + }); + return; + } + frame.request(exec); + }); +} + +// node_modules/@base-ui/react/esm/internals/useTransitionStatus.js +var React12 = __toESM(require_react(), 1); +function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) { + const [transitionStatus, setTransitionStatus] = React12.useState(open && enableIdleState ? "idle" : void 0); + const [mounted, setMounted] = React12.useState(open); + if (open && !mounted) { + setMounted(true); + setTransitionStatus("starting"); + } + if (!open && mounted && transitionStatus !== "ending" && !deferEndingState) { + setTransitionStatus("ending"); + } + if (!open && !mounted && transitionStatus === "ending") { + setTransitionStatus(void 0); + } + useIsoLayoutEffect(() => { + if (!open && mounted && transitionStatus !== "ending" && deferEndingState) { + const frame = AnimationFrame.request(() => { + setTransitionStatus("ending"); + }); + return () => { + AnimationFrame.cancel(frame); + }; + } + return void 0; + }, [open, mounted, transitionStatus, deferEndingState]); + useIsoLayoutEffect(() => { + if (!open || enableIdleState) { + return void 0; + } + const frame = AnimationFrame.request(() => { + setTransitionStatus(void 0); + }); + return () => { + AnimationFrame.cancel(frame); + }; + }, [enableIdleState, open]); + useIsoLayoutEffect(() => { + if (!open || !enableIdleState) { + return void 0; + } + if (open && mounted && transitionStatus !== "idle") { + setTransitionStatus("starting"); + } + const frame = AnimationFrame.request(() => { + setTransitionStatus("idle"); + }); + return () => { + AnimationFrame.cancel(frame); + }; + }, [enableIdleState, open, mounted, transitionStatus]); + return { + mounted, + setMounted, + transitionStatus + }; +} + +// node_modules/@base-ui/react/esm/internals/use-button/useButton.js +var React15 = __toESM(require_react(), 1); + +// node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +function hasWindow() { + return typeof window !== "undefined"; +} +function getNodeName(node) { + if (isNode(node)) { + return (node.nodeName || "").toLowerCase(); + } + return "#document"; +} +function getWindow(node) { + var _node$ownerDocument; + return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; +} +function getDocumentElement(node) { + var _ref; + return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; +} +function isNode(value) { + if (!hasWindow()) { + return false; + } + return value instanceof Node || value instanceof getWindow(value).Node; +} +function isElement(value) { + if (!hasWindow()) { + return false; + } + return value instanceof Element || value instanceof getWindow(value).Element; +} +function isHTMLElement(value) { + if (!hasWindow()) { + return false; + } + return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; +} +function isShadowRoot(value) { + if (!hasWindow() || typeof ShadowRoot === "undefined") { + return false; + } + return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; +} +function isOverflowElement(element) { + const { + overflow, + overflowX, + overflowY, + display + } = getComputedStyle2(element); + return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; +} +function isTableElement(element) { + return /^(table|td|th)$/.test(getNodeName(element)); +} +function isTopLayer(element) { + try { + if (element.matches(":popover-open")) { + return true; + } + } catch (_e) { + } + try { + return element.matches(":modal"); + } catch (_e) { + return false; + } +} +var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; +var containRe = /paint|layout|strict|content/; +var isNotNone = (value) => !!value && value !== "none"; +var isWebKitValue; +function isContainingBlock(elementOrCss) { + const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; + return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || ""); +} +function getContainingBlock(element) { + let currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { + if (isContainingBlock(currentNode)) { + return currentNode; + } else if (isTopLayer(currentNode)) { + return null; + } + currentNode = getParentNode(currentNode); + } + return null; +} +function isWebKit() { + if (isWebKitValue == null) { + isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); + } + return isWebKitValue; +} +function isLastTraversableNode(node) { + return /^(html|body|#document)$/.test(getNodeName(node)); +} +function getComputedStyle2(element) { + return getWindow(element).getComputedStyle(element); +} +function getNodeScroll(element) { + if (isElement(element)) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + return { + scrollLeft: element.scrollX, + scrollTop: element.scrollY + }; +} +function getParentNode(node) { + if (getNodeName(node) === "html") { + return node; + } + const result = ( + // Step into the shadow DOM of the parent of a slotted node. + node.assignedSlot || // DOM Element detected. + node.parentNode || // ShadowRoot detected. + isShadowRoot(node) && node.host || // Fallback. + getDocumentElement(node) + ); + return isShadowRoot(result) ? result.host : result; +} +function getNearestOverflowAncestor(node) { + const parentNode = getParentNode(node); + if (isLastTraversableNode(parentNode)) { + return node.ownerDocument ? node.ownerDocument.body : node.body; + } + if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { + return parentNode; + } + return getNearestOverflowAncestor(parentNode); +} +function getOverflowAncestors(node, list, traverseIframes) { + var _node$ownerDocument2; + if (list === void 0) { + list = []; + } + if (traverseIframes === void 0) { + traverseIframes = true; + } + const scrollableAncestor = getNearestOverflowAncestor(node); + const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); + const win = getWindow(scrollableAncestor); + if (isBody) { + const frameElement = getFrameElement(win); + return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); + } else { + return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); + } +} +function getFrameElement(win) { + return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; +} + +// node_modules/@base-ui/react/esm/internals/composite/root/CompositeRootContext.js +var React13 = __toESM(require_react(), 1); +var CompositeRootContext = /* @__PURE__ */ React13.createContext(void 0); +if (true) CompositeRootContext.displayName = "CompositeRootContext"; +function useCompositeRootContext(optional = false) { + const context = React13.useContext(CompositeRootContext); + if (context === void 0 && !optional) { + throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); + } + return context; +} + +// node_modules/@base-ui/react/esm/utils/useFocusableWhenDisabled.js +var React14 = __toESM(require_react(), 1); +function useFocusableWhenDisabled(parameters) { + const { + focusableWhenDisabled, + disabled: disabled2, + composite = false, + tabIndex: tabIndexProp = 0, + isNativeButton + } = parameters; + const isFocusableComposite = composite && focusableWhenDisabled !== false; + const isNonFocusableComposite = composite && focusableWhenDisabled === false; + const props = React14.useMemo(() => { + const additionalProps = { + // allow Tabbing away from focusableWhenDisabled elements + onKeyDown(event) { + if (disabled2 && focusableWhenDisabled && event.key !== "Tab") { + event.preventDefault(); + } + } + }; + if (!composite) { + additionalProps.tabIndex = tabIndexProp; + if (!isNativeButton && disabled2) { + additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1; + } + } + if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) { + additionalProps["aria-disabled"] = disabled2; + } + if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) { + additionalProps.disabled = disabled2; + } + return additionalProps; + }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]); + return { + props + }; +} + +// node_modules/@base-ui/react/esm/internals/use-button/useButton.js +function useButton(parameters = {}) { + const { + disabled: disabled2 = false, + focusableWhenDisabled, + tabIndex = 0, + native: isNativeButton = true, + composite: compositeProp + } = parameters; + const elementRef = React15.useRef(null); + const compositeRootContext = useCompositeRootContext(true); + const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; + const { + props: focusableWhenDisabledProps + } = useFocusableWhenDisabled({ + focusableWhenDisabled, + disabled: disabled2, + composite: isCompositeItem, + tabIndex, + isNativeButton + }); + if (true) { + React15.useEffect(() => { + if (!elementRef.current) { + return; + } + const isButtonTag = isButtonElement(elementRef.current); + if (isNativeButton) { + if (!isButtonTag) { + const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; + const message = "A component that acts as a button expected a native <button> because the `nativeButton` prop is true. Rendering a non-<button> removes native button semantics, which can impact forms and accessibility. Use a real <button> in the `render` prop, or set `nativeButton` to `false`."; + error(`${message}${ownerStackMessage}`); + } + } else if (isButtonTag) { + const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; + const message = "A component that acts as a button expected a non-<button> because the `nativeButton` prop is false. Rendering a <button> keeps native behavior while Base UI applies non-native attributes and handlers, which can add unintended extra attributes (such as `role` or `aria-disabled`). Use a non-<button> in the `render` prop, or set `nativeButton` to `true`."; + error(`${message}${ownerStackMessage}`); + } + }, [isNativeButton]); + } + const updateDisabled = React15.useCallback(() => { + const element = elementRef.current; + if (!isButtonElement(element)) { + return; + } + if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) { + element.disabled = false; + } + }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); + useIsoLayoutEffect(updateDisabled, [updateDisabled]); + const getButtonProps = React15.useCallback((externalProps = {}) => { + const { + onClick: externalOnClick, + onMouseDown: externalOnMouseDown, + onKeyUp: externalOnKeyUp, + onKeyDown: externalOnKeyDown, + onPointerDown: externalOnPointerDown, + ...otherExternalProps + } = externalProps; + const type = isNativeButton ? "button" : void 0; + return mergeProps({ + type, + onClick(event) { + if (disabled2) { + event.preventDefault(); + return; + } + externalOnClick?.(event); + }, + onMouseDown(event) { + if (!disabled2) { + externalOnMouseDown?.(event); + } + }, + onKeyDown(event) { + if (disabled2) { + return; + } + makeEventPreventable(event); + externalOnKeyDown?.(event); + if (event.baseUIHandlerPrevented) { + return; + } + const isCurrentTarget = event.target === event.currentTarget; + const currentTarget = event.currentTarget; + const isButton = isButtonElement(currentTarget); + const isLink = !isNativeButton && isValidLinkElement(currentTarget); + const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink); + const isEnterKey = event.key === "Enter"; + const isSpaceKey = event.key === " "; + const role = currentTarget.getAttribute("role"); + const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell"; + if (isCurrentTarget && isCompositeItem && isSpaceKey) { + if (event.defaultPrevented && isTextNavigationRole) { + return; + } + event.preventDefault(); + if (isLink || isNativeButton && isButton) { + currentTarget.click(); + event.preventBaseUIHandler(); + } else if (shouldClick) { + externalOnClick?.(event); + event.preventBaseUIHandler(); + } + return; + } + if (shouldClick) { + if (!isNativeButton && (isSpaceKey || isEnterKey)) { + event.preventDefault(); + } + if (!isNativeButton && isEnterKey) { + externalOnClick?.(event); + } + } + }, + onKeyUp(event) { + if (disabled2) { + return; + } + makeEventPreventable(event); + externalOnKeyUp?.(event); + if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") { + event.preventDefault(); + return; + } + if (event.baseUIHandlerPrevented) { + return; + } + if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && event.key === " ") { + externalOnClick?.(event); + } + }, + onPointerDown(event) { + if (disabled2) { + event.preventDefault(); + return; + } + externalOnPointerDown?.(event); + } + }, !isNativeButton ? { + role: "button" + } : void 0, focusableWhenDisabledProps, otherExternalProps); + }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); + const buttonRef = useStableCallback((element) => { + elementRef.current = element; + updateDisabled(); + }); + return { + getButtonProps, + buttonRef + }; +} +function isButtonElement(elem) { + return isHTMLElement(elem) && elem.tagName === "BUTTON"; +} +function isValidLinkElement(elem) { + return Boolean(elem?.tagName === "A" && elem?.href); +} + +// node_modules/@base-ui/utils/esm/detectBrowser.js +var hasNavigator = typeof navigator !== "undefined"; +var nav = getNavigatorData(); +var platform = getPlatform(); +var userAgent = getUserAgent(); +var isWebKit2 = typeof CSS === "undefined" || !CSS.supports ? false : CSS.supports("-webkit-backdrop-filter:none"); +var isIOS = ( + // iPads can claim to be MacIntel + nav.platform === "MacIntel" && nav.maxTouchPoints > 1 ? true : /iP(hone|ad|od)|iOS/.test(nav.platform) +); +var isFirefox = hasNavigator && /firefox/i.test(userAgent); +var isSafari = hasNavigator && /apple/i.test(navigator.vendor); +var isEdge = hasNavigator && /Edg/i.test(userAgent); +var isAndroid = hasNavigator && /android/i.test(platform) || /android/i.test(userAgent); +var isMac = hasNavigator && platform.toLowerCase().startsWith("mac") && !navigator.maxTouchPoints; +var isJSDOM = userAgent.includes("jsdom/"); +function getNavigatorData() { + if (!hasNavigator) { + return { + platform: "", + maxTouchPoints: -1 + }; + } + const uaData = navigator.userAgentData; + if (uaData?.platform) { + return { + platform: uaData.platform, + maxTouchPoints: navigator.maxTouchPoints + }; + } + return { + platform: navigator.platform ?? "", + maxTouchPoints: navigator.maxTouchPoints ?? -1 + }; +} +function getUserAgent() { + if (!hasNavigator) { + return ""; + } + const uaData = navigator.userAgentData; + if (uaData && Array.isArray(uaData.brands)) { + return uaData.brands.map(({ + brand, + version: version2 + }) => `${brand}/${version2}`).join(" "); + } + return navigator.userAgent; +} +function getPlatform() { + if (!hasNavigator) { + return ""; + } + const uaData = navigator.userAgentData; + if (uaData?.platform) { + return uaData.platform; + } + return navigator.platform ?? ""; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/constants.js +var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; +var ACTIVE_KEY = "active"; +var SELECTED_KEY = "selected"; +var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; + +// node_modules/@base-ui/react/esm/internals/shadowDom.js +function activeElement(doc) { + let element = doc.activeElement; + while (element?.shadowRoot?.activeElement != null) { + element = element.shadowRoot.activeElement; + } + return element; +} +function contains(parent, child) { + if (!parent || !child) { + return false; + } + const rootNode = child.getRootNode?.(); + if (parent.contains(child)) { + return true; + } + if (rootNode && isShadowRoot(rootNode)) { + let next = child; + while (next) { + if (parent === next) { + return true; + } + next = next.parentNode || next.host; + } + } + return false; +} +function getTarget(event) { + if ("composedPath" in event) { + return event.composedPath()[0]; + } + return event.target; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/element.js +function isTargetInsideEnabledTrigger(target, triggerElements) { + if (!isElement(target)) { + return false; + } + const targetElement = target; + if (triggerElements.hasElement(targetElement)) { + return !targetElement.hasAttribute("data-trigger-disabled"); + } + for (const [, trigger] of triggerElements.entries()) { + if (contains(trigger, targetElement)) { + return !trigger.hasAttribute("data-trigger-disabled"); + } + } + return false; +} +function isEventTargetWithin(event, node) { + if (node == null) { + return false; + } + if ("composedPath" in event) { + return event.composedPath().includes(node); + } + const eventAgain = event; + return eventAgain.target != null && node.contains(eventAgain.target); +} +function isRootElement(element) { + return element.matches("html,body"); +} +function isTypeableElement(element) { + return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); +} +function isInteractiveElement(element) { + return element?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${TYPEABLE_SELECTOR}`) != null; +} +function matchesFocusVisible(element) { + if (!element || isJSDOM) { + return true; + } + try { + return element.matches(":focus-visible"); + } catch (_e) { + return true; + } +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/nodes.js +function getNodeChildren(nodes, id, onlyOpenChildren = true) { + const directChildren = nodes.filter((node) => node.parentId === id); + return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/event.js +function isReactEvent(event) { + return "nativeEvent" in event; +} +function isMouseLikePointerType(pointerType, strict) { + const values = ["mouse", "pen"]; + if (!strict) { + values.push("", void 0); + } + return values.includes(pointerType); +} +function isClickLikeEvent(event) { + const type = event.type; + return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; +} + +// node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +var sides = ["top", "right", "bottom", "left"]; +var min = Math.min; +var max = Math.max; +var round = Math.round; +var floor = Math.floor; +var createCoords = (v) => ({ + x: v, + y: v +}); +var oppositeSideMap = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" +}; +function clamp(start, value, end) { + return max(start, min(value, end)); +} +function evaluate(value, param) { + return typeof value === "function" ? value(param) : value; +} +function getSide(placement) { + return placement.split("-")[0]; +} +function getAlignment(placement) { + return placement.split("-")[1]; +} +function getOppositeAxis(axis) { + return axis === "x" ? "y" : "x"; +} +function getAxisLength(axis) { + return axis === "y" ? "height" : "width"; +} +function getSideAxis(placement) { + const firstChar = placement[0]; + return firstChar === "t" || firstChar === "b" ? "y" : "x"; +} +function getAlignmentAxis(placement) { + return getOppositeAxis(getSideAxis(placement)); +} +function getAlignmentSides(placement, rects, rtl) { + if (rtl === void 0) { + rtl = false; + } + const alignment = getAlignment(placement); + const alignmentAxis = getAlignmentAxis(placement); + const length = getAxisLength(alignmentAxis); + let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; + if (rects.reference[length] > rects.floating[length]) { + mainAlignmentSide = getOppositePlacement(mainAlignmentSide); + } + return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; +} +function getExpandedPlacements(placement) { + const oppositePlacement = getOppositePlacement(placement); + return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; +} +function getOppositeAlignmentPlacement(placement) { + return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); +} +var lrPlacement = ["left", "right"]; +var rlPlacement = ["right", "left"]; +var tbPlacement = ["top", "bottom"]; +var btPlacement = ["bottom", "top"]; +function getSideList(side, isStart, rtl) { + switch (side) { + case "top": + case "bottom": + if (rtl) return isStart ? rlPlacement : lrPlacement; + return isStart ? lrPlacement : rlPlacement; + case "left": + case "right": + return isStart ? tbPlacement : btPlacement; + default: + return []; + } +} +function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { + const alignment = getAlignment(placement); + let list = getSideList(getSide(placement), direction === "start", rtl); + if (alignment) { + list = list.map((side) => side + "-" + alignment); + if (flipAlignment) { + list = list.concat(list.map(getOppositeAlignmentPlacement)); + } + } + return list; +} +function getOppositePlacement(placement) { + const side = getSide(placement); + return oppositeSideMap[side] + placement.slice(side.length); +} +function expandPaddingObject(padding) { + return { + top: 0, + right: 0, + bottom: 0, + left: 0, + ...padding + }; +} +function getPaddingObject(padding) { + return typeof padding !== "number" ? expandPaddingObject(padding) : { + top: padding, + right: padding, + bottom: padding, + left: padding + }; +} +function rectToClientRect(rect) { + const { + x, + y, + width, + height + } = rect; + return { + width, + height, + top: y, + left: x, + right: x + width, + bottom: y + height, + x, + y + }; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/composite.js +function isHiddenByStyles(styles) { + return styles.visibility === "hidden" || styles.visibility === "collapse"; +} +function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { + if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { + return false; + } + if (typeof element.checkVisibility === "function") { + return element.checkVisibility(); + } + return styles.display !== "none" && styles.display !== "contents"; +} + +// node_modules/@base-ui/utils/esm/owner.js +function ownerDocument(node) { + return node?.ownerDocument || document; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/tabbable.js +var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; +function getParentElement(element) { + const assignedSlot = element.assignedSlot; + if (assignedSlot) { + return assignedSlot; + } + if (element.parentElement) { + return element.parentElement; + } + const rootNode = element.getRootNode(); + return isShadowRoot(rootNode) ? rootNode.host : null; +} +function getDetailsSummary(details) { + for (const child of Array.from(details.children)) { + if (getNodeName(child) === "summary") { + return child; + } + } + return null; +} +function isWithinOpenDetailsSummary(element, details) { + const summary = getDetailsSummary(details); + return !!summary && (element === summary || contains(summary, element)); +} +function isFocusableCandidate(element) { + const nodeName = element ? getNodeName(element) : ""; + return element != null && element.matches(CANDIDATE_SELECTOR) && (nodeName !== "summary" || element.parentElement != null && getNodeName(element.parentElement) === "details" && getDetailsSummary(element.parentElement) === element) && (nodeName !== "details" || getDetailsSummary(element) == null) && (nodeName !== "input" || element.type !== "hidden"); +} +function isFocusableElement(element) { + if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { + return false; + } + for (let current = element; current; current = getParentElement(current)) { + const isAncestor = current !== element; + const isSlot = getNodeName(current) === "slot"; + if (current.hasAttribute("inert")) { + return false; + } + if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { + return false; + } + } + return true; +} +function isVisibleInTabbableTree(element, isAncestor) { + const styles = getComputedStyle2(element); + if (!isAncestor) { + return isElementVisible(element, styles); + } + return styles.display !== "none"; +} +function getTabIndex(element) { + const tabIndex = element.tabIndex; + if (tabIndex < 0) { + const nodeName = getNodeName(element); + if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { + return 0; + } + } + return tabIndex; +} +function getNamedRadioInput(element) { + if (getNodeName(element) !== "input") { + return null; + } + const input = element; + return input.type === "radio" && input.name !== "" ? input : null; +} +function isTabbableRadio(element, candidates) { + const input = getNamedRadioInput(element); + if (!input) { + return true; + } + const checkedRadio = candidates.find((candidate) => { + const radio = getNamedRadioInput(candidate); + return radio?.name === input.name && radio.form === input.form && radio.checked; + }); + if (checkedRadio) { + return checkedRadio === input; + } + return candidates.find((candidate) => { + const radio = getNamedRadioInput(candidate); + return radio?.name === input.name && radio.form === input.form; + }) === input; +} +function getComposedChildren(container) { + if (isHTMLElement(container) && getNodeName(container) === "slot") { + const assignedElements = container.assignedElements({ + flatten: true + }); + if (assignedElements.length > 0) { + return assignedElements; + } + } + if (isHTMLElement(container) && container.shadowRoot) { + return Array.from(container.shadowRoot.children); + } + return Array.from(container.children); +} +function appendCandidates(container, list) { + getComposedChildren(container).forEach((child) => { + if (isFocusableCandidate(child)) { + list.push(child); + } + appendCandidates(child, list); + }); +} +function appendMatchingElements(container, selector, list) { + getComposedChildren(container).forEach((child) => { + if (isHTMLElement(child) && child.matches(selector)) { + list.push(child); + } + appendMatchingElements(child, selector, list); + }); +} +function focusable(container) { + const candidates = []; + appendCandidates(container, candidates); + return candidates.filter(isFocusableElement); +} +function tabbable(container) { + const candidates = focusable(container); + return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); +} +function getTabbableIn(container, dir) { + const list = tabbable(container); + const len = list.length; + if (len === 0) { + return void 0; + } + const active = activeElement(ownerDocument(container)); + const index2 = list.indexOf(active); + const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir; + return list[nextIndex]; +} +function getNextTabbable(referenceElement) { + return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; +} +function getPreviousTabbable(referenceElement) { + return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; +} +function isOutsideEvent(event, container) { + const containerElement = container || event.currentTarget; + const relatedTarget = event.relatedTarget; + return !relatedTarget || !contains(containerElement, relatedTarget); +} +function disableFocusInside(container) { + const tabbableElements = tabbable(container); + tabbableElements.forEach((element) => { + element.dataset.tabindex = element.getAttribute("tabindex") || ""; + element.setAttribute("tabindex", "-1"); + }); +} +function enableFocusInside(container) { + const elements = []; + appendMatchingElements(container, "[data-tabindex]", elements); + elements.forEach((element) => { + const tabindex = element.dataset.tabindex; + delete element.dataset.tabindex; + if (tabindex) { + element.setAttribute("tabindex", tabindex); + } else { + element.removeAttribute("tabindex"); + } + }); +} + +// node_modules/@base-ui/utils/esm/addEventListener.js +function addEventListener(target, type, listener, options) { + target.addEventListener(type, listener, options); + return () => { + target.removeEventListener(type, listener, options); + }; +} + +// node_modules/@base-ui/react/esm/internals/useOpenChangeComplete.js +var React16 = __toESM(require_react(), 1); +function useOpenChangeComplete(parameters) { + const { + enabled = true, + open, + ref, + onComplete: onCompleteParam + } = parameters; + const onComplete = useStableCallback(onCompleteParam); + const runOnceAnimationsFinish = useAnimationsFinished(ref, open, false); + React16.useEffect(() => { + if (!enabled) { + return void 0; + } + const abortController = new AbortController(); + runOnceAnimationsFinish(onComplete, abortController.signal); + return () => { + abortController.abort(); + }; + }, [enabled, open, onComplete, runOnceAnimationsFinish]); +} + +// node_modules/@base-ui/utils/esm/useOnFirstRender.js +var React17 = __toESM(require_react(), 1); +function useOnFirstRender(fn) { + const ref = React17.useRef(true); + if (ref.current) { + ref.current = false; + fn(); + } +} + +// node_modules/@base-ui/utils/esm/useTimeout.js +var EMPTY3 = 0; +var Timeout = class _Timeout { + static create() { + return new _Timeout(); + } + currentId = EMPTY3; + /** + * Executes `fn` after `delay`, clearing any previously scheduled call. + */ + start(delay, fn) { + this.clear(); + this.currentId = setTimeout(() => { + this.currentId = EMPTY3; + fn(); + }, delay); + } + isStarted() { + return this.currentId !== EMPTY3; + } + clear = () => { + if (this.currentId !== EMPTY3) { + clearTimeout(this.currentId); + this.currentId = EMPTY3; + } + }; + disposeEffect = () => { + return this.clear; + }; +}; +function useTimeout() { + const timeout = useRefWithInit(Timeout.create).current; + useOnMount(timeout.disposeEffect); + return timeout; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingDelayGroup.js +var React18 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverShared.js +function resolveValue(value, pointerType) { + if (pointerType != null && !isMouseLikePointerType(pointerType)) { + return 0; + } + if (typeof value === "function") { + return value(); + } + return value; +} +function getDelay(value, prop, pointerType) { + const result = resolveValue(value, pointerType); + if (typeof result === "number") { + return result; + } + return result?.[prop]; +} +function getRestMs(value) { + if (typeof value === "function") { + return value(); + } + return value; +} +function isClickLikeOpenEvent(openEventType, interactedInside) { + return interactedInside || openEventType === "click" || openEventType === "mousedown"; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingDelayGroup.js +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); +var FloatingDelayGroupContext = /* @__PURE__ */ React18.createContext({ + hasProvider: false, + timeoutMs: 0, + delayRef: { + current: 0 + }, + initialDelayRef: { + current: 0 + }, + timeout: new Timeout(), + currentIdRef: { + current: null + }, + currentContextRef: { + current: null + } +}); +if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext"; +function FloatingDelayGroup(props) { + const { + children, + delay, + timeoutMs = 0 + } = props; + const delayRef = React18.useRef(delay); + const initialDelayRef = React18.useRef(delay); + const currentIdRef = React18.useRef(null); + const currentContextRef = React18.useRef(null); + const timeout = useTimeout(); + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FloatingDelayGroupContext.Provider, { + value: React18.useMemo(() => ({ + hasProvider: true, + delayRef, + initialDelayRef, + currentIdRef, + timeoutMs, + currentContextRef, + timeout + }), [timeoutMs, timeout]), + children + }); +} +function useDelayGroup(context, options = { + open: false +}) { + const store2 = "rootStore" in context ? context.rootStore : context; + const floatingId = store2.useState("floatingId"); + const { + open + } = options; + const groupContext = React18.useContext(FloatingDelayGroupContext); + const { + currentIdRef, + delayRef, + timeoutMs, + initialDelayRef, + currentContextRef, + hasProvider, + timeout + } = groupContext; + const [isInstantPhase, setIsInstantPhase] = React18.useState(false); + useIsoLayoutEffect(() => { + function unset() { + setIsInstantPhase(false); + currentContextRef.current?.setIsInstantPhase(false); + currentIdRef.current = null; + currentContextRef.current = null; + delayRef.current = initialDelayRef.current; + } + if (!currentIdRef.current) { + return void 0; + } + if (!open && currentIdRef.current === floatingId) { + setIsInstantPhase(false); + if (timeoutMs) { + const closingId = floatingId; + timeout.start(timeoutMs, () => { + if (store2.select("open") || currentIdRef.current && currentIdRef.current !== closingId) { + return; + } + unset(); + }); + return () => { + timeout.clear(); + }; + } + unset(); + } + return void 0; + }, [open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store2]); + useIsoLayoutEffect(() => { + if (!open) { + return; + } + const prevContext = currentContextRef.current; + const prevId = currentIdRef.current; + timeout.clear(); + currentContextRef.current = { + onOpenChange: store2.setOpen, + setIsInstantPhase + }; + currentIdRef.current = floatingId; + delayRef.current = { + open: 0, + close: getDelay(initialDelayRef.current, "close") + }; + if (prevId !== null && prevId !== floatingId) { + setIsInstantPhase(true); + prevContext?.setIsInstantPhase(true); + prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none)); + } else { + setIsInstantPhase(false); + prevContext?.setIsInstantPhase(false); + } + }, [open, floatingId, store2, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout]); + useIsoLayoutEffect(() => { + return () => { + currentContextRef.current = null; + }; + }, [currentContextRef]); + return React18.useMemo(() => ({ + hasProvider, + delayRef, + isInstantPhase + }), [hasProvider, delayRef, isInstantPhase]); +} + +// node_modules/@base-ui/utils/esm/mergeCleanups.js +function mergeCleanups(...cleanups) { + return () => { + for (let i = 0; i < cleanups.length; i += 1) { + const cleanup = cleanups[i]; + if (cleanup) { + cleanup(); + } + } + }; +} + +// node_modules/@base-ui/utils/esm/useValueAsRef.js +function useValueAsRef(value) { + const latest = useRefWithInit(createLatestRef, value).current; + latest.next = value; + useIsoLayoutEffect(latest.effect); + return latest; +} +function createLatestRef(value) { + const latest = { + current: value, + next: value, + effect: () => { + latest.current = latest.next; + } + }; + return latest; +} + +// node_modules/@base-ui/react/esm/utils/FocusGuard.js +var React19 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/visuallyHidden.js +var visuallyHiddenBase = { + clipPath: "inset(50%)", + overflow: "hidden", + whiteSpace: "nowrap", + border: 0, + padding: 0, + width: 1, + height: 1, + margin: -1 +}; +var visuallyHidden = { + ...visuallyHiddenBase, + position: "fixed", + top: 0, + left: 0 +}; +var visuallyHiddenInput = { + ...visuallyHiddenBase, + position: "absolute" +}; + +// node_modules/@base-ui/react/esm/utils/FocusGuard.js +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var FocusGuard = /* @__PURE__ */ React19.forwardRef(function FocusGuard2(props, ref) { + const [role, setRole] = React19.useState(); + useIsoLayoutEffect(() => { + if (isSafari) { + setRole("button"); + } + }, []); + const restProps = { + tabIndex: 0, + // Role is only for VoiceOver + role + }; + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { + ...props, + ref, + style: visuallyHidden, + "aria-hidden": role ? void 0 : true, + ...restProps, + "data-base-ui-focus-guard": "" + }); +}); +if (true) FocusGuard.displayName = "FocusGuard"; + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/createAttribute.js +function createAttribute(name) { + return `data-base-ui-${name}`; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingPortal.js +var React20 = __toESM(require_react(), 1); +var ReactDOM2 = __toESM(require_react_dom(), 1); + +// node_modules/@base-ui/react/esm/internals/constants.js +var DISABLED_TRANSITIONS_STYLE = { + style: { + transition: "none" + } +}; +var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; +var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; +var BASE_UI_SWIPE_IGNORE_SELECTOR = `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; +var LEGACY_SWIPE_IGNORE_SELECTOR = `[${LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; +var POPUP_COLLISION_AVOIDANCE = { + fallbackAxisSide: "end" +}; +var ownerVisuallyHidden = { + clipPath: "inset(50%)", + position: "fixed", + top: 0, + left: 0 +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingPortal.js +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var PortalContext = /* @__PURE__ */ React20.createContext(null); +if (true) PortalContext.displayName = "PortalContext"; +var usePortalContext = () => React20.useContext(PortalContext); +var attr = createAttribute("portal"); +function useFloatingPortalNode(props = {}) { + const { + ref, + container: containerProp, + componentProps = EMPTY_OBJECT, + elementProps + } = props; + const uniqueId = useId(); + const portalContext = usePortalContext(); + const parentPortalNode = portalContext?.portalNode; + const [containerElement, setContainerElement] = React20.useState(null); + const [portalNode, setPortalNode] = React20.useState(null); + const setPortalNodeRef = useStableCallback((node) => { + if (node !== null) { + setPortalNode(node); + } + }); + const containerRef = React20.useRef(null); + useIsoLayoutEffect(() => { + if (containerProp === null) { + if (containerRef.current) { + containerRef.current = null; + setPortalNode(null); + setContainerElement(null); + } + return; + } + if (uniqueId == null) { + return; + } + const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; + if (resolvedContainer == null) { + if (containerRef.current) { + containerRef.current = null; + setPortalNode(null); + setContainerElement(null); + } + return; + } + if (containerRef.current !== resolvedContainer) { + containerRef.current = resolvedContainer; + setPortalNode(null); + setContainerElement(resolvedContainer); + } + }, [containerProp, parentPortalNode, uniqueId]); + const portalElement = useRenderElement("div", componentProps, { + ref: [ref, setPortalNodeRef], + props: [{ + id: uniqueId, + [attr]: "" + }, elementProps] + }); + const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; + return { + portalNode, + portalSubtree + }; +} +var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { + const { + children, + container, + className, + render, + renderGuards, + style, + ...elementProps + } = componentProps; + const { + portalNode, + portalSubtree + } = useFloatingPortalNode({ + container, + ref: forwardedRef, + componentProps, + elementProps + }); + const beforeOutsideRef = React20.useRef(null); + const afterOutsideRef = React20.useRef(null); + const beforeInsideRef = React20.useRef(null); + const afterInsideRef = React20.useRef(null); + const [focusManagerState, setFocusManagerState] = React20.useState(null); + const focusInsideDisabledRef = React20.useRef(false); + const modal = focusManagerState?.modal; + const open = focusManagerState?.open; + const shouldRenderGuards = typeof renderGuards === "boolean" ? renderGuards : !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; + React20.useEffect(() => { + if (!portalNode || modal) { + return void 0; + } + function onFocus(event) { + if (portalNode && event.relatedTarget && isOutsideEvent(event)) { + if (event.type === "focusin") { + if (focusInsideDisabledRef.current) { + enableFocusInside(portalNode); + focusInsideDisabledRef.current = false; + } + } else { + disableFocusInside(portalNode); + focusInsideDisabledRef.current = true; + } + } + } + return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); + }, [portalNode, modal]); + React20.useEffect(() => { + if (!portalNode || open !== false) { + return; + } + enableFocusInside(portalNode); + focusInsideDisabledRef.current = false; + }, [open, portalNode]); + const portalContextValue = React20.useMemo(() => ({ + beforeOutsideRef, + afterOutsideRef, + beforeInsideRef, + afterInsideRef, + portalNode, + setFocusManagerState + }), [portalNode]); + return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(React20.Fragment, { + children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(PortalContext.Provider, { + value: portalContextValue, + children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FocusGuard, { + "data-type": "outside", + ref: beforeOutsideRef, + onFocus: (event) => { + if (isOutsideEvent(event, portalNode)) { + beforeInsideRef.current?.focus(); + } else { + const domReference = focusManagerState ? focusManagerState.domReference : null; + const prevTabbable = getPreviousTabbable(domReference); + prevTabbable?.focus(); + } + } + }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { + "aria-owns": portalNode.id, + style: ownerVisuallyHidden + }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FocusGuard, { + "data-type": "outside", + ref: afterOutsideRef, + onFocus: (event) => { + if (isOutsideEvent(event, portalNode)) { + afterInsideRef.current?.focus(); + } else { + const domReference = focusManagerState ? focusManagerState.domReference : null; + const nextTabbable = getNextTabbable(domReference); + nextTabbable?.focus(); + if (focusManagerState?.closeOnFocusOut) { + focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); + } + } + } + })] + })] + }); +}); +if (true) FloatingPortal.displayName = "FloatingPortal"; + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingTree.js +var React21 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/createEventEmitter.js +function createEventEmitter() { + const map = /* @__PURE__ */ new Map(); + return { + emit(event, data) { + map.get(event)?.forEach((listener) => listener(data)); + }, + on(event, listener) { + if (!map.has(event)) { + map.set(event, /* @__PURE__ */ new Set()); + } + map.get(event).add(listener); + }, + off(event, listener) { + map.get(event)?.delete(listener); + } + }; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingTree.js +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var FloatingNodeContext = /* @__PURE__ */ React21.createContext(null); +if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; +var FloatingTreeContext = /* @__PURE__ */ React21.createContext(null); +if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; +var useFloatingParentNodeId = () => React21.useContext(FloatingNodeContext)?.id || null; +var useFloatingTree = (externalTree) => { + const contextTree = React21.useContext(FloatingTreeContext); + return externalTree ?? contextTree; +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useClientPoint.js +var React22 = __toESM(require_react(), 1); +function createVirtualElement(domElement, data) { + let offsetX = null; + let offsetY = null; + let isAutoUpdateEvent = false; + return { + contextElement: domElement || void 0, + getBoundingClientRect() { + const domRect = domElement?.getBoundingClientRect() || { + width: 0, + height: 0, + x: 0, + y: 0 + }; + const isXAxis = data.axis === "x" || data.axis === "both"; + const isYAxis = data.axis === "y" || data.axis === "both"; + const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch"; + let width = domRect.width; + let height = domRect.height; + let x = domRect.x; + let y = domRect.y; + if (offsetX == null && data.x && isXAxis) { + offsetX = domRect.x - data.x; + } + if (offsetY == null && data.y && isYAxis) { + offsetY = domRect.y - data.y; + } + x -= offsetX || 0; + y -= offsetY || 0; + width = 0; + height = 0; + if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) { + width = data.axis === "y" ? domRect.width : 0; + height = data.axis === "x" ? domRect.height : 0; + x = isXAxis && data.x != null ? data.x : x; + y = isYAxis && data.y != null ? data.y : y; + } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) { + height = data.axis === "x" ? domRect.height : height; + width = data.axis === "y" ? domRect.width : width; + } + isAutoUpdateEvent = true; + return { + width, + height, + x, + y, + top: y, + right: x + width, + bottom: y + height, + left: x + }; + } + }; +} +function isMouseBasedEvent(event) { + return event != null && event.clientX != null; +} +function useClientPoint(context, props = {}) { + const store2 = "rootStore" in context ? context.rootStore : context; + const open = store2.useState("open"); + const floating = store2.useState("floatingElement"); + const domReference = store2.useState("domReferenceElement"); + const dataRef = store2.context.dataRef; + const { + enabled = true, + axis = "both" + } = props; + const initialRef = React22.useRef(false); + const cleanupListenerRef = React22.useRef(null); + const [pointerType, setPointerType] = React22.useState(); + const [reactive, setReactive] = React22.useState([]); + const setReference = useStableCallback((newX, newY, referenceElement) => { + if (initialRef.current) { + return; + } + if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) { + return; + } + store2.set("positionReference", createVirtualElement(referenceElement ?? domReference, { + x: newX, + y: newY, + axis, + dataRef, + pointerType + })); + }); + const handleReferenceEnterOrMove = useStableCallback((event) => { + if (!open) { + setReference(event.clientX, event.clientY, event.currentTarget); + } else if (!cleanupListenerRef.current) { + setReactive([]); + } + }); + const openCheck = isMouseLikePointerType(pointerType) ? floating : open; + const addListener = React22.useCallback(() => { + if (!openCheck || !enabled) { + return void 0; + } + const win = getWindow(floating); + function handleMouseMove(event) { + const target = getTarget(event); + if (!contains(floating, target)) { + setReference(event.clientX, event.clientY); + } else { + cleanupListenerRef.current?.(); + cleanupListenerRef.current = null; + } + } + if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) { + const cleanup = () => { + cleanupListenerRef.current?.(); + cleanupListenerRef.current = null; + }; + cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove); + return cleanup; + } + store2.set("positionReference", domReference); + return void 0; + }, [openCheck, enabled, floating, dataRef, domReference, store2, setReference]); + React22.useEffect(() => { + return addListener(); + }, [addListener, reactive]); + React22.useEffect(() => { + if (enabled && !floating) { + initialRef.current = false; + } + }, [enabled, floating]); + React22.useEffect(() => { + if (!enabled && open) { + initialRef.current = true; + } + }, [enabled, open]); + const reference = React22.useMemo(() => { + function setPointerTypeRef(event) { + setPointerType(event.pointerType); + } + return { + onPointerDown: setPointerTypeRef, + onPointerEnter: setPointerTypeRef, + onMouseMove: handleReferenceEnterOrMove, + onMouseEnter: handleReferenceEnterOrMove + }; + }, [handleReferenceEnterOrMove]); + return React22.useMemo(() => enabled ? { + reference, + trigger: reference + } : {}, [enabled, reference]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useDismiss.js +var React23 = __toESM(require_react(), 1); +var bubbleHandlerKeys = { + intentional: "onClick", + sloppy: "onPointerDown" +}; +function alwaysFalse() { + return false; +} +function normalizeProp(normalizable) { + return { + escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, + outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true + }; +} +function useDismiss(context, props = {}) { + const store2 = "rootStore" in context ? context.rootStore : context; + const open = store2.useState("open"); + const floatingElement = store2.useState("floatingElement"); + const { + dataRef + } = store2.context; + const { + enabled = true, + escapeKey: escapeKey2 = true, + outsidePress: outsidePressProp = true, + outsidePressEvent = "sloppy", + referencePress = alwaysFalse, + referencePressEvent = "sloppy", + bubbles, + externalTree + } = props; + const tree = useFloatingTree(externalTree); + const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); + const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; + const outsidePressEnabled = outsidePress2 !== false; + const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); + const pressStartedInsideRef = React23.useRef(false); + const pressStartPreventedRef = React23.useRef(false); + const suppressNextOutsideClickRef = React23.useRef(false); + const { + escapeKey: escapeKeyBubbles, + outsidePress: outsidePressBubbles + } = normalizeProp(bubbles); + const touchStateRef = React23.useRef(null); + const cancelDismissOnEndTimeout = useTimeout(); + const clearInsideReactTreeTimeout = useTimeout(); + const clearInsideReactTree = useStableCallback(() => { + clearInsideReactTreeTimeout.clear(); + dataRef.current.insideReactTree = false; + }); + const isComposingRef = React23.useRef(false); + const currentPointerTypeRef = React23.useRef(""); + const isReferencePressEnabled = useStableCallback(referencePress); + const closeOnEscapeKeyDown = useStableCallback((event) => { + if (!open || !enabled || !escapeKey2 || event.key !== "Escape") { + return; + } + if (isComposingRef.current) { + return; + } + const nodeId = dataRef.current.floatingContext?.nodeId; + const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; + if (!escapeKeyBubbles) { + if (children.length > 0) { + let shouldDismiss = true; + children.forEach((child) => { + if (child.context?.open && !child.context.dataRef.current.__escapeKeyBubbles) { + shouldDismiss = false; + } + }); + if (!shouldDismiss) { + return; + } + } + } + const native = isReactEvent(event) ? event.nativeEvent : event; + const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); + store2.setOpen(false, eventDetails); + if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { + event.stopPropagation(); + } + }); + const markInsideReactTree = useStableCallback(() => { + dataRef.current.insideReactTree = true; + clearInsideReactTreeTimeout.start(0, clearInsideReactTree); + }); + React23.useEffect(() => { + if (!open || !enabled) { + return void 0; + } + dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; + dataRef.current.__outsidePressBubbles = outsidePressBubbles; + const compositionTimeout = new Timeout(); + const preventedPressSuppressionTimeout = new Timeout(); + function handleCompositionStart() { + compositionTimeout.clear(); + isComposingRef.current = true; + } + function handleCompositionEnd() { + compositionTimeout.start( + // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. + // Only apply to WebKit for the test to remain 0ms. + isWebKit() ? 5 : 0, + () => { + isComposingRef.current = false; + } + ); + } + function suppressImmediateOutsideClickAfterPreventedStart() { + suppressNextOutsideClickRef.current = true; + preventedPressSuppressionTimeout.start(0, () => { + suppressNextOutsideClickRef.current = false; + }); + } + function resetPressStartState() { + pressStartedInsideRef.current = false; + pressStartPreventedRef.current = false; + } + function getOutsidePressEvent() { + const type = currentPointerTypeRef.current; + const computedType = type === "pen" || !type ? "mouse" : type; + const outsidePressEventValue = getOutsidePressEventProp(); + const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; + if (typeof resolved === "string") { + return resolved; + } + return resolved[computedType]; + } + function shouldIgnoreEvent(event) { + const computedOutsidePressEvent = getOutsidePressEvent(); + return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; + } + function isEventWithinFloatingTree(event) { + const nodeId = dataRef.current.floatingContext?.nodeId; + const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); + return isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement")) || targetIsInsideChildren; + } + function closeOnPressOutside(event) { + if (shouldIgnoreEvent(event)) { + clearInsideReactTree(); + return; + } + if (dataRef.current.insideReactTree) { + clearInsideReactTree(); + return; + } + const target = getTarget(event); + const inertSelector = `[${createAttribute("inert")}]`; + const targetRoot = isElement(target) ? target.getRootNode() : null; + const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store2.select("floatingElement"))).querySelectorAll(inertSelector)); + const triggers = store2.context.triggerElements; + if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { + return; + } + let targetRootAncestor = isElement(target) ? target : null; + while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { + const nextParent = getParentNode(targetRootAncestor); + if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { + break; + } + targetRootAncestor = nextParent; + } + if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). + !contains(target, store2.select("floatingElement")) && // If the target root element contains none of the markers, then the + // element was injected after the floating element rendered. + markers.every((marker) => !contains(targetRootAncestor, marker))) { + return; + } + if (isHTMLElement(target) && !("touches" in event)) { + const lastTraversableNode = isLastTraversableNode(target); + const style = getComputedStyle2(target); + const scrollRe = /auto|scroll/; + const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); + const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY); + const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; + const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; + const isRTL2 = style.direction === "rtl"; + const pressedVerticalScrollbar = canScrollY && (isRTL2 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); + const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; + if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { + return; + } + } + if (isEventWithinFloatingTree(event)) { + return; + } + if (getOutsidePressEvent() === "intentional" && suppressNextOutsideClickRef.current) { + preventedPressSuppressionTimeout.clear(); + suppressNextOutsideClickRef.current = false; + return; + } + if (typeof outsidePress2 === "function" && !outsidePress2(event)) { + return; + } + const nodeId = dataRef.current.floatingContext?.nodeId; + const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; + if (children.length > 0) { + let shouldDismiss = true; + children.forEach((child) => { + if (child.context?.open && !child.context.dataRef.current.__outsidePressBubbles) { + shouldDismiss = false; + } + }); + if (!shouldDismiss) { + return; + } + } + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); + clearInsideReactTree(); + } + function handlePointerDown(event) { + if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store2.select("open") || !enabled || isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"))) { + return; + } + closeOnPressOutside(event); + } + function handleTouchStart(event) { + if (getOutsidePressEvent() !== "sloppy" || !store2.select("open") || !enabled || isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"))) { + return; + } + const touch = event.touches[0]; + if (touch) { + touchStateRef.current = { + startTime: Date.now(), + startX: touch.clientX, + startY: touch.clientY, + dismissOnTouchEnd: false, + dismissOnMouseDown: true + }; + cancelDismissOnEndTimeout.start(1e3, () => { + if (touchStateRef.current) { + touchStateRef.current.dismissOnTouchEnd = false; + touchStateRef.current.dismissOnMouseDown = false; + } + }); + } + } + function addTargetEventListenerOnce(event, listener) { + const target = getTarget(event); + if (!target) { + return; + } + const unsubscribe2 = addEventListener(target, event.type, () => { + listener(event); + unsubscribe2(); + }); + } + function handleTouchStartCapture(event) { + currentPointerTypeRef.current = "touch"; + addTargetEventListenerOnce(event, handleTouchStart); + } + function closeOnPressOutsideCapture(event) { + cancelDismissOnEndTimeout.clear(); + if (event.type === "pointerdown") { + currentPointerTypeRef.current = event.pointerType; + } + if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { + return; + } + addTargetEventListenerOnce(event, (targetEvent) => { + if (targetEvent.type === "pointerdown") { + handlePointerDown(targetEvent); + } else { + closeOnPressOutside(targetEvent); + } + }); + } + function handlePressEndCapture(event) { + if (!pressStartedInsideRef.current) { + return; + } + const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; + resetPressStartState(); + if (getOutsidePressEvent() !== "intentional") { + return; + } + if (event.type === "pointercancel") { + if (pressStartedInsideDefaultPrevented) { + suppressImmediateOutsideClickAfterPreventedStart(); + } + return; + } + if (isEventWithinFloatingTree(event)) { + return; + } + if (pressStartedInsideDefaultPrevented) { + suppressImmediateOutsideClickAfterPreventedStart(); + return; + } + if (typeof outsidePress2 === "function" && !outsidePress2(event)) { + return; + } + preventedPressSuppressionTimeout.clear(); + suppressNextOutsideClickRef.current = true; + clearInsideReactTree(); + } + function handleTouchMove(event) { + if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"))) { + return; + } + const touch = event.touches[0]; + if (!touch) { + return; + } + const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); + const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); + const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); + if (distance > 5) { + touchStateRef.current.dismissOnTouchEnd = true; + } + if (distance > 10) { + closeOnPressOutside(event); + cancelDismissOnEndTimeout.clear(); + touchStateRef.current = null; + } + } + function handleTouchMoveCapture(event) { + addTargetEventListenerOnce(event, handleTouchMove); + } + function handleTouchEnd(event) { + if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"))) { + return; + } + if (touchStateRef.current.dismissOnTouchEnd) { + closeOnPressOutside(event); + } + cancelDismissOnEndTimeout.clear(); + touchStateRef.current = null; + } + function handleTouchEndCapture(event) { + addTargetEventListenerOnce(event, handleTouchEnd); + } + const doc = ownerDocument(floatingElement); + const unsubscribe = mergeCleanups(escapeKey2 && mergeCleanups(addEventListener(doc, "keydown", closeOnEscapeKeyDown), addEventListener(doc, "compositionstart", handleCompositionStart), addEventListener(doc, "compositionend", handleCompositionEnd)), outsidePressEnabled && mergeCleanups(addEventListener(doc, "click", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerdown", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerup", handlePressEndCapture, true), addEventListener(doc, "pointercancel", handlePressEndCapture, true), addEventListener(doc, "mousedown", closeOnPressOutsideCapture, true), addEventListener(doc, "mouseup", handlePressEndCapture, true), addEventListener(doc, "touchstart", handleTouchStartCapture, true), addEventListener(doc, "touchmove", handleTouchMoveCapture, true), addEventListener(doc, "touchend", handleTouchEndCapture, true))); + return () => { + unsubscribe(); + compositionTimeout.clear(); + preventedPressSuppressionTimeout.clear(); + resetPressStartState(); + suppressNextOutsideClickRef.current = false; + }; + }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, tree, store2, cancelDismissOnEndTimeout]); + React23.useEffect(clearInsideReactTree, [outsidePress2, clearInsideReactTree]); + const reference = React23.useMemo(() => ({ + onKeyDown: closeOnEscapeKeyDown, + [bubbleHandlerKeys[referencePressEvent]]: (event) => { + if (!isReferencePressEnabled()) { + return; + } + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); + }, + ...referencePressEvent !== "intentional" && { + onClick(event) { + if (!isReferencePressEnabled()) { + return; + } + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); + } + } + }), [closeOnEscapeKeyDown, store2, referencePressEvent, isReferencePressEnabled]); + const markPressStartedInsideReactTree = useStableCallback((event) => { + if (!open || !enabled || event.button !== 0) { + return; + } + const target = getTarget(event.nativeEvent); + if (!contains(store2.select("floatingElement"), target)) { + return; + } + if (!pressStartedInsideRef.current) { + pressStartedInsideRef.current = true; + pressStartPreventedRef.current = false; + } + }); + const markInsidePressStartPrevented = useStableCallback((event) => { + if (!open || !enabled) { + return; + } + if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { + return; + } + if (pressStartedInsideRef.current) { + pressStartPreventedRef.current = true; + } + }); + const floating = React23.useMemo(() => ({ + onKeyDown: closeOnEscapeKeyDown, + // `onMouseDown` may be blocked if `event.preventDefault()` is called in + // `onPointerDown`, such as with <NumberField.ScrubArea>. + // See https://github.com/mui/base-ui/pull/3379 + onPointerDown: markInsidePressStartPrevented, + onMouseDown: markInsidePressStartPrevented, + onClickCapture: markInsideReactTree, + onMouseDownCapture(event) { + markInsideReactTree(); + markPressStartedInsideReactTree(event); + }, + onPointerDownCapture(event) { + markInsideReactTree(); + markPressStartedInsideReactTree(event); + }, + onMouseUpCapture: markInsideReactTree, + onTouchEndCapture: markInsideReactTree, + onTouchMoveCapture: markInsideReactTree + }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); + return React23.useMemo(() => enabled ? { + reference, + floating, + trigger: reference + } : {}, [enabled, reference, floating]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloating.js +var React29 = __toESM(require_react(), 1); + +// node_modules/@floating-ui/core/dist/floating-ui.core.mjs +function computeCoordsFromPlacement(_ref, placement, rtl) { + let { + reference, + floating + } = _ref; + const sideAxis = getSideAxis(placement); + const alignmentAxis = getAlignmentAxis(placement); + const alignLength = getAxisLength(alignmentAxis); + const side = getSide(placement); + const isVertical = sideAxis === "y"; + const commonX = reference.x + reference.width / 2 - floating.width / 2; + const commonY = reference.y + reference.height / 2 - floating.height / 2; + const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; + let coords; + switch (side) { + case "top": + coords = { + x: commonX, + y: reference.y - floating.height + }; + break; + case "bottom": + coords = { + x: commonX, + y: reference.y + reference.height + }; + break; + case "right": + coords = { + x: reference.x + reference.width, + y: commonY + }; + break; + case "left": + coords = { + x: reference.x - floating.width, + y: commonY + }; + break; + default: + coords = { + x: reference.x, + y: reference.y + }; + } + switch (getAlignment(placement)) { + case "start": + coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); + break; + case "end": + coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1); + break; + } + return coords; +} +async function detectOverflow(state, options) { + var _await$platform$isEle; + if (options === void 0) { + options = {}; + } + const { + x, + y, + platform: platform3, + rects, + elements, + strategy + } = state; + const { + boundary = "clippingAncestors", + rootBoundary = "viewport", + elementContext = "floating", + altBoundary = false, + padding = 0 + } = evaluate(options, state); + const paddingObject = getPaddingObject(padding); + const altContext = elementContext === "floating" ? "reference" : "floating"; + const element = elements[altBoundary ? altContext : elementContext]; + const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ + element: ((_await$platform$isEle = await (platform3.isElement == null ? void 0 : platform3.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform3.getDocumentElement == null ? void 0 : platform3.getDocumentElement(elements.floating)), + boundary, + rootBoundary, + strategy + })); + const rect = elementContext === "floating" ? { + x, + y, + width: rects.floating.width, + height: rects.floating.height + } : rects.reference; + const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating)); + const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) ? await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { + x: 1, + y: 1 + } : { + x: 1, + y: 1 + }; + const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ + elements, + rect, + offsetParent, + strategy + }) : rect); + return { + top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, + bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, + left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, + right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x + }; +} +var MAX_RESET_COUNT = 50; +var computePosition = async (reference, floating, config) => { + const { + placement = "bottom", + strategy = "absolute", + middleware = [], + platform: platform3 + } = config; + const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { + ...platform3, + detectOverflow + }; + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); + let rects = await platform3.getElementRects({ + reference, + floating, + strategy + }); + let { + x, + y + } = computeCoordsFromPlacement(rects, placement, rtl); + let statefulPlacement = placement; + let resetCount = 0; + const middlewareData = {}; + for (let i = 0; i < middleware.length; i++) { + const currentMiddleware = middleware[i]; + if (!currentMiddleware) { + continue; + } + const { + name, + fn + } = currentMiddleware; + const { + x: nextX, + y: nextY, + data, + reset + } = await fn({ + x, + y, + initialPlacement: placement, + placement: statefulPlacement, + strategy, + middlewareData, + rects, + platform: platformWithDetectOverflow, + elements: { + reference, + floating + } + }); + x = nextX != null ? nextX : x; + y = nextY != null ? nextY : y; + middlewareData[name] = { + ...middlewareData[name], + ...data + }; + if (reset && resetCount < MAX_RESET_COUNT) { + resetCount++; + if (typeof reset === "object") { + if (reset.placement) { + statefulPlacement = reset.placement; + } + if (reset.rects) { + rects = reset.rects === true ? await platform3.getElementRects({ + reference, + floating, + strategy + }) : reset.rects; + } + ({ + x, + y + } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); + } + i = -1; + } + } + return { + x, + y, + placement: statefulPlacement, + strategy, + middlewareData + }; +}; +var flip = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "flip", + options, + async fn(state) { + var _middlewareData$arrow, _middlewareData$flip; + const { + placement, + middlewareData, + rects, + initialPlacement, + platform: platform3, + elements + } = state; + const { + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = true, + fallbackPlacements: specifiedFallbackPlacements, + fallbackStrategy = "bestFit", + fallbackAxisSideDirection = "none", + flipAlignment = true, + ...detectOverflowOptions + } = evaluate(options, state); + if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { + return {}; + } + const side = getSide(placement); + const initialSideAxis = getSideAxis(initialPlacement); + const isBasePlacement = getSide(initialPlacement) === initialPlacement; + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); + const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); + const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; + if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { + fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); + } + const placements2 = [initialPlacement, ...fallbackPlacements]; + const overflow = await platform3.detectOverflow(state, detectOverflowOptions); + const overflows = []; + let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; + if (checkMainAxis) { + overflows.push(overflow[side]); + } + if (checkCrossAxis) { + const sides2 = getAlignmentSides(placement, rects, rtl); + overflows.push(overflow[sides2[0]], overflow[sides2[1]]); + } + overflowsData = [...overflowsData, { + placement, + overflows + }]; + if (!overflows.every((side2) => side2 <= 0)) { + var _middlewareData$flip2, _overflowsData$filter; + const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; + const nextPlacement = placements2[nextIndex]; + if (nextPlacement) { + const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; + if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis + // overflows the main axis. + overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) { + return { + data: { + index: nextIndex, + overflows: overflowsData + }, + reset: { + placement: nextPlacement + } + }; + } + } + let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement; + if (!resetPlacement) { + switch (fallbackStrategy) { + case "bestFit": { + var _overflowsData$filter2; + const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => { + if (hasFallbackAxisSideDirection) { + const currentSideAxis = getSideAxis(d.placement); + return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal + // reading directions favoring greater width. + currentSideAxis === "y"; + } + return true; + }).map((d) => [d.placement, d.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0]; + if (placement2) { + resetPlacement = placement2; + } + break; + } + case "initialPlacement": + resetPlacement = initialPlacement; + break; + } + } + if (placement !== resetPlacement) { + return { + reset: { + placement: resetPlacement + } + }; + } + } + return {}; + } + }; +}; +function getSideOffsets(overflow, rect) { + return { + top: overflow.top - rect.height, + right: overflow.right - rect.width, + bottom: overflow.bottom - rect.height, + left: overflow.left - rect.width + }; +} +function isAnySideFullyClipped(overflow) { + return sides.some((side) => overflow[side] >= 0); +} +var hide = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "hide", + options, + async fn(state) { + const { + rects, + platform: platform3 + } = state; + const { + strategy = "referenceHidden", + ...detectOverflowOptions + } = evaluate(options, state); + switch (strategy) { + case "referenceHidden": { + const overflow = await platform3.detectOverflow(state, { + ...detectOverflowOptions, + elementContext: "reference" + }); + const offsets = getSideOffsets(overflow, rects.reference); + return { + data: { + referenceHiddenOffsets: offsets, + referenceHidden: isAnySideFullyClipped(offsets) + } + }; + } + case "escaped": { + const overflow = await platform3.detectOverflow(state, { + ...detectOverflowOptions, + altBoundary: true + }); + const offsets = getSideOffsets(overflow, rects.floating); + return { + data: { + escapedOffsets: offsets, + escaped: isAnySideFullyClipped(offsets) + } + }; + } + default: { + return {}; + } + } + } + }; +}; +var originSides = /* @__PURE__ */ new Set(["left", "top"]); +async function convertValueToCoords(state, options) { + const { + placement, + platform: platform3, + elements + } = state; + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); + const side = getSide(placement); + const alignment = getAlignment(placement); + const isVertical = getSideAxis(placement) === "y"; + const mainAxisMulti = originSides.has(side) ? -1 : 1; + const crossAxisMulti = rtl && isVertical ? -1 : 1; + const rawValue = evaluate(options, state); + let { + mainAxis, + crossAxis, + alignmentAxis + } = typeof rawValue === "number" ? { + mainAxis: rawValue, + crossAxis: 0, + alignmentAxis: null + } : { + mainAxis: rawValue.mainAxis || 0, + crossAxis: rawValue.crossAxis || 0, + alignmentAxis: rawValue.alignmentAxis + }; + if (alignment && typeof alignmentAxis === "number") { + crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; + } + return isVertical ? { + x: crossAxis * crossAxisMulti, + y: mainAxis * mainAxisMulti + } : { + x: mainAxis * mainAxisMulti, + y: crossAxis * crossAxisMulti + }; +} +var offset = function(options) { + if (options === void 0) { + options = 0; + } + return { + name: "offset", + options, + async fn(state) { + var _middlewareData$offse, _middlewareData$arrow; + const { + x, + y, + placement, + middlewareData + } = state; + const diffCoords = await convertValueToCoords(state, options); + if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { + return {}; + } + return { + x: x + diffCoords.x, + y: y + diffCoords.y, + data: { + ...diffCoords, + placement + } + }; + } + }; +}; +var shift = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "shift", + options, + async fn(state) { + const { + x, + y, + placement, + platform: platform3 + } = state; + const { + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = false, + limiter = { + fn: (_ref) => { + let { + x: x2, + y: y2 + } = _ref; + return { + x: x2, + y: y2 + }; + } + }, + ...detectOverflowOptions + } = evaluate(options, state); + const coords = { + x, + y + }; + const overflow = await platform3.detectOverflow(state, detectOverflowOptions); + const crossAxis = getSideAxis(getSide(placement)); + const mainAxis = getOppositeAxis(crossAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + if (checkMainAxis) { + const minSide = mainAxis === "y" ? "top" : "left"; + const maxSide = mainAxis === "y" ? "bottom" : "right"; + const min2 = mainAxisCoord + overflow[minSide]; + const max2 = mainAxisCoord - overflow[maxSide]; + mainAxisCoord = clamp(min2, mainAxisCoord, max2); + } + if (checkCrossAxis) { + const minSide = crossAxis === "y" ? "top" : "left"; + const maxSide = crossAxis === "y" ? "bottom" : "right"; + const min2 = crossAxisCoord + overflow[minSide]; + const max2 = crossAxisCoord - overflow[maxSide]; + crossAxisCoord = clamp(min2, crossAxisCoord, max2); + } + const limitedCoords = limiter.fn({ + ...state, + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + }); + return { + ...limitedCoords, + data: { + x: limitedCoords.x - x, + y: limitedCoords.y - y, + enabled: { + [mainAxis]: checkMainAxis, + [crossAxis]: checkCrossAxis + } + } + }; + } + }; +}; +var limitShift = function(options) { + if (options === void 0) { + options = {}; + } + return { + options, + fn(state) { + const { + x, + y, + placement, + rects, + middlewareData + } = state; + const { + offset: offset4 = 0, + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = true + } = evaluate(options, state); + const coords = { + x, + y + }; + const crossAxis = getSideAxis(placement); + const mainAxis = getOppositeAxis(crossAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + const rawOffset = evaluate(offset4, state); + const computedOffset = typeof rawOffset === "number" ? { + mainAxis: rawOffset, + crossAxis: 0 + } : { + mainAxis: 0, + crossAxis: 0, + ...rawOffset + }; + if (checkMainAxis) { + const len = mainAxis === "y" ? "height" : "width"; + const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; + const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; + if (mainAxisCoord < limitMin) { + mainAxisCoord = limitMin; + } else if (mainAxisCoord > limitMax) { + mainAxisCoord = limitMax; + } + } + if (checkCrossAxis) { + var _middlewareData$offse, _middlewareData$offse2; + const len = mainAxis === "y" ? "width" : "height"; + const isOriginSide = originSides.has(getSide(placement)); + const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis); + const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0); + if (crossAxisCoord < limitMin) { + crossAxisCoord = limitMin; + } else if (crossAxisCoord > limitMax) { + crossAxisCoord = limitMax; + } + } + return { + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + }; + } + }; +}; +var size = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "size", + options, + async fn(state) { + var _state$middlewareData, _state$middlewareData2; + const { + placement, + rects, + platform: platform3, + elements + } = state; + const { + apply = () => { + }, + ...detectOverflowOptions + } = evaluate(options, state); + const overflow = await platform3.detectOverflow(state, detectOverflowOptions); + const side = getSide(placement); + const alignment = getAlignment(placement); + const isYAxis = getSideAxis(placement) === "y"; + const { + width, + height + } = rects.floating; + let heightSide; + let widthSide; + if (side === "top" || side === "bottom") { + heightSide = side; + widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; + } else { + widthSide = side; + heightSide = alignment === "end" ? "top" : "bottom"; + } + const maximumClippingHeight = height - overflow.top - overflow.bottom; + const maximumClippingWidth = width - overflow.left - overflow.right; + const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); + const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); + const noShift = !state.middlewareData.shift; + let availableHeight = overflowAvailableHeight; + let availableWidth = overflowAvailableWidth; + if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) { + availableWidth = maximumClippingWidth; + } + if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) { + availableHeight = maximumClippingHeight; + } + if (noShift && !alignment) { + const xMin = max(overflow.left, 0); + const xMax = max(overflow.right, 0); + const yMin = max(overflow.top, 0); + const yMax = max(overflow.bottom, 0); + if (isYAxis) { + availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)); + } else { + availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)); + } + } + await apply({ + ...state, + availableWidth, + availableHeight + }); + const nextDimensions = await platform3.getDimensions(elements.floating); + if (width !== nextDimensions.width || height !== nextDimensions.height) { + return { + reset: { + rects: true + } + }; + } + return {}; + } + }; +}; + +// node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +function getCssDimensions(element) { + const css = getComputedStyle2(element); + let width = parseFloat(css.width) || 0; + let height = parseFloat(css.height) || 0; + const hasOffset = isHTMLElement(element); + const offsetWidth = hasOffset ? element.offsetWidth : width; + const offsetHeight = hasOffset ? element.offsetHeight : height; + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; + if (shouldFallback) { + width = offsetWidth; + height = offsetHeight; + } + return { + width, + height, + $: shouldFallback + }; +} +function unwrapElement(element) { + return !isElement(element) ? element.contextElement : element; +} +function getScale(element) { + const domElement = unwrapElement(element); + if (!isHTMLElement(domElement)) { + return createCoords(1); + } + const rect = domElement.getBoundingClientRect(); + const { + width, + height, + $ + } = getCssDimensions(domElement); + let x = ($ ? round(rect.width) : rect.width) / width; + let y = ($ ? round(rect.height) : rect.height) / height; + if (!x || !Number.isFinite(x)) { + x = 1; + } + if (!y || !Number.isFinite(y)) { + y = 1; + } + return { + x, + y + }; +} +var noOffsets = /* @__PURE__ */ createCoords(0); +function getVisualOffsets(element) { + const win = getWindow(element); + if (!isWebKit() || !win.visualViewport) { + return noOffsets; + } + return { + x: win.visualViewport.offsetLeft, + y: win.visualViewport.offsetTop + }; +} +function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { + if (isFixed === void 0) { + isFixed = false; + } + if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) { + return false; + } + return isFixed; +} +function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { + if (includeScale === void 0) { + includeScale = false; + } + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + const clientRect = element.getBoundingClientRect(); + const domElement = unwrapElement(element); + let scale = createCoords(1); + if (includeScale) { + if (offsetParent) { + if (isElement(offsetParent)) { + scale = getScale(offsetParent); + } + } else { + scale = getScale(element); + } + } + const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); + let x = (clientRect.left + visualOffsets.x) / scale.x; + let y = (clientRect.top + visualOffsets.y) / scale.y; + let width = clientRect.width / scale.x; + let height = clientRect.height / scale.y; + if (domElement) { + const win = getWindow(domElement); + const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; + let currentWin = win; + let currentIFrame = getFrameElement(currentWin); + while (currentIFrame && offsetParent && offsetWin !== currentWin) { + const iframeScale = getScale(currentIFrame); + const iframeRect = currentIFrame.getBoundingClientRect(); + const css = getComputedStyle2(currentIFrame); + const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; + const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; + x *= iframeScale.x; + y *= iframeScale.y; + width *= iframeScale.x; + height *= iframeScale.y; + x += left; + y += top; + currentWin = getWindow(currentIFrame); + currentIFrame = getFrameElement(currentWin); + } + } + return rectToClientRect({ + width, + height, + x, + y + }); +} +function getWindowScrollBarX(element, rect) { + const leftScroll = getNodeScroll(element).scrollLeft; + if (!rect) { + return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; + } + return rect.left + leftScroll; +} +function getHTMLOffset(documentElement, scroll) { + const htmlRect = documentElement.getBoundingClientRect(); + const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); + const y = htmlRect.top + scroll.scrollTop; + return { + x, + y + }; +} +function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { + let { + elements, + rect, + offsetParent, + strategy + } = _ref; + const isFixed = strategy === "fixed"; + const documentElement = getDocumentElement(offsetParent); + const topLayer = elements ? isTopLayer(elements.floating) : false; + if (offsetParent === documentElement || topLayer && isFixed) { + return rect; + } + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + let scale = createCoords(1); + const offsets = createCoords(0); + const isOffsetParentAnElement = isHTMLElement(offsetParent); + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isOffsetParentAnElement) { + const offsetRect = getBoundingClientRect(offsetParent); + scale = getScale(offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } + } + const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); + return { + width: rect.width * scale.x, + height: rect.height * scale.y, + x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, + y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y + }; +} +function getClientRects(element) { + return Array.from(element.getClientRects()); +} +function getDocumentRect(element) { + const html = getDocumentElement(element); + const scroll = getNodeScroll(element); + const body = element.ownerDocument.body; + const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); + const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); + let x = -scroll.scrollLeft + getWindowScrollBarX(element); + const y = -scroll.scrollTop; + if (getComputedStyle2(body).direction === "rtl") { + x += max(html.clientWidth, body.clientWidth) - width; + } + return { + width, + height, + x, + y + }; +} +var SCROLLBAR_MAX = 25; +function getViewportRect(element, strategy) { + const win = getWindow(element); + const html = getDocumentElement(element); + const visualViewport = win.visualViewport; + let width = html.clientWidth; + let height = html.clientHeight; + let x = 0; + let y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + const visualViewportBased = isWebKit(); + if (!visualViewportBased || visualViewportBased && strategy === "fixed") { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + const windowScrollbarX = getWindowScrollBarX(html); + if (windowScrollbarX <= 0) { + const doc = html.ownerDocument; + const body = doc.body; + const bodyStyles = getComputedStyle(body); + const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; + const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); + if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) { + width -= clippingStableScrollbarWidth; + } + } else if (windowScrollbarX <= SCROLLBAR_MAX) { + width += windowScrollbarX; + } + return { + width, + height, + x, + y + }; +} +function getInnerBoundingClientRect(element, strategy) { + const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); + const top = clientRect.top + element.clientTop; + const left = clientRect.left + element.clientLeft; + const scale = isHTMLElement(element) ? getScale(element) : createCoords(1); + const width = element.clientWidth * scale.x; + const height = element.clientHeight * scale.y; + const x = left * scale.x; + const y = top * scale.y; + return { + width, + height, + x, + y + }; +} +function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { + let rect; + if (clippingAncestor === "viewport") { + rect = getViewportRect(element, strategy); + } else if (clippingAncestor === "document") { + rect = getDocumentRect(getDocumentElement(element)); + } else if (isElement(clippingAncestor)) { + rect = getInnerBoundingClientRect(clippingAncestor, strategy); + } else { + const visualOffsets = getVisualOffsets(element); + rect = { + x: clippingAncestor.x - visualOffsets.x, + y: clippingAncestor.y - visualOffsets.y, + width: clippingAncestor.width, + height: clippingAncestor.height + }; + } + return rectToClientRect(rect); +} +function hasFixedPositionAncestor(element, stopNode) { + const parentNode = getParentNode(element); + if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) { + return false; + } + return getComputedStyle2(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode); +} +function getClippingElementAncestors(element, cache) { + const cachedResult = cache.get(element); + if (cachedResult) { + return cachedResult; + } + let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); + let currentContainingBlockComputedStyle = null; + const elementIsFixed = getComputedStyle2(element).position === "fixed"; + let currentNode = elementIsFixed ? getParentNode(element) : element; + while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { + const computedStyle = getComputedStyle2(currentNode); + const currentNodeIsContaining = isContainingBlock(currentNode); + if (!currentNodeIsContaining && computedStyle.position === "fixed") { + currentContainingBlockComputedStyle = null; + } + const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === "absolute" || currentContainingBlockComputedStyle.position === "fixed") || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode); + if (shouldDropCurrentNode) { + result = result.filter((ancestor) => ancestor !== currentNode); + } else { + currentContainingBlockComputedStyle = computedStyle; + } + currentNode = getParentNode(currentNode); + } + cache.set(element, result); + return result; +} +function getClippingRect(_ref) { + let { + element, + boundary, + rootBoundary, + strategy + } = _ref; + const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); + const clippingAncestors = [...elementClippingAncestors, rootBoundary]; + const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); + let top = firstRect.top; + let right = firstRect.right; + let bottom = firstRect.bottom; + let left = firstRect.left; + for (let i = 1; i < clippingAncestors.length; i++) { + const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy); + top = max(rect.top, top); + right = min(rect.right, right); + bottom = min(rect.bottom, bottom); + left = max(rect.left, left); + } + return { + width: right - left, + height: bottom - top, + x: left, + y: top + }; +} +function getDimensions(element) { + const { + width, + height + } = getCssDimensions(element); + return { + width, + height + }; +} +function getRectRelativeToOffsetParent(element, offsetParent, strategy) { + const isOffsetParentAnElement = isHTMLElement(offsetParent); + const documentElement = getDocumentElement(offsetParent); + const isFixed = strategy === "fixed"; + const rect = getBoundingClientRect(element, true, isFixed, offsetParent); + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + const offsets = createCoords(0); + function setLeftRTLScrollbarOffset() { + offsets.x = getWindowScrollBarX(documentElement); + } + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isOffsetParentAnElement) { + const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } else if (documentElement) { + setLeftRTLScrollbarOffset(); + } + } + if (isFixed && !isOffsetParentAnElement && documentElement) { + setLeftRTLScrollbarOffset(); + } + const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); + const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; + const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; + return { + x, + y, + width: rect.width, + height: rect.height + }; +} +function isStaticPositioned(element) { + return getComputedStyle2(element).position === "static"; +} +function getTrueOffsetParent(element, polyfill) { + if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { + return null; + } + if (polyfill) { + return polyfill(element); + } + let rawOffsetParent = element.offsetParent; + if (getDocumentElement(element) === rawOffsetParent) { + rawOffsetParent = rawOffsetParent.ownerDocument.body; + } + return rawOffsetParent; +} +function getOffsetParent(element, polyfill) { + const win = getWindow(element); + if (isTopLayer(element)) { + return win; + } + if (!isHTMLElement(element)) { + let svgOffsetParent = getParentNode(element); + while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { + if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { + return svgOffsetParent; + } + svgOffsetParent = getParentNode(svgOffsetParent); + } + return win; + } + let offsetParent = getTrueOffsetParent(element, polyfill); + while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { + offsetParent = getTrueOffsetParent(offsetParent, polyfill); + } + if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { + return win; + } + return offsetParent || getContainingBlock(element) || win; +} +var getElementRects = async function(data) { + const getOffsetParentFn = this.getOffsetParent || getOffsetParent; + const getDimensionsFn = this.getDimensions; + const floatingDimensions = await getDimensionsFn(data.floating); + return { + reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), + floating: { + x: 0, + y: 0, + width: floatingDimensions.width, + height: floatingDimensions.height + } + }; +}; +function isRTL(element) { + return getComputedStyle2(element).direction === "rtl"; +} +var platform2 = { + convertOffsetParentRelativeRectToViewportRelativeRect, + getDocumentElement, + getClippingRect, + getOffsetParent, + getElementRects, + getClientRects, + getDimensions, + getScale, + isElement, + isRTL +}; +function rectsAreEqual(a, b) { + return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; +} +function observeMove(element, onMove) { + let io = null; + let timeoutId; + const root = getDocumentElement(element); + function cleanup() { + var _io; + clearTimeout(timeoutId); + (_io = io) == null || _io.disconnect(); + io = null; + } + function refresh(skip, threshold) { + if (skip === void 0) { + skip = false; + } + if (threshold === void 0) { + threshold = 1; + } + cleanup(); + const elementRectForRootMargin = element.getBoundingClientRect(); + const { + left, + top, + width, + height + } = elementRectForRootMargin; + if (!skip) { + onMove(); + } + if (!width || !height) { + return; + } + const insetTop = floor(top); + const insetRight = floor(root.clientWidth - (left + width)); + const insetBottom = floor(root.clientHeight - (top + height)); + const insetLeft = floor(left); + const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; + const options = { + rootMargin, + threshold: max(0, min(1, threshold)) || 1 + }; + let isFirstUpdate = true; + function handleObserve(entries) { + const ratio = entries[0].intersectionRatio; + if (ratio !== threshold) { + if (!isFirstUpdate) { + return refresh(); + } + if (!ratio) { + timeoutId = setTimeout(() => { + refresh(false, 1e-7); + }, 1e3); + } else { + refresh(false, ratio); + } + } + if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { + refresh(); + } + isFirstUpdate = false; + } + try { + io = new IntersectionObserver(handleObserve, { + ...options, + // Handle <iframe>s + root: root.ownerDocument + }); + } catch (_e) { + io = new IntersectionObserver(handleObserve, options); + } + io.observe(element); + } + refresh(true); + return cleanup; +} +function autoUpdate(reference, floating, update2, options) { + if (options === void 0) { + options = {}; + } + const { + ancestorScroll = true, + ancestorResize = true, + elementResize = typeof ResizeObserver === "function", + layoutShift = typeof IntersectionObserver === "function", + animationFrame = false + } = options; + const referenceEl = unwrapElement(reference); + const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; + ancestors.forEach((ancestor) => { + ancestorScroll && ancestor.addEventListener("scroll", update2, { + passive: true + }); + ancestorResize && ancestor.addEventListener("resize", update2); + }); + const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2) : null; + let reobserveFrame = -1; + let resizeObserver = null; + if (elementResize) { + resizeObserver = new ResizeObserver((_ref) => { + let [firstEntry] = _ref; + if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { + resizeObserver.unobserve(floating); + cancelAnimationFrame(reobserveFrame); + reobserveFrame = requestAnimationFrame(() => { + var _resizeObserver; + (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); + }); + } + update2(); + }); + if (referenceEl && !animationFrame) { + resizeObserver.observe(referenceEl); + } + if (floating) { + resizeObserver.observe(floating); + } + } + let frameId; + let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; + if (animationFrame) { + frameLoop(); + } + function frameLoop() { + const nextRefRect = getBoundingClientRect(reference); + if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { + update2(); + } + prevRefRect = nextRefRect; + frameId = requestAnimationFrame(frameLoop); + } + update2(); + return () => { + var _resizeObserver2; + ancestors.forEach((ancestor) => { + ancestorScroll && ancestor.removeEventListener("scroll", update2); + ancestorResize && ancestor.removeEventListener("resize", update2); + }); + cleanupIo == null || cleanupIo(); + (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); + resizeObserver = null; + if (animationFrame) { + cancelAnimationFrame(frameId); + } + }; +} +var offset2 = offset; +var shift2 = shift; +var flip2 = flip; +var size2 = size; +var hide2 = hide; +var limitShift2 = limitShift; +var computePosition2 = (reference, floating, options) => { + const cache = /* @__PURE__ */ new Map(); + const mergedOptions = { + platform: platform2, + ...options + }; + const platformWithCache = { + ...mergedOptions.platform, + _c: cache + }; + return computePosition(reference, floating, { + ...mergedOptions, + platform: platformWithCache + }); +}; + +// node_modules/@base-ui/react/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs +var React24 = __toESM(require_react(), 1); +var import_react2 = __toESM(require_react(), 1); +var ReactDOM3 = __toESM(require_react_dom(), 1); +var isClient = typeof document !== "undefined"; +var noop2 = function noop3() { +}; +var index = isClient ? import_react2.useLayoutEffect : noop2; +function deepEqual(a, b) { + if (a === b) { + return true; + } + if (typeof a !== typeof b) { + return false; + } + if (typeof a === "function" && a.toString() === b.toString()) { + return true; + } + let length; + let i; + let keys; + if (a && b && typeof a === "object") { + if (Array.isArray(a)) { + length = a.length; + if (length !== b.length) return false; + for (i = length; i-- !== 0; ) { + if (!deepEqual(a[i], b[i])) { + return false; + } + } + return true; + } + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) { + return false; + } + for (i = length; i-- !== 0; ) { + if (!{}.hasOwnProperty.call(b, keys[i])) { + return false; + } + } + for (i = length; i-- !== 0; ) { + const key = keys[i]; + if (key === "_owner" && a.$$typeof) { + continue; + } + if (!deepEqual(a[key], b[key])) { + return false; + } + } + return true; + } + return a !== a && b !== b; +} +function getDPR(element) { + if (typeof window === "undefined") { + return 1; + } + const win = element.ownerDocument.defaultView || window; + return win.devicePixelRatio || 1; +} +function roundByDPR(element, value) { + const dpr = getDPR(element); + return Math.round(value * dpr) / dpr; +} +function useLatestRef(value) { + const ref = React24.useRef(value); + index(() => { + ref.current = value; + }); + return ref; +} +function useFloating(options) { + if (options === void 0) { + options = {}; + } + const { + placement = "bottom", + strategy = "absolute", + middleware = [], + platform: platform3, + elements: { + reference: externalReference, + floating: externalFloating + } = {}, + transform = true, + whileElementsMounted, + open + } = options; + const [data, setData] = React24.useState({ + x: 0, + y: 0, + strategy, + placement, + middlewareData: {}, + isPositioned: false + }); + const [latestMiddleware, setLatestMiddleware] = React24.useState(middleware); + if (!deepEqual(latestMiddleware, middleware)) { + setLatestMiddleware(middleware); + } + const [_reference, _setReference] = React24.useState(null); + const [_floating, _setFloating] = React24.useState(null); + const setReference = React24.useCallback((node) => { + if (node !== referenceRef.current) { + referenceRef.current = node; + _setReference(node); + } + }, []); + const setFloating = React24.useCallback((node) => { + if (node !== floatingRef.current) { + floatingRef.current = node; + _setFloating(node); + } + }, []); + const referenceEl = externalReference || _reference; + const floatingEl = externalFloating || _floating; + const referenceRef = React24.useRef(null); + const floatingRef = React24.useRef(null); + const dataRef = React24.useRef(data); + const hasWhileElementsMounted = whileElementsMounted != null; + const whileElementsMountedRef = useLatestRef(whileElementsMounted); + const platformRef = useLatestRef(platform3); + const openRef = useLatestRef(open); + const update2 = React24.useCallback(() => { + if (!referenceRef.current || !floatingRef.current) { + return; + } + const config = { + placement, + strategy, + middleware: latestMiddleware + }; + if (platformRef.current) { + config.platform = platformRef.current; + } + computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { + const fullData = { + ...data2, + // The floating element's position may be recomputed while it's closed + // but still mounted (such as when transitioning out). To ensure + // `isPositioned` will be `false` initially on the next open, avoid + // setting it to `true` when `open === false` (must be specified). + isPositioned: openRef.current !== false + }; + if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { + dataRef.current = fullData; + ReactDOM3.flushSync(() => { + setData(fullData); + }); + } + }); + }, [latestMiddleware, placement, strategy, platformRef, openRef]); + index(() => { + if (open === false && dataRef.current.isPositioned) { + dataRef.current.isPositioned = false; + setData((data2) => ({ + ...data2, + isPositioned: false + })); + } + }, [open]); + const isMountedRef = React24.useRef(false); + index(() => { + isMountedRef.current = true; + return () => { + isMountedRef.current = false; + }; + }, []); + index(() => { + if (referenceEl) referenceRef.current = referenceEl; + if (floatingEl) floatingRef.current = floatingEl; + if (referenceEl && floatingEl) { + if (whileElementsMountedRef.current) { + return whileElementsMountedRef.current(referenceEl, floatingEl, update2); + } + update2(); + } + }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); + const refs = React24.useMemo(() => ({ + reference: referenceRef, + floating: floatingRef, + setReference, + setFloating + }), [setReference, setFloating]); + const elements = React24.useMemo(() => ({ + reference: referenceEl, + floating: floatingEl + }), [referenceEl, floatingEl]); + const floatingStyles = React24.useMemo(() => { + const initialStyles = { + position: strategy, + left: 0, + top: 0 + }; + if (!elements.floating) { + return initialStyles; + } + const x = roundByDPR(elements.floating, data.x); + const y = roundByDPR(elements.floating, data.y); + if (transform) { + return { + ...initialStyles, + transform: "translate(" + x + "px, " + y + "px)", + ...getDPR(elements.floating) >= 1.5 && { + willChange: "transform" + } + }; + } + return { + position: strategy, + left: x, + top: y + }; + }, [strategy, transform, elements.floating, data.x, data.y]); + return React24.useMemo(() => ({ + ...data, + update: update2, + refs, + elements, + floatingStyles + }), [data, update2, refs, elements, floatingStyles]); +} +var offset3 = (options, deps) => { + const result = offset2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; +var shift3 = (options, deps) => { + const result = shift2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; +var limitShift3 = (options, deps) => { + const result = limitShift2(options); + return { + fn: result.fn, + options: [options, deps] + }; +}; +var flip3 = (options, deps) => { + const result = flip2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; +var size3 = (options, deps) => { + const result = size2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; +var hide3 = (options, deps) => { + const result = hide2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; + +// node_modules/@base-ui/utils/esm/store/createSelector.js +var createSelector = (a, b, c, d, e, f, ...other) => { + if (other.length > 0) { + throw new Error(true ? "Unsupported number of selectors" : formatErrorMessage_default(1)); + } + let selector; + if (a && b && c && d && e && f) { + selector = (state, a1, a2, a3) => { + const va = a(state, a1, a2, a3); + const vb = b(state, a1, a2, a3); + const vc = c(state, a1, a2, a3); + const vd = d(state, a1, a2, a3); + const ve = e(state, a1, a2, a3); + return f(va, vb, vc, vd, ve, a1, a2, a3); + }; + } else if (a && b && c && d && e) { + selector = (state, a1, a2, a3) => { + const va = a(state, a1, a2, a3); + const vb = b(state, a1, a2, a3); + const vc = c(state, a1, a2, a3); + const vd = d(state, a1, a2, a3); + return e(va, vb, vc, vd, a1, a2, a3); + }; + } else if (a && b && c && d) { + selector = (state, a1, a2, a3) => { + const va = a(state, a1, a2, a3); + const vb = b(state, a1, a2, a3); + const vc = c(state, a1, a2, a3); + return d(va, vb, vc, a1, a2, a3); + }; + } else if (a && b && c) { + selector = (state, a1, a2, a3) => { + const va = a(state, a1, a2, a3); + const vb = b(state, a1, a2, a3); + return c(va, vb, a1, a2, a3); + }; + } else if (a && b) { + selector = (state, a1, a2, a3) => { + const va = a(state, a1, a2, a3); + return b(va, a1, a2, a3); + }; + } else if (a) { + selector = a; + } else { + throw ( + /* minify-error-disabled */ + new Error("Missing arguments") + ); + } + return selector; +}; + +// node_modules/@base-ui/utils/esm/store/useStore.js +var React26 = __toESM(require_react(), 1); +var import_shim = __toESM(require_shim(), 1); +var import_with_selector = __toESM(require_with_selector(), 1); + +// node_modules/@base-ui/utils/esm/fastHooks.js +var React25 = __toESM(require_react(), 1); +var hooks = []; +var currentInstance = void 0; +function getInstance() { + return currentInstance; +} +function register(hook) { + hooks.push(hook); +} +function fastComponent(fn) { + const FastComponent = (props, forwardedRef) => { + const instance = useRefWithInit(createInstance).current; + let result; + try { + currentInstance = instance; + for (const hook of hooks) { + hook.before(instance); + } + result = fn(props, forwardedRef); + for (const hook of hooks) { + hook.after(instance); + } + instance.didInitialize = true; + } finally { + currentInstance = void 0; + } + return result; + }; + FastComponent.displayName = fn.displayName || fn.name; + return FastComponent; +} +function fastComponentRef(fn) { + return /* @__PURE__ */ React25.forwardRef(fastComponent(fn)); +} +function createInstance() { + return { + didInitialize: false + }; +} + +// node_modules/@base-ui/utils/esm/store/useStore.js +var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); +var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; +function useStore(store2, selector, a1, a2, a3) { + return useStoreImplementation(store2, selector, a1, a2, a3); +} +function useStoreR19(store2, selector, a1, a2, a3) { + const getSelection = React26.useCallback(() => selector(store2.getSnapshot(), a1, a2, a3), [store2, selector, a1, a2, a3]); + return (0, import_shim.useSyncExternalStore)(store2.subscribe, getSelection, getSelection); +} +register({ + before(instance) { + instance.syncIndex = 0; + if (!instance.didInitialize) { + instance.syncTick = 1; + instance.syncHooks = []; + instance.didChangeStore = true; + instance.getSnapshot = () => { + let didChange2 = false; + for (let i = 0; i < instance.syncHooks.length; i += 1) { + const hook = instance.syncHooks[i]; + const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); + if (hook.didChange || !Object.is(hook.value, value)) { + didChange2 = true; + hook.value = value; + hook.didChange = false; + } + } + if (didChange2) { + instance.syncTick += 1; + } + return instance.syncTick; + }; + } + }, + after(instance) { + if (instance.syncHooks.length > 0) { + if (instance.didChangeStore) { + instance.didChangeStore = false; + instance.subscribe = (onStoreChange) => { + const stores = /* @__PURE__ */ new Set(); + for (const hook of instance.syncHooks) { + stores.add(hook.store); + } + const unsubscribes = []; + for (const store2 of stores) { + unsubscribes.push(store2.subscribe(onStoreChange)); + } + return () => { + for (const unsubscribe of unsubscribes) { + unsubscribe(); + } + }; + }; + } + (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); + } + } +}); +function useStoreFast(store2, selector, a1, a2, a3) { + const instance = getInstance(); + if (!instance) { + return useStoreR19(store2, selector, a1, a2, a3); + } + const index2 = instance.syncIndex; + instance.syncIndex += 1; + let hook; + if (!instance.didInitialize) { + hook = { + store: store2, + selector, + a1, + a2, + a3, + value: selector(store2.getSnapshot(), a1, a2, a3), + didChange: false + }; + instance.syncHooks.push(hook); + } else { + hook = instance.syncHooks[index2]; + if (hook.store !== store2 || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { + if (hook.store !== store2) { + instance.didChangeStore = true; + } + hook.store = store2; + hook.selector = selector; + hook.a1 = a1; + hook.a2 = a2; + hook.a3 = a3; + hook.didChange = true; + } + } + return hook.value; +} +function useStoreLegacy(store2, selector, a1, a2, a3) { + return (0, import_with_selector.useSyncExternalStoreWithSelector)(store2.subscribe, store2.getSnapshot, store2.getSnapshot, (state) => selector(state, a1, a2, a3)); +} + +// node_modules/@base-ui/utils/esm/store/Store.js +var Store = class { + /** + * The current state of the store. + * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. + * To subscribe to state changes, use the {@link useState} method. The value returned by {@link useState} is updated after the component renders (similarly to React's useState). + * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. + * + * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. + */ + // Internal state to handle recursive `setState()` calls + constructor(state) { + this.state = state; + this.listeners = /* @__PURE__ */ new Set(); + this.updateTick = 0; + } + /** + * Registers a listener that will be called whenever the store's state changes. + * + * @param fn The listener function to be called on state changes. + * @returns A function to unsubscribe the listener. + */ + subscribe = (fn) => { + this.listeners.add(fn); + return () => { + this.listeners.delete(fn); + }; + }; + /** + * Returns the current state of the store. + */ + getSnapshot = () => { + return this.state; + }; + /** + * Updates the entire store's state and notifies all registered listeners. + * + * @param newState The new state to set for the store. + */ + setState(newState) { + if (this.state === newState) { + return; + } + this.state = newState; + this.updateTick += 1; + const currentTick = this.updateTick; + for (const listener of this.listeners) { + if (currentTick !== this.updateTick) { + return; + } + listener(newState); + } + } + /** + * Merges the provided changes into the current state and notifies listeners if there are changes. + * + * @param changes An object containing the changes to apply to the current state. + */ + update(changes) { + for (const key in changes) { + if (!Object.is(this.state[key], changes[key])) { + this.setState({ + ...this.state, + ...changes + }); + return; + } + } + } + /** + * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. + * + * @param key The key in the store's state to update. + * @param value The new value to set for the specified key. + */ + set(key, value) { + if (!Object.is(this.state[key], value)) { + this.setState({ + ...this.state, + [key]: value + }); + } + } + /** + * Gives the state a new reference and updates all registered listeners. + */ + notifyAll() { + const newState = { + ...this.state + }; + this.setState(newState); + } + use(selector, a1, a2, a3) { + return useStore(this, selector, a1, a2, a3); + } +}; + +// node_modules/@base-ui/utils/esm/store/ReactStore.js +var React27 = __toESM(require_react(), 1); +var ReactStore = class extends Store { + /** + * Creates a new ReactStore instance. + * + * @param state Initial state of the store. + * @param context Non-reactive context values. + * @param selectors Optional selectors for use with `useState`. + */ + constructor(state, context = {}, selectors3) { + super(state); + this.context = context; + this.selectors = selectors3; + } + /** + * Non-reactive values such as refs, callbacks, etc. + */ + /** + * Synchronizes a single external value into the store. + * + * Note that the while the value in `state` is updated immediately, the value returned + * by `useState` is updated before the next render (similarly to React's `useState`). + */ + useSyncedValue(key, value) { + React27.useDebugValue(key); + useIsoLayoutEffect(() => { + if (this.state[key] !== value) { + this.set(key, value); + } + }, [key, value]); + } + /** + * Synchronizes a single external value into the store and + * cleans it up (sets to `undefined`) on unmount. + * + * Note that the while the value in `state` is updated immediately, the value returned + * by `useState` is updated before the next render (similarly to React's `useState`). + */ + useSyncedValueWithCleanup(key, value) { + const store2 = this; + useIsoLayoutEffect(() => { + if (store2.state[key] !== value) { + store2.set(key, value); + } + return () => { + store2.set(key, void 0); + }; + }, [store2, key, value]); + } + /** + * Synchronizes multiple external values into the store. + * + * Note that the while the values in `state` are updated immediately, the values returned + * by `useState` are updated before the next render (similarly to React's `useState`). + */ + useSyncedValues(statePart) { + const store2 = this; + if (true) { + React27.useDebugValue(statePart, (p) => Object.keys(p)); + const keys = React27.useRef(Object.keys(statePart)).current; + const nextKeys = Object.keys(statePart); + if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { + console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); + } + } + const dependencies = Object.values(statePart); + useIsoLayoutEffect(() => { + store2.update(statePart); + }, [store2, ...dependencies]); + } + /** + * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` + * is non-undefined, the store's state at `key` is updated to match `controlled`. + */ + useControlledProp(key, controlled) { + React27.useDebugValue(key); + const isControlled = controlled !== void 0; + useIsoLayoutEffect(() => { + if (isControlled && !Object.is(this.state[key], controlled)) { + super.setState({ + ...this.state, + [key]: controlled + }); + } + }, [key, controlled, isControlled]); + if (true) { + const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); + if (!cache.has(key)) { + cache.set(key, isControlled); + } + const previouslyControlled = cache.get(key); + if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { + console.error(`A component is changing the ${isControlled ? "" : "un"}controlled state of ${key.toString()} to be ${isControlled ? "un" : ""}controlled. Elements should not switch from uncontrolled to controlled (or vice versa).`); + } + } + } + /** Gets the current value from the store using a selector with the provided key. + * + * @param key Key of the selector to use. + */ + select(key, a1, a2, a3) { + const selector = this.selectors[key]; + return selector(this.state, a1, a2, a3); + } + /** + * Returns a value from the store's state using a selector function. + * Used to subscribe to specific parts of the state. + * This methods causes a rerender whenever the selected state changes. + * + * @param key Key of the selector to use. + */ + useState(key, a1, a2, a3) { + React27.useDebugValue(key); + return useStore(this, this.selectors[key], a1, a2, a3); + } + /** + * Wraps a function with `useStableCallback` to ensure it has a stable reference + * and assigns it to the context. + * + * @param key Key of the event callback. Must be a function in the context. + * @param fn Function to assign. + */ + useContextCallback(key, fn) { + React27.useDebugValue(key); + const stableFunction = useStableCallback(fn ?? NOOP); + this.context[key] = stableFunction; + } + /** + * Returns a stable setter function for a specific key in the store's state. + * It's commonly used to pass as a ref callback to React elements. + * + * @param key Key of the state to set. + */ + useStateSetter(key) { + const ref = React27.useRef(void 0); + if (ref.current === void 0) { + ref.current = (value) => { + this.set(key, value); + }; + } + return ref.current; + } + /** + * Observes changes derived from the store's selectors and calls the listener when the selected value changes. + * + * @param key Key of the selector to observe. + * @param listener Listener function called when the selector result changes. + */ + observe(selector, listener) { + let selectFn; + if (typeof selector === "function") { + selectFn = selector; + } else { + selectFn = this.selectors[selector]; + } + let prevValue = selectFn(this.state); + listener(prevValue, prevValue, this); + return this.subscribe((nextState) => { + const nextValue = selectFn(nextState); + if (!Object.is(prevValue, nextValue)) { + const oldValue = prevValue; + prevValue = nextValue; + listener(nextValue, oldValue, this); + } + }); + } +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingRootStore.js +var selectors = { + open: createSelector((state) => state.open), + transitionStatus: createSelector((state) => state.transitionStatus), + domReferenceElement: createSelector((state) => state.domReferenceElement), + referenceElement: createSelector((state) => state.positionReference ?? state.referenceElement), + floatingElement: createSelector((state) => state.floatingElement), + floatingId: createSelector((state) => state.floatingId) +}; +var FloatingRootStore = class extends ReactStore { + constructor(options) { + const { + syncOnly, + nested, + onOpenChange, + triggerElements, + ...initialState + } = options; + super({ + ...initialState, + positionReference: initialState.referenceElement, + domReferenceElement: initialState.referenceElement + }, { + onOpenChange, + dataRef: { + current: {} + }, + events: createEventEmitter(), + nested, + triggerElements + }, selectors); + this.syncOnly = syncOnly; + } + /** + * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. + */ + syncOpenEvent = (newOpen, event) => { + if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing + // click events to upgrade a hover-open. + event != null && isClickLikeEvent(event)) { + this.context.dataRef.current.openEvent = newOpen ? event : void 0; + } + }; + /** + * Runs the root-owned side effects for an open state change. + */ + dispatchOpenChange = (newOpen, eventDetails) => { + this.syncOpenEvent(newOpen, eventDetails.event); + const details = { + open: newOpen, + reason: eventDetails.reason, + nativeEvent: eventDetails.event, + nested: this.context.nested, + triggerElement: eventDetails.trigger + }; + this.context.events.emit("openchange", details); + }; + /** + * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. + * + * @param newOpen The new open state. + * @param eventDetails Details about the event that triggered the open state change. + */ + setOpen = (newOpen, eventDetails) => { + if (this.syncOnly) { + this.context.onOpenChange?.(newOpen, eventDetails); + return; + } + this.dispatchOpenChange(newOpen, eventDetails); + this.context.onOpenChange?.(newOpen, eventDetails); + }; +}; + +// node_modules/@base-ui/react/esm/utils/popups/popupStoreUtils.js +var React28 = __toESM(require_react(), 1); +function useTriggerRegistration(id, store2) { + const registeredElementIdRef = React28.useRef(null); + const registeredElementRef = React28.useRef(null); + return React28.useCallback((element) => { + if (id === void 0) { + return; + } + if (registeredElementIdRef.current !== null) { + const registeredId = registeredElementIdRef.current; + const registeredElement = registeredElementRef.current; + const currentElement = store2.context.triggerElements.getById(registeredId); + if (registeredElement && currentElement === registeredElement) { + store2.context.triggerElements.delete(registeredId); + } + registeredElementIdRef.current = null; + registeredElementRef.current = null; + } + if (element !== null) { + registeredElementIdRef.current = id; + registeredElementRef.current = element; + store2.context.triggerElements.add(id, element); + } + }, [store2, id]); +} +function useTriggerDataForwarding(triggerId, triggerElementRef, store2, stateUpdates) { + const isMountedByThisTrigger = store2.useState("isMountedByTrigger", triggerId); + const baseRegisterTrigger = useTriggerRegistration(triggerId, store2); + const registerTrigger = useStableCallback((element) => { + baseRegisterTrigger(element); + if (!element || !store2.select("open")) { + return; + } + const activeTriggerId = store2.select("activeTriggerId"); + if (activeTriggerId === triggerId) { + store2.update({ + activeTriggerElement: element, + ...stateUpdates + }); + return; + } + if (activeTriggerId == null) { + store2.update({ + activeTriggerId: triggerId, + activeTriggerElement: element, + ...stateUpdates + }); + } + }); + useIsoLayoutEffect(() => { + if (isMountedByThisTrigger) { + store2.update({ + activeTriggerElement: triggerElementRef.current, + ...stateUpdates + }); + } + }, [isMountedByThisTrigger, store2, triggerElementRef, ...Object.values(stateUpdates)]); + return { + registerTrigger, + isMountedByThisTrigger + }; +} +function useImplicitActiveTrigger(store2) { + const open = store2.useState("open"); + useIsoLayoutEffect(() => { + if (open && !store2.select("activeTriggerId") && store2.context.triggerElements.size === 1) { + const iteratorResult = store2.context.triggerElements.entries().next(); + if (!iteratorResult.done) { + const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value; + store2.update({ + activeTriggerId: implicitTriggerId, + activeTriggerElement: implicitTriggerElement + }); + } + } + }, [open, store2]); +} +function useOpenStateTransitions(open, store2, onUnmount) { + const { + mounted, + setMounted, + transitionStatus + } = useTransitionStatus(open); + store2.useSyncedValues({ + mounted, + transitionStatus + }); + const forceUnmount = useStableCallback(() => { + setMounted(false); + store2.update({ + activeTriggerId: null, + activeTriggerElement: null, + mounted: false + }); + onUnmount?.(); + store2.context.onOpenChangeComplete?.(false); + }); + const preventUnmountingOnClose = store2.useState("preventUnmountingOnClose"); + useOpenChangeComplete({ + enabled: !preventUnmountingOnClose, + open, + ref: store2.context.popupRef, + onComplete() { + if (!open) { + forceUnmount(); + } + } + }); + return { + forceUnmount, + transitionStatus + }; +} + +// node_modules/@base-ui/react/esm/utils/popups/popupTriggerMap.js +var PopupTriggerMap = class { + constructor() { + this.elementsSet = /* @__PURE__ */ new Set(); + this.idMap = /* @__PURE__ */ new Map(); + } + /** + * Adds a trigger element with the given ID. + * + * Note: The provided element is assumed to not be registered under multiple IDs. + */ + add(id, element) { + const existingElement = this.idMap.get(id); + if (existingElement === element) { + return; + } + if (existingElement !== void 0) { + this.elementsSet.delete(existingElement); + } + this.elementsSet.add(element); + this.idMap.set(id, element); + if (true) { + if (this.elementsSet.size !== this.idMap.size) { + throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); + } + } + } + /** + * Removes the trigger element with the given ID. + */ + delete(id) { + const element = this.idMap.get(id); + if (element) { + this.elementsSet.delete(element); + this.idMap.delete(id); + } + } + /** + * Whether the given element is registered as a trigger. + */ + hasElement(element) { + return this.elementsSet.has(element); + } + /** + * Whether there is a registered trigger element matching the given predicate. + */ + hasMatchingElement(predicate) { + for (const element of this.elementsSet) { + if (predicate(element)) { + return true; + } + } + return false; + } + /** + * Returns the trigger element associated with the given ID, or undefined if no such element exists. + */ + getById(id) { + return this.idMap.get(id); + } + /** + * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. + */ + entries() { + return this.idMap.entries(); + } + /** + * Returns an iterable of all registered trigger elements. + */ + elements() { + return this.elementsSet.values(); + } + /** + * Returns the number of registered trigger elements. + */ + get size() { + return this.idMap.size; + } +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/getEmptyRootContext.js +function getEmptyRootContext() { + return new FloatingRootStore({ + open: false, + transitionStatus: void 0, + floatingElement: null, + referenceElement: null, + triggerElements: new PopupTriggerMap(), + floatingId: "", + syncOnly: false, + nested: false, + onOpenChange: void 0 + }); +} + +// node_modules/@base-ui/react/esm/utils/popups/store.js +function createInitialPopupStoreState() { + return { + open: false, + openProp: void 0, + mounted: false, + transitionStatus: void 0, + floatingRootContext: getEmptyRootContext(), + preventUnmountingOnClose: false, + payload: void 0, + activeTriggerId: null, + activeTriggerElement: null, + triggerIdProp: void 0, + popupElement: null, + positionerElement: null, + activeTriggerProps: EMPTY_OBJECT, + inactiveTriggerProps: EMPTY_OBJECT, + popupProps: EMPTY_OBJECT + }; +} +var activeTriggerIdSelector = createSelector((state) => state.triggerIdProp ?? state.activeTriggerId); +var popupStoreSelectors = { + open: createSelector((state) => state.openProp ?? state.open), + mounted: createSelector((state) => state.mounted), + transitionStatus: createSelector((state) => state.transitionStatus), + floatingRootContext: createSelector((state) => state.floatingRootContext), + preventUnmountingOnClose: createSelector((state) => state.preventUnmountingOnClose), + payload: createSelector((state) => state.payload), + activeTriggerId: activeTriggerIdSelector, + activeTriggerElement: createSelector((state) => state.mounted ? state.activeTriggerElement : null), + /** + * Whether the trigger with the given ID was used to open the popup. + */ + isTriggerActive: createSelector((state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId), + /** + * Whether the popup is open and was activated by a trigger with the given ID. + */ + isOpenedByTrigger: createSelector((state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.open), + /** + * Whether the popup is mounted and was activated by a trigger with the given ID. + */ + isMountedByTrigger: createSelector((state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted), + triggerProps: createSelector((state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps), + popupProps: createSelector((state) => state.popupProps), + popupElement: createSelector((state) => state.popupElement), + positionerElement: createSelector((state) => state.positionerElement) +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloatingRootContext.js +function useFloatingRootContext(options) { + const { + open = false, + onOpenChange, + elements = {} + } = options; + const floatingId = useId(); + const nested = useFloatingParentNodeId() != null; + if (true) { + const optionDomReference = elements.reference; + if (optionDomReference && !isElement(optionDomReference)) { + console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead."); + } + } + const store2 = useRefWithInit(() => new FloatingRootStore({ + open, + transitionStatus: void 0, + onOpenChange, + referenceElement: elements.reference ?? null, + floatingElement: elements.floating ?? null, + triggerElements: new PopupTriggerMap(), + floatingId, + syncOnly: false, + nested + })).current; + useIsoLayoutEffect(() => { + const valuesToSync = { + open, + floatingId + }; + if (elements.reference !== void 0) { + valuesToSync.referenceElement = elements.reference; + valuesToSync.domReferenceElement = isElement(elements.reference) ? elements.reference : null; + } + if (elements.floating !== void 0) { + valuesToSync.floatingElement = elements.floating; + } + store2.update(valuesToSync); + }, [open, floatingId, elements.reference, elements.floating, store2]); + store2.context.onOpenChange = onOpenChange; + store2.context.nested = nested; + return store2; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloating.js +function useFloating2(options = {}) { + const { + nodeId, + externalTree + } = options; + const internalRootStore = useFloatingRootContext(options); + const rootContext = options.rootContext || internalRootStore; + const rootContextElements = { + reference: rootContext.useState("referenceElement"), + floating: rootContext.useState("floatingElement"), + domReference: rootContext.useState("domReferenceElement") + }; + const [positionReference, setPositionReferenceRaw] = React29.useState(null); + const domReferenceRef = React29.useRef(null); + const tree = useFloatingTree(externalTree); + useIsoLayoutEffect(() => { + if (rootContextElements.domReference) { + domReferenceRef.current = rootContextElements.domReference; + } + }, [rootContextElements.domReference]); + const position = useFloating({ + ...options, + elements: { + ...rootContextElements, + ...positionReference && { + reference: positionReference + } + } + }); + const setPositionReference = React29.useCallback((node) => { + const computedPositionReference = isElement(node) ? { + getBoundingClientRect: () => node.getBoundingClientRect(), + getClientRects: () => node.getClientRects(), + contextElement: node + } : node; + setPositionReferenceRaw(computedPositionReference); + position.refs.setReference(computedPositionReference); + }, [position.refs]); + const [localDomReference, setLocalDomReference] = React29.useState(void 0); + const [localFloatingElement, setLocalFloatingElement] = React29.useState(null); + rootContext.useSyncedValue("referenceElement", localDomReference ?? null); + const localDomReferenceElement = isElement(localDomReference) ? localDomReference : null; + rootContext.useSyncedValue("domReferenceElement", localDomReference === void 0 ? rootContextElements.domReference : localDomReferenceElement); + rootContext.useSyncedValue("floatingElement", localFloatingElement); + const setReference = React29.useCallback((node) => { + if (isElement(node) || node === null) { + domReferenceRef.current = node; + setLocalDomReference(node); + } + if (isElement(position.refs.reference.current) || position.refs.reference.current === null || // Don't allow setting virtual elements using the old technique back to + // `null` to support `positionReference` + an unstable `reference` + // callback ref. + node !== null && !isElement(node)) { + position.refs.setReference(node); + } + }, [position.refs, setLocalDomReference]); + const setFloating = React29.useCallback((node) => { + setLocalFloatingElement(node); + position.refs.setFloating(node); + }, [position.refs]); + const refs = React29.useMemo(() => ({ + ...position.refs, + setReference, + setFloating, + setPositionReference, + domReference: domReferenceRef + }), [position.refs, setReference, setFloating, setPositionReference]); + const elements = React29.useMemo(() => ({ + ...position.elements, + domReference: rootContextElements.domReference + }), [position.elements, rootContextElements.domReference]); + const open = rootContext.useState("open"); + const floatingId = rootContext.useState("floatingId"); + const context = React29.useMemo(() => ({ + ...position, + dataRef: rootContext.context.dataRef, + open, + onOpenChange: rootContext.setOpen, + events: rootContext.context.events, + floatingId, + refs, + elements, + nodeId, + rootStore: rootContext + }), [position, refs, elements, nodeId, rootContext, open, floatingId]); + useIsoLayoutEffect(() => { + rootContext.context.dataRef.current.floatingContext = context; + const node = tree?.nodesRef.current.find((n) => n.id === nodeId); + if (node) { + node.context = context; + } + }); + return React29.useMemo(() => ({ + ...position, + context, + refs, + elements, + rootStore: rootContext + }), [position, refs, elements, context, rootContext]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +function useSyncedFloatingRootContext(options) { + const { + popupStore, + treatPopupAsFloatingElement = false, + onOpenChange + } = options; + const floatingId = useId(); + const nested = useFloatingParentNodeId() != null; + const open = popupStore.useState("open"); + const referenceElement = popupStore.useState("activeTriggerElement"); + const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement"); + const triggerElements = popupStore.context.triggerElements; + const store2 = useRefWithInit(() => new FloatingRootStore({ + open, + transitionStatus: void 0, + referenceElement, + floatingElement, + triggerElements, + onOpenChange, + floatingId, + syncOnly: true, + nested + })).current; + useIsoLayoutEffect(() => { + const valuesToSync = { + open, + floatingId, + referenceElement, + floatingElement + }; + if (isElement(referenceElement)) { + valuesToSync.domReferenceElement = referenceElement; + } + if (store2.state.positionReference === store2.state.referenceElement) { + valuesToSync.positionReference = referenceElement; + } + store2.update(valuesToSync); + }, [open, floatingId, referenceElement, floatingElement, store2]); + store2.context.onOpenChange = onOpenChange; + store2.context.nested = nested; + return store2; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFocus.js +var React30 = __toESM(require_react(), 1); +var isMacSafari = isMac && isSafari; +function useFocus(context, props = {}) { + const store2 = "rootStore" in context ? context.rootStore : context; + const { + events, + dataRef + } = store2.context; + const { + enabled = true, + delay + } = props; + const blockFocusRef = React30.useRef(false); + const blockedReferenceRef = React30.useRef(null); + const timeout = useTimeout(); + const keyboardModalityRef = React30.useRef(true); + React30.useEffect(() => { + const domReference = store2.select("domReferenceElement"); + if (!enabled) { + return void 0; + } + const win = getWindow(domReference); + function onBlur() { + const currentDomReference = store2.select("domReferenceElement"); + if (!store2.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) { + blockFocusRef.current = true; + } + } + function onKeyDown() { + keyboardModalityRef.current = true; + } + function onPointerDown() { + keyboardModalityRef.current = false; + } + return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true)); + }, [store2, enabled]); + React30.useEffect(() => { + if (!enabled) { + return void 0; + } + function onOpenChangeLocal(details) { + if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) { + const referenceElement = store2.select("domReferenceElement"); + if (isElement(referenceElement)) { + blockedReferenceRef.current = referenceElement; + blockFocusRef.current = true; + } + } + } + events.on("openchange", onOpenChangeLocal); + return () => { + events.off("openchange", onOpenChangeLocal); + }; + }, [events, enabled, store2]); + const reference = React30.useMemo(() => ({ + onMouseLeave() { + blockFocusRef.current = false; + blockedReferenceRef.current = null; + }, + onFocus(event) { + const focusTarget = event.currentTarget; + if (blockFocusRef.current) { + if (blockedReferenceRef.current === focusTarget) { + return; + } + blockFocusRef.current = false; + blockedReferenceRef.current = null; + } + const target = getTarget(event.nativeEvent); + if (isElement(target)) { + if (isMacSafari && !event.relatedTarget) { + if (!keyboardModalityRef.current && !isTypeableElement(target)) { + return; + } + } else if (!matchesFocusVisible(target)) { + return; + } + } + const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements); + const { + nativeEvent, + currentTarget + } = event; + const delayValue = typeof delay === "function" ? delay() : delay; + if (store2.select("open") && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === void 0) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); + return; + } + timeout.start(delayValue, () => { + if (blockFocusRef.current) { + return; + } + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); + }); + }, + onBlur(event) { + blockFocusRef.current = false; + blockedReferenceRef.current = null; + const relatedTarget = event.relatedTarget; + const nativeEvent = event.nativeEvent; + const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside"; + timeout.start(0, () => { + const domReference = store2.select("domReferenceElement"); + const activeEl = activeElement(ownerDocument(domReference)); + if (!relatedTarget && activeEl === domReference) { + return; + } + if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) { + return; + } + const nextFocusedElement = relatedTarget ?? activeEl; + if (isTargetInsideEnabledTrigger(nextFocusedElement, store2.context.triggerElements)) { + return; + } + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent)); + }); + } + }), [dataRef, store2, timeout, delay]); + return React30.useMemo(() => enabled ? { + reference, + trigger: reference + } : {}, [enabled, reference]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +var React31 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverInteractionSharedState.js +var HoverInteraction = class _HoverInteraction { + constructor() { + this.pointerType = void 0; + this.interactedInside = false; + this.handler = void 0; + this.blockMouseMove = true; + this.performedPointerEventsMutation = false; + this.pointerEventsScopeElement = null; + this.pointerEventsReferenceElement = null; + this.pointerEventsFloatingElement = null; + this.restTimeoutPending = false; + this.openChangeTimeout = new Timeout(); + this.restTimeout = new Timeout(); + this.handleCloseOptions = void 0; + } + static create() { + return new _HoverInteraction(); + } + dispose = () => { + this.openChangeTimeout.clear(); + this.restTimeout.clear(); + }; + disposeEffect = () => { + return this.dispose; + }; +}; +var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap(); +function clearSafePolygonPointerEventsMutation(instance) { + if (!instance.performedPointerEventsMutation) { + return; + } + const scopeElement = instance.pointerEventsScopeElement; + if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) { + instance.pointerEventsScopeElement?.style.removeProperty("pointer-events"); + instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events"); + instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events"); + pointerEventsMutationOwnerByScopeElement.delete(scopeElement); + } + instance.performedPointerEventsMutation = false; + instance.pointerEventsScopeElement = null; + instance.pointerEventsReferenceElement = null; + instance.pointerEventsFloatingElement = null; +} +function applySafePolygonPointerEventsMutation(instance, options) { + const { + scopeElement, + referenceElement, + floatingElement + } = options; + const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement); + if (existingOwner && existingOwner !== instance) { + clearSafePolygonPointerEventsMutation(existingOwner); + } + clearSafePolygonPointerEventsMutation(instance); + instance.performedPointerEventsMutation = true; + instance.pointerEventsScopeElement = scopeElement; + instance.pointerEventsReferenceElement = referenceElement; + instance.pointerEventsFloatingElement = floatingElement; + pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance); + scopeElement.style.pointerEvents = "none"; + referenceElement.style.pointerEvents = "auto"; + floatingElement.style.pointerEvents = "auto"; +} +function useHoverInteractionSharedState(store2) { + const instance = useRefWithInit(HoverInteraction.create).current; + const data = store2.context.dataRef.current; + if (!data.hoverInteractionState) { + data.hoverInteractionState = instance; + } + useOnMount(data.hoverInteractionState.disposeEffect); + return data.hoverInteractionState; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +function useHoverFloatingInteraction(context, parameters = {}) { + const store2 = "rootStore" in context ? context.rootStore : context; + const open = store2.useState("open"); + const floatingElement = store2.useState("floatingElement"); + const domReferenceElement = store2.useState("domReferenceElement"); + const { + dataRef + } = store2.context; + const { + enabled = true, + closeDelay: closeDelayProp = 0, + nodeId: nodeIdProp + } = parameters; + const instance = useHoverInteractionSharedState(store2); + const tree = useFloatingTree(); + const parentId = useFloatingParentNodeId(); + const isClickLikeOpenEvent2 = useStableCallback(() => { + return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); + }); + const isHoverOpen = useStableCallback(() => { + const type = dataRef.current.openEvent?.type; + return type?.includes("mouse") && type !== "mousedown"; + }); + const isRelatedTargetInsideEnabledTrigger = useStableCallback((target) => { + return isTargetInsideEnabledTrigger(target, store2.context.triggerElements); + }); + const closeWithDelay = React31.useCallback((event) => { + const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType); + const close = () => { + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + }; + if (closeDelay) { + instance.openChangeTimeout.start(closeDelay, close); + } else { + instance.openChangeTimeout.clear(); + close(); + } + }, [closeDelayProp, store2, instance, tree]); + const clearPointerEvents = useStableCallback(() => { + clearSafePolygonPointerEventsMutation(instance); + }); + const handleInteractInside = useStableCallback((event) => { + const target = getTarget(event); + if (!isInteractiveElement(target)) { + instance.interactedInside = false; + return; + } + instance.interactedInside = target?.closest("[aria-haspopup]") != null; + }); + useIsoLayoutEffect(() => { + if (!open) { + instance.pointerType = void 0; + instance.restTimeoutPending = false; + instance.interactedInside = false; + clearPointerEvents(); + } + }, [open, instance, clearPointerEvents]); + React31.useEffect(() => { + return clearPointerEvents; + }, [clearPointerEvents]); + useIsoLayoutEffect(() => { + if (!enabled) { + return void 0; + } + if (open && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) { + const ref = domReferenceElement; + const floatingEl = floatingElement; + const doc = ownerDocument(floatingElement); + const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating; + if (parentFloating) { + parentFloating.style.pointerEvents = ""; + } + const scopeElement = instance.handleCloseOptions?.getScope?.() ?? instance.pointerEventsScopeElement ?? parentFloating ?? ref.closest("[data-rootownerid]") ?? doc.body; + applySafePolygonPointerEventsMutation(instance, { + scopeElement, + referenceElement: ref, + floatingElement: floatingEl + }); + return () => { + clearPointerEvents(); + }; + } + return void 0; + }, [enabled, open, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]); + const childClosedTimeout = useTimeout(); + React31.useEffect(() => { + if (!enabled) { + return void 0; + } + function onFloatingMouseEnter() { + instance.openChangeTimeout.clear(); + childClosedTimeout.clear(); + tree?.events.off("floating.closed", onNodeClosed); + clearPointerEvents(); + } + function onFloatingMouseLeave(event) { + if (tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0) { + tree.events.on("floating.closed", onNodeClosed); + return; + } + if (isRelatedTargetInsideEnabledTrigger(event.relatedTarget)) { + return; + } + const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp; + const relatedTarget = event.relatedTarget; + const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget)); + if (isMovingIntoDescendantFloating) { + return; + } + if (instance.handler) { + instance.handler(event); + return; + } + clearPointerEvents(); + if (!isClickLikeOpenEvent2()) { + closeWithDelay(event); + } + } + function onNodeClosed(event) { + if (!tree || !parentId || getNodeChildren(tree.nodesRef.current, parentId).length > 0) { + return; + } + childClosedTimeout.start(0, () => { + tree.events.off("floating.closed", onNodeClosed); + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree.events.emit("floating.closed", event); + }); + } + const floating = floatingElement; + return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => { + tree?.events.off("floating.closed", onNodeClosed); + }); + }, [enabled, floatingElement, store2, dataRef, nodeIdProp, isClickLikeOpenEvent2, isRelatedTargetInsideEnabledTrigger, closeWithDelay, clearPointerEvents, handleInteractInside, instance, tree, parentId, childClosedTimeout]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +var React32 = __toESM(require_react(), 1); +var ReactDOM4 = __toESM(require_react_dom(), 1); +var EMPTY_REF = { + current: null +}; +function useHoverReferenceInteraction(context, props = {}) { + const store2 = "rootStore" in context ? context.rootStore : context; + const { + dataRef, + events + } = store2.context; + const { + enabled = true, + delay = 0, + handleClose = null, + mouseOnly = false, + restMs = 0, + move = true, + triggerElementRef = EMPTY_REF, + externalTree, + isActiveTrigger = true, + getHandleCloseContext, + isClosing + } = props; + const tree = useFloatingTree(externalTree); + const instance = useHoverInteractionSharedState(store2); + const isHoverCloseActiveRef = React32.useRef(false); + const handleCloseRef = useValueAsRef(handleClose); + const delayRef = useValueAsRef(delay); + const restMsRef = useValueAsRef(restMs); + const enabledRef = useValueAsRef(enabled); + const isClosingRef = useValueAsRef(isClosing); + if (isActiveTrigger) { + instance.handleCloseOptions = handleCloseRef.current?.__options; + } + const isClickLikeOpenEvent2 = useStableCallback(() => { + return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); + }); + const isRelatedTargetInsideEnabledTrigger = useStableCallback((target) => { + return isTargetInsideEnabledTrigger(target, store2.context.triggerElements); + }); + const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => { + const allTriggers = store2.context.triggerElements; + if (allTriggers.hasElement(currentTarget)) { + return !currentDomReference || !contains(currentDomReference, currentTarget); + } + if (!isElement(target)) { + return false; + } + const targetElement = target; + return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement)); + }); + const closeWithDelay = useStableCallback((event, runElseBranch = true) => { + const closeDelay = getDelay(delayRef.current, "close", instance.pointerType); + if (closeDelay) { + instance.openChangeTimeout.start(closeDelay, () => { + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + }); + } else if (runElseBranch) { + instance.openChangeTimeout.clear(); + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + } + }); + const cleanupMouseMoveHandler = useStableCallback(() => { + if (!instance.handler) { + return; + } + const doc = ownerDocument(store2.select("domReferenceElement")); + doc.removeEventListener("mousemove", instance.handler); + instance.handler = void 0; + }); + const clearPointerEvents = useStableCallback(() => { + clearSafePolygonPointerEventsMutation(instance); + }); + React32.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]); + React32.useEffect(() => { + if (!enabled) { + return void 0; + } + function onOpenChangeLocal(details) { + if (!details.open) { + isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover; + cleanupMouseMoveHandler(); + instance.openChangeTimeout.clear(); + instance.restTimeout.clear(); + instance.blockMouseMove = true; + instance.restTimeoutPending = false; + } else { + isHoverCloseActiveRef.current = false; + } + } + events.on("openchange", onOpenChangeLocal); + return () => { + events.off("openchange", onOpenChangeLocal); + }; + }, [enabled, events, instance, cleanupMouseMoveHandler]); + React32.useEffect(() => { + if (!enabled) { + return void 0; + } + const trigger = triggerElementRef.current ?? (isActiveTrigger ? store2.select("domReferenceElement") : null); + if (!isElement(trigger)) { + return void 0; + } + function onMouseEnter(event) { + instance.openChangeTimeout.clear(); + instance.blockMouseMove = false; + if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { + return; + } + const restMsValue = getRestMs(restMsRef.current); + const openDelay = getDelay(delayRef.current, "open", instance.pointerType); + const eventTarget = getTarget(event); + const currentTarget = event.currentTarget ?? null; + const currentDomReference = store2.select("domReferenceElement"); + let triggerNode = currentTarget; + if (isElement(eventTarget) && !store2.context.triggerElements.hasElement(eventTarget)) { + for (const triggerElement of store2.context.triggerElements.elements()) { + if (contains(triggerElement, eventTarget)) { + triggerNode = triggerElement; + break; + } + } + } + if (isElement(currentTarget) && isElement(currentDomReference) && !store2.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) { + triggerNode = currentDomReference; + } + const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget); + const isOpen = store2.select("open"); + const isInClosingTransition = isClosingRef.current?.() ?? store2.select("transitionStatus") === "ending"; + const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current; + const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition; + const isRestOnlyDelay = restMsValue > 0 && !openDelay; + const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition; + const shouldOpen = !isOpen || isOverInactive; + if (shouldOpenImmediately) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + return; + } + if (isRestOnlyDelay) { + return; + } + if (openDelay) { + instance.openChangeTimeout.start(openDelay, () => { + if (shouldOpen) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + } + }); + } else if (shouldOpen) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + } + } + function onMouseLeave(event) { + if (isClickLikeOpenEvent2()) { + clearPointerEvents(); + return; + } + cleanupMouseMoveHandler(); + const domReferenceElement = store2.select("domReferenceElement"); + const doc = ownerDocument(domReferenceElement); + instance.restTimeout.clear(); + instance.restTimeoutPending = false; + const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.(); + const ignoreRelatedTargetTrigger = isRelatedTargetInsideEnabledTrigger(event.relatedTarget); + if (ignoreRelatedTargetTrigger) { + return; + } + if (handleCloseRef.current && handleCloseContextBase) { + if (!store2.select("open")) { + instance.openChangeTimeout.clear(); + } + const currentTrigger = triggerElementRef.current; + instance.handler = handleCloseRef.current({ + ...handleCloseContextBase, + tree, + x: event.clientX, + y: event.clientY, + onClose() { + clearPointerEvents(); + cleanupMouseMoveHandler(); + if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store2.select("domReferenceElement")) { + closeWithDelay(event, true); + } + } + }); + doc.addEventListener("mousemove", instance.handler); + instance.handler(event); + return; + } + const shouldClose = instance.pointerType === "touch" ? !contains(store2.select("floatingElement"), event.relatedTarget) : true; + if (shouldClose) { + closeWithDelay(event); + } + } + if (move) { + return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, { + once: true + }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave)); + } + return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave)); + }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, closeWithDelay, store2, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, isRelatedTargetInsideEnabledTrigger, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef]); + return React32.useMemo(() => { + if (!enabled) { + return void 0; + } + function setPointerRef(event) { + instance.pointerType = event.pointerType; + } + return { + onPointerDown: setPointerRef, + onPointerEnter: setPointerRef, + onMouseMove(event) { + const { + nativeEvent + } = event; + const trigger = event.currentTarget; + const currentDomReference = store2.select("domReferenceElement"); + const currentOpen = store2.select("open"); + const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target); + if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { + return; + } + if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) { + const floatingElement = store2.select("floatingElement"); + if (floatingElement) { + const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body; + applySafePolygonPointerEventsMutation(instance, { + scopeElement, + referenceElement: trigger, + floatingElement + }); + } + } + const restMsValue = getRestMs(restMsRef.current); + if (currentOpen && !isOverInactive || restMsValue === 0) { + return; + } + if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) { + return; + } + instance.restTimeout.clear(); + function handleMouseMove() { + instance.restTimeoutPending = false; + if (isClickLikeOpenEvent2()) { + return; + } + const latestOpen = store2.select("open"); + if (!instance.blockMouseMove && (!latestOpen || isOverInactive)) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger)); + } + } + if (instance.pointerType === "touch") { + ReactDOM4.flushSync(() => { + handleMouseMove(); + }); + } else if (isOverInactive && currentOpen) { + handleMouseMove(); + } else { + instance.restTimeoutPending = true; + instance.restTimeout.start(restMsValue, handleMouseMove); + } + } + }; + }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store2, restMsRef]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useInteractions.js +var React33 = __toESM(require_react(), 1); +function useInteractions(propsList = []) { + const referenceDeps = propsList.map((key) => key?.reference); + const floatingDeps = propsList.map((key) => key?.floating); + const itemDeps = propsList.map((key) => key?.item); + const triggerDeps = propsList.map((key) => key?.trigger); + const getReferenceProps = React33.useCallback( + (userProps) => mergeProps2(userProps, propsList, "reference"), + // eslint-disable-next-line react-hooks/exhaustive-deps + referenceDeps + ); + const getFloatingProps = React33.useCallback( + (userProps) => mergeProps2(userProps, propsList, "floating"), + // eslint-disable-next-line react-hooks/exhaustive-deps + floatingDeps + ); + const getItemProps = React33.useCallback( + (userProps) => mergeProps2(userProps, propsList, "item"), + // eslint-disable-next-line react-hooks/exhaustive-deps + itemDeps + ); + const getTriggerProps = React33.useCallback( + (userProps) => mergeProps2(userProps, propsList, "trigger"), + // eslint-disable-next-line react-hooks/exhaustive-deps + triggerDeps + ); + return React33.useMemo(() => ({ + getReferenceProps, + getFloatingProps, + getItemProps, + getTriggerProps + }), [getReferenceProps, getFloatingProps, getItemProps, getTriggerProps]); +} +function mergeProps2(userProps, propsList, elementKey) { + const eventHandlers = /* @__PURE__ */ new Map(); + const isItem = elementKey === "item"; + const outputProps = {}; + if (elementKey === "floating") { + outputProps.tabIndex = -1; + outputProps[FOCUSABLE_ATTRIBUTE] = ""; + } + for (const key in userProps) { + if (isItem && userProps) { + if (key === ACTIVE_KEY || key === SELECTED_KEY) { + continue; + } + } + outputProps[key] = userProps[key]; + } + for (let i = 0; i < propsList.length; i += 1) { + let props; + const propsOrGetProps = propsList[i]?.[elementKey]; + if (typeof propsOrGetProps === "function") { + props = userProps ? propsOrGetProps(userProps) : null; + } else { + props = propsOrGetProps; + } + if (!props) { + continue; + } + mutablyMergeProps(outputProps, props, isItem, eventHandlers); + } + mutablyMergeProps(outputProps, userProps, isItem, eventHandlers); + return outputProps; +} +function mutablyMergeProps(outputProps, props, isItem, eventHandlers) { + for (const key in props) { + const value = props[key]; + if (isItem && (key === ACTIVE_KEY || key === SELECTED_KEY)) { + continue; + } + if (!key.startsWith("on")) { + outputProps[key] = value; + } else { + if (!eventHandlers.has(key)) { + eventHandlers.set(key, []); + } + if (typeof value === "function") { + eventHandlers.get(key)?.push(value); + outputProps[key] = (...args) => { + return eventHandlers.get(key)?.map((fn) => fn(...args)).find((val) => val !== void 0); + }; + } + } + } +} + +// node_modules/@base-ui/react/esm/floating-ui-react/safePolygon.js +var CURSOR_SPEED_THRESHOLD = 0.1; +var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD; +var POLYGON_BUFFER = 0.5; +function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) { + return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi; +} +function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) { + let isInsideValue = false; + if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) { + isInsideValue = !isInsideValue; + } + if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) { + isInsideValue = !isInsideValue; + } + if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) { + isInsideValue = !isInsideValue; + } + if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) { + isInsideValue = !isInsideValue; + } + return isInsideValue; +} +function isInsideRect(pointX, pointY, rect) { + return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height; +} +function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) { + const minX = Math.min(x1, x2); + const maxX = Math.max(x1, x2); + const minY = Math.min(y1, y2); + const maxY = Math.max(y1, y2); + return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY; +} +function safePolygon(options = {}) { + const { + blockPointerEvents = false + } = options; + const timeout = new Timeout(); + const fn = ({ + x, + y, + placement, + elements, + onClose, + nodeId, + tree + }) => { + const side = placement?.split("-")[0]; + let hasLanded = false; + let lastX = null; + let lastY = null; + let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0; + function isCursorMovingSlowly(nextX, nextY) { + const currentTime = performance.now(); + const elapsedTime = currentTime - lastCursorTime; + if (lastX === null || lastY === null || elapsedTime === 0) { + lastX = nextX; + lastY = nextY; + lastCursorTime = currentTime; + return false; + } + const deltaX = nextX - lastX; + const deltaY = nextY - lastY; + const distanceSquared = deltaX * deltaX + deltaY * deltaY; + const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED; + lastX = nextX; + lastY = nextY; + lastCursorTime = currentTime; + return distanceSquared < thresholdSquared; + } + function close() { + timeout.clear(); + onClose(); + } + return function onMouseMove(event) { + timeout.clear(); + const domReference = elements.domReference; + const floating = elements.floating; + if (!domReference || !floating || side == null || x == null || y == null) { + return void 0; + } + const { + clientX, + clientY + } = event; + const target = getTarget(event); + const isLeave = event.type === "mouseleave"; + const isOverFloatingEl = contains(floating, target); + const isOverReferenceEl = contains(domReference, target); + if (isOverFloatingEl) { + hasLanded = true; + if (!isLeave) { + return void 0; + } + } + if (isOverReferenceEl) { + hasLanded = false; + if (!isLeave) { + hasLanded = true; + return void 0; + } + } + if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) { + return void 0; + } + function hasOpenChildNode() { + return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0); + } + function closeIfNoOpenChild() { + if (!hasOpenChildNode()) { + close(); + } + } + if (hasOpenChildNode()) { + return void 0; + } + const refRect = domReference.getBoundingClientRect(); + const rect = floating.getBoundingClientRect(); + const cursorLeaveFromRight = x > rect.right - rect.width / 2; + const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2; + const isFloatingWider = rect.width > refRect.width; + const isFloatingTaller = rect.height > refRect.height; + const left = (isFloatingWider ? refRect : rect).left; + const right = (isFloatingWider ? refRect : rect).right; + const top = (isFloatingTaller ? refRect : rect).top; + const bottom = (isFloatingTaller ? refRect : rect).bottom; + if (side === "top" && y >= refRect.bottom - 1 || side === "bottom" && y <= refRect.top + 1 || side === "left" && x >= refRect.right - 1 || side === "right" && x <= refRect.left + 1) { + closeIfNoOpenChild(); + return void 0; + } + let isInsideTroughRect = false; + switch (side) { + case "top": + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1); + break; + case "bottom": + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1); + break; + case "left": + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top); + break; + case "right": + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top); + break; + default: + } + if (isInsideTroughRect) { + return void 0; + } + if (hasLanded && !isInsideRect(clientX, clientY, refRect)) { + closeIfNoOpenChild(); + return void 0; + } + if (!isLeave && isCursorMovingSlowly(clientX, clientY)) { + closeIfNoOpenChild(); + return void 0; + } + let isInsidePolygon = false; + switch (side) { + case "top": { + const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; + const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; + const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; + const cursorPointY = y + POLYGON_BUFFER + 1; + const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top; + const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER; + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); + break; + } + case "bottom": { + const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; + const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; + const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; + const cursorPointY = y - POLYGON_BUFFER; + const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom; + const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER; + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); + break; + } + case "left": { + const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; + const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; + const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; + const cursorPointX = x + POLYGON_BUFFER + 1; + const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left; + const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER; + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY); + break; + } + case "right": { + const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; + const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; + const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; + const cursorPointX = x - POLYGON_BUFFER; + const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right; + const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER; + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom); + break; + } + default: + } + if (!isInsidePolygon) { + closeIfNoOpenChild(); + } else if (!hasLanded) { + timeout.start(40, closeIfNoOpenChild); + } + return void 0; + }; + }; + fn.__options = { + ...options, + blockPointerEvents + }; + return fn; +} + +// node_modules/@base-ui/react/esm/utils/popupStateMapping.js +var CommonPopupDataAttributes = (function(CommonPopupDataAttributes2) { + CommonPopupDataAttributes2["open"] = "data-open"; + CommonPopupDataAttributes2["closed"] = "data-closed"; + CommonPopupDataAttributes2[CommonPopupDataAttributes2["startingStyle"] = TransitionStatusDataAttributes.startingStyle] = "startingStyle"; + CommonPopupDataAttributes2[CommonPopupDataAttributes2["endingStyle"] = TransitionStatusDataAttributes.endingStyle] = "endingStyle"; + CommonPopupDataAttributes2["anchorHidden"] = "data-anchor-hidden"; + CommonPopupDataAttributes2["side"] = "data-side"; + CommonPopupDataAttributes2["align"] = "data-align"; + return CommonPopupDataAttributes2; +})({}); +var CommonTriggerDataAttributes = /* @__PURE__ */ (function(CommonTriggerDataAttributes2) { + CommonTriggerDataAttributes2["popupOpen"] = "data-popup-open"; + CommonTriggerDataAttributes2["pressed"] = "data-pressed"; + return CommonTriggerDataAttributes2; +})({}); +var TRIGGER_HOOK = { + [CommonTriggerDataAttributes.popupOpen]: "" +}; +var PRESSABLE_TRIGGER_HOOK = { + [CommonTriggerDataAttributes.popupOpen]: "", + [CommonTriggerDataAttributes.pressed]: "" +}; +var POPUP_OPEN_HOOK = { + [CommonPopupDataAttributes.open]: "" +}; +var POPUP_CLOSED_HOOK = { + [CommonPopupDataAttributes.closed]: "" +}; +var ANCHOR_HIDDEN_HOOK = { + [CommonPopupDataAttributes.anchorHidden]: "" +}; +var triggerOpenStateMapping = { + open(value) { + if (value) { + return TRIGGER_HOOK; + } + return null; + } +}; +var popupStateMapping = { + open(value) { + if (value) { + return POPUP_OPEN_HOOK; + } + return POPUP_CLOSED_HOOK; + }, + anchorHidden(value) { + if (value) { + return ANCHOR_HIDDEN_HOOK; + } + return null; + } +}; + +// node_modules/@base-ui/utils/esm/inertValue.js +function inertValue(value) { + if (isReactVersionAtLeast(19)) { + return value; + } + return value ? "true" : void 0; +} + +// node_modules/@base-ui/react/esm/utils/useAnchorPositioning.js +var React34 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/middleware/arrow.js +var baseArrow = (options) => ({ + name: "arrow", + options, + async fn(state) { + const { + x, + y, + placement, + rects, + platform: platform3, + elements, + middlewareData + } = state; + const { + element, + padding = 0, + offsetParent = "real" + } = evaluate(options, state) || {}; + if (element == null) { + return {}; + } + const paddingObject = getPaddingObject(padding); + const coords = { + x, + y + }; + const axis = getAlignmentAxis(placement); + const length = getAxisLength(axis); + const arrowDimensions = await platform3.getDimensions(element); + const isYAxis = axis === "y"; + const minProp = isYAxis ? "top" : "left"; + const maxProp = isYAxis ? "bottom" : "right"; + const clientProp = isYAxis ? "clientHeight" : "clientWidth"; + const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; + const startDiff = coords[axis] - rects.reference[axis]; + const arrowOffsetParent = offsetParent === "real" ? await platform3.getOffsetParent?.(element) : elements.floating; + let clientSize = elements.floating[clientProp] || rects.floating[length]; + if (!clientSize || !await platform3.isElement?.(arrowOffsetParent)) { + clientSize = elements.floating[clientProp] || rects.floating[length]; + } + const centerToReference = endDiff / 2 - startDiff / 2; + const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; + const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); + const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); + const min2 = minPadding; + const max2 = clientSize - arrowDimensions[length] - maxPadding; + const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; + const offset4 = clamp(min2, center, max2); + const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; + const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; + return { + [axis]: coords[axis] + alignmentOffset, + data: { + [axis]: offset4, + centerOffset: center - offset4 - alignmentOffset, + ...shouldAddOffset && { + alignmentOffset + } + }, + reset: shouldAddOffset + }; + } +}); +var arrow4 = (options, deps) => ({ + ...baseArrow(options), + options: [options, deps] +}); + +// node_modules/@base-ui/react/esm/utils/hideMiddleware.js +var hide4 = { + name: "hide", + async fn(state) { + const { + width, + height, + x, + y + } = state.rects.reference; + const anchorHidden = width === 0 && height === 0 && x === 0 && y === 0; + const nativeHideResult = await hide3().fn(state); + return { + data: { + referenceHidden: nativeHideResult.data?.referenceHidden || anchorHidden + } + }; + } +}; + +// node_modules/@base-ui/react/esm/utils/adaptiveOriginMiddleware.js +var DEFAULT_SIDES = { + sideX: "left", + sideY: "top" +}; +var adaptiveOrigin = { + name: "adaptiveOrigin", + async fn(state) { + const { + x: rawX, + y: rawY, + rects: { + floating: floatRect + }, + elements: { + floating + }, + platform: platform3, + strategy, + placement + } = state; + const win = getWindow(floating); + const styles = win.getComputedStyle(floating); + const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== ""; + if (!hasTransition) { + return { + x: rawX, + y: rawY, + data: DEFAULT_SIDES + }; + } + const offsetParent = await platform3.getOffsetParent?.(floating); + let offsetDimensions = { + width: 0, + height: 0 + }; + if (strategy === "fixed" && win?.visualViewport) { + offsetDimensions = { + width: win.visualViewport.width, + height: win.visualViewport.height + }; + } else if (offsetParent === win) { + const doc = ownerDocument(floating); + offsetDimensions = { + width: doc.documentElement.clientWidth, + height: doc.documentElement.clientHeight + }; + } else if (await platform3.isElement?.(offsetParent)) { + offsetDimensions = await platform3.getDimensions(offsetParent); + } + const currentSide = getSide(placement); + let x = rawX; + let y = rawY; + if (currentSide === "left") { + x = offsetDimensions.width - (rawX + floatRect.width); + } + if (currentSide === "top") { + y = offsetDimensions.height - (rawY + floatRect.height); + } + const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX; + const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY; + return { + x, + y, + data: { + sideX, + sideY + } + }; + } +}; + +// node_modules/@base-ui/react/esm/utils/useAnchorPositioning.js +function getLogicalSide(sideParam, renderedSide, isRtl) { + const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; + const logicalRight = isRtl ? "inline-start" : "inline-end"; + const logicalLeft = isRtl ? "inline-end" : "inline-start"; + return { + top: "top", + right: isLogicalSideParam ? logicalRight : "right", + bottom: "bottom", + left: isLogicalSideParam ? logicalLeft : "left" + }[renderedSide]; +} +function getOffsetData(state, sideParam, isRtl) { + const { + rects, + placement + } = state; + const data = { + side: getLogicalSide(sideParam, getSide(placement), isRtl), + align: getAlignment(placement) || "center", + anchor: { + width: rects.reference.width, + height: rects.reference.height + }, + positioner: { + width: rects.floating.width, + height: rects.floating.height + } + }; + return data; +} +function useAnchorPositioning(params) { + const { + // Public parameters + anchor, + positionMethod = "absolute", + side: sideParam = "bottom", + sideOffset = 0, + align = "center", + alignOffset = 0, + collisionBoundary, + collisionPadding: collisionPaddingParam = 5, + sticky = false, + arrowPadding = 5, + disableAnchorTracking = false, + // Private parameters + keepMounted = false, + floatingRootContext, + mounted, + collisionAvoidance, + shiftCrossAxis = false, + nodeId, + adaptiveOrigin: adaptiveOrigin2, + lazyFlip = false, + externalTree + } = params; + const [mountSide, setMountSide] = React34.useState(null); + if (!mounted && mountSide !== null) { + setMountSide(null); + } + const collisionAvoidanceSide = collisionAvoidance.side || "flip"; + const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; + const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; + const anchorFn = typeof anchor === "function" ? anchor : void 0; + const anchorFnCallback = useStableCallback(anchorFn); + const anchorDep = anchorFn ? anchorFnCallback : anchor; + const anchorValueRef = useValueAsRef(anchor); + const mountedRef = useValueAsRef(mounted); + const direction = useDirection(); + const isRtl = direction === "rtl"; + const side = mountSide || { + top: "top", + right: "right", + bottom: "bottom", + left: "left", + "inline-end": isRtl ? "left" : "right", + "inline-start": isRtl ? "right" : "left" + }[sideParam]; + const placement = align === "center" ? side : `${side}-${align}`; + let collisionPadding = collisionPaddingParam; + const bias = 1; + const biasTop = sideParam === "bottom" ? bias : 0; + const biasBottom = sideParam === "top" ? bias : 0; + const biasLeft = sideParam === "right" ? bias : 0; + const biasRight = sideParam === "left" ? bias : 0; + if (typeof collisionPadding === "number") { + collisionPadding = { + top: collisionPadding + biasTop, + right: collisionPadding + biasRight, + bottom: collisionPadding + biasBottom, + left: collisionPadding + biasLeft + }; + } else if (collisionPadding) { + collisionPadding = { + top: (collisionPadding.top || 0) + biasTop, + right: (collisionPadding.right || 0) + biasRight, + bottom: (collisionPadding.bottom || 0) + biasBottom, + left: (collisionPadding.left || 0) + biasLeft + }; + } + const commonCollisionProps = { + boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, + padding: collisionPadding + }; + const arrowRef = React34.useRef(null); + const sideOffsetRef = useValueAsRef(sideOffset); + const alignOffsetRef = useValueAsRef(alignOffset); + const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; + const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; + const middleware = [offset3((state) => { + const data = getOffsetData(state, sideParam, isRtl); + const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; + const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; + return { + mainAxis: sideAxis, + crossAxis: alignAxis, + alignmentAxis: alignAxis + }; + }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])]; + const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; + const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); + const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ + ...commonCollisionProps, + // Ensure the popup flips if it's been limited by its --available-height and it resizes. + // Since the size() padding is smaller than the flip() padding, flip() will take precedence. + padding: { + top: collisionPadding.top + bias, + right: collisionPadding.right + bias, + bottom: collisionPadding.bottom + bias, + left: collisionPadding.left + bias + }, + mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", + crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, + fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide + }); + const shiftMiddleware = shiftDisabled ? null : shift3((data) => { + const html = ownerDocument(data.elements.floating).documentElement; + return { + ...commonCollisionProps, + // Use the Layout Viewport to avoid shifting around when pinch-zooming + // for context menus. + rootBoundary: shiftCrossAxis ? { + x: 0, + y: 0, + width: html.clientWidth, + height: html.clientHeight + } : void 0, + mainAxis: collisionAvoidanceAlign !== "none", + crossAxis: crossAxisShiftEnabled, + limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { + if (!arrowRef.current) { + return {}; + } + const { + width, + height + } = arrowRef.current.getBoundingClientRect(); + const sideAxis = getSideAxis(getSide(limitData.placement)); + const arrowSize = sideAxis === "y" ? width : height; + const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; + return { + offset: arrowSize / 2 + offsetAmount / 2 + }; + }) + }; + }, [commonCollisionProps, sticky, shiftCrossAxis, collisionPadding, collisionAvoidanceAlign]); + if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || align === "center") { + middleware.push(shiftMiddleware, flipMiddleware); + } else { + middleware.push(flipMiddleware, shiftMiddleware); + } + middleware.push(size3({ + ...commonCollisionProps, + apply({ + elements: { + floating + }, + availableWidth, + availableHeight, + rects + }) { + if (!mountedRef.current) { + return; + } + const floatingStyle = floating.style; + floatingStyle.setProperty("--available-width", `${availableWidth}px`); + floatingStyle.setProperty("--available-height", `${availableHeight}px`); + const dpr = getWindow(floating).devicePixelRatio || 1; + const { + x: x2, + y: y2, + width, + height + } = rects.reference; + const anchorWidth = (Math.round((x2 + width) * dpr) - Math.round(x2 * dpr)) / dpr; + const anchorHeight = (Math.round((y2 + height) * dpr) - Math.round(y2 * dpr)) / dpr; + floatingStyle.setProperty("--anchor-width", `${anchorWidth}px`); + floatingStyle.setProperty("--anchor-height", `${anchorHeight}px`); + } + }), arrow4(() => ({ + // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, + // we'll create a fake element. + element: arrowRef.current || ownerDocument(arrowRef.current).createElement("div"), + padding: arrowPadding, + offsetParent: "floating" + }), [arrowPadding]), { + name: "transformOrigin", + fn(state) { + const { + elements: elements2, + middlewareData: middlewareData2, + placement: renderedPlacement2, + rects, + y: y2 + } = state; + const currentRenderedSide = getSide(renderedPlacement2); + const currentRenderedAxis = getSideAxis(currentRenderedSide); + const arrowEl = arrowRef.current; + const arrowX = middlewareData2.arrow?.x || 0; + const arrowY = middlewareData2.arrow?.y || 0; + const arrowWidth = arrowEl?.clientWidth || 0; + const arrowHeight = arrowEl?.clientHeight || 0; + const transformX = arrowX + arrowWidth / 2; + const transformY = arrowY + arrowHeight / 2; + const shiftY = Math.abs(middlewareData2.shift?.y || 0); + const halfAnchorHeight = rects.reference.height / 2; + const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; + const isOverlappingAnchor = shiftY > sideOffsetValue; + const adjacentTransformOrigin = { + top: `${transformX}px calc(100% + ${sideOffsetValue}px)`, + bottom: `${transformX}px ${-sideOffsetValue}px`, + left: `calc(100% + ${sideOffsetValue}px) ${transformY}px`, + right: `${-sideOffsetValue}px ${transformY}px` + }[currentRenderedSide]; + const overlapTransformOrigin = `${transformX}px ${rects.reference.y + halfAnchorHeight - y2}px`; + elements2.floating.style.setProperty("--transform-origin", crossAxisShiftEnabled && currentRenderedAxis === "y" && isOverlappingAnchor ? overlapTransformOrigin : adjacentTransformOrigin); + return {}; + } + }, hide4, adaptiveOrigin2); + useIsoLayoutEffect(() => { + if (!mounted && floatingRootContext) { + floatingRootContext.update({ + referenceElement: null, + floatingElement: null, + domReferenceElement: null, + positionReference: null + }); + } + }, [mounted, floatingRootContext]); + const autoUpdateOptions = React34.useMemo(() => ({ + elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", + layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" + }), [disableAnchorTracking]); + const { + refs, + elements, + x, + y, + middlewareData, + update: update2, + placement: renderedPlacement, + context, + isPositioned, + floatingStyles: originalFloatingStyles + } = useFloating2({ + rootContext: floatingRootContext, + open: keepMounted ? mounted : void 0, + placement, + middleware, + strategy: positionMethod, + whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), + nodeId, + externalTree + }); + const { + sideX, + sideY + } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; + const resolvedPosition = isPositioned ? positionMethod : "fixed"; + const floatingStyles = React34.useMemo(() => { + const base = adaptiveOrigin2 ? { + position: resolvedPosition, + [sideX]: x, + [sideY]: y + } : { + position: resolvedPosition, + ...originalFloatingStyles + }; + if (!isPositioned) { + base.opacity = 0; + } + return base; + }, [adaptiveOrigin2, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]); + const registeredPositionReferenceRef = React34.useRef(null); + useIsoLayoutEffect(() => { + if (!mounted) { + return; + } + const anchorValue = anchorValueRef.current; + const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; + const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; + const finalAnchor = unwrappedElement || null; + if (finalAnchor !== registeredPositionReferenceRef.current) { + refs.setPositionReference(finalAnchor); + registeredPositionReferenceRef.current = finalAnchor; + } + }, [mounted, refs, anchorDep, anchorValueRef]); + React34.useEffect(() => { + if (!mounted) { + return; + } + const anchorValue = anchorValueRef.current; + if (typeof anchorValue === "function") { + return; + } + if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { + refs.setPositionReference(anchorValue.current); + registeredPositionReferenceRef.current = anchorValue.current; + } + }, [mounted, refs, anchorDep, anchorValueRef]); + React34.useEffect(() => { + if (keepMounted && mounted && elements.domReference && elements.floating) { + return autoUpdate(elements.domReference, elements.floating, update2, autoUpdateOptions); + } + return void 0; + }, [keepMounted, mounted, elements, update2, autoUpdateOptions]); + const renderedSide = getSide(renderedPlacement); + const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); + const renderedAlign = getAlignment(renderedPlacement) || "center"; + const anchorHidden = Boolean(middlewareData.hide?.referenceHidden); + useIsoLayoutEffect(() => { + if (lazyFlip && mounted && isPositioned) { + setMountSide(renderedSide); + } + }, [lazyFlip, mounted, isPositioned, renderedSide]); + const arrowStyles = React34.useMemo(() => ({ + position: "absolute", + top: middlewareData.arrow?.y, + left: middlewareData.arrow?.x + }), [middlewareData.arrow]); + const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; + return React34.useMemo(() => ({ + positionerStyles: floatingStyles, + arrowStyles, + arrowRef, + arrowUncentered, + side: logicalRenderedSide, + align: renderedAlign, + physicalSide: renderedSide, + anchorHidden, + refs, + context, + isPositioned, + update: update2 + }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden, refs, context, isPositioned, update2]); +} +function isRef(param) { + return param != null && "current" in param; +} + +// node_modules/@base-ui/react/esm/utils/getDisabledMountTransitionStyles.js +function getDisabledMountTransitionStyles(transitionStatus) { + return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; +} + +// node_modules/@base-ui/react/esm/utils/usePositioner.js +function usePositioner(componentProps, state, { + styles, + transitionStatus, + props, + refs, + hidden, + inert = false +}) { + const style = { + ...styles + }; + if (inert) { + style.pointerEvents = "none"; + } + return useRenderElement("div", componentProps, { + state, + ref: refs, + props: [{ + role: "presentation", + hidden, + style + }, getDisabledMountTransitionStyles(transitionStatus), props], + stateAttributesMapping: popupStateMapping + }); +} + +// node_modules/@base-ui/react/esm/button/Button.js +var React35 = __toESM(require_react(), 1); +var Button = /* @__PURE__ */ React35.forwardRef(function Button2(componentProps, forwardedRef) { + const { + render, + className, + disabled: disabled2 = false, + focusableWhenDisabled = false, + nativeButton = true, + style, + ...elementProps + } = componentProps; + const { + getButtonProps, + buttonRef + } = useButton({ + disabled: disabled2, + focusableWhenDisabled, + native: nativeButton + }); + const state = { + disabled: disabled2 + }; + return useRenderElement("button", componentProps, { + state, + ref: [forwardedRef, buttonRef], + props: [elementProps, getButtonProps] + }); +}); +if (true) Button.displayName = "Button"; + +// node_modules/@base-ui/react/esm/utils/usePopupViewport.js +var React38 = __toESM(require_react(), 1); +var ReactDOM5 = __toESM(require_react_dom(), 1); + +// node_modules/@base-ui/utils/esm/usePreviousValue.js +var React36 = __toESM(require_react(), 1); +function usePreviousValue(value) { + const [state, setState] = React36.useState({ + current: value, + previous: null + }); + if (value !== state.current) { + setState({ + current: value, + previous: state.current + }); + } + return state.previous; +} + +// node_modules/@base-ui/react/esm/utils/usePopupAutoResize.js +var React37 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/utils/getCssDimensions.js +function getCssDimensions2(element) { + const css = getComputedStyle2(element); + let width = parseFloat(css.width) || 0; + let height = parseFloat(css.height) || 0; + const hasOffset = isHTMLElement(element); + const offsetWidth = hasOffset ? element.offsetWidth : width; + const offsetHeight = hasOffset ? element.offsetHeight : height; + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; + if (shouldFallback) { + width = offsetWidth; + height = offsetHeight; + } + return { + width, + height + }; +} + +// node_modules/@base-ui/react/esm/utils/usePopupAutoResize.js +var DEFAULT_ENABLED = () => true; +function usePopupAutoResize(parameters) { + const { + popupElement, + positionerElement, + content, + mounted, + enabled = DEFAULT_ENABLED, + onMeasureLayout: onMeasureLayoutParam, + onMeasureLayoutComplete: onMeasureLayoutCompleteParam, + side, + direction + } = parameters; + const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true, false); + const animationFrame = useAnimationFrame(); + const committedDimensionsRef = React37.useRef(null); + const liveDimensionsRef = React37.useRef(null); + const isInitialRenderRef = React37.useRef(true); + const restoreAnchoringStylesRef = React37.useRef(NOOP); + const onMeasureLayout = useStableCallback(onMeasureLayoutParam); + const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam); + const anchoringStyles = React37.useMemo(() => { + let isOriginSide = side === "top"; + let isPhysicalLeft = side === "left"; + if (direction === "rtl") { + isOriginSide = isOriginSide || side === "inline-end"; + isPhysicalLeft = isPhysicalLeft || side === "inline-end"; + } else { + isOriginSide = isOriginSide || side === "inline-start"; + isPhysicalLeft = isPhysicalLeft || side === "inline-start"; + } + return isOriginSide ? { + position: "absolute", + [side === "top" ? "bottom" : "top"]: "0", + [isPhysicalLeft ? "right" : "left"]: "0" + } : EMPTY_OBJECT; + }, [side, direction]); + useIsoLayoutEffect(() => { + if (!mounted || !enabled() || typeof ResizeObserver !== "function") { + restoreAnchoringStylesRef.current = NOOP; + isInitialRenderRef.current = true; + committedDimensionsRef.current = null; + liveDimensionsRef.current = null; + return void 0; + } + if (!popupElement || !positionerElement) { + return void 0; + } + restoreAnchoringStylesRef.current = applyElementStyles(popupElement, anchoringStyles); + const observer = new ResizeObserver((entries) => { + const entry = entries[0]; + if (entry) { + liveDimensionsRef.current = { + width: Math.ceil(entry.borderBoxSize[0].inlineSize), + height: Math.ceil(entry.borderBoxSize[0].blockSize) + }; + } + }); + observer.observe(popupElement); + setPopupCssSize(popupElement, "auto"); + const restorePopupPosition = overrideElementStyle(popupElement, "position", "static"); + const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none"); + const restorePopupScale = overrideElementStyle(popupElement, "scale", "1"); + const restorePositionerAvailableSize = applyElementStyles(positionerElement, { + "--available-width": "max-content", + "--available-height": "max-content" + }); + function restoreMeasurementOverrides() { + restorePopupPosition(); + restorePopupTransform(); + restorePositionerAvailableSize(); + } + function restoreMeasurementOverridesIncludingScale() { + restoreMeasurementOverrides(); + restorePopupScale(); + } + onMeasureLayout?.(); + if (isInitialRenderRef.current || committedDimensionsRef.current === null) { + setPositionerCssSize(positionerElement, "max-content"); + const dimensions = getCssDimensions2(popupElement); + committedDimensionsRef.current = dimensions; + setPositionerCssSize(positionerElement, dimensions); + restoreMeasurementOverridesIncludingScale(); + onMeasureLayoutComplete?.(null, dimensions); + isInitialRenderRef.current = false; + return () => { + observer.disconnect(); + restoreAnchoringStylesRef.current(); + restoreAnchoringStylesRef.current = NOOP; + }; + } + setPopupCssSize(popupElement, "auto"); + setPositionerCssSize(positionerElement, "max-content"); + const previousDimensions = committedDimensionsRef.current ?? liveDimensionsRef.current; + const newDimensions = getCssDimensions2(popupElement); + committedDimensionsRef.current = newDimensions; + if (!previousDimensions) { + setPositionerCssSize(positionerElement, newDimensions); + restoreMeasurementOverridesIncludingScale(); + onMeasureLayoutComplete?.(null, newDimensions); + return () => { + observer.disconnect(); + animationFrame.cancel(); + restoreAnchoringStylesRef.current(); + restoreAnchoringStylesRef.current = NOOP; + }; + } + setPopupCssSize(popupElement, previousDimensions); + restoreMeasurementOverridesIncludingScale(); + onMeasureLayoutComplete?.(previousDimensions, newDimensions); + setPositionerCssSize(positionerElement, newDimensions); + const abortController = new AbortController(); + animationFrame.request(() => { + setPopupCssSize(popupElement, newDimensions); + runOnceAnimationsFinish(() => { + popupElement.style.setProperty("--popup-width", "auto"); + popupElement.style.setProperty("--popup-height", "auto"); + }, abortController.signal); + }); + return () => { + observer.disconnect(); + abortController.abort(); + animationFrame.cancel(); + restoreAnchoringStylesRef.current(); + restoreAnchoringStylesRef.current = NOOP; + }; + }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, enabled, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]); +} +function overrideElementStyle(element, property, value) { + const originalValue = element.style.getPropertyValue(property); + element.style.setProperty(property, value); + return () => { + element.style.setProperty(property, originalValue); + }; +} +function applyElementStyles(element, styles) { + const restorers = []; + for (const [key, value] of Object.entries(styles)) { + restorers.push(overrideElementStyle(element, key, value)); + } + return restorers.length ? () => { + restorers.forEach((restore) => restore()); + } : NOOP; +} +function setPopupCssSize(popupElement, size4) { + const width = size4 === "auto" ? "auto" : `${size4.width}px`; + const height = size4 === "auto" ? "auto" : `${size4.height}px`; + popupElement.style.setProperty("--popup-width", width); + popupElement.style.setProperty("--popup-height", height); +} +function setPositionerCssSize(positionerElement, size4) { + const width = size4 === "max-content" ? "max-content" : `${size4.width}px`; + const height = size4 === "max-content" ? "max-content" : `${size4.height}px`; + positionerElement.style.setProperty("--positioner-width", width); + positionerElement.style.setProperty("--positioner-height", height); +} + +// node_modules/@base-ui/react/esm/utils/usePopupViewport.js +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +function usePopupViewport(parameters) { + const { + store: store2, + side, + cssVars, + children + } = parameters; + const direction = useDirection(); + const activeTrigger = store2.useState("activeTriggerElement"); + const activeTriggerId = store2.useState("activeTriggerId"); + const open = store2.useState("open"); + const payload = store2.useState("payload"); + const mounted = store2.useState("mounted"); + const popupElement = store2.useState("popupElement"); + const positionerElement = store2.useState("positionerElement"); + const previousActiveTrigger = usePreviousValue(open ? activeTrigger : null); + const currentContentKey = usePopupContentKey(activeTriggerId, payload); + const capturedNodeRef = React38.useRef(null); + const [previousContentNode, setPreviousContentNode] = React38.useState(null); + const [newTriggerOffset, setNewTriggerOffset] = React38.useState(null); + const currentContainerRef = React38.useRef(null); + const previousContainerRef = React38.useRef(null); + const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true, false); + const cleanupFrame = useAnimationFrame(); + const [previousContentDimensions, setPreviousContentDimensions] = React38.useState(null); + const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React38.useState(false); + useIsoLayoutEffect(() => { + store2.set("hasViewport", true); + return () => { + store2.set("hasViewport", false); + }; + }, [store2]); + const handleMeasureLayout = useStableCallback(() => { + currentContainerRef.current?.style.setProperty("animation", "none"); + currentContainerRef.current?.style.setProperty("transition", "none"); + previousContainerRef.current?.style.setProperty("display", "none"); + }); + const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => { + currentContainerRef.current?.style.removeProperty("animation"); + currentContainerRef.current?.style.removeProperty("transition"); + previousContainerRef.current?.style.removeProperty("display"); + if (previousDimensions) { + setPreviousContentDimensions(previousDimensions); + } + }); + const lastHandledTriggerRef = React38.useRef(null); + useIsoLayoutEffect(() => { + if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) { + setPreviousContentNode(capturedNodeRef.current); + setShowStartingStyleAttribute(true); + const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger); + setNewTriggerOffset(offset4); + cleanupFrame.request(() => { + ReactDOM5.flushSync(() => { + setShowStartingStyleAttribute(false); + }); + onAnimationsFinished(() => { + setPreviousContentNode(null); + setPreviousContentDimensions(null); + capturedNodeRef.current = null; + }); + }); + lastHandledTriggerRef.current = activeTrigger; + } + }, [activeTrigger, previousActiveTrigger, previousContentNode, onAnimationsFinished, cleanupFrame]); + useIsoLayoutEffect(() => { + const source = currentContainerRef.current; + if (!source) { + return; + } + const wrapper = ownerDocument(source).createElement("div"); + for (const child of Array.from(source.childNodes)) { + wrapper.appendChild(child.cloneNode(true)); + } + capturedNodeRef.current = wrapper; + }); + const isTransitioning = previousContentNode != null; + let childrenToRender; + if (!isTransitioning) { + childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { + "data-current": true, + ref: currentContainerRef, + children + }, currentContentKey); + } else { + childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(React38.Fragment, { + children: [/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { + "data-previous": true, + inert: inertValue(true), + ref: previousContainerRef, + style: { + ...previousContentDimensions ? { + [cssVars.popupWidth]: `${previousContentDimensions.width}px`, + [cssVars.popupHeight]: `${previousContentDimensions.height}px` + } : null, + position: "absolute" + }, + "data-ending-style": showStartingStyleAttribute ? void 0 : "" + }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { + "data-current": true, + ref: currentContainerRef, + "data-starting-style": showStartingStyleAttribute ? "" : void 0, + children + }, currentContentKey)] + }); + } + useIsoLayoutEffect(() => { + const container = previousContainerRef.current; + if (!container || !previousContentNode) { + return; + } + container.replaceChildren(...Array.from(previousContentNode.childNodes)); + }, [previousContentNode]); + usePopupAutoResize({ + popupElement, + positionerElement, + mounted, + content: payload, + onMeasureLayout: handleMeasureLayout, + onMeasureLayoutComplete: handleMeasureLayoutComplete, + side, + direction + }); + const state = { + activationDirection: getActivationDirection(newTriggerOffset), + transitioning: isTransitioning + }; + return { + children: childrenToRender, + state + }; +} +function getActivationDirection(offset4) { + if (!offset4) { + return void 0; + } + return `${getValueWithTolerance(offset4.horizontal, 5, "right", "left")} ${getValueWithTolerance(offset4.vertical, 5, "down", "up")}`; +} +function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) { + if (value > tolerance) { + return positiveLabel; + } + if (value < -tolerance) { + return negativeLabel; + } + return ""; +} +function calculateRelativePosition(from, to) { + const fromRect = from.getBoundingClientRect(); + const toRect = to.getBoundingClientRect(); + const fromCenter = { + x: fromRect.left + fromRect.width / 2, + y: fromRect.top + fromRect.height / 2 + }; + const toCenter = { + x: toRect.left + toRect.width / 2, + y: toRect.top + toRect.height / 2 + }; + return { + horizontal: toCenter.x - fromCenter.x, + vertical: toCenter.y - fromCenter.y + }; +} +function usePopupContentKey(activeTriggerId, payload) { + const [contentKey, setContentKey] = React38.useState(0); + const previousActiveTriggerIdRef = React38.useRef(activeTriggerId); + const previousPayloadRef = React38.useRef(payload); + const pendingPayloadUpdateRef = React38.useRef(false); + useIsoLayoutEffect(() => { + const previousActiveTriggerId = previousActiveTriggerIdRef.current; + const previousPayload = previousPayloadRef.current; + const triggerIdChanged = activeTriggerId !== previousActiveTriggerId; + const payloadChanged = payload !== previousPayload; + if (triggerIdChanged) { + setContentKey((value) => value + 1); + pendingPayloadUpdateRef.current = !payloadChanged; + } else if (pendingPayloadUpdateRef.current && payloadChanged) { + setContentKey((value) => value + 1); + pendingPayloadUpdateRef.current = false; + } + previousActiveTriggerIdRef.current = activeTriggerId; + previousPayloadRef.current = payload; + }, [activeTriggerId, payload]); + return `${activeTriggerId ?? "current"}-${contentKey}`; +} + +// node_modules/@base-ui/react/esm/utils/FloatingPortalLite.js +var React39 = __toESM(require_react(), 1); +var ReactDOM6 = __toESM(require_react_dom(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var FloatingPortalLite = /* @__PURE__ */ React39.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) { + const { + children, + container, + className, + render, + style, + ...elementProps + } = componentProps; + const { + portalNode, + portalSubtree + } = useFloatingPortalNode({ + container, + ref: forwardedRef, + componentProps, + elementProps + }); + if (!portalSubtree && !portalNode) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(React39.Fragment, { + children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM6.createPortal(children, portalNode)] + }); +}); +if (true) FloatingPortalLite.displayName = "FloatingPortalLite"; + +// node_modules/@base-ui/react/esm/tooltip/index.parts.js +var index_parts_exports = {}; +__export(index_parts_exports, { + Arrow: () => TooltipArrow, + Handle: () => TooltipHandle, + Popup: () => TooltipPopup, + Portal: () => TooltipPortal, + Positioner: () => TooltipPositioner, + Provider: () => TooltipProvider, + Root: () => TooltipRoot, + Trigger: () => TooltipTrigger, + Viewport: () => TooltipViewport, + createHandle: () => createTooltipHandle +}); + +// node_modules/@base-ui/react/esm/tooltip/root/TooltipRoot.js +var React42 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/root/TooltipRootContext.js +var React40 = __toESM(require_react(), 1); +var TooltipRootContext = /* @__PURE__ */ React40.createContext(void 0); +if (true) TooltipRootContext.displayName = "TooltipRootContext"; +function useTooltipRootContext(optional) { + const context = React40.useContext(TooltipRootContext); + if (context === void 0 && !optional) { + throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72)); + } + return context; +} + +// node_modules/@base-ui/react/esm/tooltip/store/TooltipStore.js +var React41 = __toESM(require_react(), 1); +var ReactDOM7 = __toESM(require_react_dom(), 1); +var selectors2 = { + ...popupStoreSelectors, + disabled: createSelector((state) => state.disabled), + instantType: createSelector((state) => state.instantType), + isInstantPhase: createSelector((state) => state.isInstantPhase), + trackCursorAxis: createSelector((state) => state.trackCursorAxis), + disableHoverablePopup: createSelector((state) => state.disableHoverablePopup), + lastOpenChangeReason: createSelector((state) => state.openChangeReason), + closeOnClick: createSelector((state) => state.closeOnClick), + closeDelay: createSelector((state) => state.closeDelay), + hasViewport: createSelector((state) => state.hasViewport) +}; +var TooltipStore = class _TooltipStore extends ReactStore { + constructor(initialState) { + super({ + ...createInitialState(), + ...initialState + }, { + popupRef: /* @__PURE__ */ React41.createRef(), + onOpenChange: void 0, + onOpenChangeComplete: void 0, + triggerElements: new PopupTriggerMap() + }, selectors2); + } + setOpen = (nextOpen, eventDetails) => { + const reason = eventDetails.reason; + const isHover = reason === reason_parts_exports.triggerHover; + const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus; + const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey); + eventDetails.preventUnmountOnClose = () => { + this.set("preventUnmountingOnClose", true); + }; + this.context.onOpenChange?.(nextOpen, eventDetails); + if (eventDetails.isCanceled) { + return; + } + this.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails); + const changeState = () => { + const updatedState = { + open: nextOpen, + openChangeReason: reason + }; + if (isFocusOpen) { + updatedState.instantType = "focus"; + } else if (isDismissClose) { + updatedState.instantType = "dismiss"; + } else if (reason === reason_parts_exports.triggerHover) { + updatedState.instantType = void 0; + } + const newTriggerId = eventDetails.trigger?.id ?? null; + if (newTriggerId || nextOpen) { + updatedState.activeTriggerId = newTriggerId; + updatedState.activeTriggerElement = eventDetails.trigger ?? null; + } + this.update(updatedState); + }; + if (isHover) { + ReactDOM7.flushSync(changeState); + } else { + changeState(); + } + }; + static useStore(externalStore, initialState) { + const internalStore = useRefWithInit(() => { + return new _TooltipStore(initialState); + }).current; + const store2 = externalStore ?? internalStore; + const floatingRootContext = useSyncedFloatingRootContext({ + popupStore: store2, + onOpenChange: store2.setOpen + }); + store2.state.floatingRootContext = floatingRootContext; + return store2; + } +}; +function createInitialState() { + return { + ...createInitialPopupStoreState(), + disabled: false, + instantType: void 0, + isInstantPhase: false, + trackCursorAxis: "none", + disableHoverablePopup: false, + openChangeReason: null, + closeOnClick: true, + closeDelay: 0, + hasViewport: false + }; +} + +// node_modules/@base-ui/react/esm/tooltip/root/TooltipRoot.js +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +var TooltipRoot = fastComponent(function TooltipRoot2(props) { + const { + disabled: disabled2 = false, + defaultOpen = false, + open: openProp, + disableHoverablePopup = false, + trackCursorAxis = "none", + actionsRef, + onOpenChange, + onOpenChangeComplete, + handle, + triggerId: triggerIdProp, + defaultTriggerId: defaultTriggerIdProp = null, + children + } = props; + const store2 = TooltipStore.useStore(handle?.store, { + open: defaultOpen, + openProp, + activeTriggerId: defaultTriggerIdProp, + triggerIdProp + }); + useOnFirstRender(() => { + if (openProp === void 0 && store2.state.open === false && defaultOpen === true) { + store2.update({ + open: true, + activeTriggerId: defaultTriggerIdProp + }); + } + }); + store2.useControlledProp("openProp", openProp); + store2.useControlledProp("triggerIdProp", triggerIdProp); + store2.useContextCallback("onOpenChange", onOpenChange); + store2.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); + const openState = store2.useState("open"); + const open = !disabled2 && openState; + const activeTriggerId = store2.useState("activeTriggerId"); + const payload = store2.useState("payload"); + store2.useSyncedValues({ + trackCursorAxis, + disableHoverablePopup + }); + useIsoLayoutEffect(() => { + if (openState && disabled2) { + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled)); + } + }, [openState, disabled2, store2]); + store2.useSyncedValue("disabled", disabled2); + useImplicitActiveTrigger(store2); + const { + forceUnmount, + transitionStatus + } = useOpenStateTransitions(open, store2); + const floatingRootContext = store2.select("floatingRootContext"); + const isInstantPhase = store2.useState("isInstantPhase"); + const instantType = store2.useState("instantType"); + const lastOpenChangeReason = store2.useState("lastOpenChangeReason"); + const previousInstantTypeRef = React42.useRef(null); + useIsoLayoutEffect(() => { + if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) { + if (instantType !== "delay") { + previousInstantTypeRef.current = instantType; + } + store2.set("instantType", "delay"); + } else if (previousInstantTypeRef.current !== null) { + store2.set("instantType", previousInstantTypeRef.current); + previousInstantTypeRef.current = null; + } + }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store2]); + useIsoLayoutEffect(() => { + if (open) { + if (activeTriggerId == null) { + store2.set("payload", void 0); + } + } + }, [store2, activeTriggerId, open]); + const handleImperativeClose = React42.useCallback(() => { + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); + }, [store2]); + React42.useImperativeHandle(actionsRef, () => ({ + unmount: forceUnmount, + close: handleImperativeClose + }), [forceUnmount, handleImperativeClose]); + const dismiss = useDismiss(floatingRootContext, { + enabled: !disabled2, + referencePress: () => store2.select("closeOnClick") + }); + const clientPoint = useClientPoint(floatingRootContext, { + enabled: !disabled2 && trackCursorAxis !== "none", + axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis + }); + const { + getReferenceProps, + getFloatingProps, + getTriggerProps + } = useInteractions([dismiss, clientPoint]); + const activeTriggerProps = React42.useMemo(() => getReferenceProps(), [getReferenceProps]); + const inactiveTriggerProps = React42.useMemo(() => getTriggerProps(), [getTriggerProps]); + const popupProps = React42.useMemo(() => getFloatingProps(), [getFloatingProps]); + store2.useSyncedValues({ + activeTriggerProps, + inactiveTriggerProps, + popupProps + }); + return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TooltipRootContext.Provider, { + value: store2, + children: typeof children === "function" ? children({ + payload + }) : children + }); +}); +if (true) TooltipRoot.displayName = "TooltipRoot"; + +// node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTrigger.js +var React44 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/provider/TooltipProviderContext.js +var React43 = __toESM(require_react(), 1); +var TooltipProviderContext = /* @__PURE__ */ React43.createContext(void 0); +if (true) TooltipProviderContext.displayName = "TooltipProviderContext"; +function useTooltipProviderContext() { + return React43.useContext(TooltipProviderContext); +} + +// node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTriggerDataAttributes.js +var TooltipTriggerDataAttributes = (function(TooltipTriggerDataAttributes2) { + TooltipTriggerDataAttributes2[TooltipTriggerDataAttributes2["popupOpen"] = CommonTriggerDataAttributes.popupOpen] = "popupOpen"; + TooltipTriggerDataAttributes2["triggerDisabled"] = "data-trigger-disabled"; + return TooltipTriggerDataAttributes2; +})({}); + +// node_modules/@base-ui/react/esm/tooltip/utils/constants.js +var OPEN_DELAY = 600; + +// node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTrigger.js +var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) { + const { + className, + render, + handle, + payload, + disabled: disabledProp, + delay, + closeOnClick = true, + closeDelay, + id: idProp, + style, + ...elementProps + } = componentProps; + const rootContext = useTooltipRootContext(true); + const store2 = handle?.store ?? rootContext; + if (!store2) { + throw new Error(true ? "Base UI: <Tooltip.Trigger> must be either used within a <Tooltip.Root> component or provided with a handle." : formatErrorMessage_default(82)); + } + const thisTriggerId = useBaseUiId(idProp); + const isTriggerActive = store2.useState("isTriggerActive", thisTriggerId); + const isOpenedByThisTrigger = store2.useState("isOpenedByTrigger", thisTriggerId); + const floatingRootContext = store2.useState("floatingRootContext"); + const triggerElementRef = React44.useRef(null); + const delayWithDefault = delay ?? OPEN_DELAY; + const closeDelayWithDefault = closeDelay ?? 0; + const { + registerTrigger, + isMountedByThisTrigger + } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store2, { + payload, + closeOnClick, + closeDelay: closeDelayWithDefault + }); + const providerContext = useTooltipProviderContext(); + const { + delayRef, + isInstantPhase, + hasProvider + } = useDelayGroup(floatingRootContext, { + open: isOpenedByThisTrigger + }); + store2.useSyncedValue("isInstantPhase", isInstantPhase); + const rootDisabled = store2.useState("disabled"); + const disabled2 = disabledProp ?? rootDisabled; + const trackCursorAxis = store2.useState("trackCursorAxis"); + const disableHoverablePopup = store2.useState("disableHoverablePopup"); + const hoverProps = useHoverReferenceInteraction(floatingRootContext, { + enabled: !disabled2, + mouseOnly: true, + move: false, + handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null, + restMs() { + const providerDelay = providerContext?.delay; + const groupOpenValue = typeof delayRef.current === "object" ? delayRef.current.open : void 0; + let computedRestMs = delayWithDefault; + if (hasProvider) { + if (groupOpenValue !== 0) { + computedRestMs = delay ?? providerDelay ?? delayWithDefault; + } else { + computedRestMs = 0; + } + } + return computedRestMs; + }, + delay() { + const closeValue = typeof delayRef.current === "object" ? delayRef.current.close : void 0; + let computedCloseDelay = closeDelayWithDefault; + if (closeDelay == null && hasProvider) { + computedCloseDelay = closeValue; + } + return { + close: computedCloseDelay + }; + }, + triggerElementRef, + isActiveTrigger: isTriggerActive, + isClosing: () => store2.select("transitionStatus") === "ending" + }); + const focusProps = useFocus(floatingRootContext, { + enabled: !disabled2 + }).reference; + const state = { + open: isOpenedByThisTrigger + }; + const rootTriggerProps = store2.useState("triggerProps", isMountedByThisTrigger); + const element = useRenderElement("button", componentProps, { + state, + ref: [forwardedRef, registerTrigger, triggerElementRef], + props: [hoverProps, focusProps, rootTriggerProps, { + onPointerDown() { + store2.set("closeOnClick", closeOnClick); + }, + id: thisTriggerId, + [TooltipTriggerDataAttributes.triggerDisabled]: disabled2 ? "" : void 0 + }, elementProps], + stateAttributesMapping: triggerOpenStateMapping + }); + return element; +}); +if (true) TooltipTrigger.displayName = "TooltipTrigger"; + +// node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortal.js +var React46 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortalContext.js +var React45 = __toESM(require_react(), 1); +var TooltipPortalContext = /* @__PURE__ */ React45.createContext(void 0); +if (true) TooltipPortalContext.displayName = "TooltipPortalContext"; +function useTooltipPortalContext() { + const value = React45.useContext(TooltipPortalContext); + if (value === void 0) { + throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70)); + } + return value; +} + +// node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortal.js +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +var TooltipPortal = /* @__PURE__ */ React46.forwardRef(function TooltipPortal2(props, forwardedRef) { + const { + keepMounted = false, + ...portalProps + } = props; + const store2 = useTooltipRootContext(); + const mounted = store2.useState("mounted"); + const shouldRender = mounted || keepMounted; + if (!shouldRender) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TooltipPortalContext.Provider, { + value: keepMounted, + children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(FloatingPortalLite, { + ref: forwardedRef, + ...portalProps + }) + }); +}); +if (true) TooltipPortal.displayName = "TooltipPortal"; + +// node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositioner.js +var React48 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositionerContext.js +var React47 = __toESM(require_react(), 1); +var TooltipPositionerContext = /* @__PURE__ */ React47.createContext(void 0); +if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext"; +function useTooltipPositionerContext() { + const context = React47.useContext(TooltipPositionerContext); + if (context === void 0) { + throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71)); + } + return context; +} + +// node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositioner.js +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var TooltipPositioner = /* @__PURE__ */ React48.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) { + const { + render, + className, + anchor, + positionMethod = "absolute", + side = "top", + align = "center", + sideOffset = 0, + alignOffset = 0, + collisionBoundary = "clipping-ancestors", + collisionPadding = 5, + arrowPadding = 5, + sticky = false, + disableAnchorTracking = false, + collisionAvoidance = POPUP_COLLISION_AVOIDANCE, + style, + ...elementProps + } = componentProps; + const store2 = useTooltipRootContext(); + const keepMounted = useTooltipPortalContext(); + const open = store2.useState("open"); + const mounted = store2.useState("mounted"); + const trackCursorAxis = store2.useState("trackCursorAxis"); + const disableHoverablePopup = store2.useState("disableHoverablePopup"); + const floatingRootContext = store2.useState("floatingRootContext"); + const instantType = store2.useState("instantType"); + const transitionStatus = store2.useState("transitionStatus"); + const hasViewport = store2.useState("hasViewport"); + const positioning = useAnchorPositioning({ + anchor, + positionMethod, + floatingRootContext, + mounted, + side, + sideOffset, + align, + alignOffset, + collisionBoundary, + collisionPadding, + sticky, + arrowPadding, + disableAnchorTracking, + keepMounted, + collisionAvoidance, + adaptiveOrigin: hasViewport ? adaptiveOrigin : void 0 + }); + const state = React48.useMemo(() => ({ + open, + side: positioning.side, + align: positioning.align, + anchorHidden: positioning.anchorHidden, + instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType + }), [open, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]); + const element = usePositioner(componentProps, state, { + styles: positioning.positionerStyles, + transitionStatus, + props: elementProps, + refs: [forwardedRef, store2.useStateSetter("positionerElement")], + hidden: !mounted, + inert: !open || trackCursorAxis === "both" || disableHoverablePopup + }); + return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipPositionerContext.Provider, { + value: positioning, + children: element + }); +}); +if (true) TooltipPositioner.displayName = "TooltipPositioner"; + +// node_modules/@base-ui/react/esm/tooltip/popup/TooltipPopup.js +var React49 = __toESM(require_react(), 1); +var stateAttributesMapping = { + ...popupStateMapping, + ...transitionStatusMapping +}; +var TooltipPopup = /* @__PURE__ */ React49.forwardRef(function TooltipPopup2(componentProps, forwardedRef) { + const { + className, + render, + style, + ...elementProps + } = componentProps; + const store2 = useTooltipRootContext(); + const { + side, + align + } = useTooltipPositionerContext(); + const open = store2.useState("open"); + const instantType = store2.useState("instantType"); + const transitionStatus = store2.useState("transitionStatus"); + const popupProps = store2.useState("popupProps"); + const floatingContext = store2.useState("floatingRootContext"); + useOpenChangeComplete({ + open, + ref: store2.context.popupRef, + onComplete() { + if (open) { + store2.context.onOpenChangeComplete?.(true); + } + } + }); + const disabled2 = store2.useState("disabled"); + const closeDelay = store2.useState("closeDelay"); + useHoverFloatingInteraction(floatingContext, { + enabled: !disabled2, + closeDelay + }); + const state = { + open, + side, + align, + instant: instantType, + transitionStatus + }; + const element = useRenderElement("div", componentProps, { + state, + ref: [forwardedRef, store2.context.popupRef, store2.useStateSetter("popupElement")], + props: [popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps], + stateAttributesMapping + }); + return element; +}); +if (true) TooltipPopup.displayName = "TooltipPopup"; + +// node_modules/@base-ui/react/esm/tooltip/arrow/TooltipArrow.js +var React50 = __toESM(require_react(), 1); +var TooltipArrow = /* @__PURE__ */ React50.forwardRef(function TooltipArrow2(componentProps, forwardedRef) { + const { + className, + render, + style, + ...elementProps + } = componentProps; + const store2 = useTooltipRootContext(); + const open = store2.useState("open"); + const instantType = store2.useState("instantType"); + const { + arrowRef, + side, + align, + arrowUncentered, + arrowStyles + } = useTooltipPositionerContext(); + const state = { + open, + side, + align, + uncentered: arrowUncentered, + instant: instantType + }; + const element = useRenderElement("div", componentProps, { + state, + ref: [forwardedRef, arrowRef], + props: [{ + style: arrowStyles, + "aria-hidden": true + }, elementProps], + stateAttributesMapping: popupStateMapping + }); + return element; +}); +if (true) TooltipArrow.displayName = "TooltipArrow"; + +// node_modules/@base-ui/react/esm/tooltip/provider/TooltipProvider.js +var React51 = __toESM(require_react(), 1); +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var TooltipProvider = function TooltipProvider2(props) { + const { + delay, + closeDelay, + timeout = 400 + } = props; + const contextValue = React51.useMemo(() => ({ + delay, + closeDelay + }), [delay, closeDelay]); + const delayValue = React51.useMemo(() => ({ + open: delay, + close: closeDelay + }), [delay, closeDelay]); + return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TooltipProviderContext.Provider, { + value: contextValue, + children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FloatingDelayGroup, { + delay: delayValue, + timeoutMs: timeout, + children: props.children + }) + }); +}; +if (true) TooltipProvider.displayName = "TooltipProvider"; + +// node_modules/@base-ui/react/esm/tooltip/viewport/TooltipViewport.js +var React52 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/viewport/TooltipViewportCssVars.js +var TooltipViewportCssVars = /* @__PURE__ */ (function(TooltipViewportCssVars2) { + TooltipViewportCssVars2["popupWidth"] = "--popup-width"; + TooltipViewportCssVars2["popupHeight"] = "--popup-height"; + return TooltipViewportCssVars2; +})({}); + +// node_modules/@base-ui/react/esm/tooltip/viewport/TooltipViewport.js +var stateAttributesMapping2 = { + activationDirection: (value) => value ? { + "data-activation-direction": value + } : null +}; +var TooltipViewport = /* @__PURE__ */ React52.forwardRef(function TooltipViewport2(componentProps, forwardedRef) { + const { + render, + className, + style, + children, + ...elementProps + } = componentProps; + const store2 = useTooltipRootContext(); + const positioner = useTooltipPositionerContext(); + const instantType = store2.useState("instantType"); + const { + children: childrenToRender, + state: viewportState + } = usePopupViewport({ + store: store2, + side: positioner.side, + cssVars: TooltipViewportCssVars, + children + }); + const state = { + activationDirection: viewportState.activationDirection, + transitioning: viewportState.transitioning, + instant: instantType + }; + return useRenderElement("div", componentProps, { + state, + ref: forwardedRef, + props: [elementProps, { + children: childrenToRender + }], + stateAttributesMapping: stateAttributesMapping2 + }); +}); +if (true) TooltipViewport.displayName = "TooltipViewport"; + +// node_modules/@base-ui/react/esm/tooltip/store/TooltipHandle.js +var TooltipHandle = class { + /** + * Internal store holding the tooltip state. + * @internal + */ + constructor() { + this.store = new TooltipStore(); + } + /** + * Opens the tooltip and associates it with the trigger with the given ID. + * The trigger must be a Tooltip.Trigger component with this handle passed as a prop. + * + * This method should only be called in an event handler or an effect (not during rendering). + * + * @param triggerId ID of the trigger to associate with the tooltip. + */ + open(triggerId) { + const triggerElement = triggerId ? this.store.context.triggerElements.getById(triggerId) : void 0; + if (triggerId && !triggerElement) { + throw new Error(true ? `Base UI: TooltipHandle.open: No trigger found with id "${triggerId}".` : formatErrorMessage_default(81, triggerId)); + } + this.store.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement)); + } + /** + * Closes the tooltip. + */ + close() { + this.store.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, void 0)); + } + /** + * Indicates whether the tooltip is currently open. + */ + get isOpen() { + return this.store.state.open; + } +}; +function createTooltipHandle() { + return new TooltipHandle(); +} + +// node_modules/@base-ui/react/esm/use-render/useRender.js +function useRender(params) { + return useRenderElement(params.defaultTagName ?? "div", params, params); +} + +// packages/ui/build-module/text/text.mjs +var import_element8 = __toESM(require_element(), 1); +var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; +function getRuntime() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { + return true; + } + } + return false; +} +function injectStyle(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument(targetDocument) { + const runtime = getRuntime(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle(hash, css) { + const runtime = getRuntime(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle("0c8601dd83", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}'); +} +var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; +if (typeof process === "undefined" || true) { + registerStyle("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); +} +var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; +var Text = (0, import_element8.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { + const element = useRender({ + render, + defaultTagName: "span", + ref, + props: mergeProps(props, { + className: clsx_default( + style_default.text, + global_css_defense_default.heading, + global_css_defense_default.p, + style_default[variant], + className + ) + }) + }); + return element; +}); + +// packages/ui/build-module/badge/badge.mjs +var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; +function getRuntime2() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument2(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash2(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE2}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { + return true; + } + } + return false; +} +function injectStyle2(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime2(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash2(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument2(targetDocument) { + const runtime = getRuntime2(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle2(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle2(hash, css) { + const runtime = getRuntime2(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle2(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle2("d6a685e1aa", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}"); +} +var style_default2 = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; +var Badge = (0, import_element9.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( + Text, + { + ref, + className: clsx_default( + style_default2.badge, + style_default2[`is-${intent}-intent`], + className + ), + ...props, + variant: "body-sm" + } + ); +}); + +// packages/ui/build-module/button/button.mjs +var import_element10 = __toESM(require_element(), 1); +var import_i18n = __toESM(require_i18n(), 1); +var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); +import { speak } from "@wordpress/a11y"; +var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; +function getRuntime3() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument3(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash3(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE3}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { + return true; + } + } + return false; +} +function injectStyle3(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime3(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash3(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument3(targetDocument) { + const runtime = getRuntime3(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle3(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle3(hash, css) { + const runtime = getRuntime3(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle3(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle3("26d90ece4e", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);cursor:var(--wpds-cursor-control,pointer);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);height:var(--wp-ui-button-height);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);min-width:var(--wp-ui-button-min-width);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-decoration:none;@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:#0000;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:#0000;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:#0000;&:not([data-disabled]):is(:hover,:active,:focus){color:#0000}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}[aria-pressed=true].ad0619a3217c6a5b__is-minimal.e722a8f96726aa99__is-neutral{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0)}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}'); +} +var style_default3 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" }; +if (typeof process === "undefined" || true) { + registerStyle3("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); +} +var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; +if (typeof process === "undefined" || true) { + registerStyle3("2a5ab8f3a7", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}"); +} +var focus_default = { "outset-ring--focus": "_08e8a2e44959f892__outset-ring--focus", "outset-ring--focus-except-active": "e25b2bdd7aa21721__outset-ring--focus-except-active", "outset-ring--focus-visible": "d0541bc9dd9dc7b6__outset-ring--focus-visible", "outset-ring--focus-within": "cd83dfc2126a0846__outset-ring--focus-within", "outset-ring--focus-within-except-active": "_970d04df7376df67__outset-ring--focus-within-except-active", "outset-ring--focus-within-visible": "c5cb3ee4bddaa8e4__outset-ring--focus-within-visible", "outset-ring--focus-parent-visible": "ecadb9e080e2dfa5__outset-ring--focus-parent-visible" }; +if (typeof process === "undefined" || true) { + registerStyle3("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); +} +var global_css_defense_default2 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; +var Button3 = (0, import_element10.forwardRef)( + function Button22({ + tone = "brand", + variant = "solid", + size: size4 = "default", + className, + focusableWhenDisabled = true, + disabled: disabled2, + loading, + loadingAnnouncement = (0, import_i18n.__)("Loading"), + children, + ...props + }, ref) { + const mergedClassName = clsx_default( + global_css_defense_default2.button, + resets_default["box-sizing"], + focus_default["outset-ring--focus-except-active"], + variant !== "unstyled" && style_default3.button, + style_default3[`is-${tone}`], + style_default3[`is-${variant}`], + style_default3[`is-${size4}`], + loading && style_default3["is-loading"], + className + ); + (0, import_element10.useEffect)(() => { + if (loading && loadingAnnouncement) { + speak(loadingAnnouncement); + } + }, [loading, loadingAnnouncement]); + return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( + Button, + { + ref, + className: mergedClassName, + focusableWhenDisabled, + disabled: disabled2 ?? loading, + ...props, + children + } + ); + } +); + +// packages/ui/build-module/button/icon.mjs +var import_element12 = __toESM(require_element(), 1); + +// packages/ui/build-module/icon/icon.mjs +var import_element11 = __toESM(require_element(), 1); +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); +var Icon = (0, import_element11.forwardRef)(function Icon2({ icon, size: size4 = 24, ...restProps }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( + import_primitives.SVG, + { + ref, + fill: "currentColor", + ...icon.props, + ...restProps, + width: size4, + height: size4 + } + ); +}); + +// packages/ui/build-module/button/icon.mjs +var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); +var ButtonIcon = (0, import_element12.forwardRef)( + function ButtonIcon2({ icon, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( + Icon, + { + ref, + icon, + viewBox: "4 4 16 16", + size: 16, + ...props + } + ); + } +); + +// packages/ui/build-module/button/index.mjs +ButtonIcon.displayName = "Button.Icon"; +var Button4 = Object.assign(Button3, { + /** + * An icon component specifically designed to work well when rendered inside + * a `Button` component. + */ + Icon: ButtonIcon +}); + +// packages/icons/build-module/library/caution.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); +var caution_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives2.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z" }) }); + +// packages/icons/build-module/library/close-small.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); +var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives3.Path, { d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z" }) }); + +// packages/icons/build-module/library/error.mjs +var import_primitives4 = __toESM(require_primitives(), 1); +var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); +var error_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives4.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z" }) }); + +// packages/icons/build-module/library/info.mjs +var import_primitives5 = __toESM(require_primitives(), 1); +var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); +var info_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives5.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z" }) }); + +// packages/icons/build-module/library/published.mjs +var import_primitives6 = __toESM(require_primitives(), 1); +var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); +var published_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives6.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z" }) }); + +// packages/ui/build-module/utils/render-slot-with-children.mjs +var import_element13 = __toESM(require_element(), 1); +function renderSlotWithChildren(slot, defaultSlot, children) { + return (0, import_element13.cloneElement)(slot ?? defaultSlot, { children }); +} + +// packages/ui/build-module/lock-unlock.mjs +var import_private_apis = __toESM(require_private_apis(), 1); +var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( + "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", + "@wordpress/ui" +); + +// packages/ui/build-module/stack/stack.mjs +var import_element14 = __toESM(require_element(), 1); +var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; +function getRuntime4() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument4(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash4(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE4}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { + return true; + } + } + return false; +} +function injectStyle4(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime4(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash4(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument4(targetDocument) { + const runtime = getRuntime4(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle4(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle4(hash, css) { + const runtime = getRuntime4(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle4(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle4("b51ff41489", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}"); +} +var style_default4 = { "stack": "_19ce0419607e1896__stack" }; +var gapTokens = { + xs: "var(--wpds-dimension-gap-xs, 4px)", + sm: "var(--wpds-dimension-gap-sm, 8px)", + md: "var(--wpds-dimension-gap-md, 12px)", + lg: "var(--wpds-dimension-gap-lg, 16px)", + xl: "var(--wpds-dimension-gap-xl, 24px)", + "2xl": "var(--wpds-dimension-gap-2xl, 32px)", + "3xl": "var(--wpds-dimension-gap-3xl, 40px)" +}; +var Stack = (0, import_element14.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { + const style = { + gap: gap && gapTokens[gap], + alignItems: align, + justifyContent: justify, + flexDirection: direction, + flexWrap: wrap + }; + const element = useRender({ + render, + ref, + props: mergeProps(props, { style, className: style_default4.stack }) + }); + return element; +}); + +// packages/ui/build-module/icon-button/icon-button.mjs +var import_element19 = __toESM(require_element(), 1); + +// packages/ui/build-module/tooltip/popup.mjs +var import_element17 = __toESM(require_element(), 1); +var import_theme = __toESM(require_theme(), 1); + +// packages/ui/build-module/tooltip/portal.mjs +var import_element15 = __toESM(require_element(), 1); +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var Portal = (0, import_element15.forwardRef)( + function TooltipPortal3(props, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(index_parts_exports.Portal, { ref, ...props }); + } +); + +// packages/ui/build-module/tooltip/positioner.mjs +var import_element16 = __toESM(require_element(), 1); +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; +function getRuntime5() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument5(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash5(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE5}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { + return true; + } + } + return false; +} +function injectStyle5(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime5(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash5(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument5(targetDocument) { + const runtime = getRuntime5(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle5(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle5(hash, css) { + const runtime = getRuntime5(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle5(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle5("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); +} +var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; +if (typeof process === "undefined" || true) { + registerStyle5("8293efbb49", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}'); +} +var style_default5 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; +var Positioner = (0, import_element16.forwardRef)( + function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( + index_parts_exports.Positioner, + { + ref, + align, + side, + sideOffset, + ...props, + className: clsx_default( + resets_default2["box-sizing"], + style_default5.positioner, + className + ) + } + ); + } +); + +// packages/ui/build-module/tooltip/popup.mjs +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; +function getRuntime6() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument6(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash6(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE6}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { + return true; + } + } + return false; +} +function injectStyle6(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime6(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash6(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument6(targetDocument) { + const runtime = getRuntime6(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle6(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle6(hash, css) { + const runtime = getRuntime6(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle6(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle6("8293efbb49", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}'); +} +var style_default6 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; +var ThemeProvider = unlock(import_theme.privateApis).ThemeProvider; +var Popup = (0, import_element17.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { + const popupContent = ( + /* This should ideally use whatever dark color makes sense, + * and not be hardcoded to #1e1e1e. The solutions would be to: + * - review the design of the tooltip, in case we want to stop + * hardcoding it to a dark background + * - create new semantic tokens as needed (aliasing either the + * "inverted bg" or "perma-dark bg" private tokens) and have + * Tooltip.Popup use them; + * - remove the hardcoded `bg` setting from the `ThemeProvider` + * below + */ + /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ThemeProvider, { color: { bg: "#1e1e1e" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( + index_parts_exports.Popup, + { + ref, + className: clsx_default(style_default6.popup, className), + ...props, + children + } + ) }) + ); + const positionedPopup = renderSlotWithChildren( + positioner, + /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Positioner, {}), + popupContent + ); + return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Portal, {}), positionedPopup); +}); + +// packages/ui/build-module/tooltip/trigger.mjs +var import_element18 = __toESM(require_element(), 1); +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var Trigger = (0, import_element18.forwardRef)( + function TooltipTrigger3(props, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(index_parts_exports.Trigger, { ref, ...props }); + } +); + +// packages/ui/build-module/tooltip/root.mjs +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +function Root(props) { + return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(index_parts_exports.Root, { ...props }); +} + +// packages/ui/build-module/tooltip/provider.mjs +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); +function Provider({ ...props }) { + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(index_parts_exports.Provider, { ...props }); +} + +// packages/ui/build-module/icon-button/icon-button.mjs +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; +function getRuntime7() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument7(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash7(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE7}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { + return true; + } + } + return false; +} +function injectStyle7(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime7(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash7(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument7(targetDocument) { + const runtime = getRuntime7(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle7(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle7(hash, css) { + const runtime = getRuntime7(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle7(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle7("358a2a646a", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}"); +} +var style_default7 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" }; +var IconButton = (0, import_element19.forwardRef)( + function IconButton2({ + label, + className, + // Prevent accidental forwarding of `children` + children: _children, + disabled: disabled2, + focusableWhenDisabled, + icon, + size: size4, + shortcut, + positioner, + ...restProps + }, ref) { + const classes = clsx_default(style_default7["icon-button"], className); + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Provider, { delay: 0, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Root, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + Trigger, + { + ref, + disabled: disabled2 && !focusableWhenDisabled, + render: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + Button4, + { + ...restProps, + size: size4, + "aria-label": label, + "aria-keyshortcuts": shortcut?.ariaKeyShortcut, + disabled: disabled2, + focusableWhenDisabled + } + ), + className: classes, + children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + Icon, + { + icon, + size: 24, + className: style_default7.icon + } + ) + } + ), + /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Popup, { positioner, children: [ + label, + shortcut && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [ + " ", + /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { "aria-hidden": "true", children: shortcut.displayShortcut }) + ] }) + ] }) + ] }) }); + } +); + +// packages/ui/build-module/link/link.mjs +var import_element20 = __toESM(require_element(), 1); +var import_i18n2 = __toESM(require_i18n(), 1); +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; +function getRuntime8() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument8(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash8(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE8}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { + return true; + } + } + return false; +} +function injectStyle8(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime8(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash8(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument8(targetDocument) { + const runtime = getRuntime8(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle8(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle8(hash, css) { + const runtime = getRuntime8(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle8(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle8("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); +} +var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; +if (typeof process === "undefined" || true) { + registerStyle8("2a5ab8f3a7", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}"); +} +var focus_default2 = { "outset-ring--focus": "_08e8a2e44959f892__outset-ring--focus", "outset-ring--focus-except-active": "e25b2bdd7aa21721__outset-ring--focus-except-active", "outset-ring--focus-visible": "d0541bc9dd9dc7b6__outset-ring--focus-visible", "outset-ring--focus-within": "cd83dfc2126a0846__outset-ring--focus-within", "outset-ring--focus-within-except-active": "_970d04df7376df67__outset-ring--focus-within-except-active", "outset-ring--focus-within-visible": "c5cb3ee4bddaa8e4__outset-ring--focus-within-visible", "outset-ring--focus-parent-visible": "ecadb9e080e2dfa5__outset-ring--focus-parent-visible" }; +if (typeof process === "undefined" || true) { + registerStyle8("90a23568f8", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}'); +} +var style_default8 = { "link": "d4250949359b05ce__link", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" }; +if (typeof process === "undefined" || true) { + registerStyle8("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); +} +var global_css_defense_default3 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; +var Link = (0, import_element20.forwardRef)(function Link2({ + children, + variant = "default", + tone = "brand", + openInNewTab = false, + render, + className, + ...props +}, ref) { + const element = useRender({ + render, + defaultTagName: "a", + ref, + props: mergeProps(props, { + className: clsx_default( + global_css_defense_default3.a, + resets_default3["box-sizing"], + focus_default2["outset-ring--focus"], + variant !== "unstyled" && style_default8.link, + variant !== "unstyled" && style_default8[`is-${tone}`], + variant === "unstyled" && style_default8["is-unstyled"], + className + ), + target: openInNewTab ? "_blank" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [ + children, + openInNewTab && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + "span", + { + className: style_default8["link-icon"], + role: "img", + "aria-label": ( + /* translators: accessibility text appended to link text */ + (0, import_i18n2.__)("(opens in a new tab)") + ) + } + ) + ] }) + }) + }); + return element; +}); + +// packages/ui/build-module/notice/index.mjs +var notice_exports = {}; +__export(notice_exports, { + ActionButton: () => ActionButton, + ActionLink: () => ActionLink, + Actions: () => Actions, + CloseIcon: () => CloseIcon, + Description: () => Description, + Root: () => Root2, + Title: () => Title +}); + +// packages/ui/build-module/notice/root.mjs +var import_element21 = __toESM(require_element(), 1); +import { speak as speak2 } from "@wordpress/a11y"; +var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; +function getRuntime9() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument9(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash9(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE9}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { + return true; + } + } + return false; +} +function injectStyle9(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime9(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash9(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument9(targetDocument) { + const runtime = getRuntime9(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle9(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle9(hash, css) { + const runtime = getRuntime9(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle9(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle9("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); +} +var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; +if (typeof process === "undefined" || true) { + registerStyle9("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); +} +var style_default9 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var icons = { + neutral: null, + info: info_default, + warning: caution_default, + success: published_default, + error: error_default +}; +function getDefaultPoliteness(intent) { + return intent === "error" ? "assertive" : "polite"; +} +function safeRenderToString(message) { + if (!message) { + return void 0; + } + if (typeof message === "string") { + return message; + } + try { + return (0, import_element21.renderToString)(message); + } catch { + return void 0; + } +} +function useSpokenMessage(message, politeness) { + const spokenMessage = safeRenderToString(message); + (0, import_element21.useEffect)(() => { + if (spokenMessage) { + speak2(spokenMessage, politeness); + } + }, [spokenMessage, politeness]); +} +var Root2 = (0, import_element21.forwardRef)(function Notice({ + intent = "neutral", + children, + icon, + spokenMessage = children, + politeness = getDefaultPoliteness(intent), + render, + ...restProps +}, ref) { + useSpokenMessage(spokenMessage, politeness); + const iconElement = icon === null ? null : icon ?? icons[intent]; + const mergedClassName = clsx_default( + style_default9.notice, + style_default9[`is-${intent}`], + resets_default4["box-sizing"] + ); + const element = useRender({ + defaultTagName: "div", + render, + ref, + props: mergeProps( + { + className: mergedClassName, + children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [ + children, + iconElement && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( + Icon, + { + className: style_default9.icon, + icon: iconElement + } + ) + ] }) + }, + restProps + ) + }); + return element; +}); + +// packages/ui/build-module/notice/title.mjs +var import_element22 = __toESM(require_element(), 1); +var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; +function getRuntime10() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument10(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash10(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE10}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { + return true; + } + } + return false; +} +function injectStyle10(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime10(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash10(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument10(targetDocument) { + const runtime = getRuntime10(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle10(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle10(hash, css) { + const runtime = getRuntime10(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle10(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle10("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); +} +var style_default10 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var Title = (0, import_element22.forwardRef)( + function NoticeTitle({ className, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + Text, + { + ref, + variant: "heading-md", + className: clsx_default(style_default10.title, className), + ...props + } + ); + } +); + +// packages/ui/build-module/notice/description.mjs +var import_element23 = __toESM(require_element(), 1); +var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; +function getRuntime11() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument11(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash11(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE11}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { + return true; + } + } + return false; +} +function injectStyle11(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime11(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash11(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument11(targetDocument) { + const runtime = getRuntime11(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle11(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle11(hash, css) { + const runtime = getRuntime11(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle11(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle11("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); +} +var style_default11 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var Description = (0, import_element23.forwardRef)( + function NoticeDescription({ className, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + Text, + { + ref, + variant: "body-md", + className: clsx_default(style_default11.description, className), + ...props + } + ); + } +); + +// packages/ui/build-module/notice/actions.mjs +var import_element24 = __toESM(require_element(), 1); +var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; +function getRuntime12() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument12(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash12(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE12}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { + return true; + } + } + return false; +} +function injectStyle12(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime12(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash12(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument12(targetDocument) { + const runtime = getRuntime12(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle12(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle12(hash, css) { + const runtime = getRuntime12(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle12(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle12("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); +} +var style_default12 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var Actions = (0, import_element24.forwardRef)( + function NoticeActions({ render, ...props }, ref) { + const element = useRender({ + defaultTagName: "div", + render, + ref, + props: mergeProps( + { + className: style_default12.actions + }, + props + ) + }); + return element; + } +); + +// packages/ui/build-module/notice/close-icon.mjs +var import_element25 = __toESM(require_element(), 1); +var import_i18n3 = __toESM(require_i18n(), 1); +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; +function getRuntime13() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument13(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash13(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE13}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { + return true; + } + } + return false; +} +function injectStyle13(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime13(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash13(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument13(targetDocument) { + const runtime = getRuntime13(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle13(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle13(hash, css) { + const runtime = getRuntime13(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle13(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle13("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); +} +var style_default13 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var CloseIcon = (0, import_element25.forwardRef)( + function NoticeCloseIcon({ className, icon = close_small_default, label = (0, import_i18n3.__)("Dismiss"), ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + IconButton, + { + ...props, + ref, + className: clsx_default(style_default13["close-icon"], className), + variant: "minimal", + size: "small", + tone: "neutral", + icon, + label + } + ); + } +); + +// packages/ui/build-module/notice/action-button.mjs +var import_element26 = __toESM(require_element(), 1); +var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; +function getRuntime14() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument14(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash14(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE14}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { + return true; + } + } + return false; } -function warnIfRenderPropLooksLikeComponent(renderFn) { - const functionName = renderFn.name; - if (functionName.length === 0) { +function injectStyle14(targetDocument, hash, css) { + if (!targetDocument.head) { return; } - if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { + const runtime = getRuntime14(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { return; } - if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { + if (documentContainsStyleHash14(targetDocument, hash)) { + injectedStyles.add(hash); return; } - warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); } -function renderTag(Tag, props) { - if (Tag === "button") { - return /* @__PURE__ */ (0, import_react.createElement)("button", { - type: "button", - ...props, - key: props.key - }); +function registerDocument14(targetDocument) { + const runtime = getRuntime14(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle14(targetDocument, hash, css); } - if (Tag === "img") { - return /* @__PURE__ */ (0, import_react.createElement)("img", { - alt: "", - ...props, - key: props.key - }); + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle14(hash, css) { + const runtime = getRuntime14(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle14(targetDocument, hash, css); } - return /* @__PURE__ */ React5.createElement(Tag, props); } - -// node_modules/@base-ui/react/esm/use-render/useRender.js -function useRender(params) { - return useRenderElement(params.defaultTagName ?? "div", params, params); +if (typeof process === "undefined" || true) { + registerStyle14("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); } +var style_default14 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var ActionButton = (0, import_element26.forwardRef)( + function NoticeActionButton({ className, loading, loadingAnnouncement, variant, ...props }, ref) { + const loadingProps = loading !== void 0 ? { loading, loadingAnnouncement: loadingAnnouncement ?? "" } : {}; + return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + Button4, + { + ...props, + ...loadingProps, + ref, + size: "compact", + tone: "neutral", + variant, + className: clsx_default( + style_default14["action-button"], + style_default14[`is-action-button-${variant}`], + className + ) + } + ); + } +); -// packages/ui/build-module/text/text.mjs -var import_element = __toESM(require_element(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='4130d64bea']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "4130d64bea"); - style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')); - document.head.appendChild(style); +// packages/ui/build-module/notice/action-link.mjs +var import_element27 = __toESM(require_element(), 1); +var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; +function getRuntime15() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument15(document); + } + return globalScope.__wpStyleRuntime; } -var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "1fb29d3a3c"); - style.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")); - document.head.appendChild(style); +function documentContainsStyleHash15(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE15}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { + return true; + } + } + return false; } -var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; -var Text = (0, import_element.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { - const element = useRender({ - render, - defaultTagName: "span", - ref, - props: mergeProps(props, { - className: clsx_default( - style_default.text, - global_css_defense_default.heading, - global_css_defense_default.p, - style_default[variant], - className - ) - }) - }); - return element; -}); - -// packages/ui/build-module/badge/badge.mjs -var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='d6a685e1aa']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "d6a685e1aa"); - style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}")); - document.head.appendChild(style); +function injectStyle15(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime15(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash15(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); } -var style_default2 = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; -var Badge = (0, import_element2.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) { - return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( - Text, - { - ref, - className: clsx_default( - style_default2.badge, - style_default2[`is-${intent}-intent`], - className - ), - ...props, - variant: "body-sm" - } +function registerDocument15(targetDocument) { + const runtime = getRuntime15(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 ); -}); - -// packages/ui/build-module/stack/stack.mjs -var import_element3 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='b51ff41489']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "b51ff41489"); - style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); - document.head.appendChild(style); -} -var style_default3 = { "stack": "_19ce0419607e1896__stack" }; -var gapTokens = { - xs: "var(--wpds-dimension-gap-xs, 4px)", - sm: "var(--wpds-dimension-gap-sm, 8px)", - md: "var(--wpds-dimension-gap-md, 12px)", - lg: "var(--wpds-dimension-gap-lg, 16px)", - xl: "var(--wpds-dimension-gap-xl, 24px)", - "2xl": "var(--wpds-dimension-gap-2xl, 32px)", - "3xl": "var(--wpds-dimension-gap-3xl, 40px)" -}; -var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { - const style = { - gap: gap && gapTokens[gap], - alignItems: align, - justifyContent: justify, - flexDirection: direction, - flexWrap: wrap + for (const [hash, css] of runtime.styles) { + injectStyle15(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); }; - const element = useRender({ - render, - ref, - props: mergeProps(props, { style, className: style_default3.stack }) - }); - return element; -}); +} +function registerStyle15(hash, css) { + const runtime = getRuntime15(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle15(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle15("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); +} +var style_default15 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var ActionLink = (0, import_element27.forwardRef)( + function NoticeActionLink({ className, render, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + Text, + { + ref, + className: clsx_default(style_default15["action-link"], className), + ...props, + variant: "body-md", + render: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Link, { tone: "neutral", variant: "default", render }) + } + ); + } +); // packages/admin-ui/build-module/navigable-region/index.mjs -var import_element4 = __toESM(require_element(), 1); -var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); -var NavigableRegion = (0, import_element4.forwardRef)( +var import_element28 = __toESM(require_element(), 1); +var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element28.forwardRef)( ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { - return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( Tag, { ref, @@ -701,14 +10301,91 @@ var import_components = __toESM(require_components(), 1); var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); // packages/admin-ui/build-module/page/header.mjs -var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='aa9c241ccc']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "aa9c241ccc"); - style.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")); - document.head.appendChild(style); +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; +function getRuntime16() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument16(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash16(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE16}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { + return true; + } + } + return false; +} +function injectStyle16(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime16(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash16(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument16(targetDocument) { + const runtime = getRuntime16(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle16(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle16(hash, css) { + const runtime = getRuntime16(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle16(targetDocument, hash, css); + } } -var style_default4 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; +if (typeof process === "undefined" || true) { + registerStyle16("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); +} +var style_default16 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Header({ headingLevel = 1, breadcrumbs, @@ -720,85 +10397,154 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( - Stack, - { - direction: "column", - className: style_default4.header, - render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("header", {}), - children: [ - /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( - Stack, - { - className: style_default4["header-content"], - direction: "row", - gap: "sm", - justify: "space-between", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( - SidebarToggleSlot, - { - bubblesVirtually: true, - className: style_default4["sidebar-toggle-slot"] - } - ), - visual && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( - "div", - { - className: style_default4["header-visual"], - "aria-hidden": "true", - children: visual - } - ), - title && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( - Text, - { - className: style_default4["header-title"], - render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HeadingTag, {}), - variant: "heading-lg", - children: title - } - ), - breadcrumbs, - badges - ] }), - actions && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( - Stack, - { - align: "center", - className: style_default4["header-actions"], - direction: "row", - gap: "sm", - children: actions - } - ) - ] - } - ), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( - Text, - { - render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", {}), - variant: "body-md", - className: style_default4["header-subtitle"], - children: subTitle - } - ) - ] - } - ); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Stack, { direction: "column", className: style_default16.header, children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( + Stack, + { + className: style_default16["header-content"], + direction: "row", + gap: "sm", + justify: "space-between", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: style_default16["sidebar-toggle-slot"] + } + ), + visual && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: style_default16["header-visual"], + "aria-hidden": "true", + children: visual + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + Text, + { + className: style_default16["header-title"], + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(HeadingTag, {}), + variant: "heading-lg", + children: title + } + ), + breadcrumbs, + badges + ] }), + actions && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + Stack, + { + align: "center", + className: style_default16["header-actions"], + direction: "row", + gap: "sm", + children: actions + } + ) + ] + } + ), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + Text, + { + render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", {}), + variant: "body-md", + className: style_default16["header-subtitle"], + children: subTitle + } + ) + ] }); } // packages/admin-ui/build-module/page/index.mjs -var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='aa9c241ccc']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "aa9c241ccc"); - style.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")); - document.head.appendChild(style); +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; +function getRuntime17() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument17(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash17(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE17}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { + return true; + } + } + return false; +} +function injectStyle17(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime17(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash17(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument17(targetDocument) { + const runtime = getRuntime17(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle17(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle17(hash, css) { + const runtime = getRuntime17(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle17(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle17("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } -var style_default5 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; +var style_default17 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Page({ headingLevel, breadcrumbs, @@ -813,10 +10559,10 @@ function Page({ hasPadding = false, showSidebarToggle = true }) { - const classes = clsx_default(style_default5.page, className); + const classes = clsx_default(style_default17.page, className); const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); - return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ - (title || breadcrumbs || badges || actions || visual) && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ + (title || breadcrumbs || badges || actions || visual) && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( Header, { headingLevel, @@ -829,12 +10575,12 @@ function Page({ showSidebarToggle } ), - hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( "div", { className: clsx_default( - style_default5.content, - style_default5["has-padding"] + style_default17.content, + style_default17["has-padding"] ), children } @@ -847,18 +10593,18 @@ var page_default = Page; // routes/connectors-home/stage.tsx var import_components4 = __toESM(require_components()); var import_data4 = __toESM(require_data()); -var import_element8 = __toESM(require_element()); -var import_i18n4 = __toESM(require_i18n()); +var import_element32 = __toESM(require_element()); +var import_i18n7 = __toESM(require_i18n()); var import_core_data3 = __toESM(require_core_data()); import { privateApis as connectorsPrivateApis2 } from "@wordpress/connectors"; // routes/connectors-home/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='31ffc51439']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='f2df357a8c']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "31ffc51439"); - style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); + style.setAttribute("data-wp-hash", "f2df357a8c"); + style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:145px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); document.head.appendChild(style); } @@ -866,16 +10612,16 @@ if (typeof document !== "undefined" && true && !document.head.querySelector("sty var import_components3 = __toESM(require_components()); var import_core_data2 = __toESM(require_core_data()); var import_data3 = __toESM(require_data()); -var import_element7 = __toESM(require_element()); -var import_i18n3 = __toESM(require_i18n()); +var import_element31 = __toESM(require_element()); +var import_i18n6 = __toESM(require_i18n()); var import_notices2 = __toESM(require_notices()); var import_url = __toESM(require_url()); // routes/connectors-home/default-connectors.tsx var import_components2 = __toESM(require_components()); -var import_element6 = __toESM(require_element()); +var import_element30 = __toESM(require_element()); var import_data2 = __toESM(require_data()); -var import_i18n2 = __toESM(require_i18n()); +var import_i18n5 = __toESM(require_i18n()); import { __experimentalRegisterConnector as registerConnector, __experimentalConnectorItem as ConnectorItem, @@ -884,8 +10630,8 @@ import { } from "@wordpress/connectors"; // routes/lock-unlock.ts -var import_private_apis = __toESM(require_private_apis()); -var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( +var import_private_apis2 = __toESM(require_private_apis()); +var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/routes" ); @@ -893,8 +10639,8 @@ var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnl // routes/connectors-home/use-connector-plugin.ts var import_core_data = __toESM(require_core_data()); var import_data = __toESM(require_data()); -var import_element5 = __toESM(require_element()); -var import_i18n = __toESM(require_i18n()); +var import_element29 = __toESM(require_element()); +var import_i18n4 = __toESM(require_i18n()); var import_notices = __toESM(require_notices()); function useConnectorPlugin({ file: pluginFileFromServer, @@ -905,10 +10651,10 @@ function useConnectorPlugin({ keySource = "none", initialIsConnected = false }) { - const [isExpanded, setIsExpanded] = (0, import_element5.useState)(false); - const [isBusy, setIsBusy] = (0, import_element5.useState)(false); - const [connectedState, setConnectedState] = (0, import_element5.useState)(initialIsConnected); - const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element5.useState)(null); + const [isExpanded, setIsExpanded] = (0, import_element29.useState)(false); + const [isBusy, setIsBusy] = (0, import_element29.useState)(false); + const [connectedState, setConnectedState] = (0, import_element29.useState)(initialIsConnected); + const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element29.useState)(null); const pluginBasename = pluginFileFromServer?.replace(/\.php$/, ""); const pluginSlug = pluginBasename?.includes("/") ? pluginBasename.split("/")[0] : pluginBasename; const { @@ -1001,9 +10747,9 @@ function useConnectorPlugin({ invalidateResolution("getEntityRecord", ["root", "site"]); setIsExpanded(true); createSuccessNotice( - (0, import_i18n.sprintf)( + (0, import_i18n4.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ - (0, import_i18n.__)("Plugin for %s installed and activated successfully."), + (0, import_i18n4.__)("Plugin for %s installed and activated successfully."), connectorName ), { @@ -1013,9 +10759,9 @@ function useConnectorPlugin({ ); } catch { createErrorNotice( - (0, import_i18n.sprintf)( + (0, import_i18n4.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ - (0, import_i18n.__)("Failed to install plugin for %s."), + (0, import_i18n4.__)("Failed to install plugin for %s."), connectorName ), { @@ -1046,9 +10792,9 @@ function useConnectorPlugin({ invalidateResolution("getEntityRecord", ["root", "site"]); setIsExpanded(true); createSuccessNotice( - (0, import_i18n.sprintf)( + (0, import_i18n4.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ - (0, import_i18n.__)("Plugin for %s activated successfully."), + (0, import_i18n4.__)("Plugin for %s activated successfully."), connectorName ), { @@ -1058,9 +10804,9 @@ function useConnectorPlugin({ ); } catch { createErrorNotice( - (0, import_i18n.sprintf)( + (0, import_i18n4.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ - (0, import_i18n.__)("Failed to activate plugin for %s."), + (0, import_i18n4.__)("Failed to activate plugin for %s."), connectorName ), { @@ -1089,23 +10835,23 @@ function useConnectorPlugin({ }; const getButtonLabel = () => { if (isBusy) { - return pluginStatus === "not-installed" ? (0, import_i18n.__)("Installing\u2026") : (0, import_i18n.__)("Activating\u2026"); + return pluginStatus === "not-installed" ? (0, import_i18n4.__)("Installing\u2026") : (0, import_i18n4.__)("Activating\u2026"); } if (isExpanded) { - return (0, import_i18n.__)("Cancel"); + return (0, import_i18n4.__)("Cancel"); } if (isConnected) { - return (0, import_i18n.__)("Edit"); + return (0, import_i18n4.__)("Edit"); } switch (pluginStatus) { case "checking": - return (0, import_i18n.__)("Checking\u2026"); + return (0, import_i18n4.__)("Checking\u2026"); case "not-installed": - return (0, import_i18n.__)("Install"); + return (0, import_i18n4.__)("Install"); case "inactive": - return (0, import_i18n.__)("Activate"); + return (0, import_i18n4.__)("Activate"); case "active": - return (0, import_i18n.__)("Set up"); + return (0, import_i18n4.__)("Set up"); } }; const saveApiKey = async (apiKey) => { @@ -1126,9 +10872,9 @@ function useConnectorPlugin({ } setConnectedState(true); createSuccessNotice( - (0, import_i18n.sprintf)( + (0, import_i18n4.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ - (0, import_i18n.__)("%s connected successfully."), + (0, import_i18n4.__)("%s connected successfully."), connectorName ), { @@ -1136,9 +10882,9 @@ function useConnectorPlugin({ type: "snackbar" } ); - } catch (error) { - console.error("Failed to save API key:", error); - throw error; + } catch (error2) { + console.error("Failed to save API key:", error2); + throw error2; } }; const removeApiKey = async () => { @@ -1151,9 +10897,9 @@ function useConnectorPlugin({ ); setConnectedState(false); createSuccessNotice( - (0, import_i18n.sprintf)( + (0, import_i18n4.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ - (0, import_i18n.__)("%s disconnected."), + (0, import_i18n4.__)("%s disconnected."), connectorName ), { @@ -1161,12 +10907,12 @@ function useConnectorPlugin({ type: "snackbar" } ); - } catch (error) { - console.error("Failed to remove API key:", error); + } catch (error2) { + console.error("Failed to remove API key:", error2); createErrorNotice( - (0, import_i18n.sprintf)( + (0, import_i18n4.sprintf)( /* translators: %s: Name of the connector (e.g. "OpenAI"). */ - (0, import_i18n.__)("Failed to disconnect %s."), + (0, import_i18n4.__)("Failed to disconnect %s."), connectorName ), { @@ -1174,7 +10920,7 @@ function useConnectorPlugin({ type: "snackbar" } ); - throw error; + throw error2; } }; return { @@ -1355,19 +11101,24 @@ var GeminiLogo = () => /* @__PURE__ */ React.createElement( ); // routes/connectors-home/default-connectors.tsx -var { store: connectorsStore } = unlock(connectorsPrivateApis); -function getConnectorData() { +var { store: connectorsStore } = unlock2(connectorsPrivateApis); +function getConnectorScriptModuleData() { try { - const parsed = JSON.parse( + return JSON.parse( document.getElementById( "wp-script-module-data-options-connectors-wp-admin" - )?.textContent ?? "" + )?.textContent ?? "{}" ); - return parsed?.connectors ?? {}; } catch { return {}; } } +function getConnectorData() { + return getConnectorScriptModuleData().connectors ?? {}; +} +function getIsFileModDisabled() { + return !!getConnectorScriptModuleData().isFileModDisabled; +} var CONNECTOR_LOGOS = { google: GeminiLogo, openai: OpenAILogo, @@ -1397,9 +11148,21 @@ var ConnectedBadge = () => /* @__PURE__ */ React.createElement( whiteSpace: "nowrap" } }, - (0, import_i18n2.__)("Connected") + (0, import_i18n5.__)("Connected") +); +var PluginDirectoryLink = ({ slug }) => /* @__PURE__ */ React.createElement( + Link, + { + href: (0, import_i18n5.sprintf)( + /* translators: %s: plugin slug. */ + (0, import_i18n5.__)("https://wordpress.org/plugins/%s/"), + slug + ), + openInNewTab: true + }, + (0, import_i18n5.__)("Learn more") ); -var UnavailableActionBadge = () => /* @__PURE__ */ React.createElement(Badge, null, (0, import_i18n2.__)("Not available")); +var UnavailableActionBadge = () => /* @__PURE__ */ React.createElement(Badge, null, (0, import_i18n5.__)("Not available")); function ApiKeyConnector({ name, description, @@ -1445,7 +11208,7 @@ function ApiKeyConnector({ const isExternallyConfigured = keySource === "env" || keySource === "constant"; const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; const showActionButton = !showUnavailableBadge; - const actionButtonRef = (0, import_element6.useRef)(null); + const actionButtonRef = (0, import_element30.useRef)(null); return /* @__PURE__ */ React.createElement( ConnectorItem, { @@ -1453,7 +11216,7 @@ function ApiKeyConnector({ logo, name, description, - actionArea: /* @__PURE__ */ React.createElement(import_components2.__experimentalHStack, { spacing: 3, expanded: false }, isConnected && /* @__PURE__ */ React.createElement(ConnectedBadge, null), showUnavailableBadge && /* @__PURE__ */ React.createElement(UnavailableActionBadge, null), showActionButton && /* @__PURE__ */ React.createElement( + actionArea: /* @__PURE__ */ React.createElement(import_components2.__experimentalHStack, { spacing: 3, expanded: false }, isConnected && /* @__PURE__ */ React.createElement(ConnectedBadge, null), showUnavailableBadge && (pluginSlug ? /* @__PURE__ */ React.createElement(PluginDirectoryLink, { slug: pluginSlug }) : /* @__PURE__ */ React.createElement(UnavailableActionBadge, null)), showActionButton && /* @__PURE__ */ React.createElement( import_components2.Button, { ref: actionButtonRef, @@ -1506,7 +11269,7 @@ function registerDefaultConnectors() { authentication, plugin: data.plugin }; - const existing = unlock((0, import_data2.select)(connectorsStore)).getConnector( + const existing = unlock2((0, import_data2.select)(connectorsStore)).getConnector( connectorName ); if (authentication.method === "api_key" && !existing?.render) { @@ -1573,15 +11336,15 @@ for (const c of connectorDataValues) { } } function AiPluginCallout() { - const [isBusy, setIsBusy] = (0, import_element7.useState)(false); - const [justActivated, setJustActivated] = (0, import_element7.useState)(false); - const actionButtonRef = (0, import_element7.useRef)(null); - (0, import_element7.useEffect)(() => { + const [isBusy, setIsBusy] = (0, import_element31.useState)(false); + const [justActivated, setJustActivated] = (0, import_element31.useState)(false); + const actionButtonRef = (0, import_element31.useRef)(null); + (0, import_element31.useEffect)(() => { if (justActivated) { actionButtonRef.current?.focus(); } }, [justActivated]); - const initialHasConnectedProvider = (0, import_element7.useRef)( + const initialHasConnectedProvider = (0, import_element31.useRef)( connectorDataValues.some( (c) => c.type === "ai_provider" && c.authentication.method === "api_key" && c.authentication.isConnected ) @@ -1647,14 +11410,14 @@ function AiPluginCallout() { ); setJustActivated(true); createSuccessNotice( - (0, import_i18n3.__)("AI plugin installed and activated successfully."), + (0, import_i18n6.__)("AI plugin installed and activated successfully."), { id: "ai-plugin-install-success", type: "snackbar" } ); } catch { - createErrorNotice((0, import_i18n3.__)("Failed to install the AI plugin."), { + createErrorNotice((0, import_i18n6.__)("Failed to install the AI plugin."), { id: "ai-plugin-install-error", type: "snackbar" }); @@ -1672,12 +11435,12 @@ function AiPluginCallout() { { throwOnError: true } ); setJustActivated(true); - createSuccessNotice((0, import_i18n3.__)("AI plugin activated successfully."), { + createSuccessNotice((0, import_i18n6.__)("AI plugin activated successfully."), { id: "ai-plugin-activate-success", type: "snackbar" }); } catch { - createErrorNotice((0, import_i18n3.__)("Failed to activate the AI plugin."), { + createErrorNotice((0, import_i18n6.__)("Failed to activate the AI plugin."), { id: "ai-plugin-activate-error", type: "snackbar" }); @@ -1694,49 +11457,47 @@ function AiPluginCallout() { if (pluginStatus === "active" && initialHasConnectedProvider && !justActivated) { return null; } - if (pluginStatus === "not-installed" && canInstallPlugins === false) { - return null; - } if (pluginStatus === "inactive" && canManagePlugins === false) { return null; } const isActiveNoProvider = pluginStatus === "active" && !hasConnectedProvider; const isJustConnected = pluginStatus === "active" && hasConnectedProvider && (!initialHasConnectedProvider || justActivated); const showInstallActivate = pluginStatus === "not-installed" || pluginStatus === "inactive"; + const hideButtons = pluginStatus === "not-installed" && canInstallPlugins === false; const getMessage = () => { if (isJustConnected) { - return (0, import_i18n3.__)( + return (0, import_i18n6.__)( "The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" ); } if (isActiveNoProvider) { - return (0, import_i18n3.__)( - "The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>" + return (0, import_i18n6.__)( + "The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>" ); } - return (0, import_i18n3.__)( - "The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" + return (0, import_i18n6.__)( + "The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" ); }; const getPrimaryButtonProps = () => { if (pluginStatus === "not-installed") { return { - label: isBusy ? (0, import_i18n3.__)("Installing\u2026") : (0, import_i18n3.__)("Install the AI plugin"), + label: isBusy ? (0, import_i18n6.__)("Installing\u2026") : (0, import_i18n6.__)("Install the AI plugin"), disabled: isBusy, onClick: isBusy ? void 0 : installPlugin }; } return { - label: isBusy ? (0, import_i18n3.__)("Activating\u2026") : (0, import_i18n3.__)("Activate the AI plugin"), + label: isBusy ? (0, import_i18n6.__)("Activating\u2026") : (0, import_i18n6.__)("Activate the AI plugin"), disabled: isBusy, onClick: isBusy ? void 0 : activatePlugin }; }; - return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element7.createInterpolateElement)(getMessage(), { + return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element31.createInterpolateElement)(getMessage(), { strong: /* @__PURE__ */ React.createElement("strong", null), // @ts-ignore children are injected by createInterpolateElement at runtime. a: /* @__PURE__ */ React.createElement(import_components3.ExternalLink, { href: AI_PLUGIN_URL }) - })), showInstallActivate ? /* @__PURE__ */ React.createElement( + })), !hideButtons && (showInstallActivate ? /* @__PURE__ */ React.createElement( import_components3.Button, { variant: "primary", @@ -1757,33 +11518,65 @@ function AiPluginCallout() { page: AI_PLUGIN_PAGE_SLUG }) }, - (0, import_i18n3.__)("Control features in the AI plugin") - )), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); + (0, import_i18n6.__)("Control features in the AI plugin") + ))), /* @__PURE__ */ React.createElement(WpLogoDecoration, null)); } // routes/connectors-home/stage.tsx -var { store } = unlock(connectorsPrivateApis2); +var { store } = unlock2(connectorsPrivateApis2); registerDefaultConnectors(); function ConnectorsPage() { - const { connectors, canInstallPlugins } = (0, import_data4.useSelect)( - (select2) => ({ - connectors: unlock(select2(store)).getConnectors(), - canInstallPlugins: select2(import_core_data3.store).canUser("create", { - kind: "root", - name: "plugin" - }) - }), + const isFileModDisabled = getIsFileModDisabled(); + const { connectors, canInstallPlugins, isAiPluginInstalled } = (0, import_data4.useSelect)( + (select2) => { + const coreSelect = select2(import_core_data3.store); + const aiPlugin = coreSelect.getEntityRecord( + "root", + "plugin", + "ai/ai" + ); + return { + connectors: unlock2(select2(store)).getConnectors(), + canInstallPlugins: coreSelect.canUser("create", { + kind: "root", + name: "plugin" + }), + isAiPluginInstalled: !!aiPlugin + }; + }, [] ); const renderableConnectors = connectors.filter( (connector) => connector.render ); + const aiProviderPluginSlugs = Array.from( + new Set( + connectors.filter( + (connector) => connector.type === "ai_provider" + ).map( + (connector) => connector.plugin?.file?.split("/")[0] + ).filter((slug) => !!slug) + ) + ).sort(); + const installedPluginSlugs = new Set( + connectors.filter( + (connector) => connector.plugin?.isInstalled + ).map( + (connector) => connector.plugin?.file?.split("/")[0] + ).filter((slug) => !!slug) + ); + if (isAiPluginInstalled) { + installedPluginSlugs.add("ai"); + } + const manualInstallPluginSlugs = ["ai", ...aiProviderPluginSlugs].filter( + (slug) => !installedPluginSlugs.has(slug) + ); const isEmpty = renderableConnectors.length === 0; return /* @__PURE__ */ React.createElement( page_default, { - title: (0, import_i18n4.__)("Connectors"), - subTitle: (0, import_i18n4.__)( + title: (0, import_i18n7.__)("Connectors"), + subTitle: (0, import_i18n7.__)( "All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere." ) }, @@ -1792,6 +11585,18 @@ function ConnectorsPage() { { className: `connectors-page${isEmpty ? " connectors-page--empty" : ""}` }, + manualInstallPluginSlugs.length > 0 && (isFileModDisabled || !canInstallPlugins) && /* @__PURE__ */ React.createElement( + notice_exports.Root, + { + intent: "info", + className: "connectors-page__file-mods-notice" + }, + /* @__PURE__ */ React.createElement(notice_exports.Description, null, isFileModDisabled ? (0, import_i18n7.__)( + "Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow." + ) : (0, import_i18n7.__)( + "You do not have permission to install plugins. Please ask a site administrator to install them for you." + )) + ), isEmpty ? /* @__PURE__ */ React.createElement( import_components4.__experimentalVStack, { @@ -1799,10 +11604,10 @@ function ConnectorsPage() { spacing: 3, style: { maxWidth: 480 } }, - /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { alignment: "center", spacing: 2 }, /* @__PURE__ */ React.createElement(import_components4.__experimentalHeading, { level: 2, size: 15, weight: 600 }, (0, import_i18n4.__)("No connectors yet")), /* @__PURE__ */ React.createElement(import_components4.__experimentalText, { size: 12 }, (0, import_i18n4.__)( + /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { alignment: "center", spacing: 2 }, /* @__PURE__ */ React.createElement(import_components4.__experimentalHeading, { level: 2, size: 15, weight: 600 }, (0, import_i18n7.__)("No connectors yet")), /* @__PURE__ */ React.createElement(import_components4.__experimentalText, { size: 12 }, (0, import_i18n7.__)( "Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place." ))), - /* @__PURE__ */ React.createElement(import_components4.Button, { variant: "secondary", href: "plugin-install.php" }, (0, import_i18n4.__)("Learn more")) + /* @__PURE__ */ React.createElement(import_components4.Button, { variant: "secondary", href: "plugin-install.php" }, (0, import_i18n7.__)("Learn more")) ) : /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3 }, /* @__PURE__ */ React.createElement(AiPluginCallout, null), /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3, role: "list" }, connectors.map( (connector) => { if (connector.render) { @@ -1823,8 +11628,8 @@ function ConnectorsPage() { return null; } ))), - canInstallPlugins && /* @__PURE__ */ React.createElement("p", null, (0, import_element8.createInterpolateElement)( - (0, import_i18n4.__)( + canInstallPlugins && !isFileModDisabled && /* @__PURE__ */ React.createElement("p", null, (0, import_element32.createInterpolateElement)( + (0, import_i18n7.__)( "If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available." ), { @@ -1844,3 +11649,27 @@ var stage = Stage; export { stage }; +/*! Bundled license information: + +use-sync-external-store/cjs/use-sync-external-store-shim.development.js: + (** + * @license React + * use-sync-external-store-shim.development.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: + (** + * @license React + * use-sync-external-store-shim/with-selector.development.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) +*/ diff --git a/src/wp-includes/build/routes/connectors-home/content.min.asset.php b/src/wp-includes/build/routes/connectors-home/content.min.asset.php index 13d2f57add4b7..4a4496e71fbf0 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.asset.php +++ b/src/wp-includes/build/routes/connectors-home/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '475bdb5abdcf92eb1b13'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '52bce0c315233cfc914c'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/connectors-home/content.min.js b/src/wp-includes/build/routes/connectors-home/content.min.js index 80437d9305554..a1586ff51f6e2 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.js +++ b/src/wp-includes/build/routes/connectors-home/content.min.js @@ -1 +1,25 @@ -var Ut=Object.create;var je=Object.defineProperty;var Qt=Object.getOwnPropertyDescriptor;var Jt=Object.getOwnPropertyNames;var Ft=Object.getPrototypeOf,_t=Object.prototype.hasOwnProperty;var z=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $t=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Jt(t))!_t.call(e,a)&&a!==n&&je(e,a,{get:()=>t[a],enumerable:!(r=Qt(t,a))||r.enumerable});return e};var s=(e,t,n)=>(n=e!=null?Ut(Ft(e)):{},$t(t||!e||!e.__esModule?je(n,"default",{value:e,enumerable:!0}):n,e));var J=z((kn,He)=>{He.exports=window.wp.i18n});var N=z((An,Te)=>{Te.exports=window.wp.element});var Z=z((Wn,Ve)=>{Ve.exports=window.React});var F=z((In,Se)=>{Se.exports=window.ReactJSXRuntime});var lt=z((Na,ct)=>{ct.exports=window.wp.privateApis});var ee=z((Xa,mt)=>{mt.exports=window.wp.components});var ne=z((Qa,Pt)=>{Pt.exports=window.wp.data});var le=z((Ja,Lt)=>{Lt.exports=window.wp.coreData});var Ge=z((Fa,zt)=>{zt.exports=window.wp.notices});var Mt=z((_a,Gt)=>{Gt.exports=window.wp.url});function qe(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=qe(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function en(){for(var e,t,n=0,r="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=qe(e))&&(r&&(r+=" "),r+=t);return r}var R=en;var st=s(N(),1);var Ye=s(Z(),1),Xe={};function he(e,t){let n=Ye.useRef(Xe);return n.current===Xe&&(n.current=e(t)),n}function tn(e,t){return function(r,...a){let o=new URL(e);return o.searchParams.set("code",r.toString()),a.forEach(i=>o.searchParams.append("args[]",i)),`${t} error #${r}; visit ${o} for the full message.`}}var nn=tn("https://base-ui.com/production-error","Base UI"),Ee=nn;var S=s(Z(),1);function me(e,t,n,r){let a=he(ke).current;return an(a,e,t,n,r)&&Ze(a,[e,t,n,r]),a.callback}function Ce(e){let t=he(ke).current;return rn(t,e)&&Ze(t,e),t.callback}function ke(){return{callback:null,cleanup:null,refs:[]}}function an(e,t,n,r,a){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==a}function rn(e,t){return e.refs.length!==t.length||e.refs.some((n,r)=>n!==t[r])}function Ze(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){let r=Array(t.length).fill(null);for(let a=0;a<t.length;a+=1){let o=t[a];if(o!=null)switch(typeof o){case"function":{let i=o(n);typeof i=="function"&&(r[a]=i);break}case"object":{o.current=n;break}default:}}e.cleanup=()=>{for(let a=0;a<t.length;a+=1){let o=t[a];if(o!=null)switch(typeof o){case"function":{let i=r[a];typeof i=="function"?i():o(null);break}case"object":{o.current=null;break}default:}}}}}}var Ke=s(Z(),1);var Ae=s(Z(),1),on=parseInt(Ae.version,10);function We(e){return on>=e}function ve(e){if(!Ke.isValidElement(e))return null;let t=e,n=t.props;return(We(19)?n?.ref:t.ref)??null}function _(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}var ta=Object.freeze([]),A=Object.freeze({});function Ie(e,t){let n={};for(let r in e){let a=e[r];if(t?.hasOwnProperty(r)){let o=t[r](a);o!=null&&Object.assign(n,o);continue}a===!0?n[`data-${r.toLowerCase()}`]="":a&&(n[`data-${r.toLowerCase()}`]=a.toString())}return n}function Ue(e,t){return typeof e=="function"?e(t):e}function Qe(e,t){return typeof e=="function"?e(t):e}var be={};function Y(e,t,n,r,a){if(!n&&!r&&!a&&!e)return de(t);let o=de(e);return t&&(o=$(o,t)),n&&(o=$(o,n)),r&&(o=$(o,r)),a&&(o=$(o,a)),o}function Je(e){if(e.length===0)return be;if(e.length===1)return de(e[0]);let t=de(e[0]);for(let n=1;n<e.length;n+=1)t=$(t,e[n]);return t}function de(e){return we(e)?{..._e(e,be)}:sn(e)}function $(e,t){return we(t)?_e(t,e):dn(e,t)}function sn(e){let t={...e};for(let n in t){let r=t[n];Fe(n,r)&&(t[n]=$e(r))}return t}function dn(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case"style":{e[n]=_(e.style,r);break}case"className":{e[n]=ye(e.className,r);break}default:Fe(n,r)?e[n]=cn(e[n],r):e[n]=r}}return e}function Fe(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),a=e.charCodeAt(2);return n===111&&r===110&&a>=65&&a<=90&&(typeof t=="function"||typeof t>"u")}function we(e){return typeof e=="function"}function _e(e,t){return we(e)?e(t):e??be}function cn(e,t){return t?e?(...n)=>{let r=n[0];if(tt(r)){let o=r;et(o);let i=t(...n);return o.baseUIHandlerPrevented||e?.(...n),i}let a=t(...n);return e?.(...n),a}:$e(t):e}function $e(e){return e&&((...t)=>{let n=t[0];return tt(n)&&et(n),e(...t)})}function et(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function ye(e,t){return t?e?t+" "+e:t:e}function tt(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var xe=s(Z(),1);function nt(e,t,n={}){let r=t.render,a=ln(t,n);if(n.enabled===!1)return null;let o=n.state??A;return un(e,r,a,o)}function ln(e,t={}){let{className:n,style:r,render:a}=e,{state:o=A,ref:i,props:c,stateAttributesMapping:p,enabled:l=!0}=t,u=l?Ue(n,o):void 0,g=l?Qe(r,o):void 0,w=l?Ie(o,p):A,M=l&&c?pn(c):void 0,f=l?_(w,M)??{}:A;return typeof document<"u"&&(l?Array.isArray(i)?f.ref=Ce([f.ref,ve(a),...i]):f.ref=me(f.ref,ve(a),i):me(null,null)),l?(u!==void 0&&(f.className=ye(f.className,u)),g!==void 0&&(f.style=_(f.style,g)),f):A}function pn(e){return Array.isArray(e)?Je(e):Y(void 0,e)}var fn=Symbol.for("react.lazy");function un(e,t,n,r){if(t){if(typeof t=="function")return t(n,r);let a=Y(n,t.props);a.ref=n.ref;let o=t;return o?.$$typeof===fn&&(o=S.Children.toArray(t)[0]),S.cloneElement(o,a)}if(e&&typeof e=="string")return gn(e,n);throw new Error(Ee(8))}function gn(e,t){return e==="button"?(0,xe.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,xe.createElement)("img",{alt:"",...t,key:t.key}):S.createElement(e,t)}function ce(e){return nt(e.defaultTagName??"div",e,e)}var ot=s(N(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4130d64bea']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","4130d64bea"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')),document.head.appendChild(e)}var at={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","1fb29d3a3c"),e.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")),document.head.appendChild(e)}var rt={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},W=(0,ot.forwardRef)(function({variant:t="body-md",render:n,className:r,...a},o){return ce({render:n,defaultTagName:"span",ref:o,props:Y(a,{className:R(at.text,rt.heading,rt.p,at[t],r)})})});var dt=s(F(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='d6a685e1aa']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","d6a685e1aa"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}")),document.head.appendChild(e)}var it={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},Pe=(0,st.forwardRef)(function({intent:t="none",className:n,...r},a){return(0,dt.jsx)(W,{ref:a,className:R(it.badge,it[`is-${t}-intent`],n),...r,variant:"body-sm"})});var pt=s(N(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","b51ff41489"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var hn={stack:"_19ce0419607e1896__stack"},mn={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},K=(0,pt.forwardRef)(function({direction:t,gap:n,align:r,justify:a,wrap:o,render:i,...c},p){let l={gap:n&&mn[n],alignItems:r,justifyContent:a,flexDirection:t,flexWrap:o};return ce({render:i,ref:p,props:Y(c,{style:l,className:hn.stack})})});var ft=s(N(),1),ut=s(F(),1),gt=(0,ft.forwardRef)(({children:e,className:t,ariaLabel:n,as:r="div",...a},o)=>(0,ut.jsx)(r,{ref:o,className:R("admin-ui-navigable-region",t),"aria-label":n,role:"region",tabIndex:"-1",...a,children:e}));gt.displayName="NavigableRegion";var ht=gt;var vt=s(ee(),1),{Fill:bt,Slot:wt}=(0,vt.createSlotFill)("SidebarToggle");var m=s(F(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='aa9c241ccc']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","aa9c241ccc"),e.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")),document.head.appendChild(e)}var E={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function yt({headingLevel:e=1,breadcrumbs:t,badges:n,visual:r,title:a,subTitle:o,actions:i,showSidebarToggle:c=!0}){let p=`h${e}`;return(0,m.jsxs)(K,{direction:"column",className:E.header,render:(0,m.jsx)("header",{}),children:[(0,m.jsxs)(K,{className:E["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,m.jsxs)(K,{direction:"row",gap:"sm",align:"center",justify:"start",children:[c&&(0,m.jsx)(wt,{bubblesVirtually:!0,className:E["sidebar-toggle-slot"]}),r&&(0,m.jsx)("div",{className:E["header-visual"],"aria-hidden":"true",children:r}),a&&(0,m.jsx)(W,{className:E["header-title"],render:(0,m.jsx)(p,{}),variant:"heading-lg",children:a}),t,n]}),i&&(0,m.jsx)(K,{align:"center",className:E["header-actions"],direction:"row",gap:"sm",children:i})]}),o&&(0,m.jsx)(W,{render:(0,m.jsx)("p",{}),variant:"body-md",className:E["header-subtitle"],children:o})]})}var te=s(F(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='aa9c241ccc']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","aa9c241ccc"),e.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")),document.head.appendChild(e)}var Le={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function xt({headingLevel:e,breadcrumbs:t,badges:n,visual:r,title:a,subTitle:o,children:i,className:c,actions:p,ariaLabel:l,hasPadding:u=!1,showSidebarToggle:g=!0}){let w=R(Le.page,c);return(0,te.jsxs)(ht,{className:w,ariaLabel:l??(typeof a=="string"?a:""),children:[(a||t||n||p||r)&&(0,te.jsx)(yt,{headingLevel:e,breadcrumbs:t,badges:n,visual:r,title:a,subTitle:o,actions:p,showSidebarToggle:g}),u?(0,te.jsx)("div",{className:R(Le.content,Le["has-padding"]),children:i}):i]})}xt.SidebarToggleFill=bt;var ze=xt;var P=s(ee()),Zt=s(ne()),At=s(N()),C=s(J()),Wt=s(le());import{privateApis as Bn}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='31ffc51439']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","31ffc51439"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494;text-align:center}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:84px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var oe=s(ee()),Ne=s(le()),ie=s(ne()),G=s(N()),v=s(J()),St=s(Ge()),Et=s(Mt());var pe=s(ee()),Tt=s(N()),Vt=s(ne()),Oe=s(J());import{__experimentalRegisterConnector as vn,__experimentalConnectorItem as bn,__experimentalDefaultConnectorSettings as wn,privateApis as yn}from"@wordpress/connectors";var Ot=s(lt()),{lock:$a,unlock:I}=(0,Ot.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Me=s(le()),re=s(ne()),ae=s(N()),d=s(J()),Dt=s(Ge());function Rt({file:e,settingName:t,connectorName:n,isInstalled:r,isActivated:a,keySource:o="none",initialIsConnected:i=!1}){let[c,p]=(0,ae.useState)(!1),[l,u]=(0,ae.useState)(!1),[g,w]=(0,ae.useState)(i),[M,f]=(0,ae.useState)(null),y=e?.replace(/\.php$/,""),H=y?.includes("/")?y.split("/")[0]:y,{derivedPluginStatus:B,canManagePlugins:U,currentApiKey:x,canInstallPlugins:L}=(0,re.useSelect)(T=>{let V=T(Me.store),Q=V.getEntityRecord("root","site")?.[t]??"",X=!!V.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:V.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:Q,canInstallPlugins:X};let ue=V.getEntityRecord("root","plugin",y);if(!V.hasFinishedResolution("getEntityRecord",["root","plugin",y]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:Q,canInstallPlugins:X};if(ue)return{derivedPluginStatus:ue.status==="active"||ue.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:Q,canInstallPlugins:X};let ge="not-installed";return a?ge="active":r&&(ge="inactive"),{derivedPluginStatus:ge,canManagePlugins:!1,currentApiKey:Q,canInstallPlugins:X}},[y,t,r,a]),h=M??B,O=U,k=h==="active"&&g||M==="active"&&!!x,{saveEntityRecord:b,invalidateResolution:j}=(0,re.useDispatch)(Me.store),{createSuccessNotice:q,createErrorNotice:D}=(0,re.useDispatch)(Dt.store),fe=async()=>{if(H){u(!0);try{await b("root","plugin",{slug:H,status:"active"},{throwOnError:!0}),f("active"),j("getEntityRecord",["root","site"]),p(!0),q((0,d.sprintf)((0,d.__)("Plugin for %s installed and activated successfully."),n),{id:"connector-plugin-install-success",type:"snackbar"})}catch{D((0,d.sprintf)((0,d.__)("Failed to install plugin for %s."),n),{id:"connector-plugin-install-error",type:"snackbar"})}finally{u(!1)}}},Kt=async()=>{if(e){u(!0);try{await b("root","plugin",{plugin:y,status:"active"},{throwOnError:!0}),f("active"),j("getEntityRecord",["root","site"]),p(!0),q((0,d.sprintf)((0,d.__)("Plugin for %s activated successfully."),n),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{D((0,d.sprintf)((0,d.__)("Failed to activate plugin for %s."),n),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{u(!1)}}};return{pluginStatus:h,canInstallPlugins:L,canActivatePlugins:O,isExpanded:c,setIsExpanded:p,isBusy:l,isConnected:k,currentApiKey:x,keySource:o,handleButtonClick:()=>{if(h==="not-installed"){if(L===!1)return;fe()}else if(h==="inactive"){if(O===!1)return;Kt()}else p(!c)},getButtonLabel:()=>{if(l)return h==="not-installed"?(0,d.__)("Installing\u2026"):(0,d.__)("Activating\u2026");if(c)return(0,d.__)("Cancel");if(k)return(0,d.__)("Edit");switch(h){case"checking":return(0,d.__)("Checking\u2026");case"not-installed":return(0,d.__)("Install");case"inactive":return(0,d.__)("Activate");case"active":return(0,d.__)("Set up")}},saveApiKey:async T=>{let V=x;try{let X=(await b("root","site",{[t]:T},{throwOnError:!0}))?.[t];if(T&&(X===V||!X))throw new Error("It was not possible to connect to the provider using this key.");w(!0),q((0,d.sprintf)((0,d.__)("%s connected successfully."),n),{id:"connector-connect-success",type:"snackbar"})}catch(se){throw console.error("Failed to save API key:",se),se}},removeApiKey:async()=>{try{await b("root","site",{[t]:""},{throwOnError:!0}),w(!1),q((0,d.sprintf)((0,d.__)("%s disconnected."),n),{id:"connector-disconnect-success",type:"snackbar"})}catch(T){throw console.error("Failed to remove API key:",T),D((0,d.sprintf)((0,d.__)("Failed to disconnect %s."),n),{id:"connector-disconnect-error",type:"snackbar"}),T}}}}var Nt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Bt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),jt=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Ht=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),qt=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:xn}=I(yn);function De(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"")?.connectors??{}}catch{return{}}}var Pn={google:qt,openai:Nt,anthropic:Bt,akismet:Ht};function Ln(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let n=Pn[e];return React.createElement(n||jt,null)}var zn=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,Oe.__)("Connected")),Gn=()=>React.createElement(Pe,null,(0,Oe.__)("Not available"));function Mn({name:e,description:t,logo:n,authentication:r,plugin:a}){let o=r?.method==="api_key"?r:void 0,i=o?.settingName??"",c=o?.credentialsUrl??void 0,p=a?.file?.replace(/\.php$/,""),l=p?.includes("/")?p.split("/")[0]:p,u;try{c&&(u=new URL(c).hostname)}catch{}let{pluginStatus:g,canInstallPlugins:w,canActivatePlugins:M,isExpanded:f,setIsExpanded:y,isBusy:H,isConnected:B,currentApiKey:U,keySource:x,handleButtonClick:L,getButtonLabel:h,saveApiKey:O,removeApiKey:k}=Rt({file:a?.file,settingName:i,connectorName:e,isInstalled:a?.isInstalled,isActivated:a?.isActivated,keySource:o?.keySource,initialIsConnected:o?.isConnected}),b=x==="env"||x==="constant",j=g==="not-installed"&&w===!1||g==="inactive"&&M===!1,q=!j,D=(0,Tt.useRef)(null);return React.createElement(bn,{className:l?`connector-item--${l}`:void 0,logo:n,name:e,description:t,actionArea:React.createElement(pe.__experimentalHStack,{spacing:3,expanded:!1},B&&React.createElement(zn,null),j&&React.createElement(Gn,null),q&&React.createElement(pe.Button,{ref:D,variant:f||B?"tertiary":"secondary",size:"compact",onClick:L,disabled:g==="checking"||H,isBusy:H,accessibleWhenDisabled:!0},h()))},f&&g==="active"&&React.createElement(wn,{key:B?"connected":"setup",initialValue:b?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":U,helpUrl:c,helpLabel:u,readOnly:B||b,keySource:x,onRemove:b?void 0:async()=>{await k(),D.current?.focus()},onSave:async fe=>{await O(fe),y(!1),D.current?.focus()}}))}function Xt(){let e=De(),t=n=>n.replace(/[^a-z0-9-_]/gi,"-");for(let[n,r]of Object.entries(e)){if(n==="akismet"&&!r.plugin?.isInstalled)continue;let{authentication:a}=r,o=t(n),i={name:r.name,description:r.description,type:r.type,logo:Ln(n,r.logoUrl),authentication:a,plugin:r.plugin},c=I((0,Vt.select)(xn)).getConnector(o);a.method==="api_key"&&!c?.render&&(i.render=Mn),vn(o,i)}}function Yt(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var On="ai",Dn="ai-wp-admin",Re="ai/ai",Rn="https://wordpress.org/plugins/ai/",Be=Object.values(De()),Nn=Be.some(e=>e.type==="ai_provider"),Ct=[];for(let e of Be)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Ct.push(e.authentication.settingName);function kt(){let[e,t]=(0,G.useState)(!1),[n,r]=(0,G.useState)(!1),a=(0,G.useRef)(null);(0,G.useEffect)(()=>{n&&a.current?.focus()},[n]);let o=(0,G.useRef)(Be.some(L=>L.type==="ai_provider"&&L.authentication.method==="api_key"&&L.authentication.isConnected)).current,{pluginStatus:i,canInstallPlugins:c,canManagePlugins:p,hasConnectedProvider:l}=(0,ie.useSelect)(L=>{let h=L(Ne.store),O=!!h.canUser("create",{kind:"root",name:"plugin"}),k=h.getEntityRecord("root","site"),b=o||Ct.some(D=>!!k?.[D]),j=h.getEntityRecord("root","plugin",Re);return h.hasFinishedResolution("getEntityRecord",["root","plugin",Re])?j?{pluginStatus:j.status==="active"?"active":"inactive",canInstallPlugins:O,canManagePlugins:!0,hasConnectedProvider:b}:{pluginStatus:"not-installed",canInstallPlugins:O,canManagePlugins:O,hasConnectedProvider:b}:{pluginStatus:"checking",canInstallPlugins:O,canManagePlugins:void 0,hasConnectedProvider:b}},[]),{saveEntityRecord:u}=(0,ie.useDispatch)(Ne.store),{createSuccessNotice:g,createErrorNotice:w}=(0,ie.useDispatch)(St.store),M=async()=>{t(!0);try{await u("root","plugin",{slug:On,status:"active"},{throwOnError:!0}),r(!0),g((0,v.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{w((0,v.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},f=async()=>{t(!0);try{await u("root","plugin",{plugin:Re,status:"active"},{throwOnError:!0}),r(!0),g((0,v.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{w((0,v.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!Nn||i==="checking"||i==="active"&&o&&!n||i==="not-installed"&&c===!1||i==="inactive"&&p===!1)return null;let y=i==="active"&&!l,H=i==="active"&&l&&(!o||n),B=i==="not-installed"||i==="inactive",U=()=>H?(0,v.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):y?(0,v.__)("The <strong>AI plugin</strong> is installed. Connect a provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,v.__)("The <strong>AI plugin</strong> can use your connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),x=()=>i==="not-installed"?{label:e?(0,v.__)("Installing\u2026"):(0,v.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:M}:{label:e?(0,v.__)("Activating\u2026"):(0,v.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:f};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,G.createInterpolateElement)(U(),{strong:React.createElement("strong",null),a:React.createElement(oe.ExternalLink,{href:Rn})})),B?React.createElement(oe.Button,{variant:"primary",size:"compact",isBusy:e,disabled:x().disabled,accessibleWhenDisabled:!0,onClick:x().onClick},x().label):React.createElement(oe.Button,{ref:a,variant:"secondary",size:"compact",href:(0,Et.addQueryArgs)("options-general.php",{page:Dn})},(0,v.__)("Control features in the AI plugin"))),React.createElement(Yt,null))}var{store:jn}=I(Bn);Xt();function Hn(){let{connectors:e,canInstallPlugins:t}=(0,Zt.useSelect)(a=>({connectors:I(a(jn)).getConnectors(),canInstallPlugins:a(Wt.store).canUser("create",{kind:"root",name:"plugin"})}),[]),r=e.filter(a=>a.render).length===0;return React.createElement(ze,{title:(0,C.__)("Connectors"),subTitle:(0,C.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${r?" connectors-page--empty":""}`},r?React.createElement(P.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(P.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(P.__experimentalHeading,{level:2,size:15,weight:600},(0,C.__)("No connectors yet")),React.createElement(P.__experimentalText,{size:12},(0,C.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(P.Button,{variant:"secondary",href:"plugin-install.php"},(0,C.__)("Learn more"))):React.createElement(P.__experimentalVStack,{spacing:3},React.createElement(kt,null),React.createElement(P.__experimentalVStack,{spacing:3,role:"list"},e.map(a=>a.render?React.createElement(a.render,{key:a.slug,slug:a.slug,name:a.name,description:a.description,type:a.type,logo:a.logo,authentication:a.authentication,plugin:a.plugin}):null))),t&&React.createElement("p",null,(0,At.createInterpolateElement)((0,C.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function qn(){return React.createElement(Hn,null)}var Tn=qn;export{Tn as stage}; +var qu=Object.create;var hr=Object.defineProperty;var Wu=Object.getOwnPropertyDescriptor;var Xu=Object.getOwnPropertyNames;var Uu=Object.getPrototypeOf,Ku=Object.prototype.hasOwnProperty;var ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),wr=(e,t)=>{for(var o in t)hr(e,o,{get:t[o],enumerable:!0})},Zu=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Xu(t))!Ku.call(e,r)&&r!==o&&hr(e,r,{get:()=>t[r],enumerable:!(n=Wu(t,r))||n.enumerable});return e};var g=(e,t,o)=>(o=e!=null?qu(Uu(e)):{},Zu(t||!e||!e.__esModule?hr(o,"default",{value:e,enumerable:!0}):o,e));var vt=ve((h0,Ns)=>{Ns.exports=window.wp.i18n});var oe=ve((v0,zs)=>{zs.exports=window.wp.element});var D=ve((y0,Ds)=>{Ds.exports=window.React});var K=ve((P0,Vs)=>{Vs.exports=window.ReactJSXRuntime});var xt=ve((ib,ia)=>{ia.exports=window.ReactDOM});var Rc=ve(_c=>{"use strict";var go=D();function Wp(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Xp=typeof Object.is=="function"?Object.is:Wp,Up=go.useState,Kp=go.useEffect,Zp=go.useLayoutEffect,Qp=go.useDebugValue;function Jp(e,t){var o=t(),n=Up({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return Zp(function(){r.value=o,r.getSnapshot=t,$r(r)&&i({inst:r})},[e,o,t]),Kp(function(){return $r(r)&&i({inst:r}),e(function(){$r(r)&&i({inst:r})})},[e]),Qp(o),o}function $r(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!Xp(e,o)}catch{return!0}}function $p(e,t){return t()}var em=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?$p:Jp;_c.useSyncExternalStore=go.useSyncExternalStore!==void 0?go.useSyncExternalStore:em});var ei=ve((h1,Sc)=>{"use strict";Sc.exports=Rc()});var Ec=ve(Pc=>{"use strict";var In=D(),tm=ei();function om(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var nm=typeof Object.is=="function"?Object.is:om,rm=tm.useSyncExternalStore,im=In.useRef,sm=In.useEffect,am=In.useMemo,cm=In.useDebugValue;Pc.useSyncExternalStoreWithSelector=function(e,t,o,n,r){var i=im(null);if(i.current===null){var s={hasValue:!1,value:null};i.current=s}else s=i.current;i=am(function(){function d(p){if(!l){if(l=!0,c=p,p=n(p),r!==void 0&&s.hasValue){var f=s.value;if(r(f,p))return u=f}return u=p}if(f=u,nm(c,p))return f;var h=n(p);return r!==void 0&&r(f,h)?(c=p,f):(c=p,u=h)}var l=!1,c,u,m=o===void 0?null:o;return[function(){return d(t())},m===null?void 0:function(){return d(m())}]},[t,o,n,r]);var a=rm(e,i[0],i[1]);return sm(function(){s.hasValue=!0,s.value=a},[a]),cm(a),a}});var Cc=ve((v1,Tc)=>{"use strict";Tc.exports=Ec()});var Kt=ve((Dx,Xl)=>{Xl.exports=window.wp.primitives});var ed=ve((n4,$l)=>{$l.exports=window.wp.theme});var Yi=ve((i4,od)=>{od.exports=window.wp.privateApis});var Jo=ve((I_,iu)=>{iu.exports=window.wp.components});var en=ve((X_,pu)=>{pu.exports=window.wp.data});var ur=ve((U_,mu)=>{mu.exports=window.wp.coreData});var Ts=ve((K_,gu)=>{gu.exports=window.wp.notices});var hu=ve((Z_,bu)=>{bu.exports=window.wp.url});function Is(e){var t,o,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(o=Is(e[t]))&&(n&&(n+=" "),n+=o)}else for(o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function Qu(){for(var e,t,o=0,n="",r=arguments.length;o<r;o++)(e=arguments[o])&&(t=Is(e))&&(n&&(n+=" "),n+=t);return n}var Q=Qu;var jl=g(oe(),1);var yr=g(D(),1);var Hs=g(D(),1),Bs={};function de(e,t){let o=Hs.useRef(Bs);return o.current===Bs&&(o.current=e(t)),o}var vr=yr[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],Ju=vr&&vr!==yr.useLayoutEffect?vr:e=>e();function G(e){let t=de($u).current;return t.next=e,Ju(t.effect),t.trampoline}function $u(){let e={next:void 0,callback:ef,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function ef(){}var js=g(D(),1),tf=()=>{},j=typeof document<"u"?js.useLayoutEffect:tf;var mn=g(D(),1),of=mn.createContext(void 0);function oo(){return mn.useContext(of)?.direction??"ltr"}function nf(e,t){return function(n,...r){let i=new URL(e);return i.searchParams.set("code",n.toString()),r.forEach(s=>i.searchParams.append("args[]",s)),`${t} error #${n}; visit ${i} for the full message.`}}var rf=nf("https://base-ui.com/production-error","Base UI"),_e=rf;var zt=g(D(),1);function xr(e,t,o,n){let r=de(Ys).current;return sf(r,e,t,o,n)&&Fs(r,[e,t,o,n]),r.callback}function Gs(e){let t=de(Ys).current;return af(t,e)&&Fs(t,e),t.callback}function Ys(){return{callback:null,cleanup:null,refs:[]}}function sf(e,t,o,n,r){return e.refs[0]!==t||e.refs[1]!==o||e.refs[2]!==n||e.refs[3]!==r}function af(e,t){return e.refs.length!==t.length||e.refs.some((o,n)=>o!==t[n])}function Fs(e,t){if(e.refs=t,t.every(o=>o==null)){e.callback=null;return}e.callback=o=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),o!=null){let n=Array(t.length).fill(null);for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=i(o);typeof s=="function"&&(n[r]=s);break}case"object":{i.current=o;break}default:}}e.cleanup=()=>{for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=n[r];typeof s=="function"?s():i(null);break}case"object":{i.current=null;break}default:}}}}}}var Ws=g(D(),1);var qs=g(D(),1),cf=parseInt(qs.version,10);function no(e){return cf>=e}function _r(e){if(!Ws.isValidElement(e))return null;let t=e,o=t.props;return(no(19)?o?.ref:t.ref)??null}function Oo(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function mt(){}var N0=Object.freeze([]),ge=Object.freeze({});function Xs(e,t){let o={};for(let n in e){let r=e[n];if(t?.hasOwnProperty(n)){let i=t[n](r);i!=null&&Object.assign(o,i);continue}r===!0?o[`data-${n.toLowerCase()}`]="":r&&(o[`data-${n.toLowerCase()}`]=r.toString())}return o}function Us(e,t){return typeof e=="function"?e(t):e}function Ks(e,t){return typeof e=="function"?e(t):e}var Rr={};function ke(e,t,o,n,r){if(!o&&!n&&!r&&!e)return gn(t);let i=gn(e);return t&&(i=Lo(i,t)),o&&(i=Lo(i,o)),n&&(i=Lo(i,n)),r&&(i=Lo(i,r)),i}function Zs(e){if(e.length===0)return Rr;if(e.length===1)return gn(e[0]);let t=gn(e[0]);for(let o=1;o<e.length;o+=1)t=Lo(t,e[o]);return t}function gn(e){return Sr(e)?{...Js(e,Rr)}:lf(e)}function Lo(e,t){return Sr(t)?Js(t,e):df(e,t)}function lf(e){let t={...e};for(let o in t){let n=t[o];Qs(o,n)&&(t[o]=$s(n))}return t}function df(e,t){if(!t)return e;for(let o in t){let n=t[o];switch(o){case"style":{e[o]=Oo(e.style,n);break}case"className":{e[o]=Pr(e.className,n);break}default:Qs(o,n)?e[o]=uf(e[o],n):e[o]=n}}return e}function Qs(e,t){let o=e.charCodeAt(0),n=e.charCodeAt(1),r=e.charCodeAt(2);return o===111&&n===110&&r>=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function Sr(e){return typeof e=="function"}function Js(e,t){return Sr(e)?e(t):e??Rr}function uf(e,t){return t?e?(...o)=>{let n=o[0];if(ea(n)){let i=n;Mo(i);let s=t(...o);return i.baseUIHandlerPrevented||e?.(...o),s}let r=t(...o);return e?.(...o),r}:$s(t):e}function $s(e){return e&&((...t)=>{let o=t[0];return ea(o)&&Mo(o),e(...t)})}function Mo(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Pr(e,t){return t?e?t+" "+e:t:e}function ea(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Er=g(D(),1);function Re(e,t,o={}){let n=t.render,r=ff(t,o);if(o.enabled===!1)return null;let i=o.state??ge;return gf(e,n,r,i)}function ff(e,t={}){let{className:o,style:n,render:r}=e,{state:i=ge,ref:s,props:a,stateAttributesMapping:d,enabled:l=!0}=t,c=l?Us(o,i):void 0,u=l?Ks(n,i):void 0,m=l?Xs(i,d):ge,p=l&&a?pf(a):void 0,f=l?Oo(m,p)??{}:ge;return typeof document<"u"&&(l?Array.isArray(s)?f.ref=Gs([f.ref,_r(r),...s]):f.ref=xr(f.ref,_r(r),s):xr(null,null)),l?(c!==void 0&&(f.className=Pr(f.className,c)),u!==void 0&&(f.style=Oo(f.style,u)),f):ge}function pf(e){return Array.isArray(e)?Zs(e):ke(void 0,e)}var mf=Symbol.for("react.lazy");function gf(e,t,o,n){if(t){if(typeof t=="function")return t(o,n);let r=ke(o,t.props);r.ref=o.ref;let i=t;return i?.$$typeof===mf&&(i=zt.Children.toArray(t)[0]),zt.cloneElement(i,r)}if(e&&typeof e=="string")return bf(e,o);throw new Error(_e(8))}function bf(e,t){return e==="button"?(0,Er.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Er.createElement)("img",{alt:"",...t,key:t.key}):zt.createElement(e,t)}var W={};wr(W,{cancelOpen:()=>Ff,chipRemovePress:()=>Ef,clearPress:()=>Pf,closePress:()=>Rf,closeWatcher:()=>Df,decrementPress:()=>kf,disabled:()=>Wf,drag:()=>Vf,escapeKey:()=>zf,focusOut:()=>If,imperativeAction:()=>Xf,incrementPress:()=>Cf,inputBlur:()=>Mf,inputChange:()=>Of,inputClear:()=>Lf,inputPaste:()=>Af,inputPress:()=>Nf,itemPress:()=>_f,keyboard:()=>Hf,linkPress:()=>Sf,listNavigation:()=>Bf,none:()=>hf,outsidePress:()=>xf,pointer:()=>jf,scrub:()=>Yf,siblingOpen:()=>qf,swipe:()=>Uf,trackPress:()=>Tf,triggerFocus:()=>yf,triggerHover:()=>vf,triggerPress:()=>wf,wheel:()=>Gf,windowResize:()=>Kf});var hf="none",wf="trigger-press",vf="trigger-hover",yf="trigger-focus",xf="outside-press",_f="item-press",Rf="close-press",Sf="link-press",Pf="clear-press",Ef="chip-remove-press",Tf="track-press",Cf="increment-press",kf="decrement-press",Of="input-change",Lf="input-clear",Mf="input-blur",Af="input-paste",Nf="input-press",If="focus-out",zf="escape-key",Df="close-watcher",Bf="list-navigation",Hf="keyboard",jf="pointer",Vf="drag",Gf="wheel",Yf="scrub",Ff="cancel-open",qf="sibling-open",Wf="disabled",Xf="imperative-action",Uf="swipe",Kf="window-resize";function ee(e,t,o,n){let r=!1,i=!1,s=n??ge;return{reason:e,event:t??new Event("base-ui"),cancel(){r=!0},allowPropagation(){i=!0},get isCanceled(){return r},get isPropagationAllowed(){return i},trigger:o,...s}}var bn=g(D(),1);var Zf=g(D(),1),ta={...Zf};var oa=0;function Qf(e,t="mui"){let[o,n]=bn.useState(e),r=e||o;return bn.useEffect(()=>{o==null&&(oa+=1,n(`${t}-${oa}`))},[o,t]),r}var na=ta.useId;function yt(e,t){if(na!==void 0){let o=na();return e??(t?`${t}-${o}`:o)}return Qf(e,t)}function ra(e){return yt(e,"base-ui")}var la=g(xt(),1);var sa=g(D(),1),Jf=[];function ro(e){sa.useEffect(e,Jf)}var hn=null,lb=globalThis.requestAnimationFrame,Tr=class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=t=>{this.isScheduled=!1;let o=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let r=0;r<o.length;r+=1)o[r]?.(t)};request(t){let o=this.nextId;return this.nextId+=1,this.callbacks.push(t),this.callbacksCount+=1,!this.isScheduled&&(requestAnimationFrame(this.tick),this.isScheduled=!0),o}cancel(t){let o=t-this.startId;o<0||o>=this.callbacks.length||(this.callbacks[o]=null,this.callbacksCount-=1)}},wn=new Tr,st=class e{static create(){return new e}static request(t){return wn.request(t)}static cancel(t){return wn.cancel(t)}currentId=hn;request(t){this.cancel(),this.currentId=wn.request(()=>{this.currentId=hn,t()})}cancel=()=>{this.currentId!==hn&&(wn.cancel(this.currentId),this.currentId=hn)};disposeEffect=()=>this.cancel};function io(){let e=de(st.create).current;return ro(e.disposeEffect),e}function aa(e){return e==null?e:"current"in e?e.current:e}var Dt=(function(e){return e.startingStyle="data-starting-style",e.endingStyle="data-ending-style",e})({}),$f={[Dt.startingStyle]:""},ep={[Dt.endingStyle]:""},ca={transitionStatus(e){return e==="starting"?$f:e==="ending"?ep:null}};function so(e,t=!1,o=!0){let n=io();return G((r,i=null)=>{n.cancel();let s=aa(e);if(s==null)return;let a=s,d=()=>{la.flushSync(r)};if(typeof a.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){r();return}function l(){Promise.all(a.getAnimations().map(c=>c.finished)).then(()=>{i?.aborted||d()}).catch(()=>{if(o){i?.aborted||d();return}let c=a.getAnimations();!i?.aborted&&c.length>0&&c.some(u=>u.pending||u.playState!=="finished")&&l()})}if(t){let c=Dt.startingStyle;if(!a.hasAttribute(c)){n.request(l);return}let u=new MutationObserver(()=>{a.hasAttribute(c)||(u.disconnect(),l())});u.observe(a,{attributes:!0,attributeFilter:[c]}),i?.addEventListener("abort",()=>u.disconnect(),{once:!0});return}n.request(l)})}var Cr=g(D(),1);function da(e,t=!1,o=!1){let[n,r]=Cr.useState(e&&t?"idle":void 0),[i,s]=Cr.useState(e);return e&&!i&&(s(!0),r("starting")),!e&&i&&n!=="ending"&&!o&&r("ending"),!e&&!i&&n==="ending"&&r(void 0),j(()=>{if(!e&&i&&n!=="ending"&&o){let a=st.request(()=>{r("ending")});return()=>{st.cancel(a)}}},[e,i,n,o]),j(()=>{if(!e||t)return;let a=st.request(()=>{r(void 0)});return()=>{st.cancel(a)}},[t,e]),j(()=>{if(!e||!t)return;e&&i&&n!=="idle"&&r("starting");let a=st.request(()=>{r("idle")});return()=>{st.cancel(a)}},[t,e,i,n]),{mounted:i,setMounted:s,transitionStatus:n}}var uo=g(D(),1);function vn(){return typeof window<"u"}function Ht(e){return yn(e)?(e.nodeName||"").toLowerCase():"#document"}function ce(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Qe(e){var t;return(t=(yn(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function yn(e){return vn()?e instanceof Node||e instanceof ce(e).Node:!1}function Y(e){return vn()?e instanceof Element||e instanceof ce(e).Element:!1}function ue(e){return vn()?e instanceof HTMLElement||e instanceof ce(e).HTMLElement:!1}function ao(e){return!vn()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof ce(e).ShadowRoot}function co(e){let{overflow:t,overflowX:o,overflowY:n,display:r}=Se(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+o)&&r!=="inline"&&r!=="contents"}function ua(e){return/^(table|td|th)$/.test(Ht(e))}function Ao(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}var tp=/transform|translate|scale|rotate|perspective|filter/,op=/paint|layout|strict|content/,Bt=e=>!!e&&e!=="none",kr;function xn(e){let t=Y(e)?Se(e):e;return Bt(t.transform)||Bt(t.translate)||Bt(t.scale)||Bt(t.rotate)||Bt(t.perspective)||!lo()&&(Bt(t.backdropFilter)||Bt(t.filter))||tp.test(t.willChange||"")||op.test(t.contain||"")}function fa(e){let t=Ze(e);for(;ue(t)&&!Je(t);){if(xn(t))return t;if(Ao(t))return null;t=Ze(t)}return null}function lo(){return kr==null&&(kr=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),kr}function Je(e){return/^(html|body|#document)$/.test(Ht(e))}function Se(e){return ce(e).getComputedStyle(e)}function No(e){return Y(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Ze(e){if(Ht(e)==="html")return e;let t=e.assignedSlot||e.parentNode||ao(e)&&e.host||Qe(e);return ao(t)?t.host:t}function pa(e){let t=Ze(e);return Je(t)?e.ownerDocument?e.ownerDocument.body:e.body:ue(t)&&co(t)?t:pa(t)}function _t(e,t,o){var n;t===void 0&&(t=[]),o===void 0&&(o=!0);let r=pa(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),s=ce(r);if(i){let a=_n(s);return t.concat(s,s.visualViewport||[],co(r)?r:[],a&&o?_t(a):[])}else return t.concat(r,_t(r,[],o))}function _n(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var Rn=g(D(),1),np=Rn.createContext(void 0);function ma(e=!1){let t=Rn.useContext(np);if(t===void 0&&!e)throw new Error(_e(16));return t}var ga=g(D(),1);function ba(e){let{focusableWhenDisabled:t,disabled:o,composite:n=!1,tabIndex:r=0,isNativeButton:i}=e,s=n&&t!==!1,a=n&&t===!1;return{props:ga.useMemo(()=>{let l={onKeyDown(c){o&&t&&c.key!=="Tab"&&c.preventDefault()}};return n||(l.tabIndex=r,!i&&o&&(l.tabIndex=t?r:-1)),(i&&(t||s)||!i&&o)&&(l["aria-disabled"]=o),i&&(!t||a)&&(l.disabled=o),l},[n,o,t,s,a,i,r])}}function ha(e={}){let{disabled:t=!1,focusableWhenDisabled:o,tabIndex:n=0,native:r=!0,composite:i}=e,s=uo.useRef(null),a=ma(!0),d=i??a!==void 0,{props:l}=ba({focusableWhenDisabled:o,disabled:t,composite:d,tabIndex:n,isNativeButton:r}),c=uo.useCallback(()=>{let p=s.current;Or(p)&&d&&t&&l.disabled===void 0&&p.disabled&&(p.disabled=!1)},[t,l.disabled,d]);j(c,[c]);let u=uo.useCallback((p={})=>{let{onClick:f,onMouseDown:h,onKeyUp:v,onKeyDown:b,onPointerDown:E,...x}=p;return ke({type:r?"button":void 0,onClick(w){if(t){w.preventDefault();return}f?.(w)},onMouseDown(w){t||h?.(w)},onKeyDown(w){if(t||(Mo(w),b?.(w),w.baseUIHandlerPrevented))return;let R=w.target===w.currentTarget,P=w.currentTarget,_=Or(P),O=!r&&rp(P),L=R&&(r?_:!O),z=w.key==="Enter",B=w.key===" ",M=P.getAttribute("role"),C=M?.startsWith("menuitem")||M==="option"||M==="gridcell";if(R&&d&&B){if(w.defaultPrevented&&C)return;w.preventDefault(),O||r&&_?(P.click(),w.preventBaseUIHandler()):L&&(f?.(w),w.preventBaseUIHandler());return}L&&(!r&&(B||z)&&w.preventDefault(),!r&&z&&f?.(w))},onKeyUp(w){if(!t){if(Mo(w),v?.(w),w.target===w.currentTarget&&r&&d&&Or(w.currentTarget)&&w.key===" "){w.preventDefault();return}w.baseUIHandlerPrevented||w.target===w.currentTarget&&!r&&!d&&w.key===" "&&f?.(w)}},onPointerDown(w){if(t){w.preventDefault();return}E?.(w)}},r?void 0:{role:"button"},l,x)},[t,l,d,r]),m=G(p=>{s.current=p,c()});return{getButtonProps:u,buttonRef:m}}function Or(e){return ue(e)&&e.tagName==="BUTTON"}function rp(e){return!!(e?.tagName==="A"&&e?.href)}var Rt=typeof navigator<"u",Lr=ip(),wa=ap(),Sn=sp(),Mb=typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter:none"),Ab=Lr.platform==="MacIntel"&&Lr.maxTouchPoints>1?!0:/iP(hone|ad|od)|iOS/.test(Lr.platform),Nb=Rt&&/firefox/i.test(Sn),va=Rt&&/apple/i.test(navigator.vendor),Ib=Rt&&/Edg/i.test(Sn),zb=Rt&&/android/i.test(wa)||/android/i.test(Sn),ya=Rt&&wa.toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints,xa=Sn.includes("jsdom/");function ip(){if(!Rt)return{platform:"",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??-1}}function sp(){if(!Rt)return"";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:t,version:o})=>`${t}/${o}`).join(" "):navigator.userAgent}function ap(){if(!Rt)return"";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??""}var Mr="data-base-ui-focusable",Ar="active",Nr="selected",Ir="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function Pn(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function ne(e,t){if(!e||!t)return!1;let o=t.getRootNode?.();if(e.contains(t))return!0;if(o&&ao(o)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function Oe(e){return"composedPath"in e?e.composedPath()[0]:e.target}function jt(e,t){if(!Y(e))return!1;let o=e;if(t.hasElement(o))return!o.hasAttribute("data-trigger-disabled");for(let[,n]of t.entries())if(ne(n,o))return!n.hasAttribute("data-trigger-disabled");return!1}function Fe(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);let o=e;return o.target!=null&&t.contains(o.target)}function _a(e){return e.matches("html,body")}function Ra(e){return ue(e)&&e.matches(Ir)}function zr(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${Ir}`)!=null}function Sa(e){if(!e||xa)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function $e(e,t,o=!0){return e.filter(r=>r.parentId===t).flatMap(r=>[...!o||r.context?.open?[r]:[],...$e(e,r.id,o)])}function Pa(e){return"nativeEvent"in e}function Vt(e,t){let o=["mouse","pen"];return t||o.push("",void 0),o.includes(e)}function Ea(e){let t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}var ka=["top","right","bottom","left"];var St=Math.min,Le=Math.max,Pt=Math.round,zo=Math.floor,et=e=>({x:e,y:e}),cp={left:"right",right:"left",bottom:"top",top:"bottom"};function Do(e,t,o){return Le(e,St(t,o))}function tt(e,t){return typeof e=="function"?e(t):e}function ye(e){return e.split("-")[0]}function ot(e){return e.split("-")[1]}function Tn(e){return e==="x"?"y":"x"}function Bo(e){return e==="y"?"height":"width"}function Ie(e){let t=e[0];return t==="t"||t==="b"?"y":"x"}function Ho(e){return Tn(Ie(e))}function Oa(e,t,o){o===void 0&&(o=!1);let n=ot(e),r=Ho(e),i=Bo(r),s=r==="x"?n===(o?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=Io(s)),[s,Io(s)]}function La(e){let t=Io(e);return[En(e),t,En(t)]}function En(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var Ta=["left","right"],Ca=["right","left"],lp=["top","bottom"],dp=["bottom","top"];function up(e,t,o){switch(e){case"top":case"bottom":return o?t?Ca:Ta:t?Ta:Ca;case"left":case"right":return t?lp:dp;default:return[]}}function Ma(e,t,o,n){let r=ot(e),i=up(ye(e),o==="start",n);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(En)))),i}function Io(e){let t=ye(e);return cp[t]+e.slice(t.length)}function fp(e){return{top:0,right:0,bottom:0,left:0,...e}}function Cn(e){return typeof e!="number"?fp(e):{top:e,right:e,bottom:e,left:e}}function Gt(e){let{x:t,y:o,width:n,height:r}=e;return{width:n,height:r,top:o,left:t,right:t+n,bottom:o+r,x:t,y:o}}function be(e){return e?.ownerDocument||document}function J(e,t,o,n){return e.addEventListener(t,o,n),()=>{e.removeEventListener(t,o,n)}}var Aa=g(D(),1);function kn(e){let{enabled:t=!0,open:o,ref:n,onComplete:r}=e,i=G(r),s=so(n,o,!1);Aa.useEffect(()=>{if(!t)return;let a=new AbortController;return s(i,a.signal),()=>{a.abort()}},[t,o,i,s])}var Na=g(D(),1);function Ia(e){let t=Na.useRef(!0);t.current&&(t.current=!1,e())}var jo=0,He=class e{static create(){return new e}currentId=jo;start(t,o){this.clear(),this.currentId=setTimeout(()=>{this.currentId=jo,o()},t)}isStarted(){return this.currentId!==jo}clear=()=>{this.currentId!==jo&&(clearTimeout(this.currentId),this.currentId=jo)};disposeEffect=()=>this.clear};function gt(){let e=de(He.create).current;return ro(e.disposeEffect),e}var ze=g(D(),1);function pp(e,t){return t!=null&&!Vt(t)?0:typeof e=="function"?e():e}function Yt(e,t,o){let n=pp(e,o);return typeof n=="number"?n:n?.[t]}function Dr(e){return typeof e=="function"?e():e}function On(e,t){return t||e==="click"||e==="mousedown"}var za=g(K(),1),Da=ze.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new He,currentIdRef:{current:null},currentContextRef:{current:null}});function Br(e){let{children:t,delay:o,timeoutMs:n=0}=e,r=ze.useRef(o),i=ze.useRef(o),s=ze.useRef(null),a=ze.useRef(null),d=gt();return(0,za.jsx)(Da.Provider,{value:ze.useMemo(()=>({hasProvider:!0,delayRef:r,initialDelayRef:i,currentIdRef:s,timeoutMs:n,currentContextRef:a,timeout:d}),[n,d]),children:t})}function Hr(e,t={open:!1}){let o="rootStore"in e?e.rootStore:e,n=o.useState("floatingId"),{open:r}=t,i=ze.useContext(Da),{currentIdRef:s,delayRef:a,timeoutMs:d,initialDelayRef:l,currentContextRef:c,hasProvider:u,timeout:m}=i,[p,f]=ze.useState(!1);return j(()=>{function h(){f(!1),c.current?.setIsInstantPhase(!1),s.current=null,c.current=null,a.current=l.current}if(s.current&&!r&&s.current===n){if(f(!1),d){let v=n;return m.start(d,()=>{o.select("open")||s.current&&s.current!==v||h()}),()=>{m.clear()}}h()}},[r,n,s,a,d,l,c,m,o]),j(()=>{if(!r)return;let h=c.current,v=s.current;m.clear(),c.current={onOpenChange:o.setOpen,setIsInstantPhase:f},s.current=n,a.current={open:0,close:Yt(l.current,"close")},v!==null&&v!==n?(f(!0),h?.setIsInstantPhase(!0),h?.onOpenChange(!1,ee(W.none))):(f(!1),h?.setIsInstantPhase(!1))},[r,n,o,s,a,d,l,c,m]),j(()=>()=>{c.current=null},[c]),ze.useMemo(()=>({hasProvider:u,delayRef:a,isInstantPhase:p}),[u,a,p])}function nt(...e){return()=>{for(let t=0;t<e.length;t+=1){let o=e[t];o&&o()}}}function rt(e){let t=de(mp,e).current;return t.next=e,j(t.effect),t}function mp(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}function fo(e){return`data-base-ui-${e}`}var je=g(D(),1),ja=g(xt(),1);var Ba={style:{transition:"none"}};var gp="data-base-ui-swipe-ignore",bp="data-swipe-ignore",wh=`[${gp}]`,vh=`[${bp}]`;var Ha={fallbackAxisSide:"end"};var Va=g(K(),1),hp=je.createContext(null),wp=()=>je.useContext(hp),vp=fo("portal");function jr(e={}){let{ref:t,container:o,componentProps:n=ge,elementProps:r}=e,i=yt(),a=wp()?.portalNode,[d,l]=je.useState(null),[c,u]=je.useState(null),m=G(v=>{v!==null&&u(v)}),p=je.useRef(null);j(()=>{if(o===null){p.current&&(p.current=null,u(null),l(null));return}if(i==null)return;let v=(o&&(yn(o)?o:o.current))??a??document.body;if(v==null){p.current&&(p.current=null,u(null),l(null));return}p.current!==v&&(p.current=v,u(null),l(v))},[o,a,i]);let f=Re("div",n,{ref:[t,m],props:[{id:i,[vp]:""},r]});return{portalNode:c,portalSubtree:d&&f?ja.createPortal(f,d):null}}var Ft=g(D(),1);function Ga(){let e=new Map;return{emit(t,o){e.get(t)?.forEach(n=>n(o))},on(t,o){e.has(t)||e.set(t,new Set),e.get(t).add(o)},off(t,o){e.get(t)?.delete(o)}}}var yp=g(K(),1),xp=Ft.createContext(null),_p=Ft.createContext(null),po=()=>Ft.useContext(xp)?.id||null,Et=e=>{let t=Ft.useContext(_p);return e??t};var Me=g(D(),1);function Rp(e,t){let o=null,n=null,r=!1;return{contextElement:e||void 0,getBoundingClientRect(){let i=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},s=t.axis==="x"||t.axis==="both",a=t.axis==="y"||t.axis==="both",d=["mouseenter","mousemove"].includes(t.dataRef.current.openEvent?.type||"")&&t.pointerType!=="touch",l=i.width,c=i.height,u=i.x,m=i.y;return o==null&&t.x&&s&&(o=i.x-t.x),n==null&&t.y&&a&&(n=i.y-t.y),u-=o||0,m-=n||0,l=0,c=0,!r||d?(l=t.axis==="y"?i.width:0,c=t.axis==="x"?i.height:0,u=s&&t.x!=null?t.x:u,m=a&&t.y!=null?t.y:m):r&&!d&&(c=t.axis==="x"?i.height:c,l=t.axis==="y"?i.width:l),r=!0,{width:l,height:c,x:u,y:m,top:m,right:u+l,bottom:m+c,left:u}}}}function Ya(e){return e!=null&&e.clientX!=null}function Vr(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),i=o.useState("domReferenceElement"),s=o.context.dataRef,{enabled:a=!0,axis:d="both"}=t,l=Me.useRef(!1),c=Me.useRef(null),[u,m]=Me.useState(),[p,f]=Me.useState([]),h=G((y,w,R)=>{l.current||s.current.openEvent&&!Ya(s.current.openEvent)||o.set("positionReference",Rp(R??i,{x:y,y:w,axis:d,dataRef:s,pointerType:u}))}),v=G(y=>{n?c.current||f([]):h(y.clientX,y.clientY,y.currentTarget)}),b=Vt(u)?r:n,E=Me.useCallback(()=>{if(!b||!a)return;let y=ce(r);function w(R){let P=Oe(R);ne(r,P)?(c.current?.(),c.current=null):h(R.clientX,R.clientY)}if(!s.current.openEvent||Ya(s.current.openEvent)){let R=()=>{c.current?.(),c.current=null};return c.current=J(y,"mousemove",w),R}o.set("positionReference",i)},[b,a,r,s,i,o,h]);Me.useEffect(()=>E(),[E,p]),Me.useEffect(()=>{a&&!r&&(l.current=!1)},[a,r]),Me.useEffect(()=>{!a&&n&&(l.current=!0)},[a,n]);let x=Me.useMemo(()=>{function y(w){m(w.pointerType)}return{onPointerDown:y,onPointerEnter:y,onMouseMove:v,onMouseEnter:v}},[v]);return Me.useMemo(()=>a?{reference:x,trigger:x}:{},[a,x])}var De=g(D(),1);var Sp={intentional:"onClick",sloppy:"onPointerDown"};function Pp(){return!1}function Ep(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Gr(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),{dataRef:i}=o.context,{enabled:s=!0,escapeKey:a=!0,outsidePress:d=!0,outsidePressEvent:l="sloppy",referencePress:c=Pp,referencePressEvent:u="sloppy",bubbles:m,externalTree:p}=t,f=Et(p),h=G(typeof d=="function"?d:()=>!1),v=typeof d=="function"?h:d,b=v!==!1,E=G(()=>l),x=De.useRef(!1),y=De.useRef(!1),w=De.useRef(!1),{escapeKey:R,outsidePress:P}=Ep(m),_=De.useRef(null),O=gt(),L=gt(),z=G(()=>{L.clear(),i.current.insideReactTree=!1}),B=De.useRef(!1),M=De.useRef(""),C=G(c),S=G(F=>{if(!n||!s||!a||F.key!=="Escape"||B.current)return;let X=i.current.floatingContext?.nodeId,U=f?$e(f.nodesRef.current,X):[];if(!R&&U.length>0){let q=!0;if(U.forEach(re=>{re.context?.open&&!re.context.dataRef.current.__escapeKeyBubbles&&(q=!1)}),!q)return}let ae=Pa(F)?F.nativeEvent:F,ie=ee(W.escapeKey,ae);o.setOpen(!1,ie),!R&&!ie.isPropagationAllowed&&F.stopPropagation()}),A=G(()=>{i.current.insideReactTree=!0,L.start(0,z)});De.useEffect(()=>{if(!n||!s)return;i.current.__escapeKeyBubbles=R,i.current.__outsidePressBubbles=P;let F=new He,X=new He;function U(){F.clear(),B.current=!0}function ae(){F.start(lo()?5:0,()=>{B.current=!1})}function ie(){w.current=!0,X.start(0,()=>{w.current=!1})}function q(){x.current=!1,y.current=!1}function re(){let N=M.current,H=N==="pen"||!N?"mouse":N,le=E(),xe=typeof le=="function"?le():le;return typeof xe=="string"?xe:xe[H]}function Ee(N){let H=re();return H==="intentional"&&N.type!=="click"||H==="sloppy"&&N.type==="click"}function he(N){let H=i.current.floatingContext?.nodeId,le=f&&$e(f.nodesRef.current,H).some(xe=>Fe(N,xe.context?.elements.floating));return Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement"))||le}function Te(N){if(Ee(N)){z();return}if(i.current.insideReactTree){z();return}let H=Oe(N),le=`[${fo("inert")}]`,xe=Y(H)?H.getRootNode():null,wt=Array.from((ao(xe)?xe:be(o.select("floatingElement"))).querySelectorAll(le)),To=o.context.triggerElements;if(H&&(To.hasElement(H)||To.hasMatchingElement(me=>ne(me,H))))return;let ut=Y(H)?H:null;for(;ut&&!Je(ut);){let me=Ze(ut);if(Je(me)||!Y(me))break;ut=me}if(wt.length&&Y(H)&&!_a(H)&&!ne(H,o.select("floatingElement"))&&wt.every(me=>!ne(ut,me)))return;if(ue(H)&&!("touches"in N)){let me=Je(H),ft=Se(H),Co=/auto|scroll/,dn=me||Co.test(ft.overflowX),un=me||Co.test(ft.overflowY),fn=dn&&H.clientWidth>0&&H.scrollWidth>H.clientWidth,te=un&&H.clientHeight>0&&H.scrollHeight>H.clientHeight,Ce=ft.direction==="rtl",Ye=te&&(Ce?N.offsetX<=H.offsetWidth-H.clientWidth:N.offsetX>H.clientWidth),Ne=fn&&N.offsetY>H.clientHeight;if(Ye||Ne)return}if(he(N))return;if(re()==="intentional"&&w.current){X.clear(),w.current=!1;return}if(typeof v=="function"&&!v(N))return;let ln=i.current.floatingContext?.nodeId,Nt=f?$e(f.nodesRef.current,ln):[];if(Nt.length>0){let me=!0;if(Nt.forEach(ft=>{ft.context?.open&&!ft.context.dataRef.current.__outsidePressBubbles&&(me=!1)}),!me)return}o.setOpen(!1,ee(W.outsidePress,N)),z()}function we(N){re()!=="sloppy"||N.pointerType==="touch"||!o.select("open")||!s||Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement"))||Te(N)}function Ot(N){if(re()!=="sloppy"||!o.select("open")||!s||Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement")))return;let H=N.touches[0];H&&(_.current={startTime:Date.now(),startX:H.clientX,startY:H.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},O.start(1e3,()=>{_.current&&(_.current.dismissOnTouchEnd=!1,_.current.dismissOnMouseDown=!1)}))}function Lt(N,H){let le=Oe(N);if(!le)return;let xe=J(le,N.type,()=>{H(N),xe()})}function sn(N){M.current="touch",Lt(N,Ot)}function $t(N){O.clear(),N.type==="pointerdown"&&(M.current=N.pointerType),!(N.type==="mousedown"&&_.current&&!_.current.dismissOnMouseDown)&&Lt(N,H=>{H.type==="pointerdown"?we(H):Te(H)})}function Mt(N){if(!x.current)return;let H=y.current;if(q(),re()==="intentional"){if(N.type==="pointercancel"){H&&ie();return}if(!he(N)){if(H){ie();return}typeof v=="function"&&!v(N)||(X.clear(),w.current=!0,z())}}}function ht(N){if(re()!=="sloppy"||!_.current||Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement")))return;let H=N.touches[0];if(!H)return;let le=Math.abs(H.clientX-_.current.startX),xe=Math.abs(H.clientY-_.current.startY),wt=Math.sqrt(le*le+xe*xe);wt>5&&(_.current.dismissOnTouchEnd=!0),wt>10&&(Te(N),O.clear(),_.current=null)}function At(N){Lt(N,ht)}function an(N){re()!=="sloppy"||!_.current||Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement"))||(_.current.dismissOnTouchEnd&&Te(N),O.clear(),_.current=null)}function cn(N){Lt(N,an)}let pe=be(r),eo=nt(a&&nt(J(pe,"keydown",S),J(pe,"compositionstart",U),J(pe,"compositionend",ae)),b&&nt(J(pe,"click",$t,!0),J(pe,"pointerdown",$t,!0),J(pe,"pointerup",Mt,!0),J(pe,"pointercancel",Mt,!0),J(pe,"mousedown",$t,!0),J(pe,"mouseup",Mt,!0),J(pe,"touchstart",sn,!0),J(pe,"touchmove",At,!0),J(pe,"touchend",cn,!0)));return()=>{eo(),F.clear(),X.clear(),q(),w.current=!1}},[i,r,a,b,v,n,s,R,P,S,z,E,f,o,O]),De.useEffect(z,[v,z]);let I=De.useMemo(()=>({onKeyDown:S,[Sp[u]]:F=>{C()&&o.setOpen(!1,ee(W.triggerPress,F.nativeEvent))},...u!=="intentional"&&{onClick(F){C()&&o.setOpen(!1,ee(W.triggerPress,F.nativeEvent))}}}),[S,o,u,C]),T=G(F=>{if(!n||!s||F.button!==0)return;let X=Oe(F.nativeEvent);ne(o.select("floatingElement"),X)&&(x.current||(x.current=!0,y.current=!1))}),k=G(F=>{!n||!s||(F.defaultPrevented||F.nativeEvent.defaultPrevented)&&x.current&&(y.current=!0)}),V=De.useMemo(()=>({onKeyDown:S,onPointerDown:k,onMouseDown:k,onClickCapture:A,onMouseDownCapture(F){A(),T(F)},onPointerDownCapture(F){A(),T(F)},onMouseUpCapture:A,onTouchEndCapture:A,onTouchMoveCapture:A}),[S,A,T,k]);return De.useMemo(()=>s?{reference:I,floating:V,trigger:I}:{},[s,I,V])}var Ae=g(D(),1);function Fa(e,t,o){let{reference:n,floating:r}=e,i=Ie(t),s=Ho(t),a=Bo(s),d=ye(t),l=i==="y",c=n.x+n.width/2-r.width/2,u=n.y+n.height/2-r.height/2,m=n[a]/2-r[a]/2,p;switch(d){case"top":p={x:c,y:n.y-r.height};break;case"bottom":p={x:c,y:n.y+n.height};break;case"right":p={x:n.x+n.width,y:u};break;case"left":p={x:n.x-r.width,y:u};break;default:p={x:n.x,y:n.y}}switch(ot(t)){case"start":p[s]-=m*(o&&l?-1:1);break;case"end":p[s]+=m*(o&&l?-1:1);break}return p}async function Xa(e,t){var o;t===void 0&&(t={});let{x:n,y:r,platform:i,rects:s,elements:a,strategy:d}=e,{boundary:l="clippingAncestors",rootBoundary:c="viewport",elementContext:u="floating",altBoundary:m=!1,padding:p=0}=tt(t,e),f=Cn(p),v=a[m?u==="floating"?"reference":"floating":u],b=Gt(await i.getClippingRect({element:(o=await(i.isElement==null?void 0:i.isElement(v)))==null||o?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:l,rootBoundary:c,strategy:d})),E=u==="floating"?{x:n,y:r,width:s.floating.width,height:s.floating.height}:s.reference,x=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),y=await(i.isElement==null?void 0:i.isElement(x))?await(i.getScale==null?void 0:i.getScale(x))||{x:1,y:1}:{x:1,y:1},w=Gt(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:E,offsetParent:x,strategy:d}):E);return{top:(b.top-w.top+f.top)/y.y,bottom:(w.bottom-b.bottom+f.bottom)/y.y,left:(b.left-w.left+f.left)/y.x,right:(w.right-b.right+f.right)/y.x}}var Tp=50,Ua=async(e,t,o)=>{let{placement:n="bottom",strategy:r="absolute",middleware:i=[],platform:s}=o,a=s.detectOverflow?s:{...s,detectOverflow:Xa},d=await(s.isRTL==null?void 0:s.isRTL(t)),l=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:c,y:u}=Fa(l,n,d),m=n,p=0,f={};for(let h=0;h<i.length;h++){let v=i[h];if(!v)continue;let{name:b,fn:E}=v,{x,y,data:w,reset:R}=await E({x:c,y:u,initialPlacement:n,placement:m,strategy:r,middlewareData:f,rects:l,platform:a,elements:{reference:e,floating:t}});c=x??c,u=y??u,f[b]={...f[b],...w},R&&p<Tp&&(p++,typeof R=="object"&&(R.placement&&(m=R.placement),R.rects&&(l=R.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:r}):R.rects),{x:c,y:u}=Fa(l,m,d)),h=-1)}return{x:c,y:u,placement:m,strategy:r,middlewareData:f}};var Ka=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var o,n;let{placement:r,middlewareData:i,rects:s,initialPlacement:a,platform:d,elements:l}=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:m,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:h=!0,...v}=tt(e,t);if((o=i.arrow)!=null&&o.alignmentOffset)return{};let b=ye(r),E=Ie(a),x=ye(a)===a,y=await(d.isRTL==null?void 0:d.isRTL(l.floating)),w=m||(x||!h?[Io(a)]:La(a)),R=f!=="none";!m&&R&&w.push(...Ma(a,h,f,y));let P=[a,...w],_=await d.detectOverflow(t,v),O=[],L=((n=i.flip)==null?void 0:n.overflows)||[];if(c&&O.push(_[b]),u){let C=Oa(r,s,y);O.push(_[C[0]],_[C[1]])}if(L=[...L,{placement:r,overflows:O}],!O.every(C=>C<=0)){var z,B;let C=(((z=i.flip)==null?void 0:z.index)||0)+1,S=P[C];if(S&&(!(u==="alignment"?E!==Ie(S):!1)||L.every(T=>Ie(T.placement)===E?T.overflows[0]>0:!0)))return{data:{index:C,overflows:L},reset:{placement:S}};let A=(B=L.filter(I=>I.overflows[0]<=0).sort((I,T)=>I.overflows[1]-T.overflows[1])[0])==null?void 0:B.placement;if(!A)switch(p){case"bestFit":{var M;let I=(M=L.filter(T=>{if(R){let k=Ie(T.placement);return k===E||k==="y"}return!0}).map(T=>[T.placement,T.overflows.filter(k=>k>0).reduce((k,V)=>k+V,0)]).sort((T,k)=>T[1]-k[1])[0])==null?void 0:M[0];I&&(A=I);break}case"initialPlacement":A=a;break}if(r!==A)return{reset:{placement:A}}}return{}}}};function qa(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Wa(e){return ka.some(t=>e[t]>=0)}var Za=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){let{rects:o,platform:n}=t,{strategy:r="referenceHidden",...i}=tt(e,t);switch(r){case"referenceHidden":{let s=await n.detectOverflow(t,{...i,elementContext:"reference"}),a=qa(s,o.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:Wa(a)}}}case"escaped":{let s=await n.detectOverflow(t,{...i,altBoundary:!0}),a=qa(s,o.floating);return{data:{escapedOffsets:a,escaped:Wa(a)}}}default:return{}}}}};var Qa=new Set(["left","top"]);async function Cp(e,t){let{placement:o,platform:n,elements:r}=e,i=await(n.isRTL==null?void 0:n.isRTL(r.floating)),s=ye(o),a=ot(o),d=Ie(o)==="y",l=Qa.has(s)?-1:1,c=i&&d?-1:1,u=tt(t,e),{mainAxis:m,crossAxis:p,alignmentAxis:f}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return a&&typeof f=="number"&&(p=a==="end"?f*-1:f),d?{x:p*c,y:m*l}:{x:m*l,y:p*c}}var Ja=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var o,n;let{x:r,y:i,placement:s,middlewareData:a}=t,d=await Cp(t,e);return s===((o=a.offset)==null?void 0:o.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:r+d.x,y:i+d.y,data:{...d,placement:s}}}}},$a=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:o,y:n,placement:r,platform:i}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:d={fn:b=>{let{x:E,y:x}=b;return{x:E,y:x}}},...l}=tt(e,t),c={x:o,y:n},u=await i.detectOverflow(t,l),m=Ie(ye(r)),p=Tn(m),f=c[p],h=c[m];if(s){let b=p==="y"?"top":"left",E=p==="y"?"bottom":"right",x=f+u[b],y=f-u[E];f=Do(x,f,y)}if(a){let b=m==="y"?"top":"left",E=m==="y"?"bottom":"right",x=h+u[b],y=h-u[E];h=Do(x,h,y)}let v=d.fn({...t,[p]:f,[m]:h});return{...v,data:{x:v.x-o,y:v.y-n,enabled:{[p]:s,[m]:a}}}}}},ec=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:o,y:n,placement:r,rects:i,middlewareData:s}=t,{offset:a=0,mainAxis:d=!0,crossAxis:l=!0}=tt(e,t),c={x:o,y:n},u=Ie(r),m=Tn(u),p=c[m],f=c[u],h=tt(a,t),v=typeof h=="number"?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(d){let x=m==="y"?"height":"width",y=i.reference[m]-i.floating[x]+v.mainAxis,w=i.reference[m]+i.reference[x]-v.mainAxis;p<y?p=y:p>w&&(p=w)}if(l){var b,E;let x=m==="y"?"width":"height",y=Qa.has(ye(r)),w=i.reference[u]-i.floating[x]+(y&&((b=s.offset)==null?void 0:b[u])||0)+(y?0:v.crossAxis),R=i.reference[u]+i.reference[x]+(y?0:((E=s.offset)==null?void 0:E[u])||0)-(y?v.crossAxis:0);f<w?f=w:f>R&&(f=R)}return{[m]:p,[u]:f}}}},tc=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var o,n;let{placement:r,rects:i,platform:s,elements:a}=t,{apply:d=()=>{},...l}=tt(e,t),c=await s.detectOverflow(t,l),u=ye(r),m=ot(r),p=Ie(r)==="y",{width:f,height:h}=i.floating,v,b;u==="top"||u==="bottom"?(v=u,b=m===(await(s.isRTL==null?void 0:s.isRTL(a.floating))?"start":"end")?"left":"right"):(b=u,v=m==="end"?"top":"bottom");let E=h-c.top-c.bottom,x=f-c.left-c.right,y=St(h-c[v],E),w=St(f-c[b],x),R=!t.middlewareData.shift,P=y,_=w;if((o=t.middlewareData.shift)!=null&&o.enabled.x&&(_=x),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(P=E),R&&!m){let L=Le(c.left,0),z=Le(c.right,0),B=Le(c.top,0),M=Le(c.bottom,0);p?_=f-2*(L!==0||z!==0?L+z:Le(c.left,c.right)):P=h-2*(B!==0||M!==0?B+M:Le(c.top,c.bottom))}await d({...t,availableWidth:_,availableHeight:P});let O=await s.getDimensions(a.floating);return f!==O.width||h!==O.height?{reset:{rects:!0}}:{}}}};function ic(e){let t=Se(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=ue(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n,a=Pt(o)!==i||Pt(n)!==s;return a&&(o=i,n=s),{width:o,height:n,$:a}}function Fr(e){return Y(e)?e:e.contextElement}function mo(e){let t=Fr(e);if(!ue(t))return et(1);let o=t.getBoundingClientRect(),{width:n,height:r,$:i}=ic(t),s=(i?Pt(o.width):o.width)/n,a=(i?Pt(o.height):o.height)/r;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var kp=et(0);function sc(e){let t=ce(e);return!lo()||!t.visualViewport?kp:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Op(e,t,o){return t===void 0&&(t=!1),!o||t&&o!==ce(e)?!1:t}function qt(e,t,o,n){t===void 0&&(t=!1),o===void 0&&(o=!1);let r=e.getBoundingClientRect(),i=Fr(e),s=et(1);t&&(n?Y(n)&&(s=mo(n)):s=mo(e));let a=Op(i,o,n)?sc(i):et(0),d=(r.left+a.x)/s.x,l=(r.top+a.y)/s.y,c=r.width/s.x,u=r.height/s.y;if(i){let m=ce(i),p=n&&Y(n)?ce(n):n,f=m,h=_n(f);for(;h&&n&&p!==f;){let v=mo(h),b=h.getBoundingClientRect(),E=Se(h),x=b.left+(h.clientLeft+parseFloat(E.paddingLeft))*v.x,y=b.top+(h.clientTop+parseFloat(E.paddingTop))*v.y;d*=v.x,l*=v.y,c*=v.x,u*=v.y,d+=x,l+=y,f=ce(h),h=_n(f)}}return Gt({width:c,height:u,x:d,y:l})}function Ln(e,t){let o=No(e).scrollLeft;return t?t.left+o:qt(Qe(e)).left+o}function ac(e,t){let o=e.getBoundingClientRect(),n=o.left+t.scrollLeft-Ln(e,o),r=o.top+t.scrollTop;return{x:n,y:r}}function Lp(e){let{elements:t,rect:o,offsetParent:n,strategy:r}=e,i=r==="fixed",s=Qe(n),a=t?Ao(t.floating):!1;if(n===s||a&&i)return o;let d={scrollLeft:0,scrollTop:0},l=et(1),c=et(0),u=ue(n);if((u||!u&&!i)&&((Ht(n)!=="body"||co(s))&&(d=No(n)),u)){let p=qt(n);l=mo(n),c.x=p.x+n.clientLeft,c.y=p.y+n.clientTop}let m=s&&!u&&!i?ac(s,d):et(0);return{width:o.width*l.x,height:o.height*l.y,x:o.x*l.x-d.scrollLeft*l.x+c.x+m.x,y:o.y*l.y-d.scrollTop*l.y+c.y+m.y}}function Mp(e){return Array.from(e.getClientRects())}function Ap(e){let t=Qe(e),o=No(e),n=e.ownerDocument.body,r=Le(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),i=Le(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight),s=-o.scrollLeft+Ln(e),a=-o.scrollTop;return Se(n).direction==="rtl"&&(s+=Le(t.clientWidth,n.clientWidth)-r),{width:r,height:i,x:s,y:a}}var oc=25;function Np(e,t){let o=ce(e),n=Qe(e),r=o.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,d=0;if(r){i=r.width,s=r.height;let c=lo();(!c||c&&t==="fixed")&&(a=r.offsetLeft,d=r.offsetTop)}let l=Ln(n);if(l<=0){let c=n.ownerDocument,u=c.body,m=getComputedStyle(u),p=c.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,f=Math.abs(n.clientWidth-u.clientWidth-p);f<=oc&&(i-=f)}else l<=oc&&(i+=l);return{width:i,height:s,x:a,y:d}}function Ip(e,t){let o=qt(e,!0,t==="fixed"),n=o.top+e.clientTop,r=o.left+e.clientLeft,i=ue(e)?mo(e):et(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,d=r*i.x,l=n*i.y;return{width:s,height:a,x:d,y:l}}function nc(e,t,o){let n;if(t==="viewport")n=Np(e,o);else if(t==="document")n=Ap(Qe(e));else if(Y(t))n=Ip(t,o);else{let r=sc(e);n={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return Gt(n)}function cc(e,t){let o=Ze(e);return o===t||!Y(o)||Je(o)?!1:Se(o).position==="fixed"||cc(o,t)}function zp(e,t){let o=t.get(e);if(o)return o;let n=_t(e,[],!1).filter(a=>Y(a)&&Ht(a)!=="body"),r=null,i=Se(e).position==="fixed",s=i?Ze(e):e;for(;Y(s)&&!Je(s);){let a=Se(s),d=xn(s);!d&&a.position==="fixed"&&(r=null),(i?!d&&!r:!d&&a.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||co(s)&&!d&&cc(e,s))?n=n.filter(c=>c!==s):r=a,s=Ze(s)}return t.set(e,n),n}function Dp(e){let{element:t,boundary:o,rootBoundary:n,strategy:r}=e,s=[...o==="clippingAncestors"?Ao(t)?[]:zp(t,this._c):[].concat(o),n],a=nc(t,s[0],r),d=a.top,l=a.right,c=a.bottom,u=a.left;for(let m=1;m<s.length;m++){let p=nc(t,s[m],r);d=Le(p.top,d),l=St(p.right,l),c=St(p.bottom,c),u=Le(p.left,u)}return{width:l-u,height:c-d,x:u,y:d}}function Bp(e){let{width:t,height:o}=ic(e);return{width:t,height:o}}function Hp(e,t,o){let n=ue(t),r=Qe(t),i=o==="fixed",s=qt(e,!0,i,t),a={scrollLeft:0,scrollTop:0},d=et(0);function l(){d.x=Ln(r)}if(n||!n&&!i)if((Ht(t)!=="body"||co(r))&&(a=No(t)),n){let p=qt(t,!0,i,t);d.x=p.x+t.clientLeft,d.y=p.y+t.clientTop}else r&&l();i&&!n&&r&&l();let c=r&&!n&&!i?ac(r,a):et(0),u=s.left+a.scrollLeft-d.x-c.x,m=s.top+a.scrollTop-d.y-c.y;return{x:u,y:m,width:s.width,height:s.height}}function Yr(e){return Se(e).position==="static"}function rc(e,t){if(!ue(e)||Se(e).position==="fixed")return null;if(t)return t(e);let o=e.offsetParent;return Qe(e)===o&&(o=o.ownerDocument.body),o}function lc(e,t){let o=ce(e);if(Ao(e))return o;if(!ue(e)){let r=Ze(e);for(;r&&!Je(r);){if(Y(r)&&!Yr(r))return r;r=Ze(r)}return o}let n=rc(e,t);for(;n&&ua(n)&&Yr(n);)n=rc(n,t);return n&&Je(n)&&Yr(n)&&!xn(n)?o:n||fa(e)||o}var jp=async function(e){let t=this.getOffsetParent||lc,o=this.getDimensions,n=await o(e.floating);return{reference:Hp(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function Vp(e){return Se(e).direction==="rtl"}var qr={convertOffsetParentRelativeRectToViewportRelativeRect:Lp,getDocumentElement:Qe,getClippingRect:Dp,getOffsetParent:lc,getElementRects:jp,getClientRects:Mp,getDimensions:Bp,getScale:mo,isElement:Y,isRTL:Vp};function dc(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Gp(e,t){let o=null,n,r=Qe(e);function i(){var a;clearTimeout(n),(a=o)==null||a.disconnect(),o=null}function s(a,d){a===void 0&&(a=!1),d===void 0&&(d=1),i();let l=e.getBoundingClientRect(),{left:c,top:u,width:m,height:p}=l;if(a||t(),!m||!p)return;let f=zo(u),h=zo(r.clientWidth-(c+m)),v=zo(r.clientHeight-(u+p)),b=zo(c),x={rootMargin:-f+"px "+-h+"px "+-v+"px "+-b+"px",threshold:Le(0,St(1,d))||1},y=!0;function w(R){let P=R[0].intersectionRatio;if(P!==d){if(!y)return s();P?s(!1,P):n=setTimeout(()=>{s(!1,1e-7)},1e3)}P===1&&!dc(l,e.getBoundingClientRect())&&s(),y=!1}try{o=new IntersectionObserver(w,{...x,root:r.ownerDocument})}catch{o=new IntersectionObserver(w,x)}o.observe(e)}return s(!0),i}function Vo(e,t,o,n){n===void 0&&(n={});let{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:d=!1}=n,l=Fr(e),c=r||i?[...l?_t(l):[],...t?_t(t):[]]:[];c.forEach(b=>{r&&b.addEventListener("scroll",o,{passive:!0}),i&&b.addEventListener("resize",o)});let u=l&&a?Gp(l,o):null,m=-1,p=null;s&&(p=new ResizeObserver(b=>{let[E]=b;E&&E.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var x;(x=p)==null||x.observe(t)})),o()}),l&&!d&&p.observe(l),t&&p.observe(t));let f,h=d?qt(e):null;d&&v();function v(){let b=qt(e);h&&!dc(h,b)&&o(),h=b,f=requestAnimationFrame(v)}return o(),()=>{var b;c.forEach(E=>{r&&E.removeEventListener("scroll",o),i&&E.removeEventListener("resize",o)}),u?.(),(b=p)==null||b.disconnect(),p=null,d&&cancelAnimationFrame(f)}}var uc=Ja;var fc=$a,pc=Ka,mc=tc,gc=Za;var bc=ec,Mn=(e,t,o)=>{let n=new Map,r={platform:qr,...o},i={...r.platform,_c:n};return Ua(e,t,{...r,platform:i})};var fe=g(D(),1),wc=g(D(),1),vc=g(xt(),1),Fp=typeof document<"u",qp=function(){},An=Fp?wc.useLayoutEffect:qp;function Nn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let o,n,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(o=e.length,o!==t.length)return!1;for(n=o;n--!==0;)if(!Nn(e[n],t[n]))return!1;return!0}if(r=Object.keys(e),o=r.length,o!==Object.keys(t).length)return!1;for(n=o;n--!==0;)if(!{}.hasOwnProperty.call(t,r[n]))return!1;for(n=o;n--!==0;){let i=r[n];if(!(i==="_owner"&&e.$$typeof)&&!Nn(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function yc(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function hc(e,t){let o=yc(e);return Math.round(t*o)/o}function Wr(e){let t=fe.useRef(e);return An(()=>{t.current=e}),t}function xc(e){e===void 0&&(e={});let{placement:t="bottom",strategy:o="absolute",middleware:n=[],platform:r,elements:{reference:i,floating:s}={},transform:a=!0,whileElementsMounted:d,open:l}=e,[c,u]=fe.useState({x:0,y:0,strategy:o,placement:t,middlewareData:{},isPositioned:!1}),[m,p]=fe.useState(n);Nn(m,n)||p(n);let[f,h]=fe.useState(null),[v,b]=fe.useState(null),E=fe.useCallback(T=>{T!==R.current&&(R.current=T,h(T))},[]),x=fe.useCallback(T=>{T!==P.current&&(P.current=T,b(T))},[]),y=i||f,w=s||v,R=fe.useRef(null),P=fe.useRef(null),_=fe.useRef(c),O=d!=null,L=Wr(d),z=Wr(r),B=Wr(l),M=fe.useCallback(()=>{if(!R.current||!P.current)return;let T={placement:t,strategy:o,middleware:m};z.current&&(T.platform=z.current),Mn(R.current,P.current,T).then(k=>{let V={...k,isPositioned:B.current!==!1};C.current&&!Nn(_.current,V)&&(_.current=V,vc.flushSync(()=>{u(V)}))})},[m,t,o,z,B]);An(()=>{l===!1&&_.current.isPositioned&&(_.current.isPositioned=!1,u(T=>({...T,isPositioned:!1})))},[l]);let C=fe.useRef(!1);An(()=>(C.current=!0,()=>{C.current=!1}),[]),An(()=>{if(y&&(R.current=y),w&&(P.current=w),y&&w){if(L.current)return L.current(y,w,M);M()}},[y,w,M,L,O]);let S=fe.useMemo(()=>({reference:R,floating:P,setReference:E,setFloating:x}),[E,x]),A=fe.useMemo(()=>({reference:y,floating:w}),[y,w]),I=fe.useMemo(()=>{let T={position:o,left:0,top:0};if(!A.floating)return T;let k=hc(A.floating,c.x),V=hc(A.floating,c.y);return a?{...T,transform:"translate("+k+"px, "+V+"px)",...yc(A.floating)>=1.5&&{willChange:"transform"}}:{position:o,left:k,top:V}},[o,a,A.floating,c.x,c.y]);return fe.useMemo(()=>({...c,update:M,refs:S,elements:A,floatingStyles:I}),[c,M,S,A,I])}var Xr=(e,t)=>{let o=uc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Ur=(e,t)=>{let o=fc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Kr=(e,t)=>({fn:bc(e).fn,options:[e,t]}),Zr=(e,t)=>{let o=pc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Qr=(e,t)=>{let o=mc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var Jr=(e,t)=>{let o=gc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var Z=(e,t,o,n,r,i,...s)=>{if(s.length>0)throw new Error(_e(1));let a;if(e&&t&&o&&n&&r&&i)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u),h=n(d,l,c,u),v=r(d,l,c,u);return i(m,p,f,h,v,l,c,u)};else if(e&&t&&o&&n&&r)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u),h=n(d,l,c,u);return r(m,p,f,h,l,c,u)};else if(e&&t&&o&&n)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u);return n(m,p,f,l,c,u)};else if(e&&t&&o)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u);return o(m,p,l,c,u)};else if(e&&t)a=(d,l,c,u)=>{let m=e(d,l,c,u);return t(m,l,c,u)};else if(e)a=e;else throw new Error("Missing arguments");return a};var Ac=g(D(),1),ri=g(ei(),1),Nc=g(Cc(),1);var kc=g(D(),1);var ti=[],oi;function Oc(){return oi}function Lc(e){ti.push(e)}function ni(e){let t=(o,n)=>{let r=de(lm).current,i;try{oi=r;for(let s of ti)s.before(r);i=e(o,n);for(let s of ti)s.after(r);r.didInitialize=!0}finally{oi=void 0}return i};return t.displayName=e.displayName||e.name,t}function Mc(e){return kc.forwardRef(ni(e))}function lm(){return{didInitialize:!1}}var dm=no(19),um=dm?pm:mm;function zn(e,t,o,n,r){return um(e,t,o,n,r)}function fm(e,t,o,n,r){let i=Ac.useCallback(()=>t(e.getSnapshot(),o,n,r),[e,t,o,n,r]);return(0,ri.useSyncExternalStore)(e.subscribe,i,i)}Lc({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let o=0;o<e.syncHooks.length;o+=1){let n=e.syncHooks[o],r=n.selector(n.store.state,n.a1,n.a2,n.a3);(n.didChange||!Object.is(n.value,r))&&(t=!0,n.value=r,n.didChange=!1)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let o=new Set;for(let r of e.syncHooks)o.add(r.store);let n=[];for(let r of o)n.push(r.subscribe(t));return()=>{for(let r of n)r()}}),(0,ri.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function pm(e,t,o,n,r){let i=Oc();if(!i)return fm(e,t,o,n,r);let s=i.syncIndex;i.syncIndex+=1;let a;return i.didInitialize?(a=i.syncHooks[s],(a.store!==e||a.selector!==t||!Object.is(a.a1,o)||!Object.is(a.a2,n)||!Object.is(a.a3,r))&&(a.store!==e&&(i.didChangeStore=!0),a.store=e,a.selector=t,a.a1=o,a.a2=n,a.a3=r,a.didChange=!0)):(a={store:e,selector:t,a1:o,a2:n,a3:r,value:t(e.getSnapshot(),o,n,r),didChange:!1},i.syncHooks.push(a)),a.value}function mm(e,t,o,n,r){return(0,Nc.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,i=>t(i,o,n,r))}var Dn=class{constructor(t){this.state=t,this.listeners=new Set,this.updateTick=0}subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});getSnapshot=()=>this.state;setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;let o=this.updateTick;for(let n of this.listeners){if(o!==this.updateTick)return;n(t)}}update(t){for(let o in t)if(!Object.is(this.state[o],t[o])){this.setState({...this.state,...t});return}}set(t,o){Object.is(this.state[t],o)||this.setState({...this.state,[t]:o})}notifyAll(){let t={...this.state};this.setState(t)}use(t,o,n,r){return zn(this,t,o,n,r)}};var Wt=g(D(),1);var bo=class extends Dn{constructor(t,o={},n){super(t),this.context=o,this.selectors=n}useSyncedValue(t,o){Wt.useDebugValue(t),j(()=>{this.state[t]!==o&&this.set(t,o)},[t,o])}useSyncedValueWithCleanup(t,o){let n=this;j(()=>(n.state[t]!==o&&n.set(t,o),()=>{n.set(t,void 0)}),[n,t,o])}useSyncedValues(t){let o=this,n=Object.values(t);j(()=>{o.update(t)},[o,...n])}useControlledProp(t,o){Wt.useDebugValue(t);let n=o!==void 0;j(()=>{n&&!Object.is(this.state[t],o)&&super.setState({...this.state,[t]:o})},[t,o,n])}select(t,o,n,r){let i=this.selectors[t];return i(this.state,o,n,r)}useState(t,o,n,r){return Wt.useDebugValue(t),zn(this,this.selectors[t],o,n,r)}useContextCallback(t,o){Wt.useDebugValue(t);let n=G(o??mt);this.context[t]=n}useStateSetter(t){let o=Wt.useRef(void 0);return o.current===void 0&&(o.current=n=>{this.set(t,n)}),o.current}observe(t,o){let n;typeof t=="function"?n=t:n=this.selectors[t];let r=n(this.state);return o(r,r,this),this.subscribe(i=>{let s=n(i);if(!Object.is(r,s)){let a=r;r=s,o(s,a,this)}})}};var gm={open:Z(e=>e.open),transitionStatus:Z(e=>e.transitionStatus),domReferenceElement:Z(e=>e.domReferenceElement),referenceElement:Z(e=>e.positionReference??e.referenceElement),floatingElement:Z(e=>e.floatingElement),floatingId:Z(e=>e.floatingId)},Tt=class extends bo{constructor(t){let{syncOnly:o,nested:n,onOpenChange:r,triggerElements:i,...s}=t;super({...s,positionReference:s.referenceElement,domReferenceElement:s.referenceElement},{onOpenChange:r,dataRef:{current:{}},events:Ga(),nested:n,triggerElements:i},gm),this.syncOnly=o}syncOpenEvent=(t,o)=>{(!t||!this.state.open||o!=null&&Ea(o))&&(this.context.dataRef.current.openEvent=t?o:void 0)};dispatchOpenChange=(t,o)=>{this.syncOpenEvent(t,o.event);let n={open:t,reason:o.reason,nativeEvent:o.event,nested:this.context.nested,triggerElement:o.trigger};this.context.events.emit("openchange",n)};setOpen=(t,o)=>{if(this.syncOnly){this.context.onOpenChange?.(t,o);return}this.dispatchOpenChange(t,o),this.context.onOpenChange?.(t,o)}};var Go=g(D(),1);function bm(e,t){let o=Go.useRef(null),n=Go.useRef(null);return Go.useCallback(r=>{if(e!==void 0){if(o.current!==null){let i=o.current,s=n.current,a=t.context.triggerElements.getById(i);s&&a===s&&t.context.triggerElements.delete(i),o.current=null,n.current=null}r!==null&&(o.current=e,n.current=r,t.context.triggerElements.add(e,r))}},[t,e])}function Ic(e,t,o,n){let r=o.useState("isMountedByTrigger",e),i=bm(e,o),s=G(a=>{if(i(a),!a||!o.select("open"))return;let d=o.select("activeTriggerId");if(d===e){o.update({activeTriggerElement:a,...n});return}d==null&&o.update({activeTriggerId:e,activeTriggerElement:a,...n})});return j(()=>{r&&o.update({activeTriggerElement:t.current,...n})},[r,o,t,...Object.values(n)]),{registerTrigger:s,isMountedByThisTrigger:r}}function zc(e){let t=e.useState("open");j(()=>{if(t&&!e.select("activeTriggerId")&&e.context.triggerElements.size===1){let o=e.context.triggerElements.entries().next();if(!o.done){let[n,r]=o.value;e.update({activeTriggerId:n,activeTriggerElement:r})}}},[t,e])}function Dc(e,t,o){let{mounted:n,setMounted:r,transitionStatus:i}=da(e);t.useSyncedValues({mounted:n,transitionStatus:i});let s=G(()=>{r(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1}),o?.(),t.context.onOpenChangeComplete?.(!1)}),a=t.useState("preventUnmountingOnClose");return kn({enabled:!a,open:e,ref:t.context.popupRef,onComplete(){e||s()}}),{forceUnmount:s,transitionStatus:i}}var Ct=class{constructor(){this.elementsSet=new Set,this.idMap=new Map}add(t,o){let n=this.idMap.get(t);n!==o&&(n!==void 0&&this.elementsSet.delete(n),this.elementsSet.add(o),this.idMap.set(t,o))}delete(t){let o=this.idMap.get(t);o&&(this.elementsSet.delete(o),this.idMap.delete(t))}hasElement(t){return this.elementsSet.has(t)}hasMatchingElement(t){for(let o of this.elementsSet)if(t(o))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}elements(){return this.elementsSet.values()}get size(){return this.idMap.size}};function Bc(){return new Tt({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:new Ct,floatingId:"",syncOnly:!1,nested:!1,onOpenChange:void 0})}function Hc(){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:Bc(),preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:ge,inactiveTriggerProps:ge,popupProps:ge}}var Bn=Z(e=>e.triggerIdProp??e.activeTriggerId),jc={open:Z(e=>e.openProp??e.open),mounted:Z(e=>e.mounted),transitionStatus:Z(e=>e.transitionStatus),floatingRootContext:Z(e=>e.floatingRootContext),preventUnmountingOnClose:Z(e=>e.preventUnmountingOnClose),payload:Z(e=>e.payload),activeTriggerId:Bn,activeTriggerElement:Z(e=>e.mounted?e.activeTriggerElement:null),isTriggerActive:Z((e,t)=>t!==void 0&&Bn(e)===t),isOpenedByTrigger:Z((e,t)=>t!==void 0&&Bn(e)===t&&e.open),isMountedByTrigger:Z((e,t)=>t!==void 0&&Bn(e)===t&&e.mounted),triggerProps:Z((e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps),popupProps:Z(e=>e.popupProps),popupElement:Z(e=>e.popupElement),positionerElement:Z(e=>e.positionerElement)};function Vc(e){let{open:t=!1,onOpenChange:o,elements:n={}}=e,r=yt(),i=po()!=null,s=de(()=>new Tt({open:t,transitionStatus:void 0,onOpenChange:o,referenceElement:n.reference??null,floatingElement:n.floating??null,triggerElements:new Ct,floatingId:r,syncOnly:!1,nested:i})).current;return j(()=>{let a={open:t,floatingId:r};n.reference!==void 0&&(a.referenceElement=n.reference,a.domReferenceElement=Y(n.reference)?n.reference:null),n.floating!==void 0&&(a.floatingElement=n.floating),s.update(a)},[t,r,n.reference,n.floating,s]),s.context.onOpenChange=o,s.context.nested=i,s}function ii(e={}){let{nodeId:t,externalTree:o}=e,n=Vc(e),r=e.rootContext||n,i={reference:r.useState("referenceElement"),floating:r.useState("floatingElement"),domReference:r.useState("domReferenceElement")},[s,a]=Ae.useState(null),d=Ae.useRef(null),l=Et(o);j(()=>{i.domReference&&(d.current=i.domReference)},[i.domReference]);let c=xc({...e,elements:{...i,...s&&{reference:s}}}),u=Ae.useCallback(_=>{let O=Y(_)?{getBoundingClientRect:()=>_.getBoundingClientRect(),getClientRects:()=>_.getClientRects(),contextElement:_}:_;a(O),c.refs.setReference(O)},[c.refs]),[m,p]=Ae.useState(void 0),[f,h]=Ae.useState(null);r.useSyncedValue("referenceElement",m??null);let v=Y(m)?m:null;r.useSyncedValue("domReferenceElement",m===void 0?i.domReference:v),r.useSyncedValue("floatingElement",f);let b=Ae.useCallback(_=>{(Y(_)||_===null)&&(d.current=_,p(_)),(Y(c.refs.reference.current)||c.refs.reference.current===null||_!==null&&!Y(_))&&c.refs.setReference(_)},[c.refs,p]),E=Ae.useCallback(_=>{h(_),c.refs.setFloating(_)},[c.refs]),x=Ae.useMemo(()=>({...c.refs,setReference:b,setFloating:E,setPositionReference:u,domReference:d}),[c.refs,b,E,u]),y=Ae.useMemo(()=>({...c.elements,domReference:i.domReference}),[c.elements,i.domReference]),w=r.useState("open"),R=r.useState("floatingId"),P=Ae.useMemo(()=>({...c,dataRef:r.context.dataRef,open:w,onOpenChange:r.setOpen,events:r.context.events,floatingId:R,refs:x,elements:y,nodeId:t,rootStore:r}),[c,x,y,t,r,w,R]);return j(()=>{r.context.dataRef.current.floatingContext=P;let _=l?.nodesRef.current.find(O=>O.id===t);_&&(_.context=P)}),Ae.useMemo(()=>({...c,context:P,refs:x,elements:y,rootStore:r}),[c,x,y,P,r])}function si(e){let{popupStore:t,treatPopupAsFloatingElement:o=!1,onOpenChange:n}=e,r=yt(),i=po()!=null,s=t.useState("open"),a=t.useState("activeTriggerElement"),d=t.useState(o?"popupElement":"positionerElement"),l=t.context.triggerElements,c=de(()=>new Tt({open:s,transitionStatus:void 0,referenceElement:a,floatingElement:d,triggerElements:l,onOpenChange:n,floatingId:r,syncOnly:!0,nested:i})).current;return j(()=>{let u={open:s,floatingId:r,referenceElement:a,floatingElement:d};Y(a)&&(u.domReferenceElement=a),c.state.positionReference===c.state.referenceElement&&(u.positionReference=a),c.update(u)},[s,r,a,d,c]),c.context.onOpenChange=n,c.context.nested=i,c}var at=g(D(),1);var ai=ya&&va;function ci(e,t={}){let o="rootStore"in e?e.rootStore:e,{events:n,dataRef:r}=o.context,{enabled:i=!0,delay:s}=t,a=at.useRef(!1),d=at.useRef(null),l=gt(),c=at.useRef(!0);at.useEffect(()=>{let m=o.select("domReferenceElement");if(!i)return;let p=ce(m);function f(){let b=o.select("domReferenceElement");!o.select("open")&&ue(b)&&b===Pn(be(b))&&(a.current=!0)}function h(){c.current=!0}function v(){c.current=!1}return nt(J(p,"blur",f),ai&&J(p,"keydown",h,!0),ai&&J(p,"pointerdown",v,!0))},[o,i]),at.useEffect(()=>{if(!i)return;function m(p){if(p.reason===W.triggerPress||p.reason===W.escapeKey){let f=o.select("domReferenceElement");Y(f)&&(d.current=f,a.current=!0)}}return n.on("openchange",m),()=>{n.off("openchange",m)}},[n,i,o]);let u=at.useMemo(()=>({onMouseLeave(){a.current=!1,d.current=null},onFocus(m){let p=m.currentTarget;if(a.current){if(d.current===p)return;a.current=!1,d.current=null}let f=Oe(m.nativeEvent);if(Y(f)){if(ai&&!m.relatedTarget){if(!c.current&&!Ra(f))return}else if(!Sa(f))return}let h=jt(m.relatedTarget,o.context.triggerElements),{nativeEvent:v,currentTarget:b}=m,E=typeof s=="function"?s():s;if(o.select("open")&&h||E===0||E===void 0){o.setOpen(!0,ee(W.triggerFocus,v,b));return}l.start(E,()=>{a.current||o.setOpen(!0,ee(W.triggerFocus,v,b))})},onBlur(m){a.current=!1,d.current=null;let p=m.relatedTarget,f=m.nativeEvent,h=Y(p)&&p.hasAttribute(fo("focus-guard"))&&p.getAttribute("data-type")==="outside";l.start(0,()=>{let v=o.select("domReferenceElement"),b=Pn(be(v));!p&&b===v||ne(r.current.floatingContext?.refs.floating.current,b)||ne(v,b)||h||jt(p??b,o.context.triggerElements)||o.setOpen(!1,ee(W.triggerFocus,f))})}}),[r,o,l,s]);return at.useMemo(()=>i?{reference:u,trigger:u}:{},[i,u])}var Yo=g(D(),1);var li=class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new He,this.restTimeout=new He,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose},Hn=new WeakMap;function ho(e){if(!e.performedPointerEventsMutation)return;let t=e.pointerEventsScopeElement;t&&Hn.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),Hn.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function jn(e,t){let{scopeElement:o,referenceElement:n,floatingElement:r}=t,i=Hn.get(o);i&&i!==e&&ho(i),ho(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=o,e.pointerEventsReferenceElement=n,e.pointerEventsFloatingElement=r,Hn.set(o,e),o.style.pointerEvents="none",n.style.pointerEvents="auto",r.style.pointerEvents="auto"}function Vn(e){let t=de(li.create).current,o=e.context.dataRef.current;return o.hoverInteractionState||(o.hoverInteractionState=t),ro(o.hoverInteractionState.disposeEffect),o.hoverInteractionState}function di(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),i=o.useState("domReferenceElement"),{dataRef:s}=o.context,{enabled:a=!0,closeDelay:d=0,nodeId:l}=t,c=Vn(o),u=Et(),m=po(),p=G(()=>On(s.current.openEvent?.type,c.interactedInside)),f=G(()=>{let y=s.current.openEvent?.type;return y?.includes("mouse")&&y!=="mousedown"}),h=G(y=>jt(y,o.context.triggerElements)),v=Yo.useCallback(y=>{let w=Yt(d,"close",c.pointerType),R=()=>{o.setOpen(!1,ee(W.triggerHover,y)),u?.events.emit("floating.closed",y)};w?c.openChangeTimeout.start(w,R):(c.openChangeTimeout.clear(),R())},[d,o,c,u]),b=G(()=>{ho(c)}),E=G(y=>{let w=Oe(y);if(!zr(w)){c.interactedInside=!1;return}c.interactedInside=w?.closest("[aria-haspopup]")!=null});j(()=>{n||(c.pointerType=void 0,c.restTimeoutPending=!1,c.interactedInside=!1,b())},[n,c,b]),Yo.useEffect(()=>b,[b]),j(()=>{if(a&&n&&c.handleCloseOptions?.blockPointerEvents&&f()&&Y(i)&&r){let y=i,w=r,R=be(r),P=u?.nodesRef.current.find(O=>O.id===m)?.context?.elements.floating;P&&(P.style.pointerEvents="");let _=c.handleCloseOptions?.getScope?.()??c.pointerEventsScopeElement??P??y.closest("[data-rootownerid]")??R.body;return jn(c,{scopeElement:_,referenceElement:y,floatingElement:w}),()=>{b()}}},[a,n,i,r,c,f,u,m,b]);let x=gt();Yo.useEffect(()=>{if(!a)return;function y(){c.openChangeTimeout.clear(),x.clear(),u?.events.off("floating.closed",R),b()}function w(_){if(u&&m&&$e(u.nodesRef.current,m).length>0){u.events.on("floating.closed",R);return}if(h(_.relatedTarget))return;let O=s.current.floatingContext?.nodeId??l,L=_.relatedTarget;if(!(u&&O&&Y(L)&&$e(u.nodesRef.current,O,!1).some(B=>ne(B.context?.elements.floating,L)))){if(c.handler){c.handler(_);return}b(),p()||v(_)}}function R(_){!u||!m||$e(u.nodesRef.current,m).length>0||x.start(0,()=>{u.events.off("floating.closed",R),o.setOpen(!1,ee(W.triggerHover,_)),u.events.emit("floating.closed",_)})}let P=r;return nt(P&&J(P,"mouseenter",y),P&&J(P,"mouseleave",w),P&&J(P,"pointerdown",E,!0),()=>{u?.events.off("floating.closed",R)})},[a,r,o,s,l,p,h,v,b,E,c,u,m,x])}var kt=g(D(),1),Gc=g(xt(),1);var hm={current:null};function ui(e,t={}){let o="rootStore"in e?e.rootStore:e,{dataRef:n,events:r}=o.context,{enabled:i=!0,delay:s=0,handleClose:a=null,mouseOnly:d=!1,restMs:l=0,move:c=!0,triggerElementRef:u=hm,externalTree:m,isActiveTrigger:p=!0,getHandleCloseContext:f,isClosing:h}=t,v=Et(m),b=Vn(o),E=kt.useRef(!1),x=rt(a),y=rt(s),w=rt(l),R=rt(i),P=rt(h);p&&(b.handleCloseOptions=x.current?.__options);let _=G(()=>On(n.current.openEvent?.type,b.interactedInside)),O=G(C=>jt(C,o.context.triggerElements)),L=G((C,S,A)=>{let I=o.context.triggerElements;if(I.hasElement(S))return!C||!ne(C,S);if(!Y(A))return!1;let T=A;return I.hasMatchingElement(k=>ne(k,T))&&(!C||!ne(C,T))}),z=G((C,S=!0)=>{let A=Yt(y.current,"close",b.pointerType);A?b.openChangeTimeout.start(A,()=>{o.setOpen(!1,ee(W.triggerHover,C)),v?.events.emit("floating.closed",C)}):S&&(b.openChangeTimeout.clear(),o.setOpen(!1,ee(W.triggerHover,C)),v?.events.emit("floating.closed",C))}),B=G(()=>{if(!b.handler)return;be(o.select("domReferenceElement")).removeEventListener("mousemove",b.handler),b.handler=void 0}),M=G(()=>{ho(b)});return kt.useEffect(()=>B,[B]),kt.useEffect(()=>{if(!i)return;function C(S){S.open?E.current=!1:(E.current=S.reason===W.triggerHover,B(),b.openChangeTimeout.clear(),b.restTimeout.clear(),b.blockMouseMove=!0,b.restTimeoutPending=!1)}return r.on("openchange",C),()=>{r.off("openchange",C)}},[i,r,b,B]),kt.useEffect(()=>{if(!i)return;let C=u.current??(p?o.select("domReferenceElement"):null);if(!Y(C))return;function S(I){if(b.openChangeTimeout.clear(),b.blockMouseMove=!1,d&&!Vt(b.pointerType))return;let T=Dr(w.current),k=Yt(y.current,"open",b.pointerType),V=Oe(I),F=I.currentTarget??null,X=o.select("domReferenceElement"),U=F;if(Y(V)&&!o.context.triggerElements.hasElement(V)){for(let Ot of o.context.triggerElements.elements())if(ne(Ot,V)){U=Ot;break}}Y(F)&&Y(X)&&!o.context.triggerElements.hasElement(F)&&ne(F,X)&&(U=X);let ae=U==null?!1:L(X,U,V),ie=o.select("open"),q=P.current?.()??o.select("transitionStatus")==="ending",re=!ie&&q&&E.current,Ee=!ae&&Y(U)&&Y(X)&&ne(X,U)&&re,he=T>0&&!k,Te=ae&&(ie||re)||Ee,we=!ie||ae;if(Te){o.setOpen(!0,ee(W.triggerHover,I,U));return}he||(k?b.openChangeTimeout.start(k,()=>{we&&o.setOpen(!0,ee(W.triggerHover,I,U))}):we&&o.setOpen(!0,ee(W.triggerHover,I,U)))}function A(I){if(_()){M();return}B();let T=o.select("domReferenceElement"),k=be(T);b.restTimeout.clear(),b.restTimeoutPending=!1;let V=n.current.floatingContext??f?.();if(O(I.relatedTarget))return;if(x.current&&V){o.select("open")||b.openChangeTimeout.clear();let U=u.current;b.handler=x.current({...V,tree:v,x:I.clientX,y:I.clientY,onClose(){M(),B(),R.current&&!_()&&U===o.select("domReferenceElement")&&z(I,!0)}}),k.addEventListener("mousemove",b.handler),b.handler(I);return}(b.pointerType!=="touch"||!ne(o.select("floatingElement"),I.relatedTarget))&&z(I)}return c?nt(J(C,"mousemove",S,{once:!0}),J(C,"mouseenter",S),J(C,"mouseleave",A)):nt(J(C,"mouseenter",S),J(C,"mouseleave",A))},[B,M,n,y,z,o,i,x,b,p,L,_,O,d,c,w,u,v,R,f,P]),kt.useMemo(()=>{if(!i)return;function C(S){b.pointerType=S.pointerType}return{onPointerDown:C,onPointerEnter:C,onMouseMove(S){let{nativeEvent:A}=S,I=S.currentTarget,T=o.select("domReferenceElement"),k=o.select("open"),V=L(T,I,S.target);if(d&&!Vt(b.pointerType))return;if(k&&V&&b.handleCloseOptions?.blockPointerEvents){let U=o.select("floatingElement");if(U){let ae=b.handleCloseOptions?.getScope?.()??I.ownerDocument.body;jn(b,{scopeElement:ae,referenceElement:I,floatingElement:U})}}let F=Dr(w.current);if(k&&!V||F===0||!V&&b.restTimeoutPending&&S.movementX**2+S.movementY**2<2)return;b.restTimeout.clear();function X(){if(b.restTimeoutPending=!1,_())return;let U=o.select("open");!b.blockMouseMove&&(!U||V)&&o.setOpen(!0,ee(W.triggerHover,A,I))}b.pointerType==="touch"?Gc.flushSync(()=>{X()}):V&&k?X():(b.restTimeoutPending=!0,b.restTimeout.start(F,X))}}},[i,b,_,L,d,o,w])}var Xt=g(D(),1);function fi(e=[]){let t=e.map(l=>l?.reference),o=e.map(l=>l?.floating),n=e.map(l=>l?.item),r=e.map(l=>l?.trigger),i=Xt.useCallback(l=>Gn(l,e,"reference"),t),s=Xt.useCallback(l=>Gn(l,e,"floating"),o),a=Xt.useCallback(l=>Gn(l,e,"item"),n),d=Xt.useCallback(l=>Gn(l,e,"trigger"),r);return Xt.useMemo(()=>({getReferenceProps:i,getFloatingProps:s,getItemProps:a,getTriggerProps:d}),[i,s,a,d])}function Gn(e,t,o){let n=new Map,r=o==="item",i={};o==="floating"&&(i.tabIndex=-1,i[Mr]="");for(let s in e)r&&e&&(s===Ar||s===Nr)||(i[s]=e[s]);for(let s=0;s<t.length;s+=1){let a,d=t[s]?.[o];typeof d=="function"?a=e?d(e):null:a=d,a&&Yc(i,a,r,n)}return Yc(i,e,r,n),i}function Yc(e,t,o,n){for(let r in t){let i=t[r];o&&(r===Ar||r===Nr)||(r.startsWith("on")?(n.has(r)||n.set(r,[]),typeof i=="function"&&(n.get(r)?.push(i),e[r]=(...s)=>n.get(r)?.map(a=>a(...s)).find(a=>a!==void 0))):e[r]=i)}}var Fc=.1,wm=Fc*Fc,$=.5;function Yn(e,t,o,n,r,i){return n>=t!=i>=t&&e<=(r-o)*(t-n)/(i-n)+o}function Fn(e,t,o,n,r,i,s,a,d,l){let c=!1;return Yn(e,t,o,n,r,i)&&(c=!c),Yn(e,t,r,i,s,a)&&(c=!c),Yn(e,t,s,a,d,l)&&(c=!c),Yn(e,t,d,l,o,n)&&(c=!c),c}function vm(e,t,o){return e>=o.x&&e<=o.x+o.width&&t>=o.y&&t<=o.y+o.height}function qn(e,t,o,n,r,i){let s=Math.min(o,r),a=Math.max(o,r),d=Math.min(n,i),l=Math.max(n,i);return e>=s&&e<=a&&t>=d&&t<=l}function pi(e={}){let{blockPointerEvents:t=!1}=e,o=new He,n=({x:r,y:i,placement:s,elements:a,onClose:d,nodeId:l,tree:c})=>{let u=s?.split("-")[0],m=!1,p=null,f=null,h=typeof performance<"u"?performance.now():0;function v(E,x){let y=performance.now(),w=y-h;if(p===null||f===null||w===0)return p=E,f=x,h=y,!1;let R=E-p,P=x-f,_=R*R+P*P,O=w*w*wm;return p=E,f=x,h=y,_<O}function b(){o.clear(),d()}return function(x){o.clear();let y=a.domReference,w=a.floating;if(!y||!w||u==null||r==null||i==null)return;let{clientX:R,clientY:P}=x,_=Oe(x),O=x.type==="mouseleave",L=ne(w,_),z=ne(y,_);if(L&&(m=!0,!O))return;if(z&&(m=!1,!O)){m=!0;return}if(O&&Y(x.relatedTarget)&&ne(w,x.relatedTarget))return;function B(){return!!(c&&$e(c.nodesRef.current,l).length>0)}function M(){B()||b()}if(B())return;let C=y.getBoundingClientRect(),S=w.getBoundingClientRect(),A=r>S.right-S.width/2,I=i>S.bottom-S.height/2,T=S.width>C.width,k=S.height>C.height,V=(T?C:S).left,F=(T?C:S).right,X=(k?C:S).top,U=(k?C:S).bottom;if(u==="top"&&i>=C.bottom-1||u==="bottom"&&i<=C.top+1||u==="left"&&r>=C.right-1||u==="right"&&r<=C.left+1){M();return}let ae=!1;switch(u){case"top":ae=qn(R,P,V,C.top+1,F,S.bottom-1);break;case"bottom":ae=qn(R,P,V,S.top+1,F,C.bottom-1);break;case"left":ae=qn(R,P,S.right-1,U,C.left+1,X);break;case"right":ae=qn(R,P,C.right-1,U,S.left+1,X);break;default:}if(ae)return;if(m&&!vm(R,P,C)){M();return}if(!O&&v(R,P)){M();return}let ie=!1;switch(u){case"top":{let q=T?$/2:$*4,re=T||A?r+q:r-q,Ee=T?r-q:A?r+q:r-q,he=i+$+1,Te=A||T?S.bottom-$:S.top,we=A?T?S.bottom-$:S.top:S.bottom-$;ie=Fn(R,P,re,he,Ee,he,S.left,Te,S.right,we);break}case"bottom":{let q=T?$/2:$*4,re=T||A?r+q:r-q,Ee=T?r-q:A?r+q:r-q,he=i-$,Te=A||T?S.top+$:S.bottom,we=A?T?S.top+$:S.bottom:S.top+$;ie=Fn(R,P,re,he,Ee,he,S.left,Te,S.right,we);break}case"left":{let q=k?$/2:$*4,re=k||I?i+q:i-q,Ee=k?i-q:I?i+q:i-q,he=r+$+1,Te=I||k?S.right-$:S.left,we=I?k?S.right-$:S.left:S.right-$;ie=Fn(R,P,Te,S.top,we,S.bottom,he,re,he,Ee);break}case"right":{let q=k?$/2:$*4,re=k||I?i+q:i-q,Ee=k?i-q:I?i+q:i-q,he=r-$,Te=I||k?S.left+$:S.right,we=I?k?S.left+$:S.right:S.left+$;ie=Fn(R,P,he,re,he,Ee,Te,S.top,we,S.bottom);break}default:}ie?m||o.start(40,M):M()}};return n.__options={...e,blockPointerEvents:t},n}var mi=(function(e){return e.open="data-open",e.closed="data-closed",e[e.startingStyle=Dt.startingStyle]="startingStyle",e[e.endingStyle=Dt.endingStyle]="endingStyle",e.anchorHidden="data-anchor-hidden",e.side="data-side",e.align="data-align",e})({}),Fo=(function(e){return e.popupOpen="data-popup-open",e.pressed="data-pressed",e})({}),ym={[Fo.popupOpen]:""},Av={[Fo.popupOpen]:"",[Fo.pressed]:""},xm={[mi.open]:""},_m={[mi.closed]:""},Rm={[mi.anchorHidden]:""},qc={open(e){return e?ym:null}};var wo={open(e){return e?xm:_m},anchorHidden(e){return e?Rm:null}};function Wc(e){return no(19)?e:e?"true":void 0}var Ve=g(D(),1);var Sm=e=>({name:"arrow",options:e,async fn(t){let{x:o,y:n,placement:r,rects:i,platform:s,elements:a,middlewareData:d}=t,{element:l,padding:c=0,offsetParent:u="real"}=tt(e,t)||{};if(l==null)return{};let m=Cn(c),p={x:o,y:n},f=Ho(r),h=Bo(f),v=await s.getDimensions(l),b=f==="y",E=b?"top":"left",x=b?"bottom":"right",y=b?"clientHeight":"clientWidth",w=i.reference[h]+i.reference[f]-p[f]-i.floating[h],R=p[f]-i.reference[f],P=u==="real"?await s.getOffsetParent?.(l):a.floating,_=a.floating[y]||i.floating[h];(!_||!await s.isElement?.(P))&&(_=a.floating[y]||i.floating[h]);let O=w/2-R/2,L=_/2-v[h]/2-1,z=Math.min(m[E],L),B=Math.min(m[x],L),M=z,C=_-v[h]-B,S=_/2-v[h]/2+O,A=Do(M,S,C),I=!d.arrow&&ot(r)!=null&&S!==A&&i.reference[h]/2-(S<M?z:B)-v[h]/2<0,T=I?S<M?S-M:S-C:0;return{[f]:p[f]+T,data:{[f]:A,centerOffset:S-A-T,...I&&{alignmentOffset:T}},reset:I}}}),Xc=(e,t)=>({...Sm(e),options:[e,t]});var Uc={name:"hide",async fn(e){let{width:t,height:o,x:n,y:r}=e.rects.reference,i=t===0&&o===0&&n===0&&r===0;return{data:{referenceHidden:(await Jr().fn(e)).data?.referenceHidden||i}}}};var qo={sideX:"left",sideY:"top"},Kc={name:"adaptiveOrigin",async fn(e){let{x:t,y:o,rects:{floating:n},elements:{floating:r},platform:i,strategy:s,placement:a}=e,d=ce(r),l=d.getComputedStyle(r);if(!(l.transitionDuration!=="0s"&&l.transitionDuration!==""))return{x:t,y:o,data:qo};let u=await i.getOffsetParent?.(r),m={width:0,height:0};if(s==="fixed"&&d?.visualViewport)m={width:d.visualViewport.width,height:d.visualViewport.height};else if(u===d){let E=be(r);m={width:E.documentElement.clientWidth,height:E.documentElement.clientHeight}}else await i.isElement?.(u)&&(m=await i.getDimensions(u));let p=ye(a),f=t,h=o;p==="left"&&(f=m.width-(t+n.width)),p==="top"&&(h=m.height-(o+n.height));let v=p==="left"?"right":qo.sideX,b=p==="top"?"bottom":qo.sideY;return{x:f,y:h,data:{sideX:v,sideY:b}}}};function Jc(e,t,o){let n=e==="inline-start"||e==="inline-end";return{top:"top",right:n?o?"inline-start":"inline-end":"right",bottom:"bottom",left:n?o?"inline-end":"inline-start":"left"}[t]}function Zc(e,t,o){let{rects:n,placement:r}=e;return{side:Jc(t,ye(r),o),align:ot(r)||"center",anchor:{width:n.reference.width,height:n.reference.height},positioner:{width:n.floating.width,height:n.floating.height}}}function $c(e){let{anchor:t,positionMethod:o="absolute",side:n="bottom",sideOffset:r=0,align:i="center",alignOffset:s=0,collisionBoundary:a,collisionPadding:d=5,sticky:l=!1,arrowPadding:c=5,disableAnchorTracking:u=!1,keepMounted:m=!1,floatingRootContext:p,mounted:f,collisionAvoidance:h,shiftCrossAxis:v=!1,nodeId:b,adaptiveOrigin:E,lazyFlip:x=!1,externalTree:y}=e,[w,R]=Ve.useState(null);!f&&w!==null&&R(null);let P=h.side||"flip",_=h.align||"flip",O=h.fallbackAxisSide||"end",L=typeof t=="function"?t:void 0,z=G(L),B=L?z:t,M=rt(t),C=rt(f),A=oo()==="rtl",I=w||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":A?"left":"right","inline-start":A?"right":"left"}[n],T=i==="center"?I:`${I}-${i}`,k=d,V=1,F=n==="bottom"?V:0,X=n==="top"?V:0,U=n==="right"?V:0,ae=n==="left"?V:0;typeof k=="number"?k={top:k+F,right:k+ae,bottom:k+X,left:k+U}:k&&(k={top:(k.top||0)+F,right:(k.right||0)+ae,bottom:(k.bottom||0)+X,left:(k.left||0)+U});let ie={boundary:a==="clipping-ancestors"?"clippingAncestors":a,padding:k},q=Ve.useRef(null),re=rt(r),Ee=rt(s),we=[Xr(te=>{let Ce=Zc(te,n,A),Ye=typeof re.current=="function"?re.current(Ce):re.current,Ne=typeof Ee.current=="function"?Ee.current(Ce):Ee.current;return{mainAxis:Ye,crossAxis:Ne,alignmentAxis:Ne}},[typeof r!="function"?r:0,typeof s!="function"?s:0,A,n])],Ot=_==="none"&&P!=="shift",Lt=!Ot&&(l||v||P==="shift"),sn=P==="none"?null:Zr({...ie,padding:{top:k.top+V,right:k.right+V,bottom:k.bottom+V,left:k.left+V},mainAxis:!v&&P==="flip",crossAxis:_==="flip"?"alignment":!1,fallbackAxisSideDirection:O}),$t=Ot?null:Ur(te=>{let Ce=be(te.elements.floating).documentElement;return{...ie,rootBoundary:v?{x:0,y:0,width:Ce.clientWidth,height:Ce.clientHeight}:void 0,mainAxis:_!=="none",crossAxis:Lt,limiter:l||v?void 0:Kr(Ye=>{if(!q.current)return{};let{width:Ne,height:pt}=q.current.getBoundingClientRect(),Ke=Ie(ye(Ye.placement)),It=Ke==="y"?Ne:pt,to=Ke==="y"?k.left+k.right:k.top+k.bottom;return{offset:It/2+to/2}})}},[ie,l,v,k,_]);P==="shift"||_==="shift"||i==="center"?we.push($t,sn):we.push(sn,$t),we.push(Qr({...ie,apply({elements:{floating:te},availableWidth:Ce,availableHeight:Ye,rects:Ne}){if(!C.current)return;let pt=te.style;pt.setProperty("--available-width",`${Ce}px`),pt.setProperty("--available-height",`${Ye}px`);let Ke=ce(te).devicePixelRatio||1,{x:It,y:to,width:pn,height:pr}=Ne.reference,mr=(Math.round((It+pn)*Ke)-Math.round(It*Ke))/Ke,gr=(Math.round((to+pr)*Ke)-Math.round(to*Ke))/Ke;pt.setProperty("--anchor-width",`${mr}px`),pt.setProperty("--anchor-height",`${gr}px`)}}),Xc(()=>({element:q.current||be(q.current).createElement("div"),padding:c,offsetParent:"floating"}),[c]),{name:"transformOrigin",fn(te){let{elements:Ce,middlewareData:Ye,placement:Ne,rects:pt,y:Ke}=te,It=ye(Ne),to=Ie(It),pn=q.current,pr=Ye.arrow?.x||0,mr=Ye.arrow?.y||0,gr=pn?.clientWidth||0,Hu=pn?.clientHeight||0,br=pr+gr/2,As=mr+Hu/2,ju=Math.abs(Ye.shift?.y||0),Vu=pt.reference.height/2,ko=typeof r=="function"?r(Zc(te,n,A)):r,Gu=ju>ko,Yu={top:`${br}px calc(100% + ${ko}px)`,bottom:`${br}px ${-ko}px`,left:`calc(100% + ${ko}px) ${As}px`,right:`${-ko}px ${As}px`}[It],Fu=`${br}px ${pt.reference.y+Vu-Ke}px`;return Ce.floating.style.setProperty("--transform-origin",Lt&&to==="y"&&Gu?Fu:Yu),{}}},Uc,E),j(()=>{!f&&p&&p.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[f,p]);let Mt=Ve.useMemo(()=>({elementResize:!u&&typeof ResizeObserver<"u",layoutShift:!u&&typeof IntersectionObserver<"u"}),[u]),{refs:ht,elements:At,x:an,y:cn,middlewareData:pe,update:eo,placement:N,context:H,isPositioned:le,floatingStyles:xe}=ii({rootContext:p,open:m?f:void 0,placement:T,middleware:we,strategy:o,whileElementsMounted:m?void 0:(...te)=>Vo(...te,Mt),nodeId:b,externalTree:y}),{sideX:wt,sideY:To}=pe.adaptiveOrigin||qo,ut=le?o:"fixed",ln=Ve.useMemo(()=>{let te=E?{position:ut,[wt]:an,[To]:cn}:{position:ut,...xe};return le||(te.opacity=0),te},[E,ut,wt,an,To,cn,xe,le]),Nt=Ve.useRef(null);j(()=>{if(!f)return;let te=M.current,Ce=typeof te=="function"?te():te,Ne=(Qc(Ce)?Ce.current:Ce)||null||null;Ne!==Nt.current&&(ht.setPositionReference(Ne),Nt.current=Ne)},[f,ht,B,M]),Ve.useEffect(()=>{if(!f)return;let te=M.current;typeof te!="function"&&Qc(te)&&te.current!==Nt.current&&(ht.setPositionReference(te.current),Nt.current=te.current)},[f,ht,B,M]),Ve.useEffect(()=>{if(m&&f&&At.domReference&&At.floating)return Vo(At.domReference,At.floating,eo,Mt)},[m,f,At,eo,Mt]);let me=ye(N),ft=Jc(n,me,A),Co=ot(N)||"center",dn=!!pe.hide?.referenceHidden;j(()=>{x&&f&&le&&R(me)},[x,f,le,me]);let un=Ve.useMemo(()=>({position:"absolute",top:pe.arrow?.y,left:pe.arrow?.x}),[pe.arrow]),fn=pe.arrow?.centerOffset!==0;return Ve.useMemo(()=>({positionerStyles:ln,arrowStyles:un,arrowRef:q,arrowUncentered:fn,side:ft,align:Co,physicalSide:me,anchorHidden:dn,refs:ht,context:H,isPositioned:le,update:eo}),[ln,un,q,fn,ft,Co,me,dn,ht,H,le,eo])}function Qc(e){return e!=null&&"current"in e}function Wn(e){return e==="starting"?Ba:ge}function el(e,t,{styles:o,transitionStatus:n,props:r,refs:i,hidden:s,inert:a=!1}){let d={...o};return a&&(d.pointerEvents="none"),Re("div",e,{state:t,ref:i,props:[{role:"presentation",hidden:s,style:d},Wn(n),r],stateAttributesMapping:wo})}var tl=g(D(),1);var gi=tl.forwardRef(function(t,o){let{render:n,className:r,disabled:i=!1,focusableWhenDisabled:s=!1,nativeButton:a=!0,style:d,...l}=t,{getButtonProps:c,buttonRef:u}=ha({disabled:i,focusableWhenDisabled:s,native:a});return Re("button",t,{state:{disabled:i},ref:[o,u],props:[l,c]})});var Pe=g(D(),1),al=g(xt(),1);var ol=g(D(),1);function nl(e){let[t,o]=ol.useState({current:e,previous:null});return e!==t.current&&o({current:e,previous:t.current}),t.previous}var Ut=g(D(),1);function bi(e){let t=Se(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=ue(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n;return(Pt(o)!==i||Pt(n)!==s)&&(o=i,n=s),{width:o,height:n}}var Pm=()=>!0;function il(e){let{popupElement:t,positionerElement:o,content:n,mounted:r,enabled:i=Pm,onMeasureLayout:s,onMeasureLayoutComplete:a,side:d,direction:l}=e,c=so(t,!0,!1),u=io(),m=Ut.useRef(null),p=Ut.useRef(null),f=Ut.useRef(!0),h=Ut.useRef(mt),v=G(s),b=G(a),E=Ut.useMemo(()=>{let x=d==="top",y=d==="left";return l==="rtl"?(x=x||d==="inline-end",y=y||d==="inline-end"):(x=x||d==="inline-start",y=y||d==="inline-start"),x?{position:"absolute",[d==="top"?"bottom":"top"]:"0",[y?"right":"left"]:"0"}:ge},[d,l]);j(()=>{if(!r||!i()||typeof ResizeObserver!="function"){h.current=mt,f.current=!0,m.current=null,p.current=null;return}if(!t||!o)return;h.current=rl(t,E);let x=new ResizeObserver(M=>{let C=M[0];C&&(p.current={width:Math.ceil(C.borderBoxSize[0].inlineSize),height:Math.ceil(C.borderBoxSize[0].blockSize)})});x.observe(t),Xn(t,"auto");let y=Un(t,"position","static"),w=Un(t,"transform","none"),R=Un(t,"scale","1"),P=rl(o,{"--available-width":"max-content","--available-height":"max-content"});function _(){y(),w(),P()}function O(){_(),R()}if(v?.(),f.current||m.current===null){Wo(o,"max-content");let M=bi(t);return m.current=M,Wo(o,M),O(),b?.(null,M),f.current=!1,()=>{x.disconnect(),h.current(),h.current=mt}}Xn(t,"auto"),Wo(o,"max-content");let L=m.current??p.current,z=bi(t);if(m.current=z,!L)return Wo(o,z),O(),b?.(null,z),()=>{x.disconnect(),u.cancel(),h.current(),h.current=mt};Xn(t,L),O(),b?.(L,z),Wo(o,z);let B=new AbortController;return u.request(()=>{Xn(t,z),c(()=>{t.style.setProperty("--popup-width","auto"),t.style.setProperty("--popup-height","auto")},B.signal)}),()=>{x.disconnect(),B.abort(),u.cancel(),h.current(),h.current=mt}},[n,t,o,c,u,i,r,v,b,E])}function Un(e,t,o){let n=e.style.getPropertyValue(t);return e.style.setProperty(t,o),()=>{e.style.setProperty(t,n)}}function rl(e,t){let o=[];for(let[n,r]of Object.entries(t))o.push(Un(e,n,r));return o.length?()=>{o.forEach(n=>n())}:mt}function Xn(e,t){let o=t==="auto"?"auto":`${t.width}px`,n=t==="auto"?"auto":`${t.height}px`;e.style.setProperty("--popup-width",o),e.style.setProperty("--popup-height",n)}function Wo(e,t){let o=t==="max-content"?"max-content":`${t.width}px`,n=t==="max-content"?"max-content":`${t.height}px`;e.style.setProperty("--positioner-width",o),e.style.setProperty("--positioner-height",n)}var vo=g(K(),1);function cl(e){let{store:t,side:o,cssVars:n,children:r}=e,i=oo(),s=t.useState("activeTriggerElement"),a=t.useState("activeTriggerId"),d=t.useState("open"),l=t.useState("payload"),c=t.useState("mounted"),u=t.useState("popupElement"),m=t.useState("positionerElement"),p=nl(d?s:null),f=Cm(a,l),h=Pe.useRef(null),[v,b]=Pe.useState(null),[E,x]=Pe.useState(null),y=Pe.useRef(null),w=Pe.useRef(null),R=so(y,!0,!1),P=io(),[_,O]=Pe.useState(null),[L,z]=Pe.useState(!1);j(()=>(t.set("hasViewport",!0),()=>{t.set("hasViewport",!1)}),[t]);let B=G(()=>{y.current?.style.setProperty("animation","none"),y.current?.style.setProperty("transition","none"),w.current?.style.setProperty("display","none")}),M=G(T=>{y.current?.style.removeProperty("animation"),y.current?.style.removeProperty("transition"),w.current?.style.removeProperty("display"),T&&O(T)}),C=Pe.useRef(null);j(()=>{if(s&&p&&s!==p&&C.current!==s&&h.current){b(h.current),z(!0);let T=Tm(p,s);x(T),P.request(()=>{al.flushSync(()=>{z(!1)}),R(()=>{b(null),O(null),h.current=null})}),C.current=s}},[s,p,v,R,P]),j(()=>{let T=y.current;if(!T)return;let k=be(T).createElement("div");for(let V of Array.from(T.childNodes))k.appendChild(V.cloneNode(!0));h.current=k});let S=v!=null,A;S?A=(0,vo.jsxs)(Pe.Fragment,{children:[(0,vo.jsx)("div",{"data-previous":!0,inert:Wc(!0),ref:w,style:{..._?{[n.popupWidth]:`${_.width}px`,[n.popupHeight]:`${_.height}px`}:null,position:"absolute"},"data-ending-style":L?void 0:""},"previous"),(0,vo.jsx)("div",{"data-current":!0,ref:y,"data-starting-style":L?"":void 0,children:r},f)]}):A=(0,vo.jsx)("div",{"data-current":!0,ref:y,children:r},f),j(()=>{let T=w.current;!T||!v||T.replaceChildren(...Array.from(v.childNodes))},[v]),il({popupElement:u,positionerElement:m,mounted:c,content:l,onMeasureLayout:B,onMeasureLayoutComplete:M,side:o,direction:i});let I={activationDirection:Em(E),transitioning:S};return{children:A,state:I}}function Em(e){if(e)return`${sl(e.horizontal,5,"right","left")} ${sl(e.vertical,5,"down","up")}`}function sl(e,t,o,n){return e>t?o:e<-t?n:""}function Tm(e,t){let o=e.getBoundingClientRect(),n=t.getBoundingClientRect(),r={x:o.left+o.width/2,y:o.top+o.height/2},i={x:n.left+n.width/2,y:n.top+n.height/2};return{horizontal:i.x-r.x,vertical:i.y-r.y}}function Cm(e,t){let[o,n]=Pe.useState(0),r=Pe.useRef(e),i=Pe.useRef(t),s=Pe.useRef(!1);return j(()=>{let a=r.current,d=i.current,l=e!==a,c=t!==d;l?(n(u=>u+1),s.current=!c):s.current&&c&&(n(u=>u+1),s.current=!1),r.current=e,i.current=t},[e,t]),`${e??"current"}-${o}`}var Kn=g(D(),1),ll=g(xt(),1);var dl=g(K(),1),ul=Kn.forwardRef(function(t,o){let{children:n,container:r,className:i,render:s,style:a,...d}=t,{portalNode:l,portalSubtree:c}=jr({container:r,ref:o,componentProps:t,elementProps:d});return!c&&!l?null:(0,dl.jsxs)(Kn.Fragment,{children:[c,l&&ll.createPortal(n,l)]})});var Be={};wr(Be,{Arrow:()=>Cl,Handle:()=>Xo,Popup:()=>El,Portal:()=>_l,Positioner:()=>Sl,Provider:()=>kl,Root:()=>gl,Trigger:()=>vl,Viewport:()=>Ml,createHandle:()=>Al});var ct=g(D(),1);var Zn=g(D(),1),hi=Zn.createContext(void 0);function qe(e){let t=Zn.useContext(hi);if(t===void 0&&!e)throw new Error(_e(72));return t}var fl=g(D(),1),pl=g(xt(),1);var km={...jc,disabled:Z(e=>e.disabled),instantType:Z(e=>e.instantType),isInstantPhase:Z(e=>e.isInstantPhase),trackCursorAxis:Z(e=>e.trackCursorAxis),disableHoverablePopup:Z(e=>e.disableHoverablePopup),lastOpenChangeReason:Z(e=>e.openChangeReason),closeOnClick:Z(e=>e.closeOnClick),closeDelay:Z(e=>e.closeDelay),hasViewport:Z(e=>e.hasViewport)},yo=class e extends bo{constructor(t){super({...Om(),...t},{popupRef:fl.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:new Ct},km)}setOpen=(t,o)=>{let n=o.reason,r=n===W.triggerHover,i=t&&n===W.triggerFocus,s=!t&&(n===W.triggerPress||n===W.escapeKey);if(o.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},this.context.onOpenChange?.(t,o),o.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(t,o);let a=()=>{let d={open:t,openChangeReason:n};i?d.instantType="focus":s?d.instantType="dismiss":n===W.triggerHover&&(d.instantType=void 0);let l=o.trigger?.id??null;(l||t)&&(d.activeTriggerId=l,d.activeTriggerElement=o.trigger??null),this.update(d)};r?pl.flushSync(a):a()};static useStore(t,o){let n=de(()=>new e(o)).current,r=t??n,i=si({popupStore:r,onOpenChange:r.setOpen});return r.state.floatingRootContext=i,r}};function Om(){return{...Hc(),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,hasViewport:!1}}var ml=g(K(),1),gl=ni(function(t){let{disabled:o=!1,defaultOpen:n=!1,open:r,disableHoverablePopup:i=!1,trackCursorAxis:s="none",actionsRef:a,onOpenChange:d,onOpenChangeComplete:l,handle:c,triggerId:u,defaultTriggerId:m=null,children:p}=t,f=yo.useStore(c?.store,{open:n,openProp:r,activeTriggerId:m,triggerIdProp:u});Ia(()=>{r===void 0&&f.state.open===!1&&n===!0&&f.update({open:!0,activeTriggerId:m})}),f.useControlledProp("openProp",r),f.useControlledProp("triggerIdProp",u),f.useContextCallback("onOpenChange",d),f.useContextCallback("onOpenChangeComplete",l);let h=f.useState("open"),v=!o&&h,b=f.useState("activeTriggerId"),E=f.useState("payload");f.useSyncedValues({trackCursorAxis:s,disableHoverablePopup:i}),j(()=>{h&&o&&f.setOpen(!1,ee(W.disabled))},[h,o,f]),f.useSyncedValue("disabled",o),zc(f);let{forceUnmount:x,transitionStatus:y}=Dc(v,f),w=f.select("floatingRootContext"),R=f.useState("isInstantPhase"),P=f.useState("instantType"),_=f.useState("lastOpenChangeReason"),O=ct.useRef(null);j(()=>{y==="ending"&&_===W.none||y!=="ending"&&R?(P!=="delay"&&(O.current=P),f.set("instantType","delay")):O.current!==null&&(f.set("instantType",O.current),O.current=null)},[y,R,_,P,f]),j(()=>{v&&b==null&&f.set("payload",void 0)},[f,b,v]);let L=ct.useCallback(()=>{f.setOpen(!1,ee(W.imperativeAction))},[f]);ct.useImperativeHandle(a,()=>({unmount:x,close:L}),[x,L]);let z=Gr(w,{enabled:!o,referencePress:()=>f.select("closeOnClick")}),B=Vr(w,{enabled:!o&&s!=="none",axis:s==="none"?void 0:s}),{getReferenceProps:M,getFloatingProps:C,getTriggerProps:S}=fi([z,B]),A=ct.useMemo(()=>M(),[M]),I=ct.useMemo(()=>S(),[S]),T=ct.useMemo(()=>C(),[C]);return f.useSyncedValues({activeTriggerProps:A,inactiveTriggerProps:I,popupProps:T}),(0,ml.jsx)(hi.Provider,{value:f,children:typeof p=="function"?p({payload:E}):p})});var wl=g(D(),1);var Qn=g(D(),1),wi=Qn.createContext(void 0);function bl(){return Qn.useContext(wi)}var hl=(function(e){return e[e.popupOpen=Fo.popupOpen]="popupOpen",e.triggerDisabled="data-trigger-disabled",e})({});var vl=Mc(function(t,o){let{className:n,render:r,handle:i,payload:s,disabled:a,delay:d,closeOnClick:l=!0,closeDelay:c,id:u,style:m,...p}=t,f=qe(!0),h=i?.store??f;if(!h)throw new Error(_e(82));let v=ra(u),b=h.useState("isTriggerActive",v),E=h.useState("isOpenedByTrigger",v),x=h.useState("floatingRootContext"),y=wl.useRef(null),w=d??600,R=c??0,{registerTrigger:P,isMountedByThisTrigger:_}=Ic(v,y,h,{payload:s,closeOnClick:l,closeDelay:R}),O=bl(),{delayRef:L,isInstantPhase:z,hasProvider:B}=Hr(x,{open:E});h.useSyncedValue("isInstantPhase",z);let M=h.useState("disabled"),C=a??M,S=h.useState("trackCursorAxis"),A=h.useState("disableHoverablePopup"),I=ui(x,{enabled:!C,mouseOnly:!0,move:!1,handleClose:!A&&S!=="both"?pi():null,restMs(){let X=O?.delay,U=typeof L.current=="object"?L.current.open:void 0,ae=w;return B&&(U!==0?ae=d??X??w:ae=0),ae},delay(){let X=typeof L.current=="object"?L.current.close:void 0,U=R;return c==null&&B&&(U=X),{close:U}},triggerElementRef:y,isActiveTrigger:b,isClosing:()=>h.select("transitionStatus")==="ending"}),T=ci(x,{enabled:!C}).reference,k={open:E},V=h.useState("triggerProps",_);return Re("button",t,{state:k,ref:[o,P,y],props:[I,T,V,{onPointerDown(){h.set("closeOnClick",l)},id:v,[hl.triggerDisabled]:C?"":void 0},p],stateAttributesMapping:qc})});var xl=g(D(),1);var Jn=g(D(),1),vi=Jn.createContext(void 0);function yl(){let e=Jn.useContext(vi);if(e===void 0)throw new Error(_e(70));return e}var yi=g(K(),1),_l=xl.forwardRef(function(t,o){let{keepMounted:n=!1,...r}=t;return qe().useState("mounted")||n?(0,yi.jsx)(vi.Provider,{value:n,children:(0,yi.jsx)(ul,{ref:o,...r})}):null});var er=g(D(),1);var $n=g(D(),1),xi=$n.createContext(void 0);function xo(){let e=$n.useContext(xi);if(e===void 0)throw new Error(_e(71));return e}var Rl=g(K(),1),Sl=er.forwardRef(function(t,o){let{render:n,className:r,anchor:i,positionMethod:s="absolute",side:a="top",align:d="center",sideOffset:l=0,alignOffset:c=0,collisionBoundary:u="clipping-ancestors",collisionPadding:m=5,arrowPadding:p=5,sticky:f=!1,disableAnchorTracking:h=!1,collisionAvoidance:v=Ha,style:b,...E}=t,x=qe(),y=yl(),w=x.useState("open"),R=x.useState("mounted"),P=x.useState("trackCursorAxis"),_=x.useState("disableHoverablePopup"),O=x.useState("floatingRootContext"),L=x.useState("instantType"),z=x.useState("transitionStatus"),B=x.useState("hasViewport"),M=$c({anchor:i,positionMethod:s,floatingRootContext:O,mounted:R,side:a,sideOffset:l,align:d,alignOffset:c,collisionBoundary:u,collisionPadding:m,sticky:f,arrowPadding:p,disableAnchorTracking:h,keepMounted:y,collisionAvoidance:v,adaptiveOrigin:B?Kc:void 0}),C=er.useMemo(()=>({open:w,side:M.side,align:M.align,anchorHidden:M.anchorHidden,instant:P!=="none"?"tracking-cursor":L}),[w,M.side,M.align,M.anchorHidden,P,L]),S=el(t,C,{styles:M.positionerStyles,transitionStatus:z,props:E,refs:[o,x.useStateSetter("positionerElement")],hidden:!R,inert:!w||P==="both"||_});return(0,Rl.jsx)(xi.Provider,{value:M,children:S})});var Pl=g(D(),1);var Lm={...wo,...ca},El=Pl.forwardRef(function(t,o){let{className:n,render:r,style:i,...s}=t,a=qe(),{side:d,align:l}=xo(),c=a.useState("open"),u=a.useState("instantType"),m=a.useState("transitionStatus"),p=a.useState("popupProps"),f=a.useState("floatingRootContext");kn({open:c,ref:a.context.popupRef,onComplete(){c&&a.context.onOpenChangeComplete?.(!0)}});let h=a.useState("disabled"),v=a.useState("closeDelay");return di(f,{enabled:!h,closeDelay:v}),Re("div",t,{state:{open:c,side:d,align:l,instant:u,transitionStatus:m},ref:[o,a.context.popupRef,a.useStateSetter("popupElement")],props:[p,Wn(m),s],stateAttributesMapping:Lm})});var Tl=g(D(),1);var Cl=Tl.forwardRef(function(t,o){let{className:n,render:r,style:i,...s}=t,a=qe(),d=a.useState("open"),l=a.useState("instantType"),{arrowRef:c,side:u,align:m,arrowUncentered:p,arrowStyles:f}=xo();return Re("div",t,{state:{open:d,side:u,align:m,uncentered:p,instant:l},ref:[o,c],props:[{style:f,"aria-hidden":!0},s],stateAttributesMapping:wo})});var _i=g(D(),1);var Ri=g(K(),1),kl=function(t){let{delay:o,closeDelay:n,timeout:r=400}=t,i=_i.useMemo(()=>({delay:o,closeDelay:n}),[o,n]),s=_i.useMemo(()=>({open:o,close:n}),[o,n]);return(0,Ri.jsx)(wi.Provider,{value:i,children:(0,Ri.jsx)(Br,{delay:s,timeoutMs:r,children:t.children})})};var Ll=g(D(),1);var Ol=(function(e){return e.popupWidth="--popup-width",e.popupHeight="--popup-height",e})({});var Mm={activationDirection:e=>e?{"data-activation-direction":e}:null},Ml=Ll.forwardRef(function(t,o){let{render:n,className:r,style:i,children:s,...a}=t,d=qe(),l=xo(),c=d.useState("instantType"),{children:u,state:m}=cl({store:d,side:l.side,cssVars:Ol,children:s}),p={activationDirection:m.activationDirection,transitioning:m.transitioning,instant:c};return Re("div",t,{state:p,ref:o,props:[a,{children:u}],stateAttributesMapping:Mm})});var Xo=class{constructor(){this.store=new yo}open(t){let o=t?this.store.context.triggerElements.getById(t):void 0;if(t&&!o)throw new Error(_e(81,t));this.store.setOpen(!0,ee(W.imperativeAction,void 0,o))}close(){this.store.setOpen(!1,ee(W.imperativeAction,void 0,void 0))}get isOpen(){return this.store.state.open}};function Al(){return new Xo}function lt(e){return Re(e.defaultTagName??"div",e,e)}var zl=g(oe(),1),Si="data-wp-hash";function Pi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Nm(document)),e.__wpStyleRuntime}function Am(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Si}]`))if(o.getAttribute(Si)===t)return!0;return!1}function Dl(e,t,o){if(!e.head)return;let n=Pi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Am(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Si,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Nm(e){let t=Pi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Dl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Bl(e,t){let o=Pi();o.styles.set(e,t);for(let n of o.documents.keys())Dl(n,e,t)}typeof process>"u",Bl("0c8601dd83",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');var Nl={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",Bl("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Il={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},We=(0,zl.forwardRef)(function({variant:t="body-md",render:o,className:n,...r},i){return lt({render:o,defaultTagName:"span",ref:i,props:ke(r,{className:Q(Nl.text,Il.heading,Il.p,Nl[t],n)})})});var Gl=g(K(),1),Ei="data-wp-hash";function Ti(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&zm(document)),e.__wpStyleRuntime}function Im(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ei}]`))if(o.getAttribute(Ei)===t)return!0;return!1}function Vl(e,t,o){if(!e.head)return;let n=Ti(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Im(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ei,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function zm(e){let t=Ti();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Vl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Dm(e,t){let o=Ti();o.styles.set(e,t);for(let n of o.documents.keys())Vl(n,e,t)}typeof process>"u",Dm("d6a685e1aa","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}");var Hl={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},Ci=(0,jl.forwardRef)(function({intent:t="none",className:o,...n},r){return(0,Gl.jsx)(We,{ref:r,className:Q(Hl.badge,Hl[`is-${t}-intent`],o),...n,variant:"body-sm"})});var tr=g(oe(),1),Yl=g(vt(),1),ql=g(K(),1);import{speak as Bm}from"@wordpress/a11y";var ki="data-wp-hash";function Oi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&jm(document)),e.__wpStyleRuntime}function Hm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ki}]`))if(o.getAttribute(ki)===t)return!0;return!1}function Fl(e,t,o){if(!e.head)return;let n=Oi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Hm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ki,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function jm(e){let t=Oi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Fl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function or(e,t){let o=Oi();o.styles.set(e,t);for(let n of o.documents.keys())Fl(n,e,t)}typeof process>"u",or("26d90ece4e",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);cursor:var(--wpds-cursor-control,pointer);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);height:var(--wp-ui-button-height);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);min-width:var(--wp-ui-button-min-width);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-decoration:none;@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:#0000;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:#0000;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:#0000;&:not([data-disabled]):is(:hover,:active,:focus){color:#0000}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}[aria-pressed=true].ad0619a3217c6a5b__is-minimal.e722a8f96726aa99__is-neutral{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0)}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}');var Uo={button:"_97b0fc33c028be1a__button","is-unstyled":"abbb272e2ce49bd6__is-unstyled","is-loading":"_914b42f315c0e580__is-loading","is-small":"_908205475f9f2a92__is-small","is-brand":"dd460c965226cc77__is-brand","is-outline":"_62d5a778b7b258ee__is-outline","is-minimal":"ad0619a3217c6a5b__is-minimal","is-neutral":"e722a8f96726aa99__is-neutral","is-solid":"b50b3358c5fb4d0b__is-solid","is-compact":"cf59cf1b69629838__is-compact","loading-animation":"_5a1d53da6f830c8d__loading-animation"};typeof process>"u",or("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Vm={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",or("2a5ab8f3a7","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}");var Gm={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",or("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Ym={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Wl=(0,tr.forwardRef)(function({tone:t="brand",variant:o="solid",size:n="default",className:r,focusableWhenDisabled:i=!0,disabled:s,loading:a,loadingAnnouncement:d=(0,Yl.__)("Loading"),children:l,...c},u){let m=Q(Ym.button,Vm["box-sizing"],Gm["outset-ring--focus-except-active"],o!=="unstyled"&&Uo.button,Uo[`is-${t}`],Uo[`is-${o}`],Uo[`is-${n}`],a&&Uo["is-loading"],r);return(0,tr.useEffect)(()=>{a&&d&&Bm(d)},[a,d]),(0,ql.jsx)(gi,{ref:u,className:m,focusableWhenDisabled:i,disabled:s??a,...c,children:l})});var Ql=g(oe(),1);var Ul=g(oe(),1),Kl=g(Kt(),1),Zl=g(K(),1),Zt=(0,Ul.forwardRef)(function({icon:t,size:o=24,...n},r){return(0,Zl.jsx)(Kl.SVG,{ref:r,fill:"currentColor",...t.props,...n,width:o,height:o})});var Jl=g(K(),1),Li=(0,Ql.forwardRef)(function({icon:t,...o},n){return(0,Jl.jsx)(Zt,{ref:n,icon:t,viewBox:"4 4 16 16",size:16,...o})});Li.displayName="Button.Icon";var nr=Object.assign(Wl,{Icon:Li});var rr=g(Kt(),1),Mi=g(K(),1),Ai=(0,Mi.jsx)(rr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Mi.jsx)(rr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})});var ir=g(Kt(),1),Ni=g(K(),1),Ii=(0,Ni.jsx)(ir.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ni.jsx)(ir.Path,{d:"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"})});var sr=g(Kt(),1),zi=g(K(),1),Di=(0,zi.jsx)(sr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,zi.jsx)(sr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})});var ar=g(Kt(),1),Bi=g(K(),1),Hi=(0,Bi.jsx)(ar.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bi.jsx)(ar.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})});var cr=g(Kt(),1),ji=g(K(),1),Vi=(0,ji.jsx)(cr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ji.jsx)(cr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"})});var td=g(oe(),1);function Gi(e,t,o){return(0,td.cloneElement)(e??t,{children:o})}var nd=g(Yi(),1),{lock:s4,unlock:rd}=(0,nd.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/ui");var id=g(oe(),1),Fi="data-wp-hash";function qi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&qm(document)),e.__wpStyleRuntime}function Fm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Fi}]`))if(o.getAttribute(Fi)===t)return!0;return!1}function sd(e,t,o){if(!e.head)return;let n=qi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Fm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Fi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function qm(e){let t=qi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)sd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Wm(e,t){let o=qi();o.styles.set(e,t);for(let n of o.documents.keys())sd(n,e,t)}typeof process>"u",Wm("b51ff41489","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");var Xm={stack:"_19ce0419607e1896__stack"},Um={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},_o=(0,id.forwardRef)(function({direction:t,gap:o,align:n,justify:r,wrap:i,render:s,...a},d){let l={gap:o&&Um[o],alignItems:n,justifyContent:r,flexDirection:t,flexWrap:i};return lt({render:s,ref:d,props:ke(a,{style:l,className:Xm.stack})})});var Rd=g(oe(),1);var gd=g(oe(),1),bd=g(ed(),1);var ad=g(oe(),1),cd=g(K(),1),ld=(0,ad.forwardRef)(function(t,o){return(0,cd.jsx)(Be.Portal,{ref:o,...t})});var dd=g(oe(),1),pd=g(K(),1),Wi="data-wp-hash";function Xi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Zm(document)),e.__wpStyleRuntime}function Km(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Wi}]`))if(o.getAttribute(Wi)===t)return!0;return!1}function ud(e,t,o){if(!e.head)return;let n=Xi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Km(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Wi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Zm(e){let t=Xi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ud(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function fd(e,t){let o=Xi();o.styles.set(e,t);for(let n of o.documents.keys())ud(n,e,t)}typeof process>"u",fd("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Qm={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",fd("8293efbb49",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}');var Jm={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},md=(0,dd.forwardRef)(function({align:t="center",className:o,side:n="top",sideOffset:r=4,...i},s){return(0,pd.jsx)(Be.Positioner,{ref:s,align:t,side:n,sideOffset:r,...i,className:Q(Qm["box-sizing"],Jm.positioner,o)})});var Ko=g(K(),1),Ui="data-wp-hash";function Ki(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&eg(document)),e.__wpStyleRuntime}function $m(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ui}]`))if(o.getAttribute(Ui)===t)return!0;return!1}function hd(e,t,o){if(!e.head)return;let n=Ki(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if($m(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ui,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function eg(e){let t=Ki();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)hd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function tg(e,t){let o=Ki();o.styles.set(e,t);for(let n of o.documents.keys())hd(n,e,t)}typeof process>"u",tg("8293efbb49",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}');var og={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},ng=rd(bd.privateApis).ThemeProvider,Zi=(0,gd.forwardRef)(function({portal:t,positioner:o,children:n,className:r,...i},s){let a=(0,Ko.jsx)(ng,{color:{bg:"#1e1e1e"},children:(0,Ko.jsx)(Be.Popup,{ref:s,className:Q(og.popup,r),...i,children:n})}),d=Gi(o,(0,Ko.jsx)(md,{}),a);return Gi(t,(0,Ko.jsx)(ld,{}),d)});var wd=g(oe(),1),vd=g(K(),1),Qi=(0,wd.forwardRef)(function(t,o){return(0,vd.jsx)(Be.Trigger,{ref:o,...t})});var yd=g(K(),1);function Ji(e){return(0,yd.jsx)(Be.Root,{...e})}var xd=g(K(),1);function $i({...e}){return(0,xd.jsx)(Be.Provider,{...e})}var Xe=g(K(),1),es="data-wp-hash";function ts(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&sg(document)),e.__wpStyleRuntime}function ig(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${es}]`))if(o.getAttribute(es)===t)return!0;return!1}function Sd(e,t,o){if(!e.head)return;let n=ts(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(ig(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(es,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function sg(e){let t=ts();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Sd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function ag(e,t){let o=ts();o.styles.set(e,t);for(let n of o.documents.keys())Sd(n,e,t)}typeof process>"u",ag("358a2a646a","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}");var _d={"icon-button":"_28cfdc260e755391__icon-button",icon:"f1c70d719989a85a__icon"},os=(0,Rd.forwardRef)(function({label:t,className:o,children:n,disabled:r,focusableWhenDisabled:i,icon:s,size:a,shortcut:d,positioner:l,...c},u){let m=Q(_d["icon-button"],o);return(0,Xe.jsx)($i,{delay:0,children:(0,Xe.jsxs)(Ji,{children:[(0,Xe.jsx)(Qi,{ref:u,disabled:r&&!i,render:(0,Xe.jsx)(nr,{...c,size:a,"aria-label":t,"aria-keyshortcuts":d?.ariaKeyShortcut,disabled:r,focusableWhenDisabled:i}),className:m,children:(0,Xe.jsx)(Zt,{icon:s,size:24,className:_d.icon})}),(0,Xe.jsxs)(Zi,{positioner:l,children:[t,d&&(0,Xe.jsxs)(Xe.Fragment,{children:[" ",(0,Xe.jsx)("span",{"aria-hidden":"true",children:d.displayShortcut})]})]})]})})});var Pd=g(oe(),1),Ed=g(vt(),1),Ro=g(K(),1),ns="data-wp-hash";function rs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&lg(document)),e.__wpStyleRuntime}function cg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ns}]`))if(o.getAttribute(ns)===t)return!0;return!1}function Td(e,t,o){if(!e.head)return;let n=rs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(cg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ns,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function lg(e){let t=rs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Td(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function dr(e,t){let o=rs();o.styles.set(e,t);for(let n of o.documents.keys())Td(n,e,t)}typeof process>"u",dr("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var dg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",dr("2a5ab8f3a7","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}");var ug={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",dr("90a23568f8",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}');var lr={link:"d4250949359b05ce__link","is-brand":"c6055659b8e2cd2c__is-brand","is-neutral":"_92e0dfcaeee15b88__is-neutral","is-unstyled":"cf122a9bf1035d42__is-unstyled","link-icon":"_0cb411afac4c86c7__link-icon"};typeof process>"u",dr("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var fg={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Zo=(0,Pd.forwardRef)(function({children:t,variant:o="default",tone:n="brand",openInNewTab:r=!1,render:i,className:s,...a},d){return lt({render:i,defaultTagName:"a",ref:d,props:ke(a,{className:Q(fg.a,dg["box-sizing"],ug["outset-ring--focus"],o!=="unstyled"&&lr.link,o!=="unstyled"&&lr[`is-${n}`],o==="unstyled"&&lr["is-unstyled"],s),target:r?"_blank":void 0,children:(0,Ro.jsxs)(Ro.Fragment,{children:[t,r&&(0,Ro.jsx)("span",{className:lr["link-icon"],role:"img","aria-label":(0,Ed.__)("(opens in a new tab)")})]})})})});var Qo={};wr(Qo,{ActionButton:()=>Qd,ActionLink:()=>eu,Actions:()=>Vd,CloseIcon:()=>Wd,Description:()=>Bd,Root:()=>Od,Title:()=>Nd});var So=g(oe(),1);import{speak as pg}from"@wordpress/a11y";var Po=g(K(),1),ss="data-wp-hash";function as(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&gg(document)),e.__wpStyleRuntime}function mg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ss}]`))if(o.getAttribute(ss)===t)return!0;return!1}function Cd(e,t,o){if(!e.head)return;let n=as(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(mg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function gg(e){let t=as();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Cd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function kd(e,t){let o=as();o.styles.set(e,t);for(let n of o.documents.keys())Cd(n,e,t)}typeof process>"u",kd("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var bg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",kd("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var is={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},hg={neutral:null,info:Hi,warning:Ai,success:Vi,error:Di};function wg(e){return e==="error"?"assertive":"polite"}function vg(e){if(e){if(typeof e=="string")return e;try{return(0,So.renderToString)(e)}catch{return}}}function yg(e,t){let o=vg(e);(0,So.useEffect)(()=>{o&&pg(o,t)},[o,t])}var Od=(0,So.forwardRef)(function({intent:t="neutral",children:o,icon:n,spokenMessage:r=o,politeness:i=wg(t),render:s,...a},d){yg(r,i);let l=n===null?null:n??hg[t],c=Q(is.notice,is[`is-${t}`],bg["box-sizing"]);return lt({defaultTagName:"div",render:s,ref:d,props:ke({className:c,children:(0,Po.jsxs)(Po.Fragment,{children:[o,l&&(0,Po.jsx)(Zt,{className:is.icon,icon:l})]})},a)})});var Ld=g(oe(),1);var Ad=g(K(),1),cs="data-wp-hash";function ls(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&_g(document)),e.__wpStyleRuntime}function xg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${cs}]`))if(o.getAttribute(cs)===t)return!0;return!1}function Md(e,t,o){if(!e.head)return;let n=ls(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(xg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(cs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function _g(e){let t=ls();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Md(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Rg(e,t){let o=ls();o.styles.set(e,t);for(let n of o.documents.keys())Md(n,e,t)}typeof process>"u",Rg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Sg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Nd=(0,Ld.forwardRef)(function({className:t,...o},n){return(0,Ad.jsx)(We,{ref:n,variant:"heading-md",className:Q(Sg.title,t),...o})});var Id=g(oe(),1);var Dd=g(K(),1),ds="data-wp-hash";function us(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Eg(document)),e.__wpStyleRuntime}function Pg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ds}]`))if(o.getAttribute(ds)===t)return!0;return!1}function zd(e,t,o){if(!e.head)return;let n=us(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Pg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ds,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Eg(e){let t=us();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)zd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Tg(e,t){let o=us();o.styles.set(e,t);for(let n of o.documents.keys())zd(n,e,t)}typeof process>"u",Tg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Cg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Bd=(0,Id.forwardRef)(function({className:t,...o},n){return(0,Dd.jsx)(We,{ref:n,variant:"body-md",className:Q(Cg.description,t),...o})});var Hd=g(oe(),1);var fs="data-wp-hash";function ps(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Og(document)),e.__wpStyleRuntime}function kg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${fs}]`))if(o.getAttribute(fs)===t)return!0;return!1}function jd(e,t,o){if(!e.head)return;let n=ps(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(kg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(fs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Og(e){let t=ps();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)jd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Lg(e,t){let o=ps();o.styles.set(e,t);for(let n of o.documents.keys())jd(n,e,t)}typeof process>"u",Lg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Mg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Vd=(0,Hd.forwardRef)(function({render:t,...o},n){return lt({defaultTagName:"div",render:t,ref:n,props:ke({className:Mg.actions},o)})});var Gd=g(oe(),1),Yd=g(vt(),1);var qd=g(K(),1),ms="data-wp-hash";function gs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Ng(document)),e.__wpStyleRuntime}function Ag(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ms}]`))if(o.getAttribute(ms)===t)return!0;return!1}function Fd(e,t,o){if(!e.head)return;let n=gs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Ag(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ms,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Ng(e){let t=gs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Fd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Ig(e,t){let o=gs();o.styles.set(e,t);for(let n of o.documents.keys())Fd(n,e,t)}typeof process>"u",Ig("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var zg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Wd=(0,Gd.forwardRef)(function({className:t,icon:o=Ii,label:n=(0,Yd.__)("Dismiss"),...r},i){return(0,qd.jsx)(os,{...r,ref:i,className:Q(zg["close-icon"],t),variant:"minimal",size:"small",tone:"neutral",icon:o,label:n})});var Ud=g(oe(),1);var Zd=g(K(),1),bs="data-wp-hash";function hs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Bg(document)),e.__wpStyleRuntime}function Dg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${bs}]`))if(o.getAttribute(bs)===t)return!0;return!1}function Kd(e,t,o){if(!e.head)return;let n=hs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Dg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(bs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Bg(e){let t=hs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Kd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Hg(e,t){let o=hs();o.styles.set(e,t);for(let n of o.documents.keys())Kd(n,e,t)}typeof process>"u",Hg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Xd={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Qd=(0,Ud.forwardRef)(function({className:t,loading:o,loadingAnnouncement:n,variant:r,...i},s){return(0,Zd.jsx)(nr,{...i,...o!==void 0?{loading:o,loadingAnnouncement:n??""}:{},ref:s,size:"compact",tone:"neutral",variant:r,className:Q(Xd["action-button"],Xd[`is-action-button-${r}`],t)})});var Jd=g(oe(),1);var vs=g(K(),1),ws="data-wp-hash";function ys(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Vg(document)),e.__wpStyleRuntime}function jg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ws}]`))if(o.getAttribute(ws)===t)return!0;return!1}function $d(e,t,o){if(!e.head)return;let n=ys(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(jg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ws,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Vg(e){let t=ys();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)$d(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Gg(e,t){let o=ys();o.styles.set(e,t);for(let n of o.documents.keys())$d(n,e,t)}typeof process>"u",Gg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Yg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},eu=(0,Jd.forwardRef)(function({className:t,render:o,...n},r){return(0,vs.jsx)(We,{ref:r,className:Q(Yg["action-link"],t),...n,variant:"body-md",render:(0,vs.jsx)(Zo,{tone:"neutral",variant:"default",render:o})})});var tu=g(oe(),1),ou=g(K(),1),nu=(0,tu.forwardRef)(({children:e,className:t,ariaLabel:o,as:n="div",...r},i)=>(0,ou.jsx)(n,{ref:i,className:Q("admin-ui-navigable-region",t),"aria-label":o,role:"region",tabIndex:"-1",...r,children:e}));nu.displayName="NavigableRegion";var ru=nu;var su=g(Jo(),1),{Fill:au,Slot:cu}=(0,su.createSlotFill)("SidebarToggle");var Ue=g(K(),1),xs="data-wp-hash";function _s(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&qg(document)),e.__wpStyleRuntime}function Fg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${xs}]`))if(o.getAttribute(xs)===t)return!0;return!1}function lu(e,t,o){if(!e.head)return;let n=_s(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Fg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(xs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function qg(e){let t=_s();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)lu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Wg(e,t){let o=_s();o.styles.set(e,t);for(let n of o.documents.keys())lu(n,e,t)}typeof process>"u",Wg("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Qt={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function du({headingLevel:e=1,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:s,showSidebarToggle:a=!0}){let d=`h${e}`;return(0,Ue.jsxs)(_o,{direction:"column",className:Qt.header,children:[(0,Ue.jsxs)(_o,{className:Qt["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Ue.jsxs)(_o,{direction:"row",gap:"sm",align:"center",justify:"start",children:[a&&(0,Ue.jsx)(cu,{bubblesVirtually:!0,className:Qt["sidebar-toggle-slot"]}),n&&(0,Ue.jsx)("div",{className:Qt["header-visual"],"aria-hidden":"true",children:n}),r&&(0,Ue.jsx)(We,{className:Qt["header-title"],render:(0,Ue.jsx)(d,{}),variant:"heading-lg",children:r}),t,o]}),s&&(0,Ue.jsx)(_o,{align:"center",className:Qt["header-actions"],direction:"row",gap:"sm",children:s})]}),i&&(0,Ue.jsx)(We,{render:(0,Ue.jsx)("p",{}),variant:"body-md",className:Qt["header-subtitle"],children:i})]})}var $o=g(K(),1),Ss="data-wp-hash";function Ps(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Ug(document)),e.__wpStyleRuntime}function Xg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ss}]`))if(o.getAttribute(Ss)===t)return!0;return!1}function uu(e,t,o){if(!e.head)return;let n=Ps(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Xg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Ug(e){let t=Ps();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)uu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Kg(e,t){let o=Ps();o.styles.set(e,t);for(let n of o.documents.keys())uu(n,e,t)}typeof process>"u",Kg("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Rs={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function fu({headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,children:s,className:a,actions:d,ariaLabel:l,hasPadding:c=!1,showSidebarToggle:u=!0}){let m=Q(Rs.page,a);return(0,$o.jsxs)(ru,{className:m,ariaLabel:l??(typeof r=="string"?r:""),children:[(r||t||o||d||n)&&(0,$o.jsx)(du,{headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:d,showSidebarToggle:u}),c?(0,$o.jsx)("div",{className:Q(Rs.content,Rs["has-padding"]),children:s}):s]})}fu.SidebarToggleFill=au;var Es=fu;var it=g(Jo()),zu=g(en()),Du=g(oe()),bt=g(vt()),Bu=g(ur());import{privateApis as u0}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='f2df357a8c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","f2df357a8c"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:145px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var nn=g(Jo()),Ls=g(ur()),rn=g(en()),dt=g(oe()),Ge=g(vt()),Mu=g(Ts()),Au=g(hu());var fr=g(Jo()),Eu=g(oe()),Tu=g(en()),Jt=g(vt());import{__experimentalRegisterConnector as Zg,__experimentalConnectorItem as Qg,__experimentalDefaultConnectorSettings as Jg,privateApis as $g}from"@wordpress/connectors";var wu=g(Yi()),{lock:Q_,unlock:Eo}=(0,wu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Cs=g(ur()),on=g(en()),tn=g(oe()),se=g(vt()),vu=g(Ts());function yu({file:e,settingName:t,connectorName:o,isInstalled:n,isActivated:r,keySource:i="none",initialIsConnected:s=!1}){let[a,d]=(0,tn.useState)(!1),[l,c]=(0,tn.useState)(!1),[u,m]=(0,tn.useState)(s),[p,f]=(0,tn.useState)(null),h=e?.replace(/\.php$/,""),v=h?.includes("/")?h.split("/")[0]:h,{derivedPluginStatus:b,canManagePlugins:E,currentApiKey:x,canInstallPlugins:y}=(0,on.useSelect)(T=>{let k=T(Cs.store),F=k.getEntityRecord("root","site")?.[t]??"",X=!!k.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:k.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:F,canInstallPlugins:X};let U=k.getEntityRecord("root","plugin",h);if(!k.hasFinishedResolution("getEntityRecord",["root","plugin",h]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:F,canInstallPlugins:X};if(U)return{derivedPluginStatus:U.status==="active"||U.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:F,canInstallPlugins:X};let ie="not-installed";return r?ie="active":n&&(ie="inactive"),{derivedPluginStatus:ie,canManagePlugins:!1,currentApiKey:F,canInstallPlugins:X}},[h,t,n,r]),w=p??b,R=E,P=w==="active"&&u||p==="active"&&!!x,{saveEntityRecord:_,invalidateResolution:O}=(0,on.useDispatch)(Cs.store),{createSuccessNotice:L,createErrorNotice:z}=(0,on.useDispatch)(vu.store),B=async()=>{if(v){c(!0);try{await _("root","plugin",{slug:v,status:"active"},{throwOnError:!0}),f("active"),O("getEntityRecord",["root","site"]),d(!0),L((0,se.sprintf)((0,se.__)("Plugin for %s installed and activated successfully."),o),{id:"connector-plugin-install-success",type:"snackbar"})}catch{z((0,se.sprintf)((0,se.__)("Failed to install plugin for %s."),o),{id:"connector-plugin-install-error",type:"snackbar"})}finally{c(!1)}}},M=async()=>{if(e){c(!0);try{await _("root","plugin",{plugin:h,status:"active"},{throwOnError:!0}),f("active"),O("getEntityRecord",["root","site"]),d(!0),L((0,se.sprintf)((0,se.__)("Plugin for %s activated successfully."),o),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{z((0,se.sprintf)((0,se.__)("Failed to activate plugin for %s."),o),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{c(!1)}}};return{pluginStatus:w,canInstallPlugins:y,canActivatePlugins:R,isExpanded:a,setIsExpanded:d,isBusy:l,isConnected:P,currentApiKey:x,keySource:i,handleButtonClick:()=>{if(w==="not-installed"){if(y===!1)return;B()}else if(w==="inactive"){if(R===!1)return;M()}else d(!a)},getButtonLabel:()=>{if(l)return w==="not-installed"?(0,se.__)("Installing\u2026"):(0,se.__)("Activating\u2026");if(a)return(0,se.__)("Cancel");if(P)return(0,se.__)("Edit");switch(w){case"checking":return(0,se.__)("Checking\u2026");case"not-installed":return(0,se.__)("Install");case"inactive":return(0,se.__)("Activate");case"active":return(0,se.__)("Set up")}},saveApiKey:async T=>{let k=x;try{let X=(await _("root","site",{[t]:T},{throwOnError:!0}))?.[t];if(T&&(X===k||!X))throw new Error("It was not possible to connect to the provider using this key.");m(!0),L((0,se.sprintf)((0,se.__)("%s connected successfully."),o),{id:"connector-connect-success",type:"snackbar"})}catch(V){throw console.error("Failed to save API key:",V),V}},removeApiKey:async()=>{try{await _("root","site",{[t]:""},{throwOnError:!0}),m(!1),L((0,se.sprintf)((0,se.__)("%s disconnected."),o),{id:"connector-disconnect-success",type:"snackbar"})}catch(T){throw console.error("Failed to remove API key:",T),z((0,se.sprintf)((0,se.__)("Failed to disconnect %s."),o),{id:"connector-disconnect-error",type:"snackbar"}),T}}}}var xu=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),_u=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Ru=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Su=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),Pu=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:e0}=Eo($g);function Cu(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"{}")}catch{return{}}}function ks(){return Cu().connectors??{}}function ku(){return!!Cu().isFileModDisabled}var t0={google:Pu,openai:xu,anthropic:_u,akismet:Su};function o0(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let o=t0[e];return React.createElement(o||Ru,null)}var n0=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,Jt.__)("Connected")),r0=({slug:e})=>React.createElement(Zo,{href:(0,Jt.sprintf)((0,Jt.__)("https://wordpress.org/plugins/%s/"),e),openInNewTab:!0},(0,Jt.__)("Learn more")),i0=()=>React.createElement(Ci,null,(0,Jt.__)("Not available"));function s0({name:e,description:t,logo:o,authentication:n,plugin:r}){let i=n?.method==="api_key"?n:void 0,s=i?.settingName??"",a=i?.credentialsUrl??void 0,d=r?.file?.replace(/\.php$/,""),l=d?.includes("/")?d.split("/")[0]:d,c;try{a&&(c=new URL(a).hostname)}catch{}let{pluginStatus:u,canInstallPlugins:m,canActivatePlugins:p,isExpanded:f,setIsExpanded:h,isBusy:v,isConnected:b,currentApiKey:E,keySource:x,handleButtonClick:y,getButtonLabel:w,saveApiKey:R,removeApiKey:P}=yu({file:r?.file,settingName:s,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:i?.keySource,initialIsConnected:i?.isConnected}),_=x==="env"||x==="constant",O=u==="not-installed"&&m===!1||u==="inactive"&&p===!1,L=!O,z=(0,Eu.useRef)(null);return React.createElement(Qg,{className:l?`connector-item--${l}`:void 0,logo:o,name:e,description:t,actionArea:React.createElement(fr.__experimentalHStack,{spacing:3,expanded:!1},b&&React.createElement(n0,null),O&&(l?React.createElement(r0,{slug:l}):React.createElement(i0,null)),L&&React.createElement(fr.Button,{ref:z,variant:f||b?"tertiary":"secondary",size:"compact",onClick:y,disabled:u==="checking"||v,isBusy:v,accessibleWhenDisabled:!0},w()))},f&&u==="active"&&React.createElement(Jg,{key:b?"connected":"setup",initialValue:_?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":E,helpUrl:a,helpLabel:c,readOnly:b||_,keySource:x,onRemove:_?void 0:async()=>{await P(),z.current?.focus()},onSave:async B=>{await R(B),h(!1),z.current?.focus()}}))}function Ou(){let e=ks(),t=o=>o.replace(/[^a-z0-9-_]/gi,"-");for(let[o,n]of Object.entries(e)){if(o==="akismet"&&!n.plugin?.isInstalled)continue;let{authentication:r}=n,i=t(o),s={name:n.name,description:n.description,type:n.type,logo:o0(o,n.logoUrl),authentication:r,plugin:n.plugin},a=Eo((0,Tu.select)(e0)).getConnector(i);r.method==="api_key"&&!a?.render&&(s.render=s0),Zg(i,s)}}function Lu(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var a0="ai",c0="ai-wp-admin",Os="ai/ai",l0="https://wordpress.org/plugins/ai/",Ms=Object.values(ks()),d0=Ms.some(e=>e.type==="ai_provider"),Nu=[];for(let e of Ms)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Nu.push(e.authentication.settingName);function Iu(){let[e,t]=(0,dt.useState)(!1),[o,n]=(0,dt.useState)(!1),r=(0,dt.useRef)(null);(0,dt.useEffect)(()=>{o&&r.current?.focus()},[o]);let i=(0,dt.useRef)(Ms.some(w=>w.type==="ai_provider"&&w.authentication.method==="api_key"&&w.authentication.isConnected)).current,{pluginStatus:s,canInstallPlugins:a,canManagePlugins:d,hasConnectedProvider:l}=(0,rn.useSelect)(w=>{let R=w(Ls.store),P=!!R.canUser("create",{kind:"root",name:"plugin"}),_=R.getEntityRecord("root","site"),O=i||Nu.some(B=>!!_?.[B]),L=R.getEntityRecord("root","plugin",Os);return R.hasFinishedResolution("getEntityRecord",["root","plugin",Os])?L?{pluginStatus:L.status==="active"?"active":"inactive",canInstallPlugins:P,canManagePlugins:!0,hasConnectedProvider:O}:{pluginStatus:"not-installed",canInstallPlugins:P,canManagePlugins:P,hasConnectedProvider:O}:{pluginStatus:"checking",canInstallPlugins:P,canManagePlugins:void 0,hasConnectedProvider:O}},[]),{saveEntityRecord:c}=(0,rn.useDispatch)(Ls.store),{createSuccessNotice:u,createErrorNotice:m}=(0,rn.useDispatch)(Mu.store),p=async()=>{t(!0);try{await c("root","plugin",{slug:a0,status:"active"},{throwOnError:!0}),n(!0),u((0,Ge.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{m((0,Ge.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},f=async()=>{t(!0);try{await c("root","plugin",{plugin:Os,status:"active"},{throwOnError:!0}),n(!0),u((0,Ge.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{m((0,Ge.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!d0||s==="checking"||s==="active"&&i&&!o||s==="inactive"&&d===!1)return null;let h=s==="active"&&!l,v=s==="active"&&l&&(!i||o),b=s==="not-installed"||s==="inactive",E=s==="not-installed"&&a===!1,x=()=>v?(0,Ge.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):h?(0,Ge.__)("The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,Ge.__)("The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),y=()=>s==="not-installed"?{label:e?(0,Ge.__)("Installing\u2026"):(0,Ge.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:p}:{label:e?(0,Ge.__)("Activating\u2026"):(0,Ge.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:f};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,dt.createInterpolateElement)(x(),{strong:React.createElement("strong",null),a:React.createElement(nn.ExternalLink,{href:l0})})),!E&&(b?React.createElement(nn.Button,{variant:"primary",size:"compact",isBusy:e,disabled:y().disabled,accessibleWhenDisabled:!0,onClick:y().onClick},y().label):React.createElement(nn.Button,{ref:r,variant:"secondary",size:"compact",href:(0,Au.addQueryArgs)("options-general.php",{page:c0})},(0,Ge.__)("Control features in the AI plugin")))),React.createElement(Lu,null))}var{store:f0}=Eo(u0);Ou();function p0(){let e=ku(),{connectors:t,canInstallPlugins:o,isAiPluginInstalled:n}=(0,zu.useSelect)(l=>{let c=l(Bu.store),u=c.getEntityRecord("root","plugin","ai/ai");return{connectors:Eo(l(f0)).getConnectors(),canInstallPlugins:c.canUser("create",{kind:"root",name:"plugin"}),isAiPluginInstalled:!!u}},[]),r=t.filter(l=>l.render),i=Array.from(new Set(t.filter(l=>l.type==="ai_provider").map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l))).sort(),s=new Set(t.filter(l=>l.plugin?.isInstalled).map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l));n&&s.add("ai");let a=["ai",...i].filter(l=>!s.has(l)),d=r.length===0;return React.createElement(Es,{title:(0,bt.__)("Connectors"),subTitle:(0,bt.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${d?" connectors-page--empty":""}`},a.length>0&&(e||!o)&&React.createElement(Qo.Root,{intent:"info",className:"connectors-page__file-mods-notice"},React.createElement(Qo.Description,null,e?(0,bt.__)("Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow."):(0,bt.__)("You do not have permission to install plugins. Please ask a site administrator to install them for you."))),d?React.createElement(it.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(it.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(it.__experimentalHeading,{level:2,size:15,weight:600},(0,bt.__)("No connectors yet")),React.createElement(it.__experimentalText,{size:12},(0,bt.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(it.Button,{variant:"secondary",href:"plugin-install.php"},(0,bt.__)("Learn more"))):React.createElement(it.__experimentalVStack,{spacing:3},React.createElement(Iu,null),React.createElement(it.__experimentalVStack,{spacing:3,role:"list"},t.map(l=>l.render?React.createElement(l.render,{key:l.slug,slug:l.slug,name:l.name,description:l.description,type:l.type,logo:l.logo,authentication:l.authentication,plugin:l.plugin}):null))),o&&!e&&React.createElement("p",null,(0,Du.createInterpolateElement)((0,bt.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function m0(){return React.createElement(p0,null)}var g0=m0;export{g0 as stage}; +/*! Bundled license information: + +use-sync-external-store/cjs/use-sync-external-store-shim.production.js: + (** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js: + (** + * @license React + * use-sync-external-store-shim/with-selector.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) +*/ diff --git a/src/wp-includes/build/routes/font-list/content.js b/src/wp-includes/build/routes/font-list/content.js index 42fd8bc13ec52..f09d467f9b5d1 100644 --- a/src/wp-includes/build/routes/font-list/content.js +++ b/src/wp-includes/build/routes/font-list/content.js @@ -794,18 +794,92 @@ function useRender(params) { // packages/ui/build-module/text/text.mjs var import_element = __toESM(require_element(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='4130d64bea']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "4130d64bea"); - style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')); - document.head.appendChild(style); +var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; +function getRuntime() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { + return true; + } + } + return false; +} +function injectStyle(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument(targetDocument) { + const runtime = getRuntime(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle(hash, css) { + const runtime = getRuntime(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle("0c8601dd83", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}'); } var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "1fb29d3a3c"); - style.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")); - document.head.appendChild(style); +if (typeof process === "undefined" || true) { + registerStyle("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); } var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; var Text = (0, import_element.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { @@ -866,11 +940,88 @@ var previous_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primi // packages/ui/build-module/stack/stack.mjs var import_element3 = __toESM(require_element(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='b51ff41489']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "b51ff41489"); - style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); - document.head.appendChild(style); +var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; +function getRuntime2() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument2(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash2(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE2}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { + return true; + } + } + return false; +} +function injectStyle2(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime2(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash2(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument2(targetDocument) { + const runtime = getRuntime2(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle2(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle2(hash, css) { + const runtime = getRuntime2(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle2(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle2("b51ff41489", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}"); } var style_default2 = { "stack": "_19ce0419607e1896__stack" }; var gapTokens = { @@ -926,11 +1077,88 @@ var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components // packages/admin-ui/build-module/page/header.mjs var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='aa9c241ccc']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "aa9c241ccc"); - style.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")); - document.head.appendChild(style); +var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; +function getRuntime3() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument3(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash3(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE3}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { + return true; + } + } + return false; +} +function injectStyle3(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime3(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash3(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument3(targetDocument) { + const runtime = getRuntime3(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle3(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle3(hash, css) { + const runtime = getRuntime3(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle3(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle3("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } var style_default3 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Header({ @@ -944,83 +1172,152 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( - Stack, - { - direction: "column", - className: style_default3.header, - render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("header", {}), - children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( - Stack, - { - className: style_default3["header-content"], - direction: "row", - gap: "sm", - justify: "space-between", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - SidebarToggleSlot, - { - bubblesVirtually: true, - className: style_default3["sidebar-toggle-slot"] - } - ), - visual && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - "div", - { - className: style_default3["header-visual"], - "aria-hidden": "true", - children: visual - } - ), - title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - Text, - { - className: style_default3["header-title"], - render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, {}), - variant: "heading-lg", - children: title - } - ), - breadcrumbs, - badges - ] }), - actions && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - Stack, - { - align: "center", - className: style_default3["header-actions"], - direction: "row", - gap: "sm", - children: actions - } - ) - ] - } - ), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( - Text, - { - render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", {}), - variant: "body-md", - className: style_default3["header-subtitle"], - children: subTitle - } - ) - ] - } - ); + return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "column", className: style_default3.header, children: [ + /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( + Stack, + { + className: style_default3["header-content"], + direction: "row", + gap: "sm", + justify: "space-between", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: style_default3["sidebar-toggle-slot"] + } + ), + visual && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + "div", + { + className: style_default3["header-visual"], + "aria-hidden": "true", + children: visual + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Text, + { + className: style_default3["header-title"], + render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, {}), + variant: "heading-lg", + children: title + } + ), + breadcrumbs, + badges + ] }), + actions && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Stack, + { + align: "center", + className: style_default3["header-actions"], + direction: "row", + gap: "sm", + children: actions + } + ) + ] + } + ), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + Text, + { + render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", {}), + variant: "body-md", + className: style_default3["header-subtitle"], + children: subTitle + } + ) + ] }); } // packages/admin-ui/build-module/page/index.mjs var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='aa9c241ccc']")) { - const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "aa9c241ccc"); - style.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")); - document.head.appendChild(style); +var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; +function getRuntime4() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument4(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash4(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE4}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { + return true; + } + } + return false; +} +function injectStyle4(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime4(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash4(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument4(targetDocument) { + const runtime = getRuntime4(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle4(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle4(hash, css) { + const runtime = getRuntime4(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle4(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle4("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } var style_default4 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Page({ @@ -1981,6 +2278,10 @@ var VALID_BLOCK_STATES = { { value: ":active", label: (0, import_i18n.__)("Active") } ] }; +var RESPONSIVE_STATES = [ + { value: "tablet", label: (0, import_i18n.__)("Tablet") }, + { value: "mobile", label: (0, import_i18n.__)("Mobile") } +]; function removePropertiesFromObject(object, properties) { if (!properties?.length) { return object; @@ -2067,6 +2368,12 @@ function getFontFamilies(themeJson) { k([a11y_default]); function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true, state) { const { user, base, merged, onChange } = (0, import_element7.useContext)(GlobalStylesContext); + const statePathParts = state?.split(".").filter(Boolean) ?? []; + const pseudoSelectorState = statePathParts.find( + (value) => value.startsWith(":") + ); + const statePathWithoutPseudo = statePathParts.filter((value) => !value.startsWith(":")).join("."); + const stylePath = [path, statePathWithoutPseudo].filter(Boolean).join("."); let sourceValue = merged; if (readFrom === "base") { sourceValue = base; @@ -2076,39 +2383,45 @@ function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = tru const styleValue = (0, import_element7.useMemo)(() => { const rawValue = getStyle( sourceValue, - path, + stylePath, blockName, shouldDecodeEncode ); - if (state) { - return rawValue?.[state] ?? {}; + if (pseudoSelectorState) { + return rawValue?.[pseudoSelectorState] ?? {}; } return rawValue; - }, [sourceValue, path, blockName, shouldDecodeEncode, state]); + }, [ + sourceValue, + stylePath, + blockName, + shouldDecodeEncode, + pseudoSelectorState + ]); const setStyleValue = (0, import_element7.useCallback)( (newValue) => { let valueToSet = newValue; - if (state) { + if (pseudoSelectorState) { const fullCurrentValue = getStyle( user, - path, + stylePath, blockName, false ); valueToSet = { ...fullCurrentValue, - [state]: newValue + [pseudoSelectorState]: newValue }; } const newGlobalStyles = setStyle( user, - path, + stylePath, valueToSet, blockName ); onChange(newGlobalStyles); }, - [user, onChange, path, blockName, state] + [user, onChange, stylePath, blockName, pseudoSelectorState] ); return [styleValue, setStyleValue]; } @@ -4611,27 +4924,7 @@ function FontCollection({ slug }) { if (renderConfirmDialog) { return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(google_fonts_confirm_dialog_default, {}); } - const ActionsComponent = () => { - if (slug !== "google-fonts" || renderConfirmDialog || selectedFont) { - return null; - } - return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.DropdownMenu, - { - icon: more_vertical_default, - label: (0, import_i18n16.__)("Actions"), - popoverProps: { - position: "bottom left" - }, - controls: [ - { - title: (0, import_i18n16.__)("Revoke access to Google Fonts"), - onClick: revokeAccess - } - ] - } - ); - }; + const showActions = slug === "google-fonts" && !renderConfirmDialog && !selectedFont; return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ isLoading && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.ProgressBar, {}) }), !isLoading && selectedCollection && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [ @@ -4647,7 +4940,24 @@ function FontCollection({ slug }) { /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalHeading, { level: 2, size: 13, children: selectedCollection.name }), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: selectedCollection.description }) ] }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ActionsComponent, {}) + showActions && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + import_components27.DropdownMenu, + { + icon: more_vertical_default, + label: (0, import_i18n16.__)("Actions"), + popoverProps: { + position: "bottom left" + }, + controls: [ + { + title: (0, import_i18n16.__)( + "Revoke access to Google Fonts" + ), + onClick: revokeAccess + } + ] + } + ) ] }), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }), /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalHStack, { spacing: 4, justify: "space-between", children: [ @@ -15670,10 +15980,10 @@ var { unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPI ); // routes/font-list/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='befb272134']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='7667192f29']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "befb272134"); - style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); + style.setAttribute("data-wp-hash", "7667192f29"); + style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); document.head.appendChild(style); } diff --git a/src/wp-includes/build/routes/font-list/content.min.asset.php b/src/wp-includes/build/routes/font-list/content.min.asset.php index 22411a1db585b..2f2b14966873e 100644 --- a/src/wp-includes/build/routes/font-list/content.min.asset.php +++ b/src/wp-includes/build/routes/font-list/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '9baffe4ad18a1709fa57'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '70b6366062e25f2ed857'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/font-list/content.min.js b/src/wp-includes/build/routes/font-list/content.min.js index b570a1fa8d9b0..fe4792dd265f9 100644 --- a/src/wp-includes/build/routes/font-list/content.min.js +++ b/src/wp-includes/build/routes/font-list/content.min.js @@ -1,12 +1,12 @@ -var uf=Object.create;var la=Object.defineProperty;var ff=Object.getOwnPropertyDescriptor;var cf=Object.getOwnPropertyNames;var df=Object.getPrototypeOf,mf=Object.prototype.hasOwnProperty;var dt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var We=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var pf=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of cf(t))!mf.call(e,s)&&s!==r&&la(e,s,{get:()=>t[s],enumerable:!(o=ff(t,s))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?uf(df(e)):{},pf(t||!e||!e.__esModule?la(r,"default",{value:e,enumerable:!0}):r,e));var ie=We((cy,ua)=>{ua.exports=window.wp.i18n});var ve=We((my,ca)=>{ca.exports=window.wp.element});var Rr=We((py,da)=>{da.exports=window.React});var z=We((gy,ha)=>{ha.exports=window.ReactJSXRuntime});var Ir=We((Zy,Va)=>{Va.exports=window.wp.primitives});var mr=We((fv,Na)=>{Na.exports=window.wp.compose});var js=We((cv,Da)=>{Da.exports=window.wp.privateApis});var X=We((vv,Wa)=>{Wa.exports=window.wp.components});var Ja=We((Av,Ka)=>{Ka.exports=window.wp.editor});var xt=We((Rv,Qa)=>{Qa.exports=window.wp.coreData});var mt=We((Ev,$a)=>{$a.exports=window.wp.data});var Br=We((Iv,ei)=>{ei.exports=window.wp.blocks});var it=We((Lv,ti)=>{ti.exports=window.wp.blockEditor});var oi=We((Mv,ri)=>{ri.exports=window.wp.styleEngine});var li=We((Qv,ii)=>{"use strict";ii.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var o,s,a;if(Array.isArray(t)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!e(t[s],r[s]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;for(s of t.entries())if(!e(s[1],r.get(s[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(t[s]!==r[s])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(a=Object.keys(t),o=a.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[s]))return!1;for(s=o;s--!==0;){var n=a[s];if(!e(t[n],r[n]))return!1}return!0}return t!==t&&r!==r}});var di=We((e1,ci)=>{"use strict";var Uf=function(t){return Wf(t)&&!Hf(t)};function Wf(e){return!!e&&typeof e=="object"}function Hf(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||Zf(e)}var qf=typeof Symbol=="function"&&Symbol.for,Yf=qf?Symbol.for("react.element"):60103;function Zf(e){return e.$$typeof===Yf}function Xf(e){return Array.isArray(e)?[]:{}}function lo(e,t){return t.clone!==!1&&t.isMergeableObject(e)?Nr(Xf(e),e,t):e}function Kf(e,t,r){return e.concat(t).map(function(o){return lo(o,r)})}function Jf(e,t){if(!t.customMerge)return Nr;var r=t.customMerge(e);return typeof r=="function"?r:Nr}function Qf(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function ui(e){return Object.keys(e).concat(Qf(e))}function fi(e,t){try{return t in e}catch{return!1}}function $f(e,t){return fi(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function ec(e,t,r){var o={};return r.isMergeableObject(e)&&ui(e).forEach(function(s){o[s]=lo(e[s],r)}),ui(t).forEach(function(s){$f(e,s)||(fi(e,s)&&r.isMergeableObject(t[s])?o[s]=Jf(s,r)(e[s],t[s],r):o[s]=lo(t[s],r))}),o}function Nr(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||Kf,r.isMergeableObject=r.isMergeableObject||Uf,r.cloneUnlessOtherwiseSpecified=lo;var o=Array.isArray(t),s=Array.isArray(e),a=o===s;return a?o?r.arrayMerge(e,t,r):ec(e,t,r):lo(t,r)}Nr.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(o,s){return Nr(o,s,r)},{})};var tc=Nr;ci.exports=tc});var vn=We((hb,ul)=>{ul.exports=window.wp.keycodes});var pl=We((kb,ml)=>{ml.exports=window.wp.apiFetch});var Gu=We((X3,Mu)=>{Mu.exports=window.wp.date});function fa(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(r=fa(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function hf(){for(var e,t,r=0,o="",s=arguments.length;r<s;r++)(e=arguments[r])&&(t=fa(e))&&(o&&(o+=" "),o+=t);return o}var Ze=hf;var pa=u(Rr(),1),ma={};function Ps(e,t){let r=pa.useRef(ma);return r.current===ma&&(r.current=e(t)),r}function gf(e,t){return function(o,...s){let a=new URL(e);return a.searchParams.set("code",o.toString()),s.forEach(n=>a.searchParams.append("args[]",n)),`${t} error #${o}; visit ${a} for the full message.`}}var yf=gf("https://base-ui.com/production-error","Base UI"),ga=yf;var fr=u(Rr(),1);function As(e,t,r,o){let s=Ps(va).current;return vf(s,e,t,r,o)&&ba(s,[e,t,r,o]),s.callback}function ya(e){let t=Ps(va).current;return bf(t,e)&&ba(t,e),t.callback}function va(){return{callback:null,cleanup:null,refs:[]}}function vf(e,t,r,o,s){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==s}function bf(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function ba(e,t){if(e.refs=t,t.every(r=>r==null)){e.callback=null;return}e.callback=r=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),r!=null){let o=Array(t.length).fill(null);for(let s=0;s<t.length;s+=1){let a=t[s];if(a!=null)switch(typeof a){case"function":{let n=a(r);typeof n=="function"&&(o[s]=n);break}case"object":{a.current=r;break}default:}}e.cleanup=()=>{for(let s=0;s<t.length;s+=1){let a=t[s];if(a!=null)switch(typeof a){case"function":{let n=o[s];typeof n=="function"?n():a(null);break}case"object":{a.current=null;break}default:}}}}}}var Sa=u(Rr(),1);var wa=u(Rr(),1),wf=parseInt(wa.version,10);function xa(e){return wf>=e}function Rs(e){if(!Sa.isValidElement(e))return null;let t=e,r=t.props;return(xa(19)?r?.ref:t.ref)??null}function ro(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}var Fy=Object.freeze([]),Er=Object.freeze({});function Ca(e,t){let r={};for(let o in e){let s=e[o];if(t?.hasOwnProperty(o)){let a=t[o](s);a!=null&&Object.assign(r,a);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Fa(e,t){return typeof e=="function"?e(t):e}function _a(e,t){return typeof e=="function"?e(t):e}var Es={};function ur(e,t,r,o,s){if(!r&&!o&&!s&&!e)return To(t);let a=To(e);return t&&(a=oo(a,t)),r&&(a=oo(a,r)),o&&(a=oo(a,o)),s&&(a=oo(a,s)),a}function ka(e){if(e.length===0)return Es;if(e.length===1)return To(e[0]);let t=To(e[0]);for(let r=1;r<e.length;r+=1)t=oo(t,e[r]);return t}function To(e){return Is(e)?{...Ta(e,Es)}:xf(e)}function oo(e,t){return Is(t)?Ta(t,e):Sf(e,t)}function xf(e){let t={...e};for(let r in t){let o=t[r];Oa(r,o)&&(t[r]=Pa(o))}return t}function Sf(e,t){if(!t)return e;for(let r in t){let o=t[r];switch(r){case"style":{e[r]=ro(e.style,o);break}case"className":{e[r]=Ls(e.className,o);break}default:Oa(r,o)?e[r]=Cf(e[r],o):e[r]=o}}return e}function Oa(e,t){let r=e.charCodeAt(0),o=e.charCodeAt(1),s=e.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof t=="function"||typeof t>"u")}function Is(e){return typeof e=="function"}function Ta(e,t){return Is(e)?e(t):e??Es}function Cf(e,t){return t?e?(...r)=>{let o=r[0];if(Ra(o)){let a=o;Aa(a);let n=t(...r);return a.baseUIHandlerPrevented||e?.(...r),n}let s=t(...r);return e?.(...r),s}:Pa(t):e}function Pa(e){return e&&((...t)=>{let r=t[0];return Ra(r)&&Aa(r),e(...t)})}function Aa(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Ls(e,t){return t?e?t+" "+e:t:e}function Ra(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Bs=u(Rr(),1);function Ea(e,t,r={}){let o=t.render,s=Ff(t,r);if(r.enabled===!1)return null;let a=r.state??Er;return Of(e,o,s,a)}function Ff(e,t={}){let{className:r,style:o,render:s}=e,{state:a=Er,ref:n,props:l,stateAttributesMapping:h,enabled:f=!0}=t,c=f?Fa(r,a):void 0,d=f?_a(o,a):void 0,m=f?Ca(a,h):Er,g=f&&l?_f(l):void 0,y=f?ro(m,g)??{}:Er;return typeof document<"u"&&(f?Array.isArray(n)?y.ref=ya([y.ref,Rs(s),...n]):y.ref=As(y.ref,Rs(s),n):As(null,null)),f?(c!==void 0&&(y.className=Ls(y.className,c)),d!==void 0&&(y.style=ro(y.style,d)),y):Er}function _f(e){return Array.isArray(e)?ka(e):ur(void 0,e)}var kf=Symbol.for("react.lazy");function Of(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let s=ur(r,t.props);s.ref=r.ref;let a=t;return a?.$$typeof===kf&&(a=fr.Children.toArray(t)[0]),fr.cloneElement(a,s)}if(e&&typeof e=="string")return Tf(e,r);throw new Error(ga(8))}function Tf(e,t){return e==="button"?(0,Bs.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Bs.createElement)("img",{alt:"",...t,key:t.key}):fr.createElement(e,t)}function Po(e){return Ea(e.defaultTagName??"div",e,e)}var Ba=u(ve(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4130d64bea']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","4130d64bea"),e.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}')),document.head.appendChild(e)}var Ia={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='1fb29d3a3c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","1fb29d3a3c"),e.appendChild(document.createTextNode("._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}")),document.head.appendChild(e)}var La={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ao=(0,Ba.forwardRef)(function({variant:t="body-md",render:r,className:o,...s},a){return Po({render:r,defaultTagName:"span",ref:a,props:ur(s,{className:Ze(Ia.text,La.heading,La.p,Ia[t],o)})})});var Ro=u(ve(),1),so=(0,Ro.forwardRef)(({icon:e,size:t=24,...r},o)=>(0,Ro.cloneElement)(e,{width:t,height:t,...r,ref:o}));var Eo=u(Ir(),1),Vs=u(z(),1),cr=(0,Vs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Vs.jsx)(Eo.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Io=u(Ir(),1),Ns=u(z(),1),dr=(0,Ns.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ns.jsx)(Io.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Lo=u(Ir(),1),Ds=u(z(),1),zs=(0,Ds.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Lo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Bo=u(Ir(),1),Ms=u(z(),1),Vo=(0,Ms.jsx)(Bo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ms.jsx)(Bo.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var No=u(Ir(),1),Gs=u(z(),1),Do=(0,Gs.jsx)(No.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Gs.jsx)(No.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var za=u(ve(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b51ff41489']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","b51ff41489"),e.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(e)}var Pf={stack:"_19ce0419607e1896__stack"},Af={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Lr=(0,za.forwardRef)(function({direction:t,gap:r,align:o,justify:s,wrap:a,render:n,...l},h){let f={gap:r&&Af[r],alignItems:o,justifyContent:s,flexDirection:t,flexWrap:a};return Po({render:n,ref:h,props:ur(l,{style:f,className:Pf.stack})})});var Ma=u(ve(),1),Ga=u(z(),1),ja=(0,Ma.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...s},a)=>(0,Ga.jsx)(o,{ref:a,className:Ze("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...s,children:e}));ja.displayName="NavigableRegion";var Ua=ja;var Ha=u(X(),1),{Fill:qa,Slot:Ya}=(0,Ha.createSlotFill)("SidebarToggle");var wt=u(z(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='aa9c241ccc']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","aa9c241ccc"),e.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")),document.head.appendChild(e)}var pr={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function Za({headingLevel:e=1,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:a,actions:n,showSidebarToggle:l=!0}){let h=`h${e}`;return(0,wt.jsxs)(Lr,{direction:"column",className:pr.header,render:(0,wt.jsx)("header",{}),children:[(0,wt.jsxs)(Lr,{className:pr["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,wt.jsxs)(Lr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[l&&(0,wt.jsx)(Ya,{bubblesVirtually:!0,className:pr["sidebar-toggle-slot"]}),o&&(0,wt.jsx)("div",{className:pr["header-visual"],"aria-hidden":"true",children:o}),s&&(0,wt.jsx)(Ao,{className:pr["header-title"],render:(0,wt.jsx)(h,{}),variant:"heading-lg",children:s}),t,r]}),n&&(0,wt.jsx)(Lr,{align:"center",className:pr["header-actions"],direction:"row",gap:"sm",children:n})]}),a&&(0,wt.jsx)(Ao,{render:(0,wt.jsx)("p",{}),variant:"body-md",className:pr["header-subtitle"],children:a})]})}var no=u(z(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='aa9c241ccc']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","aa9c241ccc"),e.appendChild(document.createTextNode("._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}")),document.head.appendChild(e)}var Us={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function Xa({headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:a,children:n,className:l,actions:h,ariaLabel:f,hasPadding:c=!1,showSidebarToggle:d=!0}){let m=Ze(Us.page,l);return(0,no.jsxs)(Ua,{className:m,ariaLabel:f??(typeof s=="string"?s:""),children:[(s||t||r||h||o)&&(0,no.jsx)(Za,{headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:a,actions:h,showSidebarToggle:d}),c?(0,no.jsx)("div",{className:Ze(Us.content,Us["has-padding"]),children:n}):n]})}Xa.SidebarToggleFill=qa;var Ws=Xa;var Jr=u(ie()),rf=u(X()),of=u(Ja()),_s=u(xt()),sf=u(mt()),nf=u(ve());var $u=u(X(),1),ef=u(Br(),1),ey=u(mt(),1),ty=u(it(),1),$n=u(ve(),1),ry=u(mr(),1);function Vr(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let a of t){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,e}var St=(e,t,r)=>{let o=Array.isArray(t)?t:t.split("."),s=e;return o.forEach(a=>{s=s?.[a]}),s??r};var Rf=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.minWidth","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function Hs(e,t,r){let o=r?".blocks."+r:"",s=t?"."+t:"",a=`settings${o}${s}`,n=`settings${s}`;if(t)return St(e,a)??St(e,n);let l={};return Rf.forEach(h=>{let f=St(e,`settings${o}.${h}`)??St(e,`settings.${h}`);f!==void 0&&(l=Vr(l,h.split("."),f))}),l}function qs(e,t,r,o){let s=o?".blocks."+o:"",a=t?"."+t:"",n=`settings${s}${a}`;return Vr(e,n.split("."),r)}var zf=u(oi(),1);var Ef="1600px",If="320px",Lf=1,Bf=.25,Vf=.75,Nf="14px";function si({minimumFontSize:e,maximumFontSize:t,fontSize:r,minimumViewportWidth:o=If,maximumViewportWidth:s=Ef,scaleFactor:a=Lf,minimumFontSizeLimit:n}){if(n=It(n)?n:Nf,r){let b=It(r);if(!b?.unit||!b?.value)return null;let O=It(n,{coerceTo:b.unit});if(O?.value&&!e&&!t&&b?.value<=O?.value)return null;if(t||(t=`${b.value}${b.unit}`),!e){let q=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(q),Bf),Vf),N=ao(b.value*I,3);O?.value&&N<O?.value?e=`${O.value}${O.unit}`:e=`${N}${b.unit}`}}let l=It(e),h=l?.unit||"rem",f=It(t,{coerceTo:h});if(!l||!f)return null;let c=It(e,{coerceTo:"rem"}),d=It(s,{coerceTo:h}),m=It(o,{coerceTo:h});if(!d||!m||!c)return null;let g=d.value-m.value;if(!g)return null;let y=ao(m.value/100,3),T=ao(y,3)+h,A=100*((f.value-l.value)/g),_=ao((A||1)*a,3),S=`${c.value}${c.unit} + ((1vw - ${T}) * ${_})`;return`clamp(${e}, ${S}, ${t})`}function It(e,t={}){if(typeof e!="string"&&typeof e!="number")return null;isFinite(e)&&(e=`${e}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...t},a=s?.join("|"),n=new RegExp(`^(\\d*\\.?\\d+)(${a}){1,1}$`),l=e.toString().match(n);if(!l||l.length<3)return null;let[,h,f]=l,c=parseFloat(h);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:ao(c,3),unit:f}:null}function ao(e,t=3){let r=Math.pow(10,t);return Math.round(e*r)/r}function Ys(e){let t=e?.fluid;return t===!0||t&&typeof t=="object"&&Object.keys(t).length>0}function Df(e){let t=e?.typography??{},r=e?.layout,o=It(r?.wideSize)?r?.wideSize:null;return Ys(t)&&o?{fluid:{maxViewportWidth:o,...typeof t.fluid=="object"?t.fluid:{}}}:{fluid:t?.fluid}}function ni(e,t){let{size:r}=e;if(!r||r==="0"||e?.fluid===!1||!Ys(t?.typography)&&!Ys(e))return r;let o=Df(t)?.fluid??{},s=si({minimumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.min,maximumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var Mf=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:e})=>`url( '#wp-duotone-${e}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(e,t)=>ni(e,t),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:e})=>e,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function ai(e,t,r=[],o="slug",s){let a=[t?St(e,["blocks",t,...r]):void 0,St(e,r)].filter(Boolean);for(let n of a)if(n){let l=["custom","theme","default"];for(let h of l){let f=n[h];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||ai(e,t,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function Gf(e,t,r,[o,s]=[]){let a=Mf.find(l=>l.cssVarInfix===o);if(!a||!e.settings)return r;let n=ai(e.settings,t,a.path,"slug",s);if(n){let{valueKey:l}=a,h=n[l];return zo(e,t,h)}return r}function jf(e,t,r,o=[]){let s=(t?St(e?.settings??{},["blocks",t,"custom",...o]):void 0)??St(e?.settings??{},["custom",...o]);return s?zo(e,t,s):r}function zo(e,t,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=St(e,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",a=")",n;if(r.startsWith(o))n=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(a))n=r.slice(s.length,-a.length).split("--");else return r;let[l,...h]=n;return l==="preset"?Gf(e,t,r,h):l==="custom"?jf(e,t,r,h):r}function Mo(e,t,r,o=!0){let s=t?"."+t:"",a=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!e)return;let n=St(e,a);return o?zo(e,r,n):n}function Zs(e,t,r,o){let s=t?"."+t:"",a=o?`styles.blocks.${o}${s}`:`styles${s}`;return Vr(e,a.split("."),r)}var Xs=u(li(),1);function io(e,t){return typeof e!="object"||typeof t!="object"?e===t:(0,Xs.default)(e?.styles,t?.styles)&&(0,Xs.default)(e?.settings,t?.settings)}var hi=u(di(),1);function mi(e){return Object.prototype.toString.call(e)==="[object Object]"}function pi(e){var t,r;return mi(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(mi(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function hr(e,t){return(0,hi.default)(e,t,{isMergeableObject:pi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var rc={grad:.9,turn:360,rad:360/(2*Math.PI)},Ut=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Xe=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},kt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Ci=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},gi=function(e){return{r:kt(e.r,0,255),g:kt(e.g,0,255),b:kt(e.b,0,255),a:kt(e.a)}},Ks=function(e){return{r:Xe(e.r),g:Xe(e.g),b:Xe(e.b),a:Xe(e.a,3)}},oc=/^#([0-9a-f]{3,8})$/i,Go=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Fi=function(e){var t=e.r,r=e.g,o=e.b,s=e.a,a=Math.max(t,r,o),n=a-Math.min(t,r,o),l=n?a===t?(r-o)/n:a===r?2+(o-t)/n:4+(t-r)/n:0;return{h:60*(l<0?l+6:l),s:a?n/a*100:0,v:a/255*100,a:s}},_i=function(e){var t=e.h,r=e.s,o=e.v,s=e.a;t=t/360*6,r/=100,o/=100;var a=Math.floor(t),n=o*(1-r),l=o*(1-(t-a)*r),h=o*(1-(1-t+a)*r),f=a%6;return{r:255*[o,l,n,n,h,o][f],g:255*[h,o,o,l,n,n][f],b:255*[n,n,h,o,o,l][f],a:s}},yi=function(e){return{h:Ci(e.h),s:kt(e.s,0,100),l:kt(e.l,0,100),a:kt(e.a)}},vi=function(e){return{h:Xe(e.h),s:Xe(e.s),l:Xe(e.l),a:Xe(e.a,3)}},bi=function(e){return _i((r=(t=e).s,{h:t.h,s:(r*=((o=t.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:t.a}));var t,r,o},uo=function(e){return{h:(t=Fi(e)).h,s:(s=(200-(r=t.s))*(o=t.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:t.a};var t,r,o,s},sc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ac=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ic=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$s={string:[[function(e){var t=oc.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Xe(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Xe(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=ac.exec(e)||ic.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:gi({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=sc.exec(e)||nc.exec(e);if(!t)return null;var r,o,s=yi({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(rc[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return bi(s)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,s=e.a,a=s===void 0?1:s;return Ut(t)&&Ut(r)&&Ut(o)?gi({r:Number(t),g:Number(r),b:Number(o),a:Number(a)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,s=e.a,a=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var n=yi({h:Number(t),s:Number(r),l:Number(o),a:Number(a)});return bi(n)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,s=e.a,a=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var n=(function(l){return{h:Ci(l.h),s:kt(l.s,0,100),v:kt(l.v,0,100),a:kt(l.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(a)});return _i(n)},"hsv"]]},wi=function(e,t){for(var r=0;r<t.length;r++){var o=t[r][0](e);if(o)return[o,t[r][1]]}return[null,void 0]},lc=function(e){return typeof e=="string"?wi(e.trim(),$s.string):typeof e=="object"&&e!==null?wi(e,$s.object):[null,void 0]};var Js=function(e,t){var r=uo(e);return{h:r.h,s:kt(r.s+100*t,0,100),l:r.l,a:r.a}},Qs=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},xi=function(e,t){var r=uo(e);return{h:r.h,s:r.s,l:kt(r.l+100*t,0,100),a:r.a}},en=(function(){function e(t){this.parsed=lc(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return Xe(Qs(this.rgba),2)},e.prototype.isDark=function(){return Qs(this.rgba)<.5},e.prototype.isLight=function(){return Qs(this.rgba)>=.5},e.prototype.toHex=function(){return t=Ks(this.rgba),r=t.r,o=t.g,s=t.b,n=(a=t.a)<1?Go(Xe(255*a)):"","#"+Go(r)+Go(o)+Go(s)+n;var t,r,o,s,a,n},e.prototype.toRgb=function(){return Ks(this.rgba)},e.prototype.toRgbString=function(){return t=Ks(this.rgba),r=t.r,o=t.g,s=t.b,(a=t.a)<1?"rgba("+r+", "+o+", "+s+", "+a+")":"rgb("+r+", "+o+", "+s+")";var t,r,o,s,a},e.prototype.toHsl=function(){return vi(uo(this.rgba))},e.prototype.toHslString=function(){return t=vi(uo(this.rgba)),r=t.h,o=t.s,s=t.l,(a=t.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+a+")":"hsl("+r+", "+o+"%, "+s+"%)";var t,r,o,s,a},e.prototype.toHsv=function(){return t=Fi(this.rgba),{h:Xe(t.h),s:Xe(t.s),v:Xe(t.v),a:Xe(t.a,3)};var t},e.prototype.invert=function(){return Lt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),Lt(Js(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),Lt(Js(this.rgba,-t))},e.prototype.grayscale=function(){return Lt(Js(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),Lt(xi(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),Lt(xi(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?Lt({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Xe(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=uo(this.rgba);return typeof t=="number"?Lt({h:t,s:r.s,l:r.l,a:r.a}):Xe(r.h)},e.prototype.isEqual=function(t){return this.toHex()===Lt(t).toHex()},e})(),Lt=function(e){return e instanceof en?e:new en(e)},Si=[],ki=function(e){e.forEach(function(t){Si.indexOf(t)<0&&(t(en,$s),Si.push(t))})};var tn=u(ve(),1);var Oi=u(ve(),1),Je=(0,Oi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var Ti=u(z(),1);function fo({children:e,value:t,baseValue:r,onChange:o,fontLibraryEnabled:s}){let a=(0,tn.useMemo)(()=>hr(r,t),[r,t]),n=(0,tn.useMemo)(()=>({user:t,base:r,merged:a,onChange:o,fontLibraryEnabled:s}),[t,r,a,o,s]);return(0,Ti.jsx)(Je.Provider,{value:n,children:e})}var Wt=u(X(),1),Yi=u(ie(),1);var Sc=u(mt(),1),Cc=u(xt(),1);var Pi=u(z(),1);function rn({className:e,...t}){return(0,Pi.jsx)(so,{className:Ze(e,"global-styles-ui-icon-with-current-color"),...t})}var Jt=u(X(),1);var gr=u(z(),1);function uc({icon:e,children:t,...r}){return(0,gr.jsxs)(Jt.__experimentalItem,{...r,children:[e&&(0,gr.jsxs)(Jt.__experimentalHStack,{justify:"flex-start",children:[(0,gr.jsx)(rn,{icon:e,size:24}),(0,gr.jsx)(Jt.FlexItem,{children:t})]}),!e&&t]})}function Bt(e){return(0,gr.jsx)(Jt.Navigator.Button,{as:uc,...e})}var dc=u(X(),1);var mc=u(ie(),1),Vi=u(it(),1);var on=function(e){var t=e/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},sn=function(e){return .2126*on(e.r)+.7152*on(e.g)+.0722*on(e.b)};function Ai(e){e.prototype.luminance=function(){return t=sn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*t)/o+0;var t,r,o},e.prototype.contrast=function(t){t===void 0&&(t="#FFF");var r,o,s,a,n,l,h,f=t instanceof e?t:new e(t);return a=this.rgba,n=f.toRgb(),l=sn(a),h=sn(n),r=l>h?(l+.05)/(h+.05):(h+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},e.prototype.isReadable=function(t,r){return t===void 0&&(t="#FFF"),r===void 0&&(r={}),this.contrast(t)>=(l=(n=(o=r).size)===void 0?"normal":n,(a=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:a==="AA"&&l==="large"?3:4.5);var o,s,a,n,l}}var Rt=u(ve(),1),Ii=u(mt(),1),Li=u(xt(),1),an=u(ie(),1);var He=u(ie(),1),C1={link:[{value:":link",label:(0,He.__)("Link")},{value:":any-link",label:(0,He.__)("Any Link")},{value:":visited",label:(0,He.__)("Visited")},{value:":hover",label:(0,He.__)("Hover")},{value:":focus",label:(0,He.__)("Focus")},{value:":focus-visible",label:(0,He.__)("Focus-visible")},{value:":active",label:(0,He.__)("Active")}],button:[{value:":link",label:(0,He.__)("Link")},{value:":any-link",label:(0,He.__)("Any Link")},{value:":visited",label:(0,He.__)("Visited")},{value:":hover",label:(0,He.__)("Hover")},{value:":focus",label:(0,He.__)("Focus")},{value:":focus-visible",label:(0,He.__)("Focus-visible")},{value:":active",label:(0,He.__)("Active")}]},F1={"core/button":[{value:":hover",label:(0,He.__)("Hover")},{value:":focus",label:(0,He.__)("Focus")},{value:":focus-visible",label:(0,He.__)("Focus-visible")},{value:":active",label:(0,He.__)("Active")}]};function nn(e,t){if(!t?.length||typeof e!="object"||!e||!Object.keys(e).length)return e;for(let r in e)t.includes(r)?delete e[r]:typeof e[r]=="object"&&nn(e[r],t);return e}var jo=(e,t)=>{if(!e||!t?.length)return{};let r={};return Object.keys(e).forEach(o=>{if(t.includes(o))r[o]=e[o];else if(typeof e[o]=="object"){let s=jo(e[o],t);Object.keys(s).length&&(r[o]=s)}}),r};function co(e,t){let r=jo(structuredClone(e),t);return io(r,e)}function Ri(e,t){if(!Array.isArray(e)||!t)return null;let o=t.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return e.find(s=>s.slug===o)}function Ei(e){let t=e?.settings?.typography?.fontFamilies?.theme,r=e?.settings?.typography?.fontFamilies?.custom,o=[];t&&r?o=[...t,...r]:t?o=t:r&&(o=r);let s=e?.styles?.typography?.fontFamily,a=Ri(o,s),n=e?.styles?.elements?.heading?.typography?.fontFamily,l;return n?l=Ri(o,e?.styles?.elements?.heading?.typography?.fontFamily):l=a,[a,l]}ki([Ai]);function _e(e,t,r="merged",o=!0,s){let{user:a,base:n,merged:l,onChange:h}=(0,Rt.useContext)(Je),f=l;r==="base"?f=n:r==="user"&&(f=a);let c=(0,Rt.useMemo)(()=>{let m=Mo(f,e,t,o);return s?m?.[s]??{}:m},[f,e,t,o,s]),d=(0,Rt.useCallback)(m=>{let g=m;s&&(g={...Mo(a,e,t,!1),[s]:m});let y=Zs(a,e,g,t);h(y)},[a,h,e,t,s]);return[c,d]}function Te(e,t,r="merged"){let{user:o,base:s,merged:a,onChange:n}=(0,Rt.useContext)(Je),l=a;r==="base"?l=s:r==="user"&&(l=o);let h=(0,Rt.useMemo)(()=>Hs(l,e,t),[l,e,t]),f=(0,Rt.useCallback)(c=>{let d=qs(o,e,c,t);n(d)},[o,n,e,t]);return[h,f]}var fc=[];function cc({title:e,settings:t,styles:r}){return e===(0,an.__)("Default")||Object.keys(t||{}).length>0||Object.keys(r||{}).length>0}function Uo(e=[]){let{variationsFromTheme:t}=(0,Ii.useSelect)(o=>({variationsFromTheme:o(Li.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||fc}),[]),{user:r}=(0,Rt.useContext)(Je);return(0,Rt.useMemo)(()=>{let o=structuredClone(r),s=nn(o,e);s.title=(0,an.__)("Default");let a=t.filter(l=>co(l,e)).map(l=>hr(s,l)),n=[s,...a];return n?.length?n.filter(cc):[]},[e,r,t])}var Bi=u(js(),1),{lock:E1,unlock:ye}=(0,Bi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var ln=u(z(),1),{useHasDimensionsPanel:N1,useHasTypographyPanel:D1,useHasColorPanel:z1,useSettingsForBlockElement:M1,useHasBackgroundPanel:G1}=ye(Vi.privateApis);var Vt=u(X(),1);function Dr(){let[e="black"]=_e("color.text"),[t="white"]=_e("color.background"),[r=e]=_e("elements.h1.color.text"),[o=r]=_e("elements.link.color.text"),[s=o]=_e("elements.button.color.background"),[a]=Te("color.palette.core")||[],[n]=Te("color.palette.theme")||[],[l]=Te("color.palette.custom")||[],h=(n??[]).concat(l??[]).concat(a??[]),f=h.filter(({color:m})=>m===e),c=h.filter(({color:m})=>m===s),d=f.concat(c).concat(h).filter(({color:m})=>m!==t).slice(0,2);return{paletteColors:h,highlightedColors:d}}var zi=u(ve(),1),Mi=u(X(),1),fn=u(ie(),1);function pc(e,t){return t.length===0?null:(t.sort((r,o)=>Math.abs(e-r)-Math.abs(e-o)),t[0])}function hc(e){let t=[];return e.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),a=parseInt(o[1]);for(let n=s;n<=a;n+=100)t.push(n)}else o.length===1&&t.push(parseInt(o[0]))}),t}function Ni(e){let t=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=e.trim(),o=s=>(s=s.trim(),s.match(t)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function un(e){if(!e)return"";let t=e.trim();return t.includes(",")&&(t=(t.split(",").find(r=>r.trim()!=="")??"").trim()),t=t.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(t=`"${t}"`),t}function zr(e){let t={fontFamily:Ni(e.fontFamily)};if(!("fontFace"in e)||!Array.isArray(e.fontFace))return t.fontWeight="400",t.fontStyle="normal",t;if(e.fontFace){let r=e.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){t.fontStyle="normal";let o=hc(r),s=pc(400,o);t.fontWeight=String(s)||"400"}else t.fontStyle=e.fontFace.length&&e.fontFace[0].fontStyle||"normal",t.fontWeight=e.fontFace.length&&String(e.fontFace[0].fontWeight)||"400"}return t}function Di(e){return{fontFamily:Ni(e.fontFamily),fontStyle:e.fontStyle||"normal",fontWeight:e.fontWeight||"400"}}var mo=u(z(),1);function Wo({fontSize:e,variation:t}){let{base:r}=(0,zi.useContext)(Je),o=r;t&&(o={...r,...t});let[s]=_e("color.text"),[a,n]=Ei(o),l=a?zr(a):{},h=n?zr(n):{};return s&&(l.color=s,h.color=s),e&&(l.fontSize=e,h.fontSize=e),(0,mo.jsxs)(Mi.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,mo.jsx)("span",{style:h,children:(0,fn._x)("A","Uppercase letter A")}),(0,mo.jsx)("span",{style:l,children:(0,fn._x)("a","Lowercase letter A")})]})}var Gi=u(X(),1);var ji=u(z(),1);function Ui({normalizedColorSwatchSize:e,ratio:t}){let{highlightedColors:r}=Dr(),o=e*t;return r.map(({slug:s,color:a},n)=>(0,ji.jsx)(Gi.__unstableMotion.div,{style:{height:o,width:o,background:a,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:n===1?.2:.1}},`${s}-${n}`))}var qi=u(X(),1),Mr=u(mr(),1),yr=u(ve(),1);var Qt=u(z(),1),Wi=248,Hi=152,gc={leading:!0,trailing:!0};function yc({children:e,label:t,isFocused:r,withHoverView:o}){let[s="white"]=_e("color.background"),[a]=_e("color.gradient"),n=(0,Mr.useReducedMotion)(),[l,h]=(0,yr.useState)(!1),[f,{width:c}]=(0,Mr.useResizeObserver)(),[d,m]=(0,yr.useState)(c),[g,y]=(0,yr.useState)(),T=(0,Mr.useThrottle)(m,250,gc);(0,yr.useLayoutEffect)(()=>{c&&T(c)},[c,T]),(0,yr.useLayoutEffect)(()=>{let b=d?d/Wi:1,O=b-(g||0);(Math.abs(O)>.1||!g)&&y(b)},[d,g]);let A=c?c/Wi:1,_=g||A;return(0,Qt.jsxs)(Qt.Fragment,{children:[(0,Qt.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qt.jsx)("div",{className:Ze("global-styles-ui-preview__wrapper",{"is-hoverable":o}),style:{height:Hi*_},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),tabIndex:-1,children:(0,Qt.jsx)(qi.__unstableMotion.div,{style:{height:Hi*_,width:"100%",background:a??s},initial:"start",animate:(l||r)&&!n&&t?"hover":"start",children:[].concat(e).map((b,O)=>b({ratio:_,key:O}))})})]})}var Gr=yc;var pt=u(z(),1),vc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},bc={hover:{opacity:1},start:{opacity:.5}},wc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function xc({label:e,isFocused:t,withHoverView:r,variation:o}){let[s]=_e("typography.fontWeight"),[a="serif"]=_e("typography.fontFamily"),[n=a]=_e("elements.h1.typography.fontFamily"),[l=s]=_e("elements.h1.typography.fontWeight"),[h="black"]=_e("color.text"),[f=h]=_e("elements.h1.color.text"),{paletteColors:c}=Dr();return(0,pt.jsxs)(Gr,{label:e,isFocused:t,withHoverView:r,children:[({ratio:d,key:m})=>(0,pt.jsx)(Vt.__unstableMotion.div,{variants:vc,style:{height:"100%",overflow:"hidden"},children:(0,pt.jsxs)(Vt.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,pt.jsx)(Wo,{fontSize:65*d,variation:o}),(0,pt.jsx)(Vt.__experimentalVStack,{spacing:4*d,children:(0,pt.jsx)(Ui,{normalizedColorSwatchSize:32,ratio:d})})]})},m),({key:d})=>(0,pt.jsx)(Vt.__unstableMotion.div,{variants:r?bc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,pt.jsx)(Vt.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:m},g)=>(0,pt.jsx)("div",{style:{height:"100%",background:m,flexGrow:1}},g))})},d),({ratio:d,key:m})=>(0,pt.jsx)(Vt.__unstableMotion.div,{variants:wc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,pt.jsx)(Vt.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:e&&(0,pt.jsx)("div",{style:{fontSize:40*d,fontFamily:n,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:e})})},m)]})}var cn=xc;var Zi=u(z(),1);var mn=u(Br(),1),jr=u(ie(),1),br=u(X(),1),pn=u(mt(),1),$t=u(ve(),1),Ho=u(it(),1),el=u(mr(),1);import{speak as Oc}from"@wordpress/a11y";var Xi=u(Br(),1),Ki=u(mt(),1),Fc=u(X(),1);var _c=u(z(),1);function kc(e,t){return e?.filter(r=>r.source==="block"||t.includes(r.name))||[]}function dn(e){let t=(0,Ki.useSelect)(s=>{let{getBlockStyles:a}=s(Xi.store);return a(e)},[e]),[r]=_e("variations",e),o=Object.keys(r??{});return kc(t,o)}var vr=u(X(),1),Ji=u(ie(),1);var Qi=u(it(),1);var $i=u(z(),1),{StateControl:v0}=ye(Qi.privateApis);var Nt=u(z(),1),{useHasDimensionsPanel:Tc,useHasTypographyPanel:Pc,useHasBorderPanel:Ac,useSettingsForBlockElement:Rc,useHasColorPanel:Ec}=ye(Ho.privateApis);function Ic(){let e=(0,pn.useSelect)(s=>s(mn.store).getBlockTypes(),[]),t=(s,a)=>{let{core:n,noncore:l}=s;return(a.name.startsWith("core/")?n:l).push(a),s},{core:r,noncore:o}=e.reduce(t,{core:[],noncore:[]});return[...r,...o]}function Lc(e){let[t]=Te("",e),r=Rc(t,e),o=Pc(r),s=Ec(r),a=Ac(r),n=Tc(r),l=a||n,h=!!dn(e)?.length;return o||s||l||h}function Bc({block:e}){return Lc(e.name)?(0,Nt.jsx)(Bt,{path:"/blocks/"+encodeURIComponent(e.name),children:(0,Nt.jsxs)(br.__experimentalHStack,{justify:"flex-start",children:[(0,Nt.jsx)(Ho.BlockIcon,{icon:e.icon}),(0,Nt.jsx)(br.FlexItem,{children:e.title})]})}):null}function Vc({filterValue:e}){let t=Ic(),r=(0,el.useDebounce)(Oc,500),{isMatchingSearchTerm:o}=(0,pn.useSelect)(mn.store),s=e?t.filter(n=>o(n,e)):t,a=(0,$t.useRef)(null);return(0,$t.useEffect)(()=>{if(!e)return;let n=a.current?.childElementCount||0,l=(0,jr.sprintf)((0,jr._n)("%d result found.","%d results found.",n),n);r(l,"polite")},[e,r]),(0,Nt.jsx)("div",{ref:a,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,Nt.jsx)(br.__experimentalText,{align:"center",as:"p",children:(0,jr.__)("No blocks found.")}):s.map(n=>(0,Nt.jsx)(Bc,{block:n},"menu-itemblock-"+n.name))})}var k0=(0,$t.memo)(Vc);var Gc=u(Br(),1),sl=u(it(),1),hn=u(ve(),1),jc=u(mt(),1),Uc=u(xt(),1),gn=u(X(),1),nl=u(ie(),1);var Nc=u(it(),1),tl=u(Br(),1),Dc=u(X(),1),zc=u(ve(),1);var Mc=u(z(),1);var rl=u(X(),1),ol=u(z(),1);function Ct({children:e,level:t=2}){return(0,ol.jsx)(rl.__experimentalHeading,{className:"global-styles-ui-subtitle",level:t,children:e})}var yn=u(z(),1);var{useHasDimensionsPanel:U0,useHasTypographyPanel:W0,useHasBorderPanel:H0,useSettingsForBlockElement:q0,useHasColorPanel:Y0,useHasFiltersPanel:Z0,useHasImageSettingsPanel:X0,useHasBackgroundPanel:K0,BackgroundPanel:J0,BorderPanel:Q0,ColorPanel:$0,TypographyPanel:eb,DimensionsPanel:tb,FiltersPanel:rb,ImageSettingsPanel:ob,AdvancedPanel:sb}=ye(sl.privateApis);var rg=u(ie(),1),og=u(X(),1),sg=u(ve(),1);var Wc=u(X(),1);var Hc=u(z(),1);var qc=u(ie(),1),qo=u(X(),1);var al=u(z(),1);var Xo=u(X(),1);var il=u(X(),1);var Yo=u(z(),1),Yc=({variation:e,isFocused:t,withHoverView:r})=>(0,Yo.jsx)(Gr,{label:e.title,isFocused:t,withHoverView:r,children:({ratio:o,key:s})=>(0,Yo.jsx)(il.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Yo.jsx)(Wo,{variation:e,fontSize:85*o})},s)}),ll=Yc;var fl=u(X(),1),wr=u(ve(),1),cl=u(vn(),1),Zo=u(ie(),1);var po=u(z(),1);function Ur({variation:e,children:t,isPill:r=!1,properties:o,showTooltip:s=!1}){let[a,n]=(0,wr.useState)(!1),{base:l,user:h,onChange:f}=(0,wr.useContext)(Je),c=(0,wr.useMemo)(()=>{let A=hr(l,e);return o&&(A=jo(A,o)),{user:e,base:l,merged:A,onChange:()=>{}}},[e,l,o]),d=()=>f(e),m=A=>{A.keyCode===cl.ENTER&&(A.preventDefault(),d())},g=(0,wr.useMemo)(()=>io(h,e),[h,e]),y=e?.title;e?.description&&(y=(0,Zo.sprintf)((0,Zo._x)("%1$s (%2$s)","variation label"),e?.title,e?.description));let T=(0,po.jsx)("div",{className:Ze("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:d,onKeyDown:m,tabIndex:0,"aria-label":y,"aria-current":g,onFocus:()=>n(!0),onBlur:()=>n(!1),children:(0,po.jsx)("div",{className:Ze("global-styles-ui-variations_item-preview",{"is-pill":r}),children:t(a)})});return(0,po.jsx)(Je.Provider,{value:c,children:s?(0,po.jsx)(fl.Tooltip,{text:e?.title,children:T}):T})}var xr=u(z(),1),dl=["typography"];function Ko({title:e,gap:t=2}){let r=Uo(dl);return r?.length<=1?null:(0,xr.jsxs)(Xo.__experimentalVStack,{spacing:3,children:[e&&(0,xr.jsx)(Ct,{level:3,children:e}),(0,xr.jsx)(Xo.__experimentalGrid,{columns:3,gap:t,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,xr.jsx)(Ur,{variation:o,properties:dl,showTooltip:!0,children:()=>(0,xr.jsx)(ll,{variation:o})},s))})]})}var eg=u(ie(),1),xo=u(X(),1);var tg=u(ve(),1);var Ht=u(ve(),1),or=u(mt(),1),rr=u(xt(),1),Sn=u(ie(),1);var bn=u(pl(),1),hl=u(xt(),1),gl="/wp/v2/font-families";function yl(e){let{receiveEntityRecords:t}=e.dispatch(hl.store);t("postType","wp_font_family",[],void 0,!0)}async function vl(e,t){let o=await(0,bn.default)({path:gl,method:"POST",body:e});return yl(t),{id:o.id,...o.font_family_settings,fontFace:[]}}async function bl(e,t,r){let o={path:`${gl}/${e}/font-faces`,method:"POST",body:t},s=await(0,bn.default)(o);return yl(r),{id:s.id,...s.font_face_settings}}var Sl=u(X(),1);var Ot=u(ie(),1),wn=["otf","ttf","woff","woff2"],wl={100:(0,Ot._x)("Thin","font weight"),200:(0,Ot._x)("Extra-light","font weight"),300:(0,Ot._x)("Light","font weight"),400:(0,Ot._x)("Normal","font weight"),500:(0,Ot._x)("Medium","font weight"),600:(0,Ot._x)("Semi-bold","font weight"),700:(0,Ot._x)("Bold","font weight"),800:(0,Ot._x)("Extra-bold","font weight"),900:(0,Ot._x)("Black","font weight")},xl={normal:(0,Ot._x)("Normal","font style"),italic:(0,Ot._x)("Italic","font style")};var{File:Cl}=window,{kebabCase:Zc}=ye(Sl.privateApis);function er(e,t={}){return!e.name&&(e.fontFamily||e.slug)&&(e.name=e.fontFamily||e.slug),{...e,...t}}function Xc(e){return typeof e!="string"?!1:e!==decodeURIComponent(e)}function Jo(e){let t=wl[e.fontWeight??""]||e.fontWeight,r=e.fontStyle==="normal"?"":xl[e.fontStyle??""]||e.fontStyle;return`${t} ${r}`}function Kc(e=[],t=[]){let r=new Map;for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function Fl(e=[],t=[]){let r=new Map;for(let o of e)r.set(o.slug,{...o});for(let o of t)if(r.has(o.slug)){let{fontFace:s,...a}=o,n=r.get(o.slug),l=Kc(n.fontFace,s);r.set(o.slug,{...a,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function tr(e,t,r="all"){let o;if(typeof t=="string")o=`url(${t})`;else if(t instanceof Cl)o=await t.arrayBuffer();else return;let a=await new window.FontFace(un(e.fontFamily),o,{style:e.fontStyle,weight:String(e.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(a),r==="iframe"||r==="all"){let n=document.querySelector('iframe[name="editor-canvas"]');n?.contentDocument&&n.contentDocument.fonts.add(a)}}function ho(e,t="all"){let r=o=>{o.forEach(s=>{s.family===un(e?.fontFamily)&&s.weight===e?.fontWeight&&s.style===e?.fontStyle&&o.delete(s)})};if((t==="document"||t==="all")&&r(document.fonts),t==="iframe"||t==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Wr(e){if(!e)return;let t;if(Array.isArray(e)?t=e[0]:t=e,!t.startsWith("file:."))return Xc(t)||(t=encodeURI(t)),t}function _l(e){let t=new FormData,{fontFace:r,category:o,...s}=e,a={...s,slug:Zc(e.slug)};return t.append("font_family_settings",JSON.stringify(a)),t}function kl(e){return(e?.fontFace??[]).map((r,o)=>{let s={...r},a=new FormData;if(s.file){let n=Array.isArray(s.file)?s.file:[s.file],l=[];n.forEach((h,f)=>{let c=`file-${o}-${f}`;a.append(c,h,h.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,a.append("font_face_settings",JSON.stringify(s))}else a.append("font_face_settings",JSON.stringify(s));return a})}async function Ol(e,t,r){let o=[];for(let a of t)try{let n=await bl(e,a,r);o.push({status:"fulfilled",value:n})}catch(n){o.push({status:"rejected",reason:n})}let s={errors:[],successes:[]};return o.forEach((a,n)=>{if(a.status==="fulfilled"&&a.value){let l=a.value;s.successes.push(l)}else a.reason&&s.errors.push({data:t[n],message:a.reason.message})}),s}async function Tl(e){e=Array.isArray(e)?e:[e];let t=await Promise.all(e.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new Cl([o],s,{type:o.type})})));return t.length===1?t[0]:t}function xn(e,t){return t.findIndex(r=>r.fontWeight===e.fontWeight&&r.fontStyle===e.fontStyle)!==-1}function Pl(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let a of t){let n=s[a];s=s[a]=Array.isArray(n)?[...n]:{...n}}return s[o]=r,e}function Qo(e,t,r=[]){let o=h=>h.slug===e.slug,s=h=>h.find(o),a=h=>h?r.filter(f=>!o(f)):[...r,e],n=h=>{let f=d=>d.fontWeight===t.fontWeight&&d.fontStyle===t.fontStyle;if(!h)return[...r,{...e,fontFace:[t]}];let c=h.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,t],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return t?n(l):a(l)}var Al=u(z(),1),lt=(0,Ht.createContext)({});lt.displayName="FontLibraryContext";function Jc({children:e}){let t=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(x=>{let{__experimentalGetCurrentGlobalStylesId:E}=x(rr.store);return{globalStylesId:E()}},[]),a=(0,rr.useEntityRecord)("root","globalStyles",s),[n,l]=(0,Ht.useState)(!1),{records:h=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(h||[]).map(x=>({id:x.id,...x.font_family_settings||{},fontFace:x?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,m]=Te("typography.fontFamilies"),g=async x=>{if(!a.record)return;let E=a.record,te=Pl(E??{},["settings","typography","fontFamilies"],x);await r("root","globalStyles",te)},[y,T]=(0,Ht.useState)(""),[A,_]=(0,Ht.useState)(void 0),S=d?.theme?d.theme.map(x=>er(x,{source:"theme"})).sort((x,E)=>x.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[],O=c?c.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[];(0,Ht.useEffect)(()=>{y||_(void 0)},[y]);let q=x=>{if(!x){_(void 0);return}let te=(x.source==="theme"?S:O).find(ce=>ce.slug===x.slug);_({...te||x,source:x.source})},[I]=(0,Ht.useState)(new Set),N=x=>x.reduce((te,ce)=>{let ae=ce?.fontFace&&ce.fontFace?.length>0?ce?.fontFace.map(Ce=>`${Ce.fontStyle??""}${Ce.fontWeight??""}`):["normal400"];return te[ce.slug]=ae,te},{}),W=x=>N(x==="theme"?S:b),$=(x,E,te,ce)=>!E&&!te?!!W(ce)[x]:!!W(ce)[x]?.includes((E??"")+(te??"")),be=(x,E)=>W(E)[x]||[];async function H(x){l(!0);try{let E=[],te=[];for(let ae of x){let Ce=!1,qe=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:ae.slug,per_page:1,_embed:!0}),ke=qe&&qe.length>0?qe[0]:null,J=ke?{id:ke.id,...ke.font_family_settings,fontFace:(ke?._embedded?.font_faces??[]).map(ze=>ze.font_face_settings)||[]}:null;J||(Ce=!0,J=await vl(_l(ae),t));let Se=J.fontFace&&ae.fontFace?J.fontFace.filter(ze=>ze&&ae.fontFace&&xn(ze,ae.fontFace)):[];J.fontFace&&ae.fontFace&&(ae.fontFace=ae.fontFace.filter(ze=>!xn(ze,J.fontFace)));let Ae=[],Ft=[];if(ae?.fontFace?.length??!1){let ze=await Ol(J.id,kl(ae),t);Ae=ze?.successes,Ft=ze?.errors}(Ae?.length>0||Se?.length>0)&&(J.fontFace=[...Ae],E.push(J)),J&&!ae?.fontFace?.length&&E.push(J),Ce&&(ae?.fontFace?.length??0)>0&&Ae?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),te=te.concat(Ft)}let ce=te.reduce((ae,Ce)=>ae.includes(Ce.message)?ae:[...ae,Ce.message],[]);if(E.length>0){let ae=le(E);await g(ae)}if(ce.length>0){let ae=new Error((0,Sn.__)("There was an error installing fonts."));throw ae.installationErrors=ce,ae}}finally{l(!1)}}async function v(x){if(!x?.id)throw new Error((0,Sn.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",x.id,{force:!0});let E=L(x);return await g(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=x=>{let te=(d?.[x.source??""]??[]).filter(ae=>ae.slug!==x.slug),ce={...d,[x.source??""]:te};return m(ce),x.fontFace&&x.fontFace.forEach(ae=>{ho(ae,"all")}),ce},le=x=>{let E=oe(x),te={...d,custom:Fl(d?.custom,E)};return m(te),K(E),te},oe=x=>x.map(({id:E,fontFace:te,...ce})=>({...ce,...te&&te.length>0?{fontFace:te.map(({id:ae,...Ce})=>Ce)}:{}})),K=x=>{x.forEach(E=>{E.fontFace&&E.fontFace.forEach(te=>{let ce=Wr(te?.src??"");ce&&tr(te,ce,"all")})})},ge=(x,E)=>{let te=d?.[x.source??""]??[],ce=Qo(x,E,te);m({...d,[x.source??""]:ce});let ae=$(x.slug,E?.fontStyle??"",E?.fontWeight??"",x.source??"custom");if(E&&ae)ho(E,"all");else{let Ce=Wr(E?.src??"");E&&Ce&&tr(E,Ce,"all")}},R=async x=>{if(!x.src)return;let E=Wr(x.src);!E||I.has(E)||(tr(x,E,"document"),I.add(E))};return(0,Al.jsx)(lt.Provider,{value:{libraryFontSelected:A,handleSetLibraryFontSelected:q,fontFamilies:d??{},baseCustomFonts:O,isFontActivated:$,getFontFacesActivated:be,loadFontFaceAsset:R,installFonts:H,uninstallFontFamily:v,toggleActivateFont:ge,getAvailableFontsOutline:N,modalTabOpen:y,setModalTabOpen:T,saveFontFamilies:g,isResolvingLibrary:f,isInstalling:n},children:e})}var $o=Jc;var ps=u(ie(),1),On=u(X(),1),du=u(xt(),1),Qh=u(mt(),1);var he=u(X(),1),yo=u(xt(),1),Cn=u(mt(),1),Cr=u(ve(),1),Ee=u(ie(),1);var qr=u(ie(),1),Tt=u(X(),1);var Rl=u(X(),1),Dt=u(ve(),1);var es=u(z(),1);function Qc(e){if(e.preview)return e.preview;if(e.src)return Array.isArray(e.src)?e.src[0]:e.src}function $c(e){return"fontStyle"in e&&e.fontStyle||"fontWeight"in e&&e.fontWeight?e:"fontFace"in e&&e.fontFace&&e.fontFace.length?e.fontFace.find(t=>t.fontStyle==="normal"&&t.fontWeight==="400")||e.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:e.fontFamily}}function ed({font:e,text:t}){let r=(0,Dt.useRef)(null),o=$c(e),s=zr(e);t=t||("name"in e?e.name:"");let a=e.preview,[n,l]=(0,Dt.useState)(!1),[h,f]=(0,Dt.useState)(!1),{loadFontFaceAsset:c}=(0,Dt.useContext)(lt),d=a??Qc(o),m=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Di(o),y={fontSize:"18px",lineHeight:1,opacity:h?"1":"0",...s,...g};return(0,Dt.useEffect)(()=>{let T=new window.IntersectionObserver(([A])=>{l(A.isIntersecting)},{});return r.current&&T.observe(r.current),()=>T.disconnect()},[r]),(0,Dt.useEffect)(()=>{(async()=>n&&(!m&&o.src&&await c(o),f(!0)))()},[o,n,c,m]),(0,es.jsx)("div",{ref:r,children:m?(0,es.jsx)("img",{src:d,loading:"lazy",alt:t,className:"font-library__font-variant_demo-image"}):(0,es.jsx)(Rl.__experimentalText,{style:y,className:"font-library__font-variant_demo-text",children:t})})}var Hr=ed;var zt=u(z(),1);function td({font:e,onClick:t,variantsText:r,navigatorPath:o}){let s=e.fontFace?.length||1,a={cursor:t?"pointer":"default"},n=(0,Tt.useNavigator)();return(0,zt.jsx)(Tt.Button,{__next40pxDefaultSize:!0,onClick:()=>{t(),o&&n.goTo(o)},style:a,className:"font-library__font-card",children:(0,zt.jsxs)(Tt.Flex,{justify:"space-between",wrap:!1,children:[(0,zt.jsx)(Hr,{font:e}),(0,zt.jsxs)(Tt.Flex,{justify:"flex-end",children:[(0,zt.jsx)(Tt.FlexItem,{children:(0,zt.jsx)(Tt.__experimentalText,{className:"font-library__font-card__count",children:r||(0,qr.sprintf)((0,qr._n)("%d variant","%d variants",s),s)})}),(0,zt.jsx)(Tt.FlexItem,{children:(0,zt.jsx)(so,{icon:(0,qr.isRTL)()?cr:dr})})]})]})})}var go=td;var ts=u(ve(),1),rs=u(X(),1);var Sr=u(z(),1);function rd({face:e,font:t}){let{isFontActivated:r,toggleActivateFont:o}=(0,ts.useContext)(lt),s=(t?.fontFace?.length??0)>0?r(t.slug,e.fontStyle,e.fontWeight,t.source):r(t.slug,void 0,void 0,t.source),a=()=>{if((t?.fontFace?.length??0)>0){o(t,e);return}o(t)},n=t.name+" "+Jo(e),l=(0,ts.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(rs.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(rs.CheckboxControl,{checked:s,onChange:a,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Hr,{font:e,text:n,onClick:a})})]})})}var El=rd;function Il(e){switch(e){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(e,10)}}function os(e){return e.sort((t,r)=>t.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&t.fontStyle!=="normal"?1:t.fontStyle===r.fontStyle?Il(t.fontWeight?.toString()??"normal")-Il(r.fontWeight?.toString()??"normal"):!t.fontStyle||!r.fontStyle?t.fontStyle?-1:1:t.fontStyle.localeCompare(r.fontStyle))}var fe=u(z(),1);function od(){let{baseCustomFonts:e,libraryFontSelected:t,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:a,saveFontFamilies:n,getFontFacesActivated:l}=(0,Cr.useContext)(lt),[h,f]=Te("typography.fontFamilies"),[c,d]=(0,Cr.useState)(!1),[m,g]=(0,Cr.useState)(null),[y]=Te("typography.fontFamilies",void 0,"base"),T=(0,Cn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:x}=R(yo.store);return x()},[]),_=!!(0,yo.useEntityRecord)("root","globalStyles",T)?.edits?.settings?.typography?.fontFamilies,S=h?.theme?h.theme.map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name)):[],b=new Set(S.map(R=>R.slug)),O=y?.theme?S.concat(y.theme.filter(R=>!b.has(R.slug)).map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name))):[],q=t?.source==="custom"&&t?.id,I=(0,Cn.useSelect)(R=>{let{canUser:x}=R(yo.store);return q&&x("delete",{kind:"postType",name:"wp_font_family",id:q})},[q]),N=!!t&&t?.source!=="theme"&&I,W=()=>{d(!0)},$=async()=>{g(null);try{await n(h),g({type:"success",message:(0,Ee.__)("Font family updated successfully.")})}catch(R){g({type:"error",message:(0,Ee.sprintf)((0,Ee.__)("There was an error updating the font family. %s"),R.message)})}},be=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(R.fontFace):[],H=R=>{let x=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Ee.sprintf)((0,Ee.__)("%1$d/%2$d variants active"),E,x)};(0,Cr.useEffect)(()=>{r(t)},[]);let v=t?l(t.slug,t.source).length:0,L=t?.fontFace?.length??(t?.fontFamily?1:0),le=v>0&&v!==L,oe=v===L,K=()=>{if(!t||!t?.source)return;let R=h?.[t.source]?.filter(E=>E.slug!==t.slug)??[],x=oe?R:[...R,t];f({...h,[t.source]:x}),t.fontFace&&t.fontFace.forEach(E=>{if(oe)ho(E,"all");else{let te=Wr(E?.src??"");te&&tr(E,te,"all")}})},ge=O.length>0||e.length>0;return(0,fe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,fe.jsx)("div",{className:"font-library__loading",children:(0,fe.jsx)(he.ProgressBar,{})}),!s&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsxs)(he.Navigator,{initialPath:t?"/fontFamily":"/",children:[(0,fe.jsx)(he.Navigator.Screen,{path:"/",children:(0,fe.jsxs)(he.__experimentalVStack,{spacing:"8",children:[m&&(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),!ge&&(0,fe.jsx)(he.__experimentalText,{as:"p",children:(0,Ee.__)("No fonts installed.")}),O.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Theme","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:O.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]}),e.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Custom","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]})]})}),(0,fe.jsxs)(he.Navigator.Screen,{path:"/fontFamily",children:[t&&(0,fe.jsx)(sd,{font:t,isOpen:c,setIsOpen:d,setNotice:g,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,fe.jsxs)(he.Flex,{justify:"flex-start",children:[(0,fe.jsx)(he.Navigator.BackButton,{icon:(0,Ee.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),g(null)},label:(0,Ee.__)("Back")}),(0,fe.jsx)(he.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:t?.name})]}),m&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsx)(he.__experimentalSpacer,{margin:1}),(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),(0,fe.jsx)(he.__experimentalSpacer,{margin:1})]}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsx)(he.__experimentalText,{children:(0,Ee.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsxs)(he.__experimentalVStack,{spacing:0,children:[(0,fe.jsx)(he.CheckboxControl,{className:"font-library__select-all",label:(0,Ee.__)("Select all"),checked:oe,onChange:K,indeterminate:le}),(0,fe.jsx)(he.__experimentalSpacer,{margin:8}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t&&be(t).map((R,x)=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(El,{font:t,face:R},`face${x}`)},`face${x}`))})]})]})]}),(0,fe.jsxs)(he.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[a&&(0,fe.jsx)(he.ProgressBar,{}),N&&(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:W,children:(0,Ee.__)("Delete")}),(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!_,accessibleWhenDisabled:!0,children:(0,Ee.__)("Update")})]})]})]})}function sd({font:e,isOpen:t,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:a}){let n=(0,he.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(e),n.goBack(),a(void 0),o({type:"success",message:(0,Ee.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Ee.__)("There was an error uninstalling the font family.")+f.message})}},h=()=>{r(!1)};return(0,fe.jsx)(he.__experimentalConfirmDialog,{isOpen:t,cancelButtonText:(0,Ee.__)("Cancel"),confirmButtonText:(0,Ee.__)("Delete"),onCancel:h,onConfirm:l,size:"medium",children:e&&(0,Ee.sprintf)((0,Ee.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),e.name)})}var ss=od;var Ke=u(ve(),1),ne=u(X(),1),Gl=u(mr(),1),Re=u(ie(),1);var jl=u(xt(),1);function Ll(e,t){let{category:r,search:o}=t,s=e||[];return r&&r!=="all"&&(s=s.filter(a=>a.categories&&a.categories.indexOf(r)!==-1)),o&&(s=s.filter(a=>a.font_family_settings&&a.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Bl(e){return e.reduce((t,r)=>({...t,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Vl(e,t,r){return t?!!r[e]?.[`${t.fontStyle}-${t.fontWeight}`]:!!r[e]}var vo=u(ie(),1),ut=u(X(),1),Pt=u(z(),1);function nd(){let e=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Pt.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Pt.jsx)(ut.Card,{children:(0,Pt.jsxs)(ut.CardBody,{children:[(0,Pt.jsx)(ut.__experimentalHeading,{level:2,children:(0,vo.__)("Connect to Google Fonts")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:3}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:e,children:(0,vo.__)("Allow access to Google Fonts")})]})})})}var Nl=nd;var Dl=u(ve(),1),ns=u(X(),1);var Fr=u(z(),1);function ad({face:e,font:t,handleToggleVariant:r,selected:o}){let s=()=>{if(t?.fontFace){r(t,e);return}r(t)},a=t.name+" "+Jo(e),n=(0,Dl.useId)();return(0,Fr.jsx)("div",{className:"font-library__font-card",children:(0,Fr.jsxs)(ns.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Fr.jsx)(ns.CheckboxControl,{checked:o,onChange:s,id:n}),(0,Fr.jsx)("label",{htmlFor:n,children:(0,Fr.jsx)(Hr,{font:e,text:a,onClick:s})})]})})}var zl=ad;var ee=u(z(),1),id={slug:"all",name:(0,Re._x)("All","font categories")},Ml="wp-font-library-google-fonts-permission",ld=500;function ud({slug:e}){let t=e==="google-fonts",r=()=>window.localStorage.getItem(Ml)==="true",[o,s]=(0,Ke.useState)(null),[a,n]=(0,Ke.useState)(null),[l,h]=(0,Ke.useState)([]),[f,c]=(0,Ke.useState)(1),[d,m]=(0,Ke.useState)({}),[g,y]=(0,Ke.useState)(t&&!r()),{installFonts:T,isInstalling:A}=(0,Ke.useContext)(lt),{record:_,isResolving:S}=(0,jl.useEntityRecord)("root","fontCollection",e);(0,Ke.useEffect)(()=>{let J=()=>{y(t&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[e,t]);let b=()=>{window.localStorage.setItem(Ml,"false"),window.dispatchEvent(new Event("storage"))};(0,Ke.useEffect)(()=>{s(null)},[e]),(0,Ke.useEffect)(()=>{h([])},[o]);let O=(0,Ke.useMemo)(()=>_?.font_families??[],[_]),q=_?.categories??[],I=[id,...q],N=(0,Ke.useMemo)(()=>Ll(O,d),[O,d]),W=Math.max(window.innerHeight,ld),$=Math.floor((W-417)/61),be=Math.ceil(N.length/$),H=(f-1)*$,v=f*$,L=N.slice(H,v),le=J=>{m({...d,category:J}),c(1)},K=(0,Gl.debounce)(J=>{m({...d,search:J}),c(1)},300),ge=(J,Se)=>{let Ae=Qo(J,Se,l);h(Ae)},R=Bl(l),x=()=>{h([])},E=l.length>0?l[0]?.fontFace?.length??0:0,te=E>0&&E!==o?.fontFace?.length,ce=E===o?.fontFace?.length,ae=()=>{let J=[];!ce&&o&&J.push(o),h(J)},Ce=async()=>{n(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async Se=>{Se.src&&(Se.file=await Tl(Se.src))}))}catch{n({type:"error",message:(0,Re.__)("Error installing the fonts, could not be downloaded.")});return}try{await T([J]),n({type:"success",message:(0,Re.__)("Fonts were installed successfully.")})}catch(Se){n({type:"error",message:Se.message})}x()},qe=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(J.fontFace):[];if(g)return(0,ee.jsx)(Nl,{});let ke=()=>e!=="google-fonts"||g||o?null:(0,ee.jsx)(ne.DropdownMenu,{icon:zs,label:(0,Re.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Re.__)("Revoke access to Google Fonts"),onClick:b}]});return(0,ee.jsxs)("div",{className:"font-library__tabpanel-layout",children:[S&&(0,ee.jsx)("div",{className:"font-library__loading",children:(0,ee.jsx)(ne.ProgressBar,{})}),!S&&_&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsxs)(ne.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,ee.jsxs)(ne.Navigator.Screen,{path:"/",children:[(0,ee.jsxs)(ne.__experimentalHStack,{justify:"space-between",children:[(0,ee.jsxs)(ne.__experimentalVStack,{children:[(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,children:_.name}),(0,ee.jsx)(ne.__experimentalText,{children:_.description})]}),(0,ee.jsx)(ke,{})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsxs)(ne.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,ee.jsx)(ne.SearchControl,{value:d.search,placeholder:(0,Re.__)("Font name\u2026"),label:(0,Re.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,ee.jsx)(ne.SelectControl,{__next40pxDefaultSize:!0,label:(0,Re.__)("Category"),value:d.category,onChange:le,children:I&&I.map(J=>(0,ee.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),!!_?.font_families?.length&&!N.length&&(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("No fonts found. Try with a different search term.")}),(0,ee.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(go,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,ee.jsxs)(ne.Navigator.Screen,{path:"/fontFamily",children:[(0,ee.jsxs)(ne.Flex,{justify:"flex-start",children:[(0,ee.jsx)(ne.Navigator.BackButton,{icon:(0,Re.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),n(null)},label:(0,Re.__)("Back")}),(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(ne.__experimentalSpacer,{margin:1}),(0,ee.jsx)(ne.Notice,{status:a.type,onRemove:()=>n(null),children:a.message}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:1})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("Select font variants to install.")}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.CheckboxControl,{className:"font-library__select-all",label:(0,Re.__)("Select all"),checked:ce,onChange:ae,indeterminate:te}),(0,ee.jsx)(ne.__experimentalVStack,{spacing:0,children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&qe(o).map((J,Se)=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(zl,{font:o,face:J,handleToggleVariant:ge,selected:Vl(o.slug,o.fontFace?J:null,R)})},`face${Se}`))})}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:16})]})]}),o&&(0,ee.jsx)(ne.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,ee.jsx)(ne.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ce,isBusy:A,disabled:l.length===0||A,accessibleWhenDisabled:!0,children:(0,Re.__)("Install")})}),!o&&(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,ee.jsx)(ne.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Ke.createInterpolateElement)((0,Re.sprintf)((0,Re._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",be),{div:(0,ee.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,ee.jsx)(ne.SelectControl,{"aria-label":(0,Re.__)("Current page"),value:f.toString(),options:[...Array(be)].map((J,Se)=>({label:(Se+1).toString(),value:(Se+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,ee.jsx)(ne.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Re.__)("Previous page"),icon:(0,Re.isRTL)()?Vo:Do,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,ee.jsx)(ne.Button,{onClick:()=>c(f+1),disabled:f===be,accessibleWhenDisabled:!0,label:(0,Re.__)("Next page"),icon:(0,Re.isRTL)()?Do:Vo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var as=ud;var Yr=u(ie(),1),tt=u(X(),1),wo=u(ve(),1);var is=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),Ul=(function(){var e,t,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var m=typeof is=="function"&&is;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=a[c]={exports:{}};s[c][0].call(y.exports,function(T){var A=s[c][1][T];return l(A||T)},y,y.exports,o,s,a,n)}return a[c].exports}for(var h=typeof is=="function"&&is,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){var n=4096,l=2*n+32,h=2*n-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=n,c.IBUF_MASK=h,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,m=this.input_.read(this.buf_,d,n);if(m<0)throw new Error("Unexpected end of input");if(m<n){this.eos_=1;for(var g=0;g<32;g++)this.buf_[d+m+g]=0}if(d===0){for(var g=0;g<32;g++)this.buf_[(n<<1)+g]=this.buf_[g];this.buf_ptr_=n}else this.buf_ptr_=0;this.bit_end_pos_+=m<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&h]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var m=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,m},s.exports=c},{}],2:[function(o,s,a){var n=0,l=1,h=2,f=3;a.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,a){var n=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,h=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,m=o("./context"),g=o("./prefix"),y=o("./transform"),T=8,A=16,_=256,S=704,b=26,O=6,q=2,I=8,N=255,W=1080,$=18,be=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),H=16,v=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),le=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function oe(D){var k;return D.readBits(1)===0?16:(k=D.readBits(3),k>0?17+k:(k=D.readBits(3),k>0?8+k:17))}function K(D){if(D.readBits(1)){var k=D.readBits(3);return k===0?1:D.readBits(k)+(1<<k)}return 0}function ge(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(D){var k=new ge,B,P,V;if(k.input_end=D.readBits(1),k.input_end&&D.readBits(1))return k;if(B=D.readBits(2)+4,B===7){if(k.is_metadata=!0,D.readBits(1)!==0)throw new Error("Invalid reserved bit");if(P=D.readBits(2),P===0)return k;for(V=0;V<P;V++){var de=D.readBits(8);if(V+1===P&&P>1&&de===0)throw new Error("Invalid size byte");k.meta_block_length|=de<<V*8}}else for(V=0;V<B;++V){var re=D.readBits(4);if(V+1===B&&B>4&&re===0)throw new Error("Invalid size nibble");k.meta_block_length|=re<<V*4}return++k.meta_block_length,!k.input_end&&!k.is_metadata&&(k.is_uncompressed=D.readBits(1)),k}function x(D,k,B){var P=k,V;return B.fillBitWindow(),k+=B.val_>>>B.bit_pos_&N,V=D[k].bits-I,V>0&&(B.bit_pos_+=I,k+=D[k].value,k+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=D[k].bits,D[k].value}function E(D,k,B,P){for(var V=0,de=T,re=0,se=0,we=32768,ue=[],Y=0;Y<32;Y++)ue.push(new c(0,0));for(d(ue,0,5,D,$);V<k&&we>0;){var Fe=0,Qe;if(P.readMoreInput(),P.fillBitWindow(),Fe+=P.val_>>>P.bit_pos_&31,P.bit_pos_+=ue[Fe].bits,Qe=ue[Fe].value&255,Qe<A)re=0,B[V++]=Qe,Qe!==0&&(de=Qe,we-=32768>>Qe);else{var yt=Qe-14,rt,$e,Ve=0;if(Qe===A&&(Ve=de),se!==Ve&&(re=0,se=Ve),rt=re,re>0&&(re-=2,re<<=yt),re+=P.readBits(yt)+3,$e=re-rt,V+$e>k)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var et=0;et<$e;et++)B[V+et]=se;V+=$e,se!==0&&(we-=$e<<15-se)}}if(we!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+we);for(;V<k;V++)B[V]=0}function te(D,k,B,P){var V=0,de,re=new Uint8Array(D);if(P.readMoreInput(),de=P.readBits(2),de===1){for(var se,we=D-1,ue=0,Y=new Int32Array(4),Fe=P.readBits(2)+1;we;)we>>=1,++ue;for(se=0;se<Fe;++se)Y[se]=P.readBits(ue)%D,re[Y[se]]=2;switch(re[Y[0]]=1,Fe){case 1:break;case 3:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[1]===Y[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(Y[0]===Y[1])throw new Error("[ReadHuffmanCode] invalid symbols");re[Y[1]]=1;break;case 4:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[0]===Y[3]||Y[1]===Y[2]||Y[1]===Y[3]||Y[2]===Y[3])throw new Error("[ReadHuffmanCode] invalid symbols");P.readBits(1)?(re[Y[2]]=3,re[Y[3]]=3):re[Y[0]]=2;break}}else{var se,Qe=new Uint8Array($),yt=32,rt=0,$e=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(se=de;se<$&&yt>0;++se){var Ve=be[se],et=0,ot;P.fillBitWindow(),et+=P.val_>>>P.bit_pos_&15,P.bit_pos_+=$e[et].bits,ot=$e[et].value,Qe[Ve]=ot,ot!==0&&(yt-=32>>ot,++rt)}if(!(rt===1||yt===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Qe,D,re,P)}if(V=d(k,B,I,re,D),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ce(D,k,B){var P,V;return P=x(D,k,B),V=g.kBlockLengthPrefixCode[P].nbits,g.kBlockLengthPrefixCode[P].offset+B.readBits(V)}function ae(D,k,B){var P;return D<H?(B+=v[D],B&=3,P=k[B]+L[D]):P=D-H+1,P}function Ce(D,k){for(var B=D[k],P=k;P;--P)D[P]=D[P-1];D[0]=B}function qe(D,k){var B=new Uint8Array(256),P;for(P=0;P<256;++P)B[P]=P;for(P=0;P<k;++P){var V=D[P];D[P]=B[V],V&&Ce(B,V)}}function ke(D,k){this.alphabet_size=D,this.num_htrees=k,this.codes=new Array(k+k*le[D+31>>>5]),this.htrees=new Uint32Array(k)}ke.prototype.decode=function(D){var k,B,P=0;for(k=0;k<this.num_htrees;++k)this.htrees[k]=P,B=te(this.alphabet_size,this.codes,P,D),P+=B};function J(D,k){var B={num_htrees:null,context_map:null},P,V=0,de,re;k.readMoreInput();var se=B.num_htrees=K(k)+1,we=B.context_map=new Uint8Array(D);if(se<=1)return B;for(P=k.readBits(1),P&&(V=k.readBits(4)+1),de=[],re=0;re<W;re++)de[re]=new c(0,0);for(te(se+V,de,0,k),re=0;re<D;){var ue;if(k.readMoreInput(),ue=x(de,0,k),ue===0)we[re]=0,++re;else if(ue<=V)for(var Y=1+(1<<ue)+k.readBits(ue);--Y;){if(re>=D)throw new Error("[DecodeContextMap] i >= context_map_size");we[re]=0,++re}else we[re]=ue-V,++re}return k.readBits(1)&&qe(we,D),B}function Se(D,k,B,P,V,de,re){var se=B*2,we=B,ue=x(k,B*W,re),Y;ue===0?Y=V[se+(de[we]&1)]:ue===1?Y=V[se+(de[we]-1&1)]+1:Y=ue-2,Y>=D&&(Y-=D),P[B]=Y,V[se+(de[we]&1)]=Y,++de[we]}function Ae(D,k,B,P,V,de){var re=V+1,se=B&V,we=de.pos_&h.IBUF_MASK,ue;if(k<8||de.bit_pos_+(k<<3)<de.bit_end_pos_){for(;k-- >0;)de.readMoreInput(),P[se++]=de.readBits(8),se===re&&(D.write(P,re),se=0);return}if(de.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;de.bit_pos_<32;)P[se]=de.val_>>>de.bit_pos_,de.bit_pos_+=8,++se,--k;if(ue=de.bit_end_pos_-de.bit_pos_>>3,we+ue>h.IBUF_MASK){for(var Y=h.IBUF_MASK+1-we,Fe=0;Fe<Y;Fe++)P[se+Fe]=de.buf_[we+Fe];ue-=Y,se+=Y,k-=Y,we=0}for(var Fe=0;Fe<ue;Fe++)P[se+Fe]=de.buf_[we+Fe];if(se+=ue,k-=ue,se>=re){D.write(P,re),se-=re;for(var Fe=0;Fe<se;Fe++)P[Fe]=P[re+Fe]}for(;se+k>=re;){if(ue=re-se,de.input_.read(P,se,ue)<ue)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");D.write(P,re),k-=ue,se=0}if(de.input_.read(P,se,k)<k)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");de.reset()}function Ft(D){var k=D.bit_pos_+7&-8,B=D.readBits(k-D.bit_pos_);return B==0}function ze(D){var k=new n(D),B=new h(k);oe(B);var P=R(B);return P.meta_block_length}a.BrotliDecompressedSize=ze;function sr(D,k){var B=new n(D);k==null&&(k=ze(D));var P=new Uint8Array(k),V=new l(P);return Kt(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}a.BrotliDecompressBuffer=sr;function Kt(D,k){var B,P=0,V=0,de=0,re,se=0,we,ue,Y,Fe,Qe=[16,15,11,4],yt=0,rt=0,$e=0,Ve=[new ke(0,0),new ke(0,0),new ke(0,0)],et,ot,pe,Qr=128+h.READ_SIZE;pe=new h(D),de=oe(pe),re=(1<<de)-16,we=1<<de,ue=we-1,Y=new Uint8Array(we+Qr+f.maxDictionaryWordLength),Fe=we,et=[],ot=[];for(var Tr=0;Tr<3*W;Tr++)et[Tr]=new c(0,0),ot[Tr]=new c(0,0);for(;!V;){var Me=0,ko,_t=[1<<28,1<<28,1<<28],Et=[0],vt=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pe,G,st=null,j=null,Ne,F=null,C,nr=0,Oe=null,Q=0,ar=0,ir=null,Ie=0,xe=0,Ge=0,je,Ye;for(B=0;B<3;++B)Ve[B].codes=null,Ve[B].htrees=null;pe.readMoreInput();var Gt=R(pe);if(Me=Gt.meta_block_length,P+Me>k.buffer.length){var lr=new Uint8Array(P+Me);lr.set(k.buffer),k.buffer=lr}if(V=Gt.input_end,ko=Gt.is_uncompressed,Gt.is_metadata){for(Ft(pe);Me>0;--Me)pe.readMoreInput(),pe.readBits(8);continue}if(Me!==0){if(ko){pe.bit_pos_=pe.bit_pos_+7&-8,Ae(k,Me,P,Y,ue,pe),P+=Me;continue}for(B=0;B<3;++B)vt[B]=K(pe)+1,vt[B]>=2&&(te(vt[B]+2,et,B*W,pe),te(b,ot,B*W,pe),_t[B]=ce(ot,B*W,pe),M[B]=1);for(pe.readMoreInput(),i=pe.readBits(2),U=H+(pe.readBits(4)<<i),Pe=(1<<i)-1,G=U+(48<<i),j=new Uint8Array(vt[0]),B=0;B<vt[0];++B)pe.readMoreInput(),j[B]=pe.readBits(2)<<1;var Le=J(vt[0]<<O,pe);Ne=Le.num_htrees,st=Le.context_map;var nt=J(vt[2]<<q,pe);for(C=nt.num_htrees,F=nt.context_map,Ve[0]=new ke(_,Ne),Ve[1]=new ke(S,vt[1]),Ve[2]=new ke(G,C),B=0;B<3;++B)Ve[B].decode(pe);for(Oe=0,ir=0,je=j[Et[0]],xe=m.lookupOffsets[je],Ge=m.lookupOffsets[je+1],Ye=Ve[1].htrees[0];Me>0;){var De,at,ft,Pr,ks,ct,bt,jt,$r,Ar,eo;for(pe.readMoreInput(),_t[1]===0&&(Se(vt[1],et,1,Et,w,M,pe),_t[1]=ce(ot,W,pe),Ye=Ve[1].htrees[Et[1]]),--_t[1],De=x(Ve[1].codes,Ye,pe),at=De>>6,at>=2?(at-=2,bt=-1):bt=0,ft=g.kInsertRangeLut[at]+(De>>3&7),Pr=g.kCopyRangeLut[at]+(De&7),ks=g.kInsertLengthPrefixCode[ft].offset+pe.readBits(g.kInsertLengthPrefixCode[ft].nbits),ct=g.kCopyLengthPrefixCode[Pr].offset+pe.readBits(g.kCopyLengthPrefixCode[Pr].nbits),rt=Y[P-1&ue],$e=Y[P-2&ue],Ar=0;Ar<ks;++Ar)pe.readMoreInput(),_t[0]===0&&(Se(vt[0],et,0,Et,w,M,pe),_t[0]=ce(ot,0,pe),nr=Et[0]<<O,Oe=nr,je=j[Et[0]],xe=m.lookupOffsets[je],Ge=m.lookupOffsets[je+1]),$r=m.lookup[xe+rt]|m.lookup[Ge+$e],Q=st[Oe+$r],--_t[0],$e=rt,rt=x(Ve[0].codes,Ve[0].htrees[Q],pe),Y[P&ue]=rt,(P&ue)===ue&&k.write(Y,we),++P;if(Me-=ks,Me<=0)break;if(bt<0){var $r;if(pe.readMoreInput(),_t[2]===0&&(Se(vt[2],et,2,Et,w,M,pe),_t[2]=ce(ot,2*W,pe),ar=Et[2]<<q,ir=ar),--_t[2],$r=(ct>4?3:ct-2)&255,Ie=F[ir+$r],bt=x(Ve[2].codes,Ve[2].htrees[Ie],pe),bt>=U){var Os,sa,to;bt-=U,sa=bt&Pe,bt>>=i,Os=(bt>>1)+1,to=(2+(bt&1)<<Os)-4,bt=U+(to+pe.readBits(Os)<<i)+sa}}if(jt=ae(bt,Qe,yt),jt<0)throw new Error("[BrotliDecompress] invalid distance");if(P<re&&se!==re?se=P:se=re,eo=P&ue,jt>se)if(ct>=f.minDictionaryWordLength&&ct<=f.maxDictionaryWordLength){var to=f.offsetsByLength[ct],na=jt-se-1,aa=f.sizeBitsByLength[ct],af=(1<<aa)-1,lf=na&af,ia=na>>aa;if(to+=lf*ct,ia<y.kNumTransforms){var Ts=y.transformDictionaryWord(Y,eo,to,ct,ia);if(eo+=Ts,P+=Ts,Me-=Ts,eo>=Fe){k.write(Y,we);for(var Oo=0;Oo<eo-Fe;Oo++)Y[Oo]=Y[Fe+Oo]}}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+jt+" len: "+ct+" bytes left: "+Me)}else throw new Error("Invalid backward reference. pos: "+P+" distance: "+jt+" len: "+ct+" bytes left: "+Me);else{if(bt>0&&(Qe[yt&3]=jt,++yt),ct>Me)throw new Error("Invalid backward reference. pos: "+P+" distance: "+jt+" len: "+ct+" bytes left: "+Me);for(Ar=0;Ar<ct;++Ar)Y[P&ue]=Y[P-jt&ue],(P&ue)===ue&&k.write(Y,we),++P,--Me}rt=Y[P-1&ue],$e=Y[P-2&ue]}P&=1073741823}}k.write(Y,P&ue)}a.BrotliDecompress=Kt,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,a){var n=o("base64-js");a.init=function(){var l=o("./decode").BrotliDecompressBuffer,h=n.toByteArray(o("./dictionary.bin.js"));return l(h)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,a){s.exports="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"},{}],6:[function(o,s,a){var n=o("./dictionary-browser");a.init=function(){a.dictionary=n.init()},a.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),a.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),a.minDictionaryWordLength=4,a.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,a){function n(d,m){this.bits=d,this.value=m}a.HuffmanCode=n;var l=15;function h(d,m){for(var g=1<<m-1;d&g;)g>>=1;return(d&g-1)+g}function f(d,m,g,y,T){do y-=g,d[m+y]=new n(T.bits,T.value);while(y>0)}function c(d,m,g){for(var y=1<<m-g;m<l&&(y-=d[m],!(y<=0));)++m,y<<=1;return m-g}a.BrotliBuildHuffmanTable=function(d,m,g,y,T){var A=m,_,S,b,O,q,I,N,W,$,be,H,v=new Int32Array(l+1),L=new Int32Array(l+1);for(H=new Int32Array(T),b=0;b<T;b++)v[y[b]]++;for(L[1]=0,S=1;S<l;S++)L[S+1]=L[S]+v[S];for(b=0;b<T;b++)y[b]!==0&&(H[L[y[b]]++]=b);if(W=g,$=1<<W,be=$,L[l]===1){for(O=0;O<be;++O)d[m+O]=new n(0,H[0]&65535);return be}for(O=0,b=0,S=1,q=2;S<=g;++S,q<<=1)for(;v[S]>0;--v[S])_=new n(S&255,H[b++]&65535),f(d,m+O,q,$,_),O=h(O,S);for(N=be-1,I=-1,S=g+1,q=2;S<=l;++S,q<<=1)for(;v[S]>0;--v[S])(O&N)!==I&&(m+=$,W=c(v,S,g),$=1<<W,be+=$,I=O&N,d[A+I]=new n(W+g&255,m-A-I&65535)),_=new n(S-g&255,H[b++]&65535),f(d,m+(O>>g),q,$,_),O=h(O,S);return be}},{}],8:[function(o,s,a){"use strict";a.byteLength=g,a.toByteArray=T,a.fromByteArray=S;for(var n=[],l=[],h=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)n[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function m(b){var O=b.length;if(O%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var q=b.indexOf("=");q===-1&&(q=O);var I=q===O?0:4-q%4;return[q,I]}function g(b){var O=m(b),q=O[0],I=O[1];return(q+I)*3/4-I}function y(b,O,q){return(O+q)*3/4-q}function T(b){for(var O,q=m(b),I=q[0],N=q[1],W=new h(y(b,I,N)),$=0,be=N>0?I-4:I,H=0;H<be;H+=4)O=l[b.charCodeAt(H)]<<18|l[b.charCodeAt(H+1)]<<12|l[b.charCodeAt(H+2)]<<6|l[b.charCodeAt(H+3)],W[$++]=O>>16&255,W[$++]=O>>8&255,W[$++]=O&255;return N===2&&(O=l[b.charCodeAt(H)]<<2|l[b.charCodeAt(H+1)]>>4,W[$++]=O&255),N===1&&(O=l[b.charCodeAt(H)]<<10|l[b.charCodeAt(H+1)]<<4|l[b.charCodeAt(H+2)]>>2,W[$++]=O>>8&255,W[$++]=O&255),W}function A(b){return n[b>>18&63]+n[b>>12&63]+n[b>>6&63]+n[b&63]}function _(b,O,q){for(var I,N=[],W=O;W<q;W+=3)I=(b[W]<<16&16711680)+(b[W+1]<<8&65280)+(b[W+2]&255),N.push(A(I));return N.join("")}function S(b){for(var O,q=b.length,I=q%3,N=[],W=16383,$=0,be=q-I;$<be;$+=W)N.push(_(b,$,$+W>be?be:$+W));return I===1?(O=b[q-1],N.push(n[O>>2]+n[O<<4&63]+"==")):I===2&&(O=(b[q-2]<<8)+b[q-1],N.push(n[O>>10]+n[O>>4&63]+n[O<<2&63]+"=")),N.join("")}},{}],9:[function(o,s,a){function n(l,h){this.offset=l,this.nbits=h}a.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],a.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],a.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],a.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],a.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,a){function n(h){this.buffer=h,this.pos=0}n.prototype.read=function(h,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)h[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},a.BrotliInput=n;function l(h){this.buffer=h,this.pos=0}l.prototype.write=function(h,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(h.subarray(0,f),this.pos),this.pos+=f,f},a.BrotliOutput=l},{}],11:[function(o,s,a){var n=o("./dictionary"),l=0,h=1,f=2,c=3,d=4,m=5,g=6,y=7,T=8,A=9,_=10,S=11,b=12,O=13,q=14,I=15,N=16,W=17,$=18,be=19,H=20;function v(oe,K,ge){this.prefix=new Uint8Array(oe.length),this.transform=K,this.suffix=new Uint8Array(ge.length);for(var R=0;R<oe.length;R++)this.prefix[R]=oe.charCodeAt(R);for(var R=0;R<ge.length;R++)this.suffix[R]=ge.charCodeAt(R)}var L=[new v("",l,""),new v("",l," "),new v(" ",l," "),new v("",b,""),new v("",_," "),new v("",l," the "),new v(" ",l,""),new v("s ",l," "),new v("",l," of "),new v("",_,""),new v("",l," and "),new v("",O,""),new v("",h,""),new v(", ",l," "),new v("",l,", "),new v(" ",_," "),new v("",l," in "),new v("",l," to "),new v("e ",l," "),new v("",l,'"'),new v("",l,"."),new v("",l,'">'),new v("",l,` +var Sf=Object.create;var ga=Object.defineProperty;var Cf=Object.getOwnPropertyDescriptor;var _f=Object.getOwnPropertyNames;var Ff=Object.getPrototypeOf,kf=Object.prototype.hasOwnProperty;var dt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var He=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Of=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of _f(t))!kf.call(e,s)&&s!==r&&ga(e,s,{get:()=>t[s],enumerable:!(o=Cf(t,s))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?Sf(Ff(e)):{},Of(t||!e||!e.__esModule?ga(r,"default",{value:e,enumerable:!0}):r,e));var ie=He((By,ya)=>{ya.exports=window.wp.i18n});var ve=He((Ny,ba)=>{ba.exports=window.wp.element});var Rr=He((zy,wa)=>{wa.exports=window.React});var D=He((My,Ca)=>{Ca.exports=window.ReactJSXRuntime});var Ir=He((vv,qa)=>{qa.exports=window.wp.primitives});var pr=He((Lv,Ya)=>{Ya.exports=window.wp.compose});var Ws=He((Bv,Za)=>{Za.exports=window.wp.privateApis});var X=He((Gv,ti)=>{ti.exports=window.wp.components});var fi=He((e1,ui)=>{ui.exports=window.wp.editor});var wt=He((t1,ci)=>{ci.exports=window.wp.coreData});var pt=He((r1,di)=>{di.exports=window.wp.data});var Br=He((o1,pi)=>{pi.exports=window.wp.blocks});var it=He((s1,mi)=>{mi.exports=window.wp.blockEditor});var gi=He((f1,hi)=>{hi.exports=window.wp.styleEngine});var xi=He((S1,wi)=>{"use strict";wi.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var o,s,n;if(Array.isArray(t)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!e(t[s],r[s]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;for(s of t.entries())if(!e(s[1],r.get(s[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(t[s]!==r[s])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(n=Object.keys(t),o=n.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,n[s]))return!1;for(s=o;s--!==0;){var a=n[s];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Fi=He((_1,_i)=>{"use strict";var pc=function(t){return mc(t)&&!hc(t)};function mc(e){return!!e&&typeof e=="object"}function hc(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||vc(e)}var gc=typeof Symbol=="function"&&Symbol.for,yc=gc?Symbol.for("react.element"):60103;function vc(e){return e.$$typeof===yc}function bc(e){return Array.isArray(e)?[]:{}}function lo(e,t){return t.clone!==!1&&t.isMergeableObject(e)?Nr(bc(e),e,t):e}function wc(e,t,r){return e.concat(t).map(function(o){return lo(o,r)})}function xc(e,t){if(!t.customMerge)return Nr;var r=t.customMerge(e);return typeof r=="function"?r:Nr}function Sc(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function Si(e){return Object.keys(e).concat(Sc(e))}function Ci(e,t){try{return t in e}catch{return!1}}function Cc(e,t){return Ci(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function _c(e,t,r){var o={};return r.isMergeableObject(e)&&Si(e).forEach(function(s){o[s]=lo(e[s],r)}),Si(t).forEach(function(s){Cc(e,s)||(Ci(e,s)&&r.isMergeableObject(t[s])?o[s]=xc(s,r)(e[s],t[s],r):o[s]=lo(t[s],r))}),o}function Nr(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||wc,r.isMergeableObject=r.isMergeableObject||pc,r.cloneUnlessOtherwiseSpecified=lo;var o=Array.isArray(t),s=Array.isArray(e),n=o===s;return n?o?r.arrayMerge(e,t,r):_c(e,t,r):lo(t,r)}Nr.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(o,s){return Nr(o,s,r)},{})};var Fc=Nr;_i.exports=Fc});var kn=He((jb,Sl)=>{Sl.exports=window.wp.keycodes});var Ol=He((Qb,kl)=>{kl.exports=window.wp.apiFetch});var ef=He((x_,$u)=>{$u.exports=window.wp.date});function va(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(r=va(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function Tf(){for(var e,t,r=0,o="",s=arguments.length;r<s;r++)(e=arguments[r])&&(t=va(e))&&(o&&(o+=" "),o+=t);return o}var Ze=Tf;var Sa=u(Rr(),1),xa={};function Ps(e,t){let r=Sa.useRef(xa);return r.current===xa&&(r.current=e(t)),r}function Pf(e,t){return function(o,...s){let n=new URL(e);return n.searchParams.set("code",o.toString()),s.forEach(a=>n.searchParams.append("args[]",a)),`${t} error #${o}; visit ${n} for the full message.`}}var Af=Pf("https://base-ui.com/production-error","Base UI"),_a=Af;var fr=u(Rr(),1);function As(e,t,r,o){let s=Ps(ka).current;return Rf(s,e,t,r,o)&&Oa(s,[e,t,r,o]),s.callback}function Fa(e){let t=Ps(ka).current;return Ef(t,e)&&Oa(t,e),t.callback}function ka(){return{callback:null,cleanup:null,refs:[]}}function Rf(e,t,r,o,s){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==s}function Ef(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Oa(e,t){if(e.refs=t,t.every(r=>r==null)){e.callback=null;return}e.callback=r=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),r!=null){let o=Array(t.length).fill(null);for(let s=0;s<t.length;s+=1){let n=t[s];if(n!=null)switch(typeof n){case"function":{let a=n(r);typeof a=="function"&&(o[s]=a);break}case"object":{n.current=r;break}default:}}e.cleanup=()=>{for(let s=0;s<t.length;s+=1){let n=t[s];if(n!=null)switch(typeof n){case"function":{let a=o[s];typeof a=="function"?a():n(null);break}case"object":{n.current=null;break}default:}}}}}}var Aa=u(Rr(),1);var Ta=u(Rr(),1),If=parseInt(Ta.version,10);function Pa(e){return If>=e}function Rs(e){if(!Aa.isValidElement(e))return null;let t=e,r=t.props;return(Pa(19)?r?.ref:t.ref)??null}function ro(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}var Zy=Object.freeze([]),Er=Object.freeze({});function Ra(e,t){let r={};for(let o in e){let s=e[o];if(t?.hasOwnProperty(o)){let n=t[o](s);n!=null&&Object.assign(r,n);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Ea(e,t){return typeof e=="function"?e(t):e}function Ia(e,t){return typeof e=="function"?e(t):e}var Es={};function ur(e,t,r,o,s){if(!r&&!o&&!s&&!e)return To(t);let n=To(e);return t&&(n=oo(n,t)),r&&(n=oo(n,r)),o&&(n=oo(n,o)),s&&(n=oo(n,s)),n}function La(e){if(e.length===0)return Es;if(e.length===1)return To(e[0]);let t=To(e[0]);for(let r=1;r<e.length;r+=1)t=oo(t,e[r]);return t}function To(e){return Is(e)?{...Va(e,Es)}:Lf(e)}function oo(e,t){return Is(t)?Va(t,e):Bf(e,t)}function Lf(e){let t={...e};for(let r in t){let o=t[r];Ba(r,o)&&(t[r]=Na(o))}return t}function Bf(e,t){if(!t)return e;for(let r in t){let o=t[r];switch(r){case"style":{e[r]=ro(e.style,o);break}case"className":{e[r]=Ls(e.className,o);break}default:Ba(r,o)?e[r]=Vf(e[r],o):e[r]=o}}return e}function Ba(e,t){let r=e.charCodeAt(0),o=e.charCodeAt(1),s=e.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof t=="function"||typeof t>"u")}function Is(e){return typeof e=="function"}function Va(e,t){return Is(e)?e(t):e??Es}function Vf(e,t){return t?e?(...r)=>{let o=r[0];if(Da(o)){let n=o;za(n);let a=t(...r);return n.baseUIHandlerPrevented||e?.(...r),a}let s=t(...r);return e?.(...r),s}:Na(t):e}function Na(e){return e&&((...t)=>{let r=t[0];return Da(r)&&za(r),e(...t)})}function za(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Ls(e,t){return t?e?t+" "+e:t:e}function Da(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Bs=u(Rr(),1);function Ma(e,t,r={}){let o=t.render,s=Nf(t,r);if(r.enabled===!1)return null;let n=r.state??Er;return Mf(e,o,s,n)}function Nf(e,t={}){let{className:r,style:o,render:s}=e,{state:n=Er,ref:a,props:l,stateAttributesMapping:h,enabled:f=!0}=t,c=f?Ea(r,n):void 0,d=f?Ia(o,n):void 0,m=f?Ra(n,h):Er,g=f&&l?zf(l):void 0,y=f?ro(m,g)??{}:Er;return typeof document<"u"&&(f?Array.isArray(a)?y.ref=Fa([y.ref,Rs(s),...a]):y.ref=As(y.ref,Rs(s),a):As(null,null)),f?(c!==void 0&&(y.className=Ls(y.className,c)),d!==void 0&&(y.style=ro(y.style,d)),y):Er}function zf(e){return Array.isArray(e)?La(e):ur(void 0,e)}var Df=Symbol.for("react.lazy");function Mf(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let s=ur(r,t.props);s.ref=r.ref;let n=t;return n?.$$typeof===Df&&(n=fr.Children.toArray(t)[0]),fr.cloneElement(n,s)}if(e&&typeof e=="string")return jf(e,r);throw new Error(_a(8))}function jf(e,t){return e==="button"?(0,Bs.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Bs.createElement)("img",{alt:"",...t,key:t.key}):fr.createElement(e,t)}function Po(e){return Ma(e.defaultTagName??"div",e,e)}var Ua=u(ve(),1),Vs="data-wp-hash";function Ns(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Uf(document)),e.__wpStyleRuntime}function Gf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Vs}]`))if(r.getAttribute(Vs)===t)return!0;return!1}function Wa(e,t,r){if(!e.head)return;let o=Ns(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Gf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Vs,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Uf(e){let t=Ns();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Wa(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Ha(e,t){let r=Ns();r.styles.set(e,t);for(let o of r.documents.keys())Wa(o,e,t)}typeof process>"u",Ha("0c8601dd83",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');var ja={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",Ha("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Ga={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ao=(0,Ua.forwardRef)(function({variant:t="body-md",render:r,className:o,...s},n){return Po({render:r,defaultTagName:"span",ref:n,props:ur(s,{className:Ze(ja.text,Ga.heading,Ga.p,ja[t],o)})})});var Ro=u(ve(),1),so=(0,Ro.forwardRef)(({icon:e,size:t=24,...r},o)=>(0,Ro.cloneElement)(e,{width:t,height:t,...r,ref:o}));var Eo=u(Ir(),1),zs=u(D(),1),cr=(0,zs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,zs.jsx)(Eo.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Io=u(Ir(),1),Ds=u(D(),1),dr=(0,Ds.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Io.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Lo=u(Ir(),1),Ms=u(D(),1),js=(0,Ms.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ms.jsx)(Lo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Bo=u(Ir(),1),Gs=u(D(),1),Vo=(0,Gs.jsx)(Bo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Gs.jsx)(Bo.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var No=u(Ir(),1),Us=u(D(),1),zo=(0,Us.jsx)(No.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Us.jsx)(No.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Xa=u(ve(),1),Hs="data-wp-hash";function qs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Hf(document)),e.__wpStyleRuntime}function Wf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Hs}]`))if(r.getAttribute(Hs)===t)return!0;return!1}function Ka(e,t,r){if(!e.head)return;let o=qs(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Wf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Hs,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Hf(e){let t=qs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Ka(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function qf(e,t){let r=qs();r.styles.set(e,t);for(let o of r.documents.keys())Ka(o,e,t)}typeof process>"u",qf("b51ff41489","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");var Yf={stack:"_19ce0419607e1896__stack"},Zf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Lr=(0,Xa.forwardRef)(function({direction:t,gap:r,align:o,justify:s,wrap:n,render:a,...l},h){let f={gap:r&&Zf[r],alignItems:o,justifyContent:s,flexDirection:t,flexWrap:n};return Po({render:a,ref:h,props:ur(l,{style:f,className:Yf.stack})})});var Ja=u(ve(),1),Qa=u(D(),1),$a=(0,Ja.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...s},n)=>(0,Qa.jsx)(o,{ref:n,className:Ze("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...s,children:e}));$a.displayName="NavigableRegion";var ei=$a;var ri=u(X(),1),{Fill:oi,Slot:si}=(0,ri.createSlotFill)("SidebarToggle");var Ft=u(D(),1),Ys="data-wp-hash";function Zs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Kf(document)),e.__wpStyleRuntime}function Xf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ys}]`))if(r.getAttribute(Ys)===t)return!0;return!1}function ni(e,t,r){if(!e.head)return;let o=Zs(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Xf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Ys,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Kf(e){let t=Zs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)ni(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Jf(e,t){let r=Zs();r.styles.set(e,t);for(let o of r.documents.keys())ni(o,e,t)}typeof process>"u",Jf("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var mr={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function ai({headingLevel:e=1,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,actions:a,showSidebarToggle:l=!0}){let h=`h${e}`;return(0,Ft.jsxs)(Lr,{direction:"column",className:mr.header,children:[(0,Ft.jsxs)(Lr,{className:mr["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Ft.jsxs)(Lr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[l&&(0,Ft.jsx)(si,{bubblesVirtually:!0,className:mr["sidebar-toggle-slot"]}),o&&(0,Ft.jsx)("div",{className:mr["header-visual"],"aria-hidden":"true",children:o}),s&&(0,Ft.jsx)(Ao,{className:mr["header-title"],render:(0,Ft.jsx)(h,{}),variant:"heading-lg",children:s}),t,r]}),a&&(0,Ft.jsx)(Lr,{align:"center",className:mr["header-actions"],direction:"row",gap:"sm",children:a})]}),n&&(0,Ft.jsx)(Ao,{render:(0,Ft.jsx)("p",{}),variant:"body-md",className:mr["header-subtitle"],children:n})]})}var no=u(D(),1),Ks="data-wp-hash";function Js(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&$f(document)),e.__wpStyleRuntime}function Qf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ks}]`))if(r.getAttribute(Ks)===t)return!0;return!1}function ii(e,t,r){if(!e.head)return;let o=Js(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Qf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Ks,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function $f(e){let t=Js();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)ii(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function ec(e,t){let r=Js();r.styles.set(e,t);for(let o of r.documents.keys())ii(o,e,t)}typeof process>"u",ec("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Xs={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function li({headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,children:a,className:l,actions:h,ariaLabel:f,hasPadding:c=!1,showSidebarToggle:d=!0}){let m=Ze(Xs.page,l);return(0,no.jsxs)(ei,{className:m,ariaLabel:f??(typeof s=="string"?s:""),children:[(s||t||r||h||o)&&(0,no.jsx)(ai,{headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,actions:h,showSidebarToggle:d}),c?(0,no.jsx)("div",{className:Ze(Xs.content,Xs["has-padding"]),children:a}):a]})}li.SidebarToggleFill=oi;var Qs=li;var Jr=u(ie()),gf=u(X()),yf=u(fi()),Fs=u(wt()),vf=u(pt()),bf=u(ve());var pf=u(X(),1),mf=u(Br(),1),_y=u(pt(),1),Fy=u(it(),1),ia=u(ve(),1),ky=u(pr(),1);function Vr(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let n of t){let a=s[n];s=s[n]=Array.isArray(a)?[...a]:{...a}}return s[o]=r,e}var xt=(e,t,r)=>{let o=Array.isArray(t)?t:t.split("."),s=e;return o.forEach(n=>{s=s?.[n]}),s??r};var tc=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.minWidth","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function $s(e,t,r){let o=r?".blocks."+r:"",s=t?"."+t:"",n=`settings${o}${s}`,a=`settings${s}`;if(t)return xt(e,n)??xt(e,a);let l={};return tc.forEach(h=>{let f=xt(e,`settings${o}.${h}`)??xt(e,`settings.${h}`);f!==void 0&&(l=Vr(l,h.split("."),f))}),l}function en(e,t,r,o){let s=o?".blocks."+o:"",n=t?"."+t:"",a=`settings${s}${n}`;return Vr(e,a.split("."),r)}var uc=u(gi(),1);var rc="1600px",oc="320px",sc=1,nc=.25,ac=.75,ic="14px";function yi({minimumFontSize:e,maximumFontSize:t,fontSize:r,minimumViewportWidth:o=oc,maximumViewportWidth:s=rc,scaleFactor:n=sc,minimumFontSizeLimit:a}){if(a=It(a)?a:ic,r){let b=It(r);if(!b?.unit||!b?.value)return null;let P=It(a,{coerceTo:b.unit});if(P?.value&&!e&&!t&&b?.value<=P?.value)return null;if(t||(t=`${b.value}${b.unit}`),!e){let q=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(q),nc),ac),N=ao(b.value*I,3);P?.value&&N<P?.value?e=`${P.value}${P.unit}`:e=`${N}${b.unit}`}}let l=It(e),h=l?.unit||"rem",f=It(t,{coerceTo:h});if(!l||!f)return null;let c=It(e,{coerceTo:"rem"}),d=It(s,{coerceTo:h}),m=It(o,{coerceTo:h});if(!d||!m||!c)return null;let g=d.value-m.value;if(!g)return null;let y=ao(m.value/100,3),T=ao(y,3)+h,O=100*((f.value-l.value)/g),_=ao((O||1)*n,3),S=`${c.value}${c.unit} + ((1vw - ${T}) * ${_})`;return`clamp(${e}, ${S}, ${t})`}function It(e,t={}){if(typeof e!="string"&&typeof e!="number")return null;isFinite(e)&&(e=`${e}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...t},n=s?.join("|"),a=new RegExp(`^(\\d*\\.?\\d+)(${n}){1,1}$`),l=e.toString().match(a);if(!l||l.length<3)return null;let[,h,f]=l,c=parseFloat(h);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:ao(c,3),unit:f}:null}function ao(e,t=3){let r=Math.pow(10,t);return Math.round(e*r)/r}function tn(e){let t=e?.fluid;return t===!0||t&&typeof t=="object"&&Object.keys(t).length>0}function lc(e){let t=e?.typography??{},r=e?.layout,o=It(r?.wideSize)?r?.wideSize:null;return tn(t)&&o?{fluid:{maxViewportWidth:o,...typeof t.fluid=="object"?t.fluid:{}}}:{fluid:t?.fluid}}function vi(e,t){let{size:r}=e;if(!r||r==="0"||e?.fluid===!1||!tn(t?.typography)&&!tn(e))return r;let o=lc(t)?.fluid??{},s=yi({minimumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.min,maximumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var fc=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:e})=>`url( '#wp-duotone-${e}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(e,t)=>vi(e,t),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:e})=>e,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function bi(e,t,r=[],o="slug",s){let n=[t?xt(e,["blocks",t,...r]):void 0,xt(e,r)].filter(Boolean);for(let a of n)if(a){let l=["custom","theme","default"];for(let h of l){let f=a[h];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||bi(e,t,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function cc(e,t,r,[o,s]=[]){let n=fc.find(l=>l.cssVarInfix===o);if(!n||!e.settings)return r;let a=bi(e.settings,t,n.path,"slug",s);if(a){let{valueKey:l}=n,h=a[l];return Do(e,t,h)}return r}function dc(e,t,r,o=[]){let s=(t?xt(e?.settings??{},["blocks",t,"custom",...o]):void 0)??xt(e?.settings??{},["custom",...o]);return s?Do(e,t,s):r}function Do(e,t,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=xt(e,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",n=")",a;if(r.startsWith(o))a=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(n))a=r.slice(s.length,-n.length).split("--");else return r;let[l,...h]=a;return l==="preset"?cc(e,t,r,h):l==="custom"?dc(e,t,r,h):r}function Mo(e,t,r,o=!0){let s=t?"."+t:"",n=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!e)return;let a=xt(e,n);return o?Do(e,r,a):a}function rn(e,t,r,o){let s=t?"."+t:"",n=o?`styles.blocks.${o}${s}`:`styles${s}`;return Vr(e,n.split("."),r)}var on=u(xi(),1);function io(e,t){return typeof e!="object"||typeof t!="object"?e===t:(0,on.default)(e?.styles,t?.styles)&&(0,on.default)(e?.settings,t?.settings)}var Ti=u(Fi(),1);function ki(e){return Object.prototype.toString.call(e)==="[object Object]"}function Oi(e){var t,r;return ki(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(ki(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function hr(e,t){return(0,Ti.default)(e,t,{isMergeableObject:Oi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var kc={grad:.9,turn:360,rad:360/(2*Math.PI)},Ut=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Xe=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},kt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Vi=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},Pi=function(e){return{r:kt(e.r,0,255),g:kt(e.g,0,255),b:kt(e.b,0,255),a:kt(e.a)}},sn=function(e){return{r:Xe(e.r),g:Xe(e.g),b:Xe(e.b),a:Xe(e.a,3)}},Oc=/^#([0-9a-f]{3,8})$/i,jo=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Ni=function(e){var t=e.r,r=e.g,o=e.b,s=e.a,n=Math.max(t,r,o),a=n-Math.min(t,r,o),l=a?n===t?(r-o)/a:n===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(l<0?l+6:l),s:n?a/n*100:0,v:n/255*100,a:s}},zi=function(e){var t=e.h,r=e.s,o=e.v,s=e.a;t=t/360*6,r/=100,o/=100;var n=Math.floor(t),a=o*(1-r),l=o*(1-(t-n)*r),h=o*(1-(1-t+n)*r),f=n%6;return{r:255*[o,l,a,a,h,o][f],g:255*[h,o,o,l,a,a][f],b:255*[a,a,h,o,o,l][f],a:s}},Ai=function(e){return{h:Vi(e.h),s:kt(e.s,0,100),l:kt(e.l,0,100),a:kt(e.a)}},Ri=function(e){return{h:Xe(e.h),s:Xe(e.s),l:Xe(e.l),a:Xe(e.a,3)}},Ei=function(e){return zi((r=(t=e).s,{h:t.h,s:(r*=((o=t.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:t.a}));var t,r,o},uo=function(e){return{h:(t=Ni(e)).h,s:(s=(200-(r=t.s))*(o=t.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:t.a};var t,r,o,s},Tc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Pc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ac=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Rc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ln={string:[[function(e){var t=Oc.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Xe(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Xe(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=Ac.exec(e)||Rc.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:Pi({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=Tc.exec(e)||Pc.exec(e);if(!t)return null;var r,o,s=Ai({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(kc[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Ei(s)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,s=e.a,n=s===void 0?1:s;return Ut(t)&&Ut(r)&&Ut(o)?Pi({r:Number(t),g:Number(r),b:Number(o),a:Number(n)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,s=e.a,n=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var a=Ai({h:Number(t),s:Number(r),l:Number(o),a:Number(n)});return Ei(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,s=e.a,n=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var a=(function(l){return{h:Vi(l.h),s:kt(l.s,0,100),v:kt(l.v,0,100),a:kt(l.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(n)});return zi(a)},"hsv"]]},Ii=function(e,t){for(var r=0;r<t.length;r++){var o=t[r][0](e);if(o)return[o,t[r][1]]}return[null,void 0]},Ec=function(e){return typeof e=="string"?Ii(e.trim(),ln.string):typeof e=="object"&&e!==null?Ii(e,ln.object):[null,void 0]};var nn=function(e,t){var r=uo(e);return{h:r.h,s:kt(r.s+100*t,0,100),l:r.l,a:r.a}},an=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},Li=function(e,t){var r=uo(e);return{h:r.h,s:r.s,l:kt(r.l+100*t,0,100),a:r.a}},un=(function(){function e(t){this.parsed=Ec(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return Xe(an(this.rgba),2)},e.prototype.isDark=function(){return an(this.rgba)<.5},e.prototype.isLight=function(){return an(this.rgba)>=.5},e.prototype.toHex=function(){return t=sn(this.rgba),r=t.r,o=t.g,s=t.b,a=(n=t.a)<1?jo(Xe(255*n)):"","#"+jo(r)+jo(o)+jo(s)+a;var t,r,o,s,n,a},e.prototype.toRgb=function(){return sn(this.rgba)},e.prototype.toRgbString=function(){return t=sn(this.rgba),r=t.r,o=t.g,s=t.b,(n=t.a)<1?"rgba("+r+", "+o+", "+s+", "+n+")":"rgb("+r+", "+o+", "+s+")";var t,r,o,s,n},e.prototype.toHsl=function(){return Ri(uo(this.rgba))},e.prototype.toHslString=function(){return t=Ri(uo(this.rgba)),r=t.h,o=t.s,s=t.l,(n=t.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+n+")":"hsl("+r+", "+o+"%, "+s+"%)";var t,r,o,s,n},e.prototype.toHsv=function(){return t=Ni(this.rgba),{h:Xe(t.h),s:Xe(t.s),v:Xe(t.v),a:Xe(t.a,3)};var t},e.prototype.invert=function(){return Lt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),Lt(nn(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),Lt(nn(this.rgba,-t))},e.prototype.grayscale=function(){return Lt(nn(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),Lt(Li(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),Lt(Li(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?Lt({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Xe(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=uo(this.rgba);return typeof t=="number"?Lt({h:t,s:r.s,l:r.l,a:r.a}):Xe(r.h)},e.prototype.isEqual=function(t){return this.toHex()===Lt(t).toHex()},e})(),Lt=function(e){return e instanceof un?e:new un(e)},Bi=[],Di=function(e){e.forEach(function(t){Bi.indexOf(t)<0&&(t(un,ln),Bi.push(t))})};var fn=u(ve(),1);var Mi=u(ve(),1),Je=(0,Mi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var ji=u(D(),1);function fo({children:e,value:t,baseValue:r,onChange:o,fontLibraryEnabled:s}){let n=(0,fn.useMemo)(()=>hr(r,t),[r,t]),a=(0,fn.useMemo)(()=>({user:t,base:r,merged:n,onChange:o,fontLibraryEnabled:s}),[t,r,n,o,s]);return(0,ji.jsx)(Je.Provider,{value:a,children:e})}var Wt=u(X(),1),al=u(ie(),1);var qc=u(pt(),1),Yc=u(wt(),1);var Gi=u(D(),1);function cn({className:e,...t}){return(0,Gi.jsx)(so,{className:Ze(e,"global-styles-ui-icon-with-current-color"),...t})}var Jt=u(X(),1);var gr=u(D(),1);function Ic({icon:e,children:t,...r}){return(0,gr.jsxs)(Jt.__experimentalItem,{...r,children:[e&&(0,gr.jsxs)(Jt.__experimentalHStack,{justify:"flex-start",children:[(0,gr.jsx)(cn,{icon:e,size:24}),(0,gr.jsx)(Jt.FlexItem,{children:t})]}),!e&&t]})}function Bt(e){return(0,gr.jsx)(Jt.Navigator.Button,{as:Ic,...e})}var Vc=u(X(),1);var Nc=u(ie(),1),Xi=u(it(),1);var dn=function(e){var t=e/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},pn=function(e){return .2126*dn(e.r)+.7152*dn(e.g)+.0722*dn(e.b)};function Ui(e){e.prototype.luminance=function(){return t=pn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*t)/o+0;var t,r,o},e.prototype.contrast=function(t){t===void 0&&(t="#FFF");var r,o,s,n,a,l,h,f=t instanceof e?t:new e(t);return n=this.rgba,a=f.toRgb(),l=pn(n),h=pn(a),r=l>h?(l+.05)/(h+.05):(h+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},e.prototype.isReadable=function(t,r){return t===void 0&&(t="#FFF"),r===void 0&&(r={}),this.contrast(t)>=(l=(a=(o=r).size)===void 0?"normal":a,(n=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:n==="AA"&&l==="large"?3:4.5);var o,s,n,a,l}}var Rt=u(ve(),1),qi=u(pt(),1),Yi=u(wt(),1),hn=u(ie(),1);var De=u(ie(),1),Y1={link:[{value:":link",label:(0,De.__)("Link")},{value:":any-link",label:(0,De.__)("Any Link")},{value:":visited",label:(0,De.__)("Visited")},{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}],button:[{value:":link",label:(0,De.__)("Link")},{value:":any-link",label:(0,De.__)("Any Link")},{value:":visited",label:(0,De.__)("Visited")},{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}]},Z1={"core/button":[{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}]},X1=[{value:"tablet",label:(0,De.__)("Tablet")},{value:"mobile",label:(0,De.__)("Mobile")}];function mn(e,t){if(!t?.length||typeof e!="object"||!e||!Object.keys(e).length)return e;for(let r in e)t.includes(r)?delete e[r]:typeof e[r]=="object"&&mn(e[r],t);return e}var Go=(e,t)=>{if(!e||!t?.length)return{};let r={};return Object.keys(e).forEach(o=>{if(t.includes(o))r[o]=e[o];else if(typeof e[o]=="object"){let s=Go(e[o],t);Object.keys(s).length&&(r[o]=s)}}),r};function co(e,t){let r=Go(structuredClone(e),t);return io(r,e)}function Wi(e,t){if(!Array.isArray(e)||!t)return null;let o=t.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return e.find(s=>s.slug===o)}function Hi(e){let t=e?.settings?.typography?.fontFamilies?.theme,r=e?.settings?.typography?.fontFamilies?.custom,o=[];t&&r?o=[...t,...r]:t?o=t:r&&(o=r);let s=e?.styles?.typography?.fontFamily,n=Wi(o,s),a=e?.styles?.elements?.heading?.typography?.fontFamily,l;return a?l=Wi(o,e?.styles?.elements?.heading?.typography?.fontFamily):l=n,[n,l]}Di([Ui]);function Fe(e,t,r="merged",o=!0,s){let{user:n,base:a,merged:l,onChange:h}=(0,Rt.useContext)(Je),f=s?.split(".").filter(Boolean)??[],c=f.find(O=>O.startsWith(":")),d=f.filter(O=>!O.startsWith(":")).join("."),m=[e,d].filter(Boolean).join("."),g=l;r==="base"?g=a:r==="user"&&(g=n);let y=(0,Rt.useMemo)(()=>{let O=Mo(g,m,t,o);return c?O?.[c]??{}:O},[g,m,t,o,c]),T=(0,Rt.useCallback)(O=>{let _=O;c&&(_={...Mo(n,m,t,!1),[c]:O});let S=rn(n,m,_,t);h(S)},[n,h,m,t,c]);return[y,T]}function Te(e,t,r="merged"){let{user:o,base:s,merged:n,onChange:a}=(0,Rt.useContext)(Je),l=n;r==="base"?l=s:r==="user"&&(l=o);let h=(0,Rt.useMemo)(()=>$s(l,e,t),[l,e,t]),f=(0,Rt.useCallback)(c=>{let d=en(o,e,c,t);a(d)},[o,a,e,t]);return[h,f]}var Lc=[];function Bc({title:e,settings:t,styles:r}){return e===(0,hn.__)("Default")||Object.keys(t||{}).length>0||Object.keys(r||{}).length>0}function Uo(e=[]){let{variationsFromTheme:t}=(0,qi.useSelect)(o=>({variationsFromTheme:o(Yi.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||Lc}),[]),{user:r}=(0,Rt.useContext)(Je);return(0,Rt.useMemo)(()=>{let o=structuredClone(r),s=mn(o,e);s.title=(0,hn.__)("Default");let n=t.filter(l=>co(l,e)).map(l=>hr(s,l)),a=[s,...n];return a?.length?a.filter(Bc):[]},[e,r,t])}var Zi=u(Ws(),1),{lock:o0,unlock:ye}=(0,Zi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var gn=u(D(),1),{useHasDimensionsPanel:l0,useHasTypographyPanel:u0,useHasColorPanel:f0,useSettingsForBlockElement:c0,useHasBackgroundPanel:d0}=ye(Xi.privateApis);var Vt=u(X(),1);function zr(){let[e="black"]=Fe("color.text"),[t="white"]=Fe("color.background"),[r=e]=Fe("elements.h1.color.text"),[o=r]=Fe("elements.link.color.text"),[s=o]=Fe("elements.button.color.background"),[n]=Te("color.palette.core")||[],[a]=Te("color.palette.theme")||[],[l]=Te("color.palette.custom")||[],h=(a??[]).concat(l??[]).concat(n??[]),f=h.filter(({color:m})=>m===e),c=h.filter(({color:m})=>m===s),d=f.concat(c).concat(h).filter(({color:m})=>m!==t).slice(0,2);return{paletteColors:h,highlightedColors:d}}var Qi=u(ve(),1),$i=u(X(),1),vn=u(ie(),1);function zc(e,t){return t.length===0?null:(t.sort((r,o)=>Math.abs(e-r)-Math.abs(e-o)),t[0])}function Dc(e){let t=[];return e.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),n=parseInt(o[1]);for(let a=s;a<=n;a+=100)t.push(a)}else o.length===1&&t.push(parseInt(o[0]))}),t}function Ki(e){let t=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=e.trim(),o=s=>(s=s.trim(),s.match(t)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function yn(e){if(!e)return"";let t=e.trim();return t.includes(",")&&(t=(t.split(",").find(r=>r.trim()!=="")??"").trim()),t=t.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(t=`"${t}"`),t}function Dr(e){let t={fontFamily:Ki(e.fontFamily)};if(!("fontFace"in e)||!Array.isArray(e.fontFace))return t.fontWeight="400",t.fontStyle="normal",t;if(e.fontFace){let r=e.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){t.fontStyle="normal";let o=Dc(r),s=zc(400,o);t.fontWeight=String(s)||"400"}else t.fontStyle=e.fontFace.length&&e.fontFace[0].fontStyle||"normal",t.fontWeight=e.fontFace.length&&String(e.fontFace[0].fontWeight)||"400"}return t}function Ji(e){return{fontFamily:Ki(e.fontFamily),fontStyle:e.fontStyle||"normal",fontWeight:e.fontWeight||"400"}}var po=u(D(),1);function Wo({fontSize:e,variation:t}){let{base:r}=(0,Qi.useContext)(Je),o=r;t&&(o={...r,...t});let[s]=Fe("color.text"),[n,a]=Hi(o),l=n?Dr(n):{},h=a?Dr(a):{};return s&&(l.color=s,h.color=s),e&&(l.fontSize=e,h.fontSize=e),(0,po.jsxs)($i.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,po.jsx)("span",{style:h,children:(0,vn._x)("A","Uppercase letter A")}),(0,po.jsx)("span",{style:l,children:(0,vn._x)("a","Lowercase letter A")})]})}var el=u(X(),1);var tl=u(D(),1);function rl({normalizedColorSwatchSize:e,ratio:t}){let{highlightedColors:r}=zr(),o=e*t;return r.map(({slug:s,color:n},a)=>(0,tl.jsx)(el.__unstableMotion.div,{style:{height:o,width:o,background:n,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:a===1?.2:.1}},`${s}-${a}`))}var nl=u(X(),1),Mr=u(pr(),1),yr=u(ve(),1);var Qt=u(D(),1),ol=248,sl=152,Mc={leading:!0,trailing:!0};function jc({children:e,label:t,isFocused:r,withHoverView:o}){let[s="white"]=Fe("color.background"),[n]=Fe("color.gradient"),a=(0,Mr.useReducedMotion)(),[l,h]=(0,yr.useState)(!1),[f,{width:c}]=(0,Mr.useResizeObserver)(),[d,m]=(0,yr.useState)(c),[g,y]=(0,yr.useState)(),T=(0,Mr.useThrottle)(m,250,Mc);(0,yr.useLayoutEffect)(()=>{c&&T(c)},[c,T]),(0,yr.useLayoutEffect)(()=>{let b=d?d/ol:1,P=b-(g||0);(Math.abs(P)>.1||!g)&&y(b)},[d,g]);let O=c?c/ol:1,_=g||O;return(0,Qt.jsxs)(Qt.Fragment,{children:[(0,Qt.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qt.jsx)("div",{className:Ze("global-styles-ui-preview__wrapper",{"is-hoverable":o}),style:{height:sl*_},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),tabIndex:-1,children:(0,Qt.jsx)(nl.__unstableMotion.div,{style:{height:sl*_,width:"100%",background:n??s},initial:"start",animate:(l||r)&&!a&&t?"hover":"start",children:[].concat(e).map((b,P)=>b({ratio:_,key:P}))})})]})}var jr=jc;var mt=u(D(),1),Gc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},Uc={hover:{opacity:1},start:{opacity:.5}},Wc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function Hc({label:e,isFocused:t,withHoverView:r,variation:o}){let[s]=Fe("typography.fontWeight"),[n="serif"]=Fe("typography.fontFamily"),[a=n]=Fe("elements.h1.typography.fontFamily"),[l=s]=Fe("elements.h1.typography.fontWeight"),[h="black"]=Fe("color.text"),[f=h]=Fe("elements.h1.color.text"),{paletteColors:c}=zr();return(0,mt.jsxs)(jr,{label:e,isFocused:t,withHoverView:r,children:[({ratio:d,key:m})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:Gc,style:{height:"100%",overflow:"hidden"},children:(0,mt.jsxs)(Vt.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,mt.jsx)(Wo,{fontSize:65*d,variation:o}),(0,mt.jsx)(Vt.__experimentalVStack,{spacing:4*d,children:(0,mt.jsx)(rl,{normalizedColorSwatchSize:32,ratio:d})})]})},m),({key:d})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:r?Uc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,mt.jsx)(Vt.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:m},g)=>(0,mt.jsx)("div",{style:{height:"100%",background:m,flexGrow:1}},g))})},d),({ratio:d,key:m})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:Wc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,mt.jsx)(Vt.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:e&&(0,mt.jsx)("div",{style:{fontSize:40*d,fontFamily:a,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:e})})},m)]})}var bn=Hc;var il=u(D(),1);var xn=u(Br(),1),Gr=u(ie(),1),br=u(X(),1),Sn=u(pt(),1),$t=u(ve(),1),Ho=u(it(),1),pl=u(pr(),1);import{speak as Jc}from"@wordpress/a11y";var ll=u(Br(),1),ul=u(pt(),1),Zc=u(X(),1);var Xc=u(D(),1);function Kc(e,t){return e?.filter(r=>r.source==="block"||t.includes(r.name))||[]}function wn(e){let t=(0,ul.useSelect)(s=>{let{getBlockStyles:n}=s(ll.store);return n(e)},[e]),[r]=Fe("variations",e),o=Object.keys(r??{});return Kc(t,o)}var vr=u(X(),1),fl=u(ie(),1);var cl=u(it(),1);var dl=u(D(),1),{StateControl:U0}=ye(cl.privateApis);var Nt=u(D(),1),{useHasDimensionsPanel:Qc,useHasTypographyPanel:$c,useHasBorderPanel:ed,useSettingsForBlockElement:td,useHasColorPanel:rd}=ye(Ho.privateApis);function od(){let e=(0,Sn.useSelect)(s=>s(xn.store).getBlockTypes(),[]),t=(s,n)=>{let{core:a,noncore:l}=s;return(n.name.startsWith("core/")?a:l).push(n),s},{core:r,noncore:o}=e.reduce(t,{core:[],noncore:[]});return[...r,...o]}function sd(e){let[t]=Te("",e),r=td(t,e),o=$c(r),s=rd(r),n=ed(r),a=Qc(r),l=n||a,h=!!wn(e)?.length;return o||s||l||h}function nd({block:e}){return sd(e.name)?(0,Nt.jsx)(Bt,{path:"/blocks/"+encodeURIComponent(e.name),children:(0,Nt.jsxs)(br.__experimentalHStack,{justify:"flex-start",children:[(0,Nt.jsx)(Ho.BlockIcon,{icon:e.icon}),(0,Nt.jsx)(br.FlexItem,{children:e.title})]})}):null}function ad({filterValue:e}){let t=od(),r=(0,pl.useDebounce)(Jc,500),{isMatchingSearchTerm:o}=(0,Sn.useSelect)(xn.store),s=e?t.filter(a=>o(a,e)):t,n=(0,$t.useRef)(null);return(0,$t.useEffect)(()=>{if(!e)return;let a=n.current?.childElementCount||0,l=(0,Gr.sprintf)((0,Gr._n)("%d result found.","%d results found.",a),a);r(l,"polite")},[e,r]),(0,Nt.jsx)("div",{ref:n,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,Nt.jsx)(br.__experimentalText,{align:"center",as:"p",children:(0,Gr.__)("No blocks found.")}):s.map(a=>(0,Nt.jsx)(nd,{block:a},"menu-itemblock-"+a.name))})}var J0=(0,$t.memo)(ad);var cd=u(Br(),1),yl=u(it(),1),Cn=u(ve(),1),dd=u(pt(),1),pd=u(wt(),1),_n=u(X(),1),vl=u(ie(),1);var id=u(it(),1),ml=u(Br(),1),ld=u(X(),1),ud=u(ve(),1);var fd=u(D(),1);var hl=u(X(),1),gl=u(D(),1);function St({children:e,level:t=2}){return(0,gl.jsx)(hl.__experimentalHeading,{className:"global-styles-ui-subtitle",level:t,children:e})}var Fn=u(D(),1);var{useHasDimensionsPanel:hb,useHasTypographyPanel:gb,useHasBorderPanel:yb,useSettingsForBlockElement:vb,useHasColorPanel:bb,useHasFiltersPanel:wb,useHasImageSettingsPanel:xb,useHasBackgroundPanel:Sb,BackgroundPanel:Cb,BorderPanel:_b,ColorPanel:Fb,TypographyPanel:kb,DimensionsPanel:Ob,FiltersPanel:Tb,ImageSettingsPanel:Pb,AdvancedPanel:Ab}=ye(yl.privateApis);var kg=u(ie(),1),Og=u(X(),1),Tg=u(ve(),1);var md=u(X(),1);var hd=u(D(),1);var gd=u(ie(),1),qo=u(X(),1);var bl=u(D(),1);var Xo=u(X(),1);var wl=u(X(),1);var Yo=u(D(),1),yd=({variation:e,isFocused:t,withHoverView:r})=>(0,Yo.jsx)(jr,{label:e.title,isFocused:t,withHoverView:r,children:({ratio:o,key:s})=>(0,Yo.jsx)(wl.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Yo.jsx)(Wo,{variation:e,fontSize:85*o})},s)}),xl=yd;var Cl=u(X(),1),wr=u(ve(),1),_l=u(kn(),1),Zo=u(ie(),1);var mo=u(D(),1);function Ur({variation:e,children:t,isPill:r=!1,properties:o,showTooltip:s=!1}){let[n,a]=(0,wr.useState)(!1),{base:l,user:h,onChange:f}=(0,wr.useContext)(Je),c=(0,wr.useMemo)(()=>{let O=hr(l,e);return o&&(O=Go(O,o)),{user:e,base:l,merged:O,onChange:()=>{}}},[e,l,o]),d=()=>f(e),m=O=>{O.keyCode===_l.ENTER&&(O.preventDefault(),d())},g=(0,wr.useMemo)(()=>io(h,e),[h,e]),y=e?.title;e?.description&&(y=(0,Zo.sprintf)((0,Zo._x)("%1$s (%2$s)","variation label"),e?.title,e?.description));let T=(0,mo.jsx)("div",{className:Ze("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:d,onKeyDown:m,tabIndex:0,"aria-label":y,"aria-current":g,onFocus:()=>a(!0),onBlur:()=>a(!1),children:(0,mo.jsx)("div",{className:Ze("global-styles-ui-variations_item-preview",{"is-pill":r}),children:t(n)})});return(0,mo.jsx)(Je.Provider,{value:c,children:s?(0,mo.jsx)(Cl.Tooltip,{text:e?.title,children:T}):T})}var xr=u(D(),1),Fl=["typography"];function Ko({title:e,gap:t=2}){let r=Uo(Fl);return r?.length<=1?null:(0,xr.jsxs)(Xo.__experimentalVStack,{spacing:3,children:[e&&(0,xr.jsx)(St,{level:3,children:e}),(0,xr.jsx)(Xo.__experimentalGrid,{columns:3,gap:t,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,xr.jsx)(Ur,{variation:o,properties:Fl,showTooltip:!0,children:()=>(0,xr.jsx)(xl,{variation:o})},s))})]})}var _g=u(ie(),1),xo=u(X(),1);var Fg=u(ve(),1);var Ht=u(ve(),1),or=u(pt(),1),rr=u(wt(),1),An=u(ie(),1);var On=u(Ol(),1),Tl=u(wt(),1),Pl="/wp/v2/font-families";function Al(e){let{receiveEntityRecords:t}=e.dispatch(Tl.store);t("postType","wp_font_family",[],void 0,!0)}async function Rl(e,t){let o=await(0,On.default)({path:Pl,method:"POST",body:e});return Al(t),{id:o.id,...o.font_family_settings,fontFace:[]}}async function El(e,t,r){let o={path:`${Pl}/${e}/font-faces`,method:"POST",body:t},s=await(0,On.default)(o);return Al(r),{id:s.id,...s.font_face_settings}}var Bl=u(X(),1);var Ot=u(ie(),1),Tn=["otf","ttf","woff","woff2"],Il={100:(0,Ot._x)("Thin","font weight"),200:(0,Ot._x)("Extra-light","font weight"),300:(0,Ot._x)("Light","font weight"),400:(0,Ot._x)("Normal","font weight"),500:(0,Ot._x)("Medium","font weight"),600:(0,Ot._x)("Semi-bold","font weight"),700:(0,Ot._x)("Bold","font weight"),800:(0,Ot._x)("Extra-bold","font weight"),900:(0,Ot._x)("Black","font weight")},Ll={normal:(0,Ot._x)("Normal","font style"),italic:(0,Ot._x)("Italic","font style")};var{File:Vl}=window,{kebabCase:vd}=ye(Bl.privateApis);function er(e,t={}){return!e.name&&(e.fontFamily||e.slug)&&(e.name=e.fontFamily||e.slug),{...e,...t}}function bd(e){return typeof e!="string"?!1:e!==decodeURIComponent(e)}function Jo(e){let t=Il[e.fontWeight??""]||e.fontWeight,r=e.fontStyle==="normal"?"":Ll[e.fontStyle??""]||e.fontStyle;return`${t} ${r}`}function wd(e=[],t=[]){let r=new Map;for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function Nl(e=[],t=[]){let r=new Map;for(let o of e)r.set(o.slug,{...o});for(let o of t)if(r.has(o.slug)){let{fontFace:s,...n}=o,a=r.get(o.slug),l=wd(a.fontFace,s);r.set(o.slug,{...n,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function tr(e,t,r="all"){let o;if(typeof t=="string")o=`url(${t})`;else if(t instanceof Vl)o=await t.arrayBuffer();else return;let n=await new window.FontFace(yn(e.fontFamily),o,{style:e.fontStyle,weight:String(e.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(n),r==="iframe"||r==="all"){let a=document.querySelector('iframe[name="editor-canvas"]');a?.contentDocument&&a.contentDocument.fonts.add(n)}}function ho(e,t="all"){let r=o=>{o.forEach(s=>{s.family===yn(e?.fontFamily)&&s.weight===e?.fontWeight&&s.style===e?.fontStyle&&o.delete(s)})};if((t==="document"||t==="all")&&r(document.fonts),t==="iframe"||t==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Wr(e){if(!e)return;let t;if(Array.isArray(e)?t=e[0]:t=e,!t.startsWith("file:."))return bd(t)||(t=encodeURI(t)),t}function zl(e){let t=new FormData,{fontFace:r,category:o,...s}=e,n={...s,slug:vd(e.slug)};return t.append("font_family_settings",JSON.stringify(n)),t}function Dl(e){return(e?.fontFace??[]).map((r,o)=>{let s={...r},n=new FormData;if(s.file){let a=Array.isArray(s.file)?s.file:[s.file],l=[];a.forEach((h,f)=>{let c=`file-${o}-${f}`;n.append(c,h,h.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,n.append("font_face_settings",JSON.stringify(s))}else n.append("font_face_settings",JSON.stringify(s));return n})}async function Ml(e,t,r){let o=[];for(let n of t)try{let a=await El(e,n,r);o.push({status:"fulfilled",value:a})}catch(a){o.push({status:"rejected",reason:a})}let s={errors:[],successes:[]};return o.forEach((n,a)=>{if(n.status==="fulfilled"&&n.value){let l=n.value;s.successes.push(l)}else n.reason&&s.errors.push({data:t[a],message:n.reason.message})}),s}async function jl(e){e=Array.isArray(e)?e:[e];let t=await Promise.all(e.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new Vl([o],s,{type:o.type})})));return t.length===1?t[0]:t}function Pn(e,t){return t.findIndex(r=>r.fontWeight===e.fontWeight&&r.fontStyle===e.fontStyle)!==-1}function Gl(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let n of t){let a=s[n];s=s[n]=Array.isArray(a)?[...a]:{...a}}return s[o]=r,e}function Qo(e,t,r=[]){let o=h=>h.slug===e.slug,s=h=>h.find(o),n=h=>h?r.filter(f=>!o(f)):[...r,e],a=h=>{let f=d=>d.fontWeight===t.fontWeight&&d.fontStyle===t.fontStyle;if(!h)return[...r,{...e,fontFace:[t]}];let c=h.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,t],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return t?a(l):n(l)}var Ul=u(D(),1),lt=(0,Ht.createContext)({});lt.displayName="FontLibraryContext";function xd({children:e}){let t=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(x=>{let{__experimentalGetCurrentGlobalStylesId:E}=x(rr.store);return{globalStylesId:E()}},[]),n=(0,rr.useEntityRecord)("root","globalStyles",s),[a,l]=(0,Ht.useState)(!1),{records:h=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(h||[]).map(x=>({id:x.id,...x.font_family_settings||{},fontFace:x?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,m]=Te("typography.fontFamilies"),g=async x=>{if(!n.record)return;let E=n.record,te=Gl(E??{},["settings","typography","fontFamilies"],x);await r("root","globalStyles",te)},[y,T]=(0,Ht.useState)(""),[O,_]=(0,Ht.useState)(void 0),S=d?.theme?d.theme.map(x=>er(x,{source:"theme"})).sort((x,E)=>x.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[],P=c?c.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[];(0,Ht.useEffect)(()=>{y||_(void 0)},[y]);let q=x=>{if(!x){_(void 0);return}let te=(x.source==="theme"?S:P).find(ce=>ce.slug===x.slug);_({...te||x,source:x.source})},[I]=(0,Ht.useState)(new Set),N=x=>x.reduce((te,ce)=>{let ae=ce?.fontFace&&ce.fontFace?.length>0?ce?.fontFace.map(Ce=>`${Ce.fontStyle??""}${Ce.fontWeight??""}`):["normal400"];return te[ce.slug]=ae,te},{}),W=x=>N(x==="theme"?S:b),$=(x,E,te,ce)=>!E&&!te?!!W(ce)[x]:!!W(ce)[x]?.includes((E??"")+(te??"")),be=(x,E)=>W(E)[x]||[];async function H(x){l(!0);try{let E=[],te=[];for(let ae of x){let Ce=!1,qe=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:ae.slug,per_page:1,_embed:!0}),ke=qe&&qe.length>0?qe[0]:null,J=ke?{id:ke.id,...ke.font_family_settings,fontFace:(ke?._embedded?.font_faces??[]).map(Me=>Me.font_face_settings)||[]}:null;J||(Ce=!0,J=await Rl(zl(ae),t));let Se=J.fontFace&&ae.fontFace?J.fontFace.filter(Me=>Me&&ae.fontFace&&Pn(Me,ae.fontFace)):[];J.fontFace&&ae.fontFace&&(ae.fontFace=ae.fontFace.filter(Me=>!Pn(Me,J.fontFace)));let Ae=[],Ct=[];if(ae?.fontFace?.length??!1){let Me=await Ml(J.id,Dl(ae),t);Ae=Me?.successes,Ct=Me?.errors}(Ae?.length>0||Se?.length>0)&&(J.fontFace=[...Ae],E.push(J)),J&&!ae?.fontFace?.length&&E.push(J),Ce&&(ae?.fontFace?.length??0)>0&&Ae?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),te=te.concat(Ct)}let ce=te.reduce((ae,Ce)=>ae.includes(Ce.message)?ae:[...ae,Ce.message],[]);if(E.length>0){let ae=le(E);await g(ae)}if(ce.length>0){let ae=new Error((0,An.__)("There was an error installing fonts."));throw ae.installationErrors=ce,ae}}finally{l(!1)}}async function v(x){if(!x?.id)throw new Error((0,An.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",x.id,{force:!0});let E=L(x);return await g(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=x=>{let te=(d?.[x.source??""]??[]).filter(ae=>ae.slug!==x.slug),ce={...d,[x.source??""]:te};return m(ce),x.fontFace&&x.fontFace.forEach(ae=>{ho(ae,"all")}),ce},le=x=>{let E=oe(x),te={...d,custom:Nl(d?.custom,E)};return m(te),K(E),te},oe=x=>x.map(({id:E,fontFace:te,...ce})=>({...ce,...te&&te.length>0?{fontFace:te.map(({id:ae,...Ce})=>Ce)}:{}})),K=x=>{x.forEach(E=>{E.fontFace&&E.fontFace.forEach(te=>{let ce=Wr(te?.src??"");ce&&tr(te,ce,"all")})})},ge=(x,E)=>{let te=d?.[x.source??""]??[],ce=Qo(x,E,te);m({...d,[x.source??""]:ce});let ae=$(x.slug,E?.fontStyle??"",E?.fontWeight??"",x.source??"custom");if(E&&ae)ho(E,"all");else{let Ce=Wr(E?.src??"");E&&Ce&&tr(E,Ce,"all")}},R=async x=>{if(!x.src)return;let E=Wr(x.src);!E||I.has(E)||(tr(x,E,"document"),I.add(E))};return(0,Ul.jsx)(lt.Provider,{value:{libraryFontSelected:O,handleSetLibraryFontSelected:q,fontFamilies:d??{},baseCustomFonts:P,isFontActivated:$,getFontFacesActivated:be,loadFontFaceAsset:R,installFonts:H,uninstallFontFamily:v,toggleActivateFont:ge,getAvailableFontsOutline:N,modalTabOpen:y,setModalTabOpen:T,saveFontFamilies:g,isResolvingLibrary:f,isInstalling:a},children:e})}var $o=xd;var ms=u(ie(),1),Bn=u(X(),1),Fu=u(wt(),1),Sg=u(pt(),1);var he=u(X(),1),yo=u(wt(),1),Rn=u(pt(),1),Cr=u(ve(),1),Ee=u(ie(),1);var qr=u(ie(),1),Tt=u(X(),1);var Wl=u(X(),1),zt=u(ve(),1);var es=u(D(),1);function Sd(e){if(e.preview)return e.preview;if(e.src)return Array.isArray(e.src)?e.src[0]:e.src}function Cd(e){return"fontStyle"in e&&e.fontStyle||"fontWeight"in e&&e.fontWeight?e:"fontFace"in e&&e.fontFace&&e.fontFace.length?e.fontFace.find(t=>t.fontStyle==="normal"&&t.fontWeight==="400")||e.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:e.fontFamily}}function _d({font:e,text:t}){let r=(0,zt.useRef)(null),o=Cd(e),s=Dr(e);t=t||("name"in e?e.name:"");let n=e.preview,[a,l]=(0,zt.useState)(!1),[h,f]=(0,zt.useState)(!1),{loadFontFaceAsset:c}=(0,zt.useContext)(lt),d=n??Sd(o),m=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Ji(o),y={fontSize:"18px",lineHeight:1,opacity:h?"1":"0",...s,...g};return(0,zt.useEffect)(()=>{let T=new window.IntersectionObserver(([O])=>{l(O.isIntersecting)},{});return r.current&&T.observe(r.current),()=>T.disconnect()},[r]),(0,zt.useEffect)(()=>{(async()=>a&&(!m&&o.src&&await c(o),f(!0)))()},[o,a,c,m]),(0,es.jsx)("div",{ref:r,children:m?(0,es.jsx)("img",{src:d,loading:"lazy",alt:t,className:"font-library__font-variant_demo-image"}):(0,es.jsx)(Wl.__experimentalText,{style:y,className:"font-library__font-variant_demo-text",children:t})})}var Hr=_d;var Dt=u(D(),1);function Fd({font:e,onClick:t,variantsText:r,navigatorPath:o}){let s=e.fontFace?.length||1,n={cursor:t?"pointer":"default"},a=(0,Tt.useNavigator)();return(0,Dt.jsx)(Tt.Button,{__next40pxDefaultSize:!0,onClick:()=>{t(),o&&a.goTo(o)},style:n,className:"font-library__font-card",children:(0,Dt.jsxs)(Tt.Flex,{justify:"space-between",wrap:!1,children:[(0,Dt.jsx)(Hr,{font:e}),(0,Dt.jsxs)(Tt.Flex,{justify:"flex-end",children:[(0,Dt.jsx)(Tt.FlexItem,{children:(0,Dt.jsx)(Tt.__experimentalText,{className:"font-library__font-card__count",children:r||(0,qr.sprintf)((0,qr._n)("%d variant","%d variants",s),s)})}),(0,Dt.jsx)(Tt.FlexItem,{children:(0,Dt.jsx)(so,{icon:(0,qr.isRTL)()?cr:dr})})]})]})})}var go=Fd;var ts=u(ve(),1),rs=u(X(),1);var Sr=u(D(),1);function kd({face:e,font:t}){let{isFontActivated:r,toggleActivateFont:o}=(0,ts.useContext)(lt),s=(t?.fontFace?.length??0)>0?r(t.slug,e.fontStyle,e.fontWeight,t.source):r(t.slug,void 0,void 0,t.source),n=()=>{if((t?.fontFace?.length??0)>0){o(t,e);return}o(t)},a=t.name+" "+Jo(e),l=(0,ts.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(rs.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(rs.CheckboxControl,{checked:s,onChange:n,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Hr,{font:e,text:a,onClick:n})})]})})}var Hl=kd;function ql(e){switch(e){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(e,10)}}function os(e){return e.sort((t,r)=>t.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&t.fontStyle!=="normal"?1:t.fontStyle===r.fontStyle?ql(t.fontWeight?.toString()??"normal")-ql(r.fontWeight?.toString()??"normal"):!t.fontStyle||!r.fontStyle?t.fontStyle?-1:1:t.fontStyle.localeCompare(r.fontStyle))}var fe=u(D(),1);function Od(){let{baseCustomFonts:e,libraryFontSelected:t,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:n,saveFontFamilies:a,getFontFacesActivated:l}=(0,Cr.useContext)(lt),[h,f]=Te("typography.fontFamilies"),[c,d]=(0,Cr.useState)(!1),[m,g]=(0,Cr.useState)(null),[y]=Te("typography.fontFamilies",void 0,"base"),T=(0,Rn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:x}=R(yo.store);return x()},[]),_=!!(0,yo.useEntityRecord)("root","globalStyles",T)?.edits?.settings?.typography?.fontFamilies,S=h?.theme?h.theme.map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name)):[],b=new Set(S.map(R=>R.slug)),P=y?.theme?S.concat(y.theme.filter(R=>!b.has(R.slug)).map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name))):[],q=t?.source==="custom"&&t?.id,I=(0,Rn.useSelect)(R=>{let{canUser:x}=R(yo.store);return q&&x("delete",{kind:"postType",name:"wp_font_family",id:q})},[q]),N=!!t&&t?.source!=="theme"&&I,W=()=>{d(!0)},$=async()=>{g(null);try{await a(h),g({type:"success",message:(0,Ee.__)("Font family updated successfully.")})}catch(R){g({type:"error",message:(0,Ee.sprintf)((0,Ee.__)("There was an error updating the font family. %s"),R.message)})}},be=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(R.fontFace):[],H=R=>{let x=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Ee.sprintf)((0,Ee.__)("%1$d/%2$d variants active"),E,x)};(0,Cr.useEffect)(()=>{r(t)},[]);let v=t?l(t.slug,t.source).length:0,L=t?.fontFace?.length??(t?.fontFamily?1:0),le=v>0&&v!==L,oe=v===L,K=()=>{if(!t||!t?.source)return;let R=h?.[t.source]?.filter(E=>E.slug!==t.slug)??[],x=oe?R:[...R,t];f({...h,[t.source]:x}),t.fontFace&&t.fontFace.forEach(E=>{if(oe)ho(E,"all");else{let te=Wr(E?.src??"");te&&tr(E,te,"all")}})},ge=P.length>0||e.length>0;return(0,fe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,fe.jsx)("div",{className:"font-library__loading",children:(0,fe.jsx)(he.ProgressBar,{})}),!s&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsxs)(he.Navigator,{initialPath:t?"/fontFamily":"/",children:[(0,fe.jsx)(he.Navigator.Screen,{path:"/",children:(0,fe.jsxs)(he.__experimentalVStack,{spacing:"8",children:[m&&(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),!ge&&(0,fe.jsx)(he.__experimentalText,{as:"p",children:(0,Ee.__)("No fonts installed.")}),P.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Theme","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:P.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]}),e.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Custom","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]})]})}),(0,fe.jsxs)(he.Navigator.Screen,{path:"/fontFamily",children:[t&&(0,fe.jsx)(Td,{font:t,isOpen:c,setIsOpen:d,setNotice:g,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,fe.jsxs)(he.Flex,{justify:"flex-start",children:[(0,fe.jsx)(he.Navigator.BackButton,{icon:(0,Ee.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),g(null)},label:(0,Ee.__)("Back")}),(0,fe.jsx)(he.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:t?.name})]}),m&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsx)(he.__experimentalSpacer,{margin:1}),(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),(0,fe.jsx)(he.__experimentalSpacer,{margin:1})]}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsx)(he.__experimentalText,{children:(0,Ee.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsxs)(he.__experimentalVStack,{spacing:0,children:[(0,fe.jsx)(he.CheckboxControl,{className:"font-library__select-all",label:(0,Ee.__)("Select all"),checked:oe,onChange:K,indeterminate:le}),(0,fe.jsx)(he.__experimentalSpacer,{margin:8}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t&&be(t).map((R,x)=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(Hl,{font:t,face:R},`face${x}`)},`face${x}`))})]})]})]}),(0,fe.jsxs)(he.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[n&&(0,fe.jsx)(he.ProgressBar,{}),N&&(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:W,children:(0,Ee.__)("Delete")}),(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!_,accessibleWhenDisabled:!0,children:(0,Ee.__)("Update")})]})]})]})}function Td({font:e,isOpen:t,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:n}){let a=(0,he.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(e),a.goBack(),n(void 0),o({type:"success",message:(0,Ee.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Ee.__)("There was an error uninstalling the font family.")+f.message})}},h=()=>{r(!1)};return(0,fe.jsx)(he.__experimentalConfirmDialog,{isOpen:t,cancelButtonText:(0,Ee.__)("Cancel"),confirmButtonText:(0,Ee.__)("Delete"),onCancel:h,onConfirm:l,size:"medium",children:e&&(0,Ee.sprintf)((0,Ee.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),e.name)})}var ss=Od;var Ke=u(ve(),1),ne=u(X(),1),eu=u(pr(),1),Re=u(ie(),1);var tu=u(wt(),1);function Yl(e,t){let{category:r,search:o}=t,s=e||[];return r&&r!=="all"&&(s=s.filter(n=>n.categories&&n.categories.indexOf(r)!==-1)),o&&(s=s.filter(n=>n.font_family_settings&&n.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Zl(e){return e.reduce((t,r)=>({...t,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Xl(e,t,r){return t?!!r[e]?.[`${t.fontStyle}-${t.fontWeight}`]:!!r[e]}var vo=u(ie(),1),ut=u(X(),1),Pt=u(D(),1);function Pd(){let e=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Pt.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Pt.jsx)(ut.Card,{children:(0,Pt.jsxs)(ut.CardBody,{children:[(0,Pt.jsx)(ut.__experimentalHeading,{level:2,children:(0,vo.__)("Connect to Google Fonts")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:3}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:e,children:(0,vo.__)("Allow access to Google Fonts")})]})})})}var Kl=Pd;var Jl=u(ve(),1),ns=u(X(),1);var _r=u(D(),1);function Ad({face:e,font:t,handleToggleVariant:r,selected:o}){let s=()=>{if(t?.fontFace){r(t,e);return}r(t)},n=t.name+" "+Jo(e),a=(0,Jl.useId)();return(0,_r.jsx)("div",{className:"font-library__font-card",children:(0,_r.jsxs)(ns.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,_r.jsx)(ns.CheckboxControl,{checked:o,onChange:s,id:a}),(0,_r.jsx)("label",{htmlFor:a,children:(0,_r.jsx)(Hr,{font:e,text:n,onClick:s})})]})})}var Ql=Ad;var ee=u(D(),1),Rd={slug:"all",name:(0,Re._x)("All","font categories")},$l="wp-font-library-google-fonts-permission",Ed=500;function Id({slug:e}){let t=e==="google-fonts",r=()=>window.localStorage.getItem($l)==="true",[o,s]=(0,Ke.useState)(null),[n,a]=(0,Ke.useState)(null),[l,h]=(0,Ke.useState)([]),[f,c]=(0,Ke.useState)(1),[d,m]=(0,Ke.useState)({}),[g,y]=(0,Ke.useState)(t&&!r()),{installFonts:T,isInstalling:O}=(0,Ke.useContext)(lt),{record:_,isResolving:S}=(0,tu.useEntityRecord)("root","fontCollection",e);(0,Ke.useEffect)(()=>{let J=()=>{y(t&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[e,t]);let b=()=>{window.localStorage.setItem($l,"false"),window.dispatchEvent(new Event("storage"))};(0,Ke.useEffect)(()=>{s(null)},[e]),(0,Ke.useEffect)(()=>{h([])},[o]);let P=(0,Ke.useMemo)(()=>_?.font_families??[],[_]),q=_?.categories??[],I=[Rd,...q],N=(0,Ke.useMemo)(()=>Yl(P,d),[P,d]),W=Math.max(window.innerHeight,Ed),$=Math.floor((W-417)/61),be=Math.ceil(N.length/$),H=(f-1)*$,v=f*$,L=N.slice(H,v),le=J=>{m({...d,category:J}),c(1)},K=(0,eu.debounce)(J=>{m({...d,search:J}),c(1)},300),ge=(J,Se)=>{let Ae=Qo(J,Se,l);h(Ae)},R=Zl(l),x=()=>{h([])},E=l.length>0?l[0]?.fontFace?.length??0:0,te=E>0&&E!==o?.fontFace?.length,ce=E===o?.fontFace?.length,ae=()=>{let J=[];!ce&&o&&J.push(o),h(J)},Ce=async()=>{a(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async Se=>{Se.src&&(Se.file=await jl(Se.src))}))}catch{a({type:"error",message:(0,Re.__)("Error installing the fonts, could not be downloaded.")});return}try{await T([J]),a({type:"success",message:(0,Re.__)("Fonts were installed successfully.")})}catch(Se){a({type:"error",message:Se.message})}x()},qe=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(J.fontFace):[];if(g)return(0,ee.jsx)(Kl,{});let ke=e==="google-fonts"&&!g&&!o;return(0,ee.jsxs)("div",{className:"font-library__tabpanel-layout",children:[S&&(0,ee.jsx)("div",{className:"font-library__loading",children:(0,ee.jsx)(ne.ProgressBar,{})}),!S&&_&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsxs)(ne.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,ee.jsxs)(ne.Navigator.Screen,{path:"/",children:[(0,ee.jsxs)(ne.__experimentalHStack,{justify:"space-between",children:[(0,ee.jsxs)(ne.__experimentalVStack,{children:[(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,children:_.name}),(0,ee.jsx)(ne.__experimentalText,{children:_.description})]}),ke&&(0,ee.jsx)(ne.DropdownMenu,{icon:js,label:(0,Re.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Re.__)("Revoke access to Google Fonts"),onClick:b}]})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsxs)(ne.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,ee.jsx)(ne.SearchControl,{value:d.search,placeholder:(0,Re.__)("Font name\u2026"),label:(0,Re.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,ee.jsx)(ne.SelectControl,{__next40pxDefaultSize:!0,label:(0,Re.__)("Category"),value:d.category,onChange:le,children:I&&I.map(J=>(0,ee.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),!!_?.font_families?.length&&!N.length&&(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("No fonts found. Try with a different search term.")}),(0,ee.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(go,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,ee.jsxs)(ne.Navigator.Screen,{path:"/fontFamily",children:[(0,ee.jsxs)(ne.Flex,{justify:"flex-start",children:[(0,ee.jsx)(ne.Navigator.BackButton,{icon:(0,Re.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),a(null)},label:(0,Re.__)("Back")}),(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),n&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(ne.__experimentalSpacer,{margin:1}),(0,ee.jsx)(ne.Notice,{status:n.type,onRemove:()=>a(null),children:n.message}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:1})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("Select font variants to install.")}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.CheckboxControl,{className:"font-library__select-all",label:(0,Re.__)("Select all"),checked:ce,onChange:ae,indeterminate:te}),(0,ee.jsx)(ne.__experimentalVStack,{spacing:0,children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&qe(o).map((J,Se)=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(Ql,{font:o,face:J,handleToggleVariant:ge,selected:Xl(o.slug,o.fontFace?J:null,R)})},`face${Se}`))})}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:16})]})]}),o&&(0,ee.jsx)(ne.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,ee.jsx)(ne.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ce,isBusy:O,disabled:l.length===0||O,accessibleWhenDisabled:!0,children:(0,Re.__)("Install")})}),!o&&(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,ee.jsx)(ne.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Ke.createInterpolateElement)((0,Re.sprintf)((0,Re._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",be),{div:(0,ee.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,ee.jsx)(ne.SelectControl,{"aria-label":(0,Re.__)("Current page"),value:f.toString(),options:[...Array(be)].map((J,Se)=>({label:(Se+1).toString(),value:(Se+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,ee.jsx)(ne.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Re.__)("Previous page"),icon:(0,Re.isRTL)()?Vo:zo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,ee.jsx)(ne.Button,{onClick:()=>c(f+1),disabled:f===be,accessibleWhenDisabled:!0,label:(0,Re.__)("Next page"),icon:(0,Re.isRTL)()?zo:Vo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var as=Id;var Yr=u(ie(),1),tt=u(X(),1),wo=u(ve(),1);var is=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),ru=(function(){var e,t,r;return(function(){function o(s,n,a){function l(c,d){if(!n[c]){if(!s[c]){var m=typeof is=="function"&&is;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=n[c]={exports:{}};s[c][0].call(y.exports,function(T){var O=s[c][1][T];return l(O||T)},y,y.exports,o,s,n,a)}return n[c].exports}for(var h=typeof is=="function"&&is,f=0;f<a.length;f++)l(a[f]);return l}return o})()({1:[function(o,s,n){var a=4096,l=2*a+32,h=2*a-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=a,c.IBUF_MASK=h,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,m=this.input_.read(this.buf_,d,a);if(m<0)throw new Error("Unexpected end of input");if(m<a){this.eos_=1;for(var g=0;g<32;g++)this.buf_[d+m+g]=0}if(d===0){for(var g=0;g<32;g++)this.buf_[(a<<1)+g]=this.buf_[g];this.buf_ptr_=a}else this.buf_ptr_=0;this.bit_end_pos_+=m<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&h]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var m=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,m},s.exports=c},{}],2:[function(o,s,n){var a=0,l=1,h=2,f=3;n.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),n.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,n){var a=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,h=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,m=o("./context"),g=o("./prefix"),y=o("./transform"),T=8,O=16,_=256,S=704,b=26,P=6,q=2,I=8,N=255,W=1080,$=18,be=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),H=16,v=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),le=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function oe(z){var k;return z.readBits(1)===0?16:(k=z.readBits(3),k>0?17+k:(k=z.readBits(3),k>0?8+k:17))}function K(z){if(z.readBits(1)){var k=z.readBits(3);return k===0?1:z.readBits(k)+(1<<k)}return 0}function ge(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(z){var k=new ge,B,A,V;if(k.input_end=z.readBits(1),k.input_end&&z.readBits(1))return k;if(B=z.readBits(2)+4,B===7){if(k.is_metadata=!0,z.readBits(1)!==0)throw new Error("Invalid reserved bit");if(A=z.readBits(2),A===0)return k;for(V=0;V<A;V++){var de=z.readBits(8);if(V+1===A&&A>1&&de===0)throw new Error("Invalid size byte");k.meta_block_length|=de<<V*8}}else for(V=0;V<B;++V){var re=z.readBits(4);if(V+1===B&&B>4&&re===0)throw new Error("Invalid size nibble");k.meta_block_length|=re<<V*4}return++k.meta_block_length,!k.input_end&&!k.is_metadata&&(k.is_uncompressed=z.readBits(1)),k}function x(z,k,B){var A=k,V;return B.fillBitWindow(),k+=B.val_>>>B.bit_pos_&N,V=z[k].bits-I,V>0&&(B.bit_pos_+=I,k+=z[k].value,k+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=z[k].bits,z[k].value}function E(z,k,B,A){for(var V=0,de=T,re=0,se=0,we=32768,ue=[],Y=0;Y<32;Y++)ue.push(new c(0,0));for(d(ue,0,5,z,$);V<k&&we>0;){var _e=0,Qe;if(A.readMoreInput(),A.fillBitWindow(),_e+=A.val_>>>A.bit_pos_&31,A.bit_pos_+=ue[_e].bits,Qe=ue[_e].value&255,Qe<O)re=0,B[V++]=Qe,Qe!==0&&(de=Qe,we-=32768>>Qe);else{var yt=Qe-14,rt,$e,Ve=0;if(Qe===O&&(Ve=de),se!==Ve&&(re=0,se=Ve),rt=re,re>0&&(re-=2,re<<=yt),re+=A.readBits(yt)+3,$e=re-rt,V+$e>k)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var et=0;et<$e;et++)B[V+et]=se;V+=$e,se!==0&&(we-=$e<<15-se)}}if(we!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+we);for(;V<k;V++)B[V]=0}function te(z,k,B,A){var V=0,de,re=new Uint8Array(z);if(A.readMoreInput(),de=A.readBits(2),de===1){for(var se,we=z-1,ue=0,Y=new Int32Array(4),_e=A.readBits(2)+1;we;)we>>=1,++ue;for(se=0;se<_e;++se)Y[se]=A.readBits(ue)%z,re[Y[se]]=2;switch(re[Y[0]]=1,_e){case 1:break;case 3:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[1]===Y[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(Y[0]===Y[1])throw new Error("[ReadHuffmanCode] invalid symbols");re[Y[1]]=1;break;case 4:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[0]===Y[3]||Y[1]===Y[2]||Y[1]===Y[3]||Y[2]===Y[3])throw new Error("[ReadHuffmanCode] invalid symbols");A.readBits(1)?(re[Y[2]]=3,re[Y[3]]=3):re[Y[0]]=2;break}}else{var se,Qe=new Uint8Array($),yt=32,rt=0,$e=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(se=de;se<$&&yt>0;++se){var Ve=be[se],et=0,ot;A.fillBitWindow(),et+=A.val_>>>A.bit_pos_&15,A.bit_pos_+=$e[et].bits,ot=$e[et].value,Qe[Ve]=ot,ot!==0&&(yt-=32>>ot,++rt)}if(!(rt===1||yt===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Qe,z,re,A)}if(V=d(k,B,I,re,z),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ce(z,k,B){var A,V;return A=x(z,k,B),V=g.kBlockLengthPrefixCode[A].nbits,g.kBlockLengthPrefixCode[A].offset+B.readBits(V)}function ae(z,k,B){var A;return z<H?(B+=v[z],B&=3,A=k[B]+L[z]):A=z-H+1,A}function Ce(z,k){for(var B=z[k],A=k;A;--A)z[A]=z[A-1];z[0]=B}function qe(z,k){var B=new Uint8Array(256),A;for(A=0;A<256;++A)B[A]=A;for(A=0;A<k;++A){var V=z[A];z[A]=B[V],V&&Ce(B,V)}}function ke(z,k){this.alphabet_size=z,this.num_htrees=k,this.codes=new Array(k+k*le[z+31>>>5]),this.htrees=new Uint32Array(k)}ke.prototype.decode=function(z){var k,B,A=0;for(k=0;k<this.num_htrees;++k)this.htrees[k]=A,B=te(this.alphabet_size,this.codes,A,z),A+=B};function J(z,k){var B={num_htrees:null,context_map:null},A,V=0,de,re;k.readMoreInput();var se=B.num_htrees=K(k)+1,we=B.context_map=new Uint8Array(z);if(se<=1)return B;for(A=k.readBits(1),A&&(V=k.readBits(4)+1),de=[],re=0;re<W;re++)de[re]=new c(0,0);for(te(se+V,de,0,k),re=0;re<z;){var ue;if(k.readMoreInput(),ue=x(de,0,k),ue===0)we[re]=0,++re;else if(ue<=V)for(var Y=1+(1<<ue)+k.readBits(ue);--Y;){if(re>=z)throw new Error("[DecodeContextMap] i >= context_map_size");we[re]=0,++re}else we[re]=ue-V,++re}return k.readBits(1)&&qe(we,z),B}function Se(z,k,B,A,V,de,re){var se=B*2,we=B,ue=x(k,B*W,re),Y;ue===0?Y=V[se+(de[we]&1)]:ue===1?Y=V[se+(de[we]-1&1)]+1:Y=ue-2,Y>=z&&(Y-=z),A[B]=Y,V[se+(de[we]&1)]=Y,++de[we]}function Ae(z,k,B,A,V,de){var re=V+1,se=B&V,we=de.pos_&h.IBUF_MASK,ue;if(k<8||de.bit_pos_+(k<<3)<de.bit_end_pos_){for(;k-- >0;)de.readMoreInput(),A[se++]=de.readBits(8),se===re&&(z.write(A,re),se=0);return}if(de.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;de.bit_pos_<32;)A[se]=de.val_>>>de.bit_pos_,de.bit_pos_+=8,++se,--k;if(ue=de.bit_end_pos_-de.bit_pos_>>3,we+ue>h.IBUF_MASK){for(var Y=h.IBUF_MASK+1-we,_e=0;_e<Y;_e++)A[se+_e]=de.buf_[we+_e];ue-=Y,se+=Y,k-=Y,we=0}for(var _e=0;_e<ue;_e++)A[se+_e]=de.buf_[we+_e];if(se+=ue,k-=ue,se>=re){z.write(A,re),se-=re;for(var _e=0;_e<se;_e++)A[_e]=A[re+_e]}for(;se+k>=re;){if(ue=re-se,de.input_.read(A,se,ue)<ue)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");z.write(A,re),k-=ue,se=0}if(de.input_.read(A,se,k)<k)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");de.reset()}function Ct(z){var k=z.bit_pos_+7&-8,B=z.readBits(k-z.bit_pos_);return B==0}function Me(z){var k=new a(z),B=new h(k);oe(B);var A=R(B);return A.meta_block_length}n.BrotliDecompressedSize=Me;function sr(z,k){var B=new a(z);k==null&&(k=Me(z));var A=new Uint8Array(k),V=new l(A);return Kt(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}n.BrotliDecompressBuffer=sr;function Kt(z,k){var B,A=0,V=0,de=0,re,se=0,we,ue,Y,_e,Qe=[16,15,11,4],yt=0,rt=0,$e=0,Ve=[new ke(0,0),new ke(0,0),new ke(0,0)],et,ot,me,Qr=128+h.READ_SIZE;me=new h(z),de=oe(me),re=(1<<de)-16,we=1<<de,ue=we-1,Y=new Uint8Array(we+Qr+f.maxDictionaryWordLength),_e=we,et=[],ot=[];for(var Tr=0;Tr<3*W;Tr++)et[Tr]=new c(0,0),ot[Tr]=new c(0,0);for(;!V;){var je=0,ko,_t=[1<<28,1<<28,1<<28],Et=[0],vt=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pe,j,st=null,G=null,Ne,F=null,C,nr=0,Oe=null,Q=0,ar=0,ir=null,Ie=0,xe=0,Ge=0,Ue,Ye;for(B=0;B<3;++B)Ve[B].codes=null,Ve[B].htrees=null;me.readMoreInput();var jt=R(me);if(je=jt.meta_block_length,A+je>k.buffer.length){var lr=new Uint8Array(A+je);lr.set(k.buffer),k.buffer=lr}if(V=jt.input_end,ko=jt.is_uncompressed,jt.is_metadata){for(Ct(me);je>0;--je)me.readMoreInput(),me.readBits(8);continue}if(je!==0){if(ko){me.bit_pos_=me.bit_pos_+7&-8,Ae(k,je,A,Y,ue,me),A+=je;continue}for(B=0;B<3;++B)vt[B]=K(me)+1,vt[B]>=2&&(te(vt[B]+2,et,B*W,me),te(b,ot,B*W,me),_t[B]=ce(ot,B*W,me),M[B]=1);for(me.readMoreInput(),i=me.readBits(2),U=H+(me.readBits(4)<<i),Pe=(1<<i)-1,j=U+(48<<i),G=new Uint8Array(vt[0]),B=0;B<vt[0];++B)me.readMoreInput(),G[B]=me.readBits(2)<<1;var Le=J(vt[0]<<P,me);Ne=Le.num_htrees,st=Le.context_map;var nt=J(vt[2]<<q,me);for(C=nt.num_htrees,F=nt.context_map,Ve[0]=new ke(_,Ne),Ve[1]=new ke(S,vt[1]),Ve[2]=new ke(j,C),B=0;B<3;++B)Ve[B].decode(me);for(Oe=0,ir=0,Ue=G[Et[0]],xe=m.lookupOffsets[Ue],Ge=m.lookupOffsets[Ue+1],Ye=Ve[1].htrees[0];je>0;){var ze,at,ft,Pr,ks,ct,bt,Gt,$r,Ar,eo;for(me.readMoreInput(),_t[1]===0&&(Se(vt[1],et,1,Et,w,M,me),_t[1]=ce(ot,W,me),Ye=Ve[1].htrees[Et[1]]),--_t[1],ze=x(Ve[1].codes,Ye,me),at=ze>>6,at>=2?(at-=2,bt=-1):bt=0,ft=g.kInsertRangeLut[at]+(ze>>3&7),Pr=g.kCopyRangeLut[at]+(ze&7),ks=g.kInsertLengthPrefixCode[ft].offset+me.readBits(g.kInsertLengthPrefixCode[ft].nbits),ct=g.kCopyLengthPrefixCode[Pr].offset+me.readBits(g.kCopyLengthPrefixCode[Pr].nbits),rt=Y[A-1&ue],$e=Y[A-2&ue],Ar=0;Ar<ks;++Ar)me.readMoreInput(),_t[0]===0&&(Se(vt[0],et,0,Et,w,M,me),_t[0]=ce(ot,0,me),nr=Et[0]<<P,Oe=nr,Ue=G[Et[0]],xe=m.lookupOffsets[Ue],Ge=m.lookupOffsets[Ue+1]),$r=m.lookup[xe+rt]|m.lookup[Ge+$e],Q=st[Oe+$r],--_t[0],$e=rt,rt=x(Ve[0].codes,Ve[0].htrees[Q],me),Y[A&ue]=rt,(A&ue)===ue&&k.write(Y,we),++A;if(je-=ks,je<=0)break;if(bt<0){var $r;if(me.readMoreInput(),_t[2]===0&&(Se(vt[2],et,2,Et,w,M,me),_t[2]=ce(ot,2*W,me),ar=Et[2]<<q,ir=ar),--_t[2],$r=(ct>4?3:ct-2)&255,Ie=F[ir+$r],bt=x(Ve[2].codes,Ve[2].htrees[Ie],me),bt>=U){var Os,da,to;bt-=U,da=bt&Pe,bt>>=i,Os=(bt>>1)+1,to=(2+(bt&1)<<Os)-4,bt=U+(to+me.readBits(Os)<<i)+da}}if(Gt=ae(bt,Qe,yt),Gt<0)throw new Error("[BrotliDecompress] invalid distance");if(A<re&&se!==re?se=A:se=re,eo=A&ue,Gt>se)if(ct>=f.minDictionaryWordLength&&ct<=f.maxDictionaryWordLength){var to=f.offsetsByLength[ct],pa=Gt-se-1,ma=f.sizeBitsByLength[ct],wf=(1<<ma)-1,xf=pa&wf,ha=pa>>ma;if(to+=xf*ct,ha<y.kNumTransforms){var Ts=y.transformDictionaryWord(Y,eo,to,ct,ha);if(eo+=Ts,A+=Ts,je-=Ts,eo>=_e){k.write(Y,we);for(var Oo=0;Oo<eo-_e;Oo++)Y[Oo]=Y[_e+Oo]}}else throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je)}else throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je);else{if(bt>0&&(Qe[yt&3]=Gt,++yt),ct>je)throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je);for(Ar=0;Ar<ct;++Ar)Y[A&ue]=Y[A-Gt&ue],(A&ue)===ue&&k.write(Y,we),++A,--je}rt=Y[A-1&ue],$e=Y[A-2&ue]}A&=1073741823}}k.write(Y,A&ue)}n.BrotliDecompress=Kt,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,n){var a=o("base64-js");n.init=function(){var l=o("./decode").BrotliDecompressBuffer,h=a.toByteArray(o("./dictionary.bin.js"));return l(h)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,n){s.exports="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"},{}],6:[function(o,s,n){var a=o("./dictionary-browser");n.init=function(){n.dictionary=a.init()},n.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),n.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),n.minDictionaryWordLength=4,n.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,n){function a(d,m){this.bits=d,this.value=m}n.HuffmanCode=a;var l=15;function h(d,m){for(var g=1<<m-1;d&g;)g>>=1;return(d&g-1)+g}function f(d,m,g,y,T){do y-=g,d[m+y]=new a(T.bits,T.value);while(y>0)}function c(d,m,g){for(var y=1<<m-g;m<l&&(y-=d[m],!(y<=0));)++m,y<<=1;return m-g}n.BrotliBuildHuffmanTable=function(d,m,g,y,T){var O=m,_,S,b,P,q,I,N,W,$,be,H,v=new Int32Array(l+1),L=new Int32Array(l+1);for(H=new Int32Array(T),b=0;b<T;b++)v[y[b]]++;for(L[1]=0,S=1;S<l;S++)L[S+1]=L[S]+v[S];for(b=0;b<T;b++)y[b]!==0&&(H[L[y[b]]++]=b);if(W=g,$=1<<W,be=$,L[l]===1){for(P=0;P<be;++P)d[m+P]=new a(0,H[0]&65535);return be}for(P=0,b=0,S=1,q=2;S<=g;++S,q<<=1)for(;v[S]>0;--v[S])_=new a(S&255,H[b++]&65535),f(d,m+P,q,$,_),P=h(P,S);for(N=be-1,I=-1,S=g+1,q=2;S<=l;++S,q<<=1)for(;v[S]>0;--v[S])(P&N)!==I&&(m+=$,W=c(v,S,g),$=1<<W,be+=$,I=P&N,d[O+I]=new a(W+g&255,m-O-I&65535)),_=new a(S-g&255,H[b++]&65535),f(d,m+(P>>g),q,$,_),P=h(P,S);return be}},{}],8:[function(o,s,n){"use strict";n.byteLength=g,n.toByteArray=T,n.fromByteArray=S;for(var a=[],l=[],h=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)a[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function m(b){var P=b.length;if(P%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var q=b.indexOf("=");q===-1&&(q=P);var I=q===P?0:4-q%4;return[q,I]}function g(b){var P=m(b),q=P[0],I=P[1];return(q+I)*3/4-I}function y(b,P,q){return(P+q)*3/4-q}function T(b){for(var P,q=m(b),I=q[0],N=q[1],W=new h(y(b,I,N)),$=0,be=N>0?I-4:I,H=0;H<be;H+=4)P=l[b.charCodeAt(H)]<<18|l[b.charCodeAt(H+1)]<<12|l[b.charCodeAt(H+2)]<<6|l[b.charCodeAt(H+3)],W[$++]=P>>16&255,W[$++]=P>>8&255,W[$++]=P&255;return N===2&&(P=l[b.charCodeAt(H)]<<2|l[b.charCodeAt(H+1)]>>4,W[$++]=P&255),N===1&&(P=l[b.charCodeAt(H)]<<10|l[b.charCodeAt(H+1)]<<4|l[b.charCodeAt(H+2)]>>2,W[$++]=P>>8&255,W[$++]=P&255),W}function O(b){return a[b>>18&63]+a[b>>12&63]+a[b>>6&63]+a[b&63]}function _(b,P,q){for(var I,N=[],W=P;W<q;W+=3)I=(b[W]<<16&16711680)+(b[W+1]<<8&65280)+(b[W+2]&255),N.push(O(I));return N.join("")}function S(b){for(var P,q=b.length,I=q%3,N=[],W=16383,$=0,be=q-I;$<be;$+=W)N.push(_(b,$,$+W>be?be:$+W));return I===1?(P=b[q-1],N.push(a[P>>2]+a[P<<4&63]+"==")):I===2&&(P=(b[q-2]<<8)+b[q-1],N.push(a[P>>10]+a[P>>4&63]+a[P<<2&63]+"=")),N.join("")}},{}],9:[function(o,s,n){function a(l,h){this.offset=l,this.nbits=h}n.kBlockLengthPrefixCode=[new a(1,2),new a(5,2),new a(9,2),new a(13,2),new a(17,3),new a(25,3),new a(33,3),new a(41,3),new a(49,4),new a(65,4),new a(81,4),new a(97,4),new a(113,5),new a(145,5),new a(177,5),new a(209,5),new a(241,6),new a(305,6),new a(369,7),new a(497,8),new a(753,9),new a(1265,10),new a(2289,11),new a(4337,12),new a(8433,13),new a(16625,24)],n.kInsertLengthPrefixCode=[new a(0,0),new a(1,0),new a(2,0),new a(3,0),new a(4,0),new a(5,0),new a(6,1),new a(8,1),new a(10,2),new a(14,2),new a(18,3),new a(26,3),new a(34,4),new a(50,4),new a(66,5),new a(98,5),new a(130,6),new a(194,7),new a(322,8),new a(578,9),new a(1090,10),new a(2114,12),new a(6210,14),new a(22594,24)],n.kCopyLengthPrefixCode=[new a(2,0),new a(3,0),new a(4,0),new a(5,0),new a(6,0),new a(7,0),new a(8,0),new a(9,0),new a(10,1),new a(12,1),new a(14,2),new a(18,2),new a(22,3),new a(30,3),new a(38,4),new a(54,4),new a(70,5),new a(102,5),new a(134,6),new a(198,7),new a(326,8),new a(582,9),new a(1094,10),new a(2118,24)],n.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],n.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,n){function a(h){this.buffer=h,this.pos=0}a.prototype.read=function(h,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)h[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},n.BrotliInput=a;function l(h){this.buffer=h,this.pos=0}l.prototype.write=function(h,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(h.subarray(0,f),this.pos),this.pos+=f,f},n.BrotliOutput=l},{}],11:[function(o,s,n){var a=o("./dictionary"),l=0,h=1,f=2,c=3,d=4,m=5,g=6,y=7,T=8,O=9,_=10,S=11,b=12,P=13,q=14,I=15,N=16,W=17,$=18,be=19,H=20;function v(oe,K,ge){this.prefix=new Uint8Array(oe.length),this.transform=K,this.suffix=new Uint8Array(ge.length);for(var R=0;R<oe.length;R++)this.prefix[R]=oe.charCodeAt(R);for(var R=0;R<ge.length;R++)this.suffix[R]=ge.charCodeAt(R)}var L=[new v("",l,""),new v("",l," "),new v(" ",l," "),new v("",b,""),new v("",_," "),new v("",l," the "),new v(" ",l,""),new v("s ",l," "),new v("",l," of "),new v("",_,""),new v("",l," and "),new v("",P,""),new v("",h,""),new v(", ",l," "),new v("",l,", "),new v(" ",_," "),new v("",l," in "),new v("",l," to "),new v("e ",l," "),new v("",l,'"'),new v("",l,"."),new v("",l,'">'),new v("",l,` `),new v("",c,""),new v("",l,"]"),new v("",l," for "),new v("",q,""),new v("",f,""),new v("",l," a "),new v("",l," that "),new v(" ",_,""),new v("",l,". "),new v(".",l,""),new v(" ",l,", "),new v("",I,""),new v("",l," with "),new v("",l,"'"),new v("",l," from "),new v("",l," by "),new v("",N,""),new v("",W,""),new v(" the ",l,""),new v("",d,""),new v("",l,". The "),new v("",S,""),new v("",l," on "),new v("",l," as "),new v("",l," is "),new v("",y,""),new v("",h,"ing "),new v("",l,` - `),new v("",l,":"),new v(" ",l,". "),new v("",l,"ed "),new v("",H,""),new v("",$,""),new v("",g,""),new v("",l,"("),new v("",_,", "),new v("",T,""),new v("",l," at "),new v("",l,"ly "),new v(" the ",l," of "),new v("",m,""),new v("",A,""),new v(" ",_,", "),new v("",_,'"'),new v(".",l,"("),new v("",S," "),new v("",_,'">'),new v("",l,'="'),new v(" ",l,"."),new v(".com/",l,""),new v(" the ",l," of the "),new v("",_,"'"),new v("",l,". This "),new v("",l,","),new v(".",l," "),new v("",_,"("),new v("",_,"."),new v("",l," not "),new v(" ",l,'="'),new v("",l,"er "),new v(" ",S," "),new v("",l,"al "),new v(" ",S,""),new v("",l,"='"),new v("",S,'"'),new v("",_,". "),new v(" ",l,"("),new v("",l,"ful "),new v(" ",_,". "),new v("",l,"ive "),new v("",l,"less "),new v("",S,"'"),new v("",l,"est "),new v(" ",_,"."),new v("",S,'">'),new v(" ",l,"='"),new v("",_,","),new v("",l,"ize "),new v("",S,"."),new v("\xC2\xA0",l,""),new v(" ",l,","),new v("",_,'="'),new v("",S,'="'),new v("",l,"ous "),new v("",S,", "),new v("",_,"='"),new v(" ",_,","),new v(" ",S,'="'),new v(" ",S,", "),new v("",S,","),new v("",S,"("),new v("",S,". "),new v(" ",S,"."),new v("",S,"='"),new v(" ",S,". "),new v(" ",_,'="'),new v(" ",S,"='"),new v(" ",_,"='")];a.kTransforms=L,a.kNumTransforms=L.length;function le(oe,K){return oe[K]<192?(oe[K]>=97&&oe[K]<=122&&(oe[K]^=32),1):oe[K]<224?(oe[K+1]^=32,2):(oe[K+2]^=5,3)}a.transformDictionaryWord=function(oe,K,ge,R,x){var E=L[x].prefix,te=L[x].suffix,ce=L[x].transform,ae=ce<b?0:ce-(b-1),Ce=0,qe=K,ke;ae>R&&(ae=R);for(var J=0;J<E.length;)oe[K++]=E[J++];for(ge+=ae,R-=ae,ce<=A&&(R-=ce),Ce=0;Ce<R;Ce++)oe[K++]=n.dictionary[ge+Ce];if(ke=K-R,ce===_)le(oe,ke);else if(ce===S)for(;R>0;){var Se=le(oe,ke);ke+=Se,R-=Se}for(var Ae=0;Ae<te.length;)oe[K++]=te[Ae++];return K-qe}},{"./dictionary":6}],12:[function(o,s,a){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ls=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),Wl=(function(){var e,t,r;return(function(){function o(s,a,n){function l(c,d){if(!a[c]){if(!s[c]){var m=typeof ls=="function"&&ls;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=a[c]={exports:{}};s[c][0].call(y.exports,function(T){var A=s[c][1][T];return l(A||T)},y,y.exports,o,s,a,n)}return a[c].exports}for(var h=typeof ls=="function"&&ls,f=0;f<n.length;f++)l(n[f]);return l}return o})()({1:[function(o,s,a){"use strict";var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}a.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var m=d.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var g in m)l(m,g)&&(c[g]=m[g])}}return c},a.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var h={arraySet:function(c,d,m,g,y){if(d.subarray&&c.subarray){c.set(d.subarray(m,m+g),y);return}for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){var d,m,g,y,T,A;for(g=0,d=0,m=c.length;d<m;d++)g+=c[d].length;for(A=new Uint8Array(g),y=0,d=0,m=c.length;d<m;d++)T=c[d],A.set(T,y),y+=T.length;return A}},f={arraySet:function(c,d,m,g,y){for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,h)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,f))},a.setTyped(n)},{}],2:[function(o,s,a){"use strict";var n=o("./common"),l=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{h=!1}for(var f=new n.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,a.string2buf=function(m){var g,y,T,A,_,S=m.length,b=0;for(A=0;A<S;A++)y=m.charCodeAt(A),(y&64512)===55296&&A+1<S&&(T=m.charCodeAt(A+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),A++)),b+=y<128?1:y<2048?2:y<65536?3:4;for(g=new n.Buf8(b),_=0,A=0;_<b;A++)y=m.charCodeAt(A),(y&64512)===55296&&A+1<S&&(T=m.charCodeAt(A+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),A++)),y<128?g[_++]=y:y<2048?(g[_++]=192|y>>>6,g[_++]=128|y&63):y<65536?(g[_++]=224|y>>>12,g[_++]=128|y>>>6&63,g[_++]=128|y&63):(g[_++]=240|y>>>18,g[_++]=128|y>>>12&63,g[_++]=128|y>>>6&63,g[_++]=128|y&63);return g};function d(m,g){if(g<65534&&(m.subarray&&h||!m.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(m,g));for(var y="",T=0;T<g;T++)y+=String.fromCharCode(m[T]);return y}a.buf2binstring=function(m){return d(m,m.length)},a.binstring2buf=function(m){for(var g=new n.Buf8(m.length),y=0,T=g.length;y<T;y++)g[y]=m.charCodeAt(y);return g},a.buf2string=function(m,g){var y,T,A,_,S=g||m.length,b=new Array(S*2);for(T=0,y=0;y<S;){if(A=m[y++],A<128){b[T++]=A;continue}if(_=f[A],_>4){b[T++]=65533,y+=_-1;continue}for(A&=_===2?31:_===3?15:7;_>1&&y<S;)A=A<<6|m[y++]&63,_--;if(_>1){b[T++]=65533;continue}A<65536?b[T++]=A:(A-=65536,b[T++]=55296|A>>10&1023,b[T++]=56320|A&1023)}return d(b,T)},a.utf8border=function(m,g){var y;for(g=g||m.length,g>m.length&&(g=m.length),y=g-1;y>=0&&(m[y]&192)===128;)y--;return y<0||y===0?g:y+f[m[y]]>g?y:g}},{"./common":1}],3:[function(o,s,a){"use strict";function n(l,h,f,c){for(var d=l&65535|0,m=l>>>16&65535|0,g=0;f!==0;){g=f>2e3?2e3:f,f-=g;do d=d+h[c++]|0,m=m+d|0;while(--g);d%=65521,m%=65521}return d|m<<16|0}s.exports=n},{}],4:[function(o,s,a){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,a){"use strict";function n(){for(var f,c=[],d=0;d<256;d++){f=d;for(var m=0;m<8;m++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=n();function h(f,c,d,m){var g=l,y=m+d;f^=-1;for(var T=m;T<y;T++)f=f>>>8^g[(f^c[T])&255];return f^-1}s.exports=h},{}],6:[function(o,s,a){"use strict";function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=n},{}],7:[function(o,s,a){"use strict";var n=30,l=12;s.exports=function(f,c){var d,m,g,y,T,A,_,S,b,O,q,I,N,W,$,be,H,v,L,le,oe,K,ge,R,x;d=f.state,m=f.next_in,R=f.input,g=m+(f.avail_in-5),y=f.next_out,x=f.output,T=y-(c-f.avail_out),A=y+(f.avail_out-257),_=d.dmax,S=d.wsize,b=d.whave,O=d.wnext,q=d.window,I=d.hold,N=d.bits,W=d.lencode,$=d.distcode,be=(1<<d.lenbits)-1,H=(1<<d.distbits)-1;e:do{N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=W[I&be];t:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L===0)x[y++]=v&65535;else if(L&16){le=v&65535,L&=15,L&&(N<L&&(I+=R[m++]<<N,N+=8),le+=I&(1<<L)-1,I>>>=L,N-=L),N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=$[I&H];r:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L&16){if(oe=v&65535,L&=15,N<L&&(I+=R[m++]<<N,N+=8,N<L&&(I+=R[m++]<<N,N+=8)),oe+=I&(1<<L)-1,oe>_){f.msg="invalid distance too far back",d.mode=n;break e}if(I>>>=L,N-=L,L=y-T,oe>L){if(L=oe-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=n;break e}if(K=0,ge=q,O===0){if(K+=S-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}else if(O<L){if(K+=S+O-L,L-=O,L<le){le-=L;do x[y++]=q[K++];while(--L);if(K=0,O<le){L=O,le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}}else if(K+=O-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}for(;le>2;)x[y++]=ge[K++],x[y++]=ge[K++],x[y++]=ge[K++],le-=3;le&&(x[y++]=ge[K++],le>1&&(x[y++]=ge[K++]))}else{K=y-oe;do x[y++]=x[K++],x[y++]=x[K++],x[y++]=x[K++],le-=3;while(le>2);le&&(x[y++]=x[K++],le>1&&(x[y++]=x[K++]))}}else if((L&64)===0){v=$[(v&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=n;break e}break}}else if((L&64)===0){v=W[(v&65535)+(I&(1<<L)-1)];continue t}else if(L&32){d.mode=l;break e}else{f.msg="invalid literal/length code",d.mode=n;break e}break}}while(m<g&&y<A);le=N>>3,m-=le,N-=le<<3,I&=(1<<N)-1,f.next_in=m,f.next_out=y,f.avail_in=m<g?5+(g-m):5-(m-g),f.avail_out=y<A?257+(A-y):257-(y-A),d.hold=I,d.bits=N}},{}],8:[function(o,s,a){"use strict";var n=o("../utils/common"),l=o("./adler32"),h=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,m=1,g=2,y=4,T=5,A=6,_=0,S=1,b=2,O=-2,q=-3,I=-4,N=-5,W=8,$=1,be=2,H=3,v=4,L=5,le=6,oe=7,K=8,ge=9,R=10,x=11,E=12,te=13,ce=14,ae=15,Ce=16,qe=17,ke=18,J=19,Se=20,Ae=21,Ft=22,ze=23,sr=24,Kt=25,D=26,k=27,B=28,P=29,V=30,de=31,re=32,se=852,we=592,ue=15,Y=ue;function Fe(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Qe(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function yt(w){var M;return!w||!w.state?O:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new n.Buf32(se),M.distcode=M.distdyn=new n.Buf32(we),M.sane=1,M.back=-1,_)}function rt(w){var M;return!w||!w.state?O:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,yt(w))}function $e(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?O:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,rt(w))}function Ve(w,M){var i,U;return w?(U=new Qe,w.state=U,U.window=null,i=$e(w,M),i!==_&&(w.state=null),i):O}function et(w){return Ve(w,Y)}var ot=!0,pe,Qr;function Tr(w){if(ot){var M;for(pe=new n.Buf32(512),Qr=new n.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(m,w.lens,0,288,pe,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(g,w.lens,0,32,Qr,0,w.work,{bits:5}),ot=!1}w.lencode=pe,w.lenbits=9,w.distcode=Qr,w.distbits=5}function Me(w,M,i,U){var Pe,G=w.state;return G.window===null&&(G.wsize=1<<G.wbits,G.wnext=0,G.whave=0,G.window=new n.Buf8(G.wsize)),U>=G.wsize?(n.arraySet(G.window,M,i-G.wsize,G.wsize,0),G.wnext=0,G.whave=G.wsize):(Pe=G.wsize-G.wnext,Pe>U&&(Pe=U),n.arraySet(G.window,M,i-U,Pe,G.wnext),U-=Pe,U?(n.arraySet(G.window,M,i-U,U,0),G.wnext=U,G.whave=G.wsize):(G.wnext+=Pe,G.wnext===G.wsize&&(G.wnext=0),G.whave<G.wsize&&(G.whave+=Pe))),0}function ko(w,M){var i,U,Pe,G,st,j,Ne,F,C,nr,Oe,Q,ar,ir,Ie=0,xe,Ge,je,Ye,Gt,lr,Le,nt,De=new n.Buf8(4),at,ft,Pr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return O;i=w.state,i.mode===E&&(i.mode=te),st=w.next_out,Pe=w.output,Ne=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,nr=j,Oe=Ne,nt=_;e:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=te;break}for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,De[0]=F&255,De[1]=F>>>8&255,i.check=h(i.check,De,2,0),F=0,C=0,i.mode=be;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==W){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Le=(F&15)+8,i.wbits===0)i.wbits=Le;else if(Le>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Le,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case be:for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==W){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(De[0]=F&255,De[1]=F>>>8&255,i.check=h(i.check,De,2,0)),F=0,C=0,i.mode=H;case H:for(;C<32;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(De[0]=F&255,De[1]=F>>>8&255,De[2]=F>>>16&255,De[3]=F>>>24&255,i.check=h(i.check,De,4,0)),F=0,C=0,i.mode=v;case v:for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(De[0]=F&255,De[1]=F>>>8&255,i.check=h(i.check,De,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(De[0]=F&255,De[1]=F>>>8&255,i.check=h(i.check,De,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=le;case le:if(i.flags&1024&&(Q=i.length,Q>j&&(Q=j),Q&&(i.head&&(Le=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),n.arraySet(i.head.extra,U,G,Q,Le)),i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,i.length-=Q),i.length))break e;i.length=0,i.mode=oe;case oe:if(i.flags&2048){if(j===0)break e;Q=0;do Le=U[G+Q++],i.head&&Le&&i.length<65536&&(i.head.name+=String.fromCharCode(Le));while(Le&&Q<j);if(i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,Le)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(j===0)break e;Q=0;do Le=U[G+Q++],i.head&&Le&&i.length<65536&&(i.head.comment+=String.fromCharCode(Le));while(Le&&Q<j);if(i.flags&512&&(i.check=h(i.check,U,Q,G)),j-=Q,G+=Q,Le)break e}else i.head&&(i.head.comment=null);i.mode=ge;case ge:if(i.flags&512){for(;C<16;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}w.adler=i.check=Fe(F),F=0,C=0,i.mode=x;case x:if(i.havedict===0)return w.next_out=st,w.avail_out=Ne,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===T||M===A)break e;case te:if(i.last){F>>>=C&7,C-=C&7,i.mode=k;break}for(;C<3;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ce;break;case 1:if(Tr(i),i.mode=Se,M===A){F>>>=2,C-=2;break e}break;case 2:i.mode=qe;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ce:for(F>>>=C&7,C-=C&7;C<32;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=ae,M===A)break e;case ae:i.mode=Ce;case Ce:if(Q=i.length,Q){if(Q>j&&(Q=j),Q>Ne&&(Q=Ne),Q===0)break e;n.arraySet(Pe,U,G,Q,st),j-=Q,G+=Q,Ne-=Q,st+=Q,i.length-=Q;break}i.mode=E;break;case qe:for(;C<14;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=ke;case ke:for(;i.have<i.ncode;){for(;C<3;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.lens[Pr[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[Pr[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,at={bits:i.lenbits},nt=c(d,i.lens,0,19,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(je<16)F>>>=xe,C-=xe,i.lens[i.have++]=je;else{if(je===16){for(ft=xe+2;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(F>>>=xe,C-=xe,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Le=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(je===17){for(ft=xe+3;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ft=xe+7;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Le}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,at={bits:i.lenbits},nt=c(m,i.lens,0,i.nlen,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,at={bits:i.distbits},nt=c(g,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,at),i.distbits=at.bits,nt){w.msg="invalid distances set",i.mode=V;break}if(i.mode=Se,M===A)break e;case Se:i.mode=Ae;case Ae:if(j>=6&&Ne>=258){w.next_out=st,w.avail_out=Ne,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,f(w,Oe),st=w.next_out,Pe=w.output,Ne=w.avail_out,G=w.next_in,U=w.input,j=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(Ge&&(Ge&240)===0){for(Ye=xe,Gt=Ge,lr=je;Ie=i.lencode[lr+((F&(1<<Ye+Gt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(Ye+xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,i.length=je,Ge===0){i.mode=D;break}if(Ge&32){i.back=-1,i.mode=E;break}if(Ge&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Ge&15,i.mode=Ft;case Ft:if(i.extra){for(ft=i.extra;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=ze;case ze:for(;Ie=i.distcode[F&(1<<i.distbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if((Ge&240)===0){for(Ye=xe,Gt=Ge,lr=je;Ie=i.distcode[lr+((F&(1<<Ye+Gt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,je=Ie&65535,!(Ye+xe<=C);){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,Ge&64){w.msg="invalid distance code",i.mode=V;break}i.offset=je,i.extra=Ge&15,i.mode=sr;case sr:if(i.extra){for(ft=i.extra;C<ft;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Kt;case Kt:if(Ne===0)break e;if(Q=Oe-Ne,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pe,ar=st-i.offset,Q=i.length;Q>Ne&&(Q=Ne),Ne-=Q,i.length-=Q;do Pe[st++]=ir[ar++];while(--Q);i.length===0&&(i.mode=Ae);break;case D:if(Ne===0)break e;Pe[st++]=i.length,Ne--,i.mode=Ae;break;case k:if(i.wrap){for(;C<32;){if(j===0)break e;j--,F|=U[G++]<<C,C+=8}if(Oe-=Ne,w.total_out+=Oe,i.total+=Oe,Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,st-Oe):l(i.check,Pe,Oe,st-Oe)),Oe=Ne,(i.flags?F:Fe(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(j===0)break e;j--,F+=U[G++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=P;case P:nt=S;break e;case V:nt=q;break e;case de:return I;case re:default:return O}return w.next_out=st,w.avail_out=Ne,w.next_in=G,w.avail_in=j,i.hold=F,i.bits=C,(i.wsize||Oe!==w.avail_out&&i.mode<V&&(i.mode<k||M!==y))&&Me(w,w.output,w.next_out,Oe-w.avail_out)?(i.mode=de,I):(nr-=w.avail_in,Oe-=w.avail_out,w.total_in+=nr,w.total_out+=Oe,i.total+=Oe,i.wrap&&Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,w.next_out-Oe):l(i.check,Pe,Oe,w.next_out-Oe)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===Se||i.mode===ae?256:0),(nr===0&&Oe===0||M===y)&&nt===_&&(nt=N),nt)}function _t(w){if(!w||!w.state)return O;var M=w.state;return M.window&&(M.window=null),w.state=null,_}function Et(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?O:(i.head=M,M.done=!1,_)}function vt(w,M){var i=M.length,U,Pe,G;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==x)?O:U.mode===x&&(Pe=1,Pe=l(Pe,M,i,0),Pe!==U.check)?q:(G=Me(w,M,i,i),G?(U.mode=de,I):(U.havedict=1,_))}a.inflateReset=rt,a.inflateReset2=$e,a.inflateResetKeep=yt,a.inflateInit=et,a.inflateInit2=Ve,a.inflate=ko,a.inflateEnd=_t,a.inflateGetHeader=Et,a.inflateSetDictionary=vt,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,a){"use strict";var n=o("../utils/common"),l=15,h=852,f=592,c=0,d=1,m=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(S,b,O,q,I,N,W,$){var be=$.bits,H=0,v=0,L=0,le=0,oe=0,K=0,ge=0,R=0,x=0,E=0,te,ce,ae,Ce,qe,ke=null,J=0,Se,Ae=new n.Buf16(l+1),Ft=new n.Buf16(l+1),ze=null,sr=0,Kt,D,k;for(H=0;H<=l;H++)Ae[H]=0;for(v=0;v<q;v++)Ae[b[O+v]]++;for(oe=be,le=l;le>=1&&Ae[le]===0;le--);if(oe>le&&(oe=le),le===0)return I[N++]=1<<24|64<<16|0,I[N++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<le&&Ae[L]===0;L++);for(oe<L&&(oe=L),R=1,H=1;H<=l;H++)if(R<<=1,R-=Ae[H],R<0)return-1;if(R>0&&(S===c||le!==1))return-1;for(Ft[1]=0,H=1;H<l;H++)Ft[H+1]=Ft[H]+Ae[H];for(v=0;v<q;v++)b[O+v]!==0&&(W[Ft[b[O+v]]++]=v);if(S===c?(ke=ze=W,Se=19):S===d?(ke=g,J-=257,ze=y,sr-=257,Se=256):(ke=T,ze=A,Se=-1),E=0,v=0,H=L,qe=N,K=oe,ge=0,ae=-1,x=1<<oe,Ce=x-1,S===d&&x>h||S===m&&x>f)return 1;for(;;){Kt=H-ge,W[v]<Se?(D=0,k=W[v]):W[v]>Se?(D=ze[sr+W[v]],k=ke[J+W[v]]):(D=96,k=0),te=1<<H-ge,ce=1<<K,L=ce;do ce-=te,I[qe+(E>>ge)+ce]=Kt<<24|D<<16|k|0;while(ce!==0);for(te=1<<H-1;E&te;)te>>=1;if(te!==0?(E&=te-1,E+=te):E=0,v++,--Ae[H]===0){if(H===le)break;H=b[O+W[v]]}if(H>oe&&(E&Ce)!==ae){for(ge===0&&(ge=oe),qe+=L,K=H-ge,R=1<<K;K+ge<le&&(R-=Ae[K+ge],!(R<=0));)K++,R<<=1;if(x+=1<<K,S===d&&x>h||S===m&&x>f)return 1;ae=E&Ce,I[ae]=oe<<24|K<<16|qe-N|0}}return E!==0&&(I[qe+E]=H-ge<<24|64<<16|0),$.bits=oe,0}},{"../utils/common":1}],10:[function(o,s,a){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,a){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=n},{}],"/lib/inflate.js":[function(o,s,a){"use strict";var n=o("./zlib/inflate"),l=o("./utils/common"),h=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),m=o("./zlib/gzheader"),g=Object.prototype.toString;function y(_){if(!(this instanceof y))return new y(_);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},_||{});var S=this.options;S.raw&&S.windowBits>=0&&S.windowBits<16&&(S.windowBits=-S.windowBits,S.windowBits===0&&(S.windowBits=-15)),S.windowBits>=0&&S.windowBits<16&&!(_&&_.windowBits)&&(S.windowBits+=32),S.windowBits>15&&S.windowBits<48&&(S.windowBits&15)===0&&(S.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=n.inflateInit2(this.strm,S.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new m,n.inflateGetHeader(this.strm,this.header),S.dictionary&&(typeof S.dictionary=="string"?S.dictionary=h.string2buf(S.dictionary):g.call(S.dictionary)==="[object ArrayBuffer]"&&(S.dictionary=new Uint8Array(S.dictionary)),S.raw&&(b=n.inflateSetDictionary(this.strm,S.dictionary),b!==f.Z_OK)))throw new Error(c[b])}y.prototype.push=function(_,S){var b=this.strm,O=this.options.chunkSize,q=this.options.dictionary,I,N,W,$,be,H=!1;if(this.ended)return!1;N=S===~~S?S:S===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof _=="string"?b.input=h.binstring2buf(_):g.call(_)==="[object ArrayBuffer]"?b.input=new Uint8Array(_):b.input=_,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(O),b.next_out=0,b.avail_out=O),I=n.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&q&&(I=n.inflateSetDictionary(this.strm,q)),I===f.Z_BUF_ERROR&&H===!0&&(I=f.Z_OK,H=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(N===f.Z_FINISH||N===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=h.utf8border(b.output,b.next_out),$=b.next_out-W,be=h.buf2string(b.output,W),b.next_out=$,b.avail_out=O-$,$&&l.arraySet(b.output,b.output,W,$,0),this.onData(be)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(H=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(N=f.Z_FINISH),N===f.Z_FINISH?(I=n.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(N===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},y.prototype.onData=function(_){this.chunks.push(_)},y.prototype.onEnd=function(_){_===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=_,this.msg=this.strm.msg};function T(_,S){var b=new y(S);if(b.push(_,!0),b.err)throw b.msg||c[b.err];return b.result}function A(_,S){return S=S||{},S.raw=!0,T(_,S)}a.Inflate=y,a.inflate=T,a.inflateRaw=A,a.ungzip=T},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var Aw=globalThis.fetch,us=class{constructor(e,t={},r){this.type=e,this.detail=t,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},fd=class{constructor(){this.listeners={}}addEventListener(e,t,r){let o=this.listeners[e]||[];r?o.unshift(t):o.push(t),this.listeners[e]=o}removeEventListener(e,t){let r=this.listeners[e]||[],o=r.findIndex(s=>s===t);o>-1&&(r.splice(o,1),this.listeners[e]=r)}dispatch(e){let t=this.listeners[e.type];if(t)for(let r=0,o=t.length;r<o&&e.__mayPropagate;r++)t[r](e)}},cd=new Date("1904-01-01T00:00:00+0000").getTime();function dd(e){return Array.from(e).map(t=>String.fromCharCode(t)).join("")}var md=class{constructor(e,t,r){this.name=(r||e.tag||"").trim(),this.length=e.length,this.start=e.offset,this.offset=0,this.data=t,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),a=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,a)})})}get currentPosition(){return this.start+this.offset}set currentPosition(e){this.start=e,this.offset=0}skip(e=0,t=8){this.offset+=e*t/8}getValue(e,t){let r=this.start+this.offset;this.offset+=t;try{return this.data[e](r)}catch(o){throw console.error("parser",e,t,this),console.error("parser",this.start,this.offset),o}}flags(e){if(e===8||e===16||e===32||e===64)return this[`uint${e}`].toString(2).padStart(e,0).split("").map(t=>t==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let e=this.uint32;return dd([e>>24&255,e>>16&255,e>>8&255,e&255])}get fixed(){let e=this.int16,t=Math.round(1e3*this.uint16/65356);return e+t/1e3}get legacyFixed(){let e=this.uint16,t=this.uint16.toString(16).padStart(4,0);return parseFloat(`${e}.${t}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let e=0;for(let t=0;t<5;t++){let r=this.uint8;if(e=e*128+(r&127),r<128)break}return e}get longdatetime(){return new Date(cd+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let e=p.uint16,t=[0,1,-2,-1][e>>14],r=e&16383;return t+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(e=0,t=0,r=8,o=!1){if(e=e||this.length,e===0)return[];t&&(this.currentPosition=t);let s=`${o?"":"u"}int${r}`,a=[];for(;e--;)a.push(this[s]);return a}},Be=class{constructor(e){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>e});let r=e.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(e){Object.keys(e).forEach(t=>{let r=Object.getOwnPropertyDescriptor(e,t);r.get?this[t]=r.get.bind(this):r.value!==void 0&&(this[t]=r.value)}),this.parser.length&&this.parser.verifyLength()}},me=class extends Be{constructor(e,t,r){let{parser:o,start:s}=super(new md(e,t,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(e,t,r){let o;Object.defineProperty(e,t,{get:()=>o||(o=r(),o),enumerable:!0})}var pd=class extends me{constructor(e,t,r){let{p:o}=super({offset:0,length:12},t,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new hd(o)),this.tables={},this.directory.forEach(s=>{let a=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},t);Z(this.tables,s.tag.trim(),a)})}},hd=class{constructor(e){this.tag=e.tag,this.checksum=e.uint32,this.offset=e.uint32,this.length=e.uint32}},Hl=Wl.inflate||void 0,ql=void 0,gd=class extends me{constructor(e,t,r){let{p:o}=super({offset:0,length:44},t,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new yd(o)),vd(this,t,r)}},yd=class{constructor(e){this.tag=e.tag,this.offset=e.uint32,this.compLength=e.uint32,this.origLength=e.uint32,this.origChecksum=e.uint32}};function vd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=0,a=t;if(o.compLength!==o.origLength){let n=t.buffer.slice(o.offset,o.offset+o.compLength),l;if(Hl)l=Hl(new Uint8Array(n));else if(ql)l=ql(new Uint8Array(n));else{let h="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(h),new Error(h)}a=new DataView(l.buffer)}else s=o.offset;return r(e.tables,{tag:o.tag,offset:s,length:o.origLength},a)})})}var Yl=Ul,Zl=void 0,bd=class extends me{constructor(e,t,r){let{p:o}=super({offset:0,length:48},t,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new wd(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,h)=>{let f=this.directory[h+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let a,n=t.buffer.slice(s);if(Yl)a=Yl(new Uint8Array(n));else if(Zl)a=new Uint8Array(Zl(n));else{let l="no brotli decoder available to decode WOFF2 font";throw e.onerror&&e.onerror(l),new Error(l)}xd(this,a,r)}},wd=class{constructor(e){this.flags=e.uint8;let t=this.tagNumber=this.flags&63;t===63?this.tag=e.tag:this.tag=Sd(t);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=e.uint128,o&&(this.transformLength=e.uint128)}};function xd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=o.offset,a=s+(o.transformLength?o.transformLength:o.origLength),n=new DataView(t.slice(s,a).buffer);try{return r(e.tables,{tag:o.tag,offset:0,length:o.origLength},n)}catch(l){console.error(l)}})})}function Sd(e){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][e&63]}var tu={},ru=!1;Promise.all([Promise.resolve().then(function(){return Kd}),Promise.resolve().then(function(){return Qd}),Promise.resolve().then(function(){return em}),Promise.resolve().then(function(){return om}),Promise.resolve().then(function(){return nm}),Promise.resolve().then(function(){return fm}),Promise.resolve().then(function(){return dm}),Promise.resolve().then(function(){return pm}),Promise.resolve().then(function(){return Fm}),Promise.resolve().then(function(){return Bm}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return Fp}),Promise.resolve().then(function(){return Tp}),Promise.resolve().then(function(){return Ep}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return zp}),Promise.resolve().then(function(){return Gp}),Promise.resolve().then(function(){return Up}),Promise.resolve().then(function(){return Hp}),Promise.resolve().then(function(){return Yp}),Promise.resolve().then(function(){return Xp}),Promise.resolve().then(function(){return Qp}),Promise.resolve().then(function(){return th}),Promise.resolve().then(function(){return rh}),Promise.resolve().then(function(){return sh}),Promise.resolve().then(function(){return ah}),Promise.resolve().then(function(){return lh}),Promise.resolve().then(function(){return fh}),Promise.resolve().then(function(){return mh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Ch}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Lh}),Promise.resolve().then(function(){return Nh}),Promise.resolve().then(function(){return zh}),Promise.resolve().then(function(){return Wh}),Promise.resolve().then(function(){return qh}),Promise.resolve().then(function(){return Xh})]).then(e=>{e.forEach(t=>{let r=Object.keys(t)[0];tu[r]=t[r]}),ru=!0});function Cd(e,t,r){let o=t.tag.replace(/[^\w\d]/g,""),s=tu[o];return s?new s(t,r,e):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Fd(){let e=0;function t(r,o){if(!ru)return e>10?o(new Error("loading took too long")):(e++,setTimeout(()=>t(r),250));r(Cd)}return new Promise((r,o)=>t(r))}function _d(e,t){let r=e.lastIndexOf("."),o=(e.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let a={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(a||(a=`${e} is not a known webfont format.`),t)throw new Error(a);console.warn(`Could not load font: ${a}`)}async function kd(e,t,r={}){if(!globalThis.document)return;let o=_d(t,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let a=[];return r.styleRules&&(a=Object.entries(r.styleRules).map(([n,l])=>`${n}: ${l};`)),s.textContent=` + `),new v("",l,":"),new v(" ",l,". "),new v("",l,"ed "),new v("",H,""),new v("",$,""),new v("",g,""),new v("",l,"("),new v("",_,", "),new v("",T,""),new v("",l," at "),new v("",l,"ly "),new v(" the ",l," of "),new v("",m,""),new v("",O,""),new v(" ",_,", "),new v("",_,'"'),new v(".",l,"("),new v("",S," "),new v("",_,'">'),new v("",l,'="'),new v(" ",l,"."),new v(".com/",l,""),new v(" the ",l," of the "),new v("",_,"'"),new v("",l,". This "),new v("",l,","),new v(".",l," "),new v("",_,"("),new v("",_,"."),new v("",l," not "),new v(" ",l,'="'),new v("",l,"er "),new v(" ",S," "),new v("",l,"al "),new v(" ",S,""),new v("",l,"='"),new v("",S,'"'),new v("",_,". "),new v(" ",l,"("),new v("",l,"ful "),new v(" ",_,". "),new v("",l,"ive "),new v("",l,"less "),new v("",S,"'"),new v("",l,"est "),new v(" ",_,"."),new v("",S,'">'),new v(" ",l,"='"),new v("",_,","),new v("",l,"ize "),new v("",S,"."),new v("\xC2\xA0",l,""),new v(" ",l,","),new v("",_,'="'),new v("",S,'="'),new v("",l,"ous "),new v("",S,", "),new v("",_,"='"),new v(" ",_,","),new v(" ",S,'="'),new v(" ",S,", "),new v("",S,","),new v("",S,"("),new v("",S,". "),new v(" ",S,"."),new v("",S,"='"),new v(" ",S,". "),new v(" ",_,'="'),new v(" ",S,"='"),new v(" ",_,"='")];n.kTransforms=L,n.kNumTransforms=L.length;function le(oe,K){return oe[K]<192?(oe[K]>=97&&oe[K]<=122&&(oe[K]^=32),1):oe[K]<224?(oe[K+1]^=32,2):(oe[K+2]^=5,3)}n.transformDictionaryWord=function(oe,K,ge,R,x){var E=L[x].prefix,te=L[x].suffix,ce=L[x].transform,ae=ce<b?0:ce-(b-1),Ce=0,qe=K,ke;ae>R&&(ae=R);for(var J=0;J<E.length;)oe[K++]=E[J++];for(ge+=ae,R-=ae,ce<=O&&(R-=ce),Ce=0;Ce<R;Ce++)oe[K++]=a.dictionary[ge+Ce];if(ke=K-R,ce===_)le(oe,ke);else if(ce===S)for(;R>0;){var Se=le(oe,ke);ke+=Se,R-=Se}for(var Ae=0;Ae<te.length;)oe[K++]=te[Ae++];return K-qe}},{"./dictionary":6}],12:[function(o,s,n){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ls=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),ou=(function(){var e,t,r;return(function(){function o(s,n,a){function l(c,d){if(!n[c]){if(!s[c]){var m=typeof ls=="function"&&ls;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=n[c]={exports:{}};s[c][0].call(y.exports,function(T){var O=s[c][1][T];return l(O||T)},y,y.exports,o,s,n,a)}return n[c].exports}for(var h=typeof ls=="function"&&ls,f=0;f<a.length;f++)l(a[f]);return l}return o})()({1:[function(o,s,n){"use strict";var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}n.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var m=d.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var g in m)l(m,g)&&(c[g]=m[g])}}return c},n.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var h={arraySet:function(c,d,m,g,y){if(d.subarray&&c.subarray){c.set(d.subarray(m,m+g),y);return}for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){var d,m,g,y,T,O;for(g=0,d=0,m=c.length;d<m;d++)g+=c[d].length;for(O=new Uint8Array(g),y=0,d=0,m=c.length;d<m;d++)T=c[d],O.set(T,y),y+=T.length;return O}},f={arraySet:function(c,d,m,g,y){for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){return[].concat.apply([],c)}};n.setTyped=function(c){c?(n.Buf8=Uint8Array,n.Buf16=Uint16Array,n.Buf32=Int32Array,n.assign(n,h)):(n.Buf8=Array,n.Buf16=Array,n.Buf32=Array,n.assign(n,f))},n.setTyped(a)},{}],2:[function(o,s,n){"use strict";var a=o("./common"),l=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{h=!1}for(var f=new a.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,n.string2buf=function(m){var g,y,T,O,_,S=m.length,b=0;for(O=0;O<S;O++)y=m.charCodeAt(O),(y&64512)===55296&&O+1<S&&(T=m.charCodeAt(O+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),O++)),b+=y<128?1:y<2048?2:y<65536?3:4;for(g=new a.Buf8(b),_=0,O=0;_<b;O++)y=m.charCodeAt(O),(y&64512)===55296&&O+1<S&&(T=m.charCodeAt(O+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),O++)),y<128?g[_++]=y:y<2048?(g[_++]=192|y>>>6,g[_++]=128|y&63):y<65536?(g[_++]=224|y>>>12,g[_++]=128|y>>>6&63,g[_++]=128|y&63):(g[_++]=240|y>>>18,g[_++]=128|y>>>12&63,g[_++]=128|y>>>6&63,g[_++]=128|y&63);return g};function d(m,g){if(g<65534&&(m.subarray&&h||!m.subarray&&l))return String.fromCharCode.apply(null,a.shrinkBuf(m,g));for(var y="",T=0;T<g;T++)y+=String.fromCharCode(m[T]);return y}n.buf2binstring=function(m){return d(m,m.length)},n.binstring2buf=function(m){for(var g=new a.Buf8(m.length),y=0,T=g.length;y<T;y++)g[y]=m.charCodeAt(y);return g},n.buf2string=function(m,g){var y,T,O,_,S=g||m.length,b=new Array(S*2);for(T=0,y=0;y<S;){if(O=m[y++],O<128){b[T++]=O;continue}if(_=f[O],_>4){b[T++]=65533,y+=_-1;continue}for(O&=_===2?31:_===3?15:7;_>1&&y<S;)O=O<<6|m[y++]&63,_--;if(_>1){b[T++]=65533;continue}O<65536?b[T++]=O:(O-=65536,b[T++]=55296|O>>10&1023,b[T++]=56320|O&1023)}return d(b,T)},n.utf8border=function(m,g){var y;for(g=g||m.length,g>m.length&&(g=m.length),y=g-1;y>=0&&(m[y]&192)===128;)y--;return y<0||y===0?g:y+f[m[y]]>g?y:g}},{"./common":1}],3:[function(o,s,n){"use strict";function a(l,h,f,c){for(var d=l&65535|0,m=l>>>16&65535|0,g=0;f!==0;){g=f>2e3?2e3:f,f-=g;do d=d+h[c++]|0,m=m+d|0;while(--g);d%=65521,m%=65521}return d|m<<16|0}s.exports=a},{}],4:[function(o,s,n){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,n){"use strict";function a(){for(var f,c=[],d=0;d<256;d++){f=d;for(var m=0;m<8;m++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=a();function h(f,c,d,m){var g=l,y=m+d;f^=-1;for(var T=m;T<y;T++)f=f>>>8^g[(f^c[T])&255];return f^-1}s.exports=h},{}],6:[function(o,s,n){"use strict";function a(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=a},{}],7:[function(o,s,n){"use strict";var a=30,l=12;s.exports=function(f,c){var d,m,g,y,T,O,_,S,b,P,q,I,N,W,$,be,H,v,L,le,oe,K,ge,R,x;d=f.state,m=f.next_in,R=f.input,g=m+(f.avail_in-5),y=f.next_out,x=f.output,T=y-(c-f.avail_out),O=y+(f.avail_out-257),_=d.dmax,S=d.wsize,b=d.whave,P=d.wnext,q=d.window,I=d.hold,N=d.bits,W=d.lencode,$=d.distcode,be=(1<<d.lenbits)-1,H=(1<<d.distbits)-1;e:do{N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=W[I&be];t:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L===0)x[y++]=v&65535;else if(L&16){le=v&65535,L&=15,L&&(N<L&&(I+=R[m++]<<N,N+=8),le+=I&(1<<L)-1,I>>>=L,N-=L),N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=$[I&H];r:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L&16){if(oe=v&65535,L&=15,N<L&&(I+=R[m++]<<N,N+=8,N<L&&(I+=R[m++]<<N,N+=8)),oe+=I&(1<<L)-1,oe>_){f.msg="invalid distance too far back",d.mode=a;break e}if(I>>>=L,N-=L,L=y-T,oe>L){if(L=oe-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=a;break e}if(K=0,ge=q,P===0){if(K+=S-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}else if(P<L){if(K+=S+P-L,L-=P,L<le){le-=L;do x[y++]=q[K++];while(--L);if(K=0,P<le){L=P,le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}}else if(K+=P-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}for(;le>2;)x[y++]=ge[K++],x[y++]=ge[K++],x[y++]=ge[K++],le-=3;le&&(x[y++]=ge[K++],le>1&&(x[y++]=ge[K++]))}else{K=y-oe;do x[y++]=x[K++],x[y++]=x[K++],x[y++]=x[K++],le-=3;while(le>2);le&&(x[y++]=x[K++],le>1&&(x[y++]=x[K++]))}}else if((L&64)===0){v=$[(v&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=a;break e}break}}else if((L&64)===0){v=W[(v&65535)+(I&(1<<L)-1)];continue t}else if(L&32){d.mode=l;break e}else{f.msg="invalid literal/length code",d.mode=a;break e}break}}while(m<g&&y<O);le=N>>3,m-=le,N-=le<<3,I&=(1<<N)-1,f.next_in=m,f.next_out=y,f.avail_in=m<g?5+(g-m):5-(m-g),f.avail_out=y<O?257+(O-y):257-(y-O),d.hold=I,d.bits=N}},{}],8:[function(o,s,n){"use strict";var a=o("../utils/common"),l=o("./adler32"),h=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,m=1,g=2,y=4,T=5,O=6,_=0,S=1,b=2,P=-2,q=-3,I=-4,N=-5,W=8,$=1,be=2,H=3,v=4,L=5,le=6,oe=7,K=8,ge=9,R=10,x=11,E=12,te=13,ce=14,ae=15,Ce=16,qe=17,ke=18,J=19,Se=20,Ae=21,Ct=22,Me=23,sr=24,Kt=25,z=26,k=27,B=28,A=29,V=30,de=31,re=32,se=852,we=592,ue=15,Y=ue;function _e(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Qe(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function yt(w){var M;return!w||!w.state?P:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new a.Buf32(se),M.distcode=M.distdyn=new a.Buf32(we),M.sane=1,M.back=-1,_)}function rt(w){var M;return!w||!w.state?P:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,yt(w))}function $e(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?P:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,rt(w))}function Ve(w,M){var i,U;return w?(U=new Qe,w.state=U,U.window=null,i=$e(w,M),i!==_&&(w.state=null),i):P}function et(w){return Ve(w,Y)}var ot=!0,me,Qr;function Tr(w){if(ot){var M;for(me=new a.Buf32(512),Qr=new a.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(m,w.lens,0,288,me,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(g,w.lens,0,32,Qr,0,w.work,{bits:5}),ot=!1}w.lencode=me,w.lenbits=9,w.distcode=Qr,w.distbits=5}function je(w,M,i,U){var Pe,j=w.state;return j.window===null&&(j.wsize=1<<j.wbits,j.wnext=0,j.whave=0,j.window=new a.Buf8(j.wsize)),U>=j.wsize?(a.arraySet(j.window,M,i-j.wsize,j.wsize,0),j.wnext=0,j.whave=j.wsize):(Pe=j.wsize-j.wnext,Pe>U&&(Pe=U),a.arraySet(j.window,M,i-U,Pe,j.wnext),U-=Pe,U?(a.arraySet(j.window,M,i-U,U,0),j.wnext=U,j.whave=j.wsize):(j.wnext+=Pe,j.wnext===j.wsize&&(j.wnext=0),j.whave<j.wsize&&(j.whave+=Pe))),0}function ko(w,M){var i,U,Pe,j,st,G,Ne,F,C,nr,Oe,Q,ar,ir,Ie=0,xe,Ge,Ue,Ye,jt,lr,Le,nt,ze=new a.Buf8(4),at,ft,Pr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return P;i=w.state,i.mode===E&&(i.mode=te),st=w.next_out,Pe=w.output,Ne=w.avail_out,j=w.next_in,U=w.input,G=w.avail_in,F=i.hold,C=i.bits,nr=G,Oe=Ne,nt=_;e:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=te;break}for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0),F=0,C=0,i.mode=be;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==W){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Le=(F&15)+8,i.wbits===0)i.wbits=Le;else if(Le>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Le,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case be:for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==W){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0,i.mode=H;case H:for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,ze[2]=F>>>16&255,ze[3]=F>>>24&255,i.check=h(i.check,ze,4,0)),F=0,C=0,i.mode=v;case v:for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=le;case le:if(i.flags&1024&&(Q=i.length,Q>G&&(Q=G),Q&&(i.head&&(Le=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),a.arraySet(i.head.extra,U,j,Q,Le)),i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,i.length-=Q),i.length))break e;i.length=0,i.mode=oe;case oe:if(i.flags&2048){if(G===0)break e;Q=0;do Le=U[j+Q++],i.head&&Le&&i.length<65536&&(i.head.name+=String.fromCharCode(Le));while(Le&&Q<G);if(i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,Le)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(G===0)break e;Q=0;do Le=U[j+Q++],i.head&&Le&&i.length<65536&&(i.head.comment+=String.fromCharCode(Le));while(Le&&Q<G);if(i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,Le)break e}else i.head&&(i.head.comment=null);i.mode=ge;case ge:if(i.flags&512){for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}w.adler=i.check=_e(F),F=0,C=0,i.mode=x;case x:if(i.havedict===0)return w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===T||M===O)break e;case te:if(i.last){F>>>=C&7,C-=C&7,i.mode=k;break}for(;C<3;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ce;break;case 1:if(Tr(i),i.mode=Se,M===O){F>>>=2,C-=2;break e}break;case 2:i.mode=qe;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ce:for(F>>>=C&7,C-=C&7;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=ae,M===O)break e;case ae:i.mode=Ce;case Ce:if(Q=i.length,Q){if(Q>G&&(Q=G),Q>Ne&&(Q=Ne),Q===0)break e;a.arraySet(Pe,U,j,Q,st),G-=Q,j+=Q,Ne-=Q,st+=Q,i.length-=Q;break}i.mode=E;break;case qe:for(;C<14;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=ke;case ke:for(;i.have<i.ncode;){for(;C<3;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.lens[Pr[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[Pr[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,at={bits:i.lenbits},nt=c(d,i.lens,0,19,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(Ue<16)F>>>=xe,C-=xe,i.lens[i.have++]=Ue;else{if(Ue===16){for(ft=xe+2;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F>>>=xe,C-=xe,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Le=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(Ue===17){for(ft=xe+3;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ft=xe+7;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Le}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,at={bits:i.lenbits},nt=c(m,i.lens,0,i.nlen,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,at={bits:i.distbits},nt=c(g,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,at),i.distbits=at.bits,nt){w.msg="invalid distances set",i.mode=V;break}if(i.mode=Se,M===O)break e;case Se:i.mode=Ae;case Ae:if(G>=6&&Ne>=258){w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,f(w,Oe),st=w.next_out,Pe=w.output,Ne=w.avail_out,j=w.next_in,U=w.input,G=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(Ge&&(Ge&240)===0){for(Ye=xe,jt=Ge,lr=Ue;Ie=i.lencode[lr+((F&(1<<Ye+jt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(Ye+xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,i.length=Ue,Ge===0){i.mode=z;break}if(Ge&32){i.back=-1,i.mode=E;break}if(Ge&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Ge&15,i.mode=Ct;case Ct:if(i.extra){for(ft=i.extra;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=Me;case Me:for(;Ie=i.distcode[F&(1<<i.distbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if((Ge&240)===0){for(Ye=xe,jt=Ge,lr=Ue;Ie=i.distcode[lr+((F&(1<<Ye+jt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(Ye+xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,Ge&64){w.msg="invalid distance code",i.mode=V;break}i.offset=Ue,i.extra=Ge&15,i.mode=sr;case sr:if(i.extra){for(ft=i.extra;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Kt;case Kt:if(Ne===0)break e;if(Q=Oe-Ne,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pe,ar=st-i.offset,Q=i.length;Q>Ne&&(Q=Ne),Ne-=Q,i.length-=Q;do Pe[st++]=ir[ar++];while(--Q);i.length===0&&(i.mode=Ae);break;case z:if(Ne===0)break e;Pe[st++]=i.length,Ne--,i.mode=Ae;break;case k:if(i.wrap){for(;C<32;){if(G===0)break e;G--,F|=U[j++]<<C,C+=8}if(Oe-=Ne,w.total_out+=Oe,i.total+=Oe,Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,st-Oe):l(i.check,Pe,Oe,st-Oe)),Oe=Ne,(i.flags?F:_e(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=A;case A:nt=S;break e;case V:nt=q;break e;case de:return I;case re:default:return P}return w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,(i.wsize||Oe!==w.avail_out&&i.mode<V&&(i.mode<k||M!==y))&&je(w,w.output,w.next_out,Oe-w.avail_out)?(i.mode=de,I):(nr-=w.avail_in,Oe-=w.avail_out,w.total_in+=nr,w.total_out+=Oe,i.total+=Oe,i.wrap&&Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,w.next_out-Oe):l(i.check,Pe,Oe,w.next_out-Oe)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===Se||i.mode===ae?256:0),(nr===0&&Oe===0||M===y)&&nt===_&&(nt=N),nt)}function _t(w){if(!w||!w.state)return P;var M=w.state;return M.window&&(M.window=null),w.state=null,_}function Et(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?P:(i.head=M,M.done=!1,_)}function vt(w,M){var i=M.length,U,Pe,j;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==x)?P:U.mode===x&&(Pe=1,Pe=l(Pe,M,i,0),Pe!==U.check)?q:(j=je(w,M,i,i),j?(U.mode=de,I):(U.havedict=1,_))}n.inflateReset=rt,n.inflateReset2=$e,n.inflateResetKeep=yt,n.inflateInit=et,n.inflateInit2=Ve,n.inflate=ko,n.inflateEnd=_t,n.inflateGetHeader=Et,n.inflateSetDictionary=vt,n.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,n){"use strict";var a=o("../utils/common"),l=15,h=852,f=592,c=0,d=1,m=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],O=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(S,b,P,q,I,N,W,$){var be=$.bits,H=0,v=0,L=0,le=0,oe=0,K=0,ge=0,R=0,x=0,E=0,te,ce,ae,Ce,qe,ke=null,J=0,Se,Ae=new a.Buf16(l+1),Ct=new a.Buf16(l+1),Me=null,sr=0,Kt,z,k;for(H=0;H<=l;H++)Ae[H]=0;for(v=0;v<q;v++)Ae[b[P+v]]++;for(oe=be,le=l;le>=1&&Ae[le]===0;le--);if(oe>le&&(oe=le),le===0)return I[N++]=1<<24|64<<16|0,I[N++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<le&&Ae[L]===0;L++);for(oe<L&&(oe=L),R=1,H=1;H<=l;H++)if(R<<=1,R-=Ae[H],R<0)return-1;if(R>0&&(S===c||le!==1))return-1;for(Ct[1]=0,H=1;H<l;H++)Ct[H+1]=Ct[H]+Ae[H];for(v=0;v<q;v++)b[P+v]!==0&&(W[Ct[b[P+v]]++]=v);if(S===c?(ke=Me=W,Se=19):S===d?(ke=g,J-=257,Me=y,sr-=257,Se=256):(ke=T,Me=O,Se=-1),E=0,v=0,H=L,qe=N,K=oe,ge=0,ae=-1,x=1<<oe,Ce=x-1,S===d&&x>h||S===m&&x>f)return 1;for(;;){Kt=H-ge,W[v]<Se?(z=0,k=W[v]):W[v]>Se?(z=Me[sr+W[v]],k=ke[J+W[v]]):(z=96,k=0),te=1<<H-ge,ce=1<<K,L=ce;do ce-=te,I[qe+(E>>ge)+ce]=Kt<<24|z<<16|k|0;while(ce!==0);for(te=1<<H-1;E&te;)te>>=1;if(te!==0?(E&=te-1,E+=te):E=0,v++,--Ae[H]===0){if(H===le)break;H=b[P+W[v]]}if(H>oe&&(E&Ce)!==ae){for(ge===0&&(ge=oe),qe+=L,K=H-ge,R=1<<K;K+ge<le&&(R-=Ae[K+ge],!(R<=0));)K++,R<<=1;if(x+=1<<K,S===d&&x>h||S===m&&x>f)return 1;ae=E&Ce,I[ae]=oe<<24|K<<16|qe-N|0}}return E!==0&&(I[qe+E]=H-ge<<24|64<<16|0),$.bits=oe,0}},{"../utils/common":1}],10:[function(o,s,n){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,n){"use strict";function a(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=a},{}],"/lib/inflate.js":[function(o,s,n){"use strict";var a=o("./zlib/inflate"),l=o("./utils/common"),h=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),m=o("./zlib/gzheader"),g=Object.prototype.toString;function y(_){if(!(this instanceof y))return new y(_);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},_||{});var S=this.options;S.raw&&S.windowBits>=0&&S.windowBits<16&&(S.windowBits=-S.windowBits,S.windowBits===0&&(S.windowBits=-15)),S.windowBits>=0&&S.windowBits<16&&!(_&&_.windowBits)&&(S.windowBits+=32),S.windowBits>15&&S.windowBits<48&&(S.windowBits&15)===0&&(S.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=a.inflateInit2(this.strm,S.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new m,a.inflateGetHeader(this.strm,this.header),S.dictionary&&(typeof S.dictionary=="string"?S.dictionary=h.string2buf(S.dictionary):g.call(S.dictionary)==="[object ArrayBuffer]"&&(S.dictionary=new Uint8Array(S.dictionary)),S.raw&&(b=a.inflateSetDictionary(this.strm,S.dictionary),b!==f.Z_OK)))throw new Error(c[b])}y.prototype.push=function(_,S){var b=this.strm,P=this.options.chunkSize,q=this.options.dictionary,I,N,W,$,be,H=!1;if(this.ended)return!1;N=S===~~S?S:S===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof _=="string"?b.input=h.binstring2buf(_):g.call(_)==="[object ArrayBuffer]"?b.input=new Uint8Array(_):b.input=_,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(P),b.next_out=0,b.avail_out=P),I=a.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&q&&(I=a.inflateSetDictionary(this.strm,q)),I===f.Z_BUF_ERROR&&H===!0&&(I=f.Z_OK,H=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(N===f.Z_FINISH||N===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=h.utf8border(b.output,b.next_out),$=b.next_out-W,be=h.buf2string(b.output,W),b.next_out=$,b.avail_out=P-$,$&&l.arraySet(b.output,b.output,W,$,0),this.onData(be)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(H=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(N=f.Z_FINISH),N===f.Z_FINISH?(I=a.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(N===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},y.prototype.onData=function(_){this.chunks.push(_)},y.prototype.onEnd=function(_){_===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=_,this.msg=this.strm.msg};function T(_,S){var b=new y(S);if(b.push(_,!0),b.err)throw b.msg||c[b.err];return b.result}function O(_,S){return S=S||{},S.raw=!0,T(_,S)}n.Inflate=y,n.inflate=T,n.inflateRaw=O,n.ungzip=T},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var rx=globalThis.fetch,us=class{constructor(e,t={},r){this.type=e,this.detail=t,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},Ld=class{constructor(){this.listeners={}}addEventListener(e,t,r){let o=this.listeners[e]||[];r?o.unshift(t):o.push(t),this.listeners[e]=o}removeEventListener(e,t){let r=this.listeners[e]||[],o=r.findIndex(s=>s===t);o>-1&&(r.splice(o,1),this.listeners[e]=r)}dispatch(e){let t=this.listeners[e.type];if(t)for(let r=0,o=t.length;r<o&&e.__mayPropagate;r++)t[r](e)}},Bd=new Date("1904-01-01T00:00:00+0000").getTime();function Vd(e){return Array.from(e).map(t=>String.fromCharCode(t)).join("")}var Nd=class{constructor(e,t,r){this.name=(r||e.tag||"").trim(),this.length=e.length,this.start=e.offset,this.offset=0,this.data=t,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),n=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,n)})})}get currentPosition(){return this.start+this.offset}set currentPosition(e){this.start=e,this.offset=0}skip(e=0,t=8){this.offset+=e*t/8}getValue(e,t){let r=this.start+this.offset;this.offset+=t;try{return this.data[e](r)}catch(o){throw console.error("parser",e,t,this),console.error("parser",this.start,this.offset),o}}flags(e){if(e===8||e===16||e===32||e===64)return this[`uint${e}`].toString(2).padStart(e,0).split("").map(t=>t==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let e=this.uint32;return Vd([e>>24&255,e>>16&255,e>>8&255,e&255])}get fixed(){let e=this.int16,t=Math.round(1e3*this.uint16/65356);return e+t/1e3}get legacyFixed(){let e=this.uint16,t=this.uint16.toString(16).padStart(4,0);return parseFloat(`${e}.${t}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let e=0;for(let t=0;t<5;t++){let r=this.uint8;if(e=e*128+(r&127),r<128)break}return e}get longdatetime(){return new Date(Bd+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let e=p.uint16,t=[0,1,-2,-1][e>>14],r=e&16383;return t+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(e=0,t=0,r=8,o=!1){if(e=e||this.length,e===0)return[];t&&(this.currentPosition=t);let s=`${o?"":"u"}int${r}`,n=[];for(;e--;)n.push(this[s]);return n}},Be=class{constructor(e){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>e});let r=e.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(e){Object.keys(e).forEach(t=>{let r=Object.getOwnPropertyDescriptor(e,t);r.get?this[t]=r.get.bind(this):r.value!==void 0&&(this[t]=r.value)}),this.parser.length&&this.parser.verifyLength()}},pe=class extends Be{constructor(e,t,r){let{parser:o,start:s}=super(new Nd(e,t,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(e,t,r){let o;Object.defineProperty(e,t,{get:()=>o||(o=r(),o),enumerable:!0})}var zd=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:12},t,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new Dd(o)),this.tables={},this.directory.forEach(s=>{let n=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},t);Z(this.tables,s.tag.trim(),n)})}},Dd=class{constructor(e){this.tag=e.tag,this.checksum=e.uint32,this.offset=e.uint32,this.length=e.uint32}},su=ou.inflate||void 0,nu=void 0,Md=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:44},t,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new jd(o)),Gd(this,t,r)}},jd=class{constructor(e){this.tag=e.tag,this.offset=e.uint32,this.compLength=e.uint32,this.origLength=e.uint32,this.origChecksum=e.uint32}};function Gd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=0,n=t;if(o.compLength!==o.origLength){let a=t.buffer.slice(o.offset,o.offset+o.compLength),l;if(su)l=su(new Uint8Array(a));else if(nu)l=nu(new Uint8Array(a));else{let h="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(h),new Error(h)}n=new DataView(l.buffer)}else s=o.offset;return r(e.tables,{tag:o.tag,offset:s,length:o.origLength},n)})})}var au=ru,iu=void 0,Ud=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:48},t,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new Wd(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,h)=>{let f=this.directory[h+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let n,a=t.buffer.slice(s);if(au)n=au(new Uint8Array(a));else if(iu)n=new Uint8Array(iu(a));else{let l="no brotli decoder available to decode WOFF2 font";throw e.onerror&&e.onerror(l),new Error(l)}Hd(this,n,r)}},Wd=class{constructor(e){this.flags=e.uint8;let t=this.tagNumber=this.flags&63;t===63?this.tag=e.tag:this.tag=qd(t);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=e.uint128,o&&(this.transformLength=e.uint128)}};function Hd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=o.offset,n=s+(o.transformLength?o.transformLength:o.origLength),a=new DataView(t.slice(s,n).buffer);try{return r(e.tables,{tag:o.tag,offset:0,length:o.origLength},a)}catch(l){console.error(l)}})})}function qd(e){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][e&63]}var mu={},hu=!1;Promise.all([Promise.resolve().then(function(){return wp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return _p}),Promise.resolve().then(function(){return Op}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return zp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return nm}),Promise.resolve().then(function(){return qm}),Promise.resolve().then(function(){return Zm}),Promise.resolve().then(function(){return Qm}),Promise.resolve().then(function(){return rh}),Promise.resolve().then(function(){return sh}),Promise.resolve().then(function(){return ah}),Promise.resolve().then(function(){return uh}),Promise.resolve().then(function(){return ch}),Promise.resolve().then(function(){return ph}),Promise.resolve().then(function(){return hh}),Promise.resolve().then(function(){return yh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Sh}),Promise.resolve().then(function(){return Fh}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Th}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Lh}),Promise.resolve().then(function(){return Nh}),Promise.resolve().then(function(){return Uh}),Promise.resolve().then(function(){return Yh}),Promise.resolve().then(function(){return Kh}),Promise.resolve().then(function(){return eg}),Promise.resolve().then(function(){return rg}),Promise.resolve().then(function(){return sg}),Promise.resolve().then(function(){return ig}),Promise.resolve().then(function(){return ug}),Promise.resolve().then(function(){return mg}),Promise.resolve().then(function(){return gg}),Promise.resolve().then(function(){return bg})]).then(e=>{e.forEach(t=>{let r=Object.keys(t)[0];mu[r]=t[r]}),hu=!0});function Yd(e,t,r){let o=t.tag.replace(/[^\w\d]/g,""),s=mu[o];return s?new s(t,r,e):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Zd(){let e=0;function t(r,o){if(!hu)return e>10?o(new Error("loading took too long")):(e++,setTimeout(()=>t(r),250));r(Yd)}return new Promise((r,o)=>t(r))}function Xd(e,t){let r=e.lastIndexOf("."),o=(e.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let n={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(n||(n=`${e} is not a known webfont format.`),t)throw new Error(n);console.warn(`Could not load font: ${n}`)}async function Kd(e,t,r={}){if(!globalThis.document)return;let o=Xd(t,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let n=[];return r.styleRules&&(n=Object.entries(r.styleRules).map(([a,l])=>`${a}: ${l};`)),s.textContent=` @font-face { font-family: "${e}"; - ${a.join(` + ${n.join(` `)} src: url("${t}") format("${o}"); -}`,globalThis.document.head.appendChild(s),s}var Od=[0,1,0,0],Td=[79,84,84,79],Pd=[119,79,70,70],Ad=[119,79,70,50];function fs(e,t){if(e.length===t.length){for(let r=0;r<e.length;r++)if(e[r]!==t[r])return;return!0}}function Rd(e){let t=[e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3)];if(fs(t,Od)||fs(t,Td))return"SFNT";if(fs(t,Pd))return"WOFF";if(fs(t,Ad))return"WOFF2"}function Ed(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}var ds=class extends fd{constructor(e,t={}){super(),this.name=e,this.options=t,this.metrics=!1}get src(){return this.__src}set src(e){this.__src=e,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await kd(this.name,e,this.options),this.loadFont(e)))()}async loadFont(e,t){fetch(e).then(r=>Ed(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,t||e)).catch(r=>{let o=new us("error",r,`Failed to load font at ${t||e}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(e,t){this.fontData=new DataView(e);let r=Rd(this.fontData);if(!r)throw new Error(`${t} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new us("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(e){return Fd().then(t=>(e==="SFNT"&&(this.opentype=new pd(this,this.fontData,t)),e==="WOFF"&&(this.opentype=new gd(this,this.fontData,t)),e==="WOFF2"&&(this.opentype=new bd(this,this.fontData,t)),this.opentype))}getGlyphId(e){return this.opentype.tables.cmap.getGlyphId(e)}reverse(e){return this.opentype.tables.cmap.reverse(e)}supports(e){return this.getGlyphId(e)!==0}supportsVariation(e){return this.opentype.tables.cmap.supportsVariation(e)!==!1}measureText(e,t=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=e,r.style.fontFamily=this.name,r.style.fontSize=`${t}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=t,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let e=new us("unload",{font:this});this.dispatch(e),this.onunload&&this.onunload(e)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let e=new us("load",{font:this});this.dispatch(e),this.onload&&this.onload(e)}}};globalThis.Font=ds;var qt=class extends Be{constructor(e,t,r){super(e),this.plaformID=t,this.encodingID=r}},Id=class extends qt{constructor(e,t,r){super(e,t,r),this.format=0,this.length=e.uint16,this.language=e.uint16,this.glyphIdArray=[...new Array(256)].map(o=>e.uint8)}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=e&&e<=255}reverse(e){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Ld=class extends qt{constructor(e,t,r){super(e,t,r),this.format=2,this.length=e.uint16,this.language=e.uint16,this.subHeaderKeys=[...new Array(256)].map(n=>e.uint16);let o=Math.max(...this.subHeaderKeys),s=e.currentPosition;Z(this,"subHeaders",()=>(e.currentPosition=s,[...new Array(o)].map(n=>new Bd(e))));let a=s+o*8;Z(this,"glyphIndexArray",()=>(e.currentPosition=a,[...new Array(o)].map(n=>e.uint16)))}supports(e){e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let t=e&&255,r=e&&65280,o=this.subHeaders[r],s=this.subHeaders[o],a=s.firstCode,n=a+s.entryCount;return a<=t&&t<=n}reverse(e){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(e=!1){return e?this.subHeaders.map(t=>({firstCode:t.firstCode,lastCode:t.lastCode})):this.subHeaders.map(t=>({start:t.firstCode,end:t.lastCode}))}},Bd=class{constructor(e){this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=e.int16,this.idRangeOffset=e.uint16}},Vd=class extends qt{constructor(e,t,r){super(e,t,r),this.format=4,this.length=e.uint16,this.language=e.uint16,this.segCountX2=e.uint16,this.segCount=this.segCountX2/2,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16;let o=e.currentPosition;Z(this,"endCode",()=>e.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>e.readBytes(this.segCount,s,16));let a=s+this.segCountX2;Z(this,"idDelta",()=>e.readBytes(this.segCount,a,16,!0));let n=a+this.segCountX2;Z(this,"idRangeOffset",()=>e.readBytes(this.segCount,n,16));let l=n+this.segCountX2,h=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>e.readBytes(h,l,16)),Z(this,"segments",()=>this.buildSegments(n,l,e))}buildSegments(e,t,r){let o=(s,a)=>{let n=this.startCode[a],l=this.endCode[a],h=this.idDelta[a],f=this.idRangeOffset[a],c=e+2*a,d=[];if(f===0)for(let m=n+h,g=l+h;m<=g;m++)d.push(m);else for(let m=0,g=l-n;m<=g;m++)r.currentPosition=c+f+m*2,d.push(r.uint16);return{startCode:n,endCode:l,idDelta:h,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(e){let t=this.segments.find(o=>o.glyphIDs.includes(e));if(!t)return{};let r=t.startCode+t.glyphIDs.indexOf(e);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(e){if(e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535)return 0;let t=this.segments.find(r=>r.startCode<=e&&e<=r.endCode);return t?t.glyphIDs[e-t.startCode]:0}supports(e){return this.getGlyphId(e)!==0}getSupportedCharCodes(e=!1){return e?this.segments:this.segments.map(t=>({start:t.startCode,end:t.endCode}))}},Nd=class extends qt{constructor(e,t,r){super(e,t,r),this.format=6,this.length=e.uint16,this.language=e.uint16,this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>e.uint16))}supports(e){if(e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),e<this.firstCode)return{};if(e>this.firstCode+this.entryCount)return{};let t=e-this.firstCode;return{code:t,unicode:String.fromCodePoint(t)}}reverse(e){let t=this.glyphIdArray.indexOf(e);if(t>-1)return this.firstCode+t}getSupportedCharCodes(e=!1){return e?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Dd=class extends qt{constructor(e,t,r){super(e,t,r),this.format=8,e.uint16,this.length=e.uint32,this.language=e.uint32,this.is32=[...new Array(8192)].map(s=>e.uint8),this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new zd(e)))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(t=>t.startcharCode<=e&&e<=t.endcharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startcharCode,end:t.endcharCode}))}},zd=class{constructor(e){this.startcharCode=e.uint32,this.endcharCode=e.uint32,this.startGlyphID=e.uint32}},Md=class extends qt{constructor(e,t,r){super(e,t,r),this.format=10,e.uint16,this.length=e.uint32,this.language=e.uint32,this.startCharCode=e.uint32,this.numChars=e.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>e.uint16))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),e<this.startCharCode||e>this.startCharCode+this.numChars?!1:e-this.startCharCode}reverse(e){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(e=!1){return e?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Gd=class extends qt{constructor(e,t,r){super(e,t,r),this.format=12,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new jd(e)))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535?0:this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){for(let t of this.groups){let r=t.startGlyphID;if(r>e)continue;if(r===e)return t.startCharCode;if(r+(t.endCharCode-t.startCharCode)<e)continue;let s=t.startCharCode+(e-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},jd=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.startGlyphID=e.uint32}},Ud=class extends qt{constructor(e,t,r){super(e,t,r),this.format=13,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32;let o=[...new Array(this.numGroups)].map(s=>new Wd(e));Z(this,"groups",o)}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},Wd=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.glyphID=e.uint32}},Hd=class extends qt{constructor(e,t,r){super(e,t,r),this.subTableStart=e.currentPosition,this.format=14,this.length=e.uint32,this.numVarSelectorRecords=e.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new qd(e)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(e){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(e){let t=this.varSelector.find(r=>r.varSelector===e);return t||!1}getSupportedVariations(){return this.varSelectors.map(e=>e.varSelector)}},qd=class{constructor(e){this.varSelector=e.uint24,this.defaultUVSOffset=e.Offset32,this.nonDefaultUVSOffset=e.Offset32}};function Yd(e,t,r){let o=e.uint16;return o===0?new Id(e,t,r):o===2?new Ld(e,t,r):o===4?new Vd(e,t,r):o===6?new Nd(e,t,r):o===8?new Dd(e,t,r):o===10?new Md(e,t,r):o===12?new Gd(e,t,r):o===13?new Ud(e,t,r):o===14?new Hd(e,t,r):{}}var Zd=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Xd(r,this.tableStart))}getSubTable(e){return this.encodingRecords[e].table}getSupportedEncodings(){return this.encodingRecords.map(e=>({platformID:e.platformID,encodingId:e.encodingID}))}getSupportedCharCodes(e,t){let r=this.encodingRecords.findIndex(s=>s.platformID===e&&s.encodingID===t);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(e){for(let t=0;t<this.numTables;t++){let r=this.getSubTable(t).reverse(e);if(r)return r}}getGlyphId(e){let t=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(t=s.getGlyphId(e),t!==0):!1}),t}supports(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(e)!==!1})}supportsVariation(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(e)!==!1})}},Xd=class{constructor(e,t){let r=this.platformID=e.uint16,o=this.encodingID=e.uint16,s=this.offset=e.Offset32;Z(this,"table",()=>(e.currentPosition=t+s,Yd(e,r,o)))}},Kd=Object.freeze({__proto__:null,cmap:Zd}),Jd=class extends me{constructor(e,t){let{p:r}=super(e,t);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Qd=Object.freeze({__proto__:null,head:Jd}),$d=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},em=Object.freeze({__proto__:null,hhea:$d}),tm=class extends me{constructor(e,t,r){let{p:o}=super(e,t),s=r.hhea.numberOfHMetrics,a=r.maxp.numGlyphs,n=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=n,[...new Array(s)].map(l=>new rm(o.uint16,o.int16)))),s<a){let l=n+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(a-s)].map(h=>o.int16)))}}},rm=class{constructor(e,t){this.advanceWidth=e,this.lsb=t}},om=Object.freeze({__proto__:null,hmtx:tm}),sm=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},nm=Object.freeze({__proto__:null,maxp:sm}),am=class extends me{constructor(e,t){let{p:r}=super(e,t);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new lm(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new im(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(e){let t=this.nameRecords.find(r=>r.nameID===e);if(t)return t.string}},im=class{constructor(e,t){this.length=e,this.offset=t}},lm=class{constructor(e,t){this.platformID=e.uint16,this.encodingID=e.uint16,this.languageID=e.uint16,this.nameID=e.uint16,this.length=e.uint16,this.offset=e.Offset16,Z(this,"string",()=>(e.currentPosition=t.stringStart+this.offset,um(e,this)))}};function um(e,t){let{platformID:r,length:o}=t;if(o===0)return"";if(r===0||r===3){let n=[];for(let l=0,h=o/2;l<h;l++)n[l]=String.fromCharCode(e.uint16);return n.join("")}let s=e.readBytes(o),a=[];return s.forEach(function(n,l){a[l]=String.fromCharCode(n)}),a.join("")}var fm=Object.freeze({__proto__:null,name:am}),cm=class extends me{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},dm=Object.freeze({__proto__:null,OS2:cm}),mm=class extends me{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<Xl.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let a=r.int8;r.skip(a),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+a+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(e){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let t=this.glyphNameIndex[e];if(t<258)return Xl[t];let r=this.glyphNameOffsets[e],s=this.glyphNameOffsets[e+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(n=>String.fromCharCode(n)).join(""))}},Xl=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],pm=Object.freeze({__proto__:null,post:mm}),hm=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new Fn({offset:e.offset+this.horizAxisOffset},t)),Z(this,"vertAxis",()=>new Fn({offset:e.offset+this.vertAxisOffset},t)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new Fn({offset:e.offset+this.itemVarStoreOffset},t)))}},Fn=class extends me{constructor(e,t){let{p:r}=super(e,t,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new gm({offset:e.offset+this.baseTagListOffset},t)),Z(this,"baseScriptList",()=>new ym({offset:e.offset+this.baseScriptListOffset},t))}},gm=class extends me{constructor(e,t){let{p:r}=super(e,t,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},ym=class extends me{constructor(e,t){let{p:r}=super(e,t,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new vm(this.start,r))))}},vm=class{constructor(e,t){this.baseScriptTag=t.tag,this.baseScriptOffset=t.Offset16,Z(this,"baseScriptTable",()=>(t.currentPosition=e+this.baseScriptOffset,new bm(t)))}},bm=class{constructor(e){this.start=e.currentPosition,this.baseValuesOffset=e.Offset16,this.defaultMinMaxOffset=e.Offset16,this.baseLangSysCount=e.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(t=>new wm(this.start,e)),Z(this,"baseValues",()=>(e.currentPosition=this.start+this.baseValuesOffset,new xm(e))),Z(this,"defaultMinMax",()=>(e.currentPosition=this.start+this.defaultMinMaxOffset,new ou(e)))}},wm=class{constructor(e,t){this.baseLangSysTag=t.tag,this.minMaxOffset=t.Offset16,Z(this,"minMax",()=>(t.currentPosition=e+this.minMaxOffset,new ou(t)))}},xm=class{constructor(e){this.parser=e,this.start=e.currentPosition,this.defaultBaselineIndex=e.uint16,this.baseCoordCount=e.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(t=>e.Offset16)}getTable(e){return this.parser.currentPosition=this.start+this.baseCoords[e],new Cm(this.parser)}},ou=class{constructor(e){this.minCoord=e.Offset16,this.maxCoord=e.Offset16,this.featMinMaxCount=e.uint16;let t=e.currentPosition;Z(this,"featMinMaxRecords",()=>(e.currentPosition=t,[...new Array(this.featMinMaxCount)].map(r=>new Sm(e))))}},Sm=class{constructor(e){this.featureTableTag=e.tag,this.minCoord=e.Offset16,this.maxCoord=e.Offset16}},Cm=class{constructor(e){this.baseCoordFormat=e.uint16,this.coordinate=e.int16,this.baseCoordFormat===2&&(this.referenceGlyph=e.uint16,this.baseCoordPoint=e.uint16),this.baseCoordFormat===3&&(this.deviceTable=e.Offset16)}},Fm=Object.freeze({__proto__:null,BASE:hm}),Kl=class{constructor(e){this.classFormat=e.uint16,this.classFormat===1&&(this.startGlyphID=e.uint16,this.glyphCount=e.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.classFormat===2&&(this.classRangeCount=e.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(t=>new _m(e)))}},_m=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.class=e.uint16}},bo=class extends Be{constructor(e){super(e),this.coverageFormat=e.uint16,this.coverageFormat===1&&(this.glyphCount=e.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.coverageFormat===2&&(this.rangeCount=e.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(t=>new km(e)))}},km=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.startCoverageIndex=e.uint16}},Om=class{constructor(e,t){this.table=e,this.parser=t,this.start=t.currentPosition,this.format=t.uint16,this.variationRegionListOffset=t.Offset32,this.itemVariationDataCount=t.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>t.Offset32)}},Tm=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new Kl(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new Pm(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new Rm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new Kl(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Lm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Om(r)}))}},Pm=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,this.glyphCount=e.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16)}getPoint(e){return this.parser.currentPosition=this.start+this.attachPointOffsets[e],new Am(this.parser)}},Am=class{constructor(e){this.pointCount=e.uint16,this.pointIndices=[...new Array(this.pointCount)].map(t=>e.uint16)}},Rm=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,Z(this,"coverage",()=>(e.currentPosition=this.start+this.coverageOffset,new bo(e))),this.ligGlyphCount=e.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(t=>e.Offset16)}getLigGlyph(e){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[e],new Em(this.parser)}},Em=class extends Be{constructor(e){super(e),this.caretCount=e.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(t=>e.Offset16)}getCaretValue(e){return this.parser.currentPosition=this.start+this.caretValueOffsets[e],new Im(this.parser)}},Im=class{constructor(e){this.caretValueFormat=e.uint16,this.caretValueFormat===1&&(this.coordinate=e.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=e.uint16),this.caretValueFormat===3&&(this.coordinate=e.int16,this.deviceOffset=e.Offset16)}},Lm=class extends Be{constructor(e){super(e),this.markGlyphSetTableFormat=e.uint16,this.markGlyphSetCount=e.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(t=>e.Offset32)}getMarkGlyphSet(e){return this.parser.currentPosition=this.start+this.coverageOffsets[e],new bo(this.parser)}},Bm=Object.freeze({__proto__:null,GDEF:Tm}),Jl=class extends Be{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(e){super(e),this.scriptCount=e.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(t=>new Vm(e))}},Vm=class{constructor(e){this.scriptTag=e.tag,this.scriptOffset=e.Offset16}},Nm=class extends Be{constructor(e){super(e),this.defaultLangSys=e.Offset16,this.langSysCount=e.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(t=>new Dm(e))}},Dm=class{constructor(e){this.langSysTag=e.tag,this.langSysOffset=e.Offset16}},Ql=class{constructor(e){this.lookupOrder=e.Offset16,this.requiredFeatureIndex=e.uint16,this.featureIndexCount=e.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(t=>e.uint16)}},$l=class extends Be{static EMPTY={featureCount:0,featureRecords:[]};constructor(e){super(e),this.featureCount=e.uint16,this.featureRecords=[...new Array(this.featureCount)].map(t=>new zm(e))}},zm=class{constructor(e){this.featureTag=e.tag,this.featureOffset=e.Offset16}},Mm=class extends Be{constructor(e){super(e),this.featureParams=e.Offset16,this.lookupIndexCount=e.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(t=>e.uint16)}getFeatureParams(){if(this.featureParams>0){let e=this.parser;e.currentPosition=this.start+this.featureParams;let t=this.featureTag;if(t==="size")return new jm(e);if(t.startsWith("cc"))return new Gm(e);if(t.startsWith("ss"))return new Um(e)}}},Gm=class{constructor(e){this.format=e.uint16,this.featUiLabelNameId=e.uint16,this.featUiTooltipTextNameId=e.uint16,this.sampleTextNameId=e.uint16,this.numNamedParameters=e.uint16,this.firstParamUiLabelNameId=e.uint16,this.charCount=e.uint16,this.character=[...new Array(this.charCount)].map(t=>e.uint24)}},jm=class{constructor(e){this.designSize=e.uint16,this.subfamilyIdentifier=e.uint16,this.subfamilyNameID=e.uint16,this.smallEnd=e.uint16,this.largeEnd=e.uint16}},Um=class{constructor(e){this.version=e.uint16,this.UINameID=e.uint16}};function su(e){e.parser.currentPosition-=2,delete e.coverageOffset,delete e.getCoverageTable}var _r=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.coverageOffset=e.Offset16}getCoverageTable(){let e=this.parser;return e.currentPosition=this.start+this.coverageOffset,new bo(e)}},kn=class{constructor(e){this.glyphSequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},Wm=class extends _r{constructor(e){super(e),this.deltaGlyphID=e.int16}},Hm=class extends _r{constructor(e){super(e),this.sequenceCount=e.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(t=>e.Offset16)}getSequence(e){let t=this.parser;return t.currentPosition=this.start+this.sequenceOffsets[e],new qm(t)}},qm=class{constructor(e){this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Ym=class extends _r{constructor(e){super(e),this.alternateSetCount=e.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(t=>e.Offset16)}getAlternateSet(e){let t=this.parser;return t.currentPosition=this.start+this.alternateSetOffsets[e],new Zm(t)}},Zm=class{constructor(e){this.glyphCount=e.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Xm=class extends _r{constructor(e){super(e),this.ligatureSetCount=e.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(t=>e.Offset16)}getLigatureSet(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureSetOffsets[e],new Km(t)}},Km=class extends Be{constructor(e){super(e),this.ligatureCount=e.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(t=>e.Offset16)}getLigature(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureOffsets[e],new Jm(t)}},Jm=class{constructor(e){this.ligatureGlyph=e.uint16,this.componentCount=e.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(t=>e.uint16)}},Qm=class extends _r{constructor(e){super(e),this.substFormat===1&&(this.subRuleSetCount=e.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.classDefOffset=e.Offset16,this.subClassSetCount=e.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(su(this),this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new kn(e)))}getSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.subRuleSetOffsets[e],new $m(t)}getSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.subClassSetOffsets[e],new ep(t)}getCoverageTable(e){if(this.substFormat!==3&&!e)return super.getCoverageTable();if(!e)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let t=this.parser;return t.currentPosition=this.start+this.coverageOffsets[e],new bo(t)}},$m=class extends Be{constructor(e){super(e),this.subRuleCount=e.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.subRuleOffsets[e],new nu(t)}},nu=class{constructor(e){this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(t=>e.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new kn(e))}},ep=class extends Be{constructor(e){super(e),this.subClassRuleCount=e.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.subClassRuleOffsets[e],new tp(t)}},tp=class extends nu{constructor(e){super(e)}},rp=class extends _r{constructor(e){super(e),this.substFormat===1&&(this.chainSubRuleSetCount=e.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=e.Offset16,this.inputClassDefOffset=e.Offset16,this.lookaheadClassDefOffset=e.Offset16,this.chainSubClassSetCount=e.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(su(this),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.inputGlyphCount=e.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.seqLookupCount=e.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(t=>new au(e)))}getChainSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleSetOffsets[e],new op(t)}getChainSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubClassSetOffsets[e],new np(t)}getCoverageFromOffset(e){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let t=this.parser;return t.currentPosition=this.start+e,new bo(t)}},op=class extends Be{constructor(e){super(e),this.chainSubRuleCount=e.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new sp(t)}},sp=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(t=>new kn(e))}},np=class extends Be{constructor(e){super(e),this.chainSubClassRuleCount=e.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new ap(t)}},ap=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new au(e))}},au=class extends Be{constructor(e){super(e),this.sequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},ip=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.extensionLookupType=e.uint16,this.extensionOffset=e.Offset32}},lp=class extends _r{constructor(e){super(e),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},up={buildSubtable:function(e,t){let r=new[void 0,Wm,Hm,Ym,Xm,Qm,rp,ip,lp][e](t);return r.type=e,r}},Yt=class extends Be{constructor(e){super(e)}},fp=class extends Yt{constructor(e){super(e),console.log("lookup type 1")}},cp=class extends Yt{constructor(e){super(e),console.log("lookup type 2")}},dp=class extends Yt{constructor(e){super(e),console.log("lookup type 3")}},mp=class extends Yt{constructor(e){super(e),console.log("lookup type 4")}},pp=class extends Yt{constructor(e){super(e),console.log("lookup type 5")}},hp=class extends Yt{constructor(e){super(e),console.log("lookup type 6")}},gp=class extends Yt{constructor(e){super(e),console.log("lookup type 7")}},yp=class extends Yt{constructor(e){super(e),console.log("lookup type 8")}},vp=class extends Yt{constructor(e){super(e),console.log("lookup type 9")}},bp={buildSubtable:function(e,t){let r=new[void 0,fp,cp,dp,mp,pp,hp,gp,yp,vp][e](t);return r.type=e,r}},eu=class extends Be{static EMPTY={lookupCount:0,lookups:[]};constructor(e){super(e),this.lookupCount=e.uint16,this.lookups=[...new Array(this.lookupCount)].map(t=>e.Offset16)}},wp=class extends Be{constructor(e,t){super(e),this.ctType=t,this.lookupType=e.uint16,this.lookupFlag=e.uint16,this.subTableCount=e.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>e.Offset16),this.markFilteringSet=e.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(e){let t=this.ctType==="GSUB"?up:bp;return this.parser.currentPosition=this.start+this.subtableOffsets[e],t.buildSubtable(this.lookupType,this.parser)}},iu=class extends me{constructor(e,t,r){let{p:o,tableStart:s}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let a=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>a?Jl.EMPTY:(o.currentPosition=s+this.scriptListOffset,new Jl(o))),Z(this,"featureList",()=>a?$l.EMPTY:(o.currentPosition=s+this.featureListOffset,new $l(o))),Z(this,"lookupList",()=>a?eu.EMPTY:(o.currentPosition=s+this.lookupListOffset,new eu(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>a?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(e=>e.scriptTag)}getScriptTable(e){let t=this.scriptList.scriptRecords.find(o=>o.scriptTag===e);this.parser.currentPosition=this.scriptList.start+t.scriptOffset;let r=new Nm(this.parser);return r.scriptTag=e,r}ensureScriptTable(e){return typeof e=="string"?this.getScriptTable(e):e}getSupportedLangSys(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys!==0,r=e.langSysRecords.map(o=>o.langSysTag);return t&&r.unshift("dflt"),r}getDefaultLangSysTable(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys;if(t!==0){this.parser.currentPosition=e.start+t;let r=new Ql(this.parser);return r.langSysTag="",r.defaultForScript=e.scriptTag,r}}getLangSysTable(e,t="dflt"){if(t==="dflt")return this.getDefaultLangSysTable(e);e=this.ensureScriptTable(e);let r=e.langSysRecords.find(s=>s.langSysTag===t);this.parser.currentPosition=e.start+r.langSysOffset;let o=new Ql(this.parser);return o.langSysTag=t,o}getFeatures(e){return e.featureIndices.map(t=>this.getFeature(t))}getFeature(e){let t;if(parseInt(e)==e?t=this.featureList.featureRecords[e]:t=this.featureList.featureRecords.find(o=>o.featureTag===e),!t)return;this.parser.currentPosition=this.featureList.start+t.featureOffset;let r=new Mm(this.parser);return r.featureTag=t.featureTag,r}getLookups(e){return e.lookupListIndices.map(t=>this.getLookup(t))}getLookup(e,t){let r=this.lookupList.lookups[e];return this.parser.currentPosition=this.lookupList.start+r,new wp(this.parser,t)}},xp=class extends iu{constructor(e,t){super(e,t,"GSUB")}getLookup(e){return super.getLookup(e,"GSUB")}},Sp=Object.freeze({__proto__:null,GSUB:xp}),Cp=class extends iu{constructor(e,t){super(e,t,"GPOS")}getLookup(e){return super.getLookup(e,"GPOS")}},Fp=Object.freeze({__proto__:null,GPOS:Cp}),_p=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new kp(r)}},kp=class extends Be{constructor(e){super(e),this.numEntries=e.uint16,this.documentRecords=[...new Array(this.numEntries)].map(t=>new Op(e))}getDocument(e){let t=this.documentRecords[e];if(!t)return"";let r=this.start+t.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(t.svgDocLength)}getDocumentForGlyph(e){let t=this.documentRecords.findIndex(r=>r.startGlyphID<=e&&e<=r.endGlyphID);return t===-1?"":this.getDocument(t)}},Op=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.svgDocOffset=e.Offset32,this.svgDocLength=e.uint32}},Tp=Object.freeze({__proto__:null,SVG:_p}),Pp=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(a=>new Ap(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let a=[];for(let n=0;n<this.instanceCount;n++)r.currentPosition=s+n*this.instanceSize,a.push(new Rp(r,this.axisCount,this.instanceSize));return a})}getSupportedAxes(){return this.axes.map(e=>e.tag)}getAxis(e){return this.axes.find(t=>t.tag===e)}},Ap=class{constructor(e){this.tag=e.tag,this.minValue=e.fixed,this.defaultValue=e.fixed,this.maxValue=e.fixed,this.flags=e.flags(16),this.axisNameID=e.uint16}},Rp=class{constructor(e,t,r){let o=e.currentPosition;this.subfamilyNameID=e.uint16,e.uint16,this.coordinates=[...new Array(t)].map(s=>e.fixed),e.currentPosition-o<r&&(this.postScriptNameID=e.uint16)}},Ep=Object.freeze({__proto__:null,fvar:Pp}),Ip=class extends me{constructor(e,t){let{p:r}=super(e,t),o=e.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},Lp=Object.freeze({__proto__:null,cvt:Ip}),Bp=class extends me{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},Vp=Object.freeze({__proto__:null,fpgm:Bp}),Np=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new Dp(r)))}},Dp=class{constructor(e){this.rangeMaxPPEM=e.uint16,this.rangeGaspBehavior=e.uint16}},zp=Object.freeze({__proto__:null,gasp:Np}),Mp=class extends me{constructor(e,t){super(e,t)}getGlyphData(e,t){return this.parser.currentPosition=this.tableStart+e,this.parser.readBytes(t)}},Gp=Object.freeze({__proto__:null,glyf:Mp}),jp=class extends me{constructor(e,t,r){let{p:o}=super(e,t),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(a=>o.Offset32))}getGlyphDataOffsetAndLength(e){let t=this.offsets[e]*this.x2?2:1,r=this.offsets[e+1]*this.x2?2:1;return{offset:t,length:r-t}}},Up=Object.freeze({__proto__:null,loca:jp}),Wp=class extends me{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},Hp=Object.freeze({__proto__:null,prep:Wp}),qp=class extends me{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},Yp=Object.freeze({__proto__:null,CFF:qp}),Zp=class extends me{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},Xp=Object.freeze({__proto__:null,CFF2:Zp}),Kp=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new Jp(r)))}},Jp=class{constructor(e){this.glyphIndex=e.uint16,this.vertOriginY=e.int16}},Qp=Object.freeze({__proto__:null,VORG:Kp}),$p=class{constructor(e){this.indexSubTableArrayOffset=e.Offset32,this.indexTablesSize=e.uint32,this.numberofIndexSubTables=e.uint32,this.colorRef=e.uint32,this.hori=new cs(e),this.vert=new cs(e),this.startGlyphIndex=e.uint16,this.endGlyphIndex=e.uint16,this.ppemX=e.uint8,this.ppemY=e.uint8,this.bitDepth=e.uint8,this.flags=e.int8}},eh=class{constructor(e){this.hori=new cs(e),this.vert=new cs(e),this.ppemX=e.uint8,this.ppemY=e.uint8,this.substitutePpemX=e.uint8,this.substitutePpemY=e.uint8}},cs=class{constructor(e){this.ascender=e.int8,this.descender=e.int8,this.widthMax=e.uint8,this.caretSlopeNumerator=e.int8,this.caretSlopeDenominator=e.int8,this.caretOffset=e.int8,this.minOriginSB=e.int8,this.minAdvanceSB=e.int8,this.maxBeforeBL=e.int8,this.minAfterBL=e.int8,this.pad1=e.int8,this.pad2=e.int8}},lu=class extends me{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new $p(o)))}},th=Object.freeze({__proto__:null,EBLC:lu}),uu=class extends me{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},rh=Object.freeze({__proto__:null,EBDT:uu}),oh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new eh(r)))}},sh=Object.freeze({__proto__:null,EBSC:oh}),nh=class extends lu{constructor(e,t){super(e,t,"CBLC")}},ah=Object.freeze({__proto__:null,CBLC:nh}),ih=class extends uu{constructor(e,t){super(e,t,"CBDT")}},lh=Object.freeze({__proto__:null,CBDT:ih}),uh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},fh=Object.freeze({__proto__:null,sbix:uh}),ch=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(e){let t=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=t;let r=new _n(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let a=new _n(this.parser),n=a.gID;if(o===e)return r;if(n===e)return a;for(;t!==s;){let l=t+(s-t)/12;this.parser.currentPosition=l;let h=new _n(this.parser),f=h.gID;if(f===e)return h;f>e?s=l:f<e&&(t=l)}return!1}getLayers(e){let t=this.getBaseGlyphRecord(e);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*t.firstLayerIndex,[...new Array(t.numLayers)].map(r=>new dh(p))}},_n=class{constructor(e){this.gID=e.uint16,this.firstLayerIndex=e.uint16,this.numLayers=e.uint16}},dh=class{constructor(e){this.gID=e.uint16,this.paletteIndex=e.uint16}},mh=Object.freeze({__proto__:null,COLR:ch}),ph=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new hh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new gh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new yh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new vh(r,o))))}},hh=class{constructor(e){this.blue=e.uint8,this.green=e.uint8,this.red=e.uint8,this.alpha=e.uint8}},gh=class{constructor(e,t){this.paletteTypes=[...new Array(t)].map(r=>e.uint32)}},yh=class{constructor(e,t){this.paletteLabels=[...new Array(t)].map(r=>e.uint16)}},vh=class{constructor(e,t){this.paletteEntryLabels=[...new Array(t)].map(r=>e.uint16)}},bh=Object.freeze({__proto__:null,CPAL:ph}),wh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new xh(r))}getData(e){let t=this.signatureRecords[e];return this.parser.currentPosition=this.tableStart+t.offset,new Sh(this.parser)}},xh=class{constructor(e){this.format=e.uint32,this.length=e.uint32,this.offset=e.Offset32}},Sh=class{constructor(e){e.uint16,e.uint16,this.signatureLength=e.uint32,this.signature=e.readBytes(this.signatureLength)}},Ch=Object.freeze({__proto__:null,DSIG:wh}),Fh=class extends me{constructor(e,t,r){let{p:o}=super(e,t),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(a=>new _h(o,s))}},_h=class{constructor(e,t){this.pixelSize=e.uint8,this.maxWidth=e.uint8,this.widths=e.readBytes(t)}},kh=Object.freeze({__proto__:null,hdmx:Fh}),Oh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let a=0;a<this.nTables;a++){r.currentPosition=o;let n=new Th(r);s.push(n),o+=n}return s})}},Th=class{constructor(e){this.version=e.uint16,this.length=e.uint16,this.coverage=e.flags(8),this.format=e.uint8,this.format===0&&(this.nPairs=e.uint16,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(t=>new Ph(e)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},Ph=class{constructor(e){this.left=e.uint16,this.right=e.uint16,this.value=e.fword}},Ah=Object.freeze({__proto__:null,kern:Oh}),Rh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},Eh=Object.freeze({__proto__:null,LTSH:Rh}),Ih=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},Lh=Object.freeze({__proto__:null,MERG:Ih}),Bh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new Vh(this.tableStart,r))}},Vh=class{constructor(e,t){this.tableStart=e,this.parser=t,this.tag=t.tag,this.dataOffset=t.Offset32,this.dataLength=t.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},Nh=Object.freeze({__proto__:null,meta:Bh}),Dh=class extends me{constructor(e,t){super(e,t),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},zh=Object.freeze({__proto__:null,PCLT:Dh}),Mh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new Gh(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new jh(r))}},Gh=class{constructor(e){this.bCharSet=e.uint8,this.xRatio=e.uint8,this.yStartRatio=e.uint8,this.yEndRatio=e.uint8}},jh=class{constructor(e){this.recs=e.uint16,this.startsz=e.uint8,this.endsz=e.uint8,this.records=[...new Array(this.recs)].map(t=>new Uh(e))}},Uh=class{constructor(e){this.yPelHeight=e.uint16,this.yMax=e.int16,this.yMin=e.int16}},Wh=Object.freeze({__proto__:null,VDMX:Mh}),Hh=class extends me{constructor(e,t){let{p:r}=super(e,t);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},qh=Object.freeze({__proto__:null,vhea:Hh}),Yh=class extends me{constructor(e,t,r){super(e,t);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,a=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=a,[...new Array(o)].map(n=>new Zh(p.uint16,p.int16)))),o<s){let n=a+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=n,[...new Array(s-o)].map(l=>p.int16)))}}},Zh=class{constructor(e,t){this.advanceHeight=e,this.topSideBearing=t}},Xh=Object.freeze({__proto__:null,vmtx:Yh});var fu=u(X(),1);var{kebabCase:Kh}=ye(fu.privateApis);function cu(e){let t=e.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:Kh(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(t)}var gt=u(z(),1);function Jh(){let{installFonts:e}=(0,wo.useContext)(lt),[t,r]=(0,wo.useState)(!1),[o,s]=(0,wo.useState)(null),a=g=>{l(g)},n=g=>{l(g.target.files)},l=async g=>{if(!g)return;s(null),r(!0);let y=new Set,T=[...g],A=!1,_=T.map(async b=>{if(!await f(b))return A=!0,null;if(y.has(b.name))return null;let q=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return wn.includes(q)?(y.add(b.name),b):null}),S=(await Promise.all(_)).filter(b=>b!==null);if(S.length>0)h(S);else{let b=A?(0,Yr.__)("Sorry, you are not allowed to upload this file type."):(0,Yr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},h=async g=>{let y=await Promise.all(g.map(async T=>{let A=await d(T);return await tr(A,A.file,"all"),A}));m(y)};async function f(g){let y=new ds("Uploaded Font");try{let T=await c(g);return await y.fromDataBuffer(T,"font"),!0}catch{return!1}}async function c(g){return new Promise((y,T)=>{let A=new window.FileReader;A.readAsArrayBuffer(g),A.onload=()=>y(A.result),A.onerror=T})}let d=async g=>{let y=await c(g),T=new ds("Uploaded Font");T.fromDataBuffer(y,g.name);let _=(await new Promise($=>T.onload=$)).detail.font,{name:S}=_.opentype.tables,b=S.get(16)||S.get(1),O=S.get(2).toLowerCase().includes("italic"),q=_.opentype.tables["OS/2"].usWeightClass||"normal",N=!!_.opentype.tables.fvar&&_.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),W=N?`${N.minValue} ${N.maxValue}`:null;return{file:g,fontFamily:b,fontStyle:O?"italic":"normal",fontWeight:W||q}},m=async g=>{let y=cu(g);try{await e(y),s({type:"success",message:(0,Yr.__)("Fonts were installed successfully.")})}catch(T){let A=T;s({type:"error",message:A.message,errors:A?.installationErrors})}r(!1)};return(0,gt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,gt.jsx)(tt.DropZone,{onFilesDrop:a}),(0,gt.jsxs)(tt.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,gt.jsxs)(tt.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,gt.jsx)("ul",{children:o.errors.map((g,y)=>(0,gt.jsx)("li",{children:g},y))})]}),t&&(0,gt.jsx)(tt.FlexItem,{children:(0,gt.jsx)("div",{className:"font-library__upload-area",children:(0,gt.jsx)(tt.ProgressBar,{})})}),!t&&(0,gt.jsx)(tt.FormFileUpload,{accept:wn.map(g=>`.${g}`).join(","),multiple:!0,onChange:n,render:({openFileDialog:g})=>(0,gt.jsx)(tt.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,Yr.__)("Upload font")})}),(0,gt.jsx)(tt.__experimentalText,{className:"font-library__upload-area__text",children:(0,Yr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ms=Jh;var mu=u(z(),1),{Tabs:Y2}=ye(On.privateApis),Z2={id:"installed-fonts",title:(0,ps._x)("Library","Font library")},X2={id:"upload-fonts",title:(0,ps._x)("Upload","noun")};var pu=u(ie(),1),Tn=u(X(),1),$h=u(ve(),1);var hu=u(z(),1);var Pn=u(z(),1);var gu=u(ie(),1),hs=u(X(),1);var yu=u(z(),1);var Rn=u(z(),1);var At=u(ie(),1),En=u(X(),1),ig=u(ve(),1);var vu=u(it(),1);var ng=u(z(),1),{useSettingsForBlockElement:_6,TypographyPanel:k6}=ye(vu.privateApis);var ag=u(z(),1);var In=u(z(),1),B6={text:{description:(0,At.__)("Manage the fonts used on the site."),title:(0,At.__)("Text")},link:{description:(0,At.__)("Manage the fonts and typography used on the links."),title:(0,At.__)("Links")},heading:{description:(0,At.__)("Manage the fonts and typography used on headings."),title:(0,At.__)("Headings")},caption:{description:(0,At.__)("Manage the fonts and typography used on captions."),title:(0,At.__)("Captions")},button:{description:(0,At.__)("Manage the fonts and typography used on buttons."),title:(0,At.__)("Buttons")}};var cg=u(ie(),1),dg=u(X(),1),wu=u(it(),1);var Zr=u(X(),1),bu=u(ie(),1);var fg=u(ve(),1);var lg=u(X(),1),ug=u(z(),1);var Ln=u(z(),1);var Bn=u(z(),1),{useSettingsForBlockElement:J6,ColorPanel:Q6}=ye(wu.privateApis);var bg=u(ie(),1),Ou=u(X(),1);var hg=u(mr(),1),Vn=u(X(),1),gg=u(ie(),1);var ys=u(X(),1);var gs=u(X(),1);var xu=u(z(),1);function Su(){let{paletteColors:e}=Dr();return e.slice(0,4).map(({slug:t,color:r},o)=>(0,xu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${t}-${o}`))}var So=u(z(),1),mg={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},pg=({label:e,isFocused:t,withHoverView:r})=>(0,So.jsx)(Gr,{label:e,isFocused:t,withHoverView:r,children:({key:o})=>(0,So.jsx)(gs.__unstableMotion.div,{variants:mg,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(gs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(Su,{})})},o)}),Cu=pg;var kr=u(z(),1),Fu=["color"];function vs({title:e,gap:t=2}){let r=Uo(Fu);return r?.length<=1?null:(0,kr.jsxs)(ys.__experimentalVStack,{spacing:3,children:[e&&(0,kr.jsx)(Ct,{level:3,children:e}),(0,kr.jsx)(ys.__experimentalGrid,{gap:t,children:r.map((o,s)=>(0,kr.jsx)(Ur,{variation:o,isPill:!0,properties:Fu,showTooltip:!0,children:()=>(0,kr.jsx)(Cu,{})},s))})]})}var _u=u(z(),1);var yg=u(mr(),1),bs=u(X(),1),vg=u(ie(),1);var ku=u(z(),1);var Nn=u(z(),1),{Tabs:CC}=ye(Ou.privateApis);var xg=u(ie(),1),Pu=u(it(),1),Sg=u(X(),1);var Tu=u(it(),1);var wg=u(z(),1);var{BackgroundPanel:OC}=ye(Tu.privateApis);var Dn=u(z(),1),{useHasBackgroundPanel:LC}=ye(Pu.privateApis);var Or=u(X(),1),zn=u(ie(),1);var Og=u(ve(),1);var Cg=u(X(),1),Fg=u(ie(),1),_g=u(z(),1);var Mn=u(z(),1),{Menu:qC}=ye(Or.privateApis);var Ue=u(X(),1),Co=u(ie(),1);var ws=u(ve(),1);var Gn=u(z(),1),{Menu:i3}=ye(Ue.privateApis),l3=[{label:(0,Co.__)("Rename"),action:"rename"},{label:(0,Co.__)("Delete"),action:"delete"}],u3=[{label:(0,Co.__)("Reset"),action:"reset"}];var Tg=u(z(),1);var Rg=u(ie(),1),Ru=u(it(),1);var Au=u(it(),1),Pg=u(ve(),1);var Ag=u(z(),1),{useSettingsForBlockElement:v3,DimensionsPanel:b3}=ye(Au.privateApis);var jn=u(z(),1),{useHasDimensionsPanel:k3,useSettingsForBlockElement:O3}=ye(Ru.privateApis);var Nu=u(X(),1),Bg=u(ie(),1);var Ig=u(ie(),1),Lg=u(X(),1);var Eu=u(xt(),1),Iu=u(mt(),1),Ss=u(ve(),1),Lu=u(X(),1),Bu=u(ie(),1);var xs=u(z(),1);function Eg({gap:e=2}){let{user:t}=(0,Ss.useContext)(Je),r=t?.styles,s=(0,Iu.useSelect)(n=>{let l=n(Eu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(n=>!co(n,["color"])&&!co(n,["typography","spacing"])),a=(0,Ss.useMemo)(()=>[...[{title:(0,Bu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let h=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(m=>{if(r.blocks?.[m]?.css){let g=h[m]||{},y={css:`${h[m]?.css||""} ${r.blocks?.[m]?.css?.trim()||""}`};h[m]={...g,...y}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(h).length>0?{blocks:h}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,xs.jsx)(Lu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:e,children:a.map((n,l)=>(0,xs.jsx)(Ur,{variation:n,children:h=>(0,xs.jsx)(cn,{label:n?.title,withHoverView:!0,isFocused:h,variation:n})},l))})}var Un=Eg;var Vu=u(z(),1);var Wn=u(z(),1);var Vg=u(ie(),1),Ng=u(X(),1),Du=u(it(),1);var Hn=u(z(),1),{AdvancedPanel:H3}=ye(Du.privateApis);var Yu=u(ie(),1),Yn=u(X(),1),Zn=u(ve(),1);var Dg=u(mt(),1),zg=u(xt(),1),zu=u(ve(),1);var ju=u(ie(),1),Uu=u(X(),1),Cs=u(Gu(),1),Mg=u(xt(),1),Gg=u(mt(),1);var Wu=u(vn(),1),Hu=u(z(),1),K3=3600*1e3*24;var qn=u(X(),1),Fo=u(ie(),1);var qu=u(z(),1);var Xn=u(z(),1);var Kn=u(ie(),1),Zt=u(X(),1);var qg=u(ve(),1);var Ug=u(X(),1),Wg=u(ie(),1),Hg=u(z(),1);var Jn=u(z(),1),{Menu:y4}=ye(Zt.privateApis);var Ju=u(ie(),1),Mt=u(X(),1);var Qu=u(ve(),1);var Yg=u(it(),1),Zg=u(ie(),1);var Xg=u(z(),1);var Kg=u(X(),1),Zu=u(ie(),1),Jg=u(z(),1);var _o=u(X(),1),Qg=u(ie(),1),$g=u(ve(),1),Xu=u(z(),1);var Xt=u(X(),1),Ku=u(z(),1);var Qn=u(z(),1),{Menu:B4}=ye(Mt.privateApis);var ea=u(z(),1);var ta=u(z(),1);function Xr(e){return function({value:r,baseValue:o,onChange:s,...a}){return(0,ta.jsx)(fo,{value:r,baseValue:o,onChange:s,children:(0,ta.jsx)(e,{...a})})}}var oy=Xr(Un);var sy=Xr(vs);var ny=Xr(Ko);var Kr=u(z(),1);function ra({value:e,baseValue:t,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Kr.jsx)(ms,{});break;case"installed-fonts":s=(0,Kr.jsx)(ss,{});break;default:s=(0,Kr.jsx)(as,{slug:o})}return(0,Kr.jsx)(fo,{value:e,baseValue:t,onChange:r,children:(0,Kr.jsx)($o,{children:s})})}var tf=u(js()),{unlock:oa}=(0,tf.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='befb272134']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","befb272134"),e.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(e)}var{Tabs:Fs}=oa(rf.privateApis),{useGlobalStyles:ay}=oa(of.privateApis);function iy(){let{records:e=[]}=(0,_s.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[t,r]=(0,nf.useState)("installed-fonts"),{base:o,user:s,setUser:a,isReady:n}=ay(),l=(0,sf.useSelect)(f=>f(_s.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!n)return null;let h=[{id:"installed-fonts",title:(0,Jr._x)("Library","Font library")}];return l&&(h.push({id:"upload-fonts",title:(0,Jr._x)("Upload","noun")}),h.push(...(e||[]).map(({slug:f,name:c})=>({id:f,title:e&&e.length===1&&f==="google-fonts"?(0,Jr.__)("Install Fonts"):c})))),React.createElement(Ws,{title:(0,Jr.__)("Fonts"),className:"font-library-page"},React.createElement(Fs,{selectedTabId:t,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(Fs.TabList,null,h.map(({id:f,title:c})=>React.createElement(Fs.Tab,{key:f,tabId:f},c)))),h.map(({id:f})=>React.createElement(Fs.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(ra,{value:s,baseValue:o,onChange:a,activeTab:f})))))}function ly(){return React.createElement(iy,null)}var uy=ly;export{uy as stage}; +}`,globalThis.document.head.appendChild(s),s}var Jd=[0,1,0,0],Qd=[79,84,84,79],$d=[119,79,70,70],ep=[119,79,70,50];function fs(e,t){if(e.length===t.length){for(let r=0;r<e.length;r++)if(e[r]!==t[r])return;return!0}}function tp(e){let t=[e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3)];if(fs(t,Jd)||fs(t,Qd))return"SFNT";if(fs(t,$d))return"WOFF";if(fs(t,ep))return"WOFF2"}function rp(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}var ds=class extends Ld{constructor(e,t={}){super(),this.name=e,this.options=t,this.metrics=!1}get src(){return this.__src}set src(e){this.__src=e,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await Kd(this.name,e,this.options),this.loadFont(e)))()}async loadFont(e,t){fetch(e).then(r=>rp(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,t||e)).catch(r=>{let o=new us("error",r,`Failed to load font at ${t||e}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(e,t){this.fontData=new DataView(e);let r=tp(this.fontData);if(!r)throw new Error(`${t} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new us("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(e){return Zd().then(t=>(e==="SFNT"&&(this.opentype=new zd(this,this.fontData,t)),e==="WOFF"&&(this.opentype=new Md(this,this.fontData,t)),e==="WOFF2"&&(this.opentype=new Ud(this,this.fontData,t)),this.opentype))}getGlyphId(e){return this.opentype.tables.cmap.getGlyphId(e)}reverse(e){return this.opentype.tables.cmap.reverse(e)}supports(e){return this.getGlyphId(e)!==0}supportsVariation(e){return this.opentype.tables.cmap.supportsVariation(e)!==!1}measureText(e,t=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=e,r.style.fontFamily=this.name,r.style.fontSize=`${t}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=t,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let e=new us("unload",{font:this});this.dispatch(e),this.onunload&&this.onunload(e)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let e=new us("load",{font:this});this.dispatch(e),this.onload&&this.onload(e)}}};globalThis.Font=ds;var qt=class extends Be{constructor(e,t,r){super(e),this.plaformID=t,this.encodingID=r}},op=class extends qt{constructor(e,t,r){super(e,t,r),this.format=0,this.length=e.uint16,this.language=e.uint16,this.glyphIdArray=[...new Array(256)].map(o=>e.uint8)}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=e&&e<=255}reverse(e){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},sp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=2,this.length=e.uint16,this.language=e.uint16,this.subHeaderKeys=[...new Array(256)].map(a=>e.uint16);let o=Math.max(...this.subHeaderKeys),s=e.currentPosition;Z(this,"subHeaders",()=>(e.currentPosition=s,[...new Array(o)].map(a=>new np(e))));let n=s+o*8;Z(this,"glyphIndexArray",()=>(e.currentPosition=n,[...new Array(o)].map(a=>e.uint16)))}supports(e){e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let t=e&&255,r=e&&65280,o=this.subHeaders[r],s=this.subHeaders[o],n=s.firstCode,a=n+s.entryCount;return n<=t&&t<=a}reverse(e){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(e=!1){return e?this.subHeaders.map(t=>({firstCode:t.firstCode,lastCode:t.lastCode})):this.subHeaders.map(t=>({start:t.firstCode,end:t.lastCode}))}},np=class{constructor(e){this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=e.int16,this.idRangeOffset=e.uint16}},ap=class extends qt{constructor(e,t,r){super(e,t,r),this.format=4,this.length=e.uint16,this.language=e.uint16,this.segCountX2=e.uint16,this.segCount=this.segCountX2/2,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16;let o=e.currentPosition;Z(this,"endCode",()=>e.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>e.readBytes(this.segCount,s,16));let n=s+this.segCountX2;Z(this,"idDelta",()=>e.readBytes(this.segCount,n,16,!0));let a=n+this.segCountX2;Z(this,"idRangeOffset",()=>e.readBytes(this.segCount,a,16));let l=a+this.segCountX2,h=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>e.readBytes(h,l,16)),Z(this,"segments",()=>this.buildSegments(a,l,e))}buildSegments(e,t,r){let o=(s,n)=>{let a=this.startCode[n],l=this.endCode[n],h=this.idDelta[n],f=this.idRangeOffset[n],c=e+2*n,d=[];if(f===0)for(let m=a+h,g=l+h;m<=g;m++)d.push(m);else for(let m=0,g=l-a;m<=g;m++)r.currentPosition=c+f+m*2,d.push(r.uint16);return{startCode:a,endCode:l,idDelta:h,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(e){let t=this.segments.find(o=>o.glyphIDs.includes(e));if(!t)return{};let r=t.startCode+t.glyphIDs.indexOf(e);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(e){if(e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535)return 0;let t=this.segments.find(r=>r.startCode<=e&&e<=r.endCode);return t?t.glyphIDs[e-t.startCode]:0}supports(e){return this.getGlyphId(e)!==0}getSupportedCharCodes(e=!1){return e?this.segments:this.segments.map(t=>({start:t.startCode,end:t.endCode}))}},ip=class extends qt{constructor(e,t,r){super(e,t,r),this.format=6,this.length=e.uint16,this.language=e.uint16,this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>e.uint16))}supports(e){if(e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),e<this.firstCode)return{};if(e>this.firstCode+this.entryCount)return{};let t=e-this.firstCode;return{code:t,unicode:String.fromCodePoint(t)}}reverse(e){let t=this.glyphIdArray.indexOf(e);if(t>-1)return this.firstCode+t}getSupportedCharCodes(e=!1){return e?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},lp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=8,e.uint16,this.length=e.uint32,this.language=e.uint32,this.is32=[...new Array(8192)].map(s=>e.uint8),this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new up(e)))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(t=>t.startcharCode<=e&&e<=t.endcharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startcharCode,end:t.endcharCode}))}},up=class{constructor(e){this.startcharCode=e.uint32,this.endcharCode=e.uint32,this.startGlyphID=e.uint32}},fp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=10,e.uint16,this.length=e.uint32,this.language=e.uint32,this.startCharCode=e.uint32,this.numChars=e.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>e.uint16))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),e<this.startCharCode||e>this.startCharCode+this.numChars?!1:e-this.startCharCode}reverse(e){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(e=!1){return e?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},cp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=12,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new dp(e)))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535?0:this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){for(let t of this.groups){let r=t.startGlyphID;if(r>e)continue;if(r===e)return t.startCharCode;if(r+(t.endCharCode-t.startCharCode)<e)continue;let s=t.startCharCode+(e-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},dp=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.startGlyphID=e.uint32}},pp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=13,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32;let o=[...new Array(this.numGroups)].map(s=>new mp(e));Z(this,"groups",o)}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},mp=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.glyphID=e.uint32}},hp=class extends qt{constructor(e,t,r){super(e,t,r),this.subTableStart=e.currentPosition,this.format=14,this.length=e.uint32,this.numVarSelectorRecords=e.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new gp(e)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(e){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(e){let t=this.varSelector.find(r=>r.varSelector===e);return t||!1}getSupportedVariations(){return this.varSelectors.map(e=>e.varSelector)}},gp=class{constructor(e){this.varSelector=e.uint24,this.defaultUVSOffset=e.Offset32,this.nonDefaultUVSOffset=e.Offset32}};function yp(e,t,r){let o=e.uint16;return o===0?new op(e,t,r):o===2?new sp(e,t,r):o===4?new ap(e,t,r):o===6?new ip(e,t,r):o===8?new lp(e,t,r):o===10?new fp(e,t,r):o===12?new cp(e,t,r):o===13?new pp(e,t,r):o===14?new hp(e,t,r):{}}var vp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new bp(r,this.tableStart))}getSubTable(e){return this.encodingRecords[e].table}getSupportedEncodings(){return this.encodingRecords.map(e=>({platformID:e.platformID,encodingId:e.encodingID}))}getSupportedCharCodes(e,t){let r=this.encodingRecords.findIndex(s=>s.platformID===e&&s.encodingID===t);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(e){for(let t=0;t<this.numTables;t++){let r=this.getSubTable(t).reverse(e);if(r)return r}}getGlyphId(e){let t=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(t=s.getGlyphId(e),t!==0):!1}),t}supports(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(e)!==!1})}supportsVariation(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(e)!==!1})}},bp=class{constructor(e,t){let r=this.platformID=e.uint16,o=this.encodingID=e.uint16,s=this.offset=e.Offset32;Z(this,"table",()=>(e.currentPosition=t+s,yp(e,r,o)))}},wp=Object.freeze({__proto__:null,cmap:vp}),xp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Sp=Object.freeze({__proto__:null,head:xp}),Cp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},_p=Object.freeze({__proto__:null,hhea:Cp}),Fp=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.hhea.numberOfHMetrics,n=r.maxp.numGlyphs,a=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=a,[...new Array(s)].map(l=>new kp(o.uint16,o.int16)))),s<n){let l=a+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(n-s)].map(h=>o.int16)))}}},kp=class{constructor(e,t){this.advanceWidth=e,this.lsb=t}},Op=Object.freeze({__proto__:null,hmtx:Fp}),Tp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Pp=Object.freeze({__proto__:null,maxp:Tp}),Ap=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Ep(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new Rp(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(e){let t=this.nameRecords.find(r=>r.nameID===e);if(t)return t.string}},Rp=class{constructor(e,t){this.length=e,this.offset=t}},Ep=class{constructor(e,t){this.platformID=e.uint16,this.encodingID=e.uint16,this.languageID=e.uint16,this.nameID=e.uint16,this.length=e.uint16,this.offset=e.Offset16,Z(this,"string",()=>(e.currentPosition=t.stringStart+this.offset,Ip(e,this)))}};function Ip(e,t){let{platformID:r,length:o}=t;if(o===0)return"";if(r===0||r===3){let a=[];for(let l=0,h=o/2;l<h;l++)a[l]=String.fromCharCode(e.uint16);return a.join("")}let s=e.readBytes(o),n=[];return s.forEach(function(a,l){n[l]=String.fromCharCode(a)}),n.join("")}var Lp=Object.freeze({__proto__:null,name:Ap}),Bp=class extends pe{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},Vp=Object.freeze({__proto__:null,OS2:Bp}),Np=class extends pe{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<lu.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let n=r.int8;r.skip(n),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+n+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(e){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let t=this.glyphNameIndex[e];if(t<258)return lu[t];let r=this.glyphNameOffsets[e],s=this.glyphNameOffsets[e+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(a=>String.fromCharCode(a)).join(""))}},lu=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],zp=Object.freeze({__proto__:null,post:Np}),Dp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new En({offset:e.offset+this.horizAxisOffset},t)),Z(this,"vertAxis",()=>new En({offset:e.offset+this.vertAxisOffset},t)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new En({offset:e.offset+this.itemVarStoreOffset},t)))}},En=class extends pe{constructor(e,t){let{p:r}=super(e,t,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new Mp({offset:e.offset+this.baseTagListOffset},t)),Z(this,"baseScriptList",()=>new jp({offset:e.offset+this.baseScriptListOffset},t))}},Mp=class extends pe{constructor(e,t){let{p:r}=super(e,t,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},jp=class extends pe{constructor(e,t){let{p:r}=super(e,t,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new Gp(this.start,r))))}},Gp=class{constructor(e,t){this.baseScriptTag=t.tag,this.baseScriptOffset=t.Offset16,Z(this,"baseScriptTable",()=>(t.currentPosition=e+this.baseScriptOffset,new Up(t)))}},Up=class{constructor(e){this.start=e.currentPosition,this.baseValuesOffset=e.Offset16,this.defaultMinMaxOffset=e.Offset16,this.baseLangSysCount=e.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(t=>new Wp(this.start,e)),Z(this,"baseValues",()=>(e.currentPosition=this.start+this.baseValuesOffset,new Hp(e))),Z(this,"defaultMinMax",()=>(e.currentPosition=this.start+this.defaultMinMaxOffset,new gu(e)))}},Wp=class{constructor(e,t){this.baseLangSysTag=t.tag,this.minMaxOffset=t.Offset16,Z(this,"minMax",()=>(t.currentPosition=e+this.minMaxOffset,new gu(t)))}},Hp=class{constructor(e){this.parser=e,this.start=e.currentPosition,this.defaultBaselineIndex=e.uint16,this.baseCoordCount=e.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(t=>e.Offset16)}getTable(e){return this.parser.currentPosition=this.start+this.baseCoords[e],new Yp(this.parser)}},gu=class{constructor(e){this.minCoord=e.Offset16,this.maxCoord=e.Offset16,this.featMinMaxCount=e.uint16;let t=e.currentPosition;Z(this,"featMinMaxRecords",()=>(e.currentPosition=t,[...new Array(this.featMinMaxCount)].map(r=>new qp(e))))}},qp=class{constructor(e){this.featureTableTag=e.tag,this.minCoord=e.Offset16,this.maxCoord=e.Offset16}},Yp=class{constructor(e){this.baseCoordFormat=e.uint16,this.coordinate=e.int16,this.baseCoordFormat===2&&(this.referenceGlyph=e.uint16,this.baseCoordPoint=e.uint16),this.baseCoordFormat===3&&(this.deviceTable=e.Offset16)}},Zp=Object.freeze({__proto__:null,BASE:Dp}),uu=class{constructor(e){this.classFormat=e.uint16,this.classFormat===1&&(this.startGlyphID=e.uint16,this.glyphCount=e.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.classFormat===2&&(this.classRangeCount=e.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(t=>new Xp(e)))}},Xp=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.class=e.uint16}},bo=class extends Be{constructor(e){super(e),this.coverageFormat=e.uint16,this.coverageFormat===1&&(this.glyphCount=e.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.coverageFormat===2&&(this.rangeCount=e.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(t=>new Kp(e)))}},Kp=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.startCoverageIndex=e.uint16}},Jp=class{constructor(e,t){this.table=e,this.parser=t,this.start=t.currentPosition,this.format=t.uint16,this.variationRegionListOffset=t.Offset32,this.itemVariationDataCount=t.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>t.Offset32)}},Qp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new uu(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new $p(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new tm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new uu(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new sm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Jp(r)}))}},$p=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,this.glyphCount=e.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16)}getPoint(e){return this.parser.currentPosition=this.start+this.attachPointOffsets[e],new em(this.parser)}},em=class{constructor(e){this.pointCount=e.uint16,this.pointIndices=[...new Array(this.pointCount)].map(t=>e.uint16)}},tm=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,Z(this,"coverage",()=>(e.currentPosition=this.start+this.coverageOffset,new bo(e))),this.ligGlyphCount=e.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(t=>e.Offset16)}getLigGlyph(e){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[e],new rm(this.parser)}},rm=class extends Be{constructor(e){super(e),this.caretCount=e.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(t=>e.Offset16)}getCaretValue(e){return this.parser.currentPosition=this.start+this.caretValueOffsets[e],new om(this.parser)}},om=class{constructor(e){this.caretValueFormat=e.uint16,this.caretValueFormat===1&&(this.coordinate=e.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=e.uint16),this.caretValueFormat===3&&(this.coordinate=e.int16,this.deviceOffset=e.Offset16)}},sm=class extends Be{constructor(e){super(e),this.markGlyphSetTableFormat=e.uint16,this.markGlyphSetCount=e.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(t=>e.Offset32)}getMarkGlyphSet(e){return this.parser.currentPosition=this.start+this.coverageOffsets[e],new bo(this.parser)}},nm=Object.freeze({__proto__:null,GDEF:Qp}),fu=class extends Be{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(e){super(e),this.scriptCount=e.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(t=>new am(e))}},am=class{constructor(e){this.scriptTag=e.tag,this.scriptOffset=e.Offset16}},im=class extends Be{constructor(e){super(e),this.defaultLangSys=e.Offset16,this.langSysCount=e.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(t=>new lm(e))}},lm=class{constructor(e){this.langSysTag=e.tag,this.langSysOffset=e.Offset16}},cu=class{constructor(e){this.lookupOrder=e.Offset16,this.requiredFeatureIndex=e.uint16,this.featureIndexCount=e.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(t=>e.uint16)}},du=class extends Be{static EMPTY={featureCount:0,featureRecords:[]};constructor(e){super(e),this.featureCount=e.uint16,this.featureRecords=[...new Array(this.featureCount)].map(t=>new um(e))}},um=class{constructor(e){this.featureTag=e.tag,this.featureOffset=e.Offset16}},fm=class extends Be{constructor(e){super(e),this.featureParams=e.Offset16,this.lookupIndexCount=e.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(t=>e.uint16)}getFeatureParams(){if(this.featureParams>0){let e=this.parser;e.currentPosition=this.start+this.featureParams;let t=this.featureTag;if(t==="size")return new dm(e);if(t.startsWith("cc"))return new cm(e);if(t.startsWith("ss"))return new pm(e)}}},cm=class{constructor(e){this.format=e.uint16,this.featUiLabelNameId=e.uint16,this.featUiTooltipTextNameId=e.uint16,this.sampleTextNameId=e.uint16,this.numNamedParameters=e.uint16,this.firstParamUiLabelNameId=e.uint16,this.charCount=e.uint16,this.character=[...new Array(this.charCount)].map(t=>e.uint24)}},dm=class{constructor(e){this.designSize=e.uint16,this.subfamilyIdentifier=e.uint16,this.subfamilyNameID=e.uint16,this.smallEnd=e.uint16,this.largeEnd=e.uint16}},pm=class{constructor(e){this.version=e.uint16,this.UINameID=e.uint16}};function yu(e){e.parser.currentPosition-=2,delete e.coverageOffset,delete e.getCoverageTable}var Fr=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.coverageOffset=e.Offset16}getCoverageTable(){let e=this.parser;return e.currentPosition=this.start+this.coverageOffset,new bo(e)}},Ln=class{constructor(e){this.glyphSequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},mm=class extends Fr{constructor(e){super(e),this.deltaGlyphID=e.int16}},hm=class extends Fr{constructor(e){super(e),this.sequenceCount=e.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(t=>e.Offset16)}getSequence(e){let t=this.parser;return t.currentPosition=this.start+this.sequenceOffsets[e],new gm(t)}},gm=class{constructor(e){this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},ym=class extends Fr{constructor(e){super(e),this.alternateSetCount=e.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(t=>e.Offset16)}getAlternateSet(e){let t=this.parser;return t.currentPosition=this.start+this.alternateSetOffsets[e],new vm(t)}},vm=class{constructor(e){this.glyphCount=e.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},bm=class extends Fr{constructor(e){super(e),this.ligatureSetCount=e.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(t=>e.Offset16)}getLigatureSet(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureSetOffsets[e],new wm(t)}},wm=class extends Be{constructor(e){super(e),this.ligatureCount=e.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(t=>e.Offset16)}getLigature(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureOffsets[e],new xm(t)}},xm=class{constructor(e){this.ligatureGlyph=e.uint16,this.componentCount=e.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(t=>e.uint16)}},Sm=class extends Fr{constructor(e){super(e),this.substFormat===1&&(this.subRuleSetCount=e.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.classDefOffset=e.Offset16,this.subClassSetCount=e.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(yu(this),this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new Ln(e)))}getSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.subRuleSetOffsets[e],new Cm(t)}getSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.subClassSetOffsets[e],new _m(t)}getCoverageTable(e){if(this.substFormat!==3&&!e)return super.getCoverageTable();if(!e)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let t=this.parser;return t.currentPosition=this.start+this.coverageOffsets[e],new bo(t)}},Cm=class extends Be{constructor(e){super(e),this.subRuleCount=e.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.subRuleOffsets[e],new vu(t)}},vu=class{constructor(e){this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(t=>e.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new Ln(e))}},_m=class extends Be{constructor(e){super(e),this.subClassRuleCount=e.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.subClassRuleOffsets[e],new Fm(t)}},Fm=class extends vu{constructor(e){super(e)}},km=class extends Fr{constructor(e){super(e),this.substFormat===1&&(this.chainSubRuleSetCount=e.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=e.Offset16,this.inputClassDefOffset=e.Offset16,this.lookaheadClassDefOffset=e.Offset16,this.chainSubClassSetCount=e.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(yu(this),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.inputGlyphCount=e.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.seqLookupCount=e.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(t=>new bu(e)))}getChainSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleSetOffsets[e],new Om(t)}getChainSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubClassSetOffsets[e],new Pm(t)}getCoverageFromOffset(e){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let t=this.parser;return t.currentPosition=this.start+e,new bo(t)}},Om=class extends Be{constructor(e){super(e),this.chainSubRuleCount=e.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new Tm(t)}},Tm=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(t=>new Ln(e))}},Pm=class extends Be{constructor(e){super(e),this.chainSubClassRuleCount=e.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new Am(t)}},Am=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new bu(e))}},bu=class extends Be{constructor(e){super(e),this.sequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},Rm=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.extensionLookupType=e.uint16,this.extensionOffset=e.Offset32}},Em=class extends Fr{constructor(e){super(e),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Im={buildSubtable:function(e,t){let r=new[void 0,mm,hm,ym,bm,Sm,km,Rm,Em][e](t);return r.type=e,r}},Yt=class extends Be{constructor(e){super(e)}},Lm=class extends Yt{constructor(e){super(e),console.log("lookup type 1")}},Bm=class extends Yt{constructor(e){super(e),console.log("lookup type 2")}},Vm=class extends Yt{constructor(e){super(e),console.log("lookup type 3")}},Nm=class extends Yt{constructor(e){super(e),console.log("lookup type 4")}},zm=class extends Yt{constructor(e){super(e),console.log("lookup type 5")}},Dm=class extends Yt{constructor(e){super(e),console.log("lookup type 6")}},Mm=class extends Yt{constructor(e){super(e),console.log("lookup type 7")}},jm=class extends Yt{constructor(e){super(e),console.log("lookup type 8")}},Gm=class extends Yt{constructor(e){super(e),console.log("lookup type 9")}},Um={buildSubtable:function(e,t){let r=new[void 0,Lm,Bm,Vm,Nm,zm,Dm,Mm,jm,Gm][e](t);return r.type=e,r}},pu=class extends Be{static EMPTY={lookupCount:0,lookups:[]};constructor(e){super(e),this.lookupCount=e.uint16,this.lookups=[...new Array(this.lookupCount)].map(t=>e.Offset16)}},Wm=class extends Be{constructor(e,t){super(e),this.ctType=t,this.lookupType=e.uint16,this.lookupFlag=e.uint16,this.subTableCount=e.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>e.Offset16),this.markFilteringSet=e.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(e){let t=this.ctType==="GSUB"?Im:Um;return this.parser.currentPosition=this.start+this.subtableOffsets[e],t.buildSubtable(this.lookupType,this.parser)}},wu=class extends pe{constructor(e,t,r){let{p:o,tableStart:s}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let n=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>n?fu.EMPTY:(o.currentPosition=s+this.scriptListOffset,new fu(o))),Z(this,"featureList",()=>n?du.EMPTY:(o.currentPosition=s+this.featureListOffset,new du(o))),Z(this,"lookupList",()=>n?pu.EMPTY:(o.currentPosition=s+this.lookupListOffset,new pu(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>n?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(e=>e.scriptTag)}getScriptTable(e){let t=this.scriptList.scriptRecords.find(o=>o.scriptTag===e);this.parser.currentPosition=this.scriptList.start+t.scriptOffset;let r=new im(this.parser);return r.scriptTag=e,r}ensureScriptTable(e){return typeof e=="string"?this.getScriptTable(e):e}getSupportedLangSys(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys!==0,r=e.langSysRecords.map(o=>o.langSysTag);return t&&r.unshift("dflt"),r}getDefaultLangSysTable(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys;if(t!==0){this.parser.currentPosition=e.start+t;let r=new cu(this.parser);return r.langSysTag="",r.defaultForScript=e.scriptTag,r}}getLangSysTable(e,t="dflt"){if(t==="dflt")return this.getDefaultLangSysTable(e);e=this.ensureScriptTable(e);let r=e.langSysRecords.find(s=>s.langSysTag===t);this.parser.currentPosition=e.start+r.langSysOffset;let o=new cu(this.parser);return o.langSysTag=t,o}getFeatures(e){return e.featureIndices.map(t=>this.getFeature(t))}getFeature(e){let t;if(parseInt(e)==e?t=this.featureList.featureRecords[e]:t=this.featureList.featureRecords.find(o=>o.featureTag===e),!t)return;this.parser.currentPosition=this.featureList.start+t.featureOffset;let r=new fm(this.parser);return r.featureTag=t.featureTag,r}getLookups(e){return e.lookupListIndices.map(t=>this.getLookup(t))}getLookup(e,t){let r=this.lookupList.lookups[e];return this.parser.currentPosition=this.lookupList.start+r,new Wm(this.parser,t)}},Hm=class extends wu{constructor(e,t){super(e,t,"GSUB")}getLookup(e){return super.getLookup(e,"GSUB")}},qm=Object.freeze({__proto__:null,GSUB:Hm}),Ym=class extends wu{constructor(e,t){super(e,t,"GPOS")}getLookup(e){return super.getLookup(e,"GPOS")}},Zm=Object.freeze({__proto__:null,GPOS:Ym}),Xm=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new Km(r)}},Km=class extends Be{constructor(e){super(e),this.numEntries=e.uint16,this.documentRecords=[...new Array(this.numEntries)].map(t=>new Jm(e))}getDocument(e){let t=this.documentRecords[e];if(!t)return"";let r=this.start+t.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(t.svgDocLength)}getDocumentForGlyph(e){let t=this.documentRecords.findIndex(r=>r.startGlyphID<=e&&e<=r.endGlyphID);return t===-1?"":this.getDocument(t)}},Jm=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.svgDocOffset=e.Offset32,this.svgDocLength=e.uint32}},Qm=Object.freeze({__proto__:null,SVG:Xm}),$m=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(n=>new eh(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let n=[];for(let a=0;a<this.instanceCount;a++)r.currentPosition=s+a*this.instanceSize,n.push(new th(r,this.axisCount,this.instanceSize));return n})}getSupportedAxes(){return this.axes.map(e=>e.tag)}getAxis(e){return this.axes.find(t=>t.tag===e)}},eh=class{constructor(e){this.tag=e.tag,this.minValue=e.fixed,this.defaultValue=e.fixed,this.maxValue=e.fixed,this.flags=e.flags(16),this.axisNameID=e.uint16}},th=class{constructor(e,t,r){let o=e.currentPosition;this.subfamilyNameID=e.uint16,e.uint16,this.coordinates=[...new Array(t)].map(s=>e.fixed),e.currentPosition-o<r&&(this.postScriptNameID=e.uint16)}},rh=Object.freeze({__proto__:null,fvar:$m}),oh=class extends pe{constructor(e,t){let{p:r}=super(e,t),o=e.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},sh=Object.freeze({__proto__:null,cvt:oh}),nh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},ah=Object.freeze({__proto__:null,fpgm:nh}),ih=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new lh(r)))}},lh=class{constructor(e){this.rangeMaxPPEM=e.uint16,this.rangeGaspBehavior=e.uint16}},uh=Object.freeze({__proto__:null,gasp:ih}),fh=class extends pe{constructor(e,t){super(e,t)}getGlyphData(e,t){return this.parser.currentPosition=this.tableStart+e,this.parser.readBytes(t)}},ch=Object.freeze({__proto__:null,glyf:fh}),dh=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(n=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(n=>o.Offset32))}getGlyphDataOffsetAndLength(e){let t=this.offsets[e]*this.x2?2:1,r=this.offsets[e+1]*this.x2?2:1;return{offset:t,length:r-t}}},ph=Object.freeze({__proto__:null,loca:dh}),mh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},hh=Object.freeze({__proto__:null,prep:mh}),gh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},yh=Object.freeze({__proto__:null,CFF:gh}),vh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},bh=Object.freeze({__proto__:null,CFF2:vh}),wh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new xh(r)))}},xh=class{constructor(e){this.glyphIndex=e.uint16,this.vertOriginY=e.int16}},Sh=Object.freeze({__proto__:null,VORG:wh}),Ch=class{constructor(e){this.indexSubTableArrayOffset=e.Offset32,this.indexTablesSize=e.uint32,this.numberofIndexSubTables=e.uint32,this.colorRef=e.uint32,this.hori=new cs(e),this.vert=new cs(e),this.startGlyphIndex=e.uint16,this.endGlyphIndex=e.uint16,this.ppemX=e.uint8,this.ppemY=e.uint8,this.bitDepth=e.uint8,this.flags=e.int8}},_h=class{constructor(e){this.hori=new cs(e),this.vert=new cs(e),this.ppemX=e.uint8,this.ppemY=e.uint8,this.substitutePpemX=e.uint8,this.substitutePpemY=e.uint8}},cs=class{constructor(e){this.ascender=e.int8,this.descender=e.int8,this.widthMax=e.uint8,this.caretSlopeNumerator=e.int8,this.caretSlopeDenominator=e.int8,this.caretOffset=e.int8,this.minOriginSB=e.int8,this.minAdvanceSB=e.int8,this.maxBeforeBL=e.int8,this.minAfterBL=e.int8,this.pad1=e.int8,this.pad2=e.int8}},xu=class extends pe{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new Ch(o)))}},Fh=Object.freeze({__proto__:null,EBLC:xu}),Su=class extends pe{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},kh=Object.freeze({__proto__:null,EBDT:Su}),Oh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new _h(r)))}},Th=Object.freeze({__proto__:null,EBSC:Oh}),Ph=class extends xu{constructor(e,t){super(e,t,"CBLC")}},Ah=Object.freeze({__proto__:null,CBLC:Ph}),Rh=class extends Su{constructor(e,t){super(e,t,"CBDT")}},Eh=Object.freeze({__proto__:null,CBDT:Rh}),Ih=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},Lh=Object.freeze({__proto__:null,sbix:Ih}),Bh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(e){let t=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=t;let r=new In(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let n=new In(this.parser),a=n.gID;if(o===e)return r;if(a===e)return n;for(;t!==s;){let l=t+(s-t)/12;this.parser.currentPosition=l;let h=new In(this.parser),f=h.gID;if(f===e)return h;f>e?s=l:f<e&&(t=l)}return!1}getLayers(e){let t=this.getBaseGlyphRecord(e);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*t.firstLayerIndex,[...new Array(t.numLayers)].map(r=>new Vh(p))}},In=class{constructor(e){this.gID=e.uint16,this.firstLayerIndex=e.uint16,this.numLayers=e.uint16}},Vh=class{constructor(e){this.gID=e.uint16,this.paletteIndex=e.uint16}},Nh=Object.freeze({__proto__:null,COLR:Bh}),zh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new Dh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new Mh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new jh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new Gh(r,o))))}},Dh=class{constructor(e){this.blue=e.uint8,this.green=e.uint8,this.red=e.uint8,this.alpha=e.uint8}},Mh=class{constructor(e,t){this.paletteTypes=[...new Array(t)].map(r=>e.uint32)}},jh=class{constructor(e,t){this.paletteLabels=[...new Array(t)].map(r=>e.uint16)}},Gh=class{constructor(e,t){this.paletteEntryLabels=[...new Array(t)].map(r=>e.uint16)}},Uh=Object.freeze({__proto__:null,CPAL:zh}),Wh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new Hh(r))}getData(e){let t=this.signatureRecords[e];return this.parser.currentPosition=this.tableStart+t.offset,new qh(this.parser)}},Hh=class{constructor(e){this.format=e.uint32,this.length=e.uint32,this.offset=e.Offset32}},qh=class{constructor(e){e.uint16,e.uint16,this.signatureLength=e.uint32,this.signature=e.readBytes(this.signatureLength)}},Yh=Object.freeze({__proto__:null,DSIG:Wh}),Zh=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(n=>new Xh(o,s))}},Xh=class{constructor(e,t){this.pixelSize=e.uint8,this.maxWidth=e.uint8,this.widths=e.readBytes(t)}},Kh=Object.freeze({__proto__:null,hdmx:Zh}),Jh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let n=0;n<this.nTables;n++){r.currentPosition=o;let a=new Qh(r);s.push(a),o+=a}return s})}},Qh=class{constructor(e){this.version=e.uint16,this.length=e.uint16,this.coverage=e.flags(8),this.format=e.uint8,this.format===0&&(this.nPairs=e.uint16,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(t=>new $h(e)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},$h=class{constructor(e){this.left=e.uint16,this.right=e.uint16,this.value=e.fword}},eg=Object.freeze({__proto__:null,kern:Jh}),tg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},rg=Object.freeze({__proto__:null,LTSH:tg}),og=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},sg=Object.freeze({__proto__:null,MERG:og}),ng=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new ag(this.tableStart,r))}},ag=class{constructor(e,t){this.tableStart=e,this.parser=t,this.tag=t.tag,this.dataOffset=t.Offset32,this.dataLength=t.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},ig=Object.freeze({__proto__:null,meta:ng}),lg=class extends pe{constructor(e,t){super(e,t),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},ug=Object.freeze({__proto__:null,PCLT:lg}),fg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new cg(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new dg(r))}},cg=class{constructor(e){this.bCharSet=e.uint8,this.xRatio=e.uint8,this.yStartRatio=e.uint8,this.yEndRatio=e.uint8}},dg=class{constructor(e){this.recs=e.uint16,this.startsz=e.uint8,this.endsz=e.uint8,this.records=[...new Array(this.recs)].map(t=>new pg(e))}},pg=class{constructor(e){this.yPelHeight=e.uint16,this.yMax=e.int16,this.yMin=e.int16}},mg=Object.freeze({__proto__:null,VDMX:fg}),hg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},gg=Object.freeze({__proto__:null,vhea:hg}),yg=class extends pe{constructor(e,t,r){super(e,t);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,n=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=n,[...new Array(o)].map(a=>new vg(p.uint16,p.int16)))),o<s){let a=n+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=a,[...new Array(s-o)].map(l=>p.int16)))}}},vg=class{constructor(e,t){this.advanceHeight=e,this.topSideBearing=t}},bg=Object.freeze({__proto__:null,vmtx:yg});var Cu=u(X(),1);var{kebabCase:wg}=ye(Cu.privateApis);function _u(e){let t=e.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:wg(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(t)}var gt=u(D(),1);function xg(){let{installFonts:e}=(0,wo.useContext)(lt),[t,r]=(0,wo.useState)(!1),[o,s]=(0,wo.useState)(null),n=g=>{l(g)},a=g=>{l(g.target.files)},l=async g=>{if(!g)return;s(null),r(!0);let y=new Set,T=[...g],O=!1,_=T.map(async b=>{if(!await f(b))return O=!0,null;if(y.has(b.name))return null;let q=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return Tn.includes(q)?(y.add(b.name),b):null}),S=(await Promise.all(_)).filter(b=>b!==null);if(S.length>0)h(S);else{let b=O?(0,Yr.__)("Sorry, you are not allowed to upload this file type."):(0,Yr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},h=async g=>{let y=await Promise.all(g.map(async T=>{let O=await d(T);return await tr(O,O.file,"all"),O}));m(y)};async function f(g){let y=new ds("Uploaded Font");try{let T=await c(g);return await y.fromDataBuffer(T,"font"),!0}catch{return!1}}async function c(g){return new Promise((y,T)=>{let O=new window.FileReader;O.readAsArrayBuffer(g),O.onload=()=>y(O.result),O.onerror=T})}let d=async g=>{let y=await c(g),T=new ds("Uploaded Font");T.fromDataBuffer(y,g.name);let _=(await new Promise($=>T.onload=$)).detail.font,{name:S}=_.opentype.tables,b=S.get(16)||S.get(1),P=S.get(2).toLowerCase().includes("italic"),q=_.opentype.tables["OS/2"].usWeightClass||"normal",N=!!_.opentype.tables.fvar&&_.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),W=N?`${N.minValue} ${N.maxValue}`:null;return{file:g,fontFamily:b,fontStyle:P?"italic":"normal",fontWeight:W||q}},m=async g=>{let y=_u(g);try{await e(y),s({type:"success",message:(0,Yr.__)("Fonts were installed successfully.")})}catch(T){let O=T;s({type:"error",message:O.message,errors:O?.installationErrors})}r(!1)};return(0,gt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,gt.jsx)(tt.DropZone,{onFilesDrop:n}),(0,gt.jsxs)(tt.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,gt.jsxs)(tt.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,gt.jsx)("ul",{children:o.errors.map((g,y)=>(0,gt.jsx)("li",{children:g},y))})]}),t&&(0,gt.jsx)(tt.FlexItem,{children:(0,gt.jsx)("div",{className:"font-library__upload-area",children:(0,gt.jsx)(tt.ProgressBar,{})})}),!t&&(0,gt.jsx)(tt.FormFileUpload,{accept:Tn.map(g=>`.${g}`).join(","),multiple:!0,onChange:a,render:({openFileDialog:g})=>(0,gt.jsx)(tt.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,Yr.__)("Upload font")})}),(0,gt.jsx)(tt.__experimentalText,{className:"font-library__upload-area__text",children:(0,Yr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ps=xg;var ku=u(D(),1),{Tabs:b6}=ye(Bn.privateApis),w6={id:"installed-fonts",title:(0,ms._x)("Library","Font library")},x6={id:"upload-fonts",title:(0,ms._x)("Upload","noun")};var Ou=u(ie(),1),Vn=u(X(),1),Cg=u(ve(),1);var Tu=u(D(),1);var Nn=u(D(),1);var Pu=u(ie(),1),hs=u(X(),1);var Au=u(D(),1);var Dn=u(D(),1);var At=u(ie(),1),Mn=u(X(),1),Rg=u(ve(),1);var Ru=u(it(),1);var Pg=u(D(),1),{useSettingsForBlockElement:J6,TypographyPanel:Q6}=ye(Ru.privateApis);var Ag=u(D(),1);var jn=u(D(),1),iC={text:{description:(0,At.__)("Manage the fonts used on the site."),title:(0,At.__)("Text")},link:{description:(0,At.__)("Manage the fonts and typography used on the links."),title:(0,At.__)("Links")},heading:{description:(0,At.__)("Manage the fonts and typography used on headings."),title:(0,At.__)("Headings")},caption:{description:(0,At.__)("Manage the fonts and typography used on captions."),title:(0,At.__)("Captions")},button:{description:(0,At.__)("Manage the fonts and typography used on buttons."),title:(0,At.__)("Buttons")}};var Bg=u(ie(),1),Vg=u(X(),1),Iu=u(it(),1);var Zr=u(X(),1),Eu=u(ie(),1);var Lg=u(ve(),1);var Eg=u(X(),1),Ig=u(D(),1);var Gn=u(D(),1);var Un=u(D(),1),{useSettingsForBlockElement:CC,ColorPanel:_C}=ye(Iu.privateApis);var Ug=u(ie(),1),Mu=u(X(),1);var Dg=u(pr(),1),Wn=u(X(),1),Mg=u(ie(),1);var ys=u(X(),1);var gs=u(X(),1);var Lu=u(D(),1);function Bu(){let{paletteColors:e}=zr();return e.slice(0,4).map(({slug:t,color:r},o)=>(0,Lu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${t}-${o}`))}var So=u(D(),1),Ng={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},zg=({label:e,isFocused:t,withHoverView:r})=>(0,So.jsx)(jr,{label:e,isFocused:t,withHoverView:r,children:({key:o})=>(0,So.jsx)(gs.__unstableMotion.div,{variants:Ng,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(gs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(Bu,{})})},o)}),Vu=zg;var kr=u(D(),1),Nu=["color"];function vs({title:e,gap:t=2}){let r=Uo(Nu);return r?.length<=1?null:(0,kr.jsxs)(ys.__experimentalVStack,{spacing:3,children:[e&&(0,kr.jsx)(St,{level:3,children:e}),(0,kr.jsx)(ys.__experimentalGrid,{gap:t,children:r.map((o,s)=>(0,kr.jsx)(Ur,{variation:o,isPill:!0,properties:Nu,showTooltip:!0,children:()=>(0,kr.jsx)(Vu,{})},s))})]})}var zu=u(D(),1);var jg=u(pr(),1),bs=u(X(),1),Gg=u(ie(),1);var Du=u(D(),1);var Hn=u(D(),1),{Tabs:XC}=ye(Mu.privateApis);var Hg=u(ie(),1),Gu=u(it(),1),qg=u(X(),1);var ju=u(it(),1);var Wg=u(D(),1);var{BackgroundPanel:$C}=ye(ju.privateApis);var qn=u(D(),1),{useHasBackgroundPanel:a3}=ye(Gu.privateApis);var Or=u(X(),1),Yn=u(ie(),1);var Jg=u(ve(),1);var Yg=u(X(),1),Zg=u(ie(),1),Xg=u(D(),1);var Zn=u(D(),1),{Menu:v3}=ye(Or.privateApis);var We=u(X(),1),Co=u(ie(),1);var ws=u(ve(),1);var Xn=u(D(),1),{Menu:I3}=ye(We.privateApis),L3=[{label:(0,Co.__)("Rename"),action:"rename"},{label:(0,Co.__)("Delete"),action:"delete"}],B3=[{label:(0,Co.__)("Reset"),action:"reset"}];var Qg=u(D(),1);var ty=u(ie(),1),Wu=u(it(),1);var Uu=u(it(),1),$g=u(ve(),1);var ey=u(D(),1),{useSettingsForBlockElement:W3,DimensionsPanel:H3}=ye(Uu.privateApis);var Kn=u(D(),1),{useHasDimensionsPanel:Q3,useSettingsForBlockElement:$3}=ye(Wu.privateApis);var Ku=u(X(),1),ny=u(ie(),1);var oy=u(ie(),1),sy=u(X(),1);var Hu=u(wt(),1),qu=u(pt(),1),Ss=u(ve(),1),Yu=u(X(),1),Zu=u(ie(),1);var xs=u(D(),1);function ry({gap:e=2}){let{user:t}=(0,Ss.useContext)(Je),r=t?.styles,s=(0,qu.useSelect)(a=>{let l=a(Hu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(a=>!co(a,["color"])&&!co(a,["typography","spacing"])),n=(0,Ss.useMemo)(()=>[...[{title:(0,Zu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let h=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(m=>{if(r.blocks?.[m]?.css){let g=h[m]||{},y={css:`${h[m]?.css||""} ${r.blocks?.[m]?.css?.trim()||""}`};h[m]={...g,...y}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(h).length>0?{blocks:h}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,xs.jsx)(Yu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:e,children:n.map((a,l)=>(0,xs.jsx)(Ur,{variation:a,children:h=>(0,xs.jsx)(bn,{label:a?.title,withHoverView:!0,isFocused:h,variation:a})},l))})}var Jn=ry;var Xu=u(D(),1);var Qn=u(D(),1);var ay=u(ie(),1),iy=u(X(),1),Ju=u(it(),1);var $n=u(D(),1),{AdvancedPanel:y_}=ye(Ju.privateApis);var af=u(ie(),1),ta=u(X(),1),ra=u(ve(),1);var ly=u(pt(),1),uy=u(wt(),1),Qu=u(ve(),1);var tf=u(ie(),1),rf=u(X(),1),Cs=u(ef(),1),fy=u(wt(),1),cy=u(pt(),1);var of=u(kn(),1),sf=u(D(),1),S_=3600*1e3*24;var ea=u(X(),1),_o=u(ie(),1);var nf=u(D(),1);var oa=u(D(),1);var sa=u(ie(),1),Zt=u(X(),1);var gy=u(ve(),1);var py=u(X(),1),my=u(ie(),1),hy=u(D(),1);var na=u(D(),1),{Menu:U_}=ye(Zt.privateApis);var cf=u(ie(),1),Mt=u(X(),1);var df=u(ve(),1);var yy=u(it(),1),vy=u(ie(),1);var by=u(D(),1);var wy=u(X(),1),lf=u(ie(),1),xy=u(D(),1);var Fo=u(X(),1),Sy=u(ie(),1),Cy=u(ve(),1),uf=u(D(),1);var Xt=u(X(),1),ff=u(D(),1);var aa=u(D(),1),{Menu:i4}=ye(Mt.privateApis);var la=u(D(),1);var ua=u(D(),1);function Xr(e){return function({value:r,baseValue:o,onChange:s,...n}){return(0,ua.jsx)(fo,{value:r,baseValue:o,onChange:s,children:(0,ua.jsx)(e,{...n})})}}var Oy=Xr(Jn);var Ty=Xr(vs);var Py=Xr(Ko);var Kr=u(D(),1);function fa({value:e,baseValue:t,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Kr.jsx)(ps,{});break;case"installed-fonts":s=(0,Kr.jsx)(ss,{});break;default:s=(0,Kr.jsx)(as,{slug:o})}return(0,Kr.jsx)(fo,{value:e,baseValue:t,onChange:r,children:(0,Kr.jsx)($o,{children:s})})}var hf=u(Ws()),{unlock:ca}=(0,hf.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='7667192f29']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","7667192f29"),e.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(e)}var{Tabs:_s}=ca(gf.privateApis),{useGlobalStyles:Ay}=ca(yf.privateApis);function Ry(){let{records:e=[]}=(0,Fs.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[t,r]=(0,bf.useState)("installed-fonts"),{base:o,user:s,setUser:n,isReady:a}=Ay(),l=(0,vf.useSelect)(f=>f(Fs.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!a)return null;let h=[{id:"installed-fonts",title:(0,Jr._x)("Library","Font library")}];return l&&(h.push({id:"upload-fonts",title:(0,Jr._x)("Upload","noun")}),h.push(...(e||[]).map(({slug:f,name:c})=>({id:f,title:e&&e.length===1&&f==="google-fonts"?(0,Jr.__)("Install Fonts"):c})))),React.createElement(Qs,{title:(0,Jr.__)("Fonts"),className:"font-library-page"},React.createElement(_s,{selectedTabId:t,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(_s.TabList,null,h.map(({id:f,title:c})=>React.createElement(_s.Tab,{key:f,tabId:f},c)))),h.map(({id:f})=>React.createElement(_s.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(fa,{value:s,baseValue:o,onChange:n,activeTab:f})))))}function Ey(){return React.createElement(Ry,null)}var Iy=Ey;export{Iy as stage}; /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: diff --git a/src/wp-includes/build/routes/registry.php b/src/wp-includes/build/routes/registry.php index 7d9a86e2c9182..041b1369be3d1 100644 --- a/src/wp-includes/build/routes/registry.php +++ b/src/wp-includes/build/routes/registry.php @@ -14,6 +14,13 @@ 'has_route' => true, 'has_content' => true, ), + array( + 'name' => 'content-types', + 'path' => '/', + 'page' => 'content-types', + 'has_route' => true, + 'has_content' => false, + ), array( 'name' => 'dashboard', 'path' => '/', @@ -50,16 +57,37 @@ 'has_content' => true, ), array( - 'name' => 'taxonomies', - 'path' => '/', - 'page' => 'taxonomies', + 'name' => 'media-editor', + 'path' => '/media-editor/$id', + 'page' => 'media-editor', + 'has_route' => true, + 'has_content' => true, + ), + array( + 'name' => 'post-type-edit', + 'path' => '/post-types/$id', + 'page' => 'content-types', + 'has_route' => true, + 'has_content' => true, + ), + array( + 'name' => 'post-types-list', + 'path' => '/post-types', + 'page' => 'content-types', + 'has_route' => true, + 'has_content' => true, + ), + array( + 'name' => 'taxonomies-list', + 'path' => '/taxonomies', + 'page' => 'content-types', 'has_route' => true, 'has_content' => true, ), array( 'name' => 'taxonomy-edit', - 'path' => '/edit/$id', - 'page' => 'taxonomies', + 'path' => '/taxonomies/$id', + 'page' => 'content-types', 'has_route' => true, 'has_content' => true, ) diff --git a/src/wp-includes/images/icon-library/tab-list.svg b/src/wp-includes/images/icon-library/tab-list.svg new file mode 100644 index 0000000000000..d42453416b532 --- /dev/null +++ b/src/wp-includes/images/icon-library/tab-list.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.2 9.5h-3.5c-1 0-1.8.8-1.8 1.8v2.5h1.5v-2.5c0-.1.1-.2.2-.2h3.5c.1 0 .2.1.2.2v2.5h1.5v-2.5c0-1-.8-1.8-1.8-1.8Zm-9 0H5.7c-1 0-1.8.8-1.8 1.8v2.5h7v-2.5c0-1-.8-1.8-1.8-1.8Z"/></svg> diff --git a/src/wp-includes/images/icon-library/tab-panel.svg b/src/wp-includes/images/icon-library/tab-panel.svg new file mode 100644 index 0000000000000..a6444a9739efd --- /dev/null +++ b/src/wp-includes/images/icon-library/tab-panel.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 16.5h13V15H4v1.5ZM4 12v1.5h16V12H4Zm1.5-4.2c0-.1.1-.2.2-.2h3.5c.1 0 .2.1.2.2v2.5h1.5V7.8c0-1-.8-1.8-1.8-1.8H5.6c-1 0-1.8.8-1.8 1.8v2.5h1.5V7.8Z"/></svg> From ca2129de238d5b018b0350171d051e13a88ac829 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 30 Jun 2026 01:12:29 +0000 Subject: [PATCH 275/327] General: Bump the pinned hash for Gutenberg to `v23.3.0`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the pinned commit hash of the Gutenberg repository from `d5ac60e6118060529737127d44a6fdc8abf57eb9 ` (version `23.2.0`) to `14db4ab9395a9e96430eed678e4288a59eecbd15` (version `23.3.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v23.2.0..v23.3.0. The following commits are included: - Performance tests: fix template click, delete pages at startup (https://github.com/WordPress/gutenberg/pull/78193) - [ui] Add internal wp compat overlay slot helper (https://github.com/WordPress/gutenberg/pull/77851) - Build: Detect stale node_modules at build/dev time (https://github.com/WordPress/gutenberg/pull/77995) - migrated __experimentalText, __experimentalHStack, and __experimentalVStack to Text and Stack (https://github.com/WordPress/gutenberg/pull/78155) - Connectors: Restyle AI plugin callout with pastel background and beaker decoration (https://github.com/WordPress/gutenberg/pull/78243) - RTC: fix cursor awareness / presence bug in nested rich text elements (https://github.com/WordPress/gutenberg/pull/77673) - Core Data: Share parsed blocks cache between resolver and editor hook (https://github.com/WordPress/gutenberg/pull/78026) - Block supports: Optimize custom CSS class rendering and parsing (https://github.com/WordPress/gutenberg/pull/78217) - scripts: Fix path for license type detection in license.js (https://github.com/WordPress/gutenberg/pull/78245) - Extract media editor save hook (https://github.com/WordPress/gutenberg/pull/78225) - Block Library: Fix Tabs block losing added tabs when the editor is reopened (https://github.com/WordPress/gutenberg/pull/78250) - Extract media editor crop options hook (https://github.com/WordPress/gutenberg/pull/78263) - Media Editor Modal: Add custom datetime view for the sidebar to ensure minimal display of dates (https://github.com/WordPress/gutenberg/pull/78265) - Block Inspector: Hide Styles tab in preview mode (https://github.com/WordPress/gutenberg/pull/78230) - Move Layout panel into styles tab so it sits next to Dimensions (https://github.com/WordPress/gutenberg/pull/77922) - Media Editor Modal: Only show the crop active state when using keyboard (https://github.com/WordPress/gutenberg/pull/78266) - Add supports for pseudo states on single block instances (https://github.com/WordPress/gutenberg/pull/76491) - Perf tests: Save Chromium traces as CI artifacts (https://github.com/WordPress/gutenberg/pull/77974) - Media editor: show live crop dimensions during gesture (https://github.com/WordPress/gutenberg/pull/78221) - Fix flaky navigation frontend submenu e2e test (https://github.com/WordPress/gutenberg/pull/78270) - Widget dashboard: skip tile hover elevation while resizing (https://github.com/WordPress/gutenberg/pull/78234) - DataViews: Adopt `@wordpress/theme` design tokens (https://github.com/WordPress/gutenberg/pull/75204) - Home Link: Add missing controls (https://github.com/WordPress/gutenberg/pull/76672) - Overlays: Extend positioner slot pattern to Popover, Select, Autocomplete (https://github.com/WordPress/gutenberg/pull/78168) - Make RTC-related APIs private (https://github.com/WordPress/gutenberg/pull/78097) - Block Toolbar: Prevent position shifts when using mover control (https://github.com/WordPress/gutenberg/pull/77798) - Experiment: Add default term for taxonomies (https://github.com/WordPress/gutenberg/pull/78233) - [ui] Tooltip: Default portal container to the wp compat overlay slot (https://github.com/WordPress/gutenberg/pull/78095) - Performance Tests: log timestamps, optimize build overhead (https://github.com/WordPress/gutenberg/pull/78237) - Editor: Disable Visual Revisions when classic meta boxes are present (https://github.com/WordPress/gutenberg/pull/78249) - Stabilize small-scope flaky e2e tests (https://github.com/WordPress/gutenberg/pull/77893) - Navigation Link: Preserve custom labels during link updates (https://github.com/WordPress/gutenberg/pull/77186) - Tests: Add `timezone-mock` to `test/unit/package.json` (https://github.com/WordPress/gutenberg/pull/78277) - Fix performance tests when running against old reference commit (https://github.com/WordPress/gutenberg/pull/78288) - Editor: Fix Visual Revisions meta keys overlap (https://github.com/WordPress/gutenberg/pull/78156) - Stylelint: Add more exemptions to logical properties rules (https://github.com/WordPress/gutenberg/pull/78252) - Menu: Reduce flaky Space key test scope (https://github.com/WordPress/gutenberg/pull/78246) - Revisions: Scale diff markers width with user text-size preference (https://github.com/WordPress/gutenberg/pull/78273) - Refactor validation tools and update related scripts (https://github.com/WordPress/gutenberg/pull/77522) - Storybook: Add text overflow E2E stories (https://github.com/WordPress/gutenberg/pull/78256) - Routes: Enforce logical CSS properties in stylesheets (https://github.com/WordPress/gutenberg/pull/78291) - Migrate pattern list item titles to Text from @wordpress/ui (https://github.com/WordPress/gutenberg/pull/77656) - Perf tests: Capture loading durations before stopTracing() (https://github.com/WordPress/gutenberg/pull/78294) - Perf tests: Disable Playwright tracing to remove snapshot overhead (https://github.com/WordPress/gutenberg/pull/78295) - Notes: Support multiple note threads per block (https://github.com/WordPress/gutenberg/pull/75147) - make widget framework types generic (https://github.com/WordPress/gutenberg/pull/78247) - Blocks: Ensure proper merging of classes in block schemas (https://github.com/WordPress/gutenberg/pull/70615) - Collab Sidebar: Replace near-identical pink with red in avatar palette (https://github.com/WordPress/gutenberg/pull/78299) - Compose: Share a single change listener per MediaQueryList in useMediaQuery (https://github.com/WordPress/gutenberg/pull/78297) - Add custom widget dashboard resize handle styling. (https://github.com/WordPress/gutenberg/pull/78236) - Block Editor: Integrate slug-based color selection in color panel (https://github.com/WordPress/gutenberg/pull/78048) - wp-build: Replace getter-based exports with data properties (https://github.com/WordPress/gutenberg/pull/78303) - RTC: Fix connection lost error modal when /wp-json/wp-sync/v1/updates exceeds 16 MiB limit (https://github.com/WordPress/gutenberg/pull/77724) - Hide wrap by default in flex layout panel (https://github.com/WordPress/gutenberg/pull/78269) - Prevent images from appearing squished when only one dimension is set (https://github.com/WordPress/gutenberg/pull/70575) - Block Style States: Show only supported inspector controls when selecting a style state (https://github.com/WordPress/gutenberg/pull/78280) - Build: Remove custom job_status output in favor of native result (https://github.com/WordPress/gutenberg/pull/78208) - Improve GHCR asset publishing and expand trigger events to include `pull_request` (https://github.com/WordPress/gutenberg/pull/78211) - Media Editor: Scope keyboard shortcuts to the modal (https://github.com/WordPress/gutenberg/pull/78322) - Fix 'Invalid Date' when clicking on Now in DateTimePicker on Date Block. (https://github.com/WordPress/gutenberg/pull/78284) - Dashboard: round widget drag radius (https://github.com/WordPress/gutenberg/pull/78292) - Core Abilities: Defer fetch until workflow palette opens (https://github.com/WordPress/gutenberg/pull/78316) - Manually update all package versions to match wp/latest (https://github.com/WordPress/gutenberg/pull/78301) - Dashboard: layout settings drawer with grid/masonry models (https://github.com/WordPress/gutenberg/pull/78202) - Components: Fix FormTokenField validation preventing default behavior (https://github.com/WordPress/gutenberg/pull/77181) - Core Data: Avoid duplicate id-less entity permission requests (https://github.com/WordPress/gutenberg/pull/78262) - Post/Site Editor loading test: remove unwanted actions from timed code path (https://github.com/WordPress/gutenberg/pull/78323) - Tests: Add post-editor preload spec (https://github.com/WordPress/gutenberg/pull/78318) - Automated Testing: Allow console logging in all bin, scripts, tools files (https://github.com/WordPress/gutenberg/pull/78312) - [components] Draggable: Migrate clone wrapper to wp compat overlay slot (https://github.com/WordPress/gutenberg/pull/78183) - Editor: Inline text editor toolbar z-index (https://github.com/WordPress/gutenberg/pull/78309) - Automated Testing: Skip ESLint for bundled library code via ignore patterns (https://github.com/WordPress/gutenberg/pull/78314) - Refactor: useMemo on elements and useCallback is back on resetAllFilter (https://github.com/WordPress/gutenberg/pull/78329) - Guidelines: Fix fatal when `rest_api_init` fires before init (https://github.com/WordPress/gutenberg/pull/78350) - Upload Media: stop propagating `-scaled` to sub-size filenames (https://github.com/WordPress/gutenberg/pull/78038) - design-system-mcp: Update get_components to optionally support multiple names (https://github.com/WordPress/gutenberg/pull/78185) - Dashboard: adds tooltip explaining disabled menu item (https://github.com/WordPress/gutenberg/pull/78344) - Grid: make resize overlay line solid (https://github.com/WordPress/gutenberg/pull/78340) - Dashboard: migrate Layout settings drawer to DataForm (https://github.com/WordPress/gutenberg/pull/78336) - Add dimension validation to sideload endpoint (https://github.com/WordPress/gutenberg/pull/74903) - Tests: Preload spec — track query strings and use an existing draft (https://github.com/WordPress/gutenberg/pull/78343) - design-system-mcp: Add server instructions for client usage guidance (https://github.com/WordPress/gutenberg/pull/78186) - Draggable: Scope the clone's fallback `z-index` to non-slot placements (https://github.com/WordPress/gutenberg/pull/78354) - [ui] Trim verbose comments around the compat overlay slot (https://github.com/WordPress/gutenberg/pull/78356) - DataViews: Inline z-index values (https://github.com/WordPress/gutenberg/pull/78315) - Block/Tabs: Remove mount-time setAttributes that caused dirty editor state on reload (https://github.com/WordPress/gutenberg/pull/78339) - Connectors: Consolidate WP 7.0 compat loading and move from experimental (https://github.com/WordPress/gutenberg/pull/78228) - Grid: visualize columns without outline (https://github.com/WordPress/gutenberg/pull/78281) - Media Editor: Harden cropper math layer against non-finite inputs (https://github.com/WordPress/gutenberg/pull/78321) - Media Editor: Enforce a minimum crop size in the image editor (https://github.com/WordPress/gutenberg/pull/78268) - Editor: Use _n() for revisions count aria-label (https://github.com/WordPress/gutenberg/pull/78382) - Media Editor: Anchor cursorless zoom (slider/keyboard) at crop center (https://github.com/WordPress/gutenberg/pull/78385) - Dashboard: layered grid columns + visual layout model picker (https://github.com/WordPress/gutenberg/pull/78364) - Refactor: Add extractPresetSlug as a generalized function to extract slugs. (https://github.com/WordPress/gutenberg/pull/78328) - Dashboard: full size widget inserter (https://github.com/WordPress/gutenberg/pull/78390) - Grid: resize widget and snap resize-placeholder (https://github.com/WordPress/gutenberg/pull/78389) - UI Card: full bleed as header hero image & content cover (https://github.com/WordPress/gutenberg/pull/77856) - Modal: Inline header z-index (https://github.com/WordPress/gutenberg/pull/78362) - UI Icon: Mark as recommended (https://github.com/WordPress/gutenberg/pull/78365) - Use WCIcon alias for component Icon imports (https://github.com/WordPress/gutenberg/pull/78366) - Tools(Release): migrate bin/plugin into @wordpress/release-tools workspace (https://github.com/WordPress/gutenberg/pull/77695) - UI Button: Optimize overflow styles (https://github.com/WordPress/gutenberg/pull/78300) - [ui] Select: Default portal container to the wp compat overlay slot (https://github.com/WordPress/gutenberg/pull/78372) - Grid: tiled grid overlay (https://github.com/WordPress/gutenberg/pull/78373) - useCopyToClipboard: Always call onSuccess callback (https://github.com/WordPress/gutenberg/pull/78387) - Remove commander.js file from the project (https://github.com/WordPress/gutenberg/pull/78400) - [ui] Autocomplete: Default portal container to the wp compat overlay slot (https://github.com/WordPress/gutenberg/pull/78375) - Use WCTooltip alias for component Tooltip imports (https://github.com/WordPress/gutenberg/pull/78396) - Upload Media: pick up the finalized attachment URL so srcset renders (https://github.com/WordPress/gutenberg/pull/78359) - UI: Fix item popup typography (https://github.com/WordPress/gutenberg/pull/78403) - RTC: Add command to run in WebSockets mode (https://github.com/WordPress/gutenberg/pull/78363) - Publishing packages: defer pushing tags until lerna publish succeeds (https://github.com/WordPress/gutenberg/pull/78253) - Fix: Show collaborators with top toolbar is active (https://github.com/WordPress/gutenberg/pull/78049) - Image block: Add "Mark as decorative" toggle for accessibility (https://github.com/WordPress/gutenberg/pull/78064) - Revisions: Use CSS outline as secondary non-color indicator for diff blocks (https://github.com/WordPress/gutenberg/pull/78393) - DataViewsPicker Table: Fix first-click row selection (https://github.com/WordPress/gutenberg/pull/78423) - Fixed additional issues with block registration types (https://github.com/WordPress/gutenberg/pull/78416) - Media Editor: Make zoom floor coverage-aware instead of fixed at 1x (https://github.com/WordPress/gutenberg/pull/78222) - Grid: animate sibling tiles when layout reflows during drag or resize (https://github.com/WordPress/gutenberg/pull/78395) - Widget Types: declarative presentation hint (full-bleed support) (https://github.com/WordPress/gutenberg/pull/78209) - Image: Fix missing aria-label on lightbox trigger button for single images (https://github.com/WordPress/gutenberg/pull/78426) - Columns: Remove redundant Skip option from layout picker (https://github.com/WordPress/gutenberg/pull/78405) - Components: Popover: don't close when focus moves into the `@wordpress/ui` compat overlay slot (https://github.com/WordPress/gutenberg/pull/78407) - Script Loader: Defer single-page admin init until DOMContentLoaded (Trac https://github.com/WordPress/gutenberg/pull/65103) (https://github.com/WordPress/gutenberg/pull/78136) - Grid: fix immutability lint warning for react hook (https://github.com/WordPress/gutenberg/pull/78431) - Tabs, TabPanel: Align styles with wp-ui (https://github.com/WordPress/gutenberg/pull/78418) - List View: Place caret at end of block when selecting (https://github.com/WordPress/gutenberg/pull/76797) - Dashboard: restrict widget icons to just SVGs (no dashicons) (https://github.com/WordPress/gutenberg/pull/78440) - Dashboard: Increase widget spacing with --wp-grid-gap. (https://github.com/WordPress/gutenberg/pull/78439) - RTC: Provide `PROTOCOL_MISMATCH` error handling (https://github.com/WordPress/gutenberg/pull/76991) - Dashboard: add chrome UI tools to widgets (https://github.com/WordPress/gutenberg/pull/78060) - Experiment: Update Classic block deprecation notice (https://github.com/WordPress/gutenberg/pull/78445) - UI Tabs: Recommend component for use (https://github.com/WordPress/gutenberg/pull/78442) - RTC: Sync the content even if its a function (https://github.com/WordPress/gutenberg/pull/76796) - Theme: Move token structure descriptions into tokens document (https://github.com/WordPress/gutenberg/pull/78438) - Fix persistCRDTDoc minimal save payload (https://github.com/WordPress/gutenberg/pull/77050) - useDialog: handle Escape via React `onKeyDown` so cascade works through portals (https://github.com/WordPress/gutenberg/pull/78433) - Fix inconsistencies in feature selector processing part 1: global styles (https://github.com/WordPress/gutenberg/pull/78276) - Media: Add undo snackbar for media editor image edits (https://github.com/WordPress/gutenberg/pull/78425) - Media Fields: Fix filename truncation with Tooltip (https://github.com/WordPress/gutenberg/pull/78453) - Media Editor Modal: Fix unexpected tab stop on date fields in the Details sidebar (https://github.com/WordPress/gutenberg/pull/78454) - Add experiment to show admin bar in Post and Site Editor (https://github.com/WordPress/gutenberg/pull/77964) - Visually align `Notice` from `@wordpress/components` with `Notice` from `@wordpress/ui` (https://github.com/WordPress/gutenberg/pull/78231) - Widgets: Declare dependencies in a per-widget package.json (https://github.com/WordPress/gutenberg/pull/78463) - Grid: don't allow resizing tile beyond min row height or column width (https://github.com/WordPress/gutenberg/pull/78402) - UI Autocomplete: Fix prop types (https://github.com/WordPress/gutenberg/pull/78450) - @wordpress/ui: Compat overlay slot — viewport-sized containing block (https://github.com/WordPress/gutenberg/pull/78441) - Fix image upload crashes (https://github.com/WordPress/gutenberg/pull/76707) - Theme: Add Tokens "Introduction" Storybook page (https://github.com/WordPress/gutenberg/pull/78449) - Blocks: Share window listeners across instances (block props, rich text, ...) (https://github.com/WordPress/gutenberg/pull/78310) - UI Button: Fix disabled cursor style (https://github.com/WordPress/gutenberg/pull/78479) - Add welcome dashboard widget with adaptive layout and content (https://github.com/WordPress/gutenberg/pull/78461) - Responsive block instance styles (https://github.com/WordPress/gutenberg/pull/78384) - REST: Guard `setAccessible()` behind PHP < 8.1 in block-editor settings controller (https://github.com/WordPress/gutenberg/pull/78478) - Docs: Update iframe editor migration guide for WordPress 7.0/7.1 (https://github.com/WordPress/gutenberg/pull/78401) - Fix inconsistencies in feature selector processing part 2: pseudo block instances (https://github.com/WordPress/gutenberg/pull/78326) - Media Editor Experiments: Tidy up by removing old pathways to the media editor experiment (https://github.com/WordPress/gutenberg/pull/78489) - Compose: Simplify subscribeDelegatedListener root detection (https://github.com/WordPress/gutenberg/pull/78492) - Dashboard: use Page hasPadding prop for content spacing (https://github.com/WordPress/gutenberg/pull/78469) - Grid: hide resize handles and actions while on tile is resizing (https://github.com/WordPress/gutenberg/pull/78391) - Dashboard Widgets: Add content-bleed presentation variant (https://github.com/WordPress/gutenberg/pull/78491) - Dashboard: forbid non-module stylesheets in experimental, new widgets (https://github.com/WordPress/gutenberg/pull/78496) - Revisions: Increase diff marker stripe contrast to 75% primary color proportion (https://github.com/WordPress/gutenberg/pull/78473) - Fix flaky e2e test with dataview kbd navigation (https://github.com/WordPress/gutenberg/pull/78503) - Theme: Update color space registration to avoid side effects (https://github.com/WordPress/gutenberg/pull/77653) - Move PHP Sync Issue Generator file to @wordpress/release-tools (https://github.com/WordPress/gutenberg/pull/78456) - ESLint: Support private API component denylist (https://github.com/WordPress/gutenberg/pull/78451) - Widgets: Add TypeScript project config (https://github.com/WordPress/gutenberg/pull/78467) - Dashboard: small changes to header (https://github.com/WordPress/gutenberg/pull/78513) - Edit post: consume preload cache before React mount (https://github.com/WordPress/gutenberg/pull/78508) - Vips: Remove dead batchResizeImage and vipsBatchResizeImage exports (https://github.com/WordPress/gutenberg/pull/77975) - Automated Testing: Enable concurrency for ESLint (https://github.com/WordPress/gutenberg/pull/78360) - Simplify component ESLint rules and extend to routes/widgets (https://github.com/WordPress/gutenberg/pull/78519) - Image editor: remove unnecessary __nextHasNoMarginBottom prop (https://github.com/WordPress/gutenberg/pull/78530) - RTC: Limit CRDT meta data to REST API edit context (https://github.com/WordPress/gutenberg/pull/78531). - Update plugin release docs and edit for clarity. (https://github.com/WordPress/gutenberg/pull/78537) - Updated the BlockAttribute typedef to allow for multi-type attributes (https://github.com/WordPress/gutenberg/pull/78517) - Refactor media editor crop state into composite reducer (https://github.com/WordPress/gutenberg/pull/78480) - Navigation: Restore block_core_navigation_submenu_render_submenu_icon() as deprecated shim (https://github.com/WordPress/gutenberg/pull/78484) - Font Library: clarify active variant state in Library tab (https://github.com/WordPress/gutenberg/pull/78501) - Guard PHP unit test to avoid failures on old wp versions (https://github.com/WordPress/gutenberg/pull/78547) - Fix block preview for responsive style states (https://github.com/WordPress/gutenberg/pull/78538) - Breadcrumbs block: Hide separator from screen readers (https://github.com/WordPress/gutenberg/pull/78524) - Preload: Backport user global styles entry for classic themes on WP 6.9 (https://github.com/WordPress/gutenberg/pull/78546) - Guidelines: Refine access policy (https://github.com/WordPress/gutenberg/pull/78296) - Fix flaky media upload save lock test (https://github.com/WordPress/gutenberg/pull/78544) - Add `Quick post` widget (https://github.com/WordPress/gutenberg/pull/78408) - Tooltip migration: block-editor + block-directory consumers (1/5) (https://github.com/WordPress/gutenberg/pull/78411) - Navigation: Hard deprecate component (https://github.com/WordPress/gutenberg/pull/78529) - Post Taxonomies: Drop redundant `per_page: -1` from taxonomy queries (https://github.com/WordPress/gutenberg/pull/78569) - Dashboard: add elevation to widget actionable area (https://github.com/WordPress/gutenberg/pull/78563) - Add dashboard Activity widget (https://github.com/WordPress/gutenberg/pull/78552) - Components: Remove deprecated `__experimentalApplyValueToSides` export (https://github.com/WordPress/gutenberg/pull/78528) - IconButton: Fix `focusableWhenDisabled` default (https://github.com/WordPress/gutenberg/pull/78526) - Add cherry-pick script and update release tools in package.json (https://github.com/WordPress/gutenberg/pull/78560) - Theme: Remove and prevent dependency grouping comments (https://github.com/WordPress/gutenberg/pull/78573) - Dashboard: per-instance widget settings drawer (https://github.com/WordPress/gutenberg/pull/78465) - Dashboard Widgets: Adapt Quick Draft to its tile size with a recent drafts list (https://github.com/WordPress/gutenberg/pull/78572) - Add dashboard Site Preview widget (https://github.com/WordPress/gutenberg/pull/78556) - Edit Post Preload: Cover remaining bound GET/OPTIONS requests on load (https://github.com/WordPress/gutenberg/pull/78565) - Several improvements to the Dependabot configuration (https://github.com/WordPress/gutenberg/pull/78536) - Fix: Disable collab sync when incompatible meta boxes are present. (https://github.com/WordPress/gutenberg/pull/78145) - Bump the github-actions group across 2 directories with 6 updates (https://github.com/WordPress/gutenberg/pull/78585) - Editor / Block Editor: Lazy-fetch user pattern categories (https://github.com/WordPress/gutenberg/pull/78568) - RTC: Fix every update block refresh when a peer edits with in the code editor (https://github.com/WordPress/gutenberg/pull/78483) - Edit Post: Hoist setupEditor to run before root.render (https://github.com/WordPress/gutenberg/pull/78581) - Automated Testing: Fix and use built-in mechanism for flagging unused disables (https://github.com/WordPress/gutenberg/pull/78313) - Remove dependency used for counting available CPUs (https://github.com/WordPress/gutenberg/pull/78593) - ESLint: Restrict deprecated __nextHasNoMarginBottom prop (https://github.com/WordPress/gutenberg/pull/78579) - Reset zoom level on component unmount (https://github.com/WordPress/gutenberg/pull/69087) - Add missing package file to the site preview widget (https://github.com/WordPress/gutenberg/pull/78583) - Add dashboard Site Health widget (https://github.com/WordPress/gutenberg/pull/78555) - fix: discard unsaved HTML block changes on cancel (https://github.com/WordPress/gutenberg/pull/78580) - Global styles revisions: ensure stylebook shows revision previews (https://github.com/WordPress/gutenberg/pull/78490) - Docs: Update media editor documentation (https://github.com/WordPress/gutenberg/pull/78617) - RTC: Fix Edit/Join row action invisible on mobile in post list (https://github.com/WordPress/gutenberg/pull/78597) - Grid: animate tile removals (https://github.com/WordPress/gutenberg/pull/78542) - Paste: keep `<img>` inside `<a>` when pasting plain-text HTML (https://github.com/WordPress/gutenberg/pull/78015) - Deduplicate useGlobalStyles hook code (https://github.com/WordPress/gutenberg/pull/78577) - Dashboard: add command palette commands (https://github.com/WordPress/gutenberg/pull/78429) - Docs: Add Workspace Development guide (https://github.com/WordPress/gutenberg/pull/78615) - add default widget instances to dashboard (https://github.com/WordPress/gutenberg/pull/78622) - scale widget picker preview to fill slot (https://github.com/WordPress/gutenberg/pull/78602) - Welcome widget: draw the version number in the banner (https://github.com/WordPress/gutenberg/pull/78611) - Classic Block: Use `get_post()` in `wp_declare_classic_block_necessary` (https://github.com/WordPress/gutenberg/pull/78613) - fix widget content overflowing its grid tile (https://github.com/WordPress/gutenberg/pull/78627) - Fix: Register user-defined taxonomies after user-defined post types (https://github.com/WordPress/gutenberg/pull/78497) - Image: Preserve width/height when converting Classic blocks to blocks (https://github.com/WordPress/gutenberg/pull/78610) - Dashboard: mobile improvements (https://github.com/WordPress/gutenberg/pull/78522) - Grid & Dashboard: polish dashboard drag preview motion, elevation, and drop exit (https://github.com/WordPress/gutenberg/pull/78348) - Welcome widget: add a subtle shine to the version digits (https://github.com/WordPress/gutenberg/pull/78626) - WP Editor Meta Box e2e: wait for TinyMCE init (https://github.com/WordPress/gutenberg/pull/78631) - Quick Draft widget: layout, empty state, and style refinements (https://github.com/WordPress/gutenberg/pull/78601) - Dashboard: Refine widget actionable area toolbar styling (https://github.com/WordPress/gutenberg/pull/78578) - Components: Add Badge text overflow e2e story (https://github.com/WordPress/gutenberg/pull/78589) - UI: Update Autocomplete clear disabled state (https://github.com/WordPress/gutenberg/pull/78520) - Dashboard: tune default grid settings and starter layout (https://github.com/WordPress/gutenberg/pull/78633) - RangeControl: Remove erroneous `icon` prop from web types (https://github.com/WordPress/gutenberg/pull/78444) - UI: Add Button variant states e2e story (https://github.com/WordPress/gutenberg/pull/78634) - DataViews: Fix wrapper height resolution in flex layouts (https://github.com/WordPress/gutenberg/pull/76945) - Tooltip migration: editor + edit-post + edit-site consumers (2/5) (https://github.com/WordPress/gutenberg/pull/78466) - Add dashboard News widget (https://github.com/WordPress/gutenberg/pull/78554) - Add support for layout responsive styles (https://github.com/WordPress/gutenberg/pull/78543) - Build Tools: Move build scripts to `@wordpress/build-scripts` workspace package (https://github.com/WordPress/gutenberg/pull/78509) - Dashboard: fix widget rendering on the masonry grid (https://github.com/WordPress/gutenberg/pull/78645) - Tooltip migration: dataviews consumers (3/5) (https://github.com/WordPress/gutenberg/pull/78470) - Upgrade to React 19 (https://github.com/WordPress/gutenberg/pull/61521) - Dashboard: use fully-specified fast-deep-equal import (https://github.com/WordPress/gutenberg/pull/78660) - Hide block variation selector when style state is selected (https://github.com/WordPress/gutenberg/pull/78658) - Migrate `create-test-block.sh` to `@wordpress/validation-tools` workspace (https://github.com/WordPress/gutenberg/pull/78665) - Docs: Mark React Native mobile editor as unmaintained on trunk after React 19 upgrade (https://github.com/WordPress/gutenberg/pull/78673) - Dashboard: URL bar in site preview widget (https://github.com/WordPress/gutenberg/pull/78656) - UI Button: Fix pressed disabled styles for neutral minimal (https://github.com/WordPress/gutenberg/pull/78635) - Dashboard: prevent pointer events in widget selection (https://github.com/WordPress/gutenberg/pull/78681) - Block Inserter: Animate inserter button icon to signal open state. (https://github.com/WordPress/gutenberg/pull/78306) - Guidelines: Add data-slug attribute to settings list items (https://github.com/WordPress/gutenberg/pull/78676) - Validate additional CSS on mount (https://github.com/WordPress/gutenberg/pull/78682) - Move @emotion deps out of root package.json (https://github.com/WordPress/gutenberg/pull/78687) - Media Editor Modal: Tighten labels for crop handles toggle (https://github.com/WordPress/gutenberg/pull/78703) - Media Editor: make the modal the default crop experience (https://github.com/WordPress/gutenberg/pull/78653) - Media Editor Modal: Update the rotation ruler to use a vertical line marker (https://github.com/WordPress/gutenberg/pull/78704) - Hide image dimension tools when a state is selected (https://github.com/WordPress/gutenberg/pull/78670) - Image cropper: round zoom control values and display as percentages (https://github.com/WordPress/gutenberg/pull/78757) - Media Editor Modal: Try placing the save and cancel buttons in the footer (https://github.com/WordPress/gutenberg/pull/78708) - Unset grid span defaults with viewport states enabled (https://github.com/WordPress/gutenberg/pull/78709) - Media Editor: Remove resize handles toggle from crop panel (https://github.com/WordPress/gutenberg/pull/78758) - Image Editor: focus return after closing image crop modal (https://github.com/WordPress/gutenberg/pull/78711) - Tests: Temporarily disable REST index output-format assertions (https://github.com/WordPress/gutenberg/pull/78788) - Hide Cover overlay controls for viewport states (https://github.com/WordPress/gutenberg/pull/78763) - Update browserslist (https://github.com/WordPress/gutenberg/pull/78840) - e2e-test-utils-playwright: add src to published NPM files (https://github.com/WordPress/gutenberg/pull/78847) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65560. git-svn-id: https://develop.svn.wordpress.org/trunk@62583 602fd350-edb4-49c9-b593-d223f7449a82 --- package.json | 2 +- .../assets/script-loader-packages.php | 136 ++-- .../assets/script-modules-packages.php | 16 +- src/wp-includes/blocks/blocks-json.php | 11 + src/wp-includes/blocks/home-link.php | 16 +- src/wp-includes/blocks/home-link/block.json | 7 + src/wp-includes/blocks/image.php | 2 +- src/wp-includes/blocks/image/block.json | 4 + src/wp-includes/blocks/navigation-submenu.php | 13 + src/wp-includes/build/constants.php | 2 +- .../pages/font-library/page-wp-admin.php | 29 +- .../options-connectors/page-wp-admin.php | 29 +- .../build/routes/connectors-home/content.js | 630 +++++++++++------- .../connectors-home/content.min.asset.php | 2 +- .../routes/connectors-home/content.min.js | 2 +- .../build/routes/font-list/content.js | 19 +- .../routes/font-list/content.min.asset.php | 2 +- .../build/routes/font-list/content.min.js | 6 +- 18 files changed, 585 insertions(+), 343 deletions(-) diff --git a/package.json b/package.json index a976b26ea37ad..cc7422d42ef1b 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://develop.svn.wordpress.org/trunk" }, "gutenberg": { - "sha": "d5ac60e6118060529737127d44a6fdc8abf57eb9", + "sha": "14db4ab9395a9e96430eed678e4288a59eecbd15", "ghcrRepo": "WordPress/gutenberg/gutenberg-wp-develop-build" }, "engines": { diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php index 50e8794c491c2..68eb83ca50259 100644 --- a/src/wp-includes/assets/script-loader-packages.php +++ b/src/wp-includes/assets/script-loader-packages.php @@ -4,7 +4,7 @@ 'wp-dom-ready', 'wp-i18n' ), - 'version' => '483af07a6016f640f456' + 'version' => 'fcf6721cc81dbcc7cb4c' ), 'annotations.js' => array( 'dependencies' => array( @@ -13,32 +13,33 @@ 'wp-i18n', 'wp-rich-text' ), - 'version' => 'd4fe1eeb787c2fd5ee89' + 'version' => '4890cce18af9c7b2cff7' ), 'api-fetch.js' => array( 'dependencies' => array( 'wp-i18n', + 'wp-private-apis', 'wp-url' ), - 'version' => 'b76aeca1c88ecc790e48' + 'version' => '908b760f8cecb1dac3e2' ), 'autop.js' => array( 'dependencies' => array( ), - 'version' => '9d0d0901b46f0a9027c9' + 'version' => '8bcfa39099f75174e47f' ), 'base-styles.js' => array( 'dependencies' => array( ), - 'version' => '8ebe97b095beb7e9279b' + 'version' => '534d03c4d98549e6f3ac' ), 'blob.js' => array( 'dependencies' => array( ), - 'version' => '198af75fe06d924090d8' + 'version' => '36f5095d3e75fc266d24' ), 'block-directory.js' => array( 'dependencies' => array( @@ -65,7 +66,7 @@ 'wp-theme', 'wp-url' ), - 'version' => '43a9d7ab2fbaa04615a1' + 'version' => 'e3668608ce66d220bdba' ), 'block-editor.js' => array( 'dependencies' => array( @@ -103,7 +104,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '5a398d1da02bf80f3f98' + 'version' => '8734d6b886270cd24cb1' ), 'block-library.js' => array( 'dependencies' => array( @@ -148,19 +149,19 @@ 'import' => 'dynamic' ) ), - 'version' => '9c1171e882b2ba2f7411' + 'version' => 'f4ce0374a285364d8e28' ), 'block-serialization-default-parser.js' => array( 'dependencies' => array( ), - 'version' => 'bff55bd3f1ce9df0c99c' + 'version' => '9f925ec37fe0ec021ac2' ), 'block-serialization-spec-parser.js' => array( 'dependencies' => array( ), - 'version' => '9ebc5e95e1de1cabd1e6' + 'version' => '23146319d073f10647ab' ), 'blocks.js' => array( 'dependencies' => array( @@ -181,7 +182,7 @@ 'wp-shortcode', 'wp-warning' ), - 'version' => 'ece1f172d5b708916ebc' + 'version' => 'f4a5cd2440113e1f29d1' ), 'commands.js' => array( 'dependencies' => array( @@ -197,7 +198,7 @@ 'wp-primitives', 'wp-private-apis' ), - 'version' => '8b8663311faa33540c1b' + 'version' => '28baf08aaedb912f7881' ), 'components.js' => array( 'dependencies' => array( @@ -219,9 +220,10 @@ 'wp-primitives', 'wp-private-apis', 'wp-rich-text', + 'wp-theme', 'wp-warning' ), - 'version' => '83936472a0d07a3a4c92' + 'version' => '4e3661d1128d5fbe846c' ), 'compose.js' => array( 'dependencies' => array( @@ -233,9 +235,10 @@ 'wp-is-shallow-equal', 'wp-keycodes', 'wp-priority-queue', + 'wp-private-apis', 'wp-undo-manager' ), - 'version' => '2b5a9d090a41c1120be7' + 'version' => 'd2b32325fa3cd394f20a' ), 'core-commands.js' => array( 'dependencies' => array( @@ -252,7 +255,7 @@ 'wp-router', 'wp-url' ), - 'version' => 'c5adbb84012bd7834c04' + 'version' => 'adfb03e72a6284e81a0a' ), 'core-data.js' => array( 'dependencies' => array( @@ -273,7 +276,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '21fd0114d22869dbe459' + 'version' => '34cc32ede754e650311c' ), 'customize-widgets.js' => array( 'dependencies' => array( @@ -302,7 +305,7 @@ 'wp-theme', 'wp-widgets' ), - 'version' => '4da0091c281df82bd222' + 'version' => 'c7699f8b9a9b894aa44f' ), 'data.js' => array( 'dependencies' => array( @@ -315,7 +318,7 @@ 'wp-private-apis', 'wp-redux-routine' ), - 'version' => 'ee4e907a070c9780da2b' + 'version' => '1e1f56991c684ecfa9b5' ), 'data-controls.js' => array( 'dependencies' => array( @@ -323,32 +326,32 @@ 'wp-data', 'wp-deprecated' ), - 'version' => '730061ade69d7f341014' + 'version' => '7c5523ccc35ca51b1612' ), 'date.js' => array( 'dependencies' => array( 'moment', 'wp-deprecated' ), - 'version' => '2faaf49020b2074de156' + 'version' => '56c0df1810475be9c003' ), 'deprecated.js' => array( 'dependencies' => array( 'wp-hooks' ), - 'version' => '990e85f234fee8f7d446' + 'version' => '039c87cfdc49dc9ebaee' ), 'dom.js' => array( 'dependencies' => array( 'wp-deprecated' ), - 'version' => '1acdd4ebd6969685a9d3' + 'version' => '9c9013033c069dba635b' ), 'dom-ready.js' => array( 'dependencies' => array( ), - 'version' => 'a06281ae5cf5500e9317' + 'version' => '2109e6d8d6b85110c2e1' ), 'edit-post.js' => array( 'dependencies' => array( @@ -392,7 +395,7 @@ 'import' => 'static' ) ), - 'version' => 'e5a1146f8586938ade23' + 'version' => 'bf8943e7dfdd79e59fd6' ), 'edit-site.js' => array( 'dependencies' => array( @@ -441,7 +444,7 @@ 'import' => 'static' ) ), - 'version' => '25ce07d8e96c49452e7a' + 'version' => '7b6145d7696dd4b09737' ), 'edit-widgets.js' => array( 'dependencies' => array( @@ -482,7 +485,7 @@ 'import' => 'static' ) ), - 'version' => '3382b8166d24bc8ebc42' + 'version' => 'faa74e652cf98a61859c' ), 'editor.js' => array( 'dependencies' => array( @@ -532,21 +535,22 @@ 'import' => 'static' ) ), - 'version' => '3e365e98ba94f24ff5cf' + 'version' => '297c4f04ae33b54955ca' ), 'element.js' => array( 'dependencies' => array( 'react', 'react-dom', + 'wp-deprecated', 'wp-escape-html' ), - 'version' => 'ce395381f7d64d2a6d71' + 'version' => '94fbaad7527a82fadfdb' ), 'escape-html.js' => array( 'dependencies' => array( ), - 'version' => '3f093e5cca67aa0f8b56' + 'version' => 'f6c90ca9eb0b2ade8525' ), 'format-library.js' => array( 'dependencies' => array( @@ -573,31 +577,31 @@ 'import' => 'dynamic' ) ), - 'version' => 'b38d376fe79b3eac1578' + 'version' => '5eddf2ad1f670af962a7' ), 'hooks.js' => array( 'dependencies' => array( ), - 'version' => '7496969728ca0f95732d' + 'version' => 'ba8576df586de61e43dd' ), 'html-entities.js' => array( 'dependencies' => array( ), - 'version' => '8c6fa5b869dfeadc4af2' + 'version' => '6639fe16c26bf584092a' ), 'i18n.js' => array( 'dependencies' => array( 'wp-hooks' ), - 'version' => '125448662852c5e18937' + 'version' => 'cf342c5f7668cb788dd6' ), 'is-shallow-equal.js' => array( 'dependencies' => array( ), - 'version' => '5d84b9f3cb50d2ce7d04' + 'version' => 'c10573b39b145ad52de8' ), 'keyboard-shortcuts.js' => array( 'dependencies' => array( @@ -606,13 +610,13 @@ 'wp-element', 'wp-keycodes' ), - 'version' => '0dd268b2132a3f82b1d4' + 'version' => '692235325fdbc6b7827a' ), 'keycodes.js' => array( 'dependencies' => array( 'wp-i18n' ), - 'version' => 'aa1a141e3468afe7f852' + 'version' => '03c771bccf8cd94e7bf2' ), 'list-reusable-blocks.js' => array( 'dependencies' => array( @@ -624,7 +628,7 @@ 'wp-element', 'wp-i18n' ), - 'version' => 'a44da9be02cdfef6e44d' + 'version' => '823632e44c0d5da68907' ), 'media-utils.js' => array( 'dependencies' => array( @@ -651,7 +655,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '597bd2b6e79b271e52c7' + 'version' => '8779c2f40074e16799fd' ), 'notices.js' => array( 'dependencies' => array( @@ -659,7 +663,7 @@ 'wp-components', 'wp-data' ), - 'version' => '1869781df3f0e4f0c6b8' + 'version' => '917351f71ee3fe2cb31e' ), 'nux.js' => array( 'dependencies' => array( @@ -672,7 +676,7 @@ 'wp-i18n', 'wp-primitives' ), - 'version' => 'ee8845ac5a9ad98ee3f7' + 'version' => 'cb03c4a931dadcb071ad' ), 'patterns.js' => array( 'dependencies' => array( @@ -692,7 +696,7 @@ 'wp-private-apis', 'wp-url' ), - 'version' => '714c49ed2942c98d088f' + 'version' => 'e1bf4bcb6c8368a1e201' ), 'plugins.js' => array( 'dependencies' => array( @@ -704,7 +708,7 @@ 'wp-is-shallow-equal', 'wp-primitives' ), - 'version' => '9bce3a8f6306f5380b9a' + 'version' => '5593b4af0066d1e56545' ), 'preferences.js' => array( 'dependencies' => array( @@ -720,32 +724,32 @@ 'wp-primitives', 'wp-private-apis' ), - 'version' => '6595a0115a9c144c0f3a' + 'version' => '4770913d33bab775d31d' ), 'preferences-persistence.js' => array( 'dependencies' => array( 'wp-api-fetch' ), - 'version' => 'e8033be98338d1861bca' + 'version' => 'c02ed55f24a03cff856f' ), 'primitives.js' => array( 'dependencies' => array( 'react-jsx-runtime', 'wp-element' ), - 'version' => 'a5c905ec27bcd76ef287' + 'version' => 'feacea34d534e03dfe7b' ), 'priority-queue.js' => array( 'dependencies' => array( ), - 'version' => '1f0e89e247bc0bd3f9b9' + 'version' => '6249843c310fb0f4c2d5' ), 'private-apis.js' => array( 'dependencies' => array( ), - 'version' => 'ebe55c7ec838043537c7' + 'version' => '8571ef20e035b1194567' ), 'react-i18n.js' => array( 'dependencies' => array( @@ -753,13 +757,13 @@ 'wp-element', 'wp-i18n' ), - 'version' => '9b74577dbd7e50f6b77b' + 'version' => 'c8381a0f1b9c8f4c16e2' ), 'redux-routine.js' => array( 'dependencies' => array( ), - 'version' => '64f9f5001aabc046c605' + 'version' => '5c06ff6ae58b95bd35b1' ), 'reusable-blocks.js' => array( 'dependencies' => array( @@ -775,7 +779,7 @@ 'wp-primitives', 'wp-url' ), - 'version' => '372c845659b9a298e4fb' + 'version' => '845bf300466d158d6590' ), 'rich-text.js' => array( 'dependencies' => array( @@ -790,7 +794,7 @@ 'wp-keycodes', 'wp-private-apis' ), - 'version' => '1b3e411a54ef29d2bf7a' + 'version' => '903b225e25e9ebe0b950' ), 'router.js' => array( 'dependencies' => array( @@ -800,7 +804,7 @@ 'wp-private-apis', 'wp-url' ), - 'version' => '0249e6724784b1c2583b' + 'version' => '3aedf56b85f9bd271c2a' ), 'server-side-render.js' => array( 'dependencies' => array( @@ -814,19 +818,19 @@ 'wp-i18n', 'wp-url' ), - 'version' => '10a51bf05ced35b78092' + 'version' => 'ab9bb82bd793d93e0357' ), 'shortcode.js' => array( 'dependencies' => array( ), - 'version' => '11742fe18cc215d3d5ab' + 'version' => 'a3ab4684e676fce66298' ), 'style-engine.js' => array( 'dependencies' => array( ), - 'version' => '10a88969c2fbccc89f91' + 'version' => '22d526c0e640775bff61' ), 'sync.js' => array( 'dependencies' => array( @@ -834,7 +838,7 @@ 'wp-hooks', 'wp-private-apis' ), - 'version' => '63df27e4e1555a2ed89e' + 'version' => 'b63f7b87a251db85fd94' ), 'theme.js' => array( 'dependencies' => array( @@ -842,19 +846,19 @@ 'wp-element', 'wp-private-apis' ), - 'version' => '3b1949512f2ec0c938bd' + 'version' => 'd7dfbaed0fa14cf69398' ), 'token-list.js' => array( 'dependencies' => array( ), - 'version' => '16f0aebdd39d87c2a84b' + 'version' => '8269785404c75dcfbc85' ), 'undo-manager.js' => array( 'dependencies' => array( 'wp-is-shallow-equal' ), - 'version' => '27bb0ae036a2c9d4a1b5' + 'version' => '1c629dcc3969852bf08f' ), 'upload-media.js' => array( 'dependencies' => array( @@ -873,13 +877,13 @@ 'import' => 'dynamic' ) ), - 'version' => '1399274c1ad48fc29498' + 'version' => '8fdb1414fce1fa61de7e' ), 'url.js' => array( 'dependencies' => array( ), - 'version' => '9dd5f16a5ce37bf4ba2c' + 'version' => '9f8919f385a1393af24d' ), 'viewport.js' => array( 'dependencies' => array( @@ -887,13 +891,13 @@ 'wp-data', 'wp-element' ), - 'version' => '97845df4d1a7269c5c2b' + 'version' => '75c93ee6116afdc602fd' ), 'warning.js' => array( 'dependencies' => array( ), - 'version' => '36fdbdc984d93aee8a97' + 'version' => '7398c7f00cc7d8469e22' ), 'widgets.js' => array( 'dependencies' => array( @@ -910,12 +914,12 @@ 'wp-notices', 'wp-primitives' ), - 'version' => '3ab93e442c755a6b2b4e' + 'version' => '3bdcff96f81157b799e1' ), 'wordcount.js' => array( 'dependencies' => array( ), - 'version' => '3b928d5db8724a8614dd' + 'version' => 'dfb0120218281ee827f8' ) ); \ No newline at end of file diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php index 2c6038198b9fe..3f49e7b23ab16 100644 --- a/src/wp-includes/assets/script-modules-packages.php +++ b/src/wp-includes/assets/script-modules-packages.php @@ -166,7 +166,7 @@ 'import' => 'static' ) ), - 'version' => '5e02fdb03b9e05e7ba82' + 'version' => '7b98331334f7756a5210' ), 'connectors/index.js' => array( 'dependencies' => array( @@ -212,7 +212,7 @@ 'import' => 'static' ) ), - 'version' => '9a35d0da8badd6a33cf8' + 'version' => '5fde95653aecf285d659' ), 'core-abilities/index.js' => array( 'dependencies' => array( @@ -225,7 +225,7 @@ 'import' => 'static' ) ), - 'version' => '012760fd849397dd0031' + 'version' => 'ed8d088084da397754c1' ), 'edit-site-init/index.js' => array( 'dependencies' => array( @@ -308,7 +308,7 @@ 'wp-private-apis', 'wp-style-engine' ), - 'version' => '8bd91519756b243fc835' + 'version' => 'e9a1d3da960d762c5954' ), 'route/index.js' => array( 'dependencies' => array( @@ -335,7 +335,7 @@ 'dependencies' => array( ), - 'version' => 'de1b94d254f242c2192e' + 'version' => '7ba90481a9cc1776ce7a' ), 'workflow/index.js' => array( 'dependencies' => array( @@ -354,8 +354,12 @@ array( 'id' => '@wordpress/abilities', 'import' => 'static' + ), + array( + 'id' => '@wordpress/core-abilities', + 'import' => 'static' ) ), - 'version' => 'c1055ffa9d3634a7dfe7' + 'version' => 'c5983b82ce036952b349' ) ); \ No newline at end of file diff --git a/src/wp-includes/blocks/blocks-json.php b/src/wp-includes/blocks/blocks-json.php index e35268ffe6c74..1f61f615b6dfa 100644 --- a/src/wp-includes/blocks/blocks-json.php +++ b/src/wp-includes/blocks/blocks-json.php @@ -3048,6 +3048,13 @@ 'label' => array( 'type' => 'string', 'role' => 'content' + ), + 'opensInNewTab' => array( + 'type' => 'boolean', + 'default' => false + ), + 'description' => array( + 'type' => 'string' ) ), 'usesContext' => array( @@ -3305,6 +3312,10 @@ 'source' => 'attribute', 'selector' => 'figure > a', 'attribute' => 'target' + ), + 'isDecorative' => array( + 'type' => 'boolean', + 'default' => false ) ), 'supports' => array( diff --git a/src/wp-includes/blocks/home-link.php b/src/wp-includes/blocks/home-link.php index 7ae02ed266f0b..beab1e7b9f011 100644 --- a/src/wp-includes/blocks/home-link.php +++ b/src/wp-includes/blocks/home-link.php @@ -129,12 +129,24 @@ function render_block_core_home_link( $attributes, $content, $block ) { $aria_current = ' aria-current="page"'; } + $target = ''; + if ( isset( $attributes['opensInNewTab'] ) && true === $attributes['opensInNewTab'] ) { + $target = ' target="_blank"'; + } + + $description = ''; + if ( ! empty( $attributes['description'] ) ) { + $description = '<span class="wp-block-navigation-item__description">' . wp_kses_post( $attributes['description'] ) . '</span>'; + } + return sprintf( - '<li %1$s><a class="wp-block-home-link__content wp-block-navigation-item__content" href="%2$s" rel="home"%3$s>%4$s</a></li>', + '<li %1$s><a class="wp-block-home-link__content wp-block-navigation-item__content" href="%2$s" rel="home" %3$s%4$s>%5$s%6$s</a></li>', block_core_home_link_build_li_wrapper_attributes( $block->context ), esc_url( home_url() ), + $target, $aria_current, - wp_kses_post( $attributes['label'] ) + wp_kses_post( $attributes['label'] ), + $description ); } diff --git a/src/wp-includes/blocks/home-link/block.json b/src/wp-includes/blocks/home-link/block.json index 42652ba9b72ca..a2efb056469cd 100644 --- a/src/wp-includes/blocks/home-link/block.json +++ b/src/wp-includes/blocks/home-link/block.json @@ -11,6 +11,13 @@ "label": { "type": "string", "role": "content" + }, + "opensInNewTab": { + "type": "boolean", + "default": false + }, + "description": { + "type": "string" } }, "usesContext": [ diff --git a/src/wp-includes/blocks/image.php b/src/wp-includes/blocks/image.php index 22b0ecc2aea33..cedd35abc1d88 100644 --- a/src/wp-includes/blocks/image.php +++ b/src/wp-includes/blocks/image.php @@ -250,7 +250,7 @@ function block_core_image_render_lightbox( $block_content, $block, $block_instan 'galleryId' => $block_instance->context['galleryId'] ?? null, 'customAriaLabel' => $custom_aria_label ?? null, 'navigationButtonType' => $block_instance->context['navigationButtonType'] ?? 'icon', - 'triggerButtonAriaLabel' => null, + 'triggerButtonAriaLabel' => __( 'Enlarge' ), ), ), ) diff --git a/src/wp-includes/blocks/image/block.json b/src/wp-includes/blocks/image/block.json index 66a4fac4a3023..31c4873fe3b7a 100644 --- a/src/wp-includes/blocks/image/block.json +++ b/src/wp-includes/blocks/image/block.json @@ -105,6 +105,10 @@ "source": "attribute", "selector": "figure > a", "attribute": "target" + }, + "isDecorative": { + "type": "boolean", + "default": false } }, "supports": { diff --git a/src/wp-includes/blocks/navigation-submenu.php b/src/wp-includes/blocks/navigation-submenu.php index 2677988707836..6990de1813d7a 100644 --- a/src/wp-includes/blocks/navigation-submenu.php +++ b/src/wp-includes/blocks/navigation-submenu.php @@ -9,6 +9,19 @@ require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; +/** + * Renders the submenu icon SVG for the Navigation Submenu block. + * + * @since 5.9.0 + * @deprecated 7.0.0 Use block_core_shared_navigation_render_submenu_icon() instead. + * + * @return string SVG markup for the submenu icon. + */ +function block_core_navigation_submenu_render_submenu_icon() { + _deprecated_function( __FUNCTION__, '7.0.0', 'block_core_shared_navigation_render_submenu_icon()' ); + return block_core_shared_navigation_render_submenu_icon(); +} + /** * Returns the submenu visibility value with backward compatibility * for the deprecated openSubmenusOnClick attribute. diff --git a/src/wp-includes/build/constants.php b/src/wp-includes/build/constants.php index 09f9b1d22697a..a46c20b7301e6 100644 --- a/src/wp-includes/build/constants.php +++ b/src/wp-includes/build/constants.php @@ -9,6 +9,6 @@ */ return array( - 'version' => '23.2.0', + 'version' => '23.3.0', 'build_url' => includes_url( 'build/' ), ); diff --git a/src/wp-includes/build/pages/font-library/page-wp-admin.php b/src/wp-includes/build/pages/font-library/page-wp-admin.php index aa54ca9045668..9bb35621d7d33 100644 --- a/src/wp-includes/build/pages/font-library/page-wp-admin.php +++ b/src/wp-includes/build/pages/font-library/page-wp-admin.php @@ -153,12 +153,35 @@ function wp_font_library_wp_admin_enqueue_scripts( $hook_suffix ) { // 2. It initializes the boot module as an inline script. wp_register_script( 'font-library-wp-admin-prerequisites', '', $asset['dependencies'], $asset['version'], true ); - // Add inline script to initialize the app using initSinglePage (no menuItems) + /* + * Add inline script to initialize the app using initSinglePage (no menuItems). + * The dynamic import is deferred until DOMContentLoaded so that all classic + * script dependencies of @wordpress/boot (wp-private-apis, wp-components, + * wp-theme, etc.) have finished parsing and executing before the boot module + * evaluates. Otherwise, a modulepreloaded @wordpress/boot can win the race + * against the classic-script-printing pass on fast CDN-fronted hosts in + * Chrome, evaluating before wp.theme.privateApis is defined and throwing + * "Cannot unlock an undefined object". See <https://core.trac.wordpress.org/ticket/65103>. + */ + $init_js_function = <<<'JS' + ( mountId, routes ) => { + const run = async () => { + const mod = await import( "@wordpress/boot" ); + mod.initSinglePage( { mountId, routes } ); + }; + if ( document.readyState === "loading" ) { + document.addEventListener( "DOMContentLoaded", run ); + } else { + run(); + } + } + JS; wp_add_inline_script( 'font-library-wp-admin-prerequisites', sprintf( - 'import("@wordpress/boot").then(mod => mod.initSinglePage({mountId: "%s", routes: %s}));', - 'font-library-wp-admin-app', + '( %s )( %s, %s );', + $init_js_function, + wp_json_encode( 'font-library-wp-admin-app', JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ), wp_json_encode( $routes, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ) ) ); diff --git a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php index e5c7b8dce0544..fc44da9d715d8 100644 --- a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php +++ b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php @@ -153,12 +153,35 @@ function wp_options_connectors_wp_admin_enqueue_scripts( $hook_suffix ) { // 2. It initializes the boot module as an inline script. wp_register_script( 'options-connectors-wp-admin-prerequisites', '', $asset['dependencies'], $asset['version'], true ); - // Add inline script to initialize the app using initSinglePage (no menuItems) + /* + * Add inline script to initialize the app using initSinglePage (no menuItems). + * The dynamic import is deferred until DOMContentLoaded so that all classic + * script dependencies of @wordpress/boot (wp-private-apis, wp-components, + * wp-theme, etc.) have finished parsing and executing before the boot module + * evaluates. Otherwise, a modulepreloaded @wordpress/boot can win the race + * against the classic-script-printing pass on fast CDN-fronted hosts in + * Chrome, evaluating before wp.theme.privateApis is defined and throwing + * "Cannot unlock an undefined object". See <https://core.trac.wordpress.org/ticket/65103>. + */ + $init_js_function = <<<'JS' + ( mountId, routes ) => { + const run = async () => { + const mod = await import( "@wordpress/boot" ); + mod.initSinglePage( { mountId, routes } ); + }; + if ( document.readyState === "loading" ) { + document.addEventListener( "DOMContentLoaded", run ); + } else { + run(); + } + } + JS; wp_add_inline_script( 'options-connectors-wp-admin-prerequisites', sprintf( - 'import("@wordpress/boot").then(mod => mod.initSinglePage({mountId: "%s", routes: %s}));', - 'options-connectors-wp-admin-app', + '( %s )( %s, %s );', + $init_js_function, + wp_json_encode( 'options-connectors-wp-admin-app', JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ), wp_json_encode( $routes, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ) ) ); diff --git a/src/wp-includes/build/routes/connectors-home/content.js b/src/wp-includes/build/routes/connectors-home/content.js index b3231790cb6d4..09b2571402667 100644 --- a/src/wp-includes/build/routes/connectors-home/content.js +++ b/src/wp-includes/build/routes/connectors-home/content.js @@ -8674,7 +8674,7 @@ function registerStyle3(hash, css) { } } if (typeof process === "undefined" || true) { - registerStyle3("26d90ece4e", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);cursor:var(--wpds-cursor-control,pointer);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);height:var(--wp-ui-button-height);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);min-width:var(--wp-ui-button-min-width);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-decoration:none;@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:#0000;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:#0000;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:#0000;&:not([data-disabled]):is(:hover,:active,:focus){color:#0000}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}[aria-pressed=true].ad0619a3217c6a5b__is-minimal.e722a8f96726aa99__is-neutral{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0)}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}'); + registerStyle3("7d54255a4c", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:#0000;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:#0000;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:#0000;&:not([data-disabled]):is(:hover,:active,:focus){color:#0000}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}'); } var style_default3 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" }; if (typeof process === "undefined" || true) { @@ -8808,7 +8808,10 @@ var published_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_pri // packages/ui/build-module/utils/render-slot-with-children.mjs var import_element13 = __toESM(require_element(), 1); function renderSlotWithChildren(slot, defaultSlot, children) { - return (0, import_element13.cloneElement)(slot ?? defaultSlot, { children }); + return (0, import_element13.cloneElement)( + slot ?? defaultSlot, + { children } + ); } // packages/ui/build-module/lock-unlock.mjs @@ -8938,16 +8941,8 @@ var import_theme = __toESM(require_theme(), 1); // packages/ui/build-module/tooltip/portal.mjs var import_element15 = __toESM(require_element(), 1); -var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); -var Portal = (0, import_element15.forwardRef)( - function TooltipPortal3(props, ref) { - return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(index_parts_exports.Portal, { ref, ...props }); - } -); -// packages/ui/build-module/tooltip/positioner.mjs -var import_element16 = __toESM(require_element(), 1); -var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +// packages/ui/build-module/utils/wp-compat-overlay-slot.mjs var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; function getRuntime5() { const globalScope = globalThis; @@ -9029,11 +9024,164 @@ function registerStyle5(hash, css) { } } if (typeof process === "undefined" || true) { - registerStyle5("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); + registerStyle5("45eb1fe20f", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui-utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}"); +} +var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; +var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; +function resolveOwnerDocument() { + return typeof document === "undefined" ? null : document; +} +function isInWordPressEnvironment() { + let topWp; + try { + topWp = window.top?.wp; + } catch { + } + const wp = topWp ?? window.wp; + return typeof wp?.components === "object" && wp.components !== null; +} +var cachedSlot = null; +function createSlot(ownerDocument2) { + const element = ownerDocument2.createElement("div"); + element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); + if (wp_compat_overlay_slot_default.slot) { + element.classList.add(wp_compat_overlay_slot_default.slot); + } + ownerDocument2.body.appendChild(element); + return element; +} +function getWpCompatOverlaySlot() { + if (typeof window === "undefined") { + return void 0; + } + if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { + return void 0; + } + const ownerDocument2 = resolveOwnerDocument(); + if (!ownerDocument2 || !ownerDocument2.body) { + return void 0; + } + if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { + return cachedSlot; + } + const existing = ownerDocument2.querySelector( + `[${WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` + ); + if (existing instanceof HTMLDivElement) { + cachedSlot = existing; + return existing; + } + if (cachedSlot?.isConnected) { + cachedSlot.remove(); + } + cachedSlot = createSlot(ownerDocument2); + return cachedSlot; +} + +// packages/ui/build-module/tooltip/portal.mjs +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var Portal = (0, import_element15.forwardRef)( + function TooltipPortal3({ container, ...restProps }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( + index_parts_exports.Portal, + { + container: container ?? getWpCompatOverlaySlot(), + ...restProps, + ref + } + ); + } +); + +// packages/ui/build-module/tooltip/positioner.mjs +var import_element16 = __toESM(require_element(), 1); +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; +function getRuntime6() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument6(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash6(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE6}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { + return true; + } + } + return false; +} +function injectStyle6(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime6(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash6(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument6(targetDocument) { + const runtime = getRuntime6(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle6(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle6(hash, css) { + const runtime = getRuntime6(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle6(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle6("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); } var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; if (typeof process === "undefined" || true) { - registerStyle5("8293efbb49", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}'); + registerStyle6("8293efbb49", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}'); } var style_default5 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; var Positioner = (0, import_element16.forwardRef)( @@ -9058,8 +9206,8 @@ var Positioner = (0, import_element16.forwardRef)( // packages/ui/build-module/tooltip/popup.mjs var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; -function getRuntime6() { +var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; +function getRuntime7() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9070,28 +9218,28 @@ function getRuntime6() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument6(document); + registerDocument7(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash6(targetDocument, hash) { +function documentContainsStyleHash7(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE6}]` + `style[${STYLE_HASH_ATTRIBUTE7}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { return true; } } return false; } -function injectStyle6(targetDocument, hash, css) { +function injectStyle7(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime6(); + const runtime = getRuntime7(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9100,24 +9248,24 @@ function injectStyle6(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash6(targetDocument, hash)) { + if (documentContainsStyleHash7(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument6(targetDocument) { - const runtime = getRuntime6(); +function registerDocument7(targetDocument) { + const runtime = getRuntime7(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle6(targetDocument, hash, css); + injectStyle7(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9131,15 +9279,15 @@ function registerDocument6(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle6(hash, css) { - const runtime = getRuntime6(); +function registerStyle7(hash, css) { + const runtime = getRuntime7(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle6(targetDocument, hash, css); + injectStyle7(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle6("8293efbb49", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}'); + registerStyle7("8293efbb49", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}'); } var style_default6 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; var ThemeProvider = unlock(import_theme.privateApis).ThemeProvider; @@ -9196,8 +9344,8 @@ function Provider({ ...props }) { // packages/ui/build-module/icon-button/icon-button.mjs var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; -function getRuntime7() { +var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; +function getRuntime8() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9208,28 +9356,28 @@ function getRuntime7() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument7(document); + registerDocument8(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash7(targetDocument, hash) { +function documentContainsStyleHash8(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE7}]` + `style[${STYLE_HASH_ATTRIBUTE8}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { return true; } } return false; } -function injectStyle7(targetDocument, hash, css) { +function injectStyle8(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime7(); + const runtime = getRuntime8(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9238,24 +9386,24 @@ function injectStyle7(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash7(targetDocument, hash)) { + if (documentContainsStyleHash8(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument7(targetDocument) { - const runtime = getRuntime7(); +function registerDocument8(targetDocument) { + const runtime = getRuntime8(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle7(targetDocument, hash, css); + injectStyle8(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9269,15 +9417,15 @@ function registerDocument7(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle7(hash, css) { - const runtime = getRuntime7(); +function registerStyle8(hash, css) { + const runtime = getRuntime8(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle7(targetDocument, hash, css); + injectStyle8(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle7("358a2a646a", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}"); + registerStyle8("358a2a646a", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}"); } var style_default7 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" }; var IconButton = (0, import_element19.forwardRef)( @@ -9287,7 +9435,7 @@ var IconButton = (0, import_element19.forwardRef)( // Prevent accidental forwarding of `children` children: _children, disabled: disabled2, - focusableWhenDisabled, + focusableWhenDisabled = true, icon, size: size4, shortcut, @@ -9338,8 +9486,8 @@ var IconButton = (0, import_element19.forwardRef)( var import_element20 = __toESM(require_element(), 1); var import_i18n2 = __toESM(require_i18n(), 1); var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; -function getRuntime8() { +var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; +function getRuntime9() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9350,28 +9498,28 @@ function getRuntime8() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument8(document); + registerDocument9(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash8(targetDocument, hash) { +function documentContainsStyleHash9(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE8}]` + `style[${STYLE_HASH_ATTRIBUTE9}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { return true; } } return false; } -function injectStyle8(targetDocument, hash, css) { +function injectStyle9(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime8(); + const runtime = getRuntime9(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9380,24 +9528,24 @@ function injectStyle8(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash8(targetDocument, hash)) { + if (documentContainsStyleHash9(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument8(targetDocument) { - const runtime = getRuntime8(); +function registerDocument9(targetDocument) { + const runtime = getRuntime9(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle8(targetDocument, hash, css); + injectStyle9(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9411,27 +9559,27 @@ function registerDocument8(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle8(hash, css) { - const runtime = getRuntime8(); +function registerStyle9(hash, css) { + const runtime = getRuntime9(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle8(targetDocument, hash, css); + injectStyle9(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle8("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); + registerStyle9("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); } var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; if (typeof process === "undefined" || true) { - registerStyle8("2a5ab8f3a7", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}"); + registerStyle9("2a5ab8f3a7", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}"); } var focus_default2 = { "outset-ring--focus": "_08e8a2e44959f892__outset-ring--focus", "outset-ring--focus-except-active": "e25b2bdd7aa21721__outset-ring--focus-except-active", "outset-ring--focus-visible": "d0541bc9dd9dc7b6__outset-ring--focus-visible", "outset-ring--focus-within": "cd83dfc2126a0846__outset-ring--focus-within", "outset-ring--focus-within-except-active": "_970d04df7376df67__outset-ring--focus-within-except-active", "outset-ring--focus-within-visible": "c5cb3ee4bddaa8e4__outset-ring--focus-within-visible", "outset-ring--focus-parent-visible": "ecadb9e080e2dfa5__outset-ring--focus-parent-visible" }; if (typeof process === "undefined" || true) { - registerStyle8("90a23568f8", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}'); + registerStyle9("90a23568f8", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}'); } var style_default8 = { "link": "d4250949359b05ce__link", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" }; if (typeof process === "undefined" || true) { - registerStyle8("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); + registerStyle9("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); } var global_css_defense_default3 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; var Link = (0, import_element20.forwardRef)(function Link2({ @@ -9493,8 +9641,8 @@ __export(notice_exports, { var import_element21 = __toESM(require_element(), 1); import { speak as speak2 } from "@wordpress/a11y"; var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; -function getRuntime9() { +var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; +function getRuntime10() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9505,28 +9653,28 @@ function getRuntime9() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument9(document); + registerDocument10(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash9(targetDocument, hash) { +function documentContainsStyleHash10(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE9}]` + `style[${STYLE_HASH_ATTRIBUTE10}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { return true; } } return false; } -function injectStyle9(targetDocument, hash, css) { +function injectStyle10(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime9(); + const runtime = getRuntime10(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9535,24 +9683,24 @@ function injectStyle9(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash9(targetDocument, hash)) { + if (documentContainsStyleHash10(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument9(targetDocument) { - const runtime = getRuntime9(); +function registerDocument10(targetDocument) { + const runtime = getRuntime10(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle9(targetDocument, hash, css); + injectStyle10(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9566,19 +9714,19 @@ function registerDocument9(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle9(hash, css) { - const runtime = getRuntime9(); +function registerStyle10(hash, css) { + const runtime = getRuntime10(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle9(targetDocument, hash, css); + injectStyle10(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle9("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); + registerStyle10("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); } var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; if (typeof process === "undefined" || true) { - registerStyle9("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle10("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); } var style_default9 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; var icons = { @@ -9655,8 +9803,8 @@ var Root2 = (0, import_element21.forwardRef)(function Notice({ // packages/ui/build-module/notice/title.mjs var import_element22 = __toESM(require_element(), 1); var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; -function getRuntime10() { +var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; +function getRuntime11() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9667,28 +9815,28 @@ function getRuntime10() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument10(document); + registerDocument11(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash10(targetDocument, hash) { +function documentContainsStyleHash11(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE10}]` + `style[${STYLE_HASH_ATTRIBUTE11}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { return true; } } return false; } -function injectStyle10(targetDocument, hash, css) { +function injectStyle11(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime10(); + const runtime = getRuntime11(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9697,24 +9845,24 @@ function injectStyle10(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash10(targetDocument, hash)) { + if (documentContainsStyleHash11(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument10(targetDocument) { - const runtime = getRuntime10(); +function registerDocument11(targetDocument) { + const runtime = getRuntime11(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle10(targetDocument, hash, css); + injectStyle11(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9728,15 +9876,15 @@ function registerDocument10(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle10(hash, css) { - const runtime = getRuntime10(); +function registerStyle11(hash, css) { + const runtime = getRuntime11(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle10(targetDocument, hash, css); + injectStyle11(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle10("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle11("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); } var style_default10 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; var Title = (0, import_element22.forwardRef)( @@ -9756,8 +9904,8 @@ var Title = (0, import_element22.forwardRef)( // packages/ui/build-module/notice/description.mjs var import_element23 = __toESM(require_element(), 1); var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; -function getRuntime11() { +var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; +function getRuntime12() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9768,28 +9916,28 @@ function getRuntime11() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument11(document); + registerDocument12(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash11(targetDocument, hash) { +function documentContainsStyleHash12(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE11}]` + `style[${STYLE_HASH_ATTRIBUTE12}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { return true; } } return false; } -function injectStyle11(targetDocument, hash, css) { +function injectStyle12(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime11(); + const runtime = getRuntime12(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9798,24 +9946,24 @@ function injectStyle11(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash11(targetDocument, hash)) { + if (documentContainsStyleHash12(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument11(targetDocument) { - const runtime = getRuntime11(); +function registerDocument12(targetDocument) { + const runtime = getRuntime12(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle11(targetDocument, hash, css); + injectStyle12(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9829,15 +9977,15 @@ function registerDocument11(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle11(hash, css) { - const runtime = getRuntime11(); +function registerStyle12(hash, css) { + const runtime = getRuntime12(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle11(targetDocument, hash, css); + injectStyle12(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle11("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle12("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); } var style_default11 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; var Description = (0, import_element23.forwardRef)( @@ -9856,8 +10004,8 @@ var Description = (0, import_element23.forwardRef)( // packages/ui/build-module/notice/actions.mjs var import_element24 = __toESM(require_element(), 1); -var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; -function getRuntime12() { +var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; +function getRuntime13() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9868,28 +10016,28 @@ function getRuntime12() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument12(document); + registerDocument13(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash12(targetDocument, hash) { +function documentContainsStyleHash13(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE12}]` + `style[${STYLE_HASH_ATTRIBUTE13}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { return true; } } return false; } -function injectStyle12(targetDocument, hash, css) { +function injectStyle13(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime12(); + const runtime = getRuntime13(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9898,24 +10046,24 @@ function injectStyle12(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash12(targetDocument, hash)) { + if (documentContainsStyleHash13(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument12(targetDocument) { - const runtime = getRuntime12(); +function registerDocument13(targetDocument) { + const runtime = getRuntime13(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle12(targetDocument, hash, css); + injectStyle13(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9929,15 +10077,15 @@ function registerDocument12(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle12(hash, css) { - const runtime = getRuntime12(); +function registerStyle13(hash, css) { + const runtime = getRuntime13(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle12(targetDocument, hash, css); + injectStyle13(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle12("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle13("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); } var style_default12 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; var Actions = (0, import_element24.forwardRef)( @@ -9961,8 +10109,8 @@ var Actions = (0, import_element24.forwardRef)( var import_element25 = __toESM(require_element(), 1); var import_i18n3 = __toESM(require_i18n(), 1); var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; -function getRuntime13() { +var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; +function getRuntime14() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9973,28 +10121,28 @@ function getRuntime13() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument13(document); + registerDocument14(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash13(targetDocument, hash) { +function documentContainsStyleHash14(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE13}]` + `style[${STYLE_HASH_ATTRIBUTE14}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { return true; } } return false; } -function injectStyle13(targetDocument, hash, css) { +function injectStyle14(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime13(); + const runtime = getRuntime14(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10003,24 +10151,24 @@ function injectStyle13(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash13(targetDocument, hash)) { + if (documentContainsStyleHash14(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument13(targetDocument) { - const runtime = getRuntime13(); +function registerDocument14(targetDocument) { + const runtime = getRuntime14(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle13(targetDocument, hash, css); + injectStyle14(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10034,15 +10182,15 @@ function registerDocument13(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle13(hash, css) { - const runtime = getRuntime13(); +function registerStyle14(hash, css) { + const runtime = getRuntime14(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle13(targetDocument, hash, css); + injectStyle14(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle13("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle14("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); } var style_default13 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; var CloseIcon = (0, import_element25.forwardRef)( @@ -10066,8 +10214,8 @@ var CloseIcon = (0, import_element25.forwardRef)( // packages/ui/build-module/notice/action-button.mjs var import_element26 = __toESM(require_element(), 1); var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; -function getRuntime14() { +var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; +function getRuntime15() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10078,28 +10226,28 @@ function getRuntime14() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument14(document); + registerDocument15(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash14(targetDocument, hash) { +function documentContainsStyleHash15(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE14}]` + `style[${STYLE_HASH_ATTRIBUTE15}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { return true; } } return false; } -function injectStyle14(targetDocument, hash, css) { +function injectStyle15(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime14(); + const runtime = getRuntime15(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10108,24 +10256,24 @@ function injectStyle14(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash14(targetDocument, hash)) { + if (documentContainsStyleHash15(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument14(targetDocument) { - const runtime = getRuntime14(); +function registerDocument15(targetDocument) { + const runtime = getRuntime15(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle14(targetDocument, hash, css); + injectStyle15(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10139,15 +10287,15 @@ function registerDocument14(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle14(hash, css) { - const runtime = getRuntime14(); +function registerStyle15(hash, css) { + const runtime = getRuntime15(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle14(targetDocument, hash, css); + injectStyle15(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle14("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle15("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); } var style_default14 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; var ActionButton = (0, import_element26.forwardRef)( @@ -10175,8 +10323,8 @@ var ActionButton = (0, import_element26.forwardRef)( // packages/ui/build-module/notice/action-link.mjs var import_element27 = __toESM(require_element(), 1); var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; -function getRuntime15() { +var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; +function getRuntime16() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10187,28 +10335,28 @@ function getRuntime15() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument15(document); + registerDocument16(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash15(targetDocument, hash) { +function documentContainsStyleHash16(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE15}]` + `style[${STYLE_HASH_ATTRIBUTE16}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { return true; } } return false; } -function injectStyle15(targetDocument, hash, css) { +function injectStyle16(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime15(); + const runtime = getRuntime16(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10217,24 +10365,24 @@ function injectStyle15(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash15(targetDocument, hash)) { + if (documentContainsStyleHash16(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument15(targetDocument) { - const runtime = getRuntime15(); +function registerDocument16(targetDocument) { + const runtime = getRuntime16(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle15(targetDocument, hash, css); + injectStyle16(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10248,15 +10396,15 @@ function registerDocument15(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle15(hash, css) { - const runtime = getRuntime15(); +function registerStyle16(hash, css) { + const runtime = getRuntime16(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle15(targetDocument, hash, css); + injectStyle16(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle15("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle16("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); } var style_default15 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; var ActionLink = (0, import_element27.forwardRef)( @@ -10302,8 +10450,8 @@ var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components // packages/admin-ui/build-module/page/header.mjs var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; -function getRuntime16() { +var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; +function getRuntime17() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10314,28 +10462,28 @@ function getRuntime16() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument16(document); + registerDocument17(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash16(targetDocument, hash) { +function documentContainsStyleHash17(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE16}]` + `style[${STYLE_HASH_ATTRIBUTE17}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { return true; } } return false; } -function injectStyle16(targetDocument, hash, css) { +function injectStyle17(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime16(); + const runtime = getRuntime17(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10344,24 +10492,24 @@ function injectStyle16(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash16(targetDocument, hash)) { + if (documentContainsStyleHash17(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument16(targetDocument) { - const runtime = getRuntime16(); +function registerDocument17(targetDocument) { + const runtime = getRuntime17(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle16(targetDocument, hash, css); + injectStyle17(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10375,15 +10523,15 @@ function registerDocument16(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle16(hash, css) { - const runtime = getRuntime16(); +function registerStyle17(hash, css) { + const runtime = getRuntime17(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle16(targetDocument, hash, css); + injectStyle17(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle16("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); + registerStyle17("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } var style_default16 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Header({ @@ -10461,8 +10609,8 @@ function Header({ // packages/admin-ui/build-module/page/index.mjs var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; -function getRuntime17() { +var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; +function getRuntime18() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10473,28 +10621,28 @@ function getRuntime17() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument17(document); + registerDocument18(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash17(targetDocument, hash) { +function documentContainsStyleHash18(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE17}]` + `style[${STYLE_HASH_ATTRIBUTE18}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { return true; } } return false; } -function injectStyle17(targetDocument, hash, css) { +function injectStyle18(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime17(); + const runtime = getRuntime18(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10503,24 +10651,24 @@ function injectStyle17(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash17(targetDocument, hash)) { + if (documentContainsStyleHash18(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument17(targetDocument) { - const runtime = getRuntime17(); +function registerDocument18(targetDocument) { + const runtime = getRuntime18(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle17(targetDocument, hash, css); + injectStyle18(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10534,15 +10682,15 @@ function registerDocument17(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle17(hash, css) { - const runtime = getRuntime17(); +function registerStyle18(hash, css) { + const runtime = getRuntime18(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle17(targetDocument, hash, css); + injectStyle18(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle17("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); + registerStyle18("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } var style_default17 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Page({ @@ -10601,10 +10749,10 @@ import { } from "@wordpress/connectors"; // routes/connectors-home/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='f2df357a8c']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='359735ef0e']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "f2df357a8c"); - style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:145px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); + style.setAttribute("data-wp-hash", "359735ef0e"); + style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 92% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 58% -10%,#aa82b873 0,#aa82b800 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 8% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 42% -10%,#aa82b873 0,#aa82b800 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); document.head.appendChild(style); } @@ -11293,30 +11441,12 @@ function WpLogoDecoration() { /* @__PURE__ */ React.createElement( "image", { - href: "data:image/png;base64,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", + href: "data:image/png;base64,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", width: "248", height: "248", style: { mixBlendMode: "multiply" } } - ), - /* @__PURE__ */ React.createElement("rect", { x: "184.055", y: "54.995", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "170.059", y: "44.06", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "200.238", y: "77.302", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "212.048", y: "87.8", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "206.799", y: "83.425", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "204.175", y: "85.612", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "219.046", y: "103.108", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "154.751", y: "30.064", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "188.866", y: "63.742", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "148.189", y: "34", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "134.051", y: "31.707", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "126.124", y: "24.771", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "115.385", y: "29.19", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "95.702", y: "31.376", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "91.766", y: "27.002", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "90.454", y: "32.688", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "184.389", y: "45.58", width: "2.187", height: "2.187" }), - /* @__PURE__ */ React.createElement("rect", { x: "162.185", y: "41.873", width: "2.187", height: "2.187" }) + ) )); } @@ -11607,7 +11737,15 @@ function ConnectorsPage() { /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { alignment: "center", spacing: 2 }, /* @__PURE__ */ React.createElement(import_components4.__experimentalHeading, { level: 2, size: 15, weight: 600 }, (0, import_i18n7.__)("No connectors yet")), /* @__PURE__ */ React.createElement(import_components4.__experimentalText, { size: 12 }, (0, import_i18n7.__)( "Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place." ))), - /* @__PURE__ */ React.createElement(import_components4.Button, { variant: "secondary", href: "plugin-install.php" }, (0, import_i18n7.__)("Learn more")) + /* @__PURE__ */ React.createElement( + import_components4.Button, + { + variant: "secondary", + href: "plugin-install.php", + __next40pxDefaultSize: true + }, + (0, import_i18n7.__)("Learn more") + ) ) : /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3 }, /* @__PURE__ */ React.createElement(AiPluginCallout, null), /* @__PURE__ */ React.createElement(import_components4.__experimentalVStack, { spacing: 3, role: "list" }, connectors.map( (connector) => { if (connector.render) { diff --git a/src/wp-includes/build/routes/connectors-home/content.min.asset.php b/src/wp-includes/build/routes/connectors-home/content.min.asset.php index 4a4496e71fbf0..3d989d85dade0 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.asset.php +++ b/src/wp-includes/build/routes/connectors-home/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '52bce0c315233cfc914c'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'ab5f74f49e6a70ea8062'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/connectors-home/content.min.js b/src/wp-includes/build/routes/connectors-home/content.min.js index a1586ff51f6e2..843176b88cd43 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.js +++ b/src/wp-includes/build/routes/connectors-home/content.min.js @@ -1,4 +1,4 @@ -var qu=Object.create;var hr=Object.defineProperty;var Wu=Object.getOwnPropertyDescriptor;var Xu=Object.getOwnPropertyNames;var Uu=Object.getPrototypeOf,Ku=Object.prototype.hasOwnProperty;var ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),wr=(e,t)=>{for(var o in t)hr(e,o,{get:t[o],enumerable:!0})},Zu=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Xu(t))!Ku.call(e,r)&&r!==o&&hr(e,r,{get:()=>t[r],enumerable:!(n=Wu(t,r))||n.enumerable});return e};var g=(e,t,o)=>(o=e!=null?qu(Uu(e)):{},Zu(t||!e||!e.__esModule?hr(o,"default",{value:e,enumerable:!0}):o,e));var vt=ve((h0,Ns)=>{Ns.exports=window.wp.i18n});var oe=ve((v0,zs)=>{zs.exports=window.wp.element});var D=ve((y0,Ds)=>{Ds.exports=window.React});var K=ve((P0,Vs)=>{Vs.exports=window.ReactJSXRuntime});var xt=ve((ib,ia)=>{ia.exports=window.ReactDOM});var Rc=ve(_c=>{"use strict";var go=D();function Wp(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Xp=typeof Object.is=="function"?Object.is:Wp,Up=go.useState,Kp=go.useEffect,Zp=go.useLayoutEffect,Qp=go.useDebugValue;function Jp(e,t){var o=t(),n=Up({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return Zp(function(){r.value=o,r.getSnapshot=t,$r(r)&&i({inst:r})},[e,o,t]),Kp(function(){return $r(r)&&i({inst:r}),e(function(){$r(r)&&i({inst:r})})},[e]),Qp(o),o}function $r(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!Xp(e,o)}catch{return!0}}function $p(e,t){return t()}var em=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?$p:Jp;_c.useSyncExternalStore=go.useSyncExternalStore!==void 0?go.useSyncExternalStore:em});var ei=ve((h1,Sc)=>{"use strict";Sc.exports=Rc()});var Ec=ve(Pc=>{"use strict";var In=D(),tm=ei();function om(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var nm=typeof Object.is=="function"?Object.is:om,rm=tm.useSyncExternalStore,im=In.useRef,sm=In.useEffect,am=In.useMemo,cm=In.useDebugValue;Pc.useSyncExternalStoreWithSelector=function(e,t,o,n,r){var i=im(null);if(i.current===null){var s={hasValue:!1,value:null};i.current=s}else s=i.current;i=am(function(){function d(p){if(!l){if(l=!0,c=p,p=n(p),r!==void 0&&s.hasValue){var f=s.value;if(r(f,p))return u=f}return u=p}if(f=u,nm(c,p))return f;var h=n(p);return r!==void 0&&r(f,h)?(c=p,f):(c=p,u=h)}var l=!1,c,u,m=o===void 0?null:o;return[function(){return d(t())},m===null?void 0:function(){return d(m())}]},[t,o,n,r]);var a=rm(e,i[0],i[1]);return sm(function(){s.hasValue=!0,s.value=a},[a]),cm(a),a}});var Cc=ve((v1,Tc)=>{"use strict";Tc.exports=Ec()});var Kt=ve((Dx,Xl)=>{Xl.exports=window.wp.primitives});var ed=ve((n4,$l)=>{$l.exports=window.wp.theme});var Yi=ve((i4,od)=>{od.exports=window.wp.privateApis});var Jo=ve((I_,iu)=>{iu.exports=window.wp.components});var en=ve((X_,pu)=>{pu.exports=window.wp.data});var ur=ve((U_,mu)=>{mu.exports=window.wp.coreData});var Ts=ve((K_,gu)=>{gu.exports=window.wp.notices});var hu=ve((Z_,bu)=>{bu.exports=window.wp.url});function Is(e){var t,o,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(o=Is(e[t]))&&(n&&(n+=" "),n+=o)}else for(o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function Qu(){for(var e,t,o=0,n="",r=arguments.length;o<r;o++)(e=arguments[o])&&(t=Is(e))&&(n&&(n+=" "),n+=t);return n}var Q=Qu;var jl=g(oe(),1);var yr=g(D(),1);var Hs=g(D(),1),Bs={};function de(e,t){let o=Hs.useRef(Bs);return o.current===Bs&&(o.current=e(t)),o}var vr=yr[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],Ju=vr&&vr!==yr.useLayoutEffect?vr:e=>e();function G(e){let t=de($u).current;return t.next=e,Ju(t.effect),t.trampoline}function $u(){let e={next:void 0,callback:ef,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function ef(){}var js=g(D(),1),tf=()=>{},j=typeof document<"u"?js.useLayoutEffect:tf;var mn=g(D(),1),of=mn.createContext(void 0);function oo(){return mn.useContext(of)?.direction??"ltr"}function nf(e,t){return function(n,...r){let i=new URL(e);return i.searchParams.set("code",n.toString()),r.forEach(s=>i.searchParams.append("args[]",s)),`${t} error #${n}; visit ${i} for the full message.`}}var rf=nf("https://base-ui.com/production-error","Base UI"),_e=rf;var zt=g(D(),1);function xr(e,t,o,n){let r=de(Ys).current;return sf(r,e,t,o,n)&&Fs(r,[e,t,o,n]),r.callback}function Gs(e){let t=de(Ys).current;return af(t,e)&&Fs(t,e),t.callback}function Ys(){return{callback:null,cleanup:null,refs:[]}}function sf(e,t,o,n,r){return e.refs[0]!==t||e.refs[1]!==o||e.refs[2]!==n||e.refs[3]!==r}function af(e,t){return e.refs.length!==t.length||e.refs.some((o,n)=>o!==t[n])}function Fs(e,t){if(e.refs=t,t.every(o=>o==null)){e.callback=null;return}e.callback=o=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),o!=null){let n=Array(t.length).fill(null);for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=i(o);typeof s=="function"&&(n[r]=s);break}case"object":{i.current=o;break}default:}}e.cleanup=()=>{for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=n[r];typeof s=="function"?s():i(null);break}case"object":{i.current=null;break}default:}}}}}}var Ws=g(D(),1);var qs=g(D(),1),cf=parseInt(qs.version,10);function no(e){return cf>=e}function _r(e){if(!Ws.isValidElement(e))return null;let t=e,o=t.props;return(no(19)?o?.ref:t.ref)??null}function Oo(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function mt(){}var N0=Object.freeze([]),ge=Object.freeze({});function Xs(e,t){let o={};for(let n in e){let r=e[n];if(t?.hasOwnProperty(n)){let i=t[n](r);i!=null&&Object.assign(o,i);continue}r===!0?o[`data-${n.toLowerCase()}`]="":r&&(o[`data-${n.toLowerCase()}`]=r.toString())}return o}function Us(e,t){return typeof e=="function"?e(t):e}function Ks(e,t){return typeof e=="function"?e(t):e}var Rr={};function ke(e,t,o,n,r){if(!o&&!n&&!r&&!e)return gn(t);let i=gn(e);return t&&(i=Lo(i,t)),o&&(i=Lo(i,o)),n&&(i=Lo(i,n)),r&&(i=Lo(i,r)),i}function Zs(e){if(e.length===0)return Rr;if(e.length===1)return gn(e[0]);let t=gn(e[0]);for(let o=1;o<e.length;o+=1)t=Lo(t,e[o]);return t}function gn(e){return Sr(e)?{...Js(e,Rr)}:lf(e)}function Lo(e,t){return Sr(t)?Js(t,e):df(e,t)}function lf(e){let t={...e};for(let o in t){let n=t[o];Qs(o,n)&&(t[o]=$s(n))}return t}function df(e,t){if(!t)return e;for(let o in t){let n=t[o];switch(o){case"style":{e[o]=Oo(e.style,n);break}case"className":{e[o]=Pr(e.className,n);break}default:Qs(o,n)?e[o]=uf(e[o],n):e[o]=n}}return e}function Qs(e,t){let o=e.charCodeAt(0),n=e.charCodeAt(1),r=e.charCodeAt(2);return o===111&&n===110&&r>=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function Sr(e){return typeof e=="function"}function Js(e,t){return Sr(e)?e(t):e??Rr}function uf(e,t){return t?e?(...o)=>{let n=o[0];if(ea(n)){let i=n;Mo(i);let s=t(...o);return i.baseUIHandlerPrevented||e?.(...o),s}let r=t(...o);return e?.(...o),r}:$s(t):e}function $s(e){return e&&((...t)=>{let o=t[0];return ea(o)&&Mo(o),e(...t)})}function Mo(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Pr(e,t){return t?e?t+" "+e:t:e}function ea(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Er=g(D(),1);function Re(e,t,o={}){let n=t.render,r=ff(t,o);if(o.enabled===!1)return null;let i=o.state??ge;return gf(e,n,r,i)}function ff(e,t={}){let{className:o,style:n,render:r}=e,{state:i=ge,ref:s,props:a,stateAttributesMapping:d,enabled:l=!0}=t,c=l?Us(o,i):void 0,u=l?Ks(n,i):void 0,m=l?Xs(i,d):ge,p=l&&a?pf(a):void 0,f=l?Oo(m,p)??{}:ge;return typeof document<"u"&&(l?Array.isArray(s)?f.ref=Gs([f.ref,_r(r),...s]):f.ref=xr(f.ref,_r(r),s):xr(null,null)),l?(c!==void 0&&(f.className=Pr(f.className,c)),u!==void 0&&(f.style=Oo(f.style,u)),f):ge}function pf(e){return Array.isArray(e)?Zs(e):ke(void 0,e)}var mf=Symbol.for("react.lazy");function gf(e,t,o,n){if(t){if(typeof t=="function")return t(o,n);let r=ke(o,t.props);r.ref=o.ref;let i=t;return i?.$$typeof===mf&&(i=zt.Children.toArray(t)[0]),zt.cloneElement(i,r)}if(e&&typeof e=="string")return bf(e,o);throw new Error(_e(8))}function bf(e,t){return e==="button"?(0,Er.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Er.createElement)("img",{alt:"",...t,key:t.key}):zt.createElement(e,t)}var W={};wr(W,{cancelOpen:()=>Ff,chipRemovePress:()=>Ef,clearPress:()=>Pf,closePress:()=>Rf,closeWatcher:()=>Df,decrementPress:()=>kf,disabled:()=>Wf,drag:()=>Vf,escapeKey:()=>zf,focusOut:()=>If,imperativeAction:()=>Xf,incrementPress:()=>Cf,inputBlur:()=>Mf,inputChange:()=>Of,inputClear:()=>Lf,inputPaste:()=>Af,inputPress:()=>Nf,itemPress:()=>_f,keyboard:()=>Hf,linkPress:()=>Sf,listNavigation:()=>Bf,none:()=>hf,outsidePress:()=>xf,pointer:()=>jf,scrub:()=>Yf,siblingOpen:()=>qf,swipe:()=>Uf,trackPress:()=>Tf,triggerFocus:()=>yf,triggerHover:()=>vf,triggerPress:()=>wf,wheel:()=>Gf,windowResize:()=>Kf});var hf="none",wf="trigger-press",vf="trigger-hover",yf="trigger-focus",xf="outside-press",_f="item-press",Rf="close-press",Sf="link-press",Pf="clear-press",Ef="chip-remove-press",Tf="track-press",Cf="increment-press",kf="decrement-press",Of="input-change",Lf="input-clear",Mf="input-blur",Af="input-paste",Nf="input-press",If="focus-out",zf="escape-key",Df="close-watcher",Bf="list-navigation",Hf="keyboard",jf="pointer",Vf="drag",Gf="wheel",Yf="scrub",Ff="cancel-open",qf="sibling-open",Wf="disabled",Xf="imperative-action",Uf="swipe",Kf="window-resize";function ee(e,t,o,n){let r=!1,i=!1,s=n??ge;return{reason:e,event:t??new Event("base-ui"),cancel(){r=!0},allowPropagation(){i=!0},get isCanceled(){return r},get isPropagationAllowed(){return i},trigger:o,...s}}var bn=g(D(),1);var Zf=g(D(),1),ta={...Zf};var oa=0;function Qf(e,t="mui"){let[o,n]=bn.useState(e),r=e||o;return bn.useEffect(()=>{o==null&&(oa+=1,n(`${t}-${oa}`))},[o,t]),r}var na=ta.useId;function yt(e,t){if(na!==void 0){let o=na();return e??(t?`${t}-${o}`:o)}return Qf(e,t)}function ra(e){return yt(e,"base-ui")}var la=g(xt(),1);var sa=g(D(),1),Jf=[];function ro(e){sa.useEffect(e,Jf)}var hn=null,lb=globalThis.requestAnimationFrame,Tr=class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=t=>{this.isScheduled=!1;let o=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let r=0;r<o.length;r+=1)o[r]?.(t)};request(t){let o=this.nextId;return this.nextId+=1,this.callbacks.push(t),this.callbacksCount+=1,!this.isScheduled&&(requestAnimationFrame(this.tick),this.isScheduled=!0),o}cancel(t){let o=t-this.startId;o<0||o>=this.callbacks.length||(this.callbacks[o]=null,this.callbacksCount-=1)}},wn=new Tr,st=class e{static create(){return new e}static request(t){return wn.request(t)}static cancel(t){return wn.cancel(t)}currentId=hn;request(t){this.cancel(),this.currentId=wn.request(()=>{this.currentId=hn,t()})}cancel=()=>{this.currentId!==hn&&(wn.cancel(this.currentId),this.currentId=hn)};disposeEffect=()=>this.cancel};function io(){let e=de(st.create).current;return ro(e.disposeEffect),e}function aa(e){return e==null?e:"current"in e?e.current:e}var Dt=(function(e){return e.startingStyle="data-starting-style",e.endingStyle="data-ending-style",e})({}),$f={[Dt.startingStyle]:""},ep={[Dt.endingStyle]:""},ca={transitionStatus(e){return e==="starting"?$f:e==="ending"?ep:null}};function so(e,t=!1,o=!0){let n=io();return G((r,i=null)=>{n.cancel();let s=aa(e);if(s==null)return;let a=s,d=()=>{la.flushSync(r)};if(typeof a.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){r();return}function l(){Promise.all(a.getAnimations().map(c=>c.finished)).then(()=>{i?.aborted||d()}).catch(()=>{if(o){i?.aborted||d();return}let c=a.getAnimations();!i?.aborted&&c.length>0&&c.some(u=>u.pending||u.playState!=="finished")&&l()})}if(t){let c=Dt.startingStyle;if(!a.hasAttribute(c)){n.request(l);return}let u=new MutationObserver(()=>{a.hasAttribute(c)||(u.disconnect(),l())});u.observe(a,{attributes:!0,attributeFilter:[c]}),i?.addEventListener("abort",()=>u.disconnect(),{once:!0});return}n.request(l)})}var Cr=g(D(),1);function da(e,t=!1,o=!1){let[n,r]=Cr.useState(e&&t?"idle":void 0),[i,s]=Cr.useState(e);return e&&!i&&(s(!0),r("starting")),!e&&i&&n!=="ending"&&!o&&r("ending"),!e&&!i&&n==="ending"&&r(void 0),j(()=>{if(!e&&i&&n!=="ending"&&o){let a=st.request(()=>{r("ending")});return()=>{st.cancel(a)}}},[e,i,n,o]),j(()=>{if(!e||t)return;let a=st.request(()=>{r(void 0)});return()=>{st.cancel(a)}},[t,e]),j(()=>{if(!e||!t)return;e&&i&&n!=="idle"&&r("starting");let a=st.request(()=>{r("idle")});return()=>{st.cancel(a)}},[t,e,i,n]),{mounted:i,setMounted:s,transitionStatus:n}}var uo=g(D(),1);function vn(){return typeof window<"u"}function Ht(e){return yn(e)?(e.nodeName||"").toLowerCase():"#document"}function ce(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Qe(e){var t;return(t=(yn(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function yn(e){return vn()?e instanceof Node||e instanceof ce(e).Node:!1}function Y(e){return vn()?e instanceof Element||e instanceof ce(e).Element:!1}function ue(e){return vn()?e instanceof HTMLElement||e instanceof ce(e).HTMLElement:!1}function ao(e){return!vn()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof ce(e).ShadowRoot}function co(e){let{overflow:t,overflowX:o,overflowY:n,display:r}=Se(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+o)&&r!=="inline"&&r!=="contents"}function ua(e){return/^(table|td|th)$/.test(Ht(e))}function Ao(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}var tp=/transform|translate|scale|rotate|perspective|filter/,op=/paint|layout|strict|content/,Bt=e=>!!e&&e!=="none",kr;function xn(e){let t=Y(e)?Se(e):e;return Bt(t.transform)||Bt(t.translate)||Bt(t.scale)||Bt(t.rotate)||Bt(t.perspective)||!lo()&&(Bt(t.backdropFilter)||Bt(t.filter))||tp.test(t.willChange||"")||op.test(t.contain||"")}function fa(e){let t=Ze(e);for(;ue(t)&&!Je(t);){if(xn(t))return t;if(Ao(t))return null;t=Ze(t)}return null}function lo(){return kr==null&&(kr=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),kr}function Je(e){return/^(html|body|#document)$/.test(Ht(e))}function Se(e){return ce(e).getComputedStyle(e)}function No(e){return Y(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Ze(e){if(Ht(e)==="html")return e;let t=e.assignedSlot||e.parentNode||ao(e)&&e.host||Qe(e);return ao(t)?t.host:t}function pa(e){let t=Ze(e);return Je(t)?e.ownerDocument?e.ownerDocument.body:e.body:ue(t)&&co(t)?t:pa(t)}function _t(e,t,o){var n;t===void 0&&(t=[]),o===void 0&&(o=!0);let r=pa(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),s=ce(r);if(i){let a=_n(s);return t.concat(s,s.visualViewport||[],co(r)?r:[],a&&o?_t(a):[])}else return t.concat(r,_t(r,[],o))}function _n(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var Rn=g(D(),1),np=Rn.createContext(void 0);function ma(e=!1){let t=Rn.useContext(np);if(t===void 0&&!e)throw new Error(_e(16));return t}var ga=g(D(),1);function ba(e){let{focusableWhenDisabled:t,disabled:o,composite:n=!1,tabIndex:r=0,isNativeButton:i}=e,s=n&&t!==!1,a=n&&t===!1;return{props:ga.useMemo(()=>{let l={onKeyDown(c){o&&t&&c.key!=="Tab"&&c.preventDefault()}};return n||(l.tabIndex=r,!i&&o&&(l.tabIndex=t?r:-1)),(i&&(t||s)||!i&&o)&&(l["aria-disabled"]=o),i&&(!t||a)&&(l.disabled=o),l},[n,o,t,s,a,i,r])}}function ha(e={}){let{disabled:t=!1,focusableWhenDisabled:o,tabIndex:n=0,native:r=!0,composite:i}=e,s=uo.useRef(null),a=ma(!0),d=i??a!==void 0,{props:l}=ba({focusableWhenDisabled:o,disabled:t,composite:d,tabIndex:n,isNativeButton:r}),c=uo.useCallback(()=>{let p=s.current;Or(p)&&d&&t&&l.disabled===void 0&&p.disabled&&(p.disabled=!1)},[t,l.disabled,d]);j(c,[c]);let u=uo.useCallback((p={})=>{let{onClick:f,onMouseDown:h,onKeyUp:v,onKeyDown:b,onPointerDown:E,...x}=p;return ke({type:r?"button":void 0,onClick(w){if(t){w.preventDefault();return}f?.(w)},onMouseDown(w){t||h?.(w)},onKeyDown(w){if(t||(Mo(w),b?.(w),w.baseUIHandlerPrevented))return;let R=w.target===w.currentTarget,P=w.currentTarget,_=Or(P),O=!r&&rp(P),L=R&&(r?_:!O),z=w.key==="Enter",B=w.key===" ",M=P.getAttribute("role"),C=M?.startsWith("menuitem")||M==="option"||M==="gridcell";if(R&&d&&B){if(w.defaultPrevented&&C)return;w.preventDefault(),O||r&&_?(P.click(),w.preventBaseUIHandler()):L&&(f?.(w),w.preventBaseUIHandler());return}L&&(!r&&(B||z)&&w.preventDefault(),!r&&z&&f?.(w))},onKeyUp(w){if(!t){if(Mo(w),v?.(w),w.target===w.currentTarget&&r&&d&&Or(w.currentTarget)&&w.key===" "){w.preventDefault();return}w.baseUIHandlerPrevented||w.target===w.currentTarget&&!r&&!d&&w.key===" "&&f?.(w)}},onPointerDown(w){if(t){w.preventDefault();return}E?.(w)}},r?void 0:{role:"button"},l,x)},[t,l,d,r]),m=G(p=>{s.current=p,c()});return{getButtonProps:u,buttonRef:m}}function Or(e){return ue(e)&&e.tagName==="BUTTON"}function rp(e){return!!(e?.tagName==="A"&&e?.href)}var Rt=typeof navigator<"u",Lr=ip(),wa=ap(),Sn=sp(),Mb=typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter:none"),Ab=Lr.platform==="MacIntel"&&Lr.maxTouchPoints>1?!0:/iP(hone|ad|od)|iOS/.test(Lr.platform),Nb=Rt&&/firefox/i.test(Sn),va=Rt&&/apple/i.test(navigator.vendor),Ib=Rt&&/Edg/i.test(Sn),zb=Rt&&/android/i.test(wa)||/android/i.test(Sn),ya=Rt&&wa.toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints,xa=Sn.includes("jsdom/");function ip(){if(!Rt)return{platform:"",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??-1}}function sp(){if(!Rt)return"";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:t,version:o})=>`${t}/${o}`).join(" "):navigator.userAgent}function ap(){if(!Rt)return"";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??""}var Mr="data-base-ui-focusable",Ar="active",Nr="selected",Ir="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function Pn(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function ne(e,t){if(!e||!t)return!1;let o=t.getRootNode?.();if(e.contains(t))return!0;if(o&&ao(o)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function Oe(e){return"composedPath"in e?e.composedPath()[0]:e.target}function jt(e,t){if(!Y(e))return!1;let o=e;if(t.hasElement(o))return!o.hasAttribute("data-trigger-disabled");for(let[,n]of t.entries())if(ne(n,o))return!n.hasAttribute("data-trigger-disabled");return!1}function Fe(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);let o=e;return o.target!=null&&t.contains(o.target)}function _a(e){return e.matches("html,body")}function Ra(e){return ue(e)&&e.matches(Ir)}function zr(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${Ir}`)!=null}function Sa(e){if(!e||xa)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function $e(e,t,o=!0){return e.filter(r=>r.parentId===t).flatMap(r=>[...!o||r.context?.open?[r]:[],...$e(e,r.id,o)])}function Pa(e){return"nativeEvent"in e}function Vt(e,t){let o=["mouse","pen"];return t||o.push("",void 0),o.includes(e)}function Ea(e){let t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}var ka=["top","right","bottom","left"];var St=Math.min,Le=Math.max,Pt=Math.round,zo=Math.floor,et=e=>({x:e,y:e}),cp={left:"right",right:"left",bottom:"top",top:"bottom"};function Do(e,t,o){return Le(e,St(t,o))}function tt(e,t){return typeof e=="function"?e(t):e}function ye(e){return e.split("-")[0]}function ot(e){return e.split("-")[1]}function Tn(e){return e==="x"?"y":"x"}function Bo(e){return e==="y"?"height":"width"}function Ie(e){let t=e[0];return t==="t"||t==="b"?"y":"x"}function Ho(e){return Tn(Ie(e))}function Oa(e,t,o){o===void 0&&(o=!1);let n=ot(e),r=Ho(e),i=Bo(r),s=r==="x"?n===(o?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=Io(s)),[s,Io(s)]}function La(e){let t=Io(e);return[En(e),t,En(t)]}function En(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var Ta=["left","right"],Ca=["right","left"],lp=["top","bottom"],dp=["bottom","top"];function up(e,t,o){switch(e){case"top":case"bottom":return o?t?Ca:Ta:t?Ta:Ca;case"left":case"right":return t?lp:dp;default:return[]}}function Ma(e,t,o,n){let r=ot(e),i=up(ye(e),o==="start",n);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(En)))),i}function Io(e){let t=ye(e);return cp[t]+e.slice(t.length)}function fp(e){return{top:0,right:0,bottom:0,left:0,...e}}function Cn(e){return typeof e!="number"?fp(e):{top:e,right:e,bottom:e,left:e}}function Gt(e){let{x:t,y:o,width:n,height:r}=e;return{width:n,height:r,top:o,left:t,right:t+n,bottom:o+r,x:t,y:o}}function be(e){return e?.ownerDocument||document}function J(e,t,o,n){return e.addEventListener(t,o,n),()=>{e.removeEventListener(t,o,n)}}var Aa=g(D(),1);function kn(e){let{enabled:t=!0,open:o,ref:n,onComplete:r}=e,i=G(r),s=so(n,o,!1);Aa.useEffect(()=>{if(!t)return;let a=new AbortController;return s(i,a.signal),()=>{a.abort()}},[t,o,i,s])}var Na=g(D(),1);function Ia(e){let t=Na.useRef(!0);t.current&&(t.current=!1,e())}var jo=0,He=class e{static create(){return new e}currentId=jo;start(t,o){this.clear(),this.currentId=setTimeout(()=>{this.currentId=jo,o()},t)}isStarted(){return this.currentId!==jo}clear=()=>{this.currentId!==jo&&(clearTimeout(this.currentId),this.currentId=jo)};disposeEffect=()=>this.clear};function gt(){let e=de(He.create).current;return ro(e.disposeEffect),e}var ze=g(D(),1);function pp(e,t){return t!=null&&!Vt(t)?0:typeof e=="function"?e():e}function Yt(e,t,o){let n=pp(e,o);return typeof n=="number"?n:n?.[t]}function Dr(e){return typeof e=="function"?e():e}function On(e,t){return t||e==="click"||e==="mousedown"}var za=g(K(),1),Da=ze.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new He,currentIdRef:{current:null},currentContextRef:{current:null}});function Br(e){let{children:t,delay:o,timeoutMs:n=0}=e,r=ze.useRef(o),i=ze.useRef(o),s=ze.useRef(null),a=ze.useRef(null),d=gt();return(0,za.jsx)(Da.Provider,{value:ze.useMemo(()=>({hasProvider:!0,delayRef:r,initialDelayRef:i,currentIdRef:s,timeoutMs:n,currentContextRef:a,timeout:d}),[n,d]),children:t})}function Hr(e,t={open:!1}){let o="rootStore"in e?e.rootStore:e,n=o.useState("floatingId"),{open:r}=t,i=ze.useContext(Da),{currentIdRef:s,delayRef:a,timeoutMs:d,initialDelayRef:l,currentContextRef:c,hasProvider:u,timeout:m}=i,[p,f]=ze.useState(!1);return j(()=>{function h(){f(!1),c.current?.setIsInstantPhase(!1),s.current=null,c.current=null,a.current=l.current}if(s.current&&!r&&s.current===n){if(f(!1),d){let v=n;return m.start(d,()=>{o.select("open")||s.current&&s.current!==v||h()}),()=>{m.clear()}}h()}},[r,n,s,a,d,l,c,m,o]),j(()=>{if(!r)return;let h=c.current,v=s.current;m.clear(),c.current={onOpenChange:o.setOpen,setIsInstantPhase:f},s.current=n,a.current={open:0,close:Yt(l.current,"close")},v!==null&&v!==n?(f(!0),h?.setIsInstantPhase(!0),h?.onOpenChange(!1,ee(W.none))):(f(!1),h?.setIsInstantPhase(!1))},[r,n,o,s,a,d,l,c,m]),j(()=>()=>{c.current=null},[c]),ze.useMemo(()=>({hasProvider:u,delayRef:a,isInstantPhase:p}),[u,a,p])}function nt(...e){return()=>{for(let t=0;t<e.length;t+=1){let o=e[t];o&&o()}}}function rt(e){let t=de(mp,e).current;return t.next=e,j(t.effect),t}function mp(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}function fo(e){return`data-base-ui-${e}`}var je=g(D(),1),ja=g(xt(),1);var Ba={style:{transition:"none"}};var gp="data-base-ui-swipe-ignore",bp="data-swipe-ignore",wh=`[${gp}]`,vh=`[${bp}]`;var Ha={fallbackAxisSide:"end"};var Va=g(K(),1),hp=je.createContext(null),wp=()=>je.useContext(hp),vp=fo("portal");function jr(e={}){let{ref:t,container:o,componentProps:n=ge,elementProps:r}=e,i=yt(),a=wp()?.portalNode,[d,l]=je.useState(null),[c,u]=je.useState(null),m=G(v=>{v!==null&&u(v)}),p=je.useRef(null);j(()=>{if(o===null){p.current&&(p.current=null,u(null),l(null));return}if(i==null)return;let v=(o&&(yn(o)?o:o.current))??a??document.body;if(v==null){p.current&&(p.current=null,u(null),l(null));return}p.current!==v&&(p.current=v,u(null),l(v))},[o,a,i]);let f=Re("div",n,{ref:[t,m],props:[{id:i,[vp]:""},r]});return{portalNode:c,portalSubtree:d&&f?ja.createPortal(f,d):null}}var Ft=g(D(),1);function Ga(){let e=new Map;return{emit(t,o){e.get(t)?.forEach(n=>n(o))},on(t,o){e.has(t)||e.set(t,new Set),e.get(t).add(o)},off(t,o){e.get(t)?.delete(o)}}}var yp=g(K(),1),xp=Ft.createContext(null),_p=Ft.createContext(null),po=()=>Ft.useContext(xp)?.id||null,Et=e=>{let t=Ft.useContext(_p);return e??t};var Me=g(D(),1);function Rp(e,t){let o=null,n=null,r=!1;return{contextElement:e||void 0,getBoundingClientRect(){let i=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},s=t.axis==="x"||t.axis==="both",a=t.axis==="y"||t.axis==="both",d=["mouseenter","mousemove"].includes(t.dataRef.current.openEvent?.type||"")&&t.pointerType!=="touch",l=i.width,c=i.height,u=i.x,m=i.y;return o==null&&t.x&&s&&(o=i.x-t.x),n==null&&t.y&&a&&(n=i.y-t.y),u-=o||0,m-=n||0,l=0,c=0,!r||d?(l=t.axis==="y"?i.width:0,c=t.axis==="x"?i.height:0,u=s&&t.x!=null?t.x:u,m=a&&t.y!=null?t.y:m):r&&!d&&(c=t.axis==="x"?i.height:c,l=t.axis==="y"?i.width:l),r=!0,{width:l,height:c,x:u,y:m,top:m,right:u+l,bottom:m+c,left:u}}}}function Ya(e){return e!=null&&e.clientX!=null}function Vr(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),i=o.useState("domReferenceElement"),s=o.context.dataRef,{enabled:a=!0,axis:d="both"}=t,l=Me.useRef(!1),c=Me.useRef(null),[u,m]=Me.useState(),[p,f]=Me.useState([]),h=G((y,w,R)=>{l.current||s.current.openEvent&&!Ya(s.current.openEvent)||o.set("positionReference",Rp(R??i,{x:y,y:w,axis:d,dataRef:s,pointerType:u}))}),v=G(y=>{n?c.current||f([]):h(y.clientX,y.clientY,y.currentTarget)}),b=Vt(u)?r:n,E=Me.useCallback(()=>{if(!b||!a)return;let y=ce(r);function w(R){let P=Oe(R);ne(r,P)?(c.current?.(),c.current=null):h(R.clientX,R.clientY)}if(!s.current.openEvent||Ya(s.current.openEvent)){let R=()=>{c.current?.(),c.current=null};return c.current=J(y,"mousemove",w),R}o.set("positionReference",i)},[b,a,r,s,i,o,h]);Me.useEffect(()=>E(),[E,p]),Me.useEffect(()=>{a&&!r&&(l.current=!1)},[a,r]),Me.useEffect(()=>{!a&&n&&(l.current=!0)},[a,n]);let x=Me.useMemo(()=>{function y(w){m(w.pointerType)}return{onPointerDown:y,onPointerEnter:y,onMouseMove:v,onMouseEnter:v}},[v]);return Me.useMemo(()=>a?{reference:x,trigger:x}:{},[a,x])}var De=g(D(),1);var Sp={intentional:"onClick",sloppy:"onPointerDown"};function Pp(){return!1}function Ep(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Gr(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),{dataRef:i}=o.context,{enabled:s=!0,escapeKey:a=!0,outsidePress:d=!0,outsidePressEvent:l="sloppy",referencePress:c=Pp,referencePressEvent:u="sloppy",bubbles:m,externalTree:p}=t,f=Et(p),h=G(typeof d=="function"?d:()=>!1),v=typeof d=="function"?h:d,b=v!==!1,E=G(()=>l),x=De.useRef(!1),y=De.useRef(!1),w=De.useRef(!1),{escapeKey:R,outsidePress:P}=Ep(m),_=De.useRef(null),O=gt(),L=gt(),z=G(()=>{L.clear(),i.current.insideReactTree=!1}),B=De.useRef(!1),M=De.useRef(""),C=G(c),S=G(F=>{if(!n||!s||!a||F.key!=="Escape"||B.current)return;let X=i.current.floatingContext?.nodeId,U=f?$e(f.nodesRef.current,X):[];if(!R&&U.length>0){let q=!0;if(U.forEach(re=>{re.context?.open&&!re.context.dataRef.current.__escapeKeyBubbles&&(q=!1)}),!q)return}let ae=Pa(F)?F.nativeEvent:F,ie=ee(W.escapeKey,ae);o.setOpen(!1,ie),!R&&!ie.isPropagationAllowed&&F.stopPropagation()}),A=G(()=>{i.current.insideReactTree=!0,L.start(0,z)});De.useEffect(()=>{if(!n||!s)return;i.current.__escapeKeyBubbles=R,i.current.__outsidePressBubbles=P;let F=new He,X=new He;function U(){F.clear(),B.current=!0}function ae(){F.start(lo()?5:0,()=>{B.current=!1})}function ie(){w.current=!0,X.start(0,()=>{w.current=!1})}function q(){x.current=!1,y.current=!1}function re(){let N=M.current,H=N==="pen"||!N?"mouse":N,le=E(),xe=typeof le=="function"?le():le;return typeof xe=="string"?xe:xe[H]}function Ee(N){let H=re();return H==="intentional"&&N.type!=="click"||H==="sloppy"&&N.type==="click"}function he(N){let H=i.current.floatingContext?.nodeId,le=f&&$e(f.nodesRef.current,H).some(xe=>Fe(N,xe.context?.elements.floating));return Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement"))||le}function Te(N){if(Ee(N)){z();return}if(i.current.insideReactTree){z();return}let H=Oe(N),le=`[${fo("inert")}]`,xe=Y(H)?H.getRootNode():null,wt=Array.from((ao(xe)?xe:be(o.select("floatingElement"))).querySelectorAll(le)),To=o.context.triggerElements;if(H&&(To.hasElement(H)||To.hasMatchingElement(me=>ne(me,H))))return;let ut=Y(H)?H:null;for(;ut&&!Je(ut);){let me=Ze(ut);if(Je(me)||!Y(me))break;ut=me}if(wt.length&&Y(H)&&!_a(H)&&!ne(H,o.select("floatingElement"))&&wt.every(me=>!ne(ut,me)))return;if(ue(H)&&!("touches"in N)){let me=Je(H),ft=Se(H),Co=/auto|scroll/,dn=me||Co.test(ft.overflowX),un=me||Co.test(ft.overflowY),fn=dn&&H.clientWidth>0&&H.scrollWidth>H.clientWidth,te=un&&H.clientHeight>0&&H.scrollHeight>H.clientHeight,Ce=ft.direction==="rtl",Ye=te&&(Ce?N.offsetX<=H.offsetWidth-H.clientWidth:N.offsetX>H.clientWidth),Ne=fn&&N.offsetY>H.clientHeight;if(Ye||Ne)return}if(he(N))return;if(re()==="intentional"&&w.current){X.clear(),w.current=!1;return}if(typeof v=="function"&&!v(N))return;let ln=i.current.floatingContext?.nodeId,Nt=f?$e(f.nodesRef.current,ln):[];if(Nt.length>0){let me=!0;if(Nt.forEach(ft=>{ft.context?.open&&!ft.context.dataRef.current.__outsidePressBubbles&&(me=!1)}),!me)return}o.setOpen(!1,ee(W.outsidePress,N)),z()}function we(N){re()!=="sloppy"||N.pointerType==="touch"||!o.select("open")||!s||Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement"))||Te(N)}function Ot(N){if(re()!=="sloppy"||!o.select("open")||!s||Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement")))return;let H=N.touches[0];H&&(_.current={startTime:Date.now(),startX:H.clientX,startY:H.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},O.start(1e3,()=>{_.current&&(_.current.dismissOnTouchEnd=!1,_.current.dismissOnMouseDown=!1)}))}function Lt(N,H){let le=Oe(N);if(!le)return;let xe=J(le,N.type,()=>{H(N),xe()})}function sn(N){M.current="touch",Lt(N,Ot)}function $t(N){O.clear(),N.type==="pointerdown"&&(M.current=N.pointerType),!(N.type==="mousedown"&&_.current&&!_.current.dismissOnMouseDown)&&Lt(N,H=>{H.type==="pointerdown"?we(H):Te(H)})}function Mt(N){if(!x.current)return;let H=y.current;if(q(),re()==="intentional"){if(N.type==="pointercancel"){H&&ie();return}if(!he(N)){if(H){ie();return}typeof v=="function"&&!v(N)||(X.clear(),w.current=!0,z())}}}function ht(N){if(re()!=="sloppy"||!_.current||Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement")))return;let H=N.touches[0];if(!H)return;let le=Math.abs(H.clientX-_.current.startX),xe=Math.abs(H.clientY-_.current.startY),wt=Math.sqrt(le*le+xe*xe);wt>5&&(_.current.dismissOnTouchEnd=!0),wt>10&&(Te(N),O.clear(),_.current=null)}function At(N){Lt(N,ht)}function an(N){re()!=="sloppy"||!_.current||Fe(N,o.select("floatingElement"))||Fe(N,o.select("domReferenceElement"))||(_.current.dismissOnTouchEnd&&Te(N),O.clear(),_.current=null)}function cn(N){Lt(N,an)}let pe=be(r),eo=nt(a&&nt(J(pe,"keydown",S),J(pe,"compositionstart",U),J(pe,"compositionend",ae)),b&&nt(J(pe,"click",$t,!0),J(pe,"pointerdown",$t,!0),J(pe,"pointerup",Mt,!0),J(pe,"pointercancel",Mt,!0),J(pe,"mousedown",$t,!0),J(pe,"mouseup",Mt,!0),J(pe,"touchstart",sn,!0),J(pe,"touchmove",At,!0),J(pe,"touchend",cn,!0)));return()=>{eo(),F.clear(),X.clear(),q(),w.current=!1}},[i,r,a,b,v,n,s,R,P,S,z,E,f,o,O]),De.useEffect(z,[v,z]);let I=De.useMemo(()=>({onKeyDown:S,[Sp[u]]:F=>{C()&&o.setOpen(!1,ee(W.triggerPress,F.nativeEvent))},...u!=="intentional"&&{onClick(F){C()&&o.setOpen(!1,ee(W.triggerPress,F.nativeEvent))}}}),[S,o,u,C]),T=G(F=>{if(!n||!s||F.button!==0)return;let X=Oe(F.nativeEvent);ne(o.select("floatingElement"),X)&&(x.current||(x.current=!0,y.current=!1))}),k=G(F=>{!n||!s||(F.defaultPrevented||F.nativeEvent.defaultPrevented)&&x.current&&(y.current=!0)}),V=De.useMemo(()=>({onKeyDown:S,onPointerDown:k,onMouseDown:k,onClickCapture:A,onMouseDownCapture(F){A(),T(F)},onPointerDownCapture(F){A(),T(F)},onMouseUpCapture:A,onTouchEndCapture:A,onTouchMoveCapture:A}),[S,A,T,k]);return De.useMemo(()=>s?{reference:I,floating:V,trigger:I}:{},[s,I,V])}var Ae=g(D(),1);function Fa(e,t,o){let{reference:n,floating:r}=e,i=Ie(t),s=Ho(t),a=Bo(s),d=ye(t),l=i==="y",c=n.x+n.width/2-r.width/2,u=n.y+n.height/2-r.height/2,m=n[a]/2-r[a]/2,p;switch(d){case"top":p={x:c,y:n.y-r.height};break;case"bottom":p={x:c,y:n.y+n.height};break;case"right":p={x:n.x+n.width,y:u};break;case"left":p={x:n.x-r.width,y:u};break;default:p={x:n.x,y:n.y}}switch(ot(t)){case"start":p[s]-=m*(o&&l?-1:1);break;case"end":p[s]+=m*(o&&l?-1:1);break}return p}async function Xa(e,t){var o;t===void 0&&(t={});let{x:n,y:r,platform:i,rects:s,elements:a,strategy:d}=e,{boundary:l="clippingAncestors",rootBoundary:c="viewport",elementContext:u="floating",altBoundary:m=!1,padding:p=0}=tt(t,e),f=Cn(p),v=a[m?u==="floating"?"reference":"floating":u],b=Gt(await i.getClippingRect({element:(o=await(i.isElement==null?void 0:i.isElement(v)))==null||o?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:l,rootBoundary:c,strategy:d})),E=u==="floating"?{x:n,y:r,width:s.floating.width,height:s.floating.height}:s.reference,x=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),y=await(i.isElement==null?void 0:i.isElement(x))?await(i.getScale==null?void 0:i.getScale(x))||{x:1,y:1}:{x:1,y:1},w=Gt(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:E,offsetParent:x,strategy:d}):E);return{top:(b.top-w.top+f.top)/y.y,bottom:(w.bottom-b.bottom+f.bottom)/y.y,left:(b.left-w.left+f.left)/y.x,right:(w.right-b.right+f.right)/y.x}}var Tp=50,Ua=async(e,t,o)=>{let{placement:n="bottom",strategy:r="absolute",middleware:i=[],platform:s}=o,a=s.detectOverflow?s:{...s,detectOverflow:Xa},d=await(s.isRTL==null?void 0:s.isRTL(t)),l=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:c,y:u}=Fa(l,n,d),m=n,p=0,f={};for(let h=0;h<i.length;h++){let v=i[h];if(!v)continue;let{name:b,fn:E}=v,{x,y,data:w,reset:R}=await E({x:c,y:u,initialPlacement:n,placement:m,strategy:r,middlewareData:f,rects:l,platform:a,elements:{reference:e,floating:t}});c=x??c,u=y??u,f[b]={...f[b],...w},R&&p<Tp&&(p++,typeof R=="object"&&(R.placement&&(m=R.placement),R.rects&&(l=R.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:r}):R.rects),{x:c,y:u}=Fa(l,m,d)),h=-1)}return{x:c,y:u,placement:m,strategy:r,middlewareData:f}};var Ka=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var o,n;let{placement:r,middlewareData:i,rects:s,initialPlacement:a,platform:d,elements:l}=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:m,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:h=!0,...v}=tt(e,t);if((o=i.arrow)!=null&&o.alignmentOffset)return{};let b=ye(r),E=Ie(a),x=ye(a)===a,y=await(d.isRTL==null?void 0:d.isRTL(l.floating)),w=m||(x||!h?[Io(a)]:La(a)),R=f!=="none";!m&&R&&w.push(...Ma(a,h,f,y));let P=[a,...w],_=await d.detectOverflow(t,v),O=[],L=((n=i.flip)==null?void 0:n.overflows)||[];if(c&&O.push(_[b]),u){let C=Oa(r,s,y);O.push(_[C[0]],_[C[1]])}if(L=[...L,{placement:r,overflows:O}],!O.every(C=>C<=0)){var z,B;let C=(((z=i.flip)==null?void 0:z.index)||0)+1,S=P[C];if(S&&(!(u==="alignment"?E!==Ie(S):!1)||L.every(T=>Ie(T.placement)===E?T.overflows[0]>0:!0)))return{data:{index:C,overflows:L},reset:{placement:S}};let A=(B=L.filter(I=>I.overflows[0]<=0).sort((I,T)=>I.overflows[1]-T.overflows[1])[0])==null?void 0:B.placement;if(!A)switch(p){case"bestFit":{var M;let I=(M=L.filter(T=>{if(R){let k=Ie(T.placement);return k===E||k==="y"}return!0}).map(T=>[T.placement,T.overflows.filter(k=>k>0).reduce((k,V)=>k+V,0)]).sort((T,k)=>T[1]-k[1])[0])==null?void 0:M[0];I&&(A=I);break}case"initialPlacement":A=a;break}if(r!==A)return{reset:{placement:A}}}return{}}}};function qa(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Wa(e){return ka.some(t=>e[t]>=0)}var Za=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){let{rects:o,platform:n}=t,{strategy:r="referenceHidden",...i}=tt(e,t);switch(r){case"referenceHidden":{let s=await n.detectOverflow(t,{...i,elementContext:"reference"}),a=qa(s,o.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:Wa(a)}}}case"escaped":{let s=await n.detectOverflow(t,{...i,altBoundary:!0}),a=qa(s,o.floating);return{data:{escapedOffsets:a,escaped:Wa(a)}}}default:return{}}}}};var Qa=new Set(["left","top"]);async function Cp(e,t){let{placement:o,platform:n,elements:r}=e,i=await(n.isRTL==null?void 0:n.isRTL(r.floating)),s=ye(o),a=ot(o),d=Ie(o)==="y",l=Qa.has(s)?-1:1,c=i&&d?-1:1,u=tt(t,e),{mainAxis:m,crossAxis:p,alignmentAxis:f}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return a&&typeof f=="number"&&(p=a==="end"?f*-1:f),d?{x:p*c,y:m*l}:{x:m*l,y:p*c}}var Ja=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var o,n;let{x:r,y:i,placement:s,middlewareData:a}=t,d=await Cp(t,e);return s===((o=a.offset)==null?void 0:o.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:r+d.x,y:i+d.y,data:{...d,placement:s}}}}},$a=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:o,y:n,placement:r,platform:i}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:d={fn:b=>{let{x:E,y:x}=b;return{x:E,y:x}}},...l}=tt(e,t),c={x:o,y:n},u=await i.detectOverflow(t,l),m=Ie(ye(r)),p=Tn(m),f=c[p],h=c[m];if(s){let b=p==="y"?"top":"left",E=p==="y"?"bottom":"right",x=f+u[b],y=f-u[E];f=Do(x,f,y)}if(a){let b=m==="y"?"top":"left",E=m==="y"?"bottom":"right",x=h+u[b],y=h-u[E];h=Do(x,h,y)}let v=d.fn({...t,[p]:f,[m]:h});return{...v,data:{x:v.x-o,y:v.y-n,enabled:{[p]:s,[m]:a}}}}}},ec=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:o,y:n,placement:r,rects:i,middlewareData:s}=t,{offset:a=0,mainAxis:d=!0,crossAxis:l=!0}=tt(e,t),c={x:o,y:n},u=Ie(r),m=Tn(u),p=c[m],f=c[u],h=tt(a,t),v=typeof h=="number"?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(d){let x=m==="y"?"height":"width",y=i.reference[m]-i.floating[x]+v.mainAxis,w=i.reference[m]+i.reference[x]-v.mainAxis;p<y?p=y:p>w&&(p=w)}if(l){var b,E;let x=m==="y"?"width":"height",y=Qa.has(ye(r)),w=i.reference[u]-i.floating[x]+(y&&((b=s.offset)==null?void 0:b[u])||0)+(y?0:v.crossAxis),R=i.reference[u]+i.reference[x]+(y?0:((E=s.offset)==null?void 0:E[u])||0)-(y?v.crossAxis:0);f<w?f=w:f>R&&(f=R)}return{[m]:p,[u]:f}}}},tc=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var o,n;let{placement:r,rects:i,platform:s,elements:a}=t,{apply:d=()=>{},...l}=tt(e,t),c=await s.detectOverflow(t,l),u=ye(r),m=ot(r),p=Ie(r)==="y",{width:f,height:h}=i.floating,v,b;u==="top"||u==="bottom"?(v=u,b=m===(await(s.isRTL==null?void 0:s.isRTL(a.floating))?"start":"end")?"left":"right"):(b=u,v=m==="end"?"top":"bottom");let E=h-c.top-c.bottom,x=f-c.left-c.right,y=St(h-c[v],E),w=St(f-c[b],x),R=!t.middlewareData.shift,P=y,_=w;if((o=t.middlewareData.shift)!=null&&o.enabled.x&&(_=x),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(P=E),R&&!m){let L=Le(c.left,0),z=Le(c.right,0),B=Le(c.top,0),M=Le(c.bottom,0);p?_=f-2*(L!==0||z!==0?L+z:Le(c.left,c.right)):P=h-2*(B!==0||M!==0?B+M:Le(c.top,c.bottom))}await d({...t,availableWidth:_,availableHeight:P});let O=await s.getDimensions(a.floating);return f!==O.width||h!==O.height?{reset:{rects:!0}}:{}}}};function ic(e){let t=Se(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=ue(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n,a=Pt(o)!==i||Pt(n)!==s;return a&&(o=i,n=s),{width:o,height:n,$:a}}function Fr(e){return Y(e)?e:e.contextElement}function mo(e){let t=Fr(e);if(!ue(t))return et(1);let o=t.getBoundingClientRect(),{width:n,height:r,$:i}=ic(t),s=(i?Pt(o.width):o.width)/n,a=(i?Pt(o.height):o.height)/r;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var kp=et(0);function sc(e){let t=ce(e);return!lo()||!t.visualViewport?kp:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Op(e,t,o){return t===void 0&&(t=!1),!o||t&&o!==ce(e)?!1:t}function qt(e,t,o,n){t===void 0&&(t=!1),o===void 0&&(o=!1);let r=e.getBoundingClientRect(),i=Fr(e),s=et(1);t&&(n?Y(n)&&(s=mo(n)):s=mo(e));let a=Op(i,o,n)?sc(i):et(0),d=(r.left+a.x)/s.x,l=(r.top+a.y)/s.y,c=r.width/s.x,u=r.height/s.y;if(i){let m=ce(i),p=n&&Y(n)?ce(n):n,f=m,h=_n(f);for(;h&&n&&p!==f;){let v=mo(h),b=h.getBoundingClientRect(),E=Se(h),x=b.left+(h.clientLeft+parseFloat(E.paddingLeft))*v.x,y=b.top+(h.clientTop+parseFloat(E.paddingTop))*v.y;d*=v.x,l*=v.y,c*=v.x,u*=v.y,d+=x,l+=y,f=ce(h),h=_n(f)}}return Gt({width:c,height:u,x:d,y:l})}function Ln(e,t){let o=No(e).scrollLeft;return t?t.left+o:qt(Qe(e)).left+o}function ac(e,t){let o=e.getBoundingClientRect(),n=o.left+t.scrollLeft-Ln(e,o),r=o.top+t.scrollTop;return{x:n,y:r}}function Lp(e){let{elements:t,rect:o,offsetParent:n,strategy:r}=e,i=r==="fixed",s=Qe(n),a=t?Ao(t.floating):!1;if(n===s||a&&i)return o;let d={scrollLeft:0,scrollTop:0},l=et(1),c=et(0),u=ue(n);if((u||!u&&!i)&&((Ht(n)!=="body"||co(s))&&(d=No(n)),u)){let p=qt(n);l=mo(n),c.x=p.x+n.clientLeft,c.y=p.y+n.clientTop}let m=s&&!u&&!i?ac(s,d):et(0);return{width:o.width*l.x,height:o.height*l.y,x:o.x*l.x-d.scrollLeft*l.x+c.x+m.x,y:o.y*l.y-d.scrollTop*l.y+c.y+m.y}}function Mp(e){return Array.from(e.getClientRects())}function Ap(e){let t=Qe(e),o=No(e),n=e.ownerDocument.body,r=Le(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),i=Le(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight),s=-o.scrollLeft+Ln(e),a=-o.scrollTop;return Se(n).direction==="rtl"&&(s+=Le(t.clientWidth,n.clientWidth)-r),{width:r,height:i,x:s,y:a}}var oc=25;function Np(e,t){let o=ce(e),n=Qe(e),r=o.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,d=0;if(r){i=r.width,s=r.height;let c=lo();(!c||c&&t==="fixed")&&(a=r.offsetLeft,d=r.offsetTop)}let l=Ln(n);if(l<=0){let c=n.ownerDocument,u=c.body,m=getComputedStyle(u),p=c.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,f=Math.abs(n.clientWidth-u.clientWidth-p);f<=oc&&(i-=f)}else l<=oc&&(i+=l);return{width:i,height:s,x:a,y:d}}function Ip(e,t){let o=qt(e,!0,t==="fixed"),n=o.top+e.clientTop,r=o.left+e.clientLeft,i=ue(e)?mo(e):et(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,d=r*i.x,l=n*i.y;return{width:s,height:a,x:d,y:l}}function nc(e,t,o){let n;if(t==="viewport")n=Np(e,o);else if(t==="document")n=Ap(Qe(e));else if(Y(t))n=Ip(t,o);else{let r=sc(e);n={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return Gt(n)}function cc(e,t){let o=Ze(e);return o===t||!Y(o)||Je(o)?!1:Se(o).position==="fixed"||cc(o,t)}function zp(e,t){let o=t.get(e);if(o)return o;let n=_t(e,[],!1).filter(a=>Y(a)&&Ht(a)!=="body"),r=null,i=Se(e).position==="fixed",s=i?Ze(e):e;for(;Y(s)&&!Je(s);){let a=Se(s),d=xn(s);!d&&a.position==="fixed"&&(r=null),(i?!d&&!r:!d&&a.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||co(s)&&!d&&cc(e,s))?n=n.filter(c=>c!==s):r=a,s=Ze(s)}return t.set(e,n),n}function Dp(e){let{element:t,boundary:o,rootBoundary:n,strategy:r}=e,s=[...o==="clippingAncestors"?Ao(t)?[]:zp(t,this._c):[].concat(o),n],a=nc(t,s[0],r),d=a.top,l=a.right,c=a.bottom,u=a.left;for(let m=1;m<s.length;m++){let p=nc(t,s[m],r);d=Le(p.top,d),l=St(p.right,l),c=St(p.bottom,c),u=Le(p.left,u)}return{width:l-u,height:c-d,x:u,y:d}}function Bp(e){let{width:t,height:o}=ic(e);return{width:t,height:o}}function Hp(e,t,o){let n=ue(t),r=Qe(t),i=o==="fixed",s=qt(e,!0,i,t),a={scrollLeft:0,scrollTop:0},d=et(0);function l(){d.x=Ln(r)}if(n||!n&&!i)if((Ht(t)!=="body"||co(r))&&(a=No(t)),n){let p=qt(t,!0,i,t);d.x=p.x+t.clientLeft,d.y=p.y+t.clientTop}else r&&l();i&&!n&&r&&l();let c=r&&!n&&!i?ac(r,a):et(0),u=s.left+a.scrollLeft-d.x-c.x,m=s.top+a.scrollTop-d.y-c.y;return{x:u,y:m,width:s.width,height:s.height}}function Yr(e){return Se(e).position==="static"}function rc(e,t){if(!ue(e)||Se(e).position==="fixed")return null;if(t)return t(e);let o=e.offsetParent;return Qe(e)===o&&(o=o.ownerDocument.body),o}function lc(e,t){let o=ce(e);if(Ao(e))return o;if(!ue(e)){let r=Ze(e);for(;r&&!Je(r);){if(Y(r)&&!Yr(r))return r;r=Ze(r)}return o}let n=rc(e,t);for(;n&&ua(n)&&Yr(n);)n=rc(n,t);return n&&Je(n)&&Yr(n)&&!xn(n)?o:n||fa(e)||o}var jp=async function(e){let t=this.getOffsetParent||lc,o=this.getDimensions,n=await o(e.floating);return{reference:Hp(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function Vp(e){return Se(e).direction==="rtl"}var qr={convertOffsetParentRelativeRectToViewportRelativeRect:Lp,getDocumentElement:Qe,getClippingRect:Dp,getOffsetParent:lc,getElementRects:jp,getClientRects:Mp,getDimensions:Bp,getScale:mo,isElement:Y,isRTL:Vp};function dc(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Gp(e,t){let o=null,n,r=Qe(e);function i(){var a;clearTimeout(n),(a=o)==null||a.disconnect(),o=null}function s(a,d){a===void 0&&(a=!1),d===void 0&&(d=1),i();let l=e.getBoundingClientRect(),{left:c,top:u,width:m,height:p}=l;if(a||t(),!m||!p)return;let f=zo(u),h=zo(r.clientWidth-(c+m)),v=zo(r.clientHeight-(u+p)),b=zo(c),x={rootMargin:-f+"px "+-h+"px "+-v+"px "+-b+"px",threshold:Le(0,St(1,d))||1},y=!0;function w(R){let P=R[0].intersectionRatio;if(P!==d){if(!y)return s();P?s(!1,P):n=setTimeout(()=>{s(!1,1e-7)},1e3)}P===1&&!dc(l,e.getBoundingClientRect())&&s(),y=!1}try{o=new IntersectionObserver(w,{...x,root:r.ownerDocument})}catch{o=new IntersectionObserver(w,x)}o.observe(e)}return s(!0),i}function Vo(e,t,o,n){n===void 0&&(n={});let{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:d=!1}=n,l=Fr(e),c=r||i?[...l?_t(l):[],...t?_t(t):[]]:[];c.forEach(b=>{r&&b.addEventListener("scroll",o,{passive:!0}),i&&b.addEventListener("resize",o)});let u=l&&a?Gp(l,o):null,m=-1,p=null;s&&(p=new ResizeObserver(b=>{let[E]=b;E&&E.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var x;(x=p)==null||x.observe(t)})),o()}),l&&!d&&p.observe(l),t&&p.observe(t));let f,h=d?qt(e):null;d&&v();function v(){let b=qt(e);h&&!dc(h,b)&&o(),h=b,f=requestAnimationFrame(v)}return o(),()=>{var b;c.forEach(E=>{r&&E.removeEventListener("scroll",o),i&&E.removeEventListener("resize",o)}),u?.(),(b=p)==null||b.disconnect(),p=null,d&&cancelAnimationFrame(f)}}var uc=Ja;var fc=$a,pc=Ka,mc=tc,gc=Za;var bc=ec,Mn=(e,t,o)=>{let n=new Map,r={platform:qr,...o},i={...r.platform,_c:n};return Ua(e,t,{...r,platform:i})};var fe=g(D(),1),wc=g(D(),1),vc=g(xt(),1),Fp=typeof document<"u",qp=function(){},An=Fp?wc.useLayoutEffect:qp;function Nn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let o,n,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(o=e.length,o!==t.length)return!1;for(n=o;n--!==0;)if(!Nn(e[n],t[n]))return!1;return!0}if(r=Object.keys(e),o=r.length,o!==Object.keys(t).length)return!1;for(n=o;n--!==0;)if(!{}.hasOwnProperty.call(t,r[n]))return!1;for(n=o;n--!==0;){let i=r[n];if(!(i==="_owner"&&e.$$typeof)&&!Nn(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function yc(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function hc(e,t){let o=yc(e);return Math.round(t*o)/o}function Wr(e){let t=fe.useRef(e);return An(()=>{t.current=e}),t}function xc(e){e===void 0&&(e={});let{placement:t="bottom",strategy:o="absolute",middleware:n=[],platform:r,elements:{reference:i,floating:s}={},transform:a=!0,whileElementsMounted:d,open:l}=e,[c,u]=fe.useState({x:0,y:0,strategy:o,placement:t,middlewareData:{},isPositioned:!1}),[m,p]=fe.useState(n);Nn(m,n)||p(n);let[f,h]=fe.useState(null),[v,b]=fe.useState(null),E=fe.useCallback(T=>{T!==R.current&&(R.current=T,h(T))},[]),x=fe.useCallback(T=>{T!==P.current&&(P.current=T,b(T))},[]),y=i||f,w=s||v,R=fe.useRef(null),P=fe.useRef(null),_=fe.useRef(c),O=d!=null,L=Wr(d),z=Wr(r),B=Wr(l),M=fe.useCallback(()=>{if(!R.current||!P.current)return;let T={placement:t,strategy:o,middleware:m};z.current&&(T.platform=z.current),Mn(R.current,P.current,T).then(k=>{let V={...k,isPositioned:B.current!==!1};C.current&&!Nn(_.current,V)&&(_.current=V,vc.flushSync(()=>{u(V)}))})},[m,t,o,z,B]);An(()=>{l===!1&&_.current.isPositioned&&(_.current.isPositioned=!1,u(T=>({...T,isPositioned:!1})))},[l]);let C=fe.useRef(!1);An(()=>(C.current=!0,()=>{C.current=!1}),[]),An(()=>{if(y&&(R.current=y),w&&(P.current=w),y&&w){if(L.current)return L.current(y,w,M);M()}},[y,w,M,L,O]);let S=fe.useMemo(()=>({reference:R,floating:P,setReference:E,setFloating:x}),[E,x]),A=fe.useMemo(()=>({reference:y,floating:w}),[y,w]),I=fe.useMemo(()=>{let T={position:o,left:0,top:0};if(!A.floating)return T;let k=hc(A.floating,c.x),V=hc(A.floating,c.y);return a?{...T,transform:"translate("+k+"px, "+V+"px)",...yc(A.floating)>=1.5&&{willChange:"transform"}}:{position:o,left:k,top:V}},[o,a,A.floating,c.x,c.y]);return fe.useMemo(()=>({...c,update:M,refs:S,elements:A,floatingStyles:I}),[c,M,S,A,I])}var Xr=(e,t)=>{let o=uc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Ur=(e,t)=>{let o=fc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Kr=(e,t)=>({fn:bc(e).fn,options:[e,t]}),Zr=(e,t)=>{let o=pc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Qr=(e,t)=>{let o=mc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var Jr=(e,t)=>{let o=gc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var Z=(e,t,o,n,r,i,...s)=>{if(s.length>0)throw new Error(_e(1));let a;if(e&&t&&o&&n&&r&&i)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u),h=n(d,l,c,u),v=r(d,l,c,u);return i(m,p,f,h,v,l,c,u)};else if(e&&t&&o&&n&&r)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u),h=n(d,l,c,u);return r(m,p,f,h,l,c,u)};else if(e&&t&&o&&n)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u);return n(m,p,f,l,c,u)};else if(e&&t&&o)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u);return o(m,p,l,c,u)};else if(e&&t)a=(d,l,c,u)=>{let m=e(d,l,c,u);return t(m,l,c,u)};else if(e)a=e;else throw new Error("Missing arguments");return a};var Ac=g(D(),1),ri=g(ei(),1),Nc=g(Cc(),1);var kc=g(D(),1);var ti=[],oi;function Oc(){return oi}function Lc(e){ti.push(e)}function ni(e){let t=(o,n)=>{let r=de(lm).current,i;try{oi=r;for(let s of ti)s.before(r);i=e(o,n);for(let s of ti)s.after(r);r.didInitialize=!0}finally{oi=void 0}return i};return t.displayName=e.displayName||e.name,t}function Mc(e){return kc.forwardRef(ni(e))}function lm(){return{didInitialize:!1}}var dm=no(19),um=dm?pm:mm;function zn(e,t,o,n,r){return um(e,t,o,n,r)}function fm(e,t,o,n,r){let i=Ac.useCallback(()=>t(e.getSnapshot(),o,n,r),[e,t,o,n,r]);return(0,ri.useSyncExternalStore)(e.subscribe,i,i)}Lc({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let o=0;o<e.syncHooks.length;o+=1){let n=e.syncHooks[o],r=n.selector(n.store.state,n.a1,n.a2,n.a3);(n.didChange||!Object.is(n.value,r))&&(t=!0,n.value=r,n.didChange=!1)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let o=new Set;for(let r of e.syncHooks)o.add(r.store);let n=[];for(let r of o)n.push(r.subscribe(t));return()=>{for(let r of n)r()}}),(0,ri.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function pm(e,t,o,n,r){let i=Oc();if(!i)return fm(e,t,o,n,r);let s=i.syncIndex;i.syncIndex+=1;let a;return i.didInitialize?(a=i.syncHooks[s],(a.store!==e||a.selector!==t||!Object.is(a.a1,o)||!Object.is(a.a2,n)||!Object.is(a.a3,r))&&(a.store!==e&&(i.didChangeStore=!0),a.store=e,a.selector=t,a.a1=o,a.a2=n,a.a3=r,a.didChange=!0)):(a={store:e,selector:t,a1:o,a2:n,a3:r,value:t(e.getSnapshot(),o,n,r),didChange:!1},i.syncHooks.push(a)),a.value}function mm(e,t,o,n,r){return(0,Nc.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,i=>t(i,o,n,r))}var Dn=class{constructor(t){this.state=t,this.listeners=new Set,this.updateTick=0}subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});getSnapshot=()=>this.state;setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;let o=this.updateTick;for(let n of this.listeners){if(o!==this.updateTick)return;n(t)}}update(t){for(let o in t)if(!Object.is(this.state[o],t[o])){this.setState({...this.state,...t});return}}set(t,o){Object.is(this.state[t],o)||this.setState({...this.state,[t]:o})}notifyAll(){let t={...this.state};this.setState(t)}use(t,o,n,r){return zn(this,t,o,n,r)}};var Wt=g(D(),1);var bo=class extends Dn{constructor(t,o={},n){super(t),this.context=o,this.selectors=n}useSyncedValue(t,o){Wt.useDebugValue(t),j(()=>{this.state[t]!==o&&this.set(t,o)},[t,o])}useSyncedValueWithCleanup(t,o){let n=this;j(()=>(n.state[t]!==o&&n.set(t,o),()=>{n.set(t,void 0)}),[n,t,o])}useSyncedValues(t){let o=this,n=Object.values(t);j(()=>{o.update(t)},[o,...n])}useControlledProp(t,o){Wt.useDebugValue(t);let n=o!==void 0;j(()=>{n&&!Object.is(this.state[t],o)&&super.setState({...this.state,[t]:o})},[t,o,n])}select(t,o,n,r){let i=this.selectors[t];return i(this.state,o,n,r)}useState(t,o,n,r){return Wt.useDebugValue(t),zn(this,this.selectors[t],o,n,r)}useContextCallback(t,o){Wt.useDebugValue(t);let n=G(o??mt);this.context[t]=n}useStateSetter(t){let o=Wt.useRef(void 0);return o.current===void 0&&(o.current=n=>{this.set(t,n)}),o.current}observe(t,o){let n;typeof t=="function"?n=t:n=this.selectors[t];let r=n(this.state);return o(r,r,this),this.subscribe(i=>{let s=n(i);if(!Object.is(r,s)){let a=r;r=s,o(s,a,this)}})}};var gm={open:Z(e=>e.open),transitionStatus:Z(e=>e.transitionStatus),domReferenceElement:Z(e=>e.domReferenceElement),referenceElement:Z(e=>e.positionReference??e.referenceElement),floatingElement:Z(e=>e.floatingElement),floatingId:Z(e=>e.floatingId)},Tt=class extends bo{constructor(t){let{syncOnly:o,nested:n,onOpenChange:r,triggerElements:i,...s}=t;super({...s,positionReference:s.referenceElement,domReferenceElement:s.referenceElement},{onOpenChange:r,dataRef:{current:{}},events:Ga(),nested:n,triggerElements:i},gm),this.syncOnly=o}syncOpenEvent=(t,o)=>{(!t||!this.state.open||o!=null&&Ea(o))&&(this.context.dataRef.current.openEvent=t?o:void 0)};dispatchOpenChange=(t,o)=>{this.syncOpenEvent(t,o.event);let n={open:t,reason:o.reason,nativeEvent:o.event,nested:this.context.nested,triggerElement:o.trigger};this.context.events.emit("openchange",n)};setOpen=(t,o)=>{if(this.syncOnly){this.context.onOpenChange?.(t,o);return}this.dispatchOpenChange(t,o),this.context.onOpenChange?.(t,o)}};var Go=g(D(),1);function bm(e,t){let o=Go.useRef(null),n=Go.useRef(null);return Go.useCallback(r=>{if(e!==void 0){if(o.current!==null){let i=o.current,s=n.current,a=t.context.triggerElements.getById(i);s&&a===s&&t.context.triggerElements.delete(i),o.current=null,n.current=null}r!==null&&(o.current=e,n.current=r,t.context.triggerElements.add(e,r))}},[t,e])}function Ic(e,t,o,n){let r=o.useState("isMountedByTrigger",e),i=bm(e,o),s=G(a=>{if(i(a),!a||!o.select("open"))return;let d=o.select("activeTriggerId");if(d===e){o.update({activeTriggerElement:a,...n});return}d==null&&o.update({activeTriggerId:e,activeTriggerElement:a,...n})});return j(()=>{r&&o.update({activeTriggerElement:t.current,...n})},[r,o,t,...Object.values(n)]),{registerTrigger:s,isMountedByThisTrigger:r}}function zc(e){let t=e.useState("open");j(()=>{if(t&&!e.select("activeTriggerId")&&e.context.triggerElements.size===1){let o=e.context.triggerElements.entries().next();if(!o.done){let[n,r]=o.value;e.update({activeTriggerId:n,activeTriggerElement:r})}}},[t,e])}function Dc(e,t,o){let{mounted:n,setMounted:r,transitionStatus:i}=da(e);t.useSyncedValues({mounted:n,transitionStatus:i});let s=G(()=>{r(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1}),o?.(),t.context.onOpenChangeComplete?.(!1)}),a=t.useState("preventUnmountingOnClose");return kn({enabled:!a,open:e,ref:t.context.popupRef,onComplete(){e||s()}}),{forceUnmount:s,transitionStatus:i}}var Ct=class{constructor(){this.elementsSet=new Set,this.idMap=new Map}add(t,o){let n=this.idMap.get(t);n!==o&&(n!==void 0&&this.elementsSet.delete(n),this.elementsSet.add(o),this.idMap.set(t,o))}delete(t){let o=this.idMap.get(t);o&&(this.elementsSet.delete(o),this.idMap.delete(t))}hasElement(t){return this.elementsSet.has(t)}hasMatchingElement(t){for(let o of this.elementsSet)if(t(o))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}elements(){return this.elementsSet.values()}get size(){return this.idMap.size}};function Bc(){return new Tt({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:new Ct,floatingId:"",syncOnly:!1,nested:!1,onOpenChange:void 0})}function Hc(){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:Bc(),preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:ge,inactiveTriggerProps:ge,popupProps:ge}}var Bn=Z(e=>e.triggerIdProp??e.activeTriggerId),jc={open:Z(e=>e.openProp??e.open),mounted:Z(e=>e.mounted),transitionStatus:Z(e=>e.transitionStatus),floatingRootContext:Z(e=>e.floatingRootContext),preventUnmountingOnClose:Z(e=>e.preventUnmountingOnClose),payload:Z(e=>e.payload),activeTriggerId:Bn,activeTriggerElement:Z(e=>e.mounted?e.activeTriggerElement:null),isTriggerActive:Z((e,t)=>t!==void 0&&Bn(e)===t),isOpenedByTrigger:Z((e,t)=>t!==void 0&&Bn(e)===t&&e.open),isMountedByTrigger:Z((e,t)=>t!==void 0&&Bn(e)===t&&e.mounted),triggerProps:Z((e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps),popupProps:Z(e=>e.popupProps),popupElement:Z(e=>e.popupElement),positionerElement:Z(e=>e.positionerElement)};function Vc(e){let{open:t=!1,onOpenChange:o,elements:n={}}=e,r=yt(),i=po()!=null,s=de(()=>new Tt({open:t,transitionStatus:void 0,onOpenChange:o,referenceElement:n.reference??null,floatingElement:n.floating??null,triggerElements:new Ct,floatingId:r,syncOnly:!1,nested:i})).current;return j(()=>{let a={open:t,floatingId:r};n.reference!==void 0&&(a.referenceElement=n.reference,a.domReferenceElement=Y(n.reference)?n.reference:null),n.floating!==void 0&&(a.floatingElement=n.floating),s.update(a)},[t,r,n.reference,n.floating,s]),s.context.onOpenChange=o,s.context.nested=i,s}function ii(e={}){let{nodeId:t,externalTree:o}=e,n=Vc(e),r=e.rootContext||n,i={reference:r.useState("referenceElement"),floating:r.useState("floatingElement"),domReference:r.useState("domReferenceElement")},[s,a]=Ae.useState(null),d=Ae.useRef(null),l=Et(o);j(()=>{i.domReference&&(d.current=i.domReference)},[i.domReference]);let c=xc({...e,elements:{...i,...s&&{reference:s}}}),u=Ae.useCallback(_=>{let O=Y(_)?{getBoundingClientRect:()=>_.getBoundingClientRect(),getClientRects:()=>_.getClientRects(),contextElement:_}:_;a(O),c.refs.setReference(O)},[c.refs]),[m,p]=Ae.useState(void 0),[f,h]=Ae.useState(null);r.useSyncedValue("referenceElement",m??null);let v=Y(m)?m:null;r.useSyncedValue("domReferenceElement",m===void 0?i.domReference:v),r.useSyncedValue("floatingElement",f);let b=Ae.useCallback(_=>{(Y(_)||_===null)&&(d.current=_,p(_)),(Y(c.refs.reference.current)||c.refs.reference.current===null||_!==null&&!Y(_))&&c.refs.setReference(_)},[c.refs,p]),E=Ae.useCallback(_=>{h(_),c.refs.setFloating(_)},[c.refs]),x=Ae.useMemo(()=>({...c.refs,setReference:b,setFloating:E,setPositionReference:u,domReference:d}),[c.refs,b,E,u]),y=Ae.useMemo(()=>({...c.elements,domReference:i.domReference}),[c.elements,i.domReference]),w=r.useState("open"),R=r.useState("floatingId"),P=Ae.useMemo(()=>({...c,dataRef:r.context.dataRef,open:w,onOpenChange:r.setOpen,events:r.context.events,floatingId:R,refs:x,elements:y,nodeId:t,rootStore:r}),[c,x,y,t,r,w,R]);return j(()=>{r.context.dataRef.current.floatingContext=P;let _=l?.nodesRef.current.find(O=>O.id===t);_&&(_.context=P)}),Ae.useMemo(()=>({...c,context:P,refs:x,elements:y,rootStore:r}),[c,x,y,P,r])}function si(e){let{popupStore:t,treatPopupAsFloatingElement:o=!1,onOpenChange:n}=e,r=yt(),i=po()!=null,s=t.useState("open"),a=t.useState("activeTriggerElement"),d=t.useState(o?"popupElement":"positionerElement"),l=t.context.triggerElements,c=de(()=>new Tt({open:s,transitionStatus:void 0,referenceElement:a,floatingElement:d,triggerElements:l,onOpenChange:n,floatingId:r,syncOnly:!0,nested:i})).current;return j(()=>{let u={open:s,floatingId:r,referenceElement:a,floatingElement:d};Y(a)&&(u.domReferenceElement=a),c.state.positionReference===c.state.referenceElement&&(u.positionReference=a),c.update(u)},[s,r,a,d,c]),c.context.onOpenChange=n,c.context.nested=i,c}var at=g(D(),1);var ai=ya&&va;function ci(e,t={}){let o="rootStore"in e?e.rootStore:e,{events:n,dataRef:r}=o.context,{enabled:i=!0,delay:s}=t,a=at.useRef(!1),d=at.useRef(null),l=gt(),c=at.useRef(!0);at.useEffect(()=>{let m=o.select("domReferenceElement");if(!i)return;let p=ce(m);function f(){let b=o.select("domReferenceElement");!o.select("open")&&ue(b)&&b===Pn(be(b))&&(a.current=!0)}function h(){c.current=!0}function v(){c.current=!1}return nt(J(p,"blur",f),ai&&J(p,"keydown",h,!0),ai&&J(p,"pointerdown",v,!0))},[o,i]),at.useEffect(()=>{if(!i)return;function m(p){if(p.reason===W.triggerPress||p.reason===W.escapeKey){let f=o.select("domReferenceElement");Y(f)&&(d.current=f,a.current=!0)}}return n.on("openchange",m),()=>{n.off("openchange",m)}},[n,i,o]);let u=at.useMemo(()=>({onMouseLeave(){a.current=!1,d.current=null},onFocus(m){let p=m.currentTarget;if(a.current){if(d.current===p)return;a.current=!1,d.current=null}let f=Oe(m.nativeEvent);if(Y(f)){if(ai&&!m.relatedTarget){if(!c.current&&!Ra(f))return}else if(!Sa(f))return}let h=jt(m.relatedTarget,o.context.triggerElements),{nativeEvent:v,currentTarget:b}=m,E=typeof s=="function"?s():s;if(o.select("open")&&h||E===0||E===void 0){o.setOpen(!0,ee(W.triggerFocus,v,b));return}l.start(E,()=>{a.current||o.setOpen(!0,ee(W.triggerFocus,v,b))})},onBlur(m){a.current=!1,d.current=null;let p=m.relatedTarget,f=m.nativeEvent,h=Y(p)&&p.hasAttribute(fo("focus-guard"))&&p.getAttribute("data-type")==="outside";l.start(0,()=>{let v=o.select("domReferenceElement"),b=Pn(be(v));!p&&b===v||ne(r.current.floatingContext?.refs.floating.current,b)||ne(v,b)||h||jt(p??b,o.context.triggerElements)||o.setOpen(!1,ee(W.triggerFocus,f))})}}),[r,o,l,s]);return at.useMemo(()=>i?{reference:u,trigger:u}:{},[i,u])}var Yo=g(D(),1);var li=class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new He,this.restTimeout=new He,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose},Hn=new WeakMap;function ho(e){if(!e.performedPointerEventsMutation)return;let t=e.pointerEventsScopeElement;t&&Hn.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),Hn.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function jn(e,t){let{scopeElement:o,referenceElement:n,floatingElement:r}=t,i=Hn.get(o);i&&i!==e&&ho(i),ho(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=o,e.pointerEventsReferenceElement=n,e.pointerEventsFloatingElement=r,Hn.set(o,e),o.style.pointerEvents="none",n.style.pointerEvents="auto",r.style.pointerEvents="auto"}function Vn(e){let t=de(li.create).current,o=e.context.dataRef.current;return o.hoverInteractionState||(o.hoverInteractionState=t),ro(o.hoverInteractionState.disposeEffect),o.hoverInteractionState}function di(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),i=o.useState("domReferenceElement"),{dataRef:s}=o.context,{enabled:a=!0,closeDelay:d=0,nodeId:l}=t,c=Vn(o),u=Et(),m=po(),p=G(()=>On(s.current.openEvent?.type,c.interactedInside)),f=G(()=>{let y=s.current.openEvent?.type;return y?.includes("mouse")&&y!=="mousedown"}),h=G(y=>jt(y,o.context.triggerElements)),v=Yo.useCallback(y=>{let w=Yt(d,"close",c.pointerType),R=()=>{o.setOpen(!1,ee(W.triggerHover,y)),u?.events.emit("floating.closed",y)};w?c.openChangeTimeout.start(w,R):(c.openChangeTimeout.clear(),R())},[d,o,c,u]),b=G(()=>{ho(c)}),E=G(y=>{let w=Oe(y);if(!zr(w)){c.interactedInside=!1;return}c.interactedInside=w?.closest("[aria-haspopup]")!=null});j(()=>{n||(c.pointerType=void 0,c.restTimeoutPending=!1,c.interactedInside=!1,b())},[n,c,b]),Yo.useEffect(()=>b,[b]),j(()=>{if(a&&n&&c.handleCloseOptions?.blockPointerEvents&&f()&&Y(i)&&r){let y=i,w=r,R=be(r),P=u?.nodesRef.current.find(O=>O.id===m)?.context?.elements.floating;P&&(P.style.pointerEvents="");let _=c.handleCloseOptions?.getScope?.()??c.pointerEventsScopeElement??P??y.closest("[data-rootownerid]")??R.body;return jn(c,{scopeElement:_,referenceElement:y,floatingElement:w}),()=>{b()}}},[a,n,i,r,c,f,u,m,b]);let x=gt();Yo.useEffect(()=>{if(!a)return;function y(){c.openChangeTimeout.clear(),x.clear(),u?.events.off("floating.closed",R),b()}function w(_){if(u&&m&&$e(u.nodesRef.current,m).length>0){u.events.on("floating.closed",R);return}if(h(_.relatedTarget))return;let O=s.current.floatingContext?.nodeId??l,L=_.relatedTarget;if(!(u&&O&&Y(L)&&$e(u.nodesRef.current,O,!1).some(B=>ne(B.context?.elements.floating,L)))){if(c.handler){c.handler(_);return}b(),p()||v(_)}}function R(_){!u||!m||$e(u.nodesRef.current,m).length>0||x.start(0,()=>{u.events.off("floating.closed",R),o.setOpen(!1,ee(W.triggerHover,_)),u.events.emit("floating.closed",_)})}let P=r;return nt(P&&J(P,"mouseenter",y),P&&J(P,"mouseleave",w),P&&J(P,"pointerdown",E,!0),()=>{u?.events.off("floating.closed",R)})},[a,r,o,s,l,p,h,v,b,E,c,u,m,x])}var kt=g(D(),1),Gc=g(xt(),1);var hm={current:null};function ui(e,t={}){let o="rootStore"in e?e.rootStore:e,{dataRef:n,events:r}=o.context,{enabled:i=!0,delay:s=0,handleClose:a=null,mouseOnly:d=!1,restMs:l=0,move:c=!0,triggerElementRef:u=hm,externalTree:m,isActiveTrigger:p=!0,getHandleCloseContext:f,isClosing:h}=t,v=Et(m),b=Vn(o),E=kt.useRef(!1),x=rt(a),y=rt(s),w=rt(l),R=rt(i),P=rt(h);p&&(b.handleCloseOptions=x.current?.__options);let _=G(()=>On(n.current.openEvent?.type,b.interactedInside)),O=G(C=>jt(C,o.context.triggerElements)),L=G((C,S,A)=>{let I=o.context.triggerElements;if(I.hasElement(S))return!C||!ne(C,S);if(!Y(A))return!1;let T=A;return I.hasMatchingElement(k=>ne(k,T))&&(!C||!ne(C,T))}),z=G((C,S=!0)=>{let A=Yt(y.current,"close",b.pointerType);A?b.openChangeTimeout.start(A,()=>{o.setOpen(!1,ee(W.triggerHover,C)),v?.events.emit("floating.closed",C)}):S&&(b.openChangeTimeout.clear(),o.setOpen(!1,ee(W.triggerHover,C)),v?.events.emit("floating.closed",C))}),B=G(()=>{if(!b.handler)return;be(o.select("domReferenceElement")).removeEventListener("mousemove",b.handler),b.handler=void 0}),M=G(()=>{ho(b)});return kt.useEffect(()=>B,[B]),kt.useEffect(()=>{if(!i)return;function C(S){S.open?E.current=!1:(E.current=S.reason===W.triggerHover,B(),b.openChangeTimeout.clear(),b.restTimeout.clear(),b.blockMouseMove=!0,b.restTimeoutPending=!1)}return r.on("openchange",C),()=>{r.off("openchange",C)}},[i,r,b,B]),kt.useEffect(()=>{if(!i)return;let C=u.current??(p?o.select("domReferenceElement"):null);if(!Y(C))return;function S(I){if(b.openChangeTimeout.clear(),b.blockMouseMove=!1,d&&!Vt(b.pointerType))return;let T=Dr(w.current),k=Yt(y.current,"open",b.pointerType),V=Oe(I),F=I.currentTarget??null,X=o.select("domReferenceElement"),U=F;if(Y(V)&&!o.context.triggerElements.hasElement(V)){for(let Ot of o.context.triggerElements.elements())if(ne(Ot,V)){U=Ot;break}}Y(F)&&Y(X)&&!o.context.triggerElements.hasElement(F)&&ne(F,X)&&(U=X);let ae=U==null?!1:L(X,U,V),ie=o.select("open"),q=P.current?.()??o.select("transitionStatus")==="ending",re=!ie&&q&&E.current,Ee=!ae&&Y(U)&&Y(X)&&ne(X,U)&&re,he=T>0&&!k,Te=ae&&(ie||re)||Ee,we=!ie||ae;if(Te){o.setOpen(!0,ee(W.triggerHover,I,U));return}he||(k?b.openChangeTimeout.start(k,()=>{we&&o.setOpen(!0,ee(W.triggerHover,I,U))}):we&&o.setOpen(!0,ee(W.triggerHover,I,U)))}function A(I){if(_()){M();return}B();let T=o.select("domReferenceElement"),k=be(T);b.restTimeout.clear(),b.restTimeoutPending=!1;let V=n.current.floatingContext??f?.();if(O(I.relatedTarget))return;if(x.current&&V){o.select("open")||b.openChangeTimeout.clear();let U=u.current;b.handler=x.current({...V,tree:v,x:I.clientX,y:I.clientY,onClose(){M(),B(),R.current&&!_()&&U===o.select("domReferenceElement")&&z(I,!0)}}),k.addEventListener("mousemove",b.handler),b.handler(I);return}(b.pointerType!=="touch"||!ne(o.select("floatingElement"),I.relatedTarget))&&z(I)}return c?nt(J(C,"mousemove",S,{once:!0}),J(C,"mouseenter",S),J(C,"mouseleave",A)):nt(J(C,"mouseenter",S),J(C,"mouseleave",A))},[B,M,n,y,z,o,i,x,b,p,L,_,O,d,c,w,u,v,R,f,P]),kt.useMemo(()=>{if(!i)return;function C(S){b.pointerType=S.pointerType}return{onPointerDown:C,onPointerEnter:C,onMouseMove(S){let{nativeEvent:A}=S,I=S.currentTarget,T=o.select("domReferenceElement"),k=o.select("open"),V=L(T,I,S.target);if(d&&!Vt(b.pointerType))return;if(k&&V&&b.handleCloseOptions?.blockPointerEvents){let U=o.select("floatingElement");if(U){let ae=b.handleCloseOptions?.getScope?.()??I.ownerDocument.body;jn(b,{scopeElement:ae,referenceElement:I,floatingElement:U})}}let F=Dr(w.current);if(k&&!V||F===0||!V&&b.restTimeoutPending&&S.movementX**2+S.movementY**2<2)return;b.restTimeout.clear();function X(){if(b.restTimeoutPending=!1,_())return;let U=o.select("open");!b.blockMouseMove&&(!U||V)&&o.setOpen(!0,ee(W.triggerHover,A,I))}b.pointerType==="touch"?Gc.flushSync(()=>{X()}):V&&k?X():(b.restTimeoutPending=!0,b.restTimeout.start(F,X))}}},[i,b,_,L,d,o,w])}var Xt=g(D(),1);function fi(e=[]){let t=e.map(l=>l?.reference),o=e.map(l=>l?.floating),n=e.map(l=>l?.item),r=e.map(l=>l?.trigger),i=Xt.useCallback(l=>Gn(l,e,"reference"),t),s=Xt.useCallback(l=>Gn(l,e,"floating"),o),a=Xt.useCallback(l=>Gn(l,e,"item"),n),d=Xt.useCallback(l=>Gn(l,e,"trigger"),r);return Xt.useMemo(()=>({getReferenceProps:i,getFloatingProps:s,getItemProps:a,getTriggerProps:d}),[i,s,a,d])}function Gn(e,t,o){let n=new Map,r=o==="item",i={};o==="floating"&&(i.tabIndex=-1,i[Mr]="");for(let s in e)r&&e&&(s===Ar||s===Nr)||(i[s]=e[s]);for(let s=0;s<t.length;s+=1){let a,d=t[s]?.[o];typeof d=="function"?a=e?d(e):null:a=d,a&&Yc(i,a,r,n)}return Yc(i,e,r,n),i}function Yc(e,t,o,n){for(let r in t){let i=t[r];o&&(r===Ar||r===Nr)||(r.startsWith("on")?(n.has(r)||n.set(r,[]),typeof i=="function"&&(n.get(r)?.push(i),e[r]=(...s)=>n.get(r)?.map(a=>a(...s)).find(a=>a!==void 0))):e[r]=i)}}var Fc=.1,wm=Fc*Fc,$=.5;function Yn(e,t,o,n,r,i){return n>=t!=i>=t&&e<=(r-o)*(t-n)/(i-n)+o}function Fn(e,t,o,n,r,i,s,a,d,l){let c=!1;return Yn(e,t,o,n,r,i)&&(c=!c),Yn(e,t,r,i,s,a)&&(c=!c),Yn(e,t,s,a,d,l)&&(c=!c),Yn(e,t,d,l,o,n)&&(c=!c),c}function vm(e,t,o){return e>=o.x&&e<=o.x+o.width&&t>=o.y&&t<=o.y+o.height}function qn(e,t,o,n,r,i){let s=Math.min(o,r),a=Math.max(o,r),d=Math.min(n,i),l=Math.max(n,i);return e>=s&&e<=a&&t>=d&&t<=l}function pi(e={}){let{blockPointerEvents:t=!1}=e,o=new He,n=({x:r,y:i,placement:s,elements:a,onClose:d,nodeId:l,tree:c})=>{let u=s?.split("-")[0],m=!1,p=null,f=null,h=typeof performance<"u"?performance.now():0;function v(E,x){let y=performance.now(),w=y-h;if(p===null||f===null||w===0)return p=E,f=x,h=y,!1;let R=E-p,P=x-f,_=R*R+P*P,O=w*w*wm;return p=E,f=x,h=y,_<O}function b(){o.clear(),d()}return function(x){o.clear();let y=a.domReference,w=a.floating;if(!y||!w||u==null||r==null||i==null)return;let{clientX:R,clientY:P}=x,_=Oe(x),O=x.type==="mouseleave",L=ne(w,_),z=ne(y,_);if(L&&(m=!0,!O))return;if(z&&(m=!1,!O)){m=!0;return}if(O&&Y(x.relatedTarget)&&ne(w,x.relatedTarget))return;function B(){return!!(c&&$e(c.nodesRef.current,l).length>0)}function M(){B()||b()}if(B())return;let C=y.getBoundingClientRect(),S=w.getBoundingClientRect(),A=r>S.right-S.width/2,I=i>S.bottom-S.height/2,T=S.width>C.width,k=S.height>C.height,V=(T?C:S).left,F=(T?C:S).right,X=(k?C:S).top,U=(k?C:S).bottom;if(u==="top"&&i>=C.bottom-1||u==="bottom"&&i<=C.top+1||u==="left"&&r>=C.right-1||u==="right"&&r<=C.left+1){M();return}let ae=!1;switch(u){case"top":ae=qn(R,P,V,C.top+1,F,S.bottom-1);break;case"bottom":ae=qn(R,P,V,S.top+1,F,C.bottom-1);break;case"left":ae=qn(R,P,S.right-1,U,C.left+1,X);break;case"right":ae=qn(R,P,C.right-1,U,S.left+1,X);break;default:}if(ae)return;if(m&&!vm(R,P,C)){M();return}if(!O&&v(R,P)){M();return}let ie=!1;switch(u){case"top":{let q=T?$/2:$*4,re=T||A?r+q:r-q,Ee=T?r-q:A?r+q:r-q,he=i+$+1,Te=A||T?S.bottom-$:S.top,we=A?T?S.bottom-$:S.top:S.bottom-$;ie=Fn(R,P,re,he,Ee,he,S.left,Te,S.right,we);break}case"bottom":{let q=T?$/2:$*4,re=T||A?r+q:r-q,Ee=T?r-q:A?r+q:r-q,he=i-$,Te=A||T?S.top+$:S.bottom,we=A?T?S.top+$:S.bottom:S.top+$;ie=Fn(R,P,re,he,Ee,he,S.left,Te,S.right,we);break}case"left":{let q=k?$/2:$*4,re=k||I?i+q:i-q,Ee=k?i-q:I?i+q:i-q,he=r+$+1,Te=I||k?S.right-$:S.left,we=I?k?S.right-$:S.left:S.right-$;ie=Fn(R,P,Te,S.top,we,S.bottom,he,re,he,Ee);break}case"right":{let q=k?$/2:$*4,re=k||I?i+q:i-q,Ee=k?i-q:I?i+q:i-q,he=r-$,Te=I||k?S.left+$:S.right,we=I?k?S.left+$:S.right:S.left+$;ie=Fn(R,P,he,re,he,Ee,Te,S.top,we,S.bottom);break}default:}ie?m||o.start(40,M):M()}};return n.__options={...e,blockPointerEvents:t},n}var mi=(function(e){return e.open="data-open",e.closed="data-closed",e[e.startingStyle=Dt.startingStyle]="startingStyle",e[e.endingStyle=Dt.endingStyle]="endingStyle",e.anchorHidden="data-anchor-hidden",e.side="data-side",e.align="data-align",e})({}),Fo=(function(e){return e.popupOpen="data-popup-open",e.pressed="data-pressed",e})({}),ym={[Fo.popupOpen]:""},Av={[Fo.popupOpen]:"",[Fo.pressed]:""},xm={[mi.open]:""},_m={[mi.closed]:""},Rm={[mi.anchorHidden]:""},qc={open(e){return e?ym:null}};var wo={open(e){return e?xm:_m},anchorHidden(e){return e?Rm:null}};function Wc(e){return no(19)?e:e?"true":void 0}var Ve=g(D(),1);var Sm=e=>({name:"arrow",options:e,async fn(t){let{x:o,y:n,placement:r,rects:i,platform:s,elements:a,middlewareData:d}=t,{element:l,padding:c=0,offsetParent:u="real"}=tt(e,t)||{};if(l==null)return{};let m=Cn(c),p={x:o,y:n},f=Ho(r),h=Bo(f),v=await s.getDimensions(l),b=f==="y",E=b?"top":"left",x=b?"bottom":"right",y=b?"clientHeight":"clientWidth",w=i.reference[h]+i.reference[f]-p[f]-i.floating[h],R=p[f]-i.reference[f],P=u==="real"?await s.getOffsetParent?.(l):a.floating,_=a.floating[y]||i.floating[h];(!_||!await s.isElement?.(P))&&(_=a.floating[y]||i.floating[h]);let O=w/2-R/2,L=_/2-v[h]/2-1,z=Math.min(m[E],L),B=Math.min(m[x],L),M=z,C=_-v[h]-B,S=_/2-v[h]/2+O,A=Do(M,S,C),I=!d.arrow&&ot(r)!=null&&S!==A&&i.reference[h]/2-(S<M?z:B)-v[h]/2<0,T=I?S<M?S-M:S-C:0;return{[f]:p[f]+T,data:{[f]:A,centerOffset:S-A-T,...I&&{alignmentOffset:T}},reset:I}}}),Xc=(e,t)=>({...Sm(e),options:[e,t]});var Uc={name:"hide",async fn(e){let{width:t,height:o,x:n,y:r}=e.rects.reference,i=t===0&&o===0&&n===0&&r===0;return{data:{referenceHidden:(await Jr().fn(e)).data?.referenceHidden||i}}}};var qo={sideX:"left",sideY:"top"},Kc={name:"adaptiveOrigin",async fn(e){let{x:t,y:o,rects:{floating:n},elements:{floating:r},platform:i,strategy:s,placement:a}=e,d=ce(r),l=d.getComputedStyle(r);if(!(l.transitionDuration!=="0s"&&l.transitionDuration!==""))return{x:t,y:o,data:qo};let u=await i.getOffsetParent?.(r),m={width:0,height:0};if(s==="fixed"&&d?.visualViewport)m={width:d.visualViewport.width,height:d.visualViewport.height};else if(u===d){let E=be(r);m={width:E.documentElement.clientWidth,height:E.documentElement.clientHeight}}else await i.isElement?.(u)&&(m=await i.getDimensions(u));let p=ye(a),f=t,h=o;p==="left"&&(f=m.width-(t+n.width)),p==="top"&&(h=m.height-(o+n.height));let v=p==="left"?"right":qo.sideX,b=p==="top"?"bottom":qo.sideY;return{x:f,y:h,data:{sideX:v,sideY:b}}}};function Jc(e,t,o){let n=e==="inline-start"||e==="inline-end";return{top:"top",right:n?o?"inline-start":"inline-end":"right",bottom:"bottom",left:n?o?"inline-end":"inline-start":"left"}[t]}function Zc(e,t,o){let{rects:n,placement:r}=e;return{side:Jc(t,ye(r),o),align:ot(r)||"center",anchor:{width:n.reference.width,height:n.reference.height},positioner:{width:n.floating.width,height:n.floating.height}}}function $c(e){let{anchor:t,positionMethod:o="absolute",side:n="bottom",sideOffset:r=0,align:i="center",alignOffset:s=0,collisionBoundary:a,collisionPadding:d=5,sticky:l=!1,arrowPadding:c=5,disableAnchorTracking:u=!1,keepMounted:m=!1,floatingRootContext:p,mounted:f,collisionAvoidance:h,shiftCrossAxis:v=!1,nodeId:b,adaptiveOrigin:E,lazyFlip:x=!1,externalTree:y}=e,[w,R]=Ve.useState(null);!f&&w!==null&&R(null);let P=h.side||"flip",_=h.align||"flip",O=h.fallbackAxisSide||"end",L=typeof t=="function"?t:void 0,z=G(L),B=L?z:t,M=rt(t),C=rt(f),A=oo()==="rtl",I=w||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":A?"left":"right","inline-start":A?"right":"left"}[n],T=i==="center"?I:`${I}-${i}`,k=d,V=1,F=n==="bottom"?V:0,X=n==="top"?V:0,U=n==="right"?V:0,ae=n==="left"?V:0;typeof k=="number"?k={top:k+F,right:k+ae,bottom:k+X,left:k+U}:k&&(k={top:(k.top||0)+F,right:(k.right||0)+ae,bottom:(k.bottom||0)+X,left:(k.left||0)+U});let ie={boundary:a==="clipping-ancestors"?"clippingAncestors":a,padding:k},q=Ve.useRef(null),re=rt(r),Ee=rt(s),we=[Xr(te=>{let Ce=Zc(te,n,A),Ye=typeof re.current=="function"?re.current(Ce):re.current,Ne=typeof Ee.current=="function"?Ee.current(Ce):Ee.current;return{mainAxis:Ye,crossAxis:Ne,alignmentAxis:Ne}},[typeof r!="function"?r:0,typeof s!="function"?s:0,A,n])],Ot=_==="none"&&P!=="shift",Lt=!Ot&&(l||v||P==="shift"),sn=P==="none"?null:Zr({...ie,padding:{top:k.top+V,right:k.right+V,bottom:k.bottom+V,left:k.left+V},mainAxis:!v&&P==="flip",crossAxis:_==="flip"?"alignment":!1,fallbackAxisSideDirection:O}),$t=Ot?null:Ur(te=>{let Ce=be(te.elements.floating).documentElement;return{...ie,rootBoundary:v?{x:0,y:0,width:Ce.clientWidth,height:Ce.clientHeight}:void 0,mainAxis:_!=="none",crossAxis:Lt,limiter:l||v?void 0:Kr(Ye=>{if(!q.current)return{};let{width:Ne,height:pt}=q.current.getBoundingClientRect(),Ke=Ie(ye(Ye.placement)),It=Ke==="y"?Ne:pt,to=Ke==="y"?k.left+k.right:k.top+k.bottom;return{offset:It/2+to/2}})}},[ie,l,v,k,_]);P==="shift"||_==="shift"||i==="center"?we.push($t,sn):we.push(sn,$t),we.push(Qr({...ie,apply({elements:{floating:te},availableWidth:Ce,availableHeight:Ye,rects:Ne}){if(!C.current)return;let pt=te.style;pt.setProperty("--available-width",`${Ce}px`),pt.setProperty("--available-height",`${Ye}px`);let Ke=ce(te).devicePixelRatio||1,{x:It,y:to,width:pn,height:pr}=Ne.reference,mr=(Math.round((It+pn)*Ke)-Math.round(It*Ke))/Ke,gr=(Math.round((to+pr)*Ke)-Math.round(to*Ke))/Ke;pt.setProperty("--anchor-width",`${mr}px`),pt.setProperty("--anchor-height",`${gr}px`)}}),Xc(()=>({element:q.current||be(q.current).createElement("div"),padding:c,offsetParent:"floating"}),[c]),{name:"transformOrigin",fn(te){let{elements:Ce,middlewareData:Ye,placement:Ne,rects:pt,y:Ke}=te,It=ye(Ne),to=Ie(It),pn=q.current,pr=Ye.arrow?.x||0,mr=Ye.arrow?.y||0,gr=pn?.clientWidth||0,Hu=pn?.clientHeight||0,br=pr+gr/2,As=mr+Hu/2,ju=Math.abs(Ye.shift?.y||0),Vu=pt.reference.height/2,ko=typeof r=="function"?r(Zc(te,n,A)):r,Gu=ju>ko,Yu={top:`${br}px calc(100% + ${ko}px)`,bottom:`${br}px ${-ko}px`,left:`calc(100% + ${ko}px) ${As}px`,right:`${-ko}px ${As}px`}[It],Fu=`${br}px ${pt.reference.y+Vu-Ke}px`;return Ce.floating.style.setProperty("--transform-origin",Lt&&to==="y"&&Gu?Fu:Yu),{}}},Uc,E),j(()=>{!f&&p&&p.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[f,p]);let Mt=Ve.useMemo(()=>({elementResize:!u&&typeof ResizeObserver<"u",layoutShift:!u&&typeof IntersectionObserver<"u"}),[u]),{refs:ht,elements:At,x:an,y:cn,middlewareData:pe,update:eo,placement:N,context:H,isPositioned:le,floatingStyles:xe}=ii({rootContext:p,open:m?f:void 0,placement:T,middleware:we,strategy:o,whileElementsMounted:m?void 0:(...te)=>Vo(...te,Mt),nodeId:b,externalTree:y}),{sideX:wt,sideY:To}=pe.adaptiveOrigin||qo,ut=le?o:"fixed",ln=Ve.useMemo(()=>{let te=E?{position:ut,[wt]:an,[To]:cn}:{position:ut,...xe};return le||(te.opacity=0),te},[E,ut,wt,an,To,cn,xe,le]),Nt=Ve.useRef(null);j(()=>{if(!f)return;let te=M.current,Ce=typeof te=="function"?te():te,Ne=(Qc(Ce)?Ce.current:Ce)||null||null;Ne!==Nt.current&&(ht.setPositionReference(Ne),Nt.current=Ne)},[f,ht,B,M]),Ve.useEffect(()=>{if(!f)return;let te=M.current;typeof te!="function"&&Qc(te)&&te.current!==Nt.current&&(ht.setPositionReference(te.current),Nt.current=te.current)},[f,ht,B,M]),Ve.useEffect(()=>{if(m&&f&&At.domReference&&At.floating)return Vo(At.domReference,At.floating,eo,Mt)},[m,f,At,eo,Mt]);let me=ye(N),ft=Jc(n,me,A),Co=ot(N)||"center",dn=!!pe.hide?.referenceHidden;j(()=>{x&&f&&le&&R(me)},[x,f,le,me]);let un=Ve.useMemo(()=>({position:"absolute",top:pe.arrow?.y,left:pe.arrow?.x}),[pe.arrow]),fn=pe.arrow?.centerOffset!==0;return Ve.useMemo(()=>({positionerStyles:ln,arrowStyles:un,arrowRef:q,arrowUncentered:fn,side:ft,align:Co,physicalSide:me,anchorHidden:dn,refs:ht,context:H,isPositioned:le,update:eo}),[ln,un,q,fn,ft,Co,me,dn,ht,H,le,eo])}function Qc(e){return e!=null&&"current"in e}function Wn(e){return e==="starting"?Ba:ge}function el(e,t,{styles:o,transitionStatus:n,props:r,refs:i,hidden:s,inert:a=!1}){let d={...o};return a&&(d.pointerEvents="none"),Re("div",e,{state:t,ref:i,props:[{role:"presentation",hidden:s,style:d},Wn(n),r],stateAttributesMapping:wo})}var tl=g(D(),1);var gi=tl.forwardRef(function(t,o){let{render:n,className:r,disabled:i=!1,focusableWhenDisabled:s=!1,nativeButton:a=!0,style:d,...l}=t,{getButtonProps:c,buttonRef:u}=ha({disabled:i,focusableWhenDisabled:s,native:a});return Re("button",t,{state:{disabled:i},ref:[o,u],props:[l,c]})});var Pe=g(D(),1),al=g(xt(),1);var ol=g(D(),1);function nl(e){let[t,o]=ol.useState({current:e,previous:null});return e!==t.current&&o({current:e,previous:t.current}),t.previous}var Ut=g(D(),1);function bi(e){let t=Se(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=ue(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n;return(Pt(o)!==i||Pt(n)!==s)&&(o=i,n=s),{width:o,height:n}}var Pm=()=>!0;function il(e){let{popupElement:t,positionerElement:o,content:n,mounted:r,enabled:i=Pm,onMeasureLayout:s,onMeasureLayoutComplete:a,side:d,direction:l}=e,c=so(t,!0,!1),u=io(),m=Ut.useRef(null),p=Ut.useRef(null),f=Ut.useRef(!0),h=Ut.useRef(mt),v=G(s),b=G(a),E=Ut.useMemo(()=>{let x=d==="top",y=d==="left";return l==="rtl"?(x=x||d==="inline-end",y=y||d==="inline-end"):(x=x||d==="inline-start",y=y||d==="inline-start"),x?{position:"absolute",[d==="top"?"bottom":"top"]:"0",[y?"right":"left"]:"0"}:ge},[d,l]);j(()=>{if(!r||!i()||typeof ResizeObserver!="function"){h.current=mt,f.current=!0,m.current=null,p.current=null;return}if(!t||!o)return;h.current=rl(t,E);let x=new ResizeObserver(M=>{let C=M[0];C&&(p.current={width:Math.ceil(C.borderBoxSize[0].inlineSize),height:Math.ceil(C.borderBoxSize[0].blockSize)})});x.observe(t),Xn(t,"auto");let y=Un(t,"position","static"),w=Un(t,"transform","none"),R=Un(t,"scale","1"),P=rl(o,{"--available-width":"max-content","--available-height":"max-content"});function _(){y(),w(),P()}function O(){_(),R()}if(v?.(),f.current||m.current===null){Wo(o,"max-content");let M=bi(t);return m.current=M,Wo(o,M),O(),b?.(null,M),f.current=!1,()=>{x.disconnect(),h.current(),h.current=mt}}Xn(t,"auto"),Wo(o,"max-content");let L=m.current??p.current,z=bi(t);if(m.current=z,!L)return Wo(o,z),O(),b?.(null,z),()=>{x.disconnect(),u.cancel(),h.current(),h.current=mt};Xn(t,L),O(),b?.(L,z),Wo(o,z);let B=new AbortController;return u.request(()=>{Xn(t,z),c(()=>{t.style.setProperty("--popup-width","auto"),t.style.setProperty("--popup-height","auto")},B.signal)}),()=>{x.disconnect(),B.abort(),u.cancel(),h.current(),h.current=mt}},[n,t,o,c,u,i,r,v,b,E])}function Un(e,t,o){let n=e.style.getPropertyValue(t);return e.style.setProperty(t,o),()=>{e.style.setProperty(t,n)}}function rl(e,t){let o=[];for(let[n,r]of Object.entries(t))o.push(Un(e,n,r));return o.length?()=>{o.forEach(n=>n())}:mt}function Xn(e,t){let o=t==="auto"?"auto":`${t.width}px`,n=t==="auto"?"auto":`${t.height}px`;e.style.setProperty("--popup-width",o),e.style.setProperty("--popup-height",n)}function Wo(e,t){let o=t==="max-content"?"max-content":`${t.width}px`,n=t==="max-content"?"max-content":`${t.height}px`;e.style.setProperty("--positioner-width",o),e.style.setProperty("--positioner-height",n)}var vo=g(K(),1);function cl(e){let{store:t,side:o,cssVars:n,children:r}=e,i=oo(),s=t.useState("activeTriggerElement"),a=t.useState("activeTriggerId"),d=t.useState("open"),l=t.useState("payload"),c=t.useState("mounted"),u=t.useState("popupElement"),m=t.useState("positionerElement"),p=nl(d?s:null),f=Cm(a,l),h=Pe.useRef(null),[v,b]=Pe.useState(null),[E,x]=Pe.useState(null),y=Pe.useRef(null),w=Pe.useRef(null),R=so(y,!0,!1),P=io(),[_,O]=Pe.useState(null),[L,z]=Pe.useState(!1);j(()=>(t.set("hasViewport",!0),()=>{t.set("hasViewport",!1)}),[t]);let B=G(()=>{y.current?.style.setProperty("animation","none"),y.current?.style.setProperty("transition","none"),w.current?.style.setProperty("display","none")}),M=G(T=>{y.current?.style.removeProperty("animation"),y.current?.style.removeProperty("transition"),w.current?.style.removeProperty("display"),T&&O(T)}),C=Pe.useRef(null);j(()=>{if(s&&p&&s!==p&&C.current!==s&&h.current){b(h.current),z(!0);let T=Tm(p,s);x(T),P.request(()=>{al.flushSync(()=>{z(!1)}),R(()=>{b(null),O(null),h.current=null})}),C.current=s}},[s,p,v,R,P]),j(()=>{let T=y.current;if(!T)return;let k=be(T).createElement("div");for(let V of Array.from(T.childNodes))k.appendChild(V.cloneNode(!0));h.current=k});let S=v!=null,A;S?A=(0,vo.jsxs)(Pe.Fragment,{children:[(0,vo.jsx)("div",{"data-previous":!0,inert:Wc(!0),ref:w,style:{..._?{[n.popupWidth]:`${_.width}px`,[n.popupHeight]:`${_.height}px`}:null,position:"absolute"},"data-ending-style":L?void 0:""},"previous"),(0,vo.jsx)("div",{"data-current":!0,ref:y,"data-starting-style":L?"":void 0,children:r},f)]}):A=(0,vo.jsx)("div",{"data-current":!0,ref:y,children:r},f),j(()=>{let T=w.current;!T||!v||T.replaceChildren(...Array.from(v.childNodes))},[v]),il({popupElement:u,positionerElement:m,mounted:c,content:l,onMeasureLayout:B,onMeasureLayoutComplete:M,side:o,direction:i});let I={activationDirection:Em(E),transitioning:S};return{children:A,state:I}}function Em(e){if(e)return`${sl(e.horizontal,5,"right","left")} ${sl(e.vertical,5,"down","up")}`}function sl(e,t,o,n){return e>t?o:e<-t?n:""}function Tm(e,t){let o=e.getBoundingClientRect(),n=t.getBoundingClientRect(),r={x:o.left+o.width/2,y:o.top+o.height/2},i={x:n.left+n.width/2,y:n.top+n.height/2};return{horizontal:i.x-r.x,vertical:i.y-r.y}}function Cm(e,t){let[o,n]=Pe.useState(0),r=Pe.useRef(e),i=Pe.useRef(t),s=Pe.useRef(!1);return j(()=>{let a=r.current,d=i.current,l=e!==a,c=t!==d;l?(n(u=>u+1),s.current=!c):s.current&&c&&(n(u=>u+1),s.current=!1),r.current=e,i.current=t},[e,t]),`${e??"current"}-${o}`}var Kn=g(D(),1),ll=g(xt(),1);var dl=g(K(),1),ul=Kn.forwardRef(function(t,o){let{children:n,container:r,className:i,render:s,style:a,...d}=t,{portalNode:l,portalSubtree:c}=jr({container:r,ref:o,componentProps:t,elementProps:d});return!c&&!l?null:(0,dl.jsxs)(Kn.Fragment,{children:[c,l&&ll.createPortal(n,l)]})});var Be={};wr(Be,{Arrow:()=>Cl,Handle:()=>Xo,Popup:()=>El,Portal:()=>_l,Positioner:()=>Sl,Provider:()=>kl,Root:()=>gl,Trigger:()=>vl,Viewport:()=>Ml,createHandle:()=>Al});var ct=g(D(),1);var Zn=g(D(),1),hi=Zn.createContext(void 0);function qe(e){let t=Zn.useContext(hi);if(t===void 0&&!e)throw new Error(_e(72));return t}var fl=g(D(),1),pl=g(xt(),1);var km={...jc,disabled:Z(e=>e.disabled),instantType:Z(e=>e.instantType),isInstantPhase:Z(e=>e.isInstantPhase),trackCursorAxis:Z(e=>e.trackCursorAxis),disableHoverablePopup:Z(e=>e.disableHoverablePopup),lastOpenChangeReason:Z(e=>e.openChangeReason),closeOnClick:Z(e=>e.closeOnClick),closeDelay:Z(e=>e.closeDelay),hasViewport:Z(e=>e.hasViewport)},yo=class e extends bo{constructor(t){super({...Om(),...t},{popupRef:fl.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:new Ct},km)}setOpen=(t,o)=>{let n=o.reason,r=n===W.triggerHover,i=t&&n===W.triggerFocus,s=!t&&(n===W.triggerPress||n===W.escapeKey);if(o.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},this.context.onOpenChange?.(t,o),o.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(t,o);let a=()=>{let d={open:t,openChangeReason:n};i?d.instantType="focus":s?d.instantType="dismiss":n===W.triggerHover&&(d.instantType=void 0);let l=o.trigger?.id??null;(l||t)&&(d.activeTriggerId=l,d.activeTriggerElement=o.trigger??null),this.update(d)};r?pl.flushSync(a):a()};static useStore(t,o){let n=de(()=>new e(o)).current,r=t??n,i=si({popupStore:r,onOpenChange:r.setOpen});return r.state.floatingRootContext=i,r}};function Om(){return{...Hc(),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,hasViewport:!1}}var ml=g(K(),1),gl=ni(function(t){let{disabled:o=!1,defaultOpen:n=!1,open:r,disableHoverablePopup:i=!1,trackCursorAxis:s="none",actionsRef:a,onOpenChange:d,onOpenChangeComplete:l,handle:c,triggerId:u,defaultTriggerId:m=null,children:p}=t,f=yo.useStore(c?.store,{open:n,openProp:r,activeTriggerId:m,triggerIdProp:u});Ia(()=>{r===void 0&&f.state.open===!1&&n===!0&&f.update({open:!0,activeTriggerId:m})}),f.useControlledProp("openProp",r),f.useControlledProp("triggerIdProp",u),f.useContextCallback("onOpenChange",d),f.useContextCallback("onOpenChangeComplete",l);let h=f.useState("open"),v=!o&&h,b=f.useState("activeTriggerId"),E=f.useState("payload");f.useSyncedValues({trackCursorAxis:s,disableHoverablePopup:i}),j(()=>{h&&o&&f.setOpen(!1,ee(W.disabled))},[h,o,f]),f.useSyncedValue("disabled",o),zc(f);let{forceUnmount:x,transitionStatus:y}=Dc(v,f),w=f.select("floatingRootContext"),R=f.useState("isInstantPhase"),P=f.useState("instantType"),_=f.useState("lastOpenChangeReason"),O=ct.useRef(null);j(()=>{y==="ending"&&_===W.none||y!=="ending"&&R?(P!=="delay"&&(O.current=P),f.set("instantType","delay")):O.current!==null&&(f.set("instantType",O.current),O.current=null)},[y,R,_,P,f]),j(()=>{v&&b==null&&f.set("payload",void 0)},[f,b,v]);let L=ct.useCallback(()=>{f.setOpen(!1,ee(W.imperativeAction))},[f]);ct.useImperativeHandle(a,()=>({unmount:x,close:L}),[x,L]);let z=Gr(w,{enabled:!o,referencePress:()=>f.select("closeOnClick")}),B=Vr(w,{enabled:!o&&s!=="none",axis:s==="none"?void 0:s}),{getReferenceProps:M,getFloatingProps:C,getTriggerProps:S}=fi([z,B]),A=ct.useMemo(()=>M(),[M]),I=ct.useMemo(()=>S(),[S]),T=ct.useMemo(()=>C(),[C]);return f.useSyncedValues({activeTriggerProps:A,inactiveTriggerProps:I,popupProps:T}),(0,ml.jsx)(hi.Provider,{value:f,children:typeof p=="function"?p({payload:E}):p})});var wl=g(D(),1);var Qn=g(D(),1),wi=Qn.createContext(void 0);function bl(){return Qn.useContext(wi)}var hl=(function(e){return e[e.popupOpen=Fo.popupOpen]="popupOpen",e.triggerDisabled="data-trigger-disabled",e})({});var vl=Mc(function(t,o){let{className:n,render:r,handle:i,payload:s,disabled:a,delay:d,closeOnClick:l=!0,closeDelay:c,id:u,style:m,...p}=t,f=qe(!0),h=i?.store??f;if(!h)throw new Error(_e(82));let v=ra(u),b=h.useState("isTriggerActive",v),E=h.useState("isOpenedByTrigger",v),x=h.useState("floatingRootContext"),y=wl.useRef(null),w=d??600,R=c??0,{registerTrigger:P,isMountedByThisTrigger:_}=Ic(v,y,h,{payload:s,closeOnClick:l,closeDelay:R}),O=bl(),{delayRef:L,isInstantPhase:z,hasProvider:B}=Hr(x,{open:E});h.useSyncedValue("isInstantPhase",z);let M=h.useState("disabled"),C=a??M,S=h.useState("trackCursorAxis"),A=h.useState("disableHoverablePopup"),I=ui(x,{enabled:!C,mouseOnly:!0,move:!1,handleClose:!A&&S!=="both"?pi():null,restMs(){let X=O?.delay,U=typeof L.current=="object"?L.current.open:void 0,ae=w;return B&&(U!==0?ae=d??X??w:ae=0),ae},delay(){let X=typeof L.current=="object"?L.current.close:void 0,U=R;return c==null&&B&&(U=X),{close:U}},triggerElementRef:y,isActiveTrigger:b,isClosing:()=>h.select("transitionStatus")==="ending"}),T=ci(x,{enabled:!C}).reference,k={open:E},V=h.useState("triggerProps",_);return Re("button",t,{state:k,ref:[o,P,y],props:[I,T,V,{onPointerDown(){h.set("closeOnClick",l)},id:v,[hl.triggerDisabled]:C?"":void 0},p],stateAttributesMapping:qc})});var xl=g(D(),1);var Jn=g(D(),1),vi=Jn.createContext(void 0);function yl(){let e=Jn.useContext(vi);if(e===void 0)throw new Error(_e(70));return e}var yi=g(K(),1),_l=xl.forwardRef(function(t,o){let{keepMounted:n=!1,...r}=t;return qe().useState("mounted")||n?(0,yi.jsx)(vi.Provider,{value:n,children:(0,yi.jsx)(ul,{ref:o,...r})}):null});var er=g(D(),1);var $n=g(D(),1),xi=$n.createContext(void 0);function xo(){let e=$n.useContext(xi);if(e===void 0)throw new Error(_e(71));return e}var Rl=g(K(),1),Sl=er.forwardRef(function(t,o){let{render:n,className:r,anchor:i,positionMethod:s="absolute",side:a="top",align:d="center",sideOffset:l=0,alignOffset:c=0,collisionBoundary:u="clipping-ancestors",collisionPadding:m=5,arrowPadding:p=5,sticky:f=!1,disableAnchorTracking:h=!1,collisionAvoidance:v=Ha,style:b,...E}=t,x=qe(),y=yl(),w=x.useState("open"),R=x.useState("mounted"),P=x.useState("trackCursorAxis"),_=x.useState("disableHoverablePopup"),O=x.useState("floatingRootContext"),L=x.useState("instantType"),z=x.useState("transitionStatus"),B=x.useState("hasViewport"),M=$c({anchor:i,positionMethod:s,floatingRootContext:O,mounted:R,side:a,sideOffset:l,align:d,alignOffset:c,collisionBoundary:u,collisionPadding:m,sticky:f,arrowPadding:p,disableAnchorTracking:h,keepMounted:y,collisionAvoidance:v,adaptiveOrigin:B?Kc:void 0}),C=er.useMemo(()=>({open:w,side:M.side,align:M.align,anchorHidden:M.anchorHidden,instant:P!=="none"?"tracking-cursor":L}),[w,M.side,M.align,M.anchorHidden,P,L]),S=el(t,C,{styles:M.positionerStyles,transitionStatus:z,props:E,refs:[o,x.useStateSetter("positionerElement")],hidden:!R,inert:!w||P==="both"||_});return(0,Rl.jsx)(xi.Provider,{value:M,children:S})});var Pl=g(D(),1);var Lm={...wo,...ca},El=Pl.forwardRef(function(t,o){let{className:n,render:r,style:i,...s}=t,a=qe(),{side:d,align:l}=xo(),c=a.useState("open"),u=a.useState("instantType"),m=a.useState("transitionStatus"),p=a.useState("popupProps"),f=a.useState("floatingRootContext");kn({open:c,ref:a.context.popupRef,onComplete(){c&&a.context.onOpenChangeComplete?.(!0)}});let h=a.useState("disabled"),v=a.useState("closeDelay");return di(f,{enabled:!h,closeDelay:v}),Re("div",t,{state:{open:c,side:d,align:l,instant:u,transitionStatus:m},ref:[o,a.context.popupRef,a.useStateSetter("popupElement")],props:[p,Wn(m),s],stateAttributesMapping:Lm})});var Tl=g(D(),1);var Cl=Tl.forwardRef(function(t,o){let{className:n,render:r,style:i,...s}=t,a=qe(),d=a.useState("open"),l=a.useState("instantType"),{arrowRef:c,side:u,align:m,arrowUncentered:p,arrowStyles:f}=xo();return Re("div",t,{state:{open:d,side:u,align:m,uncentered:p,instant:l},ref:[o,c],props:[{style:f,"aria-hidden":!0},s],stateAttributesMapping:wo})});var _i=g(D(),1);var Ri=g(K(),1),kl=function(t){let{delay:o,closeDelay:n,timeout:r=400}=t,i=_i.useMemo(()=>({delay:o,closeDelay:n}),[o,n]),s=_i.useMemo(()=>({open:o,close:n}),[o,n]);return(0,Ri.jsx)(wi.Provider,{value:i,children:(0,Ri.jsx)(Br,{delay:s,timeoutMs:r,children:t.children})})};var Ll=g(D(),1);var Ol=(function(e){return e.popupWidth="--popup-width",e.popupHeight="--popup-height",e})({});var Mm={activationDirection:e=>e?{"data-activation-direction":e}:null},Ml=Ll.forwardRef(function(t,o){let{render:n,className:r,style:i,children:s,...a}=t,d=qe(),l=xo(),c=d.useState("instantType"),{children:u,state:m}=cl({store:d,side:l.side,cssVars:Ol,children:s}),p={activationDirection:m.activationDirection,transitioning:m.transitioning,instant:c};return Re("div",t,{state:p,ref:o,props:[a,{children:u}],stateAttributesMapping:Mm})});var Xo=class{constructor(){this.store=new yo}open(t){let o=t?this.store.context.triggerElements.getById(t):void 0;if(t&&!o)throw new Error(_e(81,t));this.store.setOpen(!0,ee(W.imperativeAction,void 0,o))}close(){this.store.setOpen(!1,ee(W.imperativeAction,void 0,void 0))}get isOpen(){return this.store.state.open}};function Al(){return new Xo}function lt(e){return Re(e.defaultTagName??"div",e,e)}var zl=g(oe(),1),Si="data-wp-hash";function Pi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Nm(document)),e.__wpStyleRuntime}function Am(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Si}]`))if(o.getAttribute(Si)===t)return!0;return!1}function Dl(e,t,o){if(!e.head)return;let n=Pi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Am(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Si,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Nm(e){let t=Pi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Dl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Bl(e,t){let o=Pi();o.styles.set(e,t);for(let n of o.documents.keys())Dl(n,e,t)}typeof process>"u",Bl("0c8601dd83",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');var Nl={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",Bl("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Il={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},We=(0,zl.forwardRef)(function({variant:t="body-md",render:o,className:n,...r},i){return lt({render:o,defaultTagName:"span",ref:i,props:ke(r,{className:Q(Nl.text,Il.heading,Il.p,Nl[t],n)})})});var Gl=g(K(),1),Ei="data-wp-hash";function Ti(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&zm(document)),e.__wpStyleRuntime}function Im(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ei}]`))if(o.getAttribute(Ei)===t)return!0;return!1}function Vl(e,t,o){if(!e.head)return;let n=Ti(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Im(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ei,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function zm(e){let t=Ti();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Vl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Dm(e,t){let o=Ti();o.styles.set(e,t);for(let n of o.documents.keys())Vl(n,e,t)}typeof process>"u",Dm("d6a685e1aa","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}");var Hl={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},Ci=(0,jl.forwardRef)(function({intent:t="none",className:o,...n},r){return(0,Gl.jsx)(We,{ref:r,className:Q(Hl.badge,Hl[`is-${t}-intent`],o),...n,variant:"body-sm"})});var tr=g(oe(),1),Yl=g(vt(),1),ql=g(K(),1);import{speak as Bm}from"@wordpress/a11y";var ki="data-wp-hash";function Oi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&jm(document)),e.__wpStyleRuntime}function Hm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ki}]`))if(o.getAttribute(ki)===t)return!0;return!1}function Fl(e,t,o){if(!e.head)return;let n=Oi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Hm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ki,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function jm(e){let t=Oi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Fl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function or(e,t){let o=Oi();o.styles.set(e,t);for(let n of o.documents.keys())Fl(n,e,t)}typeof process>"u",or("26d90ece4e",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);cursor:var(--wpds-cursor-control,pointer);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);height:var(--wp-ui-button-height);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);min-width:var(--wp-ui-button-min-width);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-decoration:none;@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:#0000;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:#0000;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:#0000;&:not([data-disabled]):is(:hover,:active,:focus){color:#0000}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}[aria-pressed=true].ad0619a3217c6a5b__is-minimal.e722a8f96726aa99__is-neutral{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0)}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}');var Uo={button:"_97b0fc33c028be1a__button","is-unstyled":"abbb272e2ce49bd6__is-unstyled","is-loading":"_914b42f315c0e580__is-loading","is-small":"_908205475f9f2a92__is-small","is-brand":"dd460c965226cc77__is-brand","is-outline":"_62d5a778b7b258ee__is-outline","is-minimal":"ad0619a3217c6a5b__is-minimal","is-neutral":"e722a8f96726aa99__is-neutral","is-solid":"b50b3358c5fb4d0b__is-solid","is-compact":"cf59cf1b69629838__is-compact","loading-animation":"_5a1d53da6f830c8d__loading-animation"};typeof process>"u",or("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Vm={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",or("2a5ab8f3a7","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}");var Gm={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",or("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Ym={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Wl=(0,tr.forwardRef)(function({tone:t="brand",variant:o="solid",size:n="default",className:r,focusableWhenDisabled:i=!0,disabled:s,loading:a,loadingAnnouncement:d=(0,Yl.__)("Loading"),children:l,...c},u){let m=Q(Ym.button,Vm["box-sizing"],Gm["outset-ring--focus-except-active"],o!=="unstyled"&&Uo.button,Uo[`is-${t}`],Uo[`is-${o}`],Uo[`is-${n}`],a&&Uo["is-loading"],r);return(0,tr.useEffect)(()=>{a&&d&&Bm(d)},[a,d]),(0,ql.jsx)(gi,{ref:u,className:m,focusableWhenDisabled:i,disabled:s??a,...c,children:l})});var Ql=g(oe(),1);var Ul=g(oe(),1),Kl=g(Kt(),1),Zl=g(K(),1),Zt=(0,Ul.forwardRef)(function({icon:t,size:o=24,...n},r){return(0,Zl.jsx)(Kl.SVG,{ref:r,fill:"currentColor",...t.props,...n,width:o,height:o})});var Jl=g(K(),1),Li=(0,Ql.forwardRef)(function({icon:t,...o},n){return(0,Jl.jsx)(Zt,{ref:n,icon:t,viewBox:"4 4 16 16",size:16,...o})});Li.displayName="Button.Icon";var nr=Object.assign(Wl,{Icon:Li});var rr=g(Kt(),1),Mi=g(K(),1),Ai=(0,Mi.jsx)(rr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Mi.jsx)(rr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})});var ir=g(Kt(),1),Ni=g(K(),1),Ii=(0,Ni.jsx)(ir.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ni.jsx)(ir.Path,{d:"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"})});var sr=g(Kt(),1),zi=g(K(),1),Di=(0,zi.jsx)(sr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,zi.jsx)(sr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})});var ar=g(Kt(),1),Bi=g(K(),1),Hi=(0,Bi.jsx)(ar.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bi.jsx)(ar.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})});var cr=g(Kt(),1),ji=g(K(),1),Vi=(0,ji.jsx)(cr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ji.jsx)(cr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"})});var td=g(oe(),1);function Gi(e,t,o){return(0,td.cloneElement)(e??t,{children:o})}var nd=g(Yi(),1),{lock:s4,unlock:rd}=(0,nd.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/ui");var id=g(oe(),1),Fi="data-wp-hash";function qi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&qm(document)),e.__wpStyleRuntime}function Fm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Fi}]`))if(o.getAttribute(Fi)===t)return!0;return!1}function sd(e,t,o){if(!e.head)return;let n=qi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Fm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Fi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function qm(e){let t=qi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)sd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Wm(e,t){let o=qi();o.styles.set(e,t);for(let n of o.documents.keys())sd(n,e,t)}typeof process>"u",Wm("b51ff41489","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");var Xm={stack:"_19ce0419607e1896__stack"},Um={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},_o=(0,id.forwardRef)(function({direction:t,gap:o,align:n,justify:r,wrap:i,render:s,...a},d){let l={gap:o&&Um[o],alignItems:n,justifyContent:r,flexDirection:t,flexWrap:i};return lt({render:s,ref:d,props:ke(a,{style:l,className:Xm.stack})})});var Rd=g(oe(),1);var gd=g(oe(),1),bd=g(ed(),1);var ad=g(oe(),1),cd=g(K(),1),ld=(0,ad.forwardRef)(function(t,o){return(0,cd.jsx)(Be.Portal,{ref:o,...t})});var dd=g(oe(),1),pd=g(K(),1),Wi="data-wp-hash";function Xi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Zm(document)),e.__wpStyleRuntime}function Km(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Wi}]`))if(o.getAttribute(Wi)===t)return!0;return!1}function ud(e,t,o){if(!e.head)return;let n=Xi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Km(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Wi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Zm(e){let t=Xi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ud(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function fd(e,t){let o=Xi();o.styles.set(e,t);for(let n of o.documents.keys())ud(n,e,t)}typeof process>"u",fd("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Qm={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",fd("8293efbb49",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}');var Jm={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},md=(0,dd.forwardRef)(function({align:t="center",className:o,side:n="top",sideOffset:r=4,...i},s){return(0,pd.jsx)(Be.Positioner,{ref:s,align:t,side:n,sideOffset:r,...i,className:Q(Qm["box-sizing"],Jm.positioner,o)})});var Ko=g(K(),1),Ui="data-wp-hash";function Ki(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&eg(document)),e.__wpStyleRuntime}function $m(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ui}]`))if(o.getAttribute(Ui)===t)return!0;return!1}function hd(e,t,o){if(!e.head)return;let n=Ki(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if($m(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ui,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function eg(e){let t=Ki();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)hd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function tg(e,t){let o=Ki();o.styles.set(e,t);for(let n of o.documents.keys())hd(n,e,t)}typeof process>"u",tg("8293efbb49",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}');var og={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},ng=rd(bd.privateApis).ThemeProvider,Zi=(0,gd.forwardRef)(function({portal:t,positioner:o,children:n,className:r,...i},s){let a=(0,Ko.jsx)(ng,{color:{bg:"#1e1e1e"},children:(0,Ko.jsx)(Be.Popup,{ref:s,className:Q(og.popup,r),...i,children:n})}),d=Gi(o,(0,Ko.jsx)(md,{}),a);return Gi(t,(0,Ko.jsx)(ld,{}),d)});var wd=g(oe(),1),vd=g(K(),1),Qi=(0,wd.forwardRef)(function(t,o){return(0,vd.jsx)(Be.Trigger,{ref:o,...t})});var yd=g(K(),1);function Ji(e){return(0,yd.jsx)(Be.Root,{...e})}var xd=g(K(),1);function $i({...e}){return(0,xd.jsx)(Be.Provider,{...e})}var Xe=g(K(),1),es="data-wp-hash";function ts(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&sg(document)),e.__wpStyleRuntime}function ig(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${es}]`))if(o.getAttribute(es)===t)return!0;return!1}function Sd(e,t,o){if(!e.head)return;let n=ts(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(ig(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(es,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function sg(e){let t=ts();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Sd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function ag(e,t){let o=ts();o.styles.set(e,t);for(let n of o.documents.keys())Sd(n,e,t)}typeof process>"u",ag("358a2a646a","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}");var _d={"icon-button":"_28cfdc260e755391__icon-button",icon:"f1c70d719989a85a__icon"},os=(0,Rd.forwardRef)(function({label:t,className:o,children:n,disabled:r,focusableWhenDisabled:i,icon:s,size:a,shortcut:d,positioner:l,...c},u){let m=Q(_d["icon-button"],o);return(0,Xe.jsx)($i,{delay:0,children:(0,Xe.jsxs)(Ji,{children:[(0,Xe.jsx)(Qi,{ref:u,disabled:r&&!i,render:(0,Xe.jsx)(nr,{...c,size:a,"aria-label":t,"aria-keyshortcuts":d?.ariaKeyShortcut,disabled:r,focusableWhenDisabled:i}),className:m,children:(0,Xe.jsx)(Zt,{icon:s,size:24,className:_d.icon})}),(0,Xe.jsxs)(Zi,{positioner:l,children:[t,d&&(0,Xe.jsxs)(Xe.Fragment,{children:[" ",(0,Xe.jsx)("span",{"aria-hidden":"true",children:d.displayShortcut})]})]})]})})});var Pd=g(oe(),1),Ed=g(vt(),1),Ro=g(K(),1),ns="data-wp-hash";function rs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&lg(document)),e.__wpStyleRuntime}function cg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ns}]`))if(o.getAttribute(ns)===t)return!0;return!1}function Td(e,t,o){if(!e.head)return;let n=rs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(cg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ns,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function lg(e){let t=rs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Td(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function dr(e,t){let o=rs();o.styles.set(e,t);for(let n of o.documents.keys())Td(n,e,t)}typeof process>"u",dr("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var dg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",dr("2a5ab8f3a7","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}");var ug={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",dr("90a23568f8",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}');var lr={link:"d4250949359b05ce__link","is-brand":"c6055659b8e2cd2c__is-brand","is-neutral":"_92e0dfcaeee15b88__is-neutral","is-unstyled":"cf122a9bf1035d42__is-unstyled","link-icon":"_0cb411afac4c86c7__link-icon"};typeof process>"u",dr("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var fg={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Zo=(0,Pd.forwardRef)(function({children:t,variant:o="default",tone:n="brand",openInNewTab:r=!1,render:i,className:s,...a},d){return lt({render:i,defaultTagName:"a",ref:d,props:ke(a,{className:Q(fg.a,dg["box-sizing"],ug["outset-ring--focus"],o!=="unstyled"&&lr.link,o!=="unstyled"&&lr[`is-${n}`],o==="unstyled"&&lr["is-unstyled"],s),target:r?"_blank":void 0,children:(0,Ro.jsxs)(Ro.Fragment,{children:[t,r&&(0,Ro.jsx)("span",{className:lr["link-icon"],role:"img","aria-label":(0,Ed.__)("(opens in a new tab)")})]})})})});var Qo={};wr(Qo,{ActionButton:()=>Qd,ActionLink:()=>eu,Actions:()=>Vd,CloseIcon:()=>Wd,Description:()=>Bd,Root:()=>Od,Title:()=>Nd});var So=g(oe(),1);import{speak as pg}from"@wordpress/a11y";var Po=g(K(),1),ss="data-wp-hash";function as(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&gg(document)),e.__wpStyleRuntime}function mg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ss}]`))if(o.getAttribute(ss)===t)return!0;return!1}function Cd(e,t,o){if(!e.head)return;let n=as(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(mg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function gg(e){let t=as();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Cd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function kd(e,t){let o=as();o.styles.set(e,t);for(let n of o.documents.keys())Cd(n,e,t)}typeof process>"u",kd("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var bg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",kd("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var is={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},hg={neutral:null,info:Hi,warning:Ai,success:Vi,error:Di};function wg(e){return e==="error"?"assertive":"polite"}function vg(e){if(e){if(typeof e=="string")return e;try{return(0,So.renderToString)(e)}catch{return}}}function yg(e,t){let o=vg(e);(0,So.useEffect)(()=>{o&&pg(o,t)},[o,t])}var Od=(0,So.forwardRef)(function({intent:t="neutral",children:o,icon:n,spokenMessage:r=o,politeness:i=wg(t),render:s,...a},d){yg(r,i);let l=n===null?null:n??hg[t],c=Q(is.notice,is[`is-${t}`],bg["box-sizing"]);return lt({defaultTagName:"div",render:s,ref:d,props:ke({className:c,children:(0,Po.jsxs)(Po.Fragment,{children:[o,l&&(0,Po.jsx)(Zt,{className:is.icon,icon:l})]})},a)})});var Ld=g(oe(),1);var Ad=g(K(),1),cs="data-wp-hash";function ls(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&_g(document)),e.__wpStyleRuntime}function xg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${cs}]`))if(o.getAttribute(cs)===t)return!0;return!1}function Md(e,t,o){if(!e.head)return;let n=ls(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(xg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(cs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function _g(e){let t=ls();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Md(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Rg(e,t){let o=ls();o.styles.set(e,t);for(let n of o.documents.keys())Md(n,e,t)}typeof process>"u",Rg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Sg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Nd=(0,Ld.forwardRef)(function({className:t,...o},n){return(0,Ad.jsx)(We,{ref:n,variant:"heading-md",className:Q(Sg.title,t),...o})});var Id=g(oe(),1);var Dd=g(K(),1),ds="data-wp-hash";function us(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Eg(document)),e.__wpStyleRuntime}function Pg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ds}]`))if(o.getAttribute(ds)===t)return!0;return!1}function zd(e,t,o){if(!e.head)return;let n=us(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Pg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ds,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Eg(e){let t=us();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)zd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Tg(e,t){let o=us();o.styles.set(e,t);for(let n of o.documents.keys())zd(n,e,t)}typeof process>"u",Tg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Cg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Bd=(0,Id.forwardRef)(function({className:t,...o},n){return(0,Dd.jsx)(We,{ref:n,variant:"body-md",className:Q(Cg.description,t),...o})});var Hd=g(oe(),1);var fs="data-wp-hash";function ps(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Og(document)),e.__wpStyleRuntime}function kg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${fs}]`))if(o.getAttribute(fs)===t)return!0;return!1}function jd(e,t,o){if(!e.head)return;let n=ps(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(kg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(fs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Og(e){let t=ps();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)jd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Lg(e,t){let o=ps();o.styles.set(e,t);for(let n of o.documents.keys())jd(n,e,t)}typeof process>"u",Lg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Mg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Vd=(0,Hd.forwardRef)(function({render:t,...o},n){return lt({defaultTagName:"div",render:t,ref:n,props:ke({className:Mg.actions},o)})});var Gd=g(oe(),1),Yd=g(vt(),1);var qd=g(K(),1),ms="data-wp-hash";function gs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Ng(document)),e.__wpStyleRuntime}function Ag(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ms}]`))if(o.getAttribute(ms)===t)return!0;return!1}function Fd(e,t,o){if(!e.head)return;let n=gs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Ag(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ms,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Ng(e){let t=gs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Fd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Ig(e,t){let o=gs();o.styles.set(e,t);for(let n of o.documents.keys())Fd(n,e,t)}typeof process>"u",Ig("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var zg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Wd=(0,Gd.forwardRef)(function({className:t,icon:o=Ii,label:n=(0,Yd.__)("Dismiss"),...r},i){return(0,qd.jsx)(os,{...r,ref:i,className:Q(zg["close-icon"],t),variant:"minimal",size:"small",tone:"neutral",icon:o,label:n})});var Ud=g(oe(),1);var Zd=g(K(),1),bs="data-wp-hash";function hs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Bg(document)),e.__wpStyleRuntime}function Dg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${bs}]`))if(o.getAttribute(bs)===t)return!0;return!1}function Kd(e,t,o){if(!e.head)return;let n=hs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Dg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(bs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Bg(e){let t=hs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Kd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Hg(e,t){let o=hs();o.styles.set(e,t);for(let n of o.documents.keys())Kd(n,e,t)}typeof process>"u",Hg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Xd={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Qd=(0,Ud.forwardRef)(function({className:t,loading:o,loadingAnnouncement:n,variant:r,...i},s){return(0,Zd.jsx)(nr,{...i,...o!==void 0?{loading:o,loadingAnnouncement:n??""}:{},ref:s,size:"compact",tone:"neutral",variant:r,className:Q(Xd["action-button"],Xd[`is-action-button-${r}`],t)})});var Jd=g(oe(),1);var vs=g(K(),1),ws="data-wp-hash";function ys(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Vg(document)),e.__wpStyleRuntime}function jg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ws}]`))if(o.getAttribute(ws)===t)return!0;return!1}function $d(e,t,o){if(!e.head)return;let n=ys(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(jg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ws,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Vg(e){let t=ys();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)$d(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Gg(e,t){let o=ys();o.styles.set(e,t);for(let n of o.documents.keys())$d(n,e,t)}typeof process>"u",Gg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Yg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},eu=(0,Jd.forwardRef)(function({className:t,render:o,...n},r){return(0,vs.jsx)(We,{ref:r,className:Q(Yg["action-link"],t),...n,variant:"body-md",render:(0,vs.jsx)(Zo,{tone:"neutral",variant:"default",render:o})})});var tu=g(oe(),1),ou=g(K(),1),nu=(0,tu.forwardRef)(({children:e,className:t,ariaLabel:o,as:n="div",...r},i)=>(0,ou.jsx)(n,{ref:i,className:Q("admin-ui-navigable-region",t),"aria-label":o,role:"region",tabIndex:"-1",...r,children:e}));nu.displayName="NavigableRegion";var ru=nu;var su=g(Jo(),1),{Fill:au,Slot:cu}=(0,su.createSlotFill)("SidebarToggle");var Ue=g(K(),1),xs="data-wp-hash";function _s(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&qg(document)),e.__wpStyleRuntime}function Fg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${xs}]`))if(o.getAttribute(xs)===t)return!0;return!1}function lu(e,t,o){if(!e.head)return;let n=_s(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Fg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(xs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function qg(e){let t=_s();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)lu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Wg(e,t){let o=_s();o.styles.set(e,t);for(let n of o.documents.keys())lu(n,e,t)}typeof process>"u",Wg("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Qt={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function du({headingLevel:e=1,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:s,showSidebarToggle:a=!0}){let d=`h${e}`;return(0,Ue.jsxs)(_o,{direction:"column",className:Qt.header,children:[(0,Ue.jsxs)(_o,{className:Qt["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Ue.jsxs)(_o,{direction:"row",gap:"sm",align:"center",justify:"start",children:[a&&(0,Ue.jsx)(cu,{bubblesVirtually:!0,className:Qt["sidebar-toggle-slot"]}),n&&(0,Ue.jsx)("div",{className:Qt["header-visual"],"aria-hidden":"true",children:n}),r&&(0,Ue.jsx)(We,{className:Qt["header-title"],render:(0,Ue.jsx)(d,{}),variant:"heading-lg",children:r}),t,o]}),s&&(0,Ue.jsx)(_o,{align:"center",className:Qt["header-actions"],direction:"row",gap:"sm",children:s})]}),i&&(0,Ue.jsx)(We,{render:(0,Ue.jsx)("p",{}),variant:"body-md",className:Qt["header-subtitle"],children:i})]})}var $o=g(K(),1),Ss="data-wp-hash";function Ps(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Ug(document)),e.__wpStyleRuntime}function Xg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ss}]`))if(o.getAttribute(Ss)===t)return!0;return!1}function uu(e,t,o){if(!e.head)return;let n=Ps(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Xg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Ug(e){let t=Ps();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)uu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Kg(e,t){let o=Ps();o.styles.set(e,t);for(let n of o.documents.keys())uu(n,e,t)}typeof process>"u",Kg("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Rs={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function fu({headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,children:s,className:a,actions:d,ariaLabel:l,hasPadding:c=!1,showSidebarToggle:u=!0}){let m=Q(Rs.page,a);return(0,$o.jsxs)(ru,{className:m,ariaLabel:l??(typeof r=="string"?r:""),children:[(r||t||o||d||n)&&(0,$o.jsx)(du,{headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:d,showSidebarToggle:u}),c?(0,$o.jsx)("div",{className:Q(Rs.content,Rs["has-padding"]),children:s}):s]})}fu.SidebarToggleFill=au;var Es=fu;var it=g(Jo()),zu=g(en()),Du=g(oe()),bt=g(vt()),Bu=g(ur());import{privateApis as u0}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='f2df357a8c']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","f2df357a8c"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background:linear-gradient(90deg,#fff9,#fff9),linear-gradient(90deg,#89dcdc,#c7eb5c 46.15%,#a920c1);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:220px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background:linear-gradient(270deg,#fff9,#fff9),linear-gradient(270deg,#89dcdc,#c7eb5c 46.15%,#a920c1)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:248px;inset-inline-end:8px;position:absolute;top:-15px;width:248px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:145px}.connectors-page .ai-plugin-callout__decoration{height:134px;inset-inline-end:4px;top:-8px;width:134px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var nn=g(Jo()),Ls=g(ur()),rn=g(en()),dt=g(oe()),Ge=g(vt()),Mu=g(Ts()),Au=g(hu());var fr=g(Jo()),Eu=g(oe()),Tu=g(en()),Jt=g(vt());import{__experimentalRegisterConnector as Zg,__experimentalConnectorItem as Qg,__experimentalDefaultConnectorSettings as Jg,privateApis as $g}from"@wordpress/connectors";var wu=g(Yi()),{lock:Q_,unlock:Eo}=(0,wu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Cs=g(ur()),on=g(en()),tn=g(oe()),se=g(vt()),vu=g(Ts());function yu({file:e,settingName:t,connectorName:o,isInstalled:n,isActivated:r,keySource:i="none",initialIsConnected:s=!1}){let[a,d]=(0,tn.useState)(!1),[l,c]=(0,tn.useState)(!1),[u,m]=(0,tn.useState)(s),[p,f]=(0,tn.useState)(null),h=e?.replace(/\.php$/,""),v=h?.includes("/")?h.split("/")[0]:h,{derivedPluginStatus:b,canManagePlugins:E,currentApiKey:x,canInstallPlugins:y}=(0,on.useSelect)(T=>{let k=T(Cs.store),F=k.getEntityRecord("root","site")?.[t]??"",X=!!k.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:k.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:F,canInstallPlugins:X};let U=k.getEntityRecord("root","plugin",h);if(!k.hasFinishedResolution("getEntityRecord",["root","plugin",h]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:F,canInstallPlugins:X};if(U)return{derivedPluginStatus:U.status==="active"||U.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:F,canInstallPlugins:X};let ie="not-installed";return r?ie="active":n&&(ie="inactive"),{derivedPluginStatus:ie,canManagePlugins:!1,currentApiKey:F,canInstallPlugins:X}},[h,t,n,r]),w=p??b,R=E,P=w==="active"&&u||p==="active"&&!!x,{saveEntityRecord:_,invalidateResolution:O}=(0,on.useDispatch)(Cs.store),{createSuccessNotice:L,createErrorNotice:z}=(0,on.useDispatch)(vu.store),B=async()=>{if(v){c(!0);try{await _("root","plugin",{slug:v,status:"active"},{throwOnError:!0}),f("active"),O("getEntityRecord",["root","site"]),d(!0),L((0,se.sprintf)((0,se.__)("Plugin for %s installed and activated successfully."),o),{id:"connector-plugin-install-success",type:"snackbar"})}catch{z((0,se.sprintf)((0,se.__)("Failed to install plugin for %s."),o),{id:"connector-plugin-install-error",type:"snackbar"})}finally{c(!1)}}},M=async()=>{if(e){c(!0);try{await _("root","plugin",{plugin:h,status:"active"},{throwOnError:!0}),f("active"),O("getEntityRecord",["root","site"]),d(!0),L((0,se.sprintf)((0,se.__)("Plugin for %s activated successfully."),o),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{z((0,se.sprintf)((0,se.__)("Failed to activate plugin for %s."),o),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{c(!1)}}};return{pluginStatus:w,canInstallPlugins:y,canActivatePlugins:R,isExpanded:a,setIsExpanded:d,isBusy:l,isConnected:P,currentApiKey:x,keySource:i,handleButtonClick:()=>{if(w==="not-installed"){if(y===!1)return;B()}else if(w==="inactive"){if(R===!1)return;M()}else d(!a)},getButtonLabel:()=>{if(l)return w==="not-installed"?(0,se.__)("Installing\u2026"):(0,se.__)("Activating\u2026");if(a)return(0,se.__)("Cancel");if(P)return(0,se.__)("Edit");switch(w){case"checking":return(0,se.__)("Checking\u2026");case"not-installed":return(0,se.__)("Install");case"inactive":return(0,se.__)("Activate");case"active":return(0,se.__)("Set up")}},saveApiKey:async T=>{let k=x;try{let X=(await _("root","site",{[t]:T},{throwOnError:!0}))?.[t];if(T&&(X===k||!X))throw new Error("It was not possible to connect to the provider using this key.");m(!0),L((0,se.sprintf)((0,se.__)("%s connected successfully."),o),{id:"connector-connect-success",type:"snackbar"})}catch(V){throw console.error("Failed to save API key:",V),V}},removeApiKey:async()=>{try{await _("root","site",{[t]:""},{throwOnError:!0}),m(!1),L((0,se.sprintf)((0,se.__)("%s disconnected."),o),{id:"connector-disconnect-success",type:"snackbar"})}catch(T){throw console.error("Failed to remove API key:",T),z((0,se.sprintf)((0,se.__)("Failed to disconnect %s."),o),{id:"connector-disconnect-error",type:"snackbar"}),T}}}}var xu=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),_u=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Ru=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Su=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),Pu=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:e0}=Eo($g);function Cu(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"{}")}catch{return{}}}function ks(){return Cu().connectors??{}}function ku(){return!!Cu().isFileModDisabled}var t0={google:Pu,openai:xu,anthropic:_u,akismet:Su};function o0(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let o=t0[e];return React.createElement(o||Ru,null)}var n0=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,Jt.__)("Connected")),r0=({slug:e})=>React.createElement(Zo,{href:(0,Jt.sprintf)((0,Jt.__)("https://wordpress.org/plugins/%s/"),e),openInNewTab:!0},(0,Jt.__)("Learn more")),i0=()=>React.createElement(Ci,null,(0,Jt.__)("Not available"));function s0({name:e,description:t,logo:o,authentication:n,plugin:r}){let i=n?.method==="api_key"?n:void 0,s=i?.settingName??"",a=i?.credentialsUrl??void 0,d=r?.file?.replace(/\.php$/,""),l=d?.includes("/")?d.split("/")[0]:d,c;try{a&&(c=new URL(a).hostname)}catch{}let{pluginStatus:u,canInstallPlugins:m,canActivatePlugins:p,isExpanded:f,setIsExpanded:h,isBusy:v,isConnected:b,currentApiKey:E,keySource:x,handleButtonClick:y,getButtonLabel:w,saveApiKey:R,removeApiKey:P}=yu({file:r?.file,settingName:s,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:i?.keySource,initialIsConnected:i?.isConnected}),_=x==="env"||x==="constant",O=u==="not-installed"&&m===!1||u==="inactive"&&p===!1,L=!O,z=(0,Eu.useRef)(null);return React.createElement(Qg,{className:l?`connector-item--${l}`:void 0,logo:o,name:e,description:t,actionArea:React.createElement(fr.__experimentalHStack,{spacing:3,expanded:!1},b&&React.createElement(n0,null),O&&(l?React.createElement(r0,{slug:l}):React.createElement(i0,null)),L&&React.createElement(fr.Button,{ref:z,variant:f||b?"tertiary":"secondary",size:"compact",onClick:y,disabled:u==="checking"||v,isBusy:v,accessibleWhenDisabled:!0},w()))},f&&u==="active"&&React.createElement(Jg,{key:b?"connected":"setup",initialValue:_?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":E,helpUrl:a,helpLabel:c,readOnly:b||_,keySource:x,onRemove:_?void 0:async()=>{await P(),z.current?.focus()},onSave:async B=>{await R(B),h(!1),z.current?.focus()}}))}function Ou(){let e=ks(),t=o=>o.replace(/[^a-z0-9-_]/gi,"-");for(let[o,n]of Object.entries(e)){if(o==="akismet"&&!n.plugin?.isInstalled)continue;let{authentication:r}=n,i=t(o),s={name:n.name,description:n.description,type:n.type,logo:o0(o,n.logoUrl),authentication:r,plugin:n.plugin},a=Eo((0,Tu.select)(e0)).getConnector(i);r.method==="api_key"&&!a?.render&&(s.render=s0),Zg(i,s)}}function Lu(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAAD4CAYAAADB0SsLAACAAElEQVR4XuzdB7hlRZEH8D73zRBniJLDzBAEVFQMKCaCWXENa1oTYM45hwXEtOa0ZgVzWnPOBHPWVcxgzjnrGvb/O91n5s5lZnjAe4Bw6vvqO3XPPed0rO6q6urqUkYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUYYYYQRRhhhhBFGGGGEEUaYD3RdtxY9/XuEEUb4F4aBoWdxhBFG+BeHxsxg0+BmwSXBrYPbBTfOI3Dz4NKZV0cYYYTFhMlkskGcm5tbC6f/m5mtlwavGLxacKt8+k7BY4N7B/cLHhbceTrtaRi+A2bTX7JkSY9Lly4tG220UY8jjDDCmcAsM8/iLHOfCYObtS8bPCi4ZfCIJPHw4J6lMvlVgzuslYEpmP7WbPoDc08z+MYbEwpGGGGEdcIUo24V3CG4WXB5o103R4fBtgpuFkRvm3ubBrcPXiTMuElw+66K4uhdgrt3VUx33Se4PMltF1wRREOMTmTfrNHL2/s7BLfMtzdq+dgmaW4UBt8+zH2RYHh7o+2C24fBl45MPsKFGsx8U4w8O+MO918U/FnwLsGH5f5Pcz0ueJT7YbAXB68f/HnwncGr5pmfBD/Z1Rn79OA3ggcEP5N3fpzrFYLvDqKvkaycEPxx8BbBxwd/Erxv8F6NflKeu0lL+1W5HtzS/lDKcLlcfxLm/lLw0mHq0zbZZJOf5rqPmVwZlWWEES5UQJwddNdp0RozTGPuvTb4z+B9MXbu/SPXpwbv6n7efV3wxo3+SPDQPPPP4Le6ysi/C/46ePk8813Phb5K8FPtuesnO28K/jNIbH9Wox8RfEijn5fnbtWef2fwmi1Pn096Vwz+I+X4Ucp0uTD1bzbddNN/ht5vGMC6kcFHuDCBma3prBuHCTYJg4QPJht1VQyeBKfp/YJmZeL1KnSe3TO4W967Wt6/WK475nrl4KVCbx28XJ7bv6u6tpkbbtHumdXd913PbVOqHn75UkX13RvN4LYjOs+sCBL56e/7JO1tglcJXiq4ZdK7StK+fHDLlOmg4JVCL8/9jfO/ciwp1VK/SamWela4gR5hhH9tMEPDaWNUcJsw+qeDX8l/FwsjvC2McGoQc704+OXQ1w4eG/x88NbBu6Pz7IOCN897X8w3n5ZvHZDvvCLX/8zvTlrDzDkfPDNoz+2bb94r12sEr9TyQbowaHw2ab4vaNY+JfhJ94Nme2U6KJ95WfDLwesGn9ToO86kMe88jTDC+QKGDovh4MDowR2iqxJ/idaXy3+no/Psobme0uj/yPWVjX5g8AnoPPtszIbOd94ZvFrE4q9E7315mHzO9+fL5GcGU8/K49OCBprrlZqnrwWv1OhfJs0Dg3/xO1ez/XfRQXr+xxp9y+DrG82KP8II/5owy0wzDM76fI3gdXOPZZoYfr2uOqBcIa/TjYnIl87vfwvuEbxYoy+e5/fMezcMQxONt8v1KpnFLxWcLOQ69FT+ifX7BnfuqjX9Bl1VF1juD09erhFkVb9O8Lru5//Duqrjs8QbCAwMuwUvU2r5LjqV1AgjnH9hihFW/27XywQ/GDw+nX6fMOP7g28JE+yR6+uC7wi9V/573qSKtEReDLRvXqc3n2GggNODxSD2L5aTyWzasygv68Lh/wZPDb6j1PX2Bzf634J3Dn6wXW/caA44PQzvD+mMMML5Da5Vqgj7veAV0WFCIuwBYc5eRE/HZeH+YXuOjnux0Ga/nWaZaejomHuawReLuQeYzcNsfoY8zTJ4A5z5pVLF8lsF39zoBwSf0eint9/o99TXRhjhfA6YNJfb5nqjdPrtgrcOI9wiuG3wdsE7BTmi3Cx4Z88Ht+qqKMx3fPaT/4qAwc3OdwnuFbx68K7BSwYvGzyyVMs9l1m0/0cY4XwFNwy+vNROzGqMfmhwn+DzgkeHWVeEwZ87qcaqLaZnu2HGm8WzA9Oz5/R31kcPvwfw/rruLxIwuj0/eJMgAyP69qUyvDq0Hq8O0U8pdbltLVhMyWWEEQZ4bKni5f+U6jCC/mTw2o3+QddEdBgm2nl9DA7OBcY6v8BLSq2TZwYf1GgiPFEe/flSZ3T0r4LLvDSoJwNSU0YYYTHhysFHBm8QvHipS0A6KSeSxwTvE6bdNddjgo/oquPJWoys016QYT2D1+Glusdep1TJB81llpFRHd62VOebhwXvHrRpZrXOf27ZIEa48IClK3qkjRjEcmvTDGkHBh9VqmWYkQx9ZH1l3TDfWXp9IvN63t++VAeSm5Wa12NKzQtbgBmSpIFhMMvjSl2qunWjDyiV4dCHBA8uleGIzxcpVRrxzFowSCDrgvXdnwdcotR8367U/KI5+rBNPC7fPSYMbpPL7cLYd2uOQz3DjzDCOQEd3Hout84TShUd6YZ0xVkR/Yv1lTUwzNrrYc6FgP2Dny1VzLXe3KsEwcsFf9doS1XfCP6j1AHJ0pT79ogTmf8ePK7UwcH915VqACNGW85aLyxg2ejhsyL6T7vq6deXKcy8f5j6pE033fSrYfCLmskHS/4II5xdGLZW8qUmSjIKEcuJmK8olUno2oOBqIeh029otlsgMIPfo1T1gD/5k4P/Fdyl1PVlTLqy1CWp/y6Vce8QfG6pUsi/l2oUNFsLAoE2w29bahkNGgsK6xkQBkMlMZ2R7YTgf3V1m+szU4dPCYPvFLxjGPu+uVqVWMueMcII8wE9Rae3rLOqVLdLsxjGMCuarV0XC8xe0iOyWlIygPB00+mJ4oeWyryYlHcYRqS33jCdfMtcbx68aegt3CuV8bcO8nO/TakDAi+62wQNXNJwn5pBD3bfrOm/I0stP3FfntSLAU+euLDauOKZO4R23wBoVcHz5xiadGD14XbB/5irnnP/Eea+Q64XsfyY+3fLM7u1Z2c/McIIZxAzWb6+XqpYiFne1ej7lDq7oc1+iwU8vqTB+8tMTHx+TqmztPtvK1XMJm5/IXi1dv/npTJrL86mPGbe37bf3Ea/1u7Tud/X7hOLbXRBm+3/s9FmUrow+pRSZ3fpnV6qtOL+H/MtA92QnkHoR+05g9Q5htYuBp4+jTD0AWHovzVaOKre9z3X6w9tODL5CGvBdMeY6hyDm6XObI80mrhqVqe/mqV6GN5xXSBRnGHs7aXq/WbEt5bKbGZutIGG3v2WUq31DID2dxt0VgRfXarqwAf8Bf5L3jxjR5fBgbOJMtnNZnAgCbjPsGbGRyufVQK0lQLSBPppeWfP4JuDx3d1nf9Vwf9xv9SBSB4x5VmGaVF7qk12Db43/705TL1H8JXBtwf3zr1nd3W/uu2x62rHES7MMHSorsYvu2ZXN3YQec1GGMymiUuXKgqvnHp1IQDD0uUFRJSeWVl6VAGDCesxhmWxX1mqVZuOjJHAwaUyHkeQQ4IHdjViKoOaAA8bdzXo4qHBTXOPjzy3WKK7TSzKy6Nuj/y+VlfFXGkS5cVss3nEzM1X3juet1dc+KerT+r+cOGiRHs5LLh5V7eV+haVgE6tTMR1hsobBQ0O82bA4VntBMPUS+fqJhcbXOxLt/nlepO60UVZb9xVnX3eaYxwAQVLLHPNvzsdxM6pX5Qq7mE8Vmli4U1LnbnQROaFAmrAD0r9rln0w6WKtjdP+sN20fsHe2eaXPlv03s9/4ZSBwD3P93Vvdfu/zC0wQj9f6EvGSS29+JzcPANx8CD2kEyMPN7hnhu7RnNsv4f7ZkPlDVWbdtFe7E8dfbb1N2l+dn7PVe3wH6/vW8g+kR7h5pjpQH98K4xrHqfdlxZH3h+aKfgdhtvvHGfXt65Qn6fjs73rpPnTkbnehfvDOmMcCEEwQEHRwmdKx3FTETU+2yudNeXlbrkpaNaEvvfUg1ZPeg8CwBvDH66VJH52UEhlQ4OPjJ5+EyuDGW37yoT37OreqZnHt3VKC1ooZVEakG/MbgyeFLwg/nGykkNKuG/iwZPaGl4l3X60/nfrHz/dp//PMOZ9B7c1YHuU8Gnhr6U+6FfkXeIxp9Knb07uGrp0qUnpQ4/HnqvoDzIuy2vVht865Cg0FPu3xbTDQw+MPlArw+mvNe2Tpt9IvjV/L543nlTvvXloNmbuP7ZIGPj6ll/ZPILGWDuhkvSUQ5Ip7l0OstmwUunMxwYXJYOQty0AYQ/pB6i982bq3WwBt4jRhO7fcsVQ6PttSY2C9dEdL3spEZS3SV4mUn1Xb9IkGHJdVlQHncKinluhqYDA9FULhrsgqLFQExz0eAlQ4sRtYf352pYpV2DB4QWqdWGGOltHbRP/TK5L4KqjS/S3j3oHXqu0FG+JVSUaC6CTeyfOrxUrsRn4aSUw7sGgsvP1b3vK3O9Yq7b57rLXA0UsWve2d5MHNx72AK7Phj+D05auiLZTFp+klx38eCVJrWuVoW+wmTKPXiECwFMMTfcWbDAXP8RRr9sOk5vkU2nob/qLFfv6tLPmcLQiQbs1uiAK0oVTX2bB9mPct9vrq1f9p+OGHw/Ou/eMOkfj04HvmfwGHTuPSn/sXh7nlGr35Ka6ylBa9nob+W5SwT/lPd+h9ly7UXmSWVgszH66vmvD7o4qUtP/fbNXB8SNJujbZCxJCa9t4em16OFbbpUe/dHZtHU3e9Fqgl9qdTht9r7dOOTGn2T4Ksafc/ctzKA/q+800epyXtvxbwkqpk2KtMwMPmSNqPPrb0OztovX7cJUjHQx3rGs6Nb6wUc0glncdugkL/fTuPrqJ9KRxAa2F5tgQb76CVTzLpOGDrb0OFcW4dzNUDQrz8QevdcPx78elcNW+/r6p5xMyzR93t59xrpwE9Mxxax9DbB+yRfGOlhwZtOapTUZ4QW9PAHwf9JmvsHvx8UG22vvPP14FeCewQ/EfTcfvn/rZ4LfcXg8/PdH+a/64d+VO5/L/Sdg3d0P/eOC17LfcyS62W9G/pdue4T/G5Qfe2Z508Nnp539wmenHveF1r5da1M1879ZylHrrcLPlTeXYNHpKw/zn8vnmXu6baaBv8tmWHw1kbE9Z/k3k1yNSCqk/svnRk4RrgAwtDIraH7WVnHCb1f8OIbV3F9WToNy2wv902q6LdB2c7frZP1hwFMqhjtN9GXWKsjEkUxt2fpyHu1DrnbpIrV7u8U3DfPTZbWAwX2TX42ynULdHB5/tskKELMRZZUERW9k7LlundwBTqI6aDyuuc/z+y8tDJhF9wGnf/ncl2WK3rTliYXUOl2eeeiwe2UsTH2zgOd+6vad/du70jboEJ0ByuCF8/vTYPySZQXhVX5hJraMbhVkKFuRXAT17TFTsFNguhdg5MNMab6a4OpqK4izCrDnsHLJf0dllafdfVxEd9RLyNcgGBgQh0wjXuJzTff/J9m7jT2PhHRf77ZZpv9tnWm1eJfY9rZT60Fw8zeGPrf8x0i4at0/txnpPO/JTdWbzMf77PPBL9vBs+zH096f8x9NoA3h/5T8ned5OM5y5Ytk8c7Bh8W/L/cPy7/39ozwRcHD8tzf87994W+TPAPob8Y3DfP/yz44/x/0eBXQ/vuJfPMibmir5r7r5RGrjfJ/0+QRvDewbu3tJ+a566f//+a914XPDB5/EOuH871Yrn/x/z/jSV1ADBL/8z93Pt8/pPHKwTfpXy5d3juvaR9987BY6WXe653bvePz2/qyZ/znfekXa6inVJHn8h12RZbbNFtvfXW6xWjWhtMt/NLg38J3j/4qKaKvSB0/7/nRrgAAUbUqDphGvivaejTghj81+lg/5frqnSyszW6N0bnIPL7XF+dNPbG7KEFecDg7w5y1LDTi+eZ00VW5ven2qDAQEUH/XPwOsnDfyc/f0+HxOAP1dFz7zHBW+e5v+SZ4zG4d3PvA43BlYmovE/K83sDV+i98v63vJ//L5HfH27PXTnffk1L40Z55om+FRqD38P9XJ+W567nft55w5IaA13+PpZ63BdThj5trsaWI8b/Iv/vl3tf8E7oA0O/W37znesHj2/fvVPwuDbIPjpp3jmI2V+c3zfwbr75pm233dZ6Ouv4u8PYy5YvXz4JkjzWqvtpwOD+14bBl+d76udBwUdKI9cX+n8YvOEIFxBIZ7EMVk2uc3MXx4StI+yajrAinW8uOPvafIA12/c5yoiCyvKuE7EWO99LpyO6C6roOYcZENPRLLx763Bz9ZwxIrrnic/EcqLm8iDG2WJJtfQTf1meged3XVqtymhLVsq0dzr0UL6VS9eIz7vkmYHe1v383wU3a7SDxojsewc395x6WrJmU4e8DiK6mXsQ0VnqIXrPuWZdD+yeq7omolMPpkV0EsX2GzURXRtsWeEyO+6448X33nvvXXbdddfL7rDDDpcIbp4ZfKuUact8S/vNtsFqaGWGxH9l3Trv7L60ShS84Bw6YbVgUKVmPzHCvwJgoCngcnla8I1pUC6bX83/p6ShN9IZzNzzZe6Z73Lx/Gap2yyl4bvWpVeG/mKuzvTipfaRUoMK8u5iWf7frsZh4275rUk16L1kUq3gTi55XDrjd4O3SP7uGSQCPyj//XueOT30U5dUI9u3g68JMrJ9K9cPYrA8/6XgF/P+qlw/vFE1gBkA3pDnTltSZ+Nn5t53gtcKPiTPSO+I3Bc/ThoPDx7imfx+TtK9RPL7zeAbQhvIHNIgWuyqXD8e/EJotgXl/HresZzHcCi9w4JPaWW6VfABrUwPDDoe6bQ894S0wWG5vi//PWqPPfa4Yhj6HsH7hcF53X0k+Ml81+DWq1Hrg4HJl9aBzGD08HxXOVjUbx36By1v40x+AYHBC+ujpe7I+nPwO2lY67Z9Jzib4LA+37UFUxo2hfDDlsZfSnUeMXN7hpcZ495PvdPVo4GGZTLM8F50rg4VfBE617sG+YGjn5j/jmjPvDp4zUZ/ODh4lp0+V2dPevMfl1T9+IftfZb6YZmMiym7wLCExZEHfb9gv2yV/5/Z1fjmaM4ydpcpx6fy23KfTSynRqTm0vqtMNQ/w6DW+DkH/WVSl+747Hv/8CDfeGncJSi4hPuPDfLtVwf0496RJ3k/ZtWqVZblMOq9d9llF8clSfunKQ9j5Jnq0NrUIOC5vMsHX3qW/npvwK76tq9mcDjCvy5QrK3d2nwBdMqViG4Dy1/zALHCbK8cwNKXGbunG3PrPOhBLEdzcEG7x88bzQ+cUwk1giOLdWuWeGeCcRzhjMLxhTsoxxMqh3PGOJMs9cxcXQNnXefMgil6m8Nc3YHV52NSHV04w+wYxPREXtZnNKu/b3Ga6QNE5vtm7kG96B1r0PnuJTF0ROdNw+QXD+6PjjRk7Z1PgeOGe0eXSRWHV0yqE5FDE5SPEwqVwYrAQXnvotG7t4u+fdUVK1Zc/sADD7xYmPzKwcuvXLlyh4juB3kuuJH8tzJMVf0Zwf8NV03qkicnHSsXh6YM6kddL2l4pt8b4TwGHW8KbBSx/nx0qQz9mlJFaWAP87xh5rtmbSK3/dP2SfPTFgrJrM1Z5dhS90vbjvncvOsc7/el81APeHdx5Xx/V0X3F3XVrdQSGtfRU7p6OCAf9A8Hr593uHYST4VXvm67/6iubvrw/LPyP1fVk7vqALMy+J7gu4J2YTlL7ORJ9ez67/YckfdRk+okc1Dwjo3m4umklZO66s9tgwiV4phSB68PBZ9tFu3qmvMTdtppJ3r4HYP32X777TGQ3WZcWA18T/N+VzeBiEkn7zbz3LGrIvedgjbbeOZhGTCunPffmm89EpNnkHgk9SHfNSC+Jfi2fJc9g5eeQcsgVzYE/p/GfOMWwY+F/q/gYcHPTep5awakM5UMRjj/AP2YWPfaUiOSfC5oEwfgXXZ2AxI8s9TvCo98VKkbRGyRPLjdJ2oTYYmBHFrsDvtns6qbrf7a/jNjswt4xwaRE9t9Hb73ZAt9j+Ax6EllnKFMNm70m02CzgS3E83zorhyi3X/r6ENOj9r//ElJz6jr1LqVlO0M8AdQIA2sNiKiqZ2GCR9y8YU+8ypIP+bvBgwPfMmBrHQGOOe2223HWmEDt5b0UvdR/73rpbJAOsdwRl6T7bg40MbHOX1FfmGlQhlfUukAd6EnIPevPnmm5O+nIVOxCcJOAPt0EmVcCS/QZhibni/UvNhABS3XXrfwOCYm2i/8QbW3Ec4/4CoJWZYMw/QSUQ4PaewMohBlpfqT07/ZTwDBhJr3QBD2OChUxFT+ZzraDZ6XBldKmMbGID901xjHb3LWGXLpeN7DQR2f60Kbh/E2NxoSQC2ctKNqQqeF6WFlMAecGhXfdylZYsoK78Z2ekp6D1DH9KesWXUu3zwWRsx1+CiSxde2Wi73pyRRkQ/eKuttrrirrvuuv0222xzYKN3yEB2UBjl6mESPvXqw2YWZ6/Jsx1fVhGkTRqxxEbKYHe4VN7hQ3696N1XiEi+XdK4dvCq+eZWuX+Dhr5LbfEs0bplbcPQ1XaADJo8Aq/SBot/z/VaSWcJ5macw+AMryOc/wCT2OLI2GNWMxPesVSR/DFTz50p6AxTIAADSWDYI/7CUju+2UtABfuczdTuC2uESRjKHtlVeGHwGa2DMV4dH9SDqAwvL1Wk5wNOwpD3I7tqgcf8RFoBHGwjxYRokUZtWEH/Z1cZhq83kdggJkKLvOyY/54efEVX93nbDopemSsRXNrEezPny7o6GCjjS4M36qo7LVrwB3vR0UR74Z9Z/Y+L+CxG2n3CJA/IDG4ftjK/IPekQcp5ZX4bXH1DHg8tdQuuvDvZ5TDPBO/aBgT5eGTe78JokzAazz4edWutXw84X+jq4Opqw8vjg06aoZ5YWXhivu845ncnvdfmuiUmPwfG1xEWCXQWFlOd6IhSLb3TkUZfPzyowc8CiK7iffuaHx0kZhNlndDhPnHWMhkRlh6OMdwngpMkiIH2Z1tPdh+amb/XaDM5ewFagASMh753njEIoA0QgwWYPjqIz1SPIYQSC/0gokN68K8bjclObbTB6R2NFiCh32xSqn3hno2mdgxqALXD7I+mdhhQerUjaBecaK2nRpQ2ONlS+tOUl2QxlImILkor+m7BJzaaqC4MlRUHzE9k/k2QjrxaHx6WuzD5wNRnhbl9Z4rBDZREcqsS/WaaXG091Xf+2ZyCth2W2UY4fwFmYg3eps0g9m/r/ERYoY/6pRdwFhkc8+oMgDRgABmsMVfrqp4NMMQQqggDCsQAHLtLPJWupSczGKBCkDj0VnkT7JDoTbwXiGFFVw1iZnQMujLXo4KeZUM4MnjdUoMuouVxy1IjovquLa83KfWctM1yvWapARjdl4Y6Qa9o70qb6uEdhj+VhCYtAPk+WDnaDHh46jnkhJRxo2XLlhGfGeluGeYQQIOqwBipfujNR5Qa0UVZlMmecX4Jt/fd4KpSDZb/Lg2I0RYCWp4hEd1aOBHdPoC7B29OXE9Z7h48Knnn+LPBtfYRziXQcFOgsxNTWYOJz2Y/nX1eMPOtB5b6LQYlIuwjShWlGdDMQnaZYZojg/ZGG+69Iw8APaT9kOC9G83I86hGE+dJBAYgDh+P7apF/fBSDyIws9N7Hx+kR5tFn5ArxpQvMyDR1/LfE0pVJTDTMaWuHmB8+fBd+SUBPKarujy1wnMs4gxi8oTBfEtZ3ROmyTq8QQmn+SbGnAseE8a4X5iAzeBBwYeEKTyPQY9OfcjHkaWmh6kNFMpEmjJb9mUq1YahHAaCRYXG4NNoKfLpwQckv/sGn57yHJfrMrP+IEGMcP4BDEn0E0nE7E3cIzKfHRjEWYYsVmtiOaagV7oPzOSnlLo01u/JLtVjbWWpZ2qJAmNQcJ8YiuGI8X5jpO+jG+N+tNEGk94ppFQ1gO0AzXpvQEC/tauRUdF820kK6J93dXZEQ4OcOkAbLL7aaBLAOxttMBxEdOKyAQMtwowZGE1E37/RvNkGFeSPYY6VpZVpUh1gqB2s4kR0W2P/VuoAQT3qreilMrTVB6L6oBJQGRYdZhjcQClPXw0z9yJ66D9N6lr97IA/wvkAdEgzIlGZWPnYUkXdHs5igzHOmckcJIDJ6afE85WlDh6ilJi1b1aqYQxgjkMafUSp+QB3KFUMBZjUt4DvPLjUI5EsVwn4L71rlTWRTDEvQ9ohpZaJocxAQ7Q9OnhE/jNYuM8LjZpCYvBdAwqmVQ4zuPSk4b68eYbxTDoGE0BMx3QGB7O2+4e0/xgC6bCcQh4UvEuQRf5ewfuFVg5lFe5JXbFRGBDlj2QjbQOFEM6McaQTA5K8q8cezmI7nWUYGLyrjkXDDE5cf0zwYZMaPHLR8zHCemCm4hlwdBy6Nr0S82D0swo6M2bAHJgME5ltzMCYDHNoeLqvNC1HyQidk1gN6LFmStAvYbWOQgc3Mw/P+BYwC2N8yp48c2bBfNK7a6lMjKmJvWZEM6Q80qUxDUYk+hKH0b7rfYMIcZw+TvS19oxmwDMIodkVjipV515Zms5eaoRWxsRhSRGNCUHv3KNMYYKjgjdvjMJ2QHQ34MnPHUJTO9QBpxZ1KD15Mvv7Hiu+pUNlUr5BtZlt30WBgcmnmF0Iqwd01flG3VJ39AX1OcK5CTMdgPhMxHtUqbP3/5VqkT2rQH8cxFnr3KKqEj110t5vu5zRio4p3Gdx9s6fgu9O/uiy7ltP3SUXQQn91lmIpmidiDiLNih8pNEGDyK65+jt7AjuP6tMieilDg5oIjrmQf+srLF2QzOzMvmWwe8r7f7BZY2IznL99EYbJAYR3T2iPNqz+6BTtm91TUS3xzr0yvYMml3gh42WHhFd2qQFji5oZaB/e8fVIGpvwFtKg3ODwcEMg/d1mOtvuqkjn0u1dYxwbsJMByASnlBqJzILHF+qcaeHs9BZrEvbdMF9dM9SR+8XdHWGOSL4nK46a9DVdH4xyHX6pwZtkiAae/+2G220kW8RZ2+y2Wabmel9ywAE6NR0XrMd8dUS29aldnS2A7O2gcP6OlGWNd6aOkY0iLy41FnRLIj2be94BsOQJujP1tvNwu69sN0fysQf3uz9vFIZ1yBmADHQWAVQPmlt2t4nfbA4yff98i5ruR1mNovwY39qrpbxOLQcXeqApz4MGGgDgjI9t1SjGhVE2sqGmZTbwNLDWWizcwzSaihIhzX7Z3V1oJJX9UZiG+HchJkOoMPQ3zCljo52bz5AjLRsBOmMOpylIDT9kJhufze90TIX0Zb4fmhQZ6Zzes4sDdDyAGymsMRlhhC8QEcGmNYgAYjdOjvAsAYoTGX92gytc2EODEbPN+sTgZWPWE7cP6RUyQBtkKNDe97SFakE8xoclNWM7D6a6E+94L0m/yza7lNVzGbyMYD6AMpnw4k24F1niRBNbOdJ5xnlmy4TT7Y+amypaVg+k961Uy+WAQ0EpBZ10UP7zrkCbfZ2pX5x+uFFuE1QP2BvUIfnap5GWBuIfkQps6HZA/3K4c8zaZhBlCY6YpoflSqWY4RPt/8wGjWAGGkmZwF2n95P3PxdqbMR5hrEWaIxUfUTpTKl+57DlKzpfptdv91ozHZSo6V3QqnWZ0azYxttVh3E5zeXqk/L62fKmrPJ5J9o7D5VxYz88/bfFUq16ruP0d7e7rMk+/YfSl3CM+u6Txrx3Z+W6qSiTO6fWuoAJI3fpn4FhHCfeMs1d1A7MPegdhjQXl5qPd+u1OU5ao6ykcA888bS4EzabEFhSky3Q4/ziyW/YcWgVzvkZ8ARzn0gCr+v1NlWZz2lVFG0B423ATAbv7ehGfK1pW76wHBEZ0zH4EW8lobZkFHM0huR04yPoTGiAeLdperoBg6DwtNKnV3tp35tV4/84SpqmcvsT+TFaBj/P0vd1CFthsIPlbq8hCFOLJW5zXTK51ki9MmliuMYWV7ZHpTDdyw7Eb+HMmFQ4rLvmi2PafQhpRq/5F0dKhP6iPaO5a0HlFqm95Sa3opS6+M1XZ2Nlcc7JA6DnbTV7TGllo/IK/9vK1UkNzjRuUkdBlP3V7fZuclIUwxul5pddQyHewTfFnxXV89FW83g52beLsyACQ4uVXQ0Ew7i7/kWdIzWkfadNNG9q9Z3TAQwBEZlUf+XgNmO3zq/2d0MCHYsdZABBjRi+gCCUWwa/V15Ob9QRc4TmGLyAW3xPSRoxxoVjYplI1Afjmtk8kUAFT8FJ5YqQtGdzRjoo6cfOD+BDjF4RrE85xanEBtBvoYulSnMjsTnYTntfA+zzN06/ndKLRNj3QcbTQoa2kn5qAK/L21dPfiLUo2j5xkMzK2NchX62dbUv01qUI1hZaDfBTgy+CLATKWyMH+5VHHSYXZiod11eOasNIBGnX5vQ/R80TftRtpss836WG/Q7xYr7KPBL3KHzLOvC34haKajB3+uqwcJzhtm056+tz76nKLyDT7itlUOO68wR/5/e1fLZDMNcf7zpRoeqR10clKKdvtoWSOif7hMDdDSOC9gGISDu0W6EGPui5Ma9ea9ydNXurpuf57l78IEq4I2KnDSoL9a++Vffb6qfIyNAYLLgg5WwBiCBoqgilEweZ/vUh1MhiUZS1KcQ87X4vqwbzrX3cLgO7fdXkJBDXor67nVhtlXZ4EeP1jqz1NoDA4uAic1jJWVA3v6+yi58yjPCOcQGGX+mIo2AzyTFberYYxWzzDnNgxpD2hGa8y91bJly07OldENM/wyKOKJ0L1OwvxbV9erxR5XDgYwFnqzmqWa8wXMlg8zY/Dg1inbH9o2S2GbvxzG+EfKJpjD21uZ2EweF/x2K5/3iesMlgyJPy7VqNnDedF+AzQGd4KM3WYOMjRgCdD596C95KvrYITFA8tg9CLW2Cemsi3XPHSo+POig0x3funrKJg8M/ZyzJ3ri8IMjub5etApIAIRfiDP/zR4kVIdVZxTRh/njspbTec/38B0GYfy2UGW8n03+KOUy0z+0fwnvJI1bo4jPwuy7Bu0hItmUKOHf6vU3XbXDH6j1COKpw1daxI+F2Fg8MbcfBkwOFH9l5MaNHKtehhhAaBVJM+vqvhVcY5ex0tsYwzS1SWo86zSk64DEIij/UaFdAR7ih0kgMmdibWs6eEOL9i8ibPDe7Of8x+/8NU/p2j3h3rgAUdNWRToasaoCa7O5+UAQq3o1YuUwYClTLsGd0KnyLZakk4GJrCddObLZwBqSv/d4MZ5v4+Pdh4yuait8iAQow3v+wVFYTUoa2NRZvW786y/XSBgpoE/UKooZ1mJRfbbpXp1nWcj6kz+eND9Knl4Q1fPpf51GOCjwZXp+L8Ic38jV4f8OfnTDE63s54uXjoPMiLqV0p18aR6KCOD2y1LjQxjLdo69Q9KXYs+tFQnFmv4PSwCQ5AseKZZwuL08stSI6CKy/bLMMCpKcuKzN6nB50QuuPSenaZGZwebs1fm5FKrN0rh+/cttTjlInovPe+k+eenG8K+ywC7RMGBjcQnhcg7YZ2DX4p+ItJndGdCPvrrm4gOtf73AUKZjrsJyc1+D14RanLLBxbejgfVLSADfRN0TqJd/TsLwb3oHOn8/88nd8xPc4MswRD4uAtZ2mMOyRxVvkYDQGnFc4smMH9h5XK+H8q1Qfduqz7LNM9LEIdGGwwpPXrPj15Doqb/reUwekkznRzvpvy7tJ0cMuAq/IcBx95ZDnns8+LjwWdY5D7LOvsDPaPvzDvXHKzzTb7bN5/xsBgGP28gCkGF/DRUcnKLhjlR1s92N67GHV+4YEZBmdhZowCNnPodNP+0uc18FNn2bc8ZL+0s7oEJCS27hymdhYYevPc78/Fap1jPtNu7w/dgHOMGR+YGVcMfyxCZ5M31n1Xde4QBIEVtc2eKccuGDBlNHM7iw1D2ojSW85bfqbzPk2TDgbwzUFER+8wVT+LCUO5BpVnzR9rGNzhCMptiUwebUqxDXi6jCOcHZipPP7QXyy1Uz+50fMyQg0NsdCNMTMAyQs/7edP6trpV4Jv1Pkzg38p6GRPZ4ifmPufbe++LPip9j4jFPdPHl82h/A3HzagmOm5rFoz/kKpPtx8zr9Uqo93Dwtdvhk4MGgt2Nr9ykk1PL0/DL1tyqRsnzZw5b/Xd3UdnH2Aq652Mhg/sNQAkcrAzVc5SCeMbF/M84JaOCCBTwNpZlHabAakTW1g0GTjWQ1T6Ysg+6GWL3X+6uDXQnt3sfN3wYaZysM8xNmDy5qIoEcNf84w27kCM/nDgP8I6gx2YxHDvxmkv/6TCBt6qyARm4hnZtTJlYMkgtmtDKws1Yfbfb7ndy11YwYdlojuPvH9sFLrA/OfG3D1Ust3alfj3SnPr1LvnEL6DTShxVf/JrrUTTZsDGiDwwsbTa0ymPnWI0qtN/dfWupg5v4w6C02DPXJ9rHWLD7F4GZqnnbajLpikPLO+WYJ818WZhjIbMbohBn4N9NPOYOcX2AwSBHhWMadJ2YtmNi6D2Nbo1lgual6x6i0PjVj+v6glwMbN8yOgIPPRaf+W2wgmgptZEAlpfTlm9Rzx3rRvatbageHHRaygQaYfgCrIIMFzT57bUnhvlxZEwJrsUGbHVKqNHSGGaKVR0gqvugOjKBiqHOTzLSKMcLZgSkGV/ncU80IGuNMYWZwMBh8vNRZcrFkKjPqB0s9jocawbrtbDJLRoxNg9h5QqnqBniQ5xvN+PSkUvN3eKm70TCvvL+91DV/xio7xe5d1vivP7FU24TtnWbEM+iTCwQGWPXvLDS2hfdmsHr5pJ40QmwlmnuO+vSG9o7yEX9tpLl9qTvvMDDJZNi9pnzqiuFNGtSUJ5TK5CeVKhIvVpmk/aFS+1Y/2Mz0m9Uz+RRY3fAOKU25rOtvO/3ACPMABhuzwzCKljWbGOald88Anda73y7rGKnPLsjfFFAXpMGqTc/s0+vaIQG5/qWrMc+J1f5j3MGg1I1hJnOfSI/Rib1ESMzs/nGlLsURYQ0Qh7b7ny2V2T9W6qCwPongnMK1Si2HkE29iM57LXWw86SubviP8Y9O+7dSZ7gT3S91LzoRHH2bskYFObZUxkdTOwxyaIMxaUhdUVsWrEwzbaY+padMvT+CfscYOg1TDO5lTjnagIhOCqG6cLUdYb7QrLFrMXmpBhGVOi2uzheIiRpTJ10sWFHq7raDS3U+MQsL9i//hwSv0MphFjbqA5tMVjYamBEGmBZTzXpDJ6cHSktnE0WF2Ey0pef6dg9TnXKhwCzlQAJlSbNMRGQZyid//UaMsrZITpUY8sQ5ybZeDxF11ZNvMipeo1TVQxlFmVEW93m8abMFL0wD56SJ2qIsfX9rqx4bOnABQ+uH4sl7yKC93odHmIGhonPdMtcXB1ltHR97bNC5VcS4+XRgnYaoSEw045hBHj38OY/3zwmYhRmVGMbMagI7PK79d0ypUWGA2cv6NtBxHtpo4p9ZHLPw4/a+GQ0TiA3HUEWffX5oMdJ2L9XV9Uk6nbItdPm6qovq1Dz1xA2XtkMN3H9sWaNq3L2sOQeOtZzqQC8nlj+rVGnDIEV9odZoz+eX6rZqRlRvnHqUT5l8d5BwFgSGusnVQZD61H+mPM4151L84lyXYfJ1ONl48ehS+5KBi3RFhVjMieOCBVMMbm11EP0cunc6urT90uvqwDP3BtH2Q6WKfsSq73rMn+t6fwHB7CRt6WFKFme/zWLyQYTlcsof232zgAgnPMUES8DQ7mMQe6bRBgiMjSaKYw60LaZmRrSIoMN6clkoaN8jldgPbbC111u7/KmrEV36diqVkb9TqmhtcDq51NBOBqdXtGdYzakbaNc7Nvo1papfaCsDDKpo3npWHBYE1iWipwxfy/1D0fbrp60cfbUuJxuVOrSZfsgeoqz3W/3AAtb7BRKmGJzxRmD9+3b1ZMxbB9Gr5tmBzdqYHHMTfRlxMEwP83j/nAAPsLuU6korIZ2aPg3MZAOtExPlgdnrOo1mUfacdzGNUzgxEiYTg5xIbIC4fWgi7Rapp7vnesSkOmbMduRzDF3VUfmM2zJpFhc//KatLZRzKNPBpdo8AIPocN+gwNvPILey1DoR78xAQJKxBu6/O5XaZspNGqCzLxawjzjg8Rapr53S7+4bxr7zXN1Nti4GB1yHvUNqunap/cqgPMJ8YOicweWTesrEcZPq9qixH9vV2WM+DErPNUOY9TTGsaWuKZ8bwKr9yFI7K2OaWXhIW2dWFsAybiAAmN1sBujfdytVvF8RvE8rN2Z4YFfDBxlEHpbrrVI/26UzOg/s/sElg+1ioaExM7Q2/IiuBdlwLTW/wKw4lA8DGGTp09QOore2IJY/pNQBAJMJ2mEN3ECs3jC1Qe5RpQaBZHchqhP9DXILBeqZ2mawstR3bPAhkxqyaTWDz/Q17XVcV0MrG7z0MTaDEeYDUwxurZgoOzgYsM4SjSytzFZ6DzP37lGq+GRph4HOu0TmcwPMYn8Onl7qUpe0B8vyIM4Sy4mzRHbGtg+2+wam5zaa0Y4HGFoHN3ug2RZ6ET1l5lHWi+icaUJzhV3NjAsJwze7JqJvsskm0jeYDWUyw7N6ozHuRxutPl7Z6KPKmvPW6O53bvRry5rDHIjoyqRuflzqgOC+39NGvHMK+pJ24byjj/VqR+pw62kGnxksv9nekVciunyNIvp8YYrBzeBmb/uEdRYd/Wmlit7zqcjLl2rMYrwh3j6xTDXEIsPKUhnynmaDUo1tZi9gg8VgWDNTmckAQ83wDMMamhWa6M7zi5Wa4enoru5k4jBDohEJVISYJ0esfNSkwmIzuBn8cUHShN/aZigHBn5Eo81wZmTitkFWPSiPZbNjuxqeyiyK4ZXJ7K7eSDlmcOvh6oG1He05Us1CwT6lHYCYtHdLvT0l9XhMroJBnoHBW1nl5+ldPRCDdCi/4ww+X1CZTcTcfFLPv7pb0AYOot89usrs8+m8OtIdSnVmoK8eWapuR88jNupEay94LhwQKY8MHr506VJWZstLh7cOQmwlmgOz1LCur8P4b4CBxuQ37upMib5F6AO66jF2m9TNNUPb8XT7oCUfsyhxWV2REuZTV/OCln9IB7/dVJnMZkM5zITsB4AITj9Xz2Z9ARYx7qpS7SHKbEY20GESbXNEqYMBUfyorkbtwdRHNqTyLBRoJ2lcP3UnPNOd0veOCG48q4NPld2pMLa1Wq1Q1iPLeLzR/GGKwW3S6EU/FRnsrZddO8RPZc/CzD16ofd5SbHievfrpXY69/9Q6syyGHBoqWmcmrJYFvqlFYHQ9GaiOxFPR/92e87MNYjoJI9BRNfxLfOhzWCYAv0/Kcs1Gs2KbkZUPtFTGOD6eguuap2yLARMfUuZfP93pUpHvSpVqnGR2sFyrtN/uN1XH4OIbmClt6JJIOwU6Gkr+ifKmuOYifyMWEOZqDM9LEC5BjXny12VJnrnnbTTVtMM3vrjgPdIv3QiqXK/vtT9+UcOH/TMCBuAQTRSyXNtHXxS44hbOnpLVx075tO4vMl0qsH4Y5nmmFINOa8q9RCABVt+mQFqhEMBjt5ss82sHT84ZXhIaNFNnhx8Ycs/8dW6r56ko1sPNuiYEblPEl8tTb2ktCORu+rqiklIMi/vqrFrZfBVQaLjitw/IdeXBm3+mE9dzQumvmNwUofPKnWN+smlLu0BZZJ3UhNJ6cWlDmAGq+ODwhCz/MufM91IMS8rVbQnMr+8VH8ADKT9iNBmWvd9ay0j2wKUTdrUnj31tTD2C3IVdWetGXyKwRk4SUrKJ8/PLvN0nx6hrMXgLJmHB28yqadOWJ4RMqh35JgHGOmJuYP4ZLRmwOJ1RFS/eqneYAsKA0PpIBnpl2y77bYGqkuFuS+lXJtssgld2pKQx3VoMzYw8AwdBZObiYGOxGNM2enzB3dVTBQwwplgwz5lZ6cdPKmB+q/bVbFzwdfEwfC94dtBA/DgeUfsHjz19ih1+csL1Cz+DLZfsh8c0tXlT2eVYRrtpEzEcyqIdnb+mQGOiI/muacODBACLpytKKfD8111rVWHIqaK3KLOrpN2sq13LQYHA5MPaQZXtb+00QjzgSkGt+mfGM0yLFSORqdvir82+1oPM/dZZ1ld31GaiF7q2Vw8kNz/dWmzwfq+d3YhnaMLQ0+22GKLTXLtO0Hy/+Ctttpqd5bnUsVCuieLrN869/sbTa8bRPQjgw9uNGMOqzqaxdkA5Tsi3Qwi+g9TbxhencGVQ6dcSGj1ZVcZBu2aQxL1h41AHfuN0U9q9KF5zAzclyn0o9G5EtXv0GjhnSyVeeYjXVM1cv1OVwcP9/nzo6kG/ttfXlp+5gXD8+0dhk3qhP35vYie+7+eayL6rE86GBi8Aeck+TrCD/cXuq4vcDDF4NsE3xn8SCpNDDAdykjbHx8zDzBLnxJ8tE4RPDnIvRLDnRx8U9cCAi5Go4S5J8uWLVtKRM/3bx285zbbbLNtV10jxfUyuDjKl+5t+Uyn/0CpjEGtcN9sbaY6satGrYNzD80/QPSYk3K1u4t32Sm5vjb15UigD6RzfiDXHdc1E50TUF8Nt5vUIITD/WcG/SC2s3vQxw1KIseKiPKAVg6zNaelk9rVoK1tWOQN4gaFp3RVSnFffRlIPpi03pkr//G3hjYIrOzOAoMPz04h9eCUXJ+fOhKG6iOpr7cGxc5bHfd9Gmb6yrGlthnpYjWDL0Z/usCAztg6pdC1YlMfGrQuaYdDj7PvTAFdz95de5OHM6V0FOIeURGjs2oTeXtxeFKdGkRA3dB3zzKEubt0ELO4b18sHWWfVrZ9kqb9zzqEfBJve4Zp+UMTY9HKu2nwEkHeagI1XnpSd3ChL5dv+q5lnSvk25cJLk/nvFLSvEpw0/X4VJ8jGDrxFJK2iN3yzn9BnQ+0iKSeMSBgIuUhDotSus2keiweMKll4oVHAhnet6f+Yt5P+S6Xcvgt4unlcr1ycBP/wTOD9j3PGiy0/96h+dT7zqXn6qx91dTXQblulbY7aNNNN71K2m3TWSaf+h5PPCoE9Ul7KEM/6M0nTxdKGESjXLfL9Ve5JZjfZdc3E6lIld2ApZmY9exgL87mf4Y5M5/7RDEiOvrHrYGvkO9eKUyx8QZ2EJ1lcKpJKws9lBj31XQaA9APuhq0j+fUqf4LrRO/u9FEbwZAtGVC68vK8bigNX30K4O9FT15N+v0Inqu3056l046f2MNTnlWmIXgQkPr4JAc+ykrHl31rvtSqXk3QL0PnbxePXg8Ovk9MvTR7f7RwSPb/eNDE5nd/1De7dspND/xvfK/gxV+nzLumSuffe/sp0+sq19Mg/8nrZ8Eecb1/SJIylNvnw7ytPtnyvGj4OVb/XHm2Ws4fgpo06Hspe7T/3tX3XYPzn9PzTevOZ88XSgBY0/hNqnozwe/m4ref7g/C0PDNeBwYW8vhw9r0N9JpT8v9OVT4afl+qagGdQzAvRvlWcuke9fMrhkIRnBYNHytqLUuGTEaYa0jwRPDb1j0n9H8ndarnvk9wtz/WauJA0dX7inm+T/OyWP3871fsEbyHuuT85/B+X+6cHX5jcD3mmhT0y6pIWvpUN+LeXZxewz4ELC0Mm7GnqKmPqJSZ2l39HKIdoLpv1G8mdWfELydnquNw7ewzO53jPXGyuH/0NfKfitvPPSSW0ndfDu/LdL3hV2+vNLawDLTwYNZntiOLghwGyTNdLGEUF1/ry8d1i+89185y25Xj74ndTZx1JXjKJfDZ6Welw5zeD64NS3XhQ8Pd+6ZZA09aD8Pkh6cIQp0EiNibeAqWxB9S+TCr9Crn6vd4/uwOBd1dXo6TunggXgPyC4a3BpEBPsMVcBvV/SWaKTJI29gwvK4FMMINM80+jJfu8V1Hl1AlFJ924dgqMFsVHH2aLdnyypR+zuvaQelsABY9+g882S9aUXD64Mkj4MUvumDETKSwcPCG4eXBlUvk0XsnwDtLpXplUt78TUla1MPOz2SF67oB1aewVZqB2awFbgCtCCN3qnj0bb3ldup6XoF3ulfHu2fnDR/L5UrnPtv9lsnQGmmHKX4IHSaWleTj3mW0JaX67V25Zh6MsGD9y0wmoGB/LW8kqyIAGyF4kqe8lW5pHBp0FlwUY/JBV9P42ZSv1+dNl/pMIx+joZXKMNzFTqOvfvU7lPyndu3sSs1y+p50z9KXhKkBfSH3PPEUL75du/zHN/zvdXSmMRmIBH3U+DXyt12ei0oGCFjqj9TAvGeInk5y1BftDE2ae3PB6RZx7YynFs6FsG/xx8SX4f5n7y+0EdM/iX0KemPPvnm79L3f3cTJTrt4Oeu/z66vAcAss5C7pjlwygn25lInW9I/in4NWT7vPb+WW3CT5cWXN9WO7ftpWvn1GDyk0KMHj9Kfc/l+suy5cv/2vK8ZP83jHX70nDwKw8Z1YmzDbF4HcNSuO1+e5123c+HLxy8K/Bb2DuzN6/Sr7+EHqPaQaXlr5qUAn9llam2+XeE5POn4OPHxh86NMXelARDY3oD0iF3TuVt8cm9cSMP2Fwz62rIWcYnK/zb1K5T8x3/j2NhRleHfrKuffb4Id0nPz+XfArG9UZ78dpvF8vIoNbAvtJqQyO2b+evDolgy75yaT3R8yQ/Lyx5fEawacF5bFn8JRfOY4O/kfu/T7XFwYPUzd5/70Y3HeC/4vBMTdmCH3JIFEdo1x2PswwX2j1DawAYPDv5p7Z91NJ4w/J56WCb1PXSyuDP7eV47YYu5XjYcHbtPvPyb1DPZ9vvCUoAMPv8t6n8t+Oeea3wR/k93atX/wxtFn9TGdwzDbD4Or2VcHrSjv1c3K+ww7zh9Bfyz2z90/D5L8+EwZ/kz6W37cNYmyTy2OlBz03QlmzNJYKyWVul1x3TgWyPhPD6EbzFdFZbS8zqfot0RbjONbWd1mid5+r505h8r3y/Um+2evgaailmHt9aZwD0Mr8yKkPk+C+ycfFWplXzK0xFDnkbt+WP8Y/1nHnYy2fq5byLZZUcX0Q0Ym61Izdk+eNcr1Y8n/R4EbpoBcPXiL0ZsqX/y4b7KOUnBkznE1wTJHlQAy0x6Qe+qAc2pIoDIjD6E2DVBC0MimH57dt9UB3H8TcVcEdllSG6l1UG0MT2/fVfsrj/zODgcHlaVJtMlSg1SJ6kD3GIMhIuWXq74Aw9eWCm2HuTaZsGC0/rr2InqujhqmCxHUbgkYRfRpaY/adPGhkfclcDTX82aDjcTDqOjunRpsCftvf6aqR6nDv5jtcD+nljoB961zV8b6b/z6R7+2RBmXdPj1Xhpx1prEQ0KQMy1+2dzL47Zl8vF8eJ3UZ7GUtj4dOqsUc/R/Buzf6wXPVq+87uT5jSVU7HKnz+uT5UsHvJ/8fCe6TzvgtM3dos+An8ox6oB8ueMczaOXCYg55op3Y8msZ7FUtv4cE7dRC3zx430bfJ3izRhNxlUn7vWJS/R6+HXxf7l0k5WCU+8JcXTJ1yIKyGwDmVaZW//DI4Hfz3RflvWvmm98Pvi31d0V0rh9PvV0q9ffNMPa3c3X22mrJTv+Q3qQOGIyB3w/eIvf0OfQj23/zyteFAoYKCdqy994gEU2n/1Eagz53WZWFyWdBo03BY0tdouGTbSuf5RAOLXaUuf+p/L4EujXsvmnMP6QB/d7d9+VjoUEeW/ms+/5qrp7dZRb/Sql55F//HnRXd2jxT0eLaMO3G/34SVtSmtRlsmFJ6eTku9+YsbRa1englnfomZj6e0Ma82WGswJdDfhIheJXYPfaN0pNz2pAv4Em1+vl90sbfYfQgyfbMaFv3+iXBPsy5co5pt8Dnv+tOOyWfDsL7deTuo5tj7jnhhjtNTNnAl1lcBFY+n4RtOtN//pkkAehfsCqzl7x54jo9PO9MPfA4EMfgflWvx8819vn99Pbd58y/L/Qdf0vC0OFTNY4dej8xDjnMRvVBWCcT4XZoMA7SSfwLUH1iI+Al9Rg6WVFHxxP6IqXCT3xX3t29rvnCIa8tzQ4a7DiOpbW+jfpAr1n0rURw7G08izvZnwOMO7bBspBxPvEQQ461JG9llTr+mWaqOnI4gNy4fRCpOcY4zBEjjLzZob5groKkl9xgIq7VMuvo505gsij7aV80dG2tiqT9nDlGILmocYJyfsr2ne5oqoXtLoaHIE4Cqmf+QaYNDPQvXyfc5Hdibwj7XG4qvTnqopwFYNlkEX9oOBVgpvPSnZDmvIUPLirquGqRrvOJ08XHhg63qT6Tn882BvDgu+eq+LYeh0aZiryLqXGB7eLSWV/vKuBCexFdv9FXe1I0nhzvseV84NBbp4a5m155vNlgWNsDeWbq3r0iUGSBG8tO84+KX9ddfX8RFc9o4RismXyRrkeWWqccGGQ+Gork5nPJhXums9J59PxnXr5+sw0LNknJQ11uEee49b5qW6Nl9xUzhYcMNEbS82jOvzvVg57AYRfUg6z5h3bM3fIlcSCFrbpQHTuqQv1g7ZLjpfch0O/B13q/gL/8TFYJ6jvKRDogy/Cw0uN4vKpUiPQYvRPT6qobfDR196u76VOnbf2sdTjrpjbzA1mvmvWVrf29wvL5bvCa/V/zjx74YWBAYJ9KKBUkCUts9xv/M51veLlUJkNeLLZm2wLn+ACvvX2rp0VlqtD7vq9zEnr55OqB9ts4D+i+w/QpcZHWzCYKt9FMhv4vvTNVKej5S94cqMFOHgZutSBqhdngyLbYAy0UNK2j/4peHJ0xWGzCecMjPVX6aRsjhf6WfsP88zW10KDnV7q0GYe23U/Wmp+MdVrGn235KH3OCw1Uuxd0V3d7tqHbMrVe8O+dnVkJQJtL72VCP1Cu+kv64SZcooE5H3bcfv0gvza5WvoF4eg1VeQ4axvp7k1fgr9h2aYdtjDf+dSz3dHP3P4c2TwBipPZeRKjLxerteeq6FrrxFkLOtjZA2j6AZgVanx0HtLZqk7s9zT4M52ZsGWFo+pfvvmpAbvPyjXuVzNNN5fyMB+0wy+tKubLWxOYJDiK48mwtJj0daV7ZiyNdLMtbLUCCcrSo15do18hwWZ2nJYmPvS22+//dZbbbXVlYOX22abbZYHrpq64jpJTDZ4+K5tmbMdf6EBFxxcat6lRy+nV/PVxow2lhBnlcU2TaK4Zbarl3qmm+2th5W6711j+1a/nbar7sZsKdIweKiTNd4nGwaDt1nWVX9As3tQ5UgQ+gZ1ga2AHwJbybVSv/qi0GGrmbVbu/7kzbe4IGszwUhcR5iGYYQM9tFB0zEfnqvln5enI789v/dcH4PPVDjDmigbfLb5Mr+21BC3lqmIw49OQ1lrf32+99+hbWg5IVeBE4QLErTA+3us/uICgDw2tH/5lcE3dlUXNNoTac1Q1vDdN3OZZQRWxBBm9P8pNeSwTi5/95rUM6sZ2x6w00477Zcy3S14ux133JGdgS/+CSmbYBPPa2ksaJnWA/RwW12lR1IifSgHRmfcUg7MTLpCCwd9aKnnmtlBR/pQPuI8pkGbfQWY0JYnlLpL7UWlfpfNZZ2gvqfgiFKPYzbTGhhs8xQXj3HSfeK6IB1vzpUax3agv8iXOlwfg2sz75sUqBu+e9Tw58yzF16YYnBul58M0lP5A/diUmjri7Ov9TBTiU8qVUzSyXorev63iaOPOppG+lpXZ8QhAinf8D4NjVpqBM//KzUo4IKBPDakP/bpBRmJBpWApMFGgNb5X43uaoA/Yqz7z8pvNgbi75snbaOETpiZm0Ryp/wumcEPaM//1SCQa79hp6wJILGYIIDCz0tND+PSSdE3LZXp5Zfa8ZR2X3v1mz9KPW/NDIj2Xt9mpYZs6lW3hgYOqgkRfb22kpl+YSD1rogwbBloW1pv3GibfuQX/atuzUES8nvRof3AzHdPac8ZnIj/aBuFeph59sILUwzOqeM6RPO5KqJbXzwyVzP7OnXwGdChzd5GY5E/b1ZqyF01/W9dtbwaja8zqZZljWBE7/fzlipOYrA+WOFCwdBBumptNsLfJfS2pRqc7PNGE92PKPXMKzaA23YtwB86yKK8Mld7qA/MIGhjxy0zCB6y5557rsjva2XQOni33XbbKWL7DfPfjVNfRFhBD32X6L/YwNR8y1KNaAYzM5u8E4Utm/VlKpVhlYM1fEWpgSyIu+pB3LmDuxoSySBtICMZaEvBK+n5yqSdtyjzAzO1PGFcA4TZliog7duXGiJLAA71RKogMciT/PZx+7p1M7jy+e5FS80/eojQM8IAUwwuprftdocFeQc9bq6K0tbH18ngMxXO8PTkUkP6qPQnlhqFVCNZI7+954OCQNyr0US1o0tdSrEbzayisc8NIIqaXeiiZhYqAobWsVlo2QQMQNb1r1+qqEtkvVXqwgYPPvd32nbbbYnlDwzeMTM4Zjom+Jj8tuRG18c4a4GyD2LnAgMRWh7U531LLROGxjDKRDq6dqnlMKCSLJ5a6sDKgIY2APJcQz+41MFJu2pDqtRxpX7XILJOUL4pIBkwvBok1CmaxKOu0dp9z0ZTK6gH+oH02QhWw8x3zdzeMSBTpdCkghGmYYrBrUta1jo6tN1Xf83fRGnr4evskDMVrlFYWolLZoJBFOsdQYJEdKMz2jleZgYir98alc/4X8oijcIzebWk1IuzXdVDe3E29H8Eiatonnn/hS5V9BvES0tfjDtEVb7fOq373+OFVWodeJ8KQppR/gV3sl8HaCCd3exICvpSqfnCvHRV9H1KZRw0UZ3Ijn5D8juIzJ8pa0R0baIMaGiwoEahL1nmB6LMeP74Ug/EQNviShJA2ycgz+jfljVpQxPF+uAjpT6jXXrnpFLPD+9hpr0v3NBmaLHQDwteLSi8kbPIHhF68HOefW0WLIeZkem0HCuMzMQonVvDsu6qeAargdb5btfeF/nTmqlZYrGBOGIG4KnGWGSGe2RXbQHEUjQHEFZwM70ymXFEUb1+6sqs/9DgLcLULMBCIh0VGmMxaEEiM1CX50Zvk4ayrCi1zonnymdmJoE8olSm1E7WpK0iYF5tZla3+vHQUgcEbWD2Jk4TxdkjDA5D+Ty31uy6AdAHjilVwrNagTabY16GMmK6PMurbxsYDa4PKRvuC9SRY0v9pvyTLEglI6wLBiaGXfWEIkY/pKteXPMZEc1kxEKziI6GqQ8ulZk04mHtO8Sp/ntdXQvFXEDHYvQhEg6dc5/230KD0YqYqBPLqw6nU/Hc0lkMTpiBSCtemYiklmB0dFFTrQwYjG6a+tLR0UeEpo4oN+yXHdZTb0eUxT9XS70q06quBlSUdzOwGfL+XV2bVyZ5Z4NQD9pPm2Bk9w2+jHeYW5kwu4HRd9dSPWbKybCnfJbW9AsDAnWHhIM2ext40NIYBhffph5IW343ZI/RZt65dKnfVafoEdYHjbmhHUW9mNRtIBb6zL1B9CMu6VzE72kR3VZNzNsfE9veHUQxnesXjcZUnytV1MX0iwFmOOnJI/GwF9FLzffr0cmfGYQdwX0rA4N4+Y6uOWkE/7ervvasyr/o6nq6+75rJloffKLU5+4/3JiHhHRW4dRS88WmMIjopDK6OFp79SJ67ln2Gso0LaL/tKwtopNiqG6+i6lWw0xfeGupzx9d1qg5J5Q1VnsiuoEefXZFdA45nlEGA8J3y+LW578+DIzcVecP65PP66of82wDrguIgf9dqvOBmYHuxdpqFKbv3bF957hujZGN2MiwAjDUM7q6nKXR6L3z1fPOKphdzTAvSHpmEjPUC0qdAUgP7rMmKxObgs6v46GP6urMR9+7X1fP9FJundnsg3GU12y3PpCe9eRDZu6fI5hpI9KJ/HJcOaLRZlMHHsg7kdlgqp7ZTKgnaAOZcjBaaR8zNaPak9p97frSMrMOPpM20V75iMys5Ohbljqjo/kaaFu0WVja8mdZckWp6UmHzWZ9QJz3/lVLXd9nBKQOjLA+aEyHZITSqTXKfEMlE/8872qmZrQx4gOdyUzg+8RdrqJo4rwGAhrfIXiWs9BmnrU60QKC4d0y2W1K7URmEGd/22ii06Mx/rCkpDOuzNWARSLZvtSyHtLVM8ictkEMXl5quYmgyrE+kB6m29AMdZZhpp2IxCQSkoQ8o9kODE7yTv2xN4CUpD2Uw6xqILMCIGQ0hmFLUCb9oVc75gH0fOVTf/s3msVenaLZNKg5BlMqkfqUP2kYUIjf2l99rg8OKfVblt5GOIug07MSE4GIneuEmQ5FFPtDqeKsxvLuu8sakYvIqFHRvym1IQdRzKhNHETrjER09GKK6EN6mO3jjZbv16JTNjPgait6fg8i+tu6NRbnL5RqZ0D7nk48XabVMFNXg3hJtOxh5v+zBTPfGKzoGOVNjbYZY1ClzMirHV26umlDuakrfTm6ehyxAcEz1A6MuE6YSXtQCRgoH9/oF5e1HV0GK7p+cWijf1XmL6IPji7sASOcRdis1POo3lbqEtY6YaZRjyh1p9GdS20knYqhxPt0PCLUpqW6SdrpxPj2slJ3LDHkcPEUZhljENWkbTZdDDATKd8HSxUV5U3ezTz3bbQZHsOjGQlZ/tEP7qpL69tLHQDMIGi2B+u59M+3lBlmmKmrxwTfWdacCrogMJUGgohL1yUN0U3lkVMRKUTdWhIk2srrPbq6PRR9TKlr6eheTA6NYV/bbeC4opl7mE75SATqEM2AZrZGP7LUgRz9tFKlO/QJpTK1vJocNmTHoNp5x8A0wtkA4jNRClNqDI0z36URyxs6FmYFGGKg6YQcRXQKPt3DEThoHleYj2hvVDfLnxswlE9n1tnQxNc9SmVs1nWdnthre6mlL+Jrf5RwVzdpWHaSd4Pj5sOH1wOkIiL9UCeLDeoTM7NvsKmoW+WhSvXt1NUY6wZmYjRgZdcmvSrV1SVDYa9mmXldYNBUvpWlfg9tIGQtp66xdRgA1bNBXH9RtweX9Rwr3dK1SqEPesY3zs06vEAB3YeVmbVURQ7ingqdD5jx/lyqqGag8O7nu3q++LBd1F7fXhSb1DjeP0DnGcz2iVJFwpsOHWqRraKfLjWPjE2vRHf1OJ9evMyVL/ogXpJMBoszcVanRP+kVCMUKYCdgRqwGmYY48RS32FMnP1vMcCMLT0i+aB2KBtjl/KtPpssV6JvbzkPfXpXBzl7ErST8NLrbIuZ/L++1DQeXqq0gmZE69MrVSoa6vDzperTaH3uDIN6qx+gbzDcYXRivndGy/nZACMk8QejGXWJ0pZP1isyz1Qu0ZNeS9Q2cvvOi7u6BfPTwbfNzc1tnU4joubH52o8a5s4Phdk/GEd/WyeO7Q17oIzwcz3Tih1ADKLHNtoDjn2T6OtGzM6of+rq8EK0Md31SEG/a6uHs5oQDwg2Ec8mU5rwFLtFDo249zsfwsCM9+ib3+2VJGZqIy+c1f17s/kyrHHsUUGOgEfzK6CKbwm7SHayqeCH56rkX7O4La8jjJod+U7otRAIGiOQWwXaPvrSYdouwlJNGhMi3nXgvZdYFurfJKSnlnqO1SNmTdGWCfMNNSq4V6p1mzrnhuyavbQ3qVT78/91W9M29W9yP5zwICwR31kzKVrTsjYc65GkhFbiUgsPJKwSSs16qSe3DE7kJxt8J2pshJFiaH2TlMf0PJOnL3ipPrjG5zQ8rb1pJ66KlILvZQ7L0a3r32os9XpBHOrj+piw42NOHZJEel9UxpCR1EJFqx8M0BMvnype8OVy+GJ1AwOTTad9KfGdlUVWb1qos4bQ4s4K358v214msHbe1AbCxclDVs+lY8aYGsuelVX+wBa+T2nnqlo0rxCV+vHvv216rD9BuqQX4Y6HNLot5ROPz/CemBgoK42/A+JZSo1f32yVJHZDLfOytxss8364HjtfcswxKeXdlWs+l3wpNYoInWI5CkW+h9sHQ2TXzQzuWin/hNN5sOeCx6ee724F/q+Q/50snMKOulUeT+cW0RQM+rx6Fzvnd/Wyvtgfl3dLuq+We2G8pfrh4MHy3d+i2Yqbtvq+nFtaei0X2zvKxPVBX1kaGvo6CcM+VmI8k3no1TDpvZQhr5M+e/YroZtUg7SFW829wXeNMgRy7+aeto97TScTSbC6ur8zdThye27JB8GR/SDgkc32kmsd2zpvTFoSdR9IaNIRP8Ifr+rA8/qvA/fn9SgIP3qSq7e7cuU+2IO9M9MDzwjrAPaaK0BnTr5+dBC0RqZiesqX0Osk8G32GKL1Yf+5R3WWiLrcekYDC5fDv5PVy3k35urkTT7M6822WST7+SZlUT14E+W1LO+3hT80Vzd3eZ4WfSdpvI3k/pZh+nOGdoGkh+1Tve0rp71fcf8flCuDko8Jmht/Ie5Pm+uRr358Vw9JMCsLn+fmdRjj/pvDmk0dHyTI3g91x8G2NK72aSGaUY/3HtwIcrnO1Nt9cJcHbxoC+aD81u7PmBSQw4r65NDO6DiB7m+KteVyYMBXmyA3dM+P871tCXtiKN1MfikMq1y3LirTlLq6m7B+7f7j8nzQlGjhea+ZqPfEezrsKsHVPYSxNDHpr5PsjP4eEdknRc2WqTY1XU+wgZgaDw4VyOfiqYp6uiqVDjrN5F5nQwOnMsdhp3bdtttt86MvtfOO++8Q0b/OSdU5JuOufXunrnu2tJxhNBw5hXawQJOSli1pMZjt0d9ZVDk1T4Iv061EDB8q6GyOhZX1NGVk3o0MPHU+WVoV+dfocUDdx6WU1f7QxHmav6ESZb31Xmcqk/nnIlW630hsPacq7HupCEsMbpXW4Z3FwK0U6tze9s5s1AtGMpENd0qaW08V+OeKY9nbX0dDkHQBn046+Bm2sI3/R5gyG/Dvg7navmGOhRrf6hD5VReYbj39NykRqkl/pN8qGHiuS+VZziThsMcPNun0fJKten71fD8CBsAESwbCl37zeCv52p44BPTOX4dFMtrnQy+1VZbdWHsuS233HLjvO/MZ0f93G7rrbc2g5+ed96Z7+xdqs+2IPo6kNNLf9xE9C9kMHDUjtMu3hP8bfC6wZdtVI/jufvAMBr8nMIU88H3LqnH9two+Jzgb1t6j5R28vD40Hdo908IHp77jv/x3lVz/ze5fnluJsT01PedVvixVo5rB82SvnXr4JOXVvH3WM961/Wcgu8MHT/4cunlqgwOBxDj/GGhb6McSe/ZoQ8Oam8Rby/W6v/zU2U4Q76GvDZ8l3LM1cMUiOOOsbp37jsDTR0+OfTtWrlfGdS2jjH6YO45J9yZcV+Z1Jhsqxl26vsOOxRtVX6vm3de1tIQv75/Xn5G2AAsXcPgjg/+sbBNqUyzCz3pT92abZ6zr2LwyTbbbDMXht4k73NP1Ci3yu9Lt80lJ06qhfwPuX59rp58+bM8+5vgPhvXc6noemJjfyj4f6GvH3y193PVWVaP6OcUlHPoPKFPSSdU1psFnbrxl1zvlfvHtLR1zju2+05/uYH7ecfBB1cL/j3oGF6z4hkYPO8vybOf805+Xye/39C+5VytZ7TDHx7jWe+6nlPwjaHTB1+vfGmDO+feMdoy10fm/hEtbWrQocG/hn5Xrpdo5aaDmznPkKfh20MZg+9v5btF8LnSyPV++cYj2reent9HtjQcSnm9lvZHcu8q+d5fgqevj8Hz/lzK8On2joCMbCHecfrMOIPPF3R8lRkkchGJ6OOcOzg+sF6uk8FBmHlu2bJlG+24447bZybfd7fddtt9+fLlm6SBBSbsI8P41qSGTNZBnO8FibCOS7pkcBN0/nN4AIZhZWd4cyzxJLjRpKoNs8mfZRg6T3A4p4xK4MyrK87VpTtipZh0RFXH6qKJtIxNjtthWV6+pB4r7LhdsK7vO8KXyuG7RNghDSKrM9uca+26IIPXAMP3JvVYYasXLP4s2ftjpPy3yaSeBT6I6J4Z9v+rj/70kvbf6u+2/913fpuDH5xTZta/QgbqbcOEjoVG7xSm3C14hfy3Ms8R2dXhcB6a1QeHbRC50UR27XsGBm91qL7VlfzynaC7O1duZPD5whSDq0w6Ef1IfHPbPQ9dH4MT0cPMvQ6e5z3HCPLg/Kb7fa6rsbct1xDDPhTU4J9NOl/Mde9cPxh0BpaTLozO35irp30+K/e+taSKd2K5PXRSLdfrzMdZhaED6cStI1sH/mauZpv7J0+n5/qI4K1z75u5PjN47dw/LejYYYPT6u9Mgzz65pIK71COuTpTPrd969/naiTb03Jl0OvfWYhyDTB8c/hu0O6tr+Z6z9y7Yf7/Wq7HTeoRTtrmJZPK6J5h1OqG98FA5z3tfJugWdrgLSKqE1b/LeV5TGgnq94pzM3KTWJ7VPAWee4bQaHArq4+cn1D0BKZ/uUwibUmkVZ/cC74VnUVZKjkfKSdbjedvxHOBDB4KpDV1xoljyzLFl8pdZnlerPPDxDmLptvvnn/fiqbvzOR8BWh7Rb7ffAToenj7rN+mvX+THScq2us3/PfXGXij6FzFcCQH7v7lq0Om9TzpwRuXDBG0IGGTtK15ZdcWX/5qMvHM4McRNA6ZL/ZJO99UUcfOuE0DJ3UN+eq8a2vw9wTs673LMt/R4V+TrvPgWbByjQNQ121bw+bTY7u6sktaMx5SKM/0NXdc5ZFT+uae6pvDN9qaNmKD/txTnTpqp/+LyLB3Sp10S/9RXJ7QP6z4USUWXp+v0zW1T0HfP3RHG0Obmn/pGvLZFPprB5QAr1HZa7/Nlmz1NifZtKe6fM4wplAGoje5SAEaOsgD7bDSvUf1ku09hmGTBXcOhPHCaMyi3l/yMCkWm6tB6MZ7nR6YipkzWUddVYVMZIjhlmaUwZx0qmfK1rjW6PlM77gzNC+yfGCMXH3SV0PtiRDjJW+mcOJJUReNHEzl7U715CvroL/PUQEFdCSw44yWXcmLqsjNCcTr6nXhS3Y2rCy1IMHOJrYFszRpZ81G23LLPqypW4j7V8arkB5g/qIo4T3zMC+LAP8ZSPFHbbffvvtue+++15uxYoV17xEYPfdd7/YFltscViecWAENeSwSbWWUwWUWz/RXw7uquNK7wEojVz7ypvU+sPgVDXtoQ6pjfpFn9/p/I0wD2gVDLmtvjR4Uql+5WYArqdmsTPAUNlTlW6jiV1NdpDpxMTz1wZXBN+RBnvPpJ5r/Wr/dZXBnp3nT+yqBHFc8OSuujkarYlxIpP035fPcwoz3zg2KD1OL3cKntLVABXSd//Y4CHuT6pY6lC91d+YGuSs51JtPjapXm7PD548qae5PKZUxx/+Asp0cqnBMexP5+L7n0NmFqF8dwq+q9RtpDaa2LXFR3xVqT7iHGHs4uI2qt17UEbQyuZqsObDflLE8stnUjgmZX9VGPqaYeZbZva+3W677Xbj7bff/lZ59v1h7vvkGa6xyv3YIMlOnzq+a3U4ja0eLcvankv6OyBIteFchLGn++iQzRHmC1OVZpQ/vVRxSHQOzEqcIrL2MNsJZyrdO57/cle3WRJNLbldYm5NWCgz9o8areH5vfsPU/Xhf7q6H9v2RTT9a8EYfKaDDOGGOIQMGzOInMPe6bd2Na7cUKYzMHjrnKQNIYiIlMpEvPxH7qsPDPb3/H/7UiPJ9CJzqdso/1bqWWI9zOTtbMFMHT251H37RGeba6RNTTBj/zX4obImTNP3S5MmhnxM1bt+8W3PRQy/Vn7/T/CzO+2000223HLLm3s2s/otwuh9vaUOnhcG50lnA5OzyW7Y0qB797P2kIb8tnokWfy6vX9I17wB8z9dvn9uIdr/wg6USzuNNJqNJzqr0Z/BbD5ArLe5nxfcFqWe2mm5TRTXG8Cubrm0dZAXFHHt0FID7fPTtjvrZqWen6UTyofrgsHQsRpcqdTyWdKji6JtHvEbLT8rS82HGbhXvodvNIOQzulophsEb5rfnGSI5zfNTLZzfjuP7ab5TYrhQCTgv33Q6lRZF7R8M2DzD5fjYeuvPQbDzjebPvZstPY4uNFnYPCuAo++m0bv3jni+aHbbLPNzQ466KADg9ddtWrVTa5xjWtce//997/q1ltvfYswvXO/rY7cPGV2HhmVZ4iEc4Y6bLYgqps6vPlcXdWgFt1y0mL1j8y9MGCkthvp1aV2ADMb+urTD20AdCBbMB14sDJXYp3Ya3QnLpT8oDU20f8VpTLSMfn9qlI3SNw3iLZN8IhGi8TZw9ApzgnMfEO8NOVjUMTQaOlJHy0/9k2jH1/W3zmX5WrWso5vuZGl+hURX3m9UTFelv90dGL5K7vqXy1NdXXn/mNT3z0nMPMNAwhf8cNKjYVGXQC4RfAF22KBwRiuBb7VkJHticFXRETfP2V9UMrzor322uuwHXfc8dZh+nvsscceN95hhx04vrx4o402OjLPsG1YTXlAUNtqyyeW2sdWw2wdBl+Xb+w3qdZ+Kyw2+owMvkBgdO8t3KVGOTmp0UTm+QAxm1j2ja6dO5Xr77u6rXIQ0c1YP2+0WUMoJDRRmF6IvlepouQgMi8YzDBAn16pwQANbOjnlTWHBPj/po0WEXQ1g+twc2uWdbYZzndLZ2dL+F90xFaMzLf/j5NqRSeiE8uPKVVs9g5L/oLBDCM8o9Q06PmkkG+VWk5BIdzXvsDAbLA9AyhrV20z+sXfwoDXye++X2yxxRa3DTNzDHp3GP8+ocWSt2rynOCwH/w9pe4HZ6mX/voYfGubkbyTeqV39ysRufJpny3XCGcTNOQdSo16SoxkKDHLEV/nA3uUGsLHZg2np1h/dSYYjyVGLPuStyv1LCqzh22TZhm6mxnG3nK0AQHzYzQi/GKBjoe5zTDEdWW1d5mYjjbLXqzU+jiyzDA4bB10k3TuO2T2vsfOO++8avvtt79hOutt995770tGZL1e/rt7GIDDB6Pb3bvqK47J2Dakt1jAsIbRMDD1SXuuaP8Rl5UbbNpwndBVEJDyHikrZ5YbBu+57bbbXiyi+jVD3yn6+EH57Tjle6Ssh+Y5thbr4uwQVAXSoL6lj62GKQbfNHiH4H1ST8RyBjubZHoHnJHBFwcYSohVB5YaPVVDnSEKxzTo/I0BbDx4YvBhk7pJ4JiunlXGamsQeHzoVaV2cuKvDk+EZezCCDojWtifa5RqdNNBepDGAoP0lNUVs6MZxs4ArYzCTdsBx4nDzquHp6M+OmLrxdPBbxZmv+VlLnOZq2y33XY3z3+PJtrmWbPfY1MXGI+EY+0dAwC6MkZcLGBMu1/Qcp+B6ohSRff1gWf8Tz8XmEHYaNtc9wgeFXxCpJYDUi4OPMdmQDs0ZWaAe2zq4UYpszZ8QqkHBa4XSEENbXLhUvukSd1cYoCghy9obIAR1oZPlypmmQWM/Eb9DRrcGnND6+n/JLqGps/34ldXAwX8sv0+JNhbS0sVhYmznjFzi4TiPpHyYY0mMvewCAxONJeGcENmb/SJ0w+AxtxQbDED1qPSMUkuvRU9M9nBZnPP7rrrrofnv170T6cnydCHWdQNdqzo0qCbrix1SfJI7y0SULOkR/XRHoJQPn2tJ9YGMzrRHpMyuH6/1LbB8KcE/x5mPCK/2RGI1Ta2GLDsY2Bv0Wf+L3hy+946Yaq/sKL/sdRvHTKpfuecjri3jgy+UDDDONZRzaKYVegcxrIzGGOmYWiMSY3k8l9tBucscmxX15V9Q7RSszbGILI+IWjTyuoZvFQbAI8vgwox1v3FNLhZysGM0jXDmsGPmn4AeKehQBmCE14xzLttyvfglPWYPfbY42KZyW5qBj/ggAOunBncppZj2wzOEm9dmJMHf//HlaqWbFJqmvutndqCAumAqmGFQ3q3nfl/FnjzkDIYBzkkDTM4/4bbo1MeOwnF0kPbiKN8nuGVqA0NDmcqdbnf8vSwrnr5SUNQTisvfRSXkcEXCGYagdGMwYtoTkx+YKlLR+uFKQang98reGRXl8Po33fpmg5e6oxCXGdco3djdsx8z64yuyU6aRP1zDho//ewvs5yVmDmGwYRkoMrZkAT19cHW5Wa77vO1dNaGZzusssuu+wepr7B5ptvfuvo4PtFB7+W+xtvvLG95bzK1AEvMsxMBcJEpCPfMsj0sBDlmwE2FQ42Qlb5ONVAva4PGFzvmketJFhmE7mHu6rQTIyH7Cv82A9r7cxjkaca+pDWhtpMmfrCrKNM1D5qA9QXqA0cjaQxPZiu9dII5wBmKvMTpVrF6aIvK1XEM7P1sK6KHxi8a1b0ICs6y/kgojPs9Fb0Uk8LmRbRB6u2zj5Y0aXHEMYKy6+7h3WlfVZh5huDSjBtRf/Q8Ofw7NQ7GMYzRFWMokx/CmMbkPqVgeXLlzu8UJn+mGeI6MR/77Cgi0KKPr6scUJR3z0sQvkw6m9KDTp5SKnpfWDq/1ng3tq3Wakeit9Gd2tEdPQRpS71oR/VVYnE8y8u1bai76wW0ddRJuvwQxrsPL9qtMF9ZO7FgJkKpYNZxjmkVHHVerDllvXC0Chdjcn2xuALgjYoiJ4KzdTWYF/e1cB6x5S6NozxMRadlLRAXEezspu50XTjHhai4We+obPyKiNd6MTKSmLpYXh26p0dSu3Iz8+AtjL3nxx8ie2T+f2o4AkR03nwUUFOyJVIru5eXur3+RagzaoGCAMo42MPC1G+GZAeGwA1x4qFtmDZXh9QyQx6L+vqmWyPy1U7WVXwnjVuYrh1fPThXV0R0U7qUhnfWOpg1sM6yjTUIZQn/cL7JMYRzgXYvNTzyihAZmGzLKYkvtkcQjdb6wXg3gzqLIIXQsYU1mTea0S/Q0r1fiOWmfWJ7KuC/NTRNhpofDRbwGKBpTkdlHg+eJnRi3sYyjlVJlb0fws64G9ZGJpjxw2W1NBTopagRX2x2eLwXIVPsqHF8+wQRFK09WcrE9QB5V8rvQWElaWmZ7UCiJ67oRURVnTLhJYStfNhpapsZnY2BO1nmdPgpG1ET8X8+ogZfz6wrNTvQ3kxkHt/8LwbYZFBZ9ew9E0zGpGLN5Q1VbuDuJSuszMO9xti2F4U6+pM/ZP2++CuRc8slcmJ4OjVvuilLqGZ2dBvKosH/11qGlQDuiP6/cOf1A4wVaZevJzUKKvq6Rel+p8r3+CLjumHlYFblaZ2hCaemwWlYSY1mLA4f1gaCwUz7cLAJr3XlXrE1KPLhg1t2py/uvyKT/6tRl+za44uuXqfFOK7jyi1b6CJ7fOBWRH9Z41ePbCOsLhAnNa4y0vtIHSvo/zu6k6w3hiyPvBfQ9sFBRR4T+h9g68JnthVxsBYJ3X17O1jStXZWLLpcOijSh3Vdaqj65cXBgambXD/Uk8voatKD/3k4c+hLIONISjqi91xdpEZwHRq+6vN/ganD7XyWQ5TVh5unH1OLHUwM2OjOfwQdenDVgoWDGbKx0j20VLrmGhMVLf2vj7YtNTTaj6YPOsHxGjlsD5NHbHzziD/kEb7vrYySK0W/dXZBoAU866GZv83lGqHUG8jnJvQ1QD2ZlziJdRhN+hlNMUMwgWJxUV0Jc7aL321Sd0iyKvLt4h+mB/tkICVQe/Yq22ppE/Pc6Va8i85m945BD1x6I3TdL1RmdtOqF0n1XFHuCHlEKGVr7YBj5Vc0AT2B4H90b0YG7TX3q4z20kNmPbOo+13591FBVpZqiun2YwV+twGDSltebFMJt+Wq5RbO1kWXBakNtnPb3lQm1h6M9hrs4PLhk8KtcxqpYK6hdaWjGrUOHCGuh/h3IHBWvrw4LHoNK4oLj0Tz60jwsZwf66GH/7bknrmlVhcvdNErgYMI7bv2nlmBEdbPuL4gT62q0s1f8n1JV01VBHjzBqrZ9XFhCGNrg5sjw59j6CgBpwy/jypAQl+VGp+zT6fabSObxaUX3oqIxL6/rnPYIh+dqkSC/rtpc7mROMvlwaLXb4p2LXUfPyuVPGZ2qEcBhv5QR+W/FBderUj9PHoXB1X1PeLXF86fHBoI9hgOL/uh6W6yv6pVPVkgw5UIywCtE49/HxK8LuT6mF093Tsb89VV9Rpd8Opt9dyQ9wtzP0VmHc5fAifK16X2Y+4bnOKjmPn2Te7uqWS3m0PtvRYmtGPznuss5ahjh86zmIzgO83NNveNVfbIFcmL0JCf3pSY8m/P3hqV2dvu6DsfSbOPqWrMciIs9QANL9u2yKV1YkgZrGvljoAEFVPLVP2hoUon3oacPr3DJCO1O1H89+OuZ48qfHaGAeFXvr6pEotL07exZa7fvBxadfTc8/hEQat73RTIamGuptKnzHTxh2edKQw6Rk8VrY8jHBeQBpm4zTU8kkNVk//FNReWB6HAdj7u85g/n6nA4jBs1lw07kas8y5ZKJ2iOLKWQIjEN2J40472WrjjTfecaONNrrk8uXLd7jIRS6y3bJlyy651VZb7bbNNtts6f6kelStq5MuOAydNKgO+pBO7be8WxaTD7O75UA0x56VjSbSOrMLLWCE54bOTqzt46CVelopUR3sFuw9uIb0z2Xoz07r6tZeIjiafzi3Ufu2SWS82LS9gy1si+Xso29YXSDSTzO4OmCQVQ8s5yzvpALqCNHcas25XsgRGgyNNTRYGvTxAijm+qw0rAio/wi+DzO3zr7W++5P4f+3dy/AmhTVHcB77iLC3c2yBhZQF3YvPsDoSpnSKJa6gEpekkppLOOrQFETX4SKEo1GBY2SxKI0vlIqiQjxDRrK4Ks0IBQqiRqVSolGixXEoAZ8RTSJ0ZzfnOm9w8e9y33iZe1/1ak533zz6Jnp033O6dOnpR7eOai3bOyPB/0kyDpe77A/zj8xiJf363HMs4OeMBz/grivoRs937vdq153NTFUUiSPu3LITirvnAT+355KIVcmCQfNB5e0n9rKJjcn/n+7HB4z0eR/YitC7GneYZfzrI9xbsnx5Ls7t6Sav+v+txKMjlDPv9Glr+Ga4Tmkv7Zc00/W5aIJ/2h/vIvHxDO8GR/04r2GhJbdqL4MJKOrZ6UZcKZ61p0lI9ka1gJ8KB+PMImtDrox6Mx1uQaVVS4u8H/9wJOoghi0Mc67MsiiCJIy8qx/L7aivtjY3w8y3ZT3WTrlp8SxvM7u+9Tp6enj4r8vBJ07uubE3VYW9dm7XAXVSiHW1dKTXxO0cyp79M/F/zdM5frnH44yeQ5ONIE+eMNLJmTgxXI/MY4R5XdakHhvUWYCUeCGMjtXe9UF3POhkt51vgSNlSmbX4oyet4jpjI/mhVTHhT7zvf9gh4VAv4GE4pC43rhMO1zV3nrdYN+e3huZoyZep6PWt4EfC2hCtNUJqCnYpsSKpE9/rCpXDpXgr4+d9kkfPy9Mrc4L7ShM55oqjaVm4qu17BowH7r168/ONTzIw899NCZ7du3HzEzM3PUEUcc8Stbt269Y6jr26NibVORamVaTYwqqmejskov5bdtjZvmIa/LJvOQGwnAa330jPUadfleNM4LzrNeoeJLbdX/qNvVwqg8yPfYNvAaLg2W94yntTBTmGZMqf3iW2mwLS65Ye9cd26u69bREtemklPPxeILpmlYCxgEu5K44/+MrVlgHE7XB1GZ2Vo8x3oumLzMTXrc4RgZP77dZYyzWG35sh8XJHCCI+dpUYF+z71i+8yNGzceF/u/FP9b82vVBdwzjIiH/Lqgy7q0tzkHOaEI+eVBVs0URMIh9a0uI7skjRTYY2iIQ83z9U62Yb+gF0NGris01Pl60Y/0BSi3qoB7jmu7fCZCfkXQdV0OX1ox1XeidcmK6/tbk65P2ECwoxef77rm9DvXeHd91s+V1oOvHVRhGj6YgAy22RuCFzDBvvpIlwEwx3Y55xsmL9NjdB3SWeecC/wQCy5a7qQukwW4x3Pj3ifG7w/FlmlQh5QEzqx65Z+A8WH35gnnLf9B0A1BhpcsHOA9zARdNhynQfj7gdcwvWzgTcN98sB7TsKPF2WmZ8OL8LtVMHwLtDXesXf+nS57W4LomcxA6yfQdOkv+NDAP9k3UDcI+W7g23qmT5aMUjNxyFApr33DWsGoIvRrXnXZ4lNNOZNUeKq537vUy/lQr1VyvFV8NO/qtiAedTHcB4Yw3ztU9QP3339/XvQjN23atCV68A2xnzd3ZjifOrC6Rvgs3NBEiOoJt+293V0G6rBhQRTYOJ56HPM9rtRj3vH1OcSJ12vdGujq9wiS8JB/Ac/z7V0L5GGa+Da85Lzhpryap7C7Rtbz+JP5cZ+SATBUdN9bDP6t9d0aFopRRagfVuCJcVuqqGgzvZt84irFYlXo1wRRCznVBLd8Pnjjq0JHBbY8PwR/R8neTYir4Rb3Fu99U/1w5fDQoC+WXBhA7/rZkmPUbGxluqjLJBj2/XNJoWVq8IIb7jIjT3mN/+q1nS/JgzBRvKAe6ZQcI5bbOc51v60lx4kvKhn5VlYByuX5Lozrs60/E3TZVPpDqOW+gXFwQUhXBIlsm6wDPSZ++2YcaQKWjPN7Pqp9E+q1jokPae52rzJ3mQqY6mahOUvQ7Eqqt0Cwx12rRrKJcDqtyyyr9p8VvJlH9guUqKrtzrKCAj6utCVnULnHp0qq6D+N/6+JLSefZ/3vMut9dhx1XRw7Xk/1roE3BfYVA+/5TnKtkvHuRw/7LxjO+UnJVFZ6PPu/U3JG12TZVgK82p5jZ5ez9njE/bayqiEzvJ77y/iS00An68Bc6E23klNGzRL7cclnWnBlaFgb0OP46Bxr1HMzqCz1WofUdjlhFgC9CUG4Y0l1XYwyj72ZTbKFCMBwITzHD6F2jJDH1YJ7E4IaX03V7MMqu1zA4LBhvzJX3jnbBp6nWE9cwYlWMd7PVGGmAE2hBsfwZ4gJ7wVqkRrRQkBl9nxUbvcQQ9/fL+5lDjunKZODc8y3XZBjLL654/T23pX3cUzJOPfdtgoNaxRD5ZDN5KNRMV4XdM/4yJcFWQZWUvte2BcBs6w4cx5T0kHFA6vnE954YdDpXc6lxhs/Xq2eQaUUI0591juLLWdKqPTnlszIAq8u6SSjghrDp9JS3fXUeMJMw5FAwzU1ZvbTSNjceNNkqfh6vZfHO9Ngnh909lRGia3GmL9GyjRdJo+IMkk6qNLm+5t/wPzx3HPCdx+hzgNn1jCfzgl6zuzfDbdJDMKN2M68sFT0XvXbd999/d6kYk5UhluC6YlUPIJVVXR2KfsVf0lJjyx1lsq8Wio6DzA1nH2tcXFv3mVqOR4R5OtLqtzGvNmbeA0QgXbM0WVWRX9KyamV+DNLPgez4/1Do2X/Z6enp2diewOVOUiYb79s8wrDdzJywasN7q3sBP/G4XdNEnFL0AA7/k9K5mJj2y90bnjDWsVIwKmVhrhk1dw/KuTjgx4ZfB9vvUgBpxI+oaS6SmiMpVaw6fSCajtnjt+rBR5wQ3Psb6i9EzAN6n7lrD0Ys6Xy+5WbJjek4lfYX9Uaz1MDZR4YDeM9Q6jXhZAfFZrP/aI372hAGzZULX7FoHGiRTB1wHtG+5RMRMGWdsxCQEvxfrbFMzBZCLkGpOG2jpGQV/KRzwrZNrPIpAVq9FllaWOfR5dUITm8VKI3lFRn8ZIknl5ysoae44/LrC27EjAsJoHDH5Yc7nllySygQBX/04HnbHzpwGuYXj7wvOV4Kr2e8GUlEx1sHngCz7xwzG/ts88+JmqcEu/t+EMOOeTgEOrfDOF+2KZNm9YLJNm4caGytmBsK/k+PYsG81UltQoCPicmGmqmFM2KYB9b8nzfqWFPw4SA64Gpaz8MXiWm9vk9djItFKLanCtopHq1P1FyeSM89VIPenlJ7/pSGpH50I8MlBy6Iuye45slG5GqzqrxNwy/NQKGtqi9HGfvKWlGGCoi0I6R6kgGFPv/sqQmYP/b9t57bwEm7w0BP3XLli3UdXb3joMOOugAfgwq+oSALRd1JMIogHdYvxOtaSGoJojG9UUls8saJmzYEzEScCrai0tmQiVwTx9oKW5gSQKkTqY66rX/qMsEEXptvekJJVVhPgA284rZ4yV7WpFnvPvwuBGvPHpoIMBUeaC2116MZ12ZQC9ejwfOw2pUU5MFmfBeHx8q+v03b958h+jBH0hFp65T0asvYwWFvL5DjY53+LySjjFlXQiYRxJYmI8gaeRzulwyevK4hj0YejuVhrBT/U4uqVbzHi8W4rv16NRg3l2qJfVZg4LXEKyEiv7ckgJIwJWbcw84yB4x8AS6+gaOKenxB3Yn2xX0+hoFMFxUGwHQCNgHBMxQI+G1iMKxoa7fLgTaVMvjqO4hQGbZ8XH06vMyhIhG9VclnWL8Bd4bk2deTNzL+3a+kQDP8+IuM63yIUjrNLPCjVDDWsPExyWIVZ2Fbw2/tfiLxYklz/1USbvPNanonFT2I8K+KOg5Rzix5HXeVdIMMH+Z+q83tv/a4bjvDb/hGyWDOQgfL7r9MyWz0QoYoYbzD3yuzDoFHcNu52xzrghA59j/+RBynvofhHALNqEFyYTymW4Yi16MAM3zfJ8t2TAxFb5d5rG75xDW+nw0J15y5sjphDu0jL/pMqXy5DkNezCofpwvotPYqKeWjODSeywW1HUOO8LCRsUTEtd6VZcTYZYb9WU4jL2sd9KDu/7jh//M/tLbQt3Co8rswgzUbaou6M3rWPDWksNj1XPOZCHQwIZ96FBmPare2jNYc/vpA/+0kmu59Scs4/k0rIYhfQeBKG8qOYR3s0CF+h4n7uU5OR6ZIoRchKGEFvwHZv6JfJs8p+EXCFRTKrYeimBQD4VJLhldzq2mvloiqI/bXkYFI3SGiEyo0auxoetQF0/x9oHXwFQBJbw1ok5PX4edNBCVV6A6rAaG0mohjy6zDZ7IQPOnPQN7VgARvtd46nNN9MorDtcf7muYU4NjvW9lpIHwS/ROQKjvu9Jql61h7YIDjBda8IiKT02k7vEqLxldZv4UVEOdrUkYJg+bFxMVUuX9bkn1k/NM+ajohBhPHQf8DwfePr/Z/zzuTAe9Iy+6/Q8qmZPc8Rq3x5ZU/f+iZI/qGBFzAkyovIJEmBr2f7fLVMt94AleeXnVFxHnf4uo74wjr9Lg9JPoon++Lld7vRRf0ha/2fmLee8Nex72LjkefkHJWVQi1Qy1LDggovYsMKpUxto/EHRel1M3l1PRDB29taQ6bVjvnJJON57lvytpb7p+bxIM/EtKjskDFdYzelYONuqwnnxHySEkw1EEmWrMqy6Y5i0lZ5uJDT+7pCORynx2l5lZ3cOMvbNC8G7Ho14zqEwmWlgIxu+n8oMw7xLu6rWfSrw+6B/iOOaLMfsPlWHiyRirEErbcBsHYeKh5lHnKKMOU3sFhdivEdgtagWdpGXA3GzeYM5BoErX8XvJD2R/VfGlMer5LueC67GBwPKeg2EwAl0x5o0IVImggdTxe+bAzPAc8sBJeuh+spc+gOAFHR7Cfd+g6clUSYvF6J0Jsjkq7vFrQesF2cT2d4P2i3sfHfQ7QWLUl/t+G35BoJbwyFJV2eXvK6n6cSYZhvlO0J+rTCr47tTRUSVdicp3Ysly6MVpFuLELynDWlpRlquDNgX9LATLbyu3XDecI0BE3DqeAPPEU9cNuXFk2W946qSSqjhn4zEDT6vRsDnGvPit+BAw2Vu38Kb7He/h7sG/a/369VfE/e9FuHf3bm4Jo/cmwu7SdZkh9/ANGzb09zMOH7+/io9jJMdciXfcsKdiVDkw55acP62S81xfVtJ7zb77WMm10Ppzhp6ynnszVNVyBUCVNmvslC4nf1xcMnzTOO/Hg86NsuwbFf/DQRfGPTmhpEeW/IGKbcTg4yVDUnnTL+4y4b+xcfuptob4XJdaTkuxn5rPicXGfWOXyxpdEtd/X9DmEOKPhDBfGttDYvvCUM3fGPzMcm3x+n67HIpjdpwR99vifkGfDl4q6PPiWa+I5z5q0CYmL9PQMCfYmYjkqujmEG+OCtWv6RXbg6KnkgKKjd2ngkKrAKo0gawgODUIhYe/TgS5S5TpThqSqPCHxDF3HmzVzVHpa7ZVHv2ZgTdkx94mFFTgnh+Ar2PPVPqqonsPdT64lWAOH9Tye8f97nO7BP6ooP2WIuCj9+j+Gh9RdMp3v9jeN+5JK6GqS5NsgYq9ggTeTDXhblgqONt4ik8o6Xyr6qx48NOi8j1c5VLZOZZQqKo9LQUTFfWUkvcDfgE96tjDbeVQKjeV+StRhjtHw/OzuLf84AfGvq/F/9R1DREthDrLln77wNNKziiprhsWpKG4Ls3gN0oGm5xf0t7H/0ucIx+5+32DkEev/X3Tb0OYjwy+V5nj3g9ZiIBrkMbk2QcBF9WmHJ+O3/wD1wddG//jr/XfVK5osssJ19CwVAha+feSIZ8CPwwVGdeWqfVFDlA5VeaxcKOo+KPLLAwTlZWq/E8lc8wJpmE7KwPHnwgySRDuEXRVCNXFBDzu+6Wgf4vyUJ8vjbJdFaQXf09c+6rY3jvIemtXTeVa4a5n/wldpk7eGb8FsjBPvlIybbJG4aogyxLLWnN1nEtNPjzucWUI9s649/bgPxHb/1g363Qr88H7qsdUqkIexDHoud8W+4zfG+KTAprW8umgq4P6deCbcDcsF8aQRb31avtUOq+6DRs2bJzKZPsbh97qgBDwO4Rw7RW0NWhLCHi3FCGfD50aPQvjwN0gEIdEOQ5UjhC2rVGOQzU28dvUTmmHHXPAVC4EgeeBtoYZO11GUsKyb5ceawLMWedeHHiG0oAdX9f3Wh/XnB4EU2acXwqyeIQloCTSsNbbbEkn4L9BoJ1roQrneRYLFljEwP/MESMC9v/yVC4LrLzmpjI36vppDQ0rh9prBJ0YvOWCXhKV8TiqcQjzB0OwHjw9Pf3ToCtDyPcZBG2XKokGIanq6JIxXIP6fUGU4fVxn21RhhuCriPkcfsrY3tj7L9rCNHHgn4Q939AbM+JfZZpMvuN2SFo5VlBT4/r/FfsPzNIdNuHS86+u8k963NUQR0auDl74/GzVhqde4r3Fr//OniLFwjA6RuskuP0r43y8xfIzbZ9KlMlL/u9NTTMi1HlfeaQ+um1se8R0XP+OCrjB0OoHmwoJ/77YvzeR8Wvlb3SZIWfD5PHTQrJQGKtec3fFPcyjPTDuPf1ce+7RVm+Yo2uKJ+VUy2o+KPY7ojf7xjKbgUYQ383xjVMrzw5zrH/NVM5zdKIwUsny+O+VbgnBXzy+ebC6Bonxzk/Cv71se3fW/CnB22Lw/42jjszrmuJoSrg/fJT8123oWHZqJV7KpctpqKbH03F5GS6a9D6oF8NYpOaL02VR2ArMb+eSM+En3PNtIVAWaYyFfQBcZ9Ncb8uBPvgENKDBj9An2plaJQsq2uJZeozNVrZmRtGAbZ1uVQydX1bbKnAyiXPevXaLwhVALtU+V2PaWPrPlT82w/3YmJI4MhZdtBeuT7cYVEma8T1Jk/wUmxJC8VT3id4bGhYdRDwCZLvjTPr3KiYDwjhtsTtR6NiWrTw6tj/hfifM0ygyNe6XIHF+PTXu5yrvOReSaVXBj2o4JLq6GP742vAySDku7ZoaCAmNYKb7J+rXHX/XDT8D0JH318ynbT0S9eUDNaRTuqa2Pe8Lp16X+1yjNscgH8N/o2T5ajP2NBwq2FCEJ5Ycqjq4iDBItRiywwbv+3X1Qo6Moit67c837zghqqOnbj0olEFFxFmgl0FnYCPhXpMk0JEQOt2TItFl+B9Fz0nh/m7Sz7rs6fSJMCLlzc0Zzjs7JIJK6SYslhFXw7lbmj4uWEkHAJKOInutS7VXymNBMRswAfdHx//3z/oQVO54ikhV/l56OmeuijSNBe/1nRT5amSX8tZ99f/DGmZXkrdp708ZCqXHpoJevCwZQIIIuJHYAqY2urYJTUsDVWRoScAAAP6SURBVA0rjtrbjGnUS1qw8ElBjw26Uwj9R2P7yTjGsNQ7u1zeV1CHGV/i383iOn3gzfh6xsCbxbXrfnVb+Xrfyrs31F568ph67lKo5Piz6bRmbgmZvahkskmRbu8tOdXWyieeyfNJGPHSoMvj/o+JMh0fWsY5sX208oyu29CwNjGPcCOrkZ4R9GfBc8D1EyXiOCufCtbwm4pOQPCE+p0DLwBFJpiqwv7cMQij4TNlYm4IgDGH3m/BN+xs/MPKMLkljjHHnOAzYU6Nd/GM6enpr4WQn1oboDkakYaGtY1BwG8fdI+gu69Ldf34oEdNpZdab22BBIEkZodJqSTunADhDys58wtvvvPPFSMB5A2XCumYIKbGw4N+3f6SGWDY0qa27oh9jw4SRcfRZkjOexDA8tAQ9LvxF3hPDQ23SdSefD7P9Qg8zjXBxLMG3rxzGWXwJ5SMff9AyZlgxqgvLDl91VRO+wWGmCgidlzACBv47OE4DcWrh+PYuUJs8XpaOdjwQnE1OI5Xhh0Dz2SQz0ziitd1ObHlvKA3x3PcKejsoLfH/pk4Tgis8vbzyz1jpardjJ2BqKHhNo0q2Lcg4FeUVG2lTSKc+OeXnJeNl3FFRhY8YSSIeOf1XvuSyf3rJBRkkYfvD/zRQV8eeBqBABa8Oe5vGXgRbacN/Lklh7RMQrm0ZL4z6vbOKLuY+Lq+25HD8f7TS39z+K1MNxPwsQnTPOQNezQmBNxkEon+9bqSMMjOarqkHh1vjFh2FceY5bUtSGipRRUOLjkppar75ndrKPB6Zf85Rlaap5bMAqPnNiNOj69RIOicfe6BJ8TK8uySmoPQUQs7/H4I6YFBzwxyH88hqeQfBLmf4cKTy9Jyyzc0NAzYu6S9zu7dVjL18wtKCqLppK8YeHHkEj1QnzUUeOr6SfgQSur6I2NrP6HX87oWxxjjWHooqZ56TPbG4x56osFqaGhYBgidnp7zbUdJtVgqqV59HoiKLltqVdH7udolVfSLBl4v/taB5wdgb/9fmV1HnNDr2XuMhXkuAW+C3tAwByZt8vn4CeiVqcVbS9rqbHbqN0F9Wcke3Pj5K4dj2fB6ag6wJw28HlzeObze+5iSyR6o9tKi3qWket9DOeu2er9rbz7+v6GhoaGhoaGhoeEXHGMVf2wHL4SHsWq9G5OgoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaFhDeL/AbL/6dpoj+OHAAAAAElFTkSuQmCC",width:"248",height:"248",style:{mixBlendMode:"multiply"}}),React.createElement("rect",{x:"184.055",y:"54.995",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"170.059",y:"44.06",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"200.238",y:"77.302",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"212.048",y:"87.8",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"206.799",y:"83.425",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"204.175",y:"85.612",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"219.046",y:"103.108",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"154.751",y:"30.064",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"188.866",y:"63.742",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"148.189",y:"34",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"134.051",y:"31.707",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"126.124",y:"24.771",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"115.385",y:"29.19",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"95.702",y:"31.376",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"91.766",y:"27.002",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"90.454",y:"32.688",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"184.389",y:"45.58",width:"2.187",height:"2.187"}),React.createElement("rect",{x:"162.185",y:"41.873",width:"2.187",height:"2.187"})))}var a0="ai",c0="ai-wp-admin",Os="ai/ai",l0="https://wordpress.org/plugins/ai/",Ms=Object.values(ks()),d0=Ms.some(e=>e.type==="ai_provider"),Nu=[];for(let e of Ms)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Nu.push(e.authentication.settingName);function Iu(){let[e,t]=(0,dt.useState)(!1),[o,n]=(0,dt.useState)(!1),r=(0,dt.useRef)(null);(0,dt.useEffect)(()=>{o&&r.current?.focus()},[o]);let i=(0,dt.useRef)(Ms.some(w=>w.type==="ai_provider"&&w.authentication.method==="api_key"&&w.authentication.isConnected)).current,{pluginStatus:s,canInstallPlugins:a,canManagePlugins:d,hasConnectedProvider:l}=(0,rn.useSelect)(w=>{let R=w(Ls.store),P=!!R.canUser("create",{kind:"root",name:"plugin"}),_=R.getEntityRecord("root","site"),O=i||Nu.some(B=>!!_?.[B]),L=R.getEntityRecord("root","plugin",Os);return R.hasFinishedResolution("getEntityRecord",["root","plugin",Os])?L?{pluginStatus:L.status==="active"?"active":"inactive",canInstallPlugins:P,canManagePlugins:!0,hasConnectedProvider:O}:{pluginStatus:"not-installed",canInstallPlugins:P,canManagePlugins:P,hasConnectedProvider:O}:{pluginStatus:"checking",canInstallPlugins:P,canManagePlugins:void 0,hasConnectedProvider:O}},[]),{saveEntityRecord:c}=(0,rn.useDispatch)(Ls.store),{createSuccessNotice:u,createErrorNotice:m}=(0,rn.useDispatch)(Mu.store),p=async()=>{t(!0);try{await c("root","plugin",{slug:a0,status:"active"},{throwOnError:!0}),n(!0),u((0,Ge.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{m((0,Ge.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},f=async()=>{t(!0);try{await c("root","plugin",{plugin:Os,status:"active"},{throwOnError:!0}),n(!0),u((0,Ge.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{m((0,Ge.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!d0||s==="checking"||s==="active"&&i&&!o||s==="inactive"&&d===!1)return null;let h=s==="active"&&!l,v=s==="active"&&l&&(!i||o),b=s==="not-installed"||s==="inactive",E=s==="not-installed"&&a===!1,x=()=>v?(0,Ge.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):h?(0,Ge.__)("The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,Ge.__)("The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),y=()=>s==="not-installed"?{label:e?(0,Ge.__)("Installing\u2026"):(0,Ge.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:p}:{label:e?(0,Ge.__)("Activating\u2026"):(0,Ge.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:f};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,dt.createInterpolateElement)(x(),{strong:React.createElement("strong",null),a:React.createElement(nn.ExternalLink,{href:l0})})),!E&&(b?React.createElement(nn.Button,{variant:"primary",size:"compact",isBusy:e,disabled:y().disabled,accessibleWhenDisabled:!0,onClick:y().onClick},y().label):React.createElement(nn.Button,{ref:r,variant:"secondary",size:"compact",href:(0,Au.addQueryArgs)("options-general.php",{page:c0})},(0,Ge.__)("Control features in the AI plugin")))),React.createElement(Lu,null))}var{store:f0}=Eo(u0);Ou();function p0(){let e=ku(),{connectors:t,canInstallPlugins:o,isAiPluginInstalled:n}=(0,zu.useSelect)(l=>{let c=l(Bu.store),u=c.getEntityRecord("root","plugin","ai/ai");return{connectors:Eo(l(f0)).getConnectors(),canInstallPlugins:c.canUser("create",{kind:"root",name:"plugin"}),isAiPluginInstalled:!!u}},[]),r=t.filter(l=>l.render),i=Array.from(new Set(t.filter(l=>l.type==="ai_provider").map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l))).sort(),s=new Set(t.filter(l=>l.plugin?.isInstalled).map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l));n&&s.add("ai");let a=["ai",...i].filter(l=>!s.has(l)),d=r.length===0;return React.createElement(Es,{title:(0,bt.__)("Connectors"),subTitle:(0,bt.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${d?" connectors-page--empty":""}`},a.length>0&&(e||!o)&&React.createElement(Qo.Root,{intent:"info",className:"connectors-page__file-mods-notice"},React.createElement(Qo.Description,null,e?(0,bt.__)("Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow."):(0,bt.__)("You do not have permission to install plugins. Please ask a site administrator to install them for you."))),d?React.createElement(it.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(it.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(it.__experimentalHeading,{level:2,size:15,weight:600},(0,bt.__)("No connectors yet")),React.createElement(it.__experimentalText,{size:12},(0,bt.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(it.Button,{variant:"secondary",href:"plugin-install.php"},(0,bt.__)("Learn more"))):React.createElement(it.__experimentalVStack,{spacing:3},React.createElement(Iu,null),React.createElement(it.__experimentalVStack,{spacing:3,role:"list"},t.map(l=>l.render?React.createElement(l.render,{key:l.slug,slug:l.slug,name:l.name,description:l.description,type:l.type,logo:l.logo,authentication:l.authentication,plugin:l.plugin}):null))),o&&!e&&React.createElement("p",null,(0,Du.createInterpolateElement)((0,bt.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function m0(){return React.createElement(p0,null)}var g0=m0;export{g0 as stage}; +var Qu=Object.create;var wr=Object.defineProperty;var $u=Object.getOwnPropertyDescriptor;var ef=Object.getOwnPropertyNames;var tf=Object.getPrototypeOf,of=Object.prototype.hasOwnProperty;var ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),vr=(e,t)=>{for(var o in t)wr(e,o,{get:t[o],enumerable:!0})},nf=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ef(t))!of.call(e,r)&&r!==o&&wr(e,r,{get:()=>t[r],enumerable:!(n=$u(t,r))||n.enumerable});return e};var g=(e,t,o)=>(o=e!=null?Qu(tf(e)):{},nf(t||!e||!e.__esModule?wr(o,"default",{value:e,enumerable:!0}):o,e));var _t=ve((k0,Hs)=>{Hs.exports=window.wp.i18n});var oe=ve((N0,Ds)=>{Ds.exports=window.wp.element});var H=ve((L0,js)=>{js.exports=window.React});var q=ve((z0,Ys)=>{Ys.exports=window.ReactJSXRuntime});var xt=ve((wb,ca)=>{ca.exports=window.ReactDOM});var Tc=ve(Ec=>{"use strict";var bo=H();function $p(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var em=typeof Object.is=="function"?Object.is:$p,tm=bo.useState,om=bo.useEffect,nm=bo.useLayoutEffect,rm=bo.useDebugValue;function im(e,t){var o=t(),n=tm({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return nm(function(){r.value=o,r.getSnapshot=t,ei(r)&&i({inst:r})},[e,o,t]),om(function(){return ei(r)&&i({inst:r}),e(function(){ei(r)&&i({inst:r})})},[e]),rm(o),o}function ei(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!em(e,o)}catch{return!0}}function sm(e,t){return t()}var am=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?sm:im;Ec.useSyncExternalStore=bo.useSyncExternalStore!==void 0?bo.useSyncExternalStore:am});var ti=ve((k1,Pc)=>{"use strict";Pc.exports=Tc()});var Ac=ve(Cc=>{"use strict";var Bn=H(),cm=ti();function lm(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var dm=typeof Object.is=="function"?Object.is:lm,um=cm.useSyncExternalStore,fm=Bn.useRef,pm=Bn.useEffect,mm=Bn.useMemo,gm=Bn.useDebugValue;Cc.useSyncExternalStoreWithSelector=function(e,t,o,n,r){var i=fm(null);if(i.current===null){var s={hasValue:!1,value:null};i.current=s}else s=i.current;i=mm(function(){function d(p){if(!l){if(l=!0,c=p,p=n(p),r!==void 0&&s.hasValue){var f=s.value;if(r(f,p))return u=f}return u=p}if(f=u,dm(c,p))return f;var h=n(p);return r!==void 0&&r(f,h)?(c=p,f):(c=p,u=h)}var l=!1,c,u,m=o===void 0?null:o;return[function(){return d(t())},m===null?void 0:function(){return d(m())}]},[t,o,n,r]);var a=um(e,i[0],i[1]);return pm(function(){s.hasValue=!0,s.value=a},[a]),gm(a),a}});var Oc=ve((N1,kc)=>{"use strict";kc.exports=Ac()});var Zt=ve((Zx,Zl)=>{Zl.exports=window.wp.primitives});var nd=ve((b2,od)=>{od.exports=window.wp.theme});var Yi=ve((w2,id)=>{id.exports=window.wp.privateApis});var $o=ve((Z4,fu)=>{fu.exports=window.wp.components});var tn=ve((c5,_u)=>{_u.exports=window.wp.data});var fr=ve((l5,yu)=>{yu.exports=window.wp.coreData});var ks=ve((d5,xu)=>{xu.exports=window.wp.notices});var Su=ve((u5,Ru)=>{Ru.exports=window.wp.url});function zs(e){var t,o,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(o=zs(e[t]))&&(n&&(n+=" "),n+=o)}else for(o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function rf(){for(var e,t,o=0,n="",r=arguments.length;o<r;o++)(e=arguments[o])&&(t=zs(e))&&(n&&(n+=" "),n+=t);return n}var J=rf;var Wl=g(oe(),1);var yr=g(H(),1);var Vs=g(H(),1),Fs={};function de(e,t){let o=Vs.useRef(Fs);return o.current===Fs&&(o.current=e(t)),o}var _r=yr[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],sf=_r&&_r!==yr.useLayoutEffect?_r:e=>e();function V(e){let t=de(af).current;return t.next=e,sf(t.effect),t.trampoline}function af(){let e={next:void 0,callback:cf,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function cf(){}var Ws=g(H(),1),lf=()=>{},j=typeof document<"u"?Ws.useLayoutEffect:lf;var gn=g(H(),1),df=gn.createContext(void 0);function no(){return gn.useContext(df)?.direction??"ltr"}function uf(e,t){return function(n,...r){let i=new URL(e);return i.searchParams.set("code",n.toString()),r.forEach(s=>i.searchParams.append("args[]",s)),`${t} error #${n}; visit ${i} for the full message.`}}var ff=uf("https://base-ui.com/production-error","Base UI"),xe=ff;var Ht=g(H(),1);function xr(e,t,o,n){let r=de(Gs).current;return pf(r,e,t,o,n)&&Xs(r,[e,t,o,n]),r.callback}function Us(e){let t=de(Gs).current;return mf(t,e)&&Xs(t,e),t.callback}function Gs(){return{callback:null,cleanup:null,refs:[]}}function pf(e,t,o,n,r){return e.refs[0]!==t||e.refs[1]!==o||e.refs[2]!==n||e.refs[3]!==r}function mf(e,t){return e.refs.length!==t.length||e.refs.some((o,n)=>o!==t[n])}function Xs(e,t){if(e.refs=t,t.every(o=>o==null)){e.callback=null;return}e.callback=o=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),o!=null){let n=Array(t.length).fill(null);for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=i(o);typeof s=="function"&&(n[r]=s);break}case"object":{i.current=o;break}default:}}e.cleanup=()=>{for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=n[r];typeof s=="function"?s():i(null);break}case"object":{i.current=null;break}default:}}}}}}var qs=g(H(),1);var Ks=g(H(),1),gf=parseInt(Ks.version,10);function ro(e){return gf>=e}function Rr(e){if(!qs.isValidElement(e))return null;let t=e,o=t.props;return(ro(19)?o?.ref:t.ref)??null}function Oo(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function mt(){}var X0=Object.freeze([]),ge=Object.freeze({});function Zs(e,t){let o={};for(let n in e){let r=e[n];if(t?.hasOwnProperty(n)){let i=t[n](r);i!=null&&Object.assign(o,i);continue}r===!0?o[`data-${n.toLowerCase()}`]="":r&&(o[`data-${n.toLowerCase()}`]=r.toString())}return o}function Js(e,t){return typeof e=="function"?e(t):e}function Qs(e,t){return typeof e=="function"?e(t):e}var Sr={};function Ae(e,t,o,n,r){if(!o&&!n&&!r&&!e)return bn(t);let i=bn(e);return t&&(i=No(i,t)),o&&(i=No(i,o)),n&&(i=No(i,n)),r&&(i=No(i,r)),i}function $s(e){if(e.length===0)return Sr;if(e.length===1)return bn(e[0]);let t=bn(e[0]);for(let o=1;o<e.length;o+=1)t=No(t,e[o]);return t}function bn(e){return Er(e)?{...ta(e,Sr)}:bf(e)}function No(e,t){return Er(t)?ta(t,e):hf(e,t)}function bf(e){let t={...e};for(let o in t){let n=t[o];ea(o,n)&&(t[o]=oa(n))}return t}function hf(e,t){if(!t)return e;for(let o in t){let n=t[o];switch(o){case"style":{e[o]=Oo(e.style,n);break}case"className":{e[o]=Tr(e.className,n);break}default:ea(o,n)?e[o]=wf(e[o],n):e[o]=n}}return e}function ea(e,t){let o=e.charCodeAt(0),n=e.charCodeAt(1),r=e.charCodeAt(2);return o===111&&n===110&&r>=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function Er(e){return typeof e=="function"}function ta(e,t){return Er(e)?e(t):e??Sr}function wf(e,t){return t?e?(...o)=>{let n=o[0];if(na(n)){let i=n;Lo(i);let s=t(...o);return i.baseUIHandlerPrevented||e?.(...o),s}let r=t(...o);return e?.(...o),r}:oa(t):e}function oa(e){return e&&((...t)=>{let o=t[0];return na(o)&&Lo(o),e(...t)})}function Lo(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Tr(e,t){return t?e?t+" "+e:t:e}function na(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Pr=g(H(),1);function Re(e,t,o={}){let n=t.render,r=vf(t,o);if(o.enabled===!1)return null;let i=o.state??ge;return xf(e,n,r,i)}function vf(e,t={}){let{className:o,style:n,render:r}=e,{state:i=ge,ref:s,props:a,stateAttributesMapping:d,enabled:l=!0}=t,c=l?Js(o,i):void 0,u=l?Qs(n,i):void 0,m=l?Zs(i,d):ge,p=l&&a?_f(a):void 0,f=l?Oo(m,p)??{}:ge;return typeof document<"u"&&(l?Array.isArray(s)?f.ref=Us([f.ref,Rr(r),...s]):f.ref=xr(f.ref,Rr(r),s):xr(null,null)),l?(c!==void 0&&(f.className=Tr(f.className,c)),u!==void 0&&(f.style=Oo(f.style,u)),f):ge}function _f(e){return Array.isArray(e)?$s(e):Ae(void 0,e)}var yf=Symbol.for("react.lazy");function xf(e,t,o,n){if(t){if(typeof t=="function")return t(o,n);let r=Ae(o,t.props);r.ref=o.ref;let i=t;return i?.$$typeof===yf&&(i=Ht.Children.toArray(t)[0]),Ht.cloneElement(i,r)}if(e&&typeof e=="string")return Rf(e,o);throw new Error(xe(8))}function Rf(e,t){return e==="button"?(0,Pr.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Pr.createElement)("img",{alt:"",...t,key:t.key}):Ht.createElement(e,t)}var G={};vr(G,{cancelOpen:()=>Jf,chipRemovePress:()=>Lf,clearPress:()=>Nf,closePress:()=>kf,closeWatcher:()=>Yf,decrementPress:()=>Bf,disabled:()=>$f,drag:()=>Kf,escapeKey:()=>Wf,focusOut:()=>Vf,imperativeAction:()=>ep,incrementPress:()=>Mf,inputBlur:()=>Df,inputChange:()=>Hf,inputClear:()=>zf,inputPaste:()=>jf,inputPress:()=>Ff,itemPress:()=>Af,keyboard:()=>Gf,linkPress:()=>Of,listNavigation:()=>Uf,none:()=>Sf,outsidePress:()=>Cf,pointer:()=>Xf,scrub:()=>Zf,siblingOpen:()=>Qf,swipe:()=>tp,trackPress:()=>If,triggerFocus:()=>Pf,triggerHover:()=>Tf,triggerPress:()=>Ef,wheel:()=>qf,windowResize:()=>op});var Sf="none",Ef="trigger-press",Tf="trigger-hover",Pf="trigger-focus",Cf="outside-press",Af="item-press",kf="close-press",Of="link-press",Nf="clear-press",Lf="chip-remove-press",If="track-press",Mf="increment-press",Bf="decrement-press",Hf="input-change",zf="input-clear",Df="input-blur",jf="input-paste",Ff="input-press",Vf="focus-out",Wf="escape-key",Yf="close-watcher",Uf="list-navigation",Gf="keyboard",Xf="pointer",Kf="drag",qf="wheel",Zf="scrub",Jf="cancel-open",Qf="sibling-open",$f="disabled",ep="imperative-action",tp="swipe",op="window-resize";function ee(e,t,o,n){let r=!1,i=!1,s=n??ge;return{reason:e,event:t??new Event("base-ui"),cancel(){r=!0},allowPropagation(){i=!0},get isCanceled(){return r},get isPropagationAllowed(){return i},trigger:o,...s}}var hn=g(H(),1);var np=g(H(),1),ra={...np};var ia=0;function rp(e,t="mui"){let[o,n]=hn.useState(e),r=e||o;return hn.useEffect(()=>{o==null&&(ia+=1,n(`${t}-${ia}`))},[o,t]),r}var sa=ra.useId;function yt(e,t){if(sa!==void 0){let o=sa();return e??(t?`${t}-${o}`:o)}return rp(e,t)}function aa(e){return yt(e,"base-ui")}var fa=g(xt(),1);var la=g(H(),1),ip=[];function io(e){la.useEffect(e,ip)}var wn=null,xb=globalThis.requestAnimationFrame,Cr=class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=t=>{this.isScheduled=!1;let o=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let r=0;r<o.length;r+=1)o[r]?.(t)};request(t){let o=this.nextId;return this.nextId+=1,this.callbacks.push(t),this.callbacksCount+=1,!this.isScheduled&&(requestAnimationFrame(this.tick),this.isScheduled=!0),o}cancel(t){let o=t-this.startId;o<0||o>=this.callbacks.length||(this.callbacks[o]=null,this.callbacksCount-=1)}},vn=new Cr,st=class e{static create(){return new e}static request(t){return vn.request(t)}static cancel(t){return vn.cancel(t)}currentId=wn;request(t){this.cancel(),this.currentId=vn.request(()=>{this.currentId=wn,t()})}cancel=()=>{this.currentId!==wn&&(vn.cancel(this.currentId),this.currentId=wn)};disposeEffect=()=>this.cancel};function so(){let e=de(st.create).current;return io(e.disposeEffect),e}function da(e){return e==null?e:"current"in e?e.current:e}var zt=(function(e){return e.startingStyle="data-starting-style",e.endingStyle="data-ending-style",e})({}),sp={[zt.startingStyle]:""},ap={[zt.endingStyle]:""},ua={transitionStatus(e){return e==="starting"?sp:e==="ending"?ap:null}};function ao(e,t=!1,o=!0){let n=so();return V((r,i=null)=>{n.cancel();let s=da(e);if(s==null)return;let a=s,d=()=>{fa.flushSync(r)};if(typeof a.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){r();return}function l(){Promise.all(a.getAnimations().map(c=>c.finished)).then(()=>{i?.aborted||d()}).catch(()=>{if(o){i?.aborted||d();return}let c=a.getAnimations();!i?.aborted&&c.length>0&&c.some(u=>u.pending||u.playState!=="finished")&&l()})}if(t){let c=zt.startingStyle;if(!a.hasAttribute(c)){n.request(l);return}let u=new MutationObserver(()=>{a.hasAttribute(c)||(u.disconnect(),l())});u.observe(a,{attributes:!0,attributeFilter:[c]}),i?.addEventListener("abort",()=>u.disconnect(),{once:!0});return}n.request(l)})}var Ar=g(H(),1);function pa(e,t=!1,o=!1){let[n,r]=Ar.useState(e&&t?"idle":void 0),[i,s]=Ar.useState(e);return e&&!i&&(s(!0),r("starting")),!e&&i&&n!=="ending"&&!o&&r("ending"),!e&&!i&&n==="ending"&&r(void 0),j(()=>{if(!e&&i&&n!=="ending"&&o){let a=st.request(()=>{r("ending")});return()=>{st.cancel(a)}}},[e,i,n,o]),j(()=>{if(!e||t)return;let a=st.request(()=>{r(void 0)});return()=>{st.cancel(a)}},[t,e]),j(()=>{if(!e||!t)return;e&&i&&n!=="idle"&&r("starting");let a=st.request(()=>{r("idle")});return()=>{st.cancel(a)}},[t,e,i,n]),{mounted:i,setMounted:s,transitionStatus:n}}var fo=g(H(),1);function _n(){return typeof window<"u"}function jt(e){return yn(e)?(e.nodeName||"").toLowerCase():"#document"}function ce(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Je(e){var t;return(t=(yn(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function yn(e){return _n()?e instanceof Node||e instanceof ce(e).Node:!1}function W(e){return _n()?e instanceof Element||e instanceof ce(e).Element:!1}function ue(e){return _n()?e instanceof HTMLElement||e instanceof ce(e).HTMLElement:!1}function co(e){return!_n()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof ce(e).ShadowRoot}function lo(e){let{overflow:t,overflowX:o,overflowY:n,display:r}=Se(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+o)&&r!=="inline"&&r!=="contents"}function ma(e){return/^(table|td|th)$/.test(jt(e))}function Io(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}var cp=/transform|translate|scale|rotate|perspective|filter/,lp=/paint|layout|strict|content/,Dt=e=>!!e&&e!=="none",kr;function xn(e){let t=W(e)?Se(e):e;return Dt(t.transform)||Dt(t.translate)||Dt(t.scale)||Dt(t.rotate)||Dt(t.perspective)||!uo()&&(Dt(t.backdropFilter)||Dt(t.filter))||cp.test(t.willChange||"")||lp.test(t.contain||"")}function ga(e){let t=Ze(e);for(;ue(t)&&!Qe(t);){if(xn(t))return t;if(Io(t))return null;t=Ze(t)}return null}function uo(){return kr==null&&(kr=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),kr}function Qe(e){return/^(html|body|#document)$/.test(jt(e))}function Se(e){return ce(e).getComputedStyle(e)}function Mo(e){return W(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Ze(e){if(jt(e)==="html")return e;let t=e.assignedSlot||e.parentNode||co(e)&&e.host||Je(e);return co(t)?t.host:t}function ba(e){let t=Ze(e);return Qe(t)?e.ownerDocument?e.ownerDocument.body:e.body:ue(t)&&lo(t)?t:ba(t)}function Rt(e,t,o){var n;t===void 0&&(t=[]),o===void 0&&(o=!0);let r=ba(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),s=ce(r);if(i){let a=Rn(s);return t.concat(s,s.visualViewport||[],lo(r)?r:[],a&&o?Rt(a):[])}else return t.concat(r,Rt(r,[],o))}function Rn(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var Sn=g(H(),1),dp=Sn.createContext(void 0);function ha(e=!1){let t=Sn.useContext(dp);if(t===void 0&&!e)throw new Error(xe(16));return t}var wa=g(H(),1);function va(e){let{focusableWhenDisabled:t,disabled:o,composite:n=!1,tabIndex:r=0,isNativeButton:i}=e,s=n&&t!==!1,a=n&&t===!1;return{props:wa.useMemo(()=>{let l={onKeyDown(c){o&&t&&c.key!=="Tab"&&c.preventDefault()}};return n||(l.tabIndex=r,!i&&o&&(l.tabIndex=t?r:-1)),(i&&(t||s)||!i&&o)&&(l["aria-disabled"]=o),i&&(!t||a)&&(l.disabled=o),l},[n,o,t,s,a,i,r])}}function _a(e={}){let{disabled:t=!1,focusableWhenDisabled:o,tabIndex:n=0,native:r=!0,composite:i}=e,s=fo.useRef(null),a=ha(!0),d=i??a!==void 0,{props:l}=va({focusableWhenDisabled:o,disabled:t,composite:d,tabIndex:n,isNativeButton:r}),c=fo.useCallback(()=>{let p=s.current;Or(p)&&d&&t&&l.disabled===void 0&&p.disabled&&(p.disabled=!1)},[t,l.disabled,d]);j(c,[c]);let u=fo.useCallback((p={})=>{let{onClick:f,onMouseDown:h,onKeyUp:v,onKeyDown:b,onPointerDown:T,...y}=p;return Ae({type:r?"button":void 0,onClick(w){if(t){w.preventDefault();return}f?.(w)},onMouseDown(w){t||h?.(w)},onKeyDown(w){if(t||(Lo(w),b?.(w),w.baseUIHandlerPrevented))return;let R=w.target===w.currentTarget,E=w.currentTarget,x=Or(E),k=!r&&up(E),O=R&&(r?x:!k),B=w.key==="Enter",z=w.key===" ",N=E.getAttribute("role"),C=N?.startsWith("menuitem")||N==="option"||N==="gridcell";if(R&&d&&z){if(w.defaultPrevented&&C)return;w.preventDefault(),k||r&&x?(E.click(),w.preventBaseUIHandler()):O&&(f?.(w),w.preventBaseUIHandler());return}O&&(!r&&(z||B)&&w.preventDefault(),!r&&B&&f?.(w))},onKeyUp(w){if(!t){if(Lo(w),v?.(w),w.target===w.currentTarget&&r&&d&&Or(w.currentTarget)&&w.key===" "){w.preventDefault();return}w.baseUIHandlerPrevented||w.target===w.currentTarget&&!r&&!d&&w.key===" "&&f?.(w)}},onPointerDown(w){if(t){w.preventDefault();return}T?.(w)}},r?void 0:{role:"button"},l,y)},[t,l,d,r]),m=V(p=>{s.current=p,c()});return{getButtonProps:u,buttonRef:m}}function Or(e){return ue(e)&&e.tagName==="BUTTON"}function up(e){return!!(e?.tagName==="A"&&e?.href)}var St=typeof navigator<"u",Nr=fp(),ya=mp(),En=pp(),Ub=typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter:none"),Gb=Nr.platform==="MacIntel"&&Nr.maxTouchPoints>1?!0:/iP(hone|ad|od)|iOS/.test(Nr.platform),Xb=St&&/firefox/i.test(En),xa=St&&/apple/i.test(navigator.vendor),Kb=St&&/Edg/i.test(En),qb=St&&/android/i.test(ya)||/android/i.test(En),Ra=St&&ya.toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints,Sa=En.includes("jsdom/");function fp(){if(!St)return{platform:"",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??-1}}function pp(){if(!St)return"";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:t,version:o})=>`${t}/${o}`).join(" "):navigator.userAgent}function mp(){if(!St)return"";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??""}var Lr="data-base-ui-focusable",Ir="active",Mr="selected",Br="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function Tn(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function ne(e,t){if(!e||!t)return!1;let o=t.getRootNode?.();if(e.contains(t))return!0;if(o&&co(o)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function ke(e){return"composedPath"in e?e.composedPath()[0]:e.target}function Ft(e,t){if(!W(e))return!1;let o=e;if(t.hasElement(o))return!o.hasAttribute("data-trigger-disabled");for(let[,n]of t.entries())if(ne(n,o))return!n.hasAttribute("data-trigger-disabled");return!1}function Ye(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);let o=e;return o.target!=null&&t.contains(o.target)}function Ea(e){return e.matches("html,body")}function Ta(e){return ue(e)&&e.matches(Br)}function Hr(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${Br}`)!=null}function Pa(e){if(!e||Sa)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function $e(e,t,o=!0){return e.filter(r=>r.parentId===t).flatMap(r=>[...!o||r.context?.open?[r]:[],...$e(e,r.id,o)])}function Ca(e){return"nativeEvent"in e}function Vt(e,t){let o=["mouse","pen"];return t||o.push("",void 0),o.includes(e)}function Aa(e){let t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}var Na=["top","right","bottom","left"];var Et=Math.min,Oe=Math.max,Tt=Math.round,Ho=Math.floor,et=e=>({x:e,y:e}),gp={left:"right",right:"left",bottom:"top",top:"bottom"};function zo(e,t,o){return Oe(e,Et(t,o))}function tt(e,t){return typeof e=="function"?e(t):e}function _e(e){return e.split("-")[0]}function ot(e){return e.split("-")[1]}function Cn(e){return e==="x"?"y":"x"}function Do(e){return e==="y"?"height":"width"}function Me(e){let t=e[0];return t==="t"||t==="b"?"y":"x"}function jo(e){return Cn(Me(e))}function La(e,t,o){o===void 0&&(o=!1);let n=ot(e),r=jo(e),i=Do(r),s=r==="x"?n===(o?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=Bo(s)),[s,Bo(s)]}function Ia(e){let t=Bo(e);return[Pn(e),t,Pn(t)]}function Pn(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var ka=["left","right"],Oa=["right","left"],bp=["top","bottom"],hp=["bottom","top"];function wp(e,t,o){switch(e){case"top":case"bottom":return o?t?Oa:ka:t?ka:Oa;case"left":case"right":return t?bp:hp;default:return[]}}function Ma(e,t,o,n){let r=ot(e),i=wp(_e(e),o==="start",n);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(Pn)))),i}function Bo(e){let t=_e(e);return gp[t]+e.slice(t.length)}function vp(e){return{top:0,right:0,bottom:0,left:0,...e}}function An(e){return typeof e!="number"?vp(e):{top:e,right:e,bottom:e,left:e}}function Wt(e){let{x:t,y:o,width:n,height:r}=e;return{width:n,height:r,top:o,left:t,right:t+n,bottom:o+r,x:t,y:o}}function be(e){return e?.ownerDocument||document}function Q(e,t,o,n){return e.addEventListener(t,o,n),()=>{e.removeEventListener(t,o,n)}}var Ba=g(H(),1);function kn(e){let{enabled:t=!0,open:o,ref:n,onComplete:r}=e,i=V(r),s=ao(n,o,!1);Ba.useEffect(()=>{if(!t)return;let a=new AbortController;return s(i,a.signal),()=>{a.abort()}},[t,o,i,s])}var Ha=g(H(),1);function za(e){let t=Ha.useRef(!0);t.current&&(t.current=!1,e())}var Fo=0,De=class e{static create(){return new e}currentId=Fo;start(t,o){this.clear(),this.currentId=setTimeout(()=>{this.currentId=Fo,o()},t)}isStarted(){return this.currentId!==Fo}clear=()=>{this.currentId!==Fo&&(clearTimeout(this.currentId),this.currentId=Fo)};disposeEffect=()=>this.clear};function gt(){let e=de(De.create).current;return io(e.disposeEffect),e}var Be=g(H(),1);function _p(e,t){return t!=null&&!Vt(t)?0:typeof e=="function"?e():e}function Yt(e,t,o){let n=_p(e,o);return typeof n=="number"?n:n?.[t]}function zr(e){return typeof e=="function"?e():e}function On(e,t){return t||e==="click"||e==="mousedown"}var Da=g(q(),1),ja=Be.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new De,currentIdRef:{current:null},currentContextRef:{current:null}});function Dr(e){let{children:t,delay:o,timeoutMs:n=0}=e,r=Be.useRef(o),i=Be.useRef(o),s=Be.useRef(null),a=Be.useRef(null),d=gt();return(0,Da.jsx)(ja.Provider,{value:Be.useMemo(()=>({hasProvider:!0,delayRef:r,initialDelayRef:i,currentIdRef:s,timeoutMs:n,currentContextRef:a,timeout:d}),[n,d]),children:t})}function jr(e,t={open:!1}){let o="rootStore"in e?e.rootStore:e,n=o.useState("floatingId"),{open:r}=t,i=Be.useContext(ja),{currentIdRef:s,delayRef:a,timeoutMs:d,initialDelayRef:l,currentContextRef:c,hasProvider:u,timeout:m}=i,[p,f]=Be.useState(!1);return j(()=>{function h(){f(!1),c.current?.setIsInstantPhase(!1),s.current=null,c.current=null,a.current=l.current}if(s.current&&!r&&s.current===n){if(f(!1),d){let v=n;return m.start(d,()=>{o.select("open")||s.current&&s.current!==v||h()}),()=>{m.clear()}}h()}},[r,n,s,a,d,l,c,m,o]),j(()=>{if(!r)return;let h=c.current,v=s.current;m.clear(),c.current={onOpenChange:o.setOpen,setIsInstantPhase:f},s.current=n,a.current={open:0,close:Yt(l.current,"close")},v!==null&&v!==n?(f(!0),h?.setIsInstantPhase(!0),h?.onOpenChange(!1,ee(G.none))):(f(!1),h?.setIsInstantPhase(!1))},[r,n,o,s,a,d,l,c,m]),j(()=>()=>{c.current=null},[c]),Be.useMemo(()=>({hasProvider:u,delayRef:a,isInstantPhase:p}),[u,a,p])}function nt(...e){return()=>{for(let t=0;t<e.length;t+=1){let o=e[t];o&&o()}}}function rt(e){let t=de(yp,e).current;return t.next=e,j(t.effect),t}function yp(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}function po(e){return`data-base-ui-${e}`}var je=g(H(),1),Wa=g(xt(),1);var Fa={style:{transition:"none"}};var xp="data-base-ui-swipe-ignore",Rp="data-swipe-ignore",Oh=`[${xp}]`,Nh=`[${Rp}]`;var Va={fallbackAxisSide:"end"};var Ya=g(q(),1),Sp=je.createContext(null),Ep=()=>je.useContext(Sp),Tp=po("portal");function Fr(e={}){let{ref:t,container:o,componentProps:n=ge,elementProps:r}=e,i=yt(),a=Ep()?.portalNode,[d,l]=je.useState(null),[c,u]=je.useState(null),m=V(v=>{v!==null&&u(v)}),p=je.useRef(null);j(()=>{if(o===null){p.current&&(p.current=null,u(null),l(null));return}if(i==null)return;let v=(o&&(yn(o)?o:o.current))??a??document.body;if(v==null){p.current&&(p.current=null,u(null),l(null));return}p.current!==v&&(p.current=v,u(null),l(v))},[o,a,i]);let f=Re("div",n,{ref:[t,m],props:[{id:i,[Tp]:""},r]});return{portalNode:c,portalSubtree:d&&f?Wa.createPortal(f,d):null}}var Ut=g(H(),1);function Ua(){let e=new Map;return{emit(t,o){e.get(t)?.forEach(n=>n(o))},on(t,o){e.has(t)||e.set(t,new Set),e.get(t).add(o)},off(t,o){e.get(t)?.delete(o)}}}var Pp=g(q(),1),Cp=Ut.createContext(null),Ap=Ut.createContext(null),mo=()=>Ut.useContext(Cp)?.id||null,Pt=e=>{let t=Ut.useContext(Ap);return e??t};var Ne=g(H(),1);function kp(e,t){let o=null,n=null,r=!1;return{contextElement:e||void 0,getBoundingClientRect(){let i=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},s=t.axis==="x"||t.axis==="both",a=t.axis==="y"||t.axis==="both",d=["mouseenter","mousemove"].includes(t.dataRef.current.openEvent?.type||"")&&t.pointerType!=="touch",l=i.width,c=i.height,u=i.x,m=i.y;return o==null&&t.x&&s&&(o=i.x-t.x),n==null&&t.y&&a&&(n=i.y-t.y),u-=o||0,m-=n||0,l=0,c=0,!r||d?(l=t.axis==="y"?i.width:0,c=t.axis==="x"?i.height:0,u=s&&t.x!=null?t.x:u,m=a&&t.y!=null?t.y:m):r&&!d&&(c=t.axis==="x"?i.height:c,l=t.axis==="y"?i.width:l),r=!0,{width:l,height:c,x:u,y:m,top:m,right:u+l,bottom:m+c,left:u}}}}function Ga(e){return e!=null&&e.clientX!=null}function Vr(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),i=o.useState("domReferenceElement"),s=o.context.dataRef,{enabled:a=!0,axis:d="both"}=t,l=Ne.useRef(!1),c=Ne.useRef(null),[u,m]=Ne.useState(),[p,f]=Ne.useState([]),h=V((_,w,R)=>{l.current||s.current.openEvent&&!Ga(s.current.openEvent)||o.set("positionReference",kp(R??i,{x:_,y:w,axis:d,dataRef:s,pointerType:u}))}),v=V(_=>{n?c.current||f([]):h(_.clientX,_.clientY,_.currentTarget)}),b=Vt(u)?r:n,T=Ne.useCallback(()=>{if(!b||!a)return;let _=ce(r);function w(R){let E=ke(R);ne(r,E)?(c.current?.(),c.current=null):h(R.clientX,R.clientY)}if(!s.current.openEvent||Ga(s.current.openEvent)){let R=()=>{c.current?.(),c.current=null};return c.current=Q(_,"mousemove",w),R}o.set("positionReference",i)},[b,a,r,s,i,o,h]);Ne.useEffect(()=>T(),[T,p]),Ne.useEffect(()=>{a&&!r&&(l.current=!1)},[a,r]),Ne.useEffect(()=>{!a&&n&&(l.current=!0)},[a,n]);let y=Ne.useMemo(()=>{function _(w){m(w.pointerType)}return{onPointerDown:_,onPointerEnter:_,onMouseMove:v,onMouseEnter:v}},[v]);return Ne.useMemo(()=>a?{reference:y,trigger:y}:{},[a,y])}var He=g(H(),1);var Op={intentional:"onClick",sloppy:"onPointerDown"};function Np(){return!1}function Lp(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Wr(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),{dataRef:i}=o.context,{enabled:s=!0,escapeKey:a=!0,outsidePress:d=!0,outsidePressEvent:l="sloppy",referencePress:c=Np,referencePressEvent:u="sloppy",bubbles:m,externalTree:p}=t,f=Pt(p),h=V(typeof d=="function"?d:()=>!1),v=typeof d=="function"?h:d,b=v!==!1,T=V(()=>l),y=He.useRef(!1),_=He.useRef(!1),w=He.useRef(!1),{escapeKey:R,outsidePress:E}=Lp(m),x=He.useRef(null),k=gt(),O=gt(),B=V(()=>{O.clear(),i.current.insideReactTree=!1}),z=He.useRef(!1),N=He.useRef(""),C=V(c),S=V(Y=>{if(!n||!s||!a||Y.key!=="Escape"||z.current)return;let X=i.current.floatingContext?.nodeId,K=f?$e(f.nodesRef.current,X):[];if(!R&&K.length>0){let U=!0;if(K.forEach(re=>{re.context?.open&&!re.context.dataRef.current.__escapeKeyBubbles&&(U=!1)}),!U)return}let ae=Ca(Y)?Y.nativeEvent:Y,ie=ee(G.escapeKey,ae);o.setOpen(!1,ie),!R&&!ie.isPropagationAllowed&&Y.stopPropagation()}),L=V(()=>{i.current.insideReactTree=!0,O.start(0,B)});He.useEffect(()=>{if(!n||!s)return;i.current.__escapeKeyBubbles=R,i.current.__outsidePressBubbles=E;let Y=new De,X=new De;function K(){Y.clear(),z.current=!0}function ae(){Y.start(uo()?5:0,()=>{z.current=!1})}function ie(){w.current=!0,X.start(0,()=>{w.current=!1})}function U(){y.current=!1,_.current=!1}function re(){let I=N.current,D=I==="pen"||!I?"mouse":I,le=T(),ye=typeof le=="function"?le():le;return typeof ye=="string"?ye:ye[D]}function Te(I){let D=re();return D==="intentional"&&I.type!=="click"||D==="sloppy"&&I.type==="click"}function he(I){let D=i.current.floatingContext?.nodeId,le=f&&$e(f.nodesRef.current,D).some(ye=>Ye(I,ye.context?.elements.floating));return Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement"))||le}function Pe(I){if(Te(I)){B();return}if(i.current.insideReactTree){B();return}let D=ke(I),le=`[${po("inert")}]`,ye=W(D)?D.getRootNode():null,vt=Array.from((co(ye)?ye:be(o.select("floatingElement"))).querySelectorAll(le)),Co=o.context.triggerElements;if(D&&(Co.hasElement(D)||Co.hasMatchingElement(me=>ne(me,D))))return;let ut=W(D)?D:null;for(;ut&&!Qe(ut);){let me=Ze(ut);if(Qe(me)||!W(me))break;ut=me}if(vt.length&&W(D)&&!Ea(D)&&!ne(D,o.select("floatingElement"))&&vt.every(me=>!ne(ut,me)))return;if(ue(D)&&!("touches"in I)){let me=Qe(D),ft=Se(D),Ao=/auto|scroll/,un=me||Ao.test(ft.overflowX),fn=me||Ao.test(ft.overflowY),pn=un&&D.clientWidth>0&&D.scrollWidth>D.clientWidth,te=fn&&D.clientHeight>0&&D.scrollHeight>D.clientHeight,Ce=ft.direction==="rtl",We=te&&(Ce?I.offsetX<=D.offsetWidth-D.clientWidth:I.offsetX>D.clientWidth),Ie=pn&&I.offsetY>D.clientHeight;if(We||Ie)return}if(he(I))return;if(re()==="intentional"&&w.current){X.clear(),w.current=!1;return}if(typeof v=="function"&&!v(I))return;let dn=i.current.floatingContext?.nodeId,Mt=f?$e(f.nodesRef.current,dn):[];if(Mt.length>0){let me=!0;if(Mt.forEach(ft=>{ft.context?.open&&!ft.context.dataRef.current.__outsidePressBubbles&&(me=!1)}),!me)return}o.setOpen(!1,ee(G.outsidePress,I)),B()}function we(I){re()!=="sloppy"||I.pointerType==="touch"||!o.select("open")||!s||Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement"))||Pe(I)}function Ot(I){if(re()!=="sloppy"||!o.select("open")||!s||Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement")))return;let D=I.touches[0];D&&(x.current={startTime:Date.now(),startX:D.clientX,startY:D.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},k.start(1e3,()=>{x.current&&(x.current.dismissOnTouchEnd=!1,x.current.dismissOnMouseDown=!1)}))}function Nt(I,D){let le=ke(I);if(!le)return;let ye=Q(le,I.type,()=>{D(I),ye()})}function an(I){N.current="touch",Nt(I,Ot)}function eo(I){k.clear(),I.type==="pointerdown"&&(N.current=I.pointerType),!(I.type==="mousedown"&&x.current&&!x.current.dismissOnMouseDown)&&Nt(I,D=>{D.type==="pointerdown"?we(D):Pe(D)})}function Lt(I){if(!y.current)return;let D=_.current;if(U(),re()==="intentional"){if(I.type==="pointercancel"){D&&ie();return}if(!he(I)){if(D){ie();return}typeof v=="function"&&!v(I)||(X.clear(),w.current=!0,B())}}}function wt(I){if(re()!=="sloppy"||!x.current||Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement")))return;let D=I.touches[0];if(!D)return;let le=Math.abs(D.clientX-x.current.startX),ye=Math.abs(D.clientY-x.current.startY),vt=Math.sqrt(le*le+ye*ye);vt>5&&(x.current.dismissOnTouchEnd=!0),vt>10&&(Pe(I),k.clear(),x.current=null)}function It(I){Nt(I,wt)}function cn(I){re()!=="sloppy"||!x.current||Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement"))||(x.current.dismissOnTouchEnd&&Pe(I),k.clear(),x.current=null)}function ln(I){Nt(I,cn)}let pe=be(r),to=nt(a&&nt(Q(pe,"keydown",S),Q(pe,"compositionstart",K),Q(pe,"compositionend",ae)),b&&nt(Q(pe,"click",eo,!0),Q(pe,"pointerdown",eo,!0),Q(pe,"pointerup",Lt,!0),Q(pe,"pointercancel",Lt,!0),Q(pe,"mousedown",eo,!0),Q(pe,"mouseup",Lt,!0),Q(pe,"touchstart",an,!0),Q(pe,"touchmove",It,!0),Q(pe,"touchend",ln,!0)));return()=>{to(),Y.clear(),X.clear(),U(),w.current=!1}},[i,r,a,b,v,n,s,R,E,S,B,T,f,o,k]),He.useEffect(B,[v,B]);let M=He.useMemo(()=>({onKeyDown:S,[Op[u]]:Y=>{C()&&o.setOpen(!1,ee(G.triggerPress,Y.nativeEvent))},...u!=="intentional"&&{onClick(Y){C()&&o.setOpen(!1,ee(G.triggerPress,Y.nativeEvent))}}}),[S,o,u,C]),P=V(Y=>{if(!n||!s||Y.button!==0)return;let X=ke(Y.nativeEvent);ne(o.select("floatingElement"),X)&&(y.current||(y.current=!0,_.current=!1))}),A=V(Y=>{!n||!s||(Y.defaultPrevented||Y.nativeEvent.defaultPrevented)&&y.current&&(_.current=!0)}),F=He.useMemo(()=>({onKeyDown:S,onPointerDown:A,onMouseDown:A,onClickCapture:L,onMouseDownCapture(Y){L(),P(Y)},onPointerDownCapture(Y){L(),P(Y)},onMouseUpCapture:L,onTouchEndCapture:L,onTouchMoveCapture:L}),[S,L,P,A]);return He.useMemo(()=>s?{reference:M,floating:F,trigger:M}:{},[s,M,F])}var Le=g(H(),1);function Xa(e,t,o){let{reference:n,floating:r}=e,i=Me(t),s=jo(t),a=Do(s),d=_e(t),l=i==="y",c=n.x+n.width/2-r.width/2,u=n.y+n.height/2-r.height/2,m=n[a]/2-r[a]/2,p;switch(d){case"top":p={x:c,y:n.y-r.height};break;case"bottom":p={x:c,y:n.y+n.height};break;case"right":p={x:n.x+n.width,y:u};break;case"left":p={x:n.x-r.width,y:u};break;default:p={x:n.x,y:n.y}}switch(ot(t)){case"start":p[s]-=m*(o&&l?-1:1);break;case"end":p[s]+=m*(o&&l?-1:1);break}return p}async function Za(e,t){var o;t===void 0&&(t={});let{x:n,y:r,platform:i,rects:s,elements:a,strategy:d}=e,{boundary:l="clippingAncestors",rootBoundary:c="viewport",elementContext:u="floating",altBoundary:m=!1,padding:p=0}=tt(t,e),f=An(p),v=a[m?u==="floating"?"reference":"floating":u],b=Wt(await i.getClippingRect({element:(o=await(i.isElement==null?void 0:i.isElement(v)))==null||o?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:l,rootBoundary:c,strategy:d})),T=u==="floating"?{x:n,y:r,width:s.floating.width,height:s.floating.height}:s.reference,y=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),_=await(i.isElement==null?void 0:i.isElement(y))?await(i.getScale==null?void 0:i.getScale(y))||{x:1,y:1}:{x:1,y:1},w=Wt(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:T,offsetParent:y,strategy:d}):T);return{top:(b.top-w.top+f.top)/_.y,bottom:(w.bottom-b.bottom+f.bottom)/_.y,left:(b.left-w.left+f.left)/_.x,right:(w.right-b.right+f.right)/_.x}}var Ip=50,Ja=async(e,t,o)=>{let{placement:n="bottom",strategy:r="absolute",middleware:i=[],platform:s}=o,a=s.detectOverflow?s:{...s,detectOverflow:Za},d=await(s.isRTL==null?void 0:s.isRTL(t)),l=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:c,y:u}=Xa(l,n,d),m=n,p=0,f={};for(let h=0;h<i.length;h++){let v=i[h];if(!v)continue;let{name:b,fn:T}=v,{x:y,y:_,data:w,reset:R}=await T({x:c,y:u,initialPlacement:n,placement:m,strategy:r,middlewareData:f,rects:l,platform:a,elements:{reference:e,floating:t}});c=y??c,u=_??u,f[b]={...f[b],...w},R&&p<Ip&&(p++,typeof R=="object"&&(R.placement&&(m=R.placement),R.rects&&(l=R.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:r}):R.rects),{x:c,y:u}=Xa(l,m,d)),h=-1)}return{x:c,y:u,placement:m,strategy:r,middlewareData:f}};var Qa=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var o,n;let{placement:r,middlewareData:i,rects:s,initialPlacement:a,platform:d,elements:l}=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:m,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:h=!0,...v}=tt(e,t);if((o=i.arrow)!=null&&o.alignmentOffset)return{};let b=_e(r),T=Me(a),y=_e(a)===a,_=await(d.isRTL==null?void 0:d.isRTL(l.floating)),w=m||(y||!h?[Bo(a)]:Ia(a)),R=f!=="none";!m&&R&&w.push(...Ma(a,h,f,_));let E=[a,...w],x=await d.detectOverflow(t,v),k=[],O=((n=i.flip)==null?void 0:n.overflows)||[];if(c&&k.push(x[b]),u){let C=La(r,s,_);k.push(x[C[0]],x[C[1]])}if(O=[...O,{placement:r,overflows:k}],!k.every(C=>C<=0)){var B,z;let C=(((B=i.flip)==null?void 0:B.index)||0)+1,S=E[C];if(S&&(!(u==="alignment"?T!==Me(S):!1)||O.every(P=>Me(P.placement)===T?P.overflows[0]>0:!0)))return{data:{index:C,overflows:O},reset:{placement:S}};let L=(z=O.filter(M=>M.overflows[0]<=0).sort((M,P)=>M.overflows[1]-P.overflows[1])[0])==null?void 0:z.placement;if(!L)switch(p){case"bestFit":{var N;let M=(N=O.filter(P=>{if(R){let A=Me(P.placement);return A===T||A==="y"}return!0}).map(P=>[P.placement,P.overflows.filter(A=>A>0).reduce((A,F)=>A+F,0)]).sort((P,A)=>P[1]-A[1])[0])==null?void 0:N[0];M&&(L=M);break}case"initialPlacement":L=a;break}if(r!==L)return{reset:{placement:L}}}return{}}}};function Ka(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function qa(e){return Na.some(t=>e[t]>=0)}var $a=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){let{rects:o,platform:n}=t,{strategy:r="referenceHidden",...i}=tt(e,t);switch(r){case"referenceHidden":{let s=await n.detectOverflow(t,{...i,elementContext:"reference"}),a=Ka(s,o.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:qa(a)}}}case"escaped":{let s=await n.detectOverflow(t,{...i,altBoundary:!0}),a=Ka(s,o.floating);return{data:{escapedOffsets:a,escaped:qa(a)}}}default:return{}}}}};var ec=new Set(["left","top"]);async function Mp(e,t){let{placement:o,platform:n,elements:r}=e,i=await(n.isRTL==null?void 0:n.isRTL(r.floating)),s=_e(o),a=ot(o),d=Me(o)==="y",l=ec.has(s)?-1:1,c=i&&d?-1:1,u=tt(t,e),{mainAxis:m,crossAxis:p,alignmentAxis:f}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return a&&typeof f=="number"&&(p=a==="end"?f*-1:f),d?{x:p*c,y:m*l}:{x:m*l,y:p*c}}var tc=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var o,n;let{x:r,y:i,placement:s,middlewareData:a}=t,d=await Mp(t,e);return s===((o=a.offset)==null?void 0:o.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:r+d.x,y:i+d.y,data:{...d,placement:s}}}}},oc=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:o,y:n,placement:r,platform:i}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:d={fn:b=>{let{x:T,y}=b;return{x:T,y}}},...l}=tt(e,t),c={x:o,y:n},u=await i.detectOverflow(t,l),m=Me(_e(r)),p=Cn(m),f=c[p],h=c[m];if(s){let b=p==="y"?"top":"left",T=p==="y"?"bottom":"right",y=f+u[b],_=f-u[T];f=zo(y,f,_)}if(a){let b=m==="y"?"top":"left",T=m==="y"?"bottom":"right",y=h+u[b],_=h-u[T];h=zo(y,h,_)}let v=d.fn({...t,[p]:f,[m]:h});return{...v,data:{x:v.x-o,y:v.y-n,enabled:{[p]:s,[m]:a}}}}}},nc=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:o,y:n,placement:r,rects:i,middlewareData:s}=t,{offset:a=0,mainAxis:d=!0,crossAxis:l=!0}=tt(e,t),c={x:o,y:n},u=Me(r),m=Cn(u),p=c[m],f=c[u],h=tt(a,t),v=typeof h=="number"?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(d){let y=m==="y"?"height":"width",_=i.reference[m]-i.floating[y]+v.mainAxis,w=i.reference[m]+i.reference[y]-v.mainAxis;p<_?p=_:p>w&&(p=w)}if(l){var b,T;let y=m==="y"?"width":"height",_=ec.has(_e(r)),w=i.reference[u]-i.floating[y]+(_&&((b=s.offset)==null?void 0:b[u])||0)+(_?0:v.crossAxis),R=i.reference[u]+i.reference[y]+(_?0:((T=s.offset)==null?void 0:T[u])||0)-(_?v.crossAxis:0);f<w?f=w:f>R&&(f=R)}return{[m]:p,[u]:f}}}},rc=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var o,n;let{placement:r,rects:i,platform:s,elements:a}=t,{apply:d=()=>{},...l}=tt(e,t),c=await s.detectOverflow(t,l),u=_e(r),m=ot(r),p=Me(r)==="y",{width:f,height:h}=i.floating,v,b;u==="top"||u==="bottom"?(v=u,b=m===(await(s.isRTL==null?void 0:s.isRTL(a.floating))?"start":"end")?"left":"right"):(b=u,v=m==="end"?"top":"bottom");let T=h-c.top-c.bottom,y=f-c.left-c.right,_=Et(h-c[v],T),w=Et(f-c[b],y),R=!t.middlewareData.shift,E=_,x=w;if((o=t.middlewareData.shift)!=null&&o.enabled.x&&(x=y),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(E=T),R&&!m){let O=Oe(c.left,0),B=Oe(c.right,0),z=Oe(c.top,0),N=Oe(c.bottom,0);p?x=f-2*(O!==0||B!==0?O+B:Oe(c.left,c.right)):E=h-2*(z!==0||N!==0?z+N:Oe(c.top,c.bottom))}await d({...t,availableWidth:x,availableHeight:E});let k=await s.getDimensions(a.floating);return f!==k.width||h!==k.height?{reset:{rects:!0}}:{}}}};function cc(e){let t=Se(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=ue(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n,a=Tt(o)!==i||Tt(n)!==s;return a&&(o=i,n=s),{width:o,height:n,$:a}}function Ur(e){return W(e)?e:e.contextElement}function go(e){let t=Ur(e);if(!ue(t))return et(1);let o=t.getBoundingClientRect(),{width:n,height:r,$:i}=cc(t),s=(i?Tt(o.width):o.width)/n,a=(i?Tt(o.height):o.height)/r;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var Bp=et(0);function lc(e){let t=ce(e);return!uo()||!t.visualViewport?Bp:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Hp(e,t,o){return t===void 0&&(t=!1),!o||t&&o!==ce(e)?!1:t}function Gt(e,t,o,n){t===void 0&&(t=!1),o===void 0&&(o=!1);let r=e.getBoundingClientRect(),i=Ur(e),s=et(1);t&&(n?W(n)&&(s=go(n)):s=go(e));let a=Hp(i,o,n)?lc(i):et(0),d=(r.left+a.x)/s.x,l=(r.top+a.y)/s.y,c=r.width/s.x,u=r.height/s.y;if(i){let m=ce(i),p=n&&W(n)?ce(n):n,f=m,h=Rn(f);for(;h&&n&&p!==f;){let v=go(h),b=h.getBoundingClientRect(),T=Se(h),y=b.left+(h.clientLeft+parseFloat(T.paddingLeft))*v.x,_=b.top+(h.clientTop+parseFloat(T.paddingTop))*v.y;d*=v.x,l*=v.y,c*=v.x,u*=v.y,d+=y,l+=_,f=ce(h),h=Rn(f)}}return Wt({width:c,height:u,x:d,y:l})}function Nn(e,t){let o=Mo(e).scrollLeft;return t?t.left+o:Gt(Je(e)).left+o}function dc(e,t){let o=e.getBoundingClientRect(),n=o.left+t.scrollLeft-Nn(e,o),r=o.top+t.scrollTop;return{x:n,y:r}}function zp(e){let{elements:t,rect:o,offsetParent:n,strategy:r}=e,i=r==="fixed",s=Je(n),a=t?Io(t.floating):!1;if(n===s||a&&i)return o;let d={scrollLeft:0,scrollTop:0},l=et(1),c=et(0),u=ue(n);if((u||!u&&!i)&&((jt(n)!=="body"||lo(s))&&(d=Mo(n)),u)){let p=Gt(n);l=go(n),c.x=p.x+n.clientLeft,c.y=p.y+n.clientTop}let m=s&&!u&&!i?dc(s,d):et(0);return{width:o.width*l.x,height:o.height*l.y,x:o.x*l.x-d.scrollLeft*l.x+c.x+m.x,y:o.y*l.y-d.scrollTop*l.y+c.y+m.y}}function Dp(e){return Array.from(e.getClientRects())}function jp(e){let t=Je(e),o=Mo(e),n=e.ownerDocument.body,r=Oe(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),i=Oe(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight),s=-o.scrollLeft+Nn(e),a=-o.scrollTop;return Se(n).direction==="rtl"&&(s+=Oe(t.clientWidth,n.clientWidth)-r),{width:r,height:i,x:s,y:a}}var ic=25;function Fp(e,t){let o=ce(e),n=Je(e),r=o.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,d=0;if(r){i=r.width,s=r.height;let c=uo();(!c||c&&t==="fixed")&&(a=r.offsetLeft,d=r.offsetTop)}let l=Nn(n);if(l<=0){let c=n.ownerDocument,u=c.body,m=getComputedStyle(u),p=c.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,f=Math.abs(n.clientWidth-u.clientWidth-p);f<=ic&&(i-=f)}else l<=ic&&(i+=l);return{width:i,height:s,x:a,y:d}}function Vp(e,t){let o=Gt(e,!0,t==="fixed"),n=o.top+e.clientTop,r=o.left+e.clientLeft,i=ue(e)?go(e):et(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,d=r*i.x,l=n*i.y;return{width:s,height:a,x:d,y:l}}function sc(e,t,o){let n;if(t==="viewport")n=Fp(e,o);else if(t==="document")n=jp(Je(e));else if(W(t))n=Vp(t,o);else{let r=lc(e);n={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return Wt(n)}function uc(e,t){let o=Ze(e);return o===t||!W(o)||Qe(o)?!1:Se(o).position==="fixed"||uc(o,t)}function Wp(e,t){let o=t.get(e);if(o)return o;let n=Rt(e,[],!1).filter(a=>W(a)&&jt(a)!=="body"),r=null,i=Se(e).position==="fixed",s=i?Ze(e):e;for(;W(s)&&!Qe(s);){let a=Se(s),d=xn(s);!d&&a.position==="fixed"&&(r=null),(i?!d&&!r:!d&&a.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||lo(s)&&!d&&uc(e,s))?n=n.filter(c=>c!==s):r=a,s=Ze(s)}return t.set(e,n),n}function Yp(e){let{element:t,boundary:o,rootBoundary:n,strategy:r}=e,s=[...o==="clippingAncestors"?Io(t)?[]:Wp(t,this._c):[].concat(o),n],a=sc(t,s[0],r),d=a.top,l=a.right,c=a.bottom,u=a.left;for(let m=1;m<s.length;m++){let p=sc(t,s[m],r);d=Oe(p.top,d),l=Et(p.right,l),c=Et(p.bottom,c),u=Oe(p.left,u)}return{width:l-u,height:c-d,x:u,y:d}}function Up(e){let{width:t,height:o}=cc(e);return{width:t,height:o}}function Gp(e,t,o){let n=ue(t),r=Je(t),i=o==="fixed",s=Gt(e,!0,i,t),a={scrollLeft:0,scrollTop:0},d=et(0);function l(){d.x=Nn(r)}if(n||!n&&!i)if((jt(t)!=="body"||lo(r))&&(a=Mo(t)),n){let p=Gt(t,!0,i,t);d.x=p.x+t.clientLeft,d.y=p.y+t.clientTop}else r&&l();i&&!n&&r&&l();let c=r&&!n&&!i?dc(r,a):et(0),u=s.left+a.scrollLeft-d.x-c.x,m=s.top+a.scrollTop-d.y-c.y;return{x:u,y:m,width:s.width,height:s.height}}function Yr(e){return Se(e).position==="static"}function ac(e,t){if(!ue(e)||Se(e).position==="fixed")return null;if(t)return t(e);let o=e.offsetParent;return Je(e)===o&&(o=o.ownerDocument.body),o}function fc(e,t){let o=ce(e);if(Io(e))return o;if(!ue(e)){let r=Ze(e);for(;r&&!Qe(r);){if(W(r)&&!Yr(r))return r;r=Ze(r)}return o}let n=ac(e,t);for(;n&&ma(n)&&Yr(n);)n=ac(n,t);return n&&Qe(n)&&Yr(n)&&!xn(n)?o:n||ga(e)||o}var Xp=async function(e){let t=this.getOffsetParent||fc,o=this.getDimensions,n=await o(e.floating);return{reference:Gp(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function Kp(e){return Se(e).direction==="rtl"}var Gr={convertOffsetParentRelativeRectToViewportRelativeRect:zp,getDocumentElement:Je,getClippingRect:Yp,getOffsetParent:fc,getElementRects:Xp,getClientRects:Dp,getDimensions:Up,getScale:go,isElement:W,isRTL:Kp};function pc(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function qp(e,t){let o=null,n,r=Je(e);function i(){var a;clearTimeout(n),(a=o)==null||a.disconnect(),o=null}function s(a,d){a===void 0&&(a=!1),d===void 0&&(d=1),i();let l=e.getBoundingClientRect(),{left:c,top:u,width:m,height:p}=l;if(a||t(),!m||!p)return;let f=Ho(u),h=Ho(r.clientWidth-(c+m)),v=Ho(r.clientHeight-(u+p)),b=Ho(c),y={rootMargin:-f+"px "+-h+"px "+-v+"px "+-b+"px",threshold:Oe(0,Et(1,d))||1},_=!0;function w(R){let E=R[0].intersectionRatio;if(E!==d){if(!_)return s();E?s(!1,E):n=setTimeout(()=>{s(!1,1e-7)},1e3)}E===1&&!pc(l,e.getBoundingClientRect())&&s(),_=!1}try{o=new IntersectionObserver(w,{...y,root:r.ownerDocument})}catch{o=new IntersectionObserver(w,y)}o.observe(e)}return s(!0),i}function Vo(e,t,o,n){n===void 0&&(n={});let{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:d=!1}=n,l=Ur(e),c=r||i?[...l?Rt(l):[],...t?Rt(t):[]]:[];c.forEach(b=>{r&&b.addEventListener("scroll",o,{passive:!0}),i&&b.addEventListener("resize",o)});let u=l&&a?qp(l,o):null,m=-1,p=null;s&&(p=new ResizeObserver(b=>{let[T]=b;T&&T.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var y;(y=p)==null||y.observe(t)})),o()}),l&&!d&&p.observe(l),t&&p.observe(t));let f,h=d?Gt(e):null;d&&v();function v(){let b=Gt(e);h&&!pc(h,b)&&o(),h=b,f=requestAnimationFrame(v)}return o(),()=>{var b;c.forEach(T=>{r&&T.removeEventListener("scroll",o),i&&T.removeEventListener("resize",o)}),u?.(),(b=p)==null||b.disconnect(),p=null,d&&cancelAnimationFrame(f)}}var mc=tc;var gc=oc,bc=Qa,hc=rc,wc=$a;var vc=nc,Ln=(e,t,o)=>{let n=new Map,r={platform:Gr,...o},i={...r.platform,_c:n};return Ja(e,t,{...r,platform:i})};var fe=g(H(),1),yc=g(H(),1),xc=g(xt(),1),Jp=typeof document<"u",Qp=function(){},In=Jp?yc.useLayoutEffect:Qp;function Mn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let o,n,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(o=e.length,o!==t.length)return!1;for(n=o;n--!==0;)if(!Mn(e[n],t[n]))return!1;return!0}if(r=Object.keys(e),o=r.length,o!==Object.keys(t).length)return!1;for(n=o;n--!==0;)if(!{}.hasOwnProperty.call(t,r[n]))return!1;for(n=o;n--!==0;){let i=r[n];if(!(i==="_owner"&&e.$$typeof)&&!Mn(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Rc(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function _c(e,t){let o=Rc(e);return Math.round(t*o)/o}function Xr(e){let t=fe.useRef(e);return In(()=>{t.current=e}),t}function Sc(e){e===void 0&&(e={});let{placement:t="bottom",strategy:o="absolute",middleware:n=[],platform:r,elements:{reference:i,floating:s}={},transform:a=!0,whileElementsMounted:d,open:l}=e,[c,u]=fe.useState({x:0,y:0,strategy:o,placement:t,middlewareData:{},isPositioned:!1}),[m,p]=fe.useState(n);Mn(m,n)||p(n);let[f,h]=fe.useState(null),[v,b]=fe.useState(null),T=fe.useCallback(P=>{P!==R.current&&(R.current=P,h(P))},[]),y=fe.useCallback(P=>{P!==E.current&&(E.current=P,b(P))},[]),_=i||f,w=s||v,R=fe.useRef(null),E=fe.useRef(null),x=fe.useRef(c),k=d!=null,O=Xr(d),B=Xr(r),z=Xr(l),N=fe.useCallback(()=>{if(!R.current||!E.current)return;let P={placement:t,strategy:o,middleware:m};B.current&&(P.platform=B.current),Ln(R.current,E.current,P).then(A=>{let F={...A,isPositioned:z.current!==!1};C.current&&!Mn(x.current,F)&&(x.current=F,xc.flushSync(()=>{u(F)}))})},[m,t,o,B,z]);In(()=>{l===!1&&x.current.isPositioned&&(x.current.isPositioned=!1,u(P=>({...P,isPositioned:!1})))},[l]);let C=fe.useRef(!1);In(()=>(C.current=!0,()=>{C.current=!1}),[]),In(()=>{if(_&&(R.current=_),w&&(E.current=w),_&&w){if(O.current)return O.current(_,w,N);N()}},[_,w,N,O,k]);let S=fe.useMemo(()=>({reference:R,floating:E,setReference:T,setFloating:y}),[T,y]),L=fe.useMemo(()=>({reference:_,floating:w}),[_,w]),M=fe.useMemo(()=>{let P={position:o,left:0,top:0};if(!L.floating)return P;let A=_c(L.floating,c.x),F=_c(L.floating,c.y);return a?{...P,transform:"translate("+A+"px, "+F+"px)",...Rc(L.floating)>=1.5&&{willChange:"transform"}}:{position:o,left:A,top:F}},[o,a,L.floating,c.x,c.y]);return fe.useMemo(()=>({...c,update:N,refs:S,elements:L,floatingStyles:M}),[c,N,S,L,M])}var Kr=(e,t)=>{let o=mc(e);return{name:o.name,fn:o.fn,options:[e,t]}},qr=(e,t)=>{let o=gc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Zr=(e,t)=>({fn:vc(e).fn,options:[e,t]}),Jr=(e,t)=>{let o=bc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Qr=(e,t)=>{let o=hc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var $r=(e,t)=>{let o=wc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var Z=(e,t,o,n,r,i,...s)=>{if(s.length>0)throw new Error(xe(1));let a;if(e&&t&&o&&n&&r&&i)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u),h=n(d,l,c,u),v=r(d,l,c,u);return i(m,p,f,h,v,l,c,u)};else if(e&&t&&o&&n&&r)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u),h=n(d,l,c,u);return r(m,p,f,h,l,c,u)};else if(e&&t&&o&&n)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u);return n(m,p,f,l,c,u)};else if(e&&t&&o)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u);return o(m,p,l,c,u)};else if(e&&t)a=(d,l,c,u)=>{let m=e(d,l,c,u);return t(m,l,c,u)};else if(e)a=e;else throw new Error("Missing arguments");return a};var Bc=g(H(),1),ii=g(ti(),1),Hc=g(Oc(),1);var Nc=g(H(),1);var oi=[],ni;function Lc(){return ni}function Ic(e){oi.push(e)}function ri(e){let t=(o,n)=>{let r=de(bm).current,i;try{ni=r;for(let s of oi)s.before(r);i=e(o,n);for(let s of oi)s.after(r);r.didInitialize=!0}finally{ni=void 0}return i};return t.displayName=e.displayName||e.name,t}function Mc(e){return Nc.forwardRef(ri(e))}function bm(){return{didInitialize:!1}}var hm=ro(19),wm=hm?_m:ym;function Hn(e,t,o,n,r){return wm(e,t,o,n,r)}function vm(e,t,o,n,r){let i=Bc.useCallback(()=>t(e.getSnapshot(),o,n,r),[e,t,o,n,r]);return(0,ii.useSyncExternalStore)(e.subscribe,i,i)}Ic({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let o=0;o<e.syncHooks.length;o+=1){let n=e.syncHooks[o],r=n.selector(n.store.state,n.a1,n.a2,n.a3);(n.didChange||!Object.is(n.value,r))&&(t=!0,n.value=r,n.didChange=!1)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let o=new Set;for(let r of e.syncHooks)o.add(r.store);let n=[];for(let r of o)n.push(r.subscribe(t));return()=>{for(let r of n)r()}}),(0,ii.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function _m(e,t,o,n,r){let i=Lc();if(!i)return vm(e,t,o,n,r);let s=i.syncIndex;i.syncIndex+=1;let a;return i.didInitialize?(a=i.syncHooks[s],(a.store!==e||a.selector!==t||!Object.is(a.a1,o)||!Object.is(a.a2,n)||!Object.is(a.a3,r))&&(a.store!==e&&(i.didChangeStore=!0),a.store=e,a.selector=t,a.a1=o,a.a2=n,a.a3=r,a.didChange=!0)):(a={store:e,selector:t,a1:o,a2:n,a3:r,value:t(e.getSnapshot(),o,n,r),didChange:!1},i.syncHooks.push(a)),a.value}function ym(e,t,o,n,r){return(0,Hc.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,i=>t(i,o,n,r))}var zn=class{constructor(t){this.state=t,this.listeners=new Set,this.updateTick=0}subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});getSnapshot=()=>this.state;setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;let o=this.updateTick;for(let n of this.listeners){if(o!==this.updateTick)return;n(t)}}update(t){for(let o in t)if(!Object.is(this.state[o],t[o])){this.setState({...this.state,...t});return}}set(t,o){Object.is(this.state[t],o)||this.setState({...this.state,[t]:o})}notifyAll(){let t={...this.state};this.setState(t)}use(t,o,n,r){return Hn(this,t,o,n,r)}};var Xt=g(H(),1);var ho=class extends zn{constructor(t,o={},n){super(t),this.context=o,this.selectors=n}useSyncedValue(t,o){Xt.useDebugValue(t),j(()=>{this.state[t]!==o&&this.set(t,o)},[t,o])}useSyncedValueWithCleanup(t,o){let n=this;j(()=>(n.state[t]!==o&&n.set(t,o),()=>{n.set(t,void 0)}),[n,t,o])}useSyncedValues(t){let o=this,n=Object.values(t);j(()=>{o.update(t)},[o,...n])}useControlledProp(t,o){Xt.useDebugValue(t);let n=o!==void 0;j(()=>{n&&!Object.is(this.state[t],o)&&super.setState({...this.state,[t]:o})},[t,o,n])}select(t,o,n,r){let i=this.selectors[t];return i(this.state,o,n,r)}useState(t,o,n,r){return Xt.useDebugValue(t),Hn(this,this.selectors[t],o,n,r)}useContextCallback(t,o){Xt.useDebugValue(t);let n=V(o??mt);this.context[t]=n}useStateSetter(t){let o=Xt.useRef(void 0);return o.current===void 0&&(o.current=n=>{this.set(t,n)}),o.current}observe(t,o){let n;typeof t=="function"?n=t:n=this.selectors[t];let r=n(this.state);return o(r,r,this),this.subscribe(i=>{let s=n(i);if(!Object.is(r,s)){let a=r;r=s,o(s,a,this)}})}};var xm={open:Z(e=>e.open),transitionStatus:Z(e=>e.transitionStatus),domReferenceElement:Z(e=>e.domReferenceElement),referenceElement:Z(e=>e.positionReference??e.referenceElement),floatingElement:Z(e=>e.floatingElement),floatingId:Z(e=>e.floatingId)},Ct=class extends ho{constructor(t){let{syncOnly:o,nested:n,onOpenChange:r,triggerElements:i,...s}=t;super({...s,positionReference:s.referenceElement,domReferenceElement:s.referenceElement},{onOpenChange:r,dataRef:{current:{}},events:Ua(),nested:n,triggerElements:i},xm),this.syncOnly=o}syncOpenEvent=(t,o)=>{(!t||!this.state.open||o!=null&&Aa(o))&&(this.context.dataRef.current.openEvent=t?o:void 0)};dispatchOpenChange=(t,o)=>{this.syncOpenEvent(t,o.event);let n={open:t,reason:o.reason,nativeEvent:o.event,nested:this.context.nested,triggerElement:o.trigger};this.context.events.emit("openchange",n)};setOpen=(t,o)=>{if(this.syncOnly){this.context.onOpenChange?.(t,o);return}this.dispatchOpenChange(t,o),this.context.onOpenChange?.(t,o)}};var Wo=g(H(),1);function Rm(e,t){let o=Wo.useRef(null),n=Wo.useRef(null);return Wo.useCallback(r=>{if(e!==void 0){if(o.current!==null){let i=o.current,s=n.current,a=t.context.triggerElements.getById(i);s&&a===s&&t.context.triggerElements.delete(i),o.current=null,n.current=null}r!==null&&(o.current=e,n.current=r,t.context.triggerElements.add(e,r))}},[t,e])}function zc(e,t,o,n){let r=o.useState("isMountedByTrigger",e),i=Rm(e,o),s=V(a=>{if(i(a),!a||!o.select("open"))return;let d=o.select("activeTriggerId");if(d===e){o.update({activeTriggerElement:a,...n});return}d==null&&o.update({activeTriggerId:e,activeTriggerElement:a,...n})});return j(()=>{r&&o.update({activeTriggerElement:t.current,...n})},[r,o,t,...Object.values(n)]),{registerTrigger:s,isMountedByThisTrigger:r}}function Dc(e){let t=e.useState("open");j(()=>{if(t&&!e.select("activeTriggerId")&&e.context.triggerElements.size===1){let o=e.context.triggerElements.entries().next();if(!o.done){let[n,r]=o.value;e.update({activeTriggerId:n,activeTriggerElement:r})}}},[t,e])}function jc(e,t,o){let{mounted:n,setMounted:r,transitionStatus:i}=pa(e);t.useSyncedValues({mounted:n,transitionStatus:i});let s=V(()=>{r(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1}),o?.(),t.context.onOpenChangeComplete?.(!1)}),a=t.useState("preventUnmountingOnClose");return kn({enabled:!a,open:e,ref:t.context.popupRef,onComplete(){e||s()}}),{forceUnmount:s,transitionStatus:i}}var At=class{constructor(){this.elementsSet=new Set,this.idMap=new Map}add(t,o){let n=this.idMap.get(t);n!==o&&(n!==void 0&&this.elementsSet.delete(n),this.elementsSet.add(o),this.idMap.set(t,o))}delete(t){let o=this.idMap.get(t);o&&(this.elementsSet.delete(o),this.idMap.delete(t))}hasElement(t){return this.elementsSet.has(t)}hasMatchingElement(t){for(let o of this.elementsSet)if(t(o))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}elements(){return this.elementsSet.values()}get size(){return this.idMap.size}};function Fc(){return new Ct({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:new At,floatingId:"",syncOnly:!1,nested:!1,onOpenChange:void 0})}function Vc(){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:Fc(),preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:ge,inactiveTriggerProps:ge,popupProps:ge}}var Dn=Z(e=>e.triggerIdProp??e.activeTriggerId),Wc={open:Z(e=>e.openProp??e.open),mounted:Z(e=>e.mounted),transitionStatus:Z(e=>e.transitionStatus),floatingRootContext:Z(e=>e.floatingRootContext),preventUnmountingOnClose:Z(e=>e.preventUnmountingOnClose),payload:Z(e=>e.payload),activeTriggerId:Dn,activeTriggerElement:Z(e=>e.mounted?e.activeTriggerElement:null),isTriggerActive:Z((e,t)=>t!==void 0&&Dn(e)===t),isOpenedByTrigger:Z((e,t)=>t!==void 0&&Dn(e)===t&&e.open),isMountedByTrigger:Z((e,t)=>t!==void 0&&Dn(e)===t&&e.mounted),triggerProps:Z((e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps),popupProps:Z(e=>e.popupProps),popupElement:Z(e=>e.popupElement),positionerElement:Z(e=>e.positionerElement)};function Yc(e){let{open:t=!1,onOpenChange:o,elements:n={}}=e,r=yt(),i=mo()!=null,s=de(()=>new Ct({open:t,transitionStatus:void 0,onOpenChange:o,referenceElement:n.reference??null,floatingElement:n.floating??null,triggerElements:new At,floatingId:r,syncOnly:!1,nested:i})).current;return j(()=>{let a={open:t,floatingId:r};n.reference!==void 0&&(a.referenceElement=n.reference,a.domReferenceElement=W(n.reference)?n.reference:null),n.floating!==void 0&&(a.floatingElement=n.floating),s.update(a)},[t,r,n.reference,n.floating,s]),s.context.onOpenChange=o,s.context.nested=i,s}function si(e={}){let{nodeId:t,externalTree:o}=e,n=Yc(e),r=e.rootContext||n,i={reference:r.useState("referenceElement"),floating:r.useState("floatingElement"),domReference:r.useState("domReferenceElement")},[s,a]=Le.useState(null),d=Le.useRef(null),l=Pt(o);j(()=>{i.domReference&&(d.current=i.domReference)},[i.domReference]);let c=Sc({...e,elements:{...i,...s&&{reference:s}}}),u=Le.useCallback(x=>{let k=W(x)?{getBoundingClientRect:()=>x.getBoundingClientRect(),getClientRects:()=>x.getClientRects(),contextElement:x}:x;a(k),c.refs.setReference(k)},[c.refs]),[m,p]=Le.useState(void 0),[f,h]=Le.useState(null);r.useSyncedValue("referenceElement",m??null);let v=W(m)?m:null;r.useSyncedValue("domReferenceElement",m===void 0?i.domReference:v),r.useSyncedValue("floatingElement",f);let b=Le.useCallback(x=>{(W(x)||x===null)&&(d.current=x,p(x)),(W(c.refs.reference.current)||c.refs.reference.current===null||x!==null&&!W(x))&&c.refs.setReference(x)},[c.refs,p]),T=Le.useCallback(x=>{h(x),c.refs.setFloating(x)},[c.refs]),y=Le.useMemo(()=>({...c.refs,setReference:b,setFloating:T,setPositionReference:u,domReference:d}),[c.refs,b,T,u]),_=Le.useMemo(()=>({...c.elements,domReference:i.domReference}),[c.elements,i.domReference]),w=r.useState("open"),R=r.useState("floatingId"),E=Le.useMemo(()=>({...c,dataRef:r.context.dataRef,open:w,onOpenChange:r.setOpen,events:r.context.events,floatingId:R,refs:y,elements:_,nodeId:t,rootStore:r}),[c,y,_,t,r,w,R]);return j(()=>{r.context.dataRef.current.floatingContext=E;let x=l?.nodesRef.current.find(k=>k.id===t);x&&(x.context=E)}),Le.useMemo(()=>({...c,context:E,refs:y,elements:_,rootStore:r}),[c,y,_,E,r])}function ai(e){let{popupStore:t,treatPopupAsFloatingElement:o=!1,onOpenChange:n}=e,r=yt(),i=mo()!=null,s=t.useState("open"),a=t.useState("activeTriggerElement"),d=t.useState(o?"popupElement":"positionerElement"),l=t.context.triggerElements,c=de(()=>new Ct({open:s,transitionStatus:void 0,referenceElement:a,floatingElement:d,triggerElements:l,onOpenChange:n,floatingId:r,syncOnly:!0,nested:i})).current;return j(()=>{let u={open:s,floatingId:r,referenceElement:a,floatingElement:d};W(a)&&(u.domReferenceElement=a),c.state.positionReference===c.state.referenceElement&&(u.positionReference=a),c.update(u)},[s,r,a,d,c]),c.context.onOpenChange=n,c.context.nested=i,c}var at=g(H(),1);var ci=Ra&&xa;function li(e,t={}){let o="rootStore"in e?e.rootStore:e,{events:n,dataRef:r}=o.context,{enabled:i=!0,delay:s}=t,a=at.useRef(!1),d=at.useRef(null),l=gt(),c=at.useRef(!0);at.useEffect(()=>{let m=o.select("domReferenceElement");if(!i)return;let p=ce(m);function f(){let b=o.select("domReferenceElement");!o.select("open")&&ue(b)&&b===Tn(be(b))&&(a.current=!0)}function h(){c.current=!0}function v(){c.current=!1}return nt(Q(p,"blur",f),ci&&Q(p,"keydown",h,!0),ci&&Q(p,"pointerdown",v,!0))},[o,i]),at.useEffect(()=>{if(!i)return;function m(p){if(p.reason===G.triggerPress||p.reason===G.escapeKey){let f=o.select("domReferenceElement");W(f)&&(d.current=f,a.current=!0)}}return n.on("openchange",m),()=>{n.off("openchange",m)}},[n,i,o]);let u=at.useMemo(()=>({onMouseLeave(){a.current=!1,d.current=null},onFocus(m){let p=m.currentTarget;if(a.current){if(d.current===p)return;a.current=!1,d.current=null}let f=ke(m.nativeEvent);if(W(f)){if(ci&&!m.relatedTarget){if(!c.current&&!Ta(f))return}else if(!Pa(f))return}let h=Ft(m.relatedTarget,o.context.triggerElements),{nativeEvent:v,currentTarget:b}=m,T=typeof s=="function"?s():s;if(o.select("open")&&h||T===0||T===void 0){o.setOpen(!0,ee(G.triggerFocus,v,b));return}l.start(T,()=>{a.current||o.setOpen(!0,ee(G.triggerFocus,v,b))})},onBlur(m){a.current=!1,d.current=null;let p=m.relatedTarget,f=m.nativeEvent,h=W(p)&&p.hasAttribute(po("focus-guard"))&&p.getAttribute("data-type")==="outside";l.start(0,()=>{let v=o.select("domReferenceElement"),b=Tn(be(v));!p&&b===v||ne(r.current.floatingContext?.refs.floating.current,b)||ne(v,b)||h||Ft(p??b,o.context.triggerElements)||o.setOpen(!1,ee(G.triggerFocus,f))})}}),[r,o,l,s]);return at.useMemo(()=>i?{reference:u,trigger:u}:{},[i,u])}var Yo=g(H(),1);var di=class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new De,this.restTimeout=new De,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose},jn=new WeakMap;function wo(e){if(!e.performedPointerEventsMutation)return;let t=e.pointerEventsScopeElement;t&&jn.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),jn.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function Fn(e,t){let{scopeElement:o,referenceElement:n,floatingElement:r}=t,i=jn.get(o);i&&i!==e&&wo(i),wo(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=o,e.pointerEventsReferenceElement=n,e.pointerEventsFloatingElement=r,jn.set(o,e),o.style.pointerEvents="none",n.style.pointerEvents="auto",r.style.pointerEvents="auto"}function Vn(e){let t=de(di.create).current,o=e.context.dataRef.current;return o.hoverInteractionState||(o.hoverInteractionState=t),io(o.hoverInteractionState.disposeEffect),o.hoverInteractionState}function ui(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),i=o.useState("domReferenceElement"),{dataRef:s}=o.context,{enabled:a=!0,closeDelay:d=0,nodeId:l}=t,c=Vn(o),u=Pt(),m=mo(),p=V(()=>On(s.current.openEvent?.type,c.interactedInside)),f=V(()=>{let _=s.current.openEvent?.type;return _?.includes("mouse")&&_!=="mousedown"}),h=V(_=>Ft(_,o.context.triggerElements)),v=Yo.useCallback(_=>{let w=Yt(d,"close",c.pointerType),R=()=>{o.setOpen(!1,ee(G.triggerHover,_)),u?.events.emit("floating.closed",_)};w?c.openChangeTimeout.start(w,R):(c.openChangeTimeout.clear(),R())},[d,o,c,u]),b=V(()=>{wo(c)}),T=V(_=>{let w=ke(_);if(!Hr(w)){c.interactedInside=!1;return}c.interactedInside=w?.closest("[aria-haspopup]")!=null});j(()=>{n||(c.pointerType=void 0,c.restTimeoutPending=!1,c.interactedInside=!1,b())},[n,c,b]),Yo.useEffect(()=>b,[b]),j(()=>{if(a&&n&&c.handleCloseOptions?.blockPointerEvents&&f()&&W(i)&&r){let _=i,w=r,R=be(r),E=u?.nodesRef.current.find(k=>k.id===m)?.context?.elements.floating;E&&(E.style.pointerEvents="");let x=c.handleCloseOptions?.getScope?.()??c.pointerEventsScopeElement??E??_.closest("[data-rootownerid]")??R.body;return Fn(c,{scopeElement:x,referenceElement:_,floatingElement:w}),()=>{b()}}},[a,n,i,r,c,f,u,m,b]);let y=gt();Yo.useEffect(()=>{if(!a)return;function _(){c.openChangeTimeout.clear(),y.clear(),u?.events.off("floating.closed",R),b()}function w(x){if(u&&m&&$e(u.nodesRef.current,m).length>0){u.events.on("floating.closed",R);return}if(h(x.relatedTarget))return;let k=s.current.floatingContext?.nodeId??l,O=x.relatedTarget;if(!(u&&k&&W(O)&&$e(u.nodesRef.current,k,!1).some(z=>ne(z.context?.elements.floating,O)))){if(c.handler){c.handler(x);return}b(),p()||v(x)}}function R(x){!u||!m||$e(u.nodesRef.current,m).length>0||y.start(0,()=>{u.events.off("floating.closed",R),o.setOpen(!1,ee(G.triggerHover,x)),u.events.emit("floating.closed",x)})}let E=r;return nt(E&&Q(E,"mouseenter",_),E&&Q(E,"mouseleave",w),E&&Q(E,"pointerdown",T,!0),()=>{u?.events.off("floating.closed",R)})},[a,r,o,s,l,p,h,v,b,T,c,u,m,y])}var kt=g(H(),1),Uc=g(xt(),1);var Sm={current:null};function fi(e,t={}){let o="rootStore"in e?e.rootStore:e,{dataRef:n,events:r}=o.context,{enabled:i=!0,delay:s=0,handleClose:a=null,mouseOnly:d=!1,restMs:l=0,move:c=!0,triggerElementRef:u=Sm,externalTree:m,isActiveTrigger:p=!0,getHandleCloseContext:f,isClosing:h}=t,v=Pt(m),b=Vn(o),T=kt.useRef(!1),y=rt(a),_=rt(s),w=rt(l),R=rt(i),E=rt(h);p&&(b.handleCloseOptions=y.current?.__options);let x=V(()=>On(n.current.openEvent?.type,b.interactedInside)),k=V(C=>Ft(C,o.context.triggerElements)),O=V((C,S,L)=>{let M=o.context.triggerElements;if(M.hasElement(S))return!C||!ne(C,S);if(!W(L))return!1;let P=L;return M.hasMatchingElement(A=>ne(A,P))&&(!C||!ne(C,P))}),B=V((C,S=!0)=>{let L=Yt(_.current,"close",b.pointerType);L?b.openChangeTimeout.start(L,()=>{o.setOpen(!1,ee(G.triggerHover,C)),v?.events.emit("floating.closed",C)}):S&&(b.openChangeTimeout.clear(),o.setOpen(!1,ee(G.triggerHover,C)),v?.events.emit("floating.closed",C))}),z=V(()=>{if(!b.handler)return;be(o.select("domReferenceElement")).removeEventListener("mousemove",b.handler),b.handler=void 0}),N=V(()=>{wo(b)});return kt.useEffect(()=>z,[z]),kt.useEffect(()=>{if(!i)return;function C(S){S.open?T.current=!1:(T.current=S.reason===G.triggerHover,z(),b.openChangeTimeout.clear(),b.restTimeout.clear(),b.blockMouseMove=!0,b.restTimeoutPending=!1)}return r.on("openchange",C),()=>{r.off("openchange",C)}},[i,r,b,z]),kt.useEffect(()=>{if(!i)return;let C=u.current??(p?o.select("domReferenceElement"):null);if(!W(C))return;function S(M){if(b.openChangeTimeout.clear(),b.blockMouseMove=!1,d&&!Vt(b.pointerType))return;let P=zr(w.current),A=Yt(_.current,"open",b.pointerType),F=ke(M),Y=M.currentTarget??null,X=o.select("domReferenceElement"),K=Y;if(W(F)&&!o.context.triggerElements.hasElement(F)){for(let Ot of o.context.triggerElements.elements())if(ne(Ot,F)){K=Ot;break}}W(Y)&&W(X)&&!o.context.triggerElements.hasElement(Y)&&ne(Y,X)&&(K=X);let ae=K==null?!1:O(X,K,F),ie=o.select("open"),U=E.current?.()??o.select("transitionStatus")==="ending",re=!ie&&U&&T.current,Te=!ae&&W(K)&&W(X)&&ne(X,K)&&re,he=P>0&&!A,Pe=ae&&(ie||re)||Te,we=!ie||ae;if(Pe){o.setOpen(!0,ee(G.triggerHover,M,K));return}he||(A?b.openChangeTimeout.start(A,()=>{we&&o.setOpen(!0,ee(G.triggerHover,M,K))}):we&&o.setOpen(!0,ee(G.triggerHover,M,K)))}function L(M){if(x()){N();return}z();let P=o.select("domReferenceElement"),A=be(P);b.restTimeout.clear(),b.restTimeoutPending=!1;let F=n.current.floatingContext??f?.();if(k(M.relatedTarget))return;if(y.current&&F){o.select("open")||b.openChangeTimeout.clear();let K=u.current;b.handler=y.current({...F,tree:v,x:M.clientX,y:M.clientY,onClose(){N(),z(),R.current&&!x()&&K===o.select("domReferenceElement")&&B(M,!0)}}),A.addEventListener("mousemove",b.handler),b.handler(M);return}(b.pointerType!=="touch"||!ne(o.select("floatingElement"),M.relatedTarget))&&B(M)}return c?nt(Q(C,"mousemove",S,{once:!0}),Q(C,"mouseenter",S),Q(C,"mouseleave",L)):nt(Q(C,"mouseenter",S),Q(C,"mouseleave",L))},[z,N,n,_,B,o,i,y,b,p,O,x,k,d,c,w,u,v,R,f,E]),kt.useMemo(()=>{if(!i)return;function C(S){b.pointerType=S.pointerType}return{onPointerDown:C,onPointerEnter:C,onMouseMove(S){let{nativeEvent:L}=S,M=S.currentTarget,P=o.select("domReferenceElement"),A=o.select("open"),F=O(P,M,S.target);if(d&&!Vt(b.pointerType))return;if(A&&F&&b.handleCloseOptions?.blockPointerEvents){let K=o.select("floatingElement");if(K){let ae=b.handleCloseOptions?.getScope?.()??M.ownerDocument.body;Fn(b,{scopeElement:ae,referenceElement:M,floatingElement:K})}}let Y=zr(w.current);if(A&&!F||Y===0||!F&&b.restTimeoutPending&&S.movementX**2+S.movementY**2<2)return;b.restTimeout.clear();function X(){if(b.restTimeoutPending=!1,x())return;let K=o.select("open");!b.blockMouseMove&&(!K||F)&&o.setOpen(!0,ee(G.triggerHover,L,M))}b.pointerType==="touch"?Uc.flushSync(()=>{X()}):F&&A?X():(b.restTimeoutPending=!0,b.restTimeout.start(Y,X))}}},[i,b,x,O,d,o,w])}var Kt=g(H(),1);function pi(e=[]){let t=e.map(l=>l?.reference),o=e.map(l=>l?.floating),n=e.map(l=>l?.item),r=e.map(l=>l?.trigger),i=Kt.useCallback(l=>Wn(l,e,"reference"),t),s=Kt.useCallback(l=>Wn(l,e,"floating"),o),a=Kt.useCallback(l=>Wn(l,e,"item"),n),d=Kt.useCallback(l=>Wn(l,e,"trigger"),r);return Kt.useMemo(()=>({getReferenceProps:i,getFloatingProps:s,getItemProps:a,getTriggerProps:d}),[i,s,a,d])}function Wn(e,t,o){let n=new Map,r=o==="item",i={};o==="floating"&&(i.tabIndex=-1,i[Lr]="");for(let s in e)r&&e&&(s===Ir||s===Mr)||(i[s]=e[s]);for(let s=0;s<t.length;s+=1){let a,d=t[s]?.[o];typeof d=="function"?a=e?d(e):null:a=d,a&&Gc(i,a,r,n)}return Gc(i,e,r,n),i}function Gc(e,t,o,n){for(let r in t){let i=t[r];o&&(r===Ir||r===Mr)||(r.startsWith("on")?(n.has(r)||n.set(r,[]),typeof i=="function"&&(n.get(r)?.push(i),e[r]=(...s)=>n.get(r)?.map(a=>a(...s)).find(a=>a!==void 0))):e[r]=i)}}var Xc=.1,Em=Xc*Xc,$=.5;function Yn(e,t,o,n,r,i){return n>=t!=i>=t&&e<=(r-o)*(t-n)/(i-n)+o}function Un(e,t,o,n,r,i,s,a,d,l){let c=!1;return Yn(e,t,o,n,r,i)&&(c=!c),Yn(e,t,r,i,s,a)&&(c=!c),Yn(e,t,s,a,d,l)&&(c=!c),Yn(e,t,d,l,o,n)&&(c=!c),c}function Tm(e,t,o){return e>=o.x&&e<=o.x+o.width&&t>=o.y&&t<=o.y+o.height}function Gn(e,t,o,n,r,i){let s=Math.min(o,r),a=Math.max(o,r),d=Math.min(n,i),l=Math.max(n,i);return e>=s&&e<=a&&t>=d&&t<=l}function mi(e={}){let{blockPointerEvents:t=!1}=e,o=new De,n=({x:r,y:i,placement:s,elements:a,onClose:d,nodeId:l,tree:c})=>{let u=s?.split("-")[0],m=!1,p=null,f=null,h=typeof performance<"u"?performance.now():0;function v(T,y){let _=performance.now(),w=_-h;if(p===null||f===null||w===0)return p=T,f=y,h=_,!1;let R=T-p,E=y-f,x=R*R+E*E,k=w*w*Em;return p=T,f=y,h=_,x<k}function b(){o.clear(),d()}return function(y){o.clear();let _=a.domReference,w=a.floating;if(!_||!w||u==null||r==null||i==null)return;let{clientX:R,clientY:E}=y,x=ke(y),k=y.type==="mouseleave",O=ne(w,x),B=ne(_,x);if(O&&(m=!0,!k))return;if(B&&(m=!1,!k)){m=!0;return}if(k&&W(y.relatedTarget)&&ne(w,y.relatedTarget))return;function z(){return!!(c&&$e(c.nodesRef.current,l).length>0)}function N(){z()||b()}if(z())return;let C=_.getBoundingClientRect(),S=w.getBoundingClientRect(),L=r>S.right-S.width/2,M=i>S.bottom-S.height/2,P=S.width>C.width,A=S.height>C.height,F=(P?C:S).left,Y=(P?C:S).right,X=(A?C:S).top,K=(A?C:S).bottom;if(u==="top"&&i>=C.bottom-1||u==="bottom"&&i<=C.top+1||u==="left"&&r>=C.right-1||u==="right"&&r<=C.left+1){N();return}let ae=!1;switch(u){case"top":ae=Gn(R,E,F,C.top+1,Y,S.bottom-1);break;case"bottom":ae=Gn(R,E,F,S.top+1,Y,C.bottom-1);break;case"left":ae=Gn(R,E,S.right-1,K,C.left+1,X);break;case"right":ae=Gn(R,E,C.right-1,K,S.left+1,X);break;default:}if(ae)return;if(m&&!Tm(R,E,C)){N();return}if(!k&&v(R,E)){N();return}let ie=!1;switch(u){case"top":{let U=P?$/2:$*4,re=P||L?r+U:r-U,Te=P?r-U:L?r+U:r-U,he=i+$+1,Pe=L||P?S.bottom-$:S.top,we=L?P?S.bottom-$:S.top:S.bottom-$;ie=Un(R,E,re,he,Te,he,S.left,Pe,S.right,we);break}case"bottom":{let U=P?$/2:$*4,re=P||L?r+U:r-U,Te=P?r-U:L?r+U:r-U,he=i-$,Pe=L||P?S.top+$:S.bottom,we=L?P?S.top+$:S.bottom:S.top+$;ie=Un(R,E,re,he,Te,he,S.left,Pe,S.right,we);break}case"left":{let U=A?$/2:$*4,re=A||M?i+U:i-U,Te=A?i-U:M?i+U:i-U,he=r+$+1,Pe=M||A?S.right-$:S.left,we=M?A?S.right-$:S.left:S.right-$;ie=Un(R,E,Pe,S.top,we,S.bottom,he,re,he,Te);break}case"right":{let U=A?$/2:$*4,re=A||M?i+U:i-U,Te=A?i-U:M?i+U:i-U,he=r-$,Pe=M||A?S.left+$:S.right,we=M?A?S.left+$:S.right:S.left+$;ie=Un(R,E,he,re,he,Te,Pe,S.top,we,S.bottom);break}default:}ie?m||o.start(40,N):N()}};return n.__options={...e,blockPointerEvents:t},n}var gi=(function(e){return e.open="data-open",e.closed="data-closed",e[e.startingStyle=zt.startingStyle]="startingStyle",e[e.endingStyle=zt.endingStyle]="endingStyle",e.anchorHidden="data-anchor-hidden",e.side="data-side",e.align="data-align",e})({}),Uo=(function(e){return e.popupOpen="data-popup-open",e.pressed="data-pressed",e})({}),Pm={[Uo.popupOpen]:""},Gv={[Uo.popupOpen]:"",[Uo.pressed]:""},Cm={[gi.open]:""},Am={[gi.closed]:""},km={[gi.anchorHidden]:""},Kc={open(e){return e?Pm:null}};var vo={open(e){return e?Cm:Am},anchorHidden(e){return e?km:null}};function qc(e){return ro(19)?e:e?"true":void 0}var Fe=g(H(),1);var Om=e=>({name:"arrow",options:e,async fn(t){let{x:o,y:n,placement:r,rects:i,platform:s,elements:a,middlewareData:d}=t,{element:l,padding:c=0,offsetParent:u="real"}=tt(e,t)||{};if(l==null)return{};let m=An(c),p={x:o,y:n},f=jo(r),h=Do(f),v=await s.getDimensions(l),b=f==="y",T=b?"top":"left",y=b?"bottom":"right",_=b?"clientHeight":"clientWidth",w=i.reference[h]+i.reference[f]-p[f]-i.floating[h],R=p[f]-i.reference[f],E=u==="real"?await s.getOffsetParent?.(l):a.floating,x=a.floating[_]||i.floating[h];(!x||!await s.isElement?.(E))&&(x=a.floating[_]||i.floating[h]);let k=w/2-R/2,O=x/2-v[h]/2-1,B=Math.min(m[T],O),z=Math.min(m[y],O),N=B,C=x-v[h]-z,S=x/2-v[h]/2+k,L=zo(N,S,C),M=!d.arrow&&ot(r)!=null&&S!==L&&i.reference[h]/2-(S<N?B:z)-v[h]/2<0,P=M?S<N?S-N:S-C:0;return{[f]:p[f]+P,data:{[f]:L,centerOffset:S-L-P,...M&&{alignmentOffset:P}},reset:M}}}),Zc=(e,t)=>({...Om(e),options:[e,t]});var Jc={name:"hide",async fn(e){let{width:t,height:o,x:n,y:r}=e.rects.reference,i=t===0&&o===0&&n===0&&r===0;return{data:{referenceHidden:(await $r().fn(e)).data?.referenceHidden||i}}}};var Go={sideX:"left",sideY:"top"},Qc={name:"adaptiveOrigin",async fn(e){let{x:t,y:o,rects:{floating:n},elements:{floating:r},platform:i,strategy:s,placement:a}=e,d=ce(r),l=d.getComputedStyle(r);if(!(l.transitionDuration!=="0s"&&l.transitionDuration!==""))return{x:t,y:o,data:Go};let u=await i.getOffsetParent?.(r),m={width:0,height:0};if(s==="fixed"&&d?.visualViewport)m={width:d.visualViewport.width,height:d.visualViewport.height};else if(u===d){let T=be(r);m={width:T.documentElement.clientWidth,height:T.documentElement.clientHeight}}else await i.isElement?.(u)&&(m=await i.getDimensions(u));let p=_e(a),f=t,h=o;p==="left"&&(f=m.width-(t+n.width)),p==="top"&&(h=m.height-(o+n.height));let v=p==="left"?"right":Go.sideX,b=p==="top"?"bottom":Go.sideY;return{x:f,y:h,data:{sideX:v,sideY:b}}}};function tl(e,t,o){let n=e==="inline-start"||e==="inline-end";return{top:"top",right:n?o?"inline-start":"inline-end":"right",bottom:"bottom",left:n?o?"inline-end":"inline-start":"left"}[t]}function $c(e,t,o){let{rects:n,placement:r}=e;return{side:tl(t,_e(r),o),align:ot(r)||"center",anchor:{width:n.reference.width,height:n.reference.height},positioner:{width:n.floating.width,height:n.floating.height}}}function ol(e){let{anchor:t,positionMethod:o="absolute",side:n="bottom",sideOffset:r=0,align:i="center",alignOffset:s=0,collisionBoundary:a,collisionPadding:d=5,sticky:l=!1,arrowPadding:c=5,disableAnchorTracking:u=!1,keepMounted:m=!1,floatingRootContext:p,mounted:f,collisionAvoidance:h,shiftCrossAxis:v=!1,nodeId:b,adaptiveOrigin:T,lazyFlip:y=!1,externalTree:_}=e,[w,R]=Fe.useState(null);!f&&w!==null&&R(null);let E=h.side||"flip",x=h.align||"flip",k=h.fallbackAxisSide||"end",O=typeof t=="function"?t:void 0,B=V(O),z=O?B:t,N=rt(t),C=rt(f),L=no()==="rtl",M=w||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":L?"left":"right","inline-start":L?"right":"left"}[n],P=i==="center"?M:`${M}-${i}`,A=d,F=1,Y=n==="bottom"?F:0,X=n==="top"?F:0,K=n==="right"?F:0,ae=n==="left"?F:0;typeof A=="number"?A={top:A+Y,right:A+ae,bottom:A+X,left:A+K}:A&&(A={top:(A.top||0)+Y,right:(A.right||0)+ae,bottom:(A.bottom||0)+X,left:(A.left||0)+K});let ie={boundary:a==="clipping-ancestors"?"clippingAncestors":a,padding:A},U=Fe.useRef(null),re=rt(r),Te=rt(s),we=[Kr(te=>{let Ce=$c(te,n,L),We=typeof re.current=="function"?re.current(Ce):re.current,Ie=typeof Te.current=="function"?Te.current(Ce):Te.current;return{mainAxis:We,crossAxis:Ie,alignmentAxis:Ie}},[typeof r!="function"?r:0,typeof s!="function"?s:0,L,n])],Ot=x==="none"&&E!=="shift",Nt=!Ot&&(l||v||E==="shift"),an=E==="none"?null:Jr({...ie,padding:{top:A.top+F,right:A.right+F,bottom:A.bottom+F,left:A.left+F},mainAxis:!v&&E==="flip",crossAxis:x==="flip"?"alignment":!1,fallbackAxisSideDirection:k}),eo=Ot?null:qr(te=>{let Ce=be(te.elements.floating).documentElement;return{...ie,rootBoundary:v?{x:0,y:0,width:Ce.clientWidth,height:Ce.clientHeight}:void 0,mainAxis:x!=="none",crossAxis:Nt,limiter:l||v?void 0:Zr(We=>{if(!U.current)return{};let{width:Ie,height:pt}=U.current.getBoundingClientRect(),qe=Me(_e(We.placement)),Bt=qe==="y"?Ie:pt,oo=qe==="y"?A.left+A.right:A.top+A.bottom;return{offset:Bt/2+oo/2}})}},[ie,l,v,A,x]);E==="shift"||x==="shift"||i==="center"?we.push(eo,an):we.push(an,eo),we.push(Qr({...ie,apply({elements:{floating:te},availableWidth:Ce,availableHeight:We,rects:Ie}){if(!C.current)return;let pt=te.style;pt.setProperty("--available-width",`${Ce}px`),pt.setProperty("--available-height",`${We}px`);let qe=ce(te).devicePixelRatio||1,{x:Bt,y:oo,width:mn,height:mr}=Ie.reference,gr=(Math.round((Bt+mn)*qe)-Math.round(Bt*qe))/qe,br=(Math.round((oo+mr)*qe)-Math.round(oo*qe))/qe;pt.setProperty("--anchor-width",`${gr}px`),pt.setProperty("--anchor-height",`${br}px`)}}),Zc(()=>({element:U.current||be(U.current).createElement("div"),padding:c,offsetParent:"floating"}),[c]),{name:"transformOrigin",fn(te){let{elements:Ce,middlewareData:We,placement:Ie,rects:pt,y:qe}=te,Bt=_e(Ie),oo=Me(Bt),mn=U.current,mr=We.arrow?.x||0,gr=We.arrow?.y||0,br=mn?.clientWidth||0,Gu=mn?.clientHeight||0,hr=mr+br/2,Bs=gr+Gu/2,Xu=Math.abs(We.shift?.y||0),Ku=pt.reference.height/2,ko=typeof r=="function"?r($c(te,n,L)):r,qu=Xu>ko,Zu={top:`${hr}px calc(100% + ${ko}px)`,bottom:`${hr}px ${-ko}px`,left:`calc(100% + ${ko}px) ${Bs}px`,right:`${-ko}px ${Bs}px`}[Bt],Ju=`${hr}px ${pt.reference.y+Ku-qe}px`;return Ce.floating.style.setProperty("--transform-origin",Nt&&oo==="y"&&qu?Ju:Zu),{}}},Jc,T),j(()=>{!f&&p&&p.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[f,p]);let Lt=Fe.useMemo(()=>({elementResize:!u&&typeof ResizeObserver<"u",layoutShift:!u&&typeof IntersectionObserver<"u"}),[u]),{refs:wt,elements:It,x:cn,y:ln,middlewareData:pe,update:to,placement:I,context:D,isPositioned:le,floatingStyles:ye}=si({rootContext:p,open:m?f:void 0,placement:P,middleware:we,strategy:o,whileElementsMounted:m?void 0:(...te)=>Vo(...te,Lt),nodeId:b,externalTree:_}),{sideX:vt,sideY:Co}=pe.adaptiveOrigin||Go,ut=le?o:"fixed",dn=Fe.useMemo(()=>{let te=T?{position:ut,[vt]:cn,[Co]:ln}:{position:ut,...ye};return le||(te.opacity=0),te},[T,ut,vt,cn,Co,ln,ye,le]),Mt=Fe.useRef(null);j(()=>{if(!f)return;let te=N.current,Ce=typeof te=="function"?te():te,Ie=(el(Ce)?Ce.current:Ce)||null||null;Ie!==Mt.current&&(wt.setPositionReference(Ie),Mt.current=Ie)},[f,wt,z,N]),Fe.useEffect(()=>{if(!f)return;let te=N.current;typeof te!="function"&&el(te)&&te.current!==Mt.current&&(wt.setPositionReference(te.current),Mt.current=te.current)},[f,wt,z,N]),Fe.useEffect(()=>{if(m&&f&&It.domReference&&It.floating)return Vo(It.domReference,It.floating,to,Lt)},[m,f,It,to,Lt]);let me=_e(I),ft=tl(n,me,L),Ao=ot(I)||"center",un=!!pe.hide?.referenceHidden;j(()=>{y&&f&&le&&R(me)},[y,f,le,me]);let fn=Fe.useMemo(()=>({position:"absolute",top:pe.arrow?.y,left:pe.arrow?.x}),[pe.arrow]),pn=pe.arrow?.centerOffset!==0;return Fe.useMemo(()=>({positionerStyles:dn,arrowStyles:fn,arrowRef:U,arrowUncentered:pn,side:ft,align:Ao,physicalSide:me,anchorHidden:un,refs:wt,context:D,isPositioned:le,update:to}),[dn,fn,U,pn,ft,Ao,me,un,wt,D,le,to])}function el(e){return e!=null&&"current"in e}function Xn(e){return e==="starting"?Fa:ge}function nl(e,t,{styles:o,transitionStatus:n,props:r,refs:i,hidden:s,inert:a=!1}){let d={...o};return a&&(d.pointerEvents="none"),Re("div",e,{state:t,ref:i,props:[{role:"presentation",hidden:s,style:d},Xn(n),r],stateAttributesMapping:vo})}var rl=g(H(),1);var bi=rl.forwardRef(function(t,o){let{render:n,className:r,disabled:i=!1,focusableWhenDisabled:s=!1,nativeButton:a=!0,style:d,...l}=t,{getButtonProps:c,buttonRef:u}=_a({disabled:i,focusableWhenDisabled:s,native:a});return Re("button",t,{state:{disabled:i},ref:[o,u],props:[l,c]})});var Ee=g(H(),1),dl=g(xt(),1);var il=g(H(),1);function sl(e){let[t,o]=il.useState({current:e,previous:null});return e!==t.current&&o({current:e,previous:t.current}),t.previous}var qt=g(H(),1);function hi(e){let t=Se(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=ue(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n;return(Tt(o)!==i||Tt(n)!==s)&&(o=i,n=s),{width:o,height:n}}var Nm=()=>!0;function cl(e){let{popupElement:t,positionerElement:o,content:n,mounted:r,enabled:i=Nm,onMeasureLayout:s,onMeasureLayoutComplete:a,side:d,direction:l}=e,c=ao(t,!0,!1),u=so(),m=qt.useRef(null),p=qt.useRef(null),f=qt.useRef(!0),h=qt.useRef(mt),v=V(s),b=V(a),T=qt.useMemo(()=>{let y=d==="top",_=d==="left";return l==="rtl"?(y=y||d==="inline-end",_=_||d==="inline-end"):(y=y||d==="inline-start",_=_||d==="inline-start"),y?{position:"absolute",[d==="top"?"bottom":"top"]:"0",[_?"right":"left"]:"0"}:ge},[d,l]);j(()=>{if(!r||!i()||typeof ResizeObserver!="function"){h.current=mt,f.current=!0,m.current=null,p.current=null;return}if(!t||!o)return;h.current=al(t,T);let y=new ResizeObserver(N=>{let C=N[0];C&&(p.current={width:Math.ceil(C.borderBoxSize[0].inlineSize),height:Math.ceil(C.borderBoxSize[0].blockSize)})});y.observe(t),Kn(t,"auto");let _=qn(t,"position","static"),w=qn(t,"transform","none"),R=qn(t,"scale","1"),E=al(o,{"--available-width":"max-content","--available-height":"max-content"});function x(){_(),w(),E()}function k(){x(),R()}if(v?.(),f.current||m.current===null){Xo(o,"max-content");let N=hi(t);return m.current=N,Xo(o,N),k(),b?.(null,N),f.current=!1,()=>{y.disconnect(),h.current(),h.current=mt}}Kn(t,"auto"),Xo(o,"max-content");let O=m.current??p.current,B=hi(t);if(m.current=B,!O)return Xo(o,B),k(),b?.(null,B),()=>{y.disconnect(),u.cancel(),h.current(),h.current=mt};Kn(t,O),k(),b?.(O,B),Xo(o,B);let z=new AbortController;return u.request(()=>{Kn(t,B),c(()=>{t.style.setProperty("--popup-width","auto"),t.style.setProperty("--popup-height","auto")},z.signal)}),()=>{y.disconnect(),z.abort(),u.cancel(),h.current(),h.current=mt}},[n,t,o,c,u,i,r,v,b,T])}function qn(e,t,o){let n=e.style.getPropertyValue(t);return e.style.setProperty(t,o),()=>{e.style.setProperty(t,n)}}function al(e,t){let o=[];for(let[n,r]of Object.entries(t))o.push(qn(e,n,r));return o.length?()=>{o.forEach(n=>n())}:mt}function Kn(e,t){let o=t==="auto"?"auto":`${t.width}px`,n=t==="auto"?"auto":`${t.height}px`;e.style.setProperty("--popup-width",o),e.style.setProperty("--popup-height",n)}function Xo(e,t){let o=t==="max-content"?"max-content":`${t.width}px`,n=t==="max-content"?"max-content":`${t.height}px`;e.style.setProperty("--positioner-width",o),e.style.setProperty("--positioner-height",n)}var _o=g(q(),1);function ul(e){let{store:t,side:o,cssVars:n,children:r}=e,i=no(),s=t.useState("activeTriggerElement"),a=t.useState("activeTriggerId"),d=t.useState("open"),l=t.useState("payload"),c=t.useState("mounted"),u=t.useState("popupElement"),m=t.useState("positionerElement"),p=sl(d?s:null),f=Mm(a,l),h=Ee.useRef(null),[v,b]=Ee.useState(null),[T,y]=Ee.useState(null),_=Ee.useRef(null),w=Ee.useRef(null),R=ao(_,!0,!1),E=so(),[x,k]=Ee.useState(null),[O,B]=Ee.useState(!1);j(()=>(t.set("hasViewport",!0),()=>{t.set("hasViewport",!1)}),[t]);let z=V(()=>{_.current?.style.setProperty("animation","none"),_.current?.style.setProperty("transition","none"),w.current?.style.setProperty("display","none")}),N=V(P=>{_.current?.style.removeProperty("animation"),_.current?.style.removeProperty("transition"),w.current?.style.removeProperty("display"),P&&k(P)}),C=Ee.useRef(null);j(()=>{if(s&&p&&s!==p&&C.current!==s&&h.current){b(h.current),B(!0);let P=Im(p,s);y(P),E.request(()=>{dl.flushSync(()=>{B(!1)}),R(()=>{b(null),k(null),h.current=null})}),C.current=s}},[s,p,v,R,E]),j(()=>{let P=_.current;if(!P)return;let A=be(P).createElement("div");for(let F of Array.from(P.childNodes))A.appendChild(F.cloneNode(!0));h.current=A});let S=v!=null,L;S?L=(0,_o.jsxs)(Ee.Fragment,{children:[(0,_o.jsx)("div",{"data-previous":!0,inert:qc(!0),ref:w,style:{...x?{[n.popupWidth]:`${x.width}px`,[n.popupHeight]:`${x.height}px`}:null,position:"absolute"},"data-ending-style":O?void 0:""},"previous"),(0,_o.jsx)("div",{"data-current":!0,ref:_,"data-starting-style":O?"":void 0,children:r},f)]}):L=(0,_o.jsx)("div",{"data-current":!0,ref:_,children:r},f),j(()=>{let P=w.current;!P||!v||P.replaceChildren(...Array.from(v.childNodes))},[v]),cl({popupElement:u,positionerElement:m,mounted:c,content:l,onMeasureLayout:z,onMeasureLayoutComplete:N,side:o,direction:i});let M={activationDirection:Lm(T),transitioning:S};return{children:L,state:M}}function Lm(e){if(e)return`${ll(e.horizontal,5,"right","left")} ${ll(e.vertical,5,"down","up")}`}function ll(e,t,o,n){return e>t?o:e<-t?n:""}function Im(e,t){let o=e.getBoundingClientRect(),n=t.getBoundingClientRect(),r={x:o.left+o.width/2,y:o.top+o.height/2},i={x:n.left+n.width/2,y:n.top+n.height/2};return{horizontal:i.x-r.x,vertical:i.y-r.y}}function Mm(e,t){let[o,n]=Ee.useState(0),r=Ee.useRef(e),i=Ee.useRef(t),s=Ee.useRef(!1);return j(()=>{let a=r.current,d=i.current,l=e!==a,c=t!==d;l?(n(u=>u+1),s.current=!c):s.current&&c&&(n(u=>u+1),s.current=!1),r.current=e,i.current=t},[e,t]),`${e??"current"}-${o}`}var Zn=g(H(),1),fl=g(xt(),1);var pl=g(q(),1),ml=Zn.forwardRef(function(t,o){let{children:n,container:r,className:i,render:s,style:a,...d}=t,{portalNode:l,portalSubtree:c}=Fr({container:r,ref:o,componentProps:t,elementProps:d});return!c&&!l?null:(0,pl.jsxs)(Zn.Fragment,{children:[c,l&&fl.createPortal(n,l)]})});var ze={};vr(ze,{Arrow:()=>Ol,Handle:()=>Ko,Popup:()=>Al,Portal:()=>El,Positioner:()=>Pl,Provider:()=>Nl,Root:()=>wl,Trigger:()=>xl,Viewport:()=>Ml,createHandle:()=>Bl});var ct=g(H(),1);var Jn=g(H(),1),wi=Jn.createContext(void 0);function Ue(e){let t=Jn.useContext(wi);if(t===void 0&&!e)throw new Error(xe(72));return t}var gl=g(H(),1),bl=g(xt(),1);var Bm={...Wc,disabled:Z(e=>e.disabled),instantType:Z(e=>e.instantType),isInstantPhase:Z(e=>e.isInstantPhase),trackCursorAxis:Z(e=>e.trackCursorAxis),disableHoverablePopup:Z(e=>e.disableHoverablePopup),lastOpenChangeReason:Z(e=>e.openChangeReason),closeOnClick:Z(e=>e.closeOnClick),closeDelay:Z(e=>e.closeDelay),hasViewport:Z(e=>e.hasViewport)},yo=class e extends ho{constructor(t){super({...Hm(),...t},{popupRef:gl.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:new At},Bm)}setOpen=(t,o)=>{let n=o.reason,r=n===G.triggerHover,i=t&&n===G.triggerFocus,s=!t&&(n===G.triggerPress||n===G.escapeKey);if(o.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},this.context.onOpenChange?.(t,o),o.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(t,o);let a=()=>{let d={open:t,openChangeReason:n};i?d.instantType="focus":s?d.instantType="dismiss":n===G.triggerHover&&(d.instantType=void 0);let l=o.trigger?.id??null;(l||t)&&(d.activeTriggerId=l,d.activeTriggerElement=o.trigger??null),this.update(d)};r?bl.flushSync(a):a()};static useStore(t,o){let n=de(()=>new e(o)).current,r=t??n,i=ai({popupStore:r,onOpenChange:r.setOpen});return r.state.floatingRootContext=i,r}};function Hm(){return{...Vc(),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,hasViewport:!1}}var hl=g(q(),1),wl=ri(function(t){let{disabled:o=!1,defaultOpen:n=!1,open:r,disableHoverablePopup:i=!1,trackCursorAxis:s="none",actionsRef:a,onOpenChange:d,onOpenChangeComplete:l,handle:c,triggerId:u,defaultTriggerId:m=null,children:p}=t,f=yo.useStore(c?.store,{open:n,openProp:r,activeTriggerId:m,triggerIdProp:u});za(()=>{r===void 0&&f.state.open===!1&&n===!0&&f.update({open:!0,activeTriggerId:m})}),f.useControlledProp("openProp",r),f.useControlledProp("triggerIdProp",u),f.useContextCallback("onOpenChange",d),f.useContextCallback("onOpenChangeComplete",l);let h=f.useState("open"),v=!o&&h,b=f.useState("activeTriggerId"),T=f.useState("payload");f.useSyncedValues({trackCursorAxis:s,disableHoverablePopup:i}),j(()=>{h&&o&&f.setOpen(!1,ee(G.disabled))},[h,o,f]),f.useSyncedValue("disabled",o),Dc(f);let{forceUnmount:y,transitionStatus:_}=jc(v,f),w=f.select("floatingRootContext"),R=f.useState("isInstantPhase"),E=f.useState("instantType"),x=f.useState("lastOpenChangeReason"),k=ct.useRef(null);j(()=>{_==="ending"&&x===G.none||_!=="ending"&&R?(E!=="delay"&&(k.current=E),f.set("instantType","delay")):k.current!==null&&(f.set("instantType",k.current),k.current=null)},[_,R,x,E,f]),j(()=>{v&&b==null&&f.set("payload",void 0)},[f,b,v]);let O=ct.useCallback(()=>{f.setOpen(!1,ee(G.imperativeAction))},[f]);ct.useImperativeHandle(a,()=>({unmount:y,close:O}),[y,O]);let B=Wr(w,{enabled:!o,referencePress:()=>f.select("closeOnClick")}),z=Vr(w,{enabled:!o&&s!=="none",axis:s==="none"?void 0:s}),{getReferenceProps:N,getFloatingProps:C,getTriggerProps:S}=pi([B,z]),L=ct.useMemo(()=>N(),[N]),M=ct.useMemo(()=>S(),[S]),P=ct.useMemo(()=>C(),[C]);return f.useSyncedValues({activeTriggerProps:L,inactiveTriggerProps:M,popupProps:P}),(0,hl.jsx)(wi.Provider,{value:f,children:typeof p=="function"?p({payload:T}):p})});var yl=g(H(),1);var Qn=g(H(),1),vi=Qn.createContext(void 0);function vl(){return Qn.useContext(vi)}var _l=(function(e){return e[e.popupOpen=Uo.popupOpen]="popupOpen",e.triggerDisabled="data-trigger-disabled",e})({});var xl=Mc(function(t,o){let{className:n,render:r,handle:i,payload:s,disabled:a,delay:d,closeOnClick:l=!0,closeDelay:c,id:u,style:m,...p}=t,f=Ue(!0),h=i?.store??f;if(!h)throw new Error(xe(82));let v=aa(u),b=h.useState("isTriggerActive",v),T=h.useState("isOpenedByTrigger",v),y=h.useState("floatingRootContext"),_=yl.useRef(null),w=d??600,R=c??0,{registerTrigger:E,isMountedByThisTrigger:x}=zc(v,_,h,{payload:s,closeOnClick:l,closeDelay:R}),k=vl(),{delayRef:O,isInstantPhase:B,hasProvider:z}=jr(y,{open:T});h.useSyncedValue("isInstantPhase",B);let N=h.useState("disabled"),C=a??N,S=h.useState("trackCursorAxis"),L=h.useState("disableHoverablePopup"),M=fi(y,{enabled:!C,mouseOnly:!0,move:!1,handleClose:!L&&S!=="both"?mi():null,restMs(){let X=k?.delay,K=typeof O.current=="object"?O.current.open:void 0,ae=w;return z&&(K!==0?ae=d??X??w:ae=0),ae},delay(){let X=typeof O.current=="object"?O.current.close:void 0,K=R;return c==null&&z&&(K=X),{close:K}},triggerElementRef:_,isActiveTrigger:b,isClosing:()=>h.select("transitionStatus")==="ending"}),P=li(y,{enabled:!C}).reference,A={open:T},F=h.useState("triggerProps",x);return Re("button",t,{state:A,ref:[o,E,_],props:[M,P,F,{onPointerDown(){h.set("closeOnClick",l)},id:v,[_l.triggerDisabled]:C?"":void 0},p],stateAttributesMapping:Kc})});var Sl=g(H(),1);var $n=g(H(),1),_i=$n.createContext(void 0);function Rl(){let e=$n.useContext(_i);if(e===void 0)throw new Error(xe(70));return e}var yi=g(q(),1),El=Sl.forwardRef(function(t,o){let{keepMounted:n=!1,...r}=t;return Ue().useState("mounted")||n?(0,yi.jsx)(_i.Provider,{value:n,children:(0,yi.jsx)(ml,{ref:o,...r})}):null});var tr=g(H(),1);var er=g(H(),1),xi=er.createContext(void 0);function xo(){let e=er.useContext(xi);if(e===void 0)throw new Error(xe(71));return e}var Tl=g(q(),1),Pl=tr.forwardRef(function(t,o){let{render:n,className:r,anchor:i,positionMethod:s="absolute",side:a="top",align:d="center",sideOffset:l=0,alignOffset:c=0,collisionBoundary:u="clipping-ancestors",collisionPadding:m=5,arrowPadding:p=5,sticky:f=!1,disableAnchorTracking:h=!1,collisionAvoidance:v=Va,style:b,...T}=t,y=Ue(),_=Rl(),w=y.useState("open"),R=y.useState("mounted"),E=y.useState("trackCursorAxis"),x=y.useState("disableHoverablePopup"),k=y.useState("floatingRootContext"),O=y.useState("instantType"),B=y.useState("transitionStatus"),z=y.useState("hasViewport"),N=ol({anchor:i,positionMethod:s,floatingRootContext:k,mounted:R,side:a,sideOffset:l,align:d,alignOffset:c,collisionBoundary:u,collisionPadding:m,sticky:f,arrowPadding:p,disableAnchorTracking:h,keepMounted:_,collisionAvoidance:v,adaptiveOrigin:z?Qc:void 0}),C=tr.useMemo(()=>({open:w,side:N.side,align:N.align,anchorHidden:N.anchorHidden,instant:E!=="none"?"tracking-cursor":O}),[w,N.side,N.align,N.anchorHidden,E,O]),S=nl(t,C,{styles:N.positionerStyles,transitionStatus:B,props:T,refs:[o,y.useStateSetter("positionerElement")],hidden:!R,inert:!w||E==="both"||x});return(0,Tl.jsx)(xi.Provider,{value:N,children:S})});var Cl=g(H(),1);var zm={...vo,...ua},Al=Cl.forwardRef(function(t,o){let{className:n,render:r,style:i,...s}=t,a=Ue(),{side:d,align:l}=xo(),c=a.useState("open"),u=a.useState("instantType"),m=a.useState("transitionStatus"),p=a.useState("popupProps"),f=a.useState("floatingRootContext");kn({open:c,ref:a.context.popupRef,onComplete(){c&&a.context.onOpenChangeComplete?.(!0)}});let h=a.useState("disabled"),v=a.useState("closeDelay");return ui(f,{enabled:!h,closeDelay:v}),Re("div",t,{state:{open:c,side:d,align:l,instant:u,transitionStatus:m},ref:[o,a.context.popupRef,a.useStateSetter("popupElement")],props:[p,Xn(m),s],stateAttributesMapping:zm})});var kl=g(H(),1);var Ol=kl.forwardRef(function(t,o){let{className:n,render:r,style:i,...s}=t,a=Ue(),d=a.useState("open"),l=a.useState("instantType"),{arrowRef:c,side:u,align:m,arrowUncentered:p,arrowStyles:f}=xo();return Re("div",t,{state:{open:d,side:u,align:m,uncentered:p,instant:l},ref:[o,c],props:[{style:f,"aria-hidden":!0},s],stateAttributesMapping:vo})});var Ri=g(H(),1);var Si=g(q(),1),Nl=function(t){let{delay:o,closeDelay:n,timeout:r=400}=t,i=Ri.useMemo(()=>({delay:o,closeDelay:n}),[o,n]),s=Ri.useMemo(()=>({open:o,close:n}),[o,n]);return(0,Si.jsx)(vi.Provider,{value:i,children:(0,Si.jsx)(Dr,{delay:s,timeoutMs:r,children:t.children})})};var Il=g(H(),1);var Ll=(function(e){return e.popupWidth="--popup-width",e.popupHeight="--popup-height",e})({});var Dm={activationDirection:e=>e?{"data-activation-direction":e}:null},Ml=Il.forwardRef(function(t,o){let{render:n,className:r,style:i,children:s,...a}=t,d=Ue(),l=xo(),c=d.useState("instantType"),{children:u,state:m}=ul({store:d,side:l.side,cssVars:Ll,children:s}),p={activationDirection:m.activationDirection,transitioning:m.transitioning,instant:c};return Re("div",t,{state:p,ref:o,props:[a,{children:u}],stateAttributesMapping:Dm})});var Ko=class{constructor(){this.store=new yo}open(t){let o=t?this.store.context.triggerElements.getById(t):void 0;if(t&&!o)throw new Error(xe(81,t));this.store.setOpen(!0,ee(G.imperativeAction,void 0,o))}close(){this.store.setOpen(!1,ee(G.imperativeAction,void 0,void 0))}get isOpen(){return this.store.state.open}};function Bl(){return new Ko}function lt(e){return Re(e.defaultTagName??"div",e,e)}var Dl=g(oe(),1),Ei="data-wp-hash";function Ti(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Fm(document)),e.__wpStyleRuntime}function jm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ei}]`))if(o.getAttribute(Ei)===t)return!0;return!1}function jl(e,t,o){if(!e.head)return;let n=Ti(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(jm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ei,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Fm(e){let t=Ti();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)jl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Fl(e,t){let o=Ti();o.styles.set(e,t);for(let n of o.documents.keys())jl(n,e,t)}typeof process>"u",Fl("0c8601dd83",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');var Hl={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",Fl("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var zl={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ge=(0,Dl.forwardRef)(function({variant:t="body-md",render:o,className:n,...r},i){return lt({render:o,defaultTagName:"span",ref:i,props:Ae(r,{className:J(Hl.text,zl.heading,zl.p,Hl[t],n)})})});var Ul=g(q(),1),Pi="data-wp-hash";function Ci(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Wm(document)),e.__wpStyleRuntime}function Vm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Pi}]`))if(o.getAttribute(Pi)===t)return!0;return!1}function Yl(e,t,o){if(!e.head)return;let n=Ci(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Vm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Pi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Wm(e){let t=Ci();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Yl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Ym(e,t){let o=Ci();o.styles.set(e,t);for(let n of o.documents.keys())Yl(n,e,t)}typeof process>"u",Ym("d6a685e1aa","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}");var Vl={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},Ai=(0,Wl.forwardRef)(function({intent:t="none",className:o,...n},r){return(0,Ul.jsx)(Ge,{ref:r,className:J(Vl.badge,Vl[`is-${t}-intent`],o),...n,variant:"body-sm"})});var or=g(oe(),1),Gl=g(_t(),1),Kl=g(q(),1);import{speak as Um}from"@wordpress/a11y";var ki="data-wp-hash";function Oi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Xm(document)),e.__wpStyleRuntime}function Gm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ki}]`))if(o.getAttribute(ki)===t)return!0;return!1}function Xl(e,t,o){if(!e.head)return;let n=Oi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Gm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ki,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Xm(e){let t=Oi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Xl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function nr(e,t){let o=Oi();o.styles.set(e,t);for(let n of o.documents.keys())Xl(n,e,t)}typeof process>"u",nr("7d54255a4c",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:#0000;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:#0000;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:#0000;&:not([data-disabled]):is(:hover,:active,:focus){color:#0000}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}');var qo={button:"_97b0fc33c028be1a__button","is-unstyled":"abbb272e2ce49bd6__is-unstyled","is-loading":"_914b42f315c0e580__is-loading","is-small":"_908205475f9f2a92__is-small","is-brand":"dd460c965226cc77__is-brand","is-outline":"_62d5a778b7b258ee__is-outline","is-minimal":"ad0619a3217c6a5b__is-minimal","is-neutral":"e722a8f96726aa99__is-neutral","is-solid":"b50b3358c5fb4d0b__is-solid","is-compact":"cf59cf1b69629838__is-compact","loading-animation":"_5a1d53da6f830c8d__loading-animation"};typeof process>"u",nr("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Km={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",nr("2a5ab8f3a7","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}");var qm={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",nr("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Zm={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},ql=(0,or.forwardRef)(function({tone:t="brand",variant:o="solid",size:n="default",className:r,focusableWhenDisabled:i=!0,disabled:s,loading:a,loadingAnnouncement:d=(0,Gl.__)("Loading"),children:l,...c},u){let m=J(Zm.button,Km["box-sizing"],qm["outset-ring--focus-except-active"],o!=="unstyled"&&qo.button,qo[`is-${t}`],qo[`is-${o}`],qo[`is-${n}`],a&&qo["is-loading"],r);return(0,or.useEffect)(()=>{a&&d&&Um(d)},[a,d]),(0,Kl.jsx)(bi,{ref:u,className:m,focusableWhenDisabled:i,disabled:s??a,...c,children:l})});var ed=g(oe(),1);var Jl=g(oe(),1),Ql=g(Zt(),1),$l=g(q(),1),Jt=(0,Jl.forwardRef)(function({icon:t,size:o=24,...n},r){return(0,$l.jsx)(Ql.SVG,{ref:r,fill:"currentColor",...t.props,...n,width:o,height:o})});var td=g(q(),1),Ni=(0,ed.forwardRef)(function({icon:t,...o},n){return(0,td.jsx)(Jt,{ref:n,icon:t,viewBox:"4 4 16 16",size:16,...o})});Ni.displayName="Button.Icon";var rr=Object.assign(ql,{Icon:Ni});var ir=g(Zt(),1),Li=g(q(),1),Ii=(0,Li.jsx)(ir.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Li.jsx)(ir.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})});var sr=g(Zt(),1),Mi=g(q(),1),Bi=(0,Mi.jsx)(sr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Mi.jsx)(sr.Path,{d:"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"})});var ar=g(Zt(),1),Hi=g(q(),1),zi=(0,Hi.jsx)(ar.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Hi.jsx)(ar.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})});var cr=g(Zt(),1),Di=g(q(),1),ji=(0,Di.jsx)(cr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Di.jsx)(cr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})});var lr=g(Zt(),1),Fi=g(q(),1),Vi=(0,Fi.jsx)(lr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Fi.jsx)(lr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"})});var rd=g(oe(),1);function Wi(e,t,o){return(0,rd.cloneElement)(e??t,{children:o})}var sd=g(Yi(),1),{lock:v2,unlock:ad}=(0,sd.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/ui");var cd=g(oe(),1),Ui="data-wp-hash";function Gi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Qm(document)),e.__wpStyleRuntime}function Jm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ui}]`))if(o.getAttribute(Ui)===t)return!0;return!1}function ld(e,t,o){if(!e.head)return;let n=Gi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Jm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ui,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Qm(e){let t=Gi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ld(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function $m(e,t){let o=Gi();o.styles.set(e,t);for(let n of o.documents.keys())ld(n,e,t)}typeof process>"u",$m("b51ff41489","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");var eg={stack:"_19ce0419607e1896__stack"},tg={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Ro=(0,cd.forwardRef)(function({direction:t,gap:o,align:n,justify:r,wrap:i,render:s,...a},d){let l={gap:o&&tg[o],alignItems:n,justifyContent:r,flexDirection:t,flexWrap:i};return lt({render:s,ref:d,props:Ae(a,{style:l,className:eg.stack})})});var kd=g(oe(),1);var xd=g(oe(),1),Rd=g(nd(),1);var md=g(oe(),1);var Xi="data-wp-hash";function Ki(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&ng(document)),e.__wpStyleRuntime}function og(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Xi}]`))if(o.getAttribute(Xi)===t)return!0;return!1}function ud(e,t,o){if(!e.head)return;let n=Ki(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(og(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Xi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function ng(e){let t=Ki();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ud(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function rg(e,t){let o=Ki();o.styles.set(e,t);for(let n of o.documents.keys())ud(n,e,t)}typeof process>"u",rg("45eb1fe20f","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui-utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}");var dd={slot:"_11fc52b637ff8a7e__slot"},fd="data-wp-compat-overlay-slot";function ig(){return typeof document>"u"?null:document}function sg(){let e;try{e=window.top?.wp}catch{}let t=e??window.wp;return typeof t?.components=="object"&&t.components!==null}var bt=null;function ag(e){let t=e.createElement("div");return t.setAttribute(fd,""),dd.slot&&t.classList.add(dd.slot),e.body.appendChild(t),t}function pd(){if(typeof window>"u"||!sg()&&window.__wpUiCompatOverlaySlotEnabled!==!0)return;let e=ig();if(!e||!e.body)return;if(bt&&bt.ownerDocument===e&&bt.isConnected)return bt;let t=e.querySelector(`[${fd}]`);return t instanceof HTMLDivElement?(bt=t,t):(bt?.isConnected&&bt.remove(),bt=ag(e),bt)}var gd=g(q(),1),bd=(0,md.forwardRef)(function({container:t,...o},n){return(0,gd.jsx)(ze.Portal,{container:t??pd(),...o,ref:n})});var hd=g(oe(),1),_d=g(q(),1),qi="data-wp-hash";function Zi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&lg(document)),e.__wpStyleRuntime}function cg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${qi}]`))if(o.getAttribute(qi)===t)return!0;return!1}function wd(e,t,o){if(!e.head)return;let n=Zi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(cg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(qi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function lg(e){let t=Zi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)wd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function vd(e,t){let o=Zi();o.styles.set(e,t);for(let n of o.documents.keys())wd(n,e,t)}typeof process>"u",vd("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var dg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",vd("8293efbb49",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}');var ug={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},yd=(0,hd.forwardRef)(function({align:t="center",className:o,side:n="top",sideOffset:r=4,...i},s){return(0,_d.jsx)(ze.Positioner,{ref:s,align:t,side:n,sideOffset:r,...i,className:J(dg["box-sizing"],ug.positioner,o)})});var Zo=g(q(),1),Ji="data-wp-hash";function Qi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&pg(document)),e.__wpStyleRuntime}function fg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ji}]`))if(o.getAttribute(Ji)===t)return!0;return!1}function Sd(e,t,o){if(!e.head)return;let n=Qi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(fg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ji,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function pg(e){let t=Qi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Sd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function mg(e,t){let o=Qi();o.styles.set(e,t);for(let n of o.documents.keys())Sd(n,e,t)}typeof process>"u",mg("8293efbb49",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}');var gg={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},bg=ad(Rd.privateApis).ThemeProvider,$i=(0,xd.forwardRef)(function({portal:t,positioner:o,children:n,className:r,...i},s){let a=(0,Zo.jsx)(bg,{color:{bg:"#1e1e1e"},children:(0,Zo.jsx)(ze.Popup,{ref:s,className:J(gg.popup,r),...i,children:n})}),d=Wi(o,(0,Zo.jsx)(yd,{}),a);return Wi(t,(0,Zo.jsx)(bd,{}),d)});var Ed=g(oe(),1),Td=g(q(),1),es=(0,Ed.forwardRef)(function(t,o){return(0,Td.jsx)(ze.Trigger,{ref:o,...t})});var Pd=g(q(),1);function ts(e){return(0,Pd.jsx)(ze.Root,{...e})}var Cd=g(q(),1);function os({...e}){return(0,Cd.jsx)(ze.Provider,{...e})}var Xe=g(q(),1),ns="data-wp-hash";function rs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&vg(document)),e.__wpStyleRuntime}function wg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ns}]`))if(o.getAttribute(ns)===t)return!0;return!1}function Od(e,t,o){if(!e.head)return;let n=rs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(wg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ns,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function vg(e){let t=rs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Od(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function _g(e,t){let o=rs();o.styles.set(e,t);for(let n of o.documents.keys())Od(n,e,t)}typeof process>"u",_g("358a2a646a","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}");var Ad={"icon-button":"_28cfdc260e755391__icon-button",icon:"f1c70d719989a85a__icon"},is=(0,kd.forwardRef)(function({label:t,className:o,children:n,disabled:r,focusableWhenDisabled:i=!0,icon:s,size:a,shortcut:d,positioner:l,...c},u){let m=J(Ad["icon-button"],o);return(0,Xe.jsx)(os,{delay:0,children:(0,Xe.jsxs)(ts,{children:[(0,Xe.jsx)(es,{ref:u,disabled:r&&!i,render:(0,Xe.jsx)(rr,{...c,size:a,"aria-label":t,"aria-keyshortcuts":d?.ariaKeyShortcut,disabled:r,focusableWhenDisabled:i}),className:m,children:(0,Xe.jsx)(Jt,{icon:s,size:24,className:Ad.icon})}),(0,Xe.jsxs)($i,{positioner:l,children:[t,d&&(0,Xe.jsxs)(Xe.Fragment,{children:[" ",(0,Xe.jsx)("span",{"aria-hidden":"true",children:d.displayShortcut})]})]})]})})});var Nd=g(oe(),1),Ld=g(_t(),1),So=g(q(),1),ss="data-wp-hash";function as(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&xg(document)),e.__wpStyleRuntime}function yg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ss}]`))if(o.getAttribute(ss)===t)return!0;return!1}function Id(e,t,o){if(!e.head)return;let n=as(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(yg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function xg(e){let t=as();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Id(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function ur(e,t){let o=as();o.styles.set(e,t);for(let n of o.documents.keys())Id(n,e,t)}typeof process>"u",ur("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Rg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",ur("2a5ab8f3a7","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}");var Sg={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",ur("90a23568f8",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}');var dr={link:"d4250949359b05ce__link","is-brand":"c6055659b8e2cd2c__is-brand","is-neutral":"_92e0dfcaeee15b88__is-neutral","is-unstyled":"cf122a9bf1035d42__is-unstyled","link-icon":"_0cb411afac4c86c7__link-icon"};typeof process>"u",ur("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Eg={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Jo=(0,Nd.forwardRef)(function({children:t,variant:o="default",tone:n="brand",openInNewTab:r=!1,render:i,className:s,...a},d){return lt({render:i,defaultTagName:"a",ref:d,props:Ae(a,{className:J(Eg.a,Rg["box-sizing"],Sg["outset-ring--focus"],o!=="unstyled"&&dr.link,o!=="unstyled"&&dr[`is-${n}`],o==="unstyled"&&dr["is-unstyled"],s),target:r?"_blank":void 0,children:(0,So.jsxs)(So.Fragment,{children:[t,r&&(0,So.jsx)("span",{className:dr["link-icon"],role:"img","aria-label":(0,Ld.__)("(opens in a new tab)")})]})})})});var Qo={};vr(Qo,{ActionButton:()=>ru,ActionLink:()=>au,Actions:()=>Kd,CloseIcon:()=>$d,Description:()=>Ud,Root:()=>Hd,Title:()=>Fd});var Eo=g(oe(),1);import{speak as Tg}from"@wordpress/a11y";var To=g(q(),1),ls="data-wp-hash";function ds(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Cg(document)),e.__wpStyleRuntime}function Pg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ls}]`))if(o.getAttribute(ls)===t)return!0;return!1}function Md(e,t,o){if(!e.head)return;let n=ds(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Pg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ls,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Cg(e){let t=ds();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Md(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Bd(e,t){let o=ds();o.styles.set(e,t);for(let n of o.documents.keys())Md(n,e,t)}typeof process>"u",Bd("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Ag={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",Bd("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var cs={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},kg={neutral:null,info:ji,warning:Ii,success:Vi,error:zi};function Og(e){return e==="error"?"assertive":"polite"}function Ng(e){if(e){if(typeof e=="string")return e;try{return(0,Eo.renderToString)(e)}catch{return}}}function Lg(e,t){let o=Ng(e);(0,Eo.useEffect)(()=>{o&&Tg(o,t)},[o,t])}var Hd=(0,Eo.forwardRef)(function({intent:t="neutral",children:o,icon:n,spokenMessage:r=o,politeness:i=Og(t),render:s,...a},d){Lg(r,i);let l=n===null?null:n??kg[t],c=J(cs.notice,cs[`is-${t}`],Ag["box-sizing"]);return lt({defaultTagName:"div",render:s,ref:d,props:Ae({className:c,children:(0,To.jsxs)(To.Fragment,{children:[o,l&&(0,To.jsx)(Jt,{className:cs.icon,icon:l})]})},a)})});var zd=g(oe(),1);var jd=g(q(),1),us="data-wp-hash";function fs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Mg(document)),e.__wpStyleRuntime}function Ig(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${us}]`))if(o.getAttribute(us)===t)return!0;return!1}function Dd(e,t,o){if(!e.head)return;let n=fs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Ig(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(us,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Mg(e){let t=fs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Dd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Bg(e,t){let o=fs();o.styles.set(e,t);for(let n of o.documents.keys())Dd(n,e,t)}typeof process>"u",Bg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Hg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Fd=(0,zd.forwardRef)(function({className:t,...o},n){return(0,jd.jsx)(Ge,{ref:n,variant:"heading-md",className:J(Hg.title,t),...o})});var Vd=g(oe(),1);var Yd=g(q(),1),ps="data-wp-hash";function ms(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Dg(document)),e.__wpStyleRuntime}function zg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ps}]`))if(o.getAttribute(ps)===t)return!0;return!1}function Wd(e,t,o){if(!e.head)return;let n=ms(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(zg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ps,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Dg(e){let t=ms();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Wd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function jg(e,t){let o=ms();o.styles.set(e,t);for(let n of o.documents.keys())Wd(n,e,t)}typeof process>"u",jg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Fg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Ud=(0,Vd.forwardRef)(function({className:t,...o},n){return(0,Yd.jsx)(Ge,{ref:n,variant:"body-md",className:J(Fg.description,t),...o})});var Gd=g(oe(),1);var gs="data-wp-hash";function bs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Wg(document)),e.__wpStyleRuntime}function Vg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${gs}]`))if(o.getAttribute(gs)===t)return!0;return!1}function Xd(e,t,o){if(!e.head)return;let n=bs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Vg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(gs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Wg(e){let t=bs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Xd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Yg(e,t){let o=bs();o.styles.set(e,t);for(let n of o.documents.keys())Xd(n,e,t)}typeof process>"u",Yg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Ug={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Kd=(0,Gd.forwardRef)(function({render:t,...o},n){return lt({defaultTagName:"div",render:t,ref:n,props:Ae({className:Ug.actions},o)})});var qd=g(oe(),1),Zd=g(_t(),1);var Qd=g(q(),1),hs="data-wp-hash";function ws(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Xg(document)),e.__wpStyleRuntime}function Gg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${hs}]`))if(o.getAttribute(hs)===t)return!0;return!1}function Jd(e,t,o){if(!e.head)return;let n=ws(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Gg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(hs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Xg(e){let t=ws();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Jd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Kg(e,t){let o=ws();o.styles.set(e,t);for(let n of o.documents.keys())Jd(n,e,t)}typeof process>"u",Kg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var qg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},$d=(0,qd.forwardRef)(function({className:t,icon:o=Bi,label:n=(0,Zd.__)("Dismiss"),...r},i){return(0,Qd.jsx)(is,{...r,ref:i,className:J(qg["close-icon"],t),variant:"minimal",size:"small",tone:"neutral",icon:o,label:n})});var tu=g(oe(),1);var nu=g(q(),1),vs="data-wp-hash";function _s(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Jg(document)),e.__wpStyleRuntime}function Zg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${vs}]`))if(o.getAttribute(vs)===t)return!0;return!1}function ou(e,t,o){if(!e.head)return;let n=_s(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Zg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(vs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Jg(e){let t=_s();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ou(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Qg(e,t){let o=_s();o.styles.set(e,t);for(let n of o.documents.keys())ou(n,e,t)}typeof process>"u",Qg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var eu={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},ru=(0,tu.forwardRef)(function({className:t,loading:o,loadingAnnouncement:n,variant:r,...i},s){return(0,nu.jsx)(rr,{...i,...o!==void 0?{loading:o,loadingAnnouncement:n??""}:{},ref:s,size:"compact",tone:"neutral",variant:r,className:J(eu["action-button"],eu[`is-action-button-${r}`],t)})});var iu=g(oe(),1);var xs=g(q(),1),ys="data-wp-hash";function Rs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&e0(document)),e.__wpStyleRuntime}function $g(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ys}]`))if(o.getAttribute(ys)===t)return!0;return!1}function su(e,t,o){if(!e.head)return;let n=Rs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if($g(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ys,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function e0(e){let t=Rs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)su(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function t0(e,t){let o=Rs();o.styles.set(e,t);for(let n of o.documents.keys())su(n,e,t)}typeof process>"u",t0("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var o0={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},au=(0,iu.forwardRef)(function({className:t,render:o,...n},r){return(0,xs.jsx)(Ge,{ref:r,className:J(o0["action-link"],t),...n,variant:"body-md",render:(0,xs.jsx)(Jo,{tone:"neutral",variant:"default",render:o})})});var cu=g(oe(),1),lu=g(q(),1),du=(0,cu.forwardRef)(({children:e,className:t,ariaLabel:o,as:n="div",...r},i)=>(0,lu.jsx)(n,{ref:i,className:J("admin-ui-navigable-region",t),"aria-label":o,role:"region",tabIndex:"-1",...r,children:e}));du.displayName="NavigableRegion";var uu=du;var pu=g($o(),1),{Fill:mu,Slot:gu}=(0,pu.createSlotFill)("SidebarToggle");var Ke=g(q(),1),Ss="data-wp-hash";function Es(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&r0(document)),e.__wpStyleRuntime}function n0(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ss}]`))if(o.getAttribute(Ss)===t)return!0;return!1}function bu(e,t,o){if(!e.head)return;let n=Es(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(n0(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function r0(e){let t=Es();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)bu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function i0(e,t){let o=Es();o.styles.set(e,t);for(let n of o.documents.keys())bu(n,e,t)}typeof process>"u",i0("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Qt={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function hu({headingLevel:e=1,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:s,showSidebarToggle:a=!0}){let d=`h${e}`;return(0,Ke.jsxs)(Ro,{direction:"column",className:Qt.header,children:[(0,Ke.jsxs)(Ro,{className:Qt["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Ke.jsxs)(Ro,{direction:"row",gap:"sm",align:"center",justify:"start",children:[a&&(0,Ke.jsx)(gu,{bubblesVirtually:!0,className:Qt["sidebar-toggle-slot"]}),n&&(0,Ke.jsx)("div",{className:Qt["header-visual"],"aria-hidden":"true",children:n}),r&&(0,Ke.jsx)(Ge,{className:Qt["header-title"],render:(0,Ke.jsx)(d,{}),variant:"heading-lg",children:r}),t,o]}),s&&(0,Ke.jsx)(Ro,{align:"center",className:Qt["header-actions"],direction:"row",gap:"sm",children:s})]}),i&&(0,Ke.jsx)(Ge,{render:(0,Ke.jsx)("p",{}),variant:"body-md",className:Qt["header-subtitle"],children:i})]})}var en=g(q(),1),Ps="data-wp-hash";function Cs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&a0(document)),e.__wpStyleRuntime}function s0(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ps}]`))if(o.getAttribute(Ps)===t)return!0;return!1}function wu(e,t,o){if(!e.head)return;let n=Cs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(s0(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ps,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function a0(e){let t=Cs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)wu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function c0(e,t){let o=Cs();o.styles.set(e,t);for(let n of o.documents.keys())wu(n,e,t)}typeof process>"u",c0("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Ts={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function vu({headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,children:s,className:a,actions:d,ariaLabel:l,hasPadding:c=!1,showSidebarToggle:u=!0}){let m=J(Ts.page,a);return(0,en.jsxs)(uu,{className:m,ariaLabel:l??(typeof r=="string"?r:""),children:[(r||t||o||d||n)&&(0,en.jsx)(hu,{headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:d,showSidebarToggle:u}),c?(0,en.jsx)("div",{className:J(Ts.content,Ts["has-padding"]),children:s}):s]})}vu.SidebarToggleFill=mu;var As=vu;var it=g($o()),Wu=g(tn()),Yu=g(oe()),ht=g(_t()),Uu=g(fr());import{privateApis as S0}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='359735ef0e']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","359735ef0e"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 92% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 58% -10%,#aa82b873 0,#aa82b800 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 8% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 42% -10%,#aa82b873 0,#aa82b800 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var rn=g($o()),Is=g(fr()),sn=g(tn()),dt=g(oe()),Ve=g(_t()),Du=g(ks()),ju=g(Su());var pr=g($o()),Lu=g(oe()),Iu=g(tn()),$t=g(_t());import{__experimentalRegisterConnector as l0,__experimentalConnectorItem as d0,__experimentalDefaultConnectorSettings as u0,privateApis as f0}from"@wordpress/connectors";var Eu=g(Yi()),{lock:f5,unlock:Po}=(0,Eu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Os=g(fr()),nn=g(tn()),on=g(oe()),se=g(_t()),Tu=g(ks());function Pu({file:e,settingName:t,connectorName:o,isInstalled:n,isActivated:r,keySource:i="none",initialIsConnected:s=!1}){let[a,d]=(0,on.useState)(!1),[l,c]=(0,on.useState)(!1),[u,m]=(0,on.useState)(s),[p,f]=(0,on.useState)(null),h=e?.replace(/\.php$/,""),v=h?.includes("/")?h.split("/")[0]:h,{derivedPluginStatus:b,canManagePlugins:T,currentApiKey:y,canInstallPlugins:_}=(0,nn.useSelect)(P=>{let A=P(Os.store),Y=A.getEntityRecord("root","site")?.[t]??"",X=!!A.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:A.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:Y,canInstallPlugins:X};let K=A.getEntityRecord("root","plugin",h);if(!A.hasFinishedResolution("getEntityRecord",["root","plugin",h]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:Y,canInstallPlugins:X};if(K)return{derivedPluginStatus:K.status==="active"||K.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:Y,canInstallPlugins:X};let ie="not-installed";return r?ie="active":n&&(ie="inactive"),{derivedPluginStatus:ie,canManagePlugins:!1,currentApiKey:Y,canInstallPlugins:X}},[h,t,n,r]),w=p??b,R=T,E=w==="active"&&u||p==="active"&&!!y,{saveEntityRecord:x,invalidateResolution:k}=(0,nn.useDispatch)(Os.store),{createSuccessNotice:O,createErrorNotice:B}=(0,nn.useDispatch)(Tu.store),z=async()=>{if(v){c(!0);try{await x("root","plugin",{slug:v,status:"active"},{throwOnError:!0}),f("active"),k("getEntityRecord",["root","site"]),d(!0),O((0,se.sprintf)((0,se.__)("Plugin for %s installed and activated successfully."),o),{id:"connector-plugin-install-success",type:"snackbar"})}catch{B((0,se.sprintf)((0,se.__)("Failed to install plugin for %s."),o),{id:"connector-plugin-install-error",type:"snackbar"})}finally{c(!1)}}},N=async()=>{if(e){c(!0);try{await x("root","plugin",{plugin:h,status:"active"},{throwOnError:!0}),f("active"),k("getEntityRecord",["root","site"]),d(!0),O((0,se.sprintf)((0,se.__)("Plugin for %s activated successfully."),o),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{B((0,se.sprintf)((0,se.__)("Failed to activate plugin for %s."),o),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{c(!1)}}};return{pluginStatus:w,canInstallPlugins:_,canActivatePlugins:R,isExpanded:a,setIsExpanded:d,isBusy:l,isConnected:E,currentApiKey:y,keySource:i,handleButtonClick:()=>{if(w==="not-installed"){if(_===!1)return;z()}else if(w==="inactive"){if(R===!1)return;N()}else d(!a)},getButtonLabel:()=>{if(l)return w==="not-installed"?(0,se.__)("Installing\u2026"):(0,se.__)("Activating\u2026");if(a)return(0,se.__)("Cancel");if(E)return(0,se.__)("Edit");switch(w){case"checking":return(0,se.__)("Checking\u2026");case"not-installed":return(0,se.__)("Install");case"inactive":return(0,se.__)("Activate");case"active":return(0,se.__)("Set up")}},saveApiKey:async P=>{let A=y;try{let X=(await x("root","site",{[t]:P},{throwOnError:!0}))?.[t];if(P&&(X===A||!X))throw new Error("It was not possible to connect to the provider using this key.");m(!0),O((0,se.sprintf)((0,se.__)("%s connected successfully."),o),{id:"connector-connect-success",type:"snackbar"})}catch(F){throw console.error("Failed to save API key:",F),F}},removeApiKey:async()=>{try{await x("root","site",{[t]:""},{throwOnError:!0}),m(!1),O((0,se.sprintf)((0,se.__)("%s disconnected."),o),{id:"connector-disconnect-success",type:"snackbar"})}catch(P){throw console.error("Failed to remove API key:",P),B((0,se.sprintf)((0,se.__)("Failed to disconnect %s."),o),{id:"connector-disconnect-error",type:"snackbar"}),P}}}}var Cu=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Au=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),ku=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Ou=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),Nu=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:p0}=Po(f0);function Mu(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"{}")}catch{return{}}}function Ns(){return Mu().connectors??{}}function Bu(){return!!Mu().isFileModDisabled}var m0={google:Nu,openai:Cu,anthropic:Au,akismet:Ou};function g0(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let o=m0[e];return React.createElement(o||ku,null)}var b0=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,$t.__)("Connected")),h0=({slug:e})=>React.createElement(Jo,{href:(0,$t.sprintf)((0,$t.__)("https://wordpress.org/plugins/%s/"),e),openInNewTab:!0},(0,$t.__)("Learn more")),w0=()=>React.createElement(Ai,null,(0,$t.__)("Not available"));function v0({name:e,description:t,logo:o,authentication:n,plugin:r}){let i=n?.method==="api_key"?n:void 0,s=i?.settingName??"",a=i?.credentialsUrl??void 0,d=r?.file?.replace(/\.php$/,""),l=d?.includes("/")?d.split("/")[0]:d,c;try{a&&(c=new URL(a).hostname)}catch{}let{pluginStatus:u,canInstallPlugins:m,canActivatePlugins:p,isExpanded:f,setIsExpanded:h,isBusy:v,isConnected:b,currentApiKey:T,keySource:y,handleButtonClick:_,getButtonLabel:w,saveApiKey:R,removeApiKey:E}=Pu({file:r?.file,settingName:s,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:i?.keySource,initialIsConnected:i?.isConnected}),x=y==="env"||y==="constant",k=u==="not-installed"&&m===!1||u==="inactive"&&p===!1,O=!k,B=(0,Lu.useRef)(null);return React.createElement(d0,{className:l?`connector-item--${l}`:void 0,logo:o,name:e,description:t,actionArea:React.createElement(pr.__experimentalHStack,{spacing:3,expanded:!1},b&&React.createElement(b0,null),k&&(l?React.createElement(h0,{slug:l}):React.createElement(w0,null)),O&&React.createElement(pr.Button,{ref:B,variant:f||b?"tertiary":"secondary",size:"compact",onClick:_,disabled:u==="checking"||v,isBusy:v,accessibleWhenDisabled:!0},w()))},f&&u==="active"&&React.createElement(u0,{key:b?"connected":"setup",initialValue:x?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":T,helpUrl:a,helpLabel:c,readOnly:b||x,keySource:y,onRemove:x?void 0:async()=>{await E(),B.current?.focus()},onSave:async z=>{await R(z),h(!1),B.current?.focus()}}))}function Hu(){let e=Ns(),t=o=>o.replace(/[^a-z0-9-_]/gi,"-");for(let[o,n]of Object.entries(e)){if(o==="akismet"&&!n.plugin?.isInstalled)continue;let{authentication:r}=n,i=t(o),s={name:n.name,description:n.description,type:n.type,logo:g0(o,n.logoUrl),authentication:r,plugin:n.plugin},a=Po((0,Iu.select)(p0)).getConnector(i);r.method==="api_key"&&!a?.render&&(s.render=v0),l0(i,s)}}function zu(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}})))}var _0="ai",y0="ai-wp-admin",Ls="ai/ai",x0="https://wordpress.org/plugins/ai/",Ms=Object.values(Ns()),R0=Ms.some(e=>e.type==="ai_provider"),Fu=[];for(let e of Ms)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Fu.push(e.authentication.settingName);function Vu(){let[e,t]=(0,dt.useState)(!1),[o,n]=(0,dt.useState)(!1),r=(0,dt.useRef)(null);(0,dt.useEffect)(()=>{o&&r.current?.focus()},[o]);let i=(0,dt.useRef)(Ms.some(w=>w.type==="ai_provider"&&w.authentication.method==="api_key"&&w.authentication.isConnected)).current,{pluginStatus:s,canInstallPlugins:a,canManagePlugins:d,hasConnectedProvider:l}=(0,sn.useSelect)(w=>{let R=w(Is.store),E=!!R.canUser("create",{kind:"root",name:"plugin"}),x=R.getEntityRecord("root","site"),k=i||Fu.some(z=>!!x?.[z]),O=R.getEntityRecord("root","plugin",Ls);return R.hasFinishedResolution("getEntityRecord",["root","plugin",Ls])?O?{pluginStatus:O.status==="active"?"active":"inactive",canInstallPlugins:E,canManagePlugins:!0,hasConnectedProvider:k}:{pluginStatus:"not-installed",canInstallPlugins:E,canManagePlugins:E,hasConnectedProvider:k}:{pluginStatus:"checking",canInstallPlugins:E,canManagePlugins:void 0,hasConnectedProvider:k}},[]),{saveEntityRecord:c}=(0,sn.useDispatch)(Is.store),{createSuccessNotice:u,createErrorNotice:m}=(0,sn.useDispatch)(Du.store),p=async()=>{t(!0);try{await c("root","plugin",{slug:_0,status:"active"},{throwOnError:!0}),n(!0),u((0,Ve.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{m((0,Ve.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},f=async()=>{t(!0);try{await c("root","plugin",{plugin:Ls,status:"active"},{throwOnError:!0}),n(!0),u((0,Ve.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{m((0,Ve.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!R0||s==="checking"||s==="active"&&i&&!o||s==="inactive"&&d===!1)return null;let h=s==="active"&&!l,v=s==="active"&&l&&(!i||o),b=s==="not-installed"||s==="inactive",T=s==="not-installed"&&a===!1,y=()=>v?(0,Ve.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):h?(0,Ve.__)("The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,Ve.__)("The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),_=()=>s==="not-installed"?{label:e?(0,Ve.__)("Installing\u2026"):(0,Ve.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:p}:{label:e?(0,Ve.__)("Activating\u2026"):(0,Ve.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:f};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,dt.createInterpolateElement)(y(),{strong:React.createElement("strong",null),a:React.createElement(rn.ExternalLink,{href:x0})})),!T&&(b?React.createElement(rn.Button,{variant:"primary",size:"compact",isBusy:e,disabled:_().disabled,accessibleWhenDisabled:!0,onClick:_().onClick},_().label):React.createElement(rn.Button,{ref:r,variant:"secondary",size:"compact",href:(0,ju.addQueryArgs)("options-general.php",{page:y0})},(0,Ve.__)("Control features in the AI plugin")))),React.createElement(zu,null))}var{store:E0}=Po(S0);Hu();function T0(){let e=Bu(),{connectors:t,canInstallPlugins:o,isAiPluginInstalled:n}=(0,Wu.useSelect)(l=>{let c=l(Uu.store),u=c.getEntityRecord("root","plugin","ai/ai");return{connectors:Po(l(E0)).getConnectors(),canInstallPlugins:c.canUser("create",{kind:"root",name:"plugin"}),isAiPluginInstalled:!!u}},[]),r=t.filter(l=>l.render),i=Array.from(new Set(t.filter(l=>l.type==="ai_provider").map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l))).sort(),s=new Set(t.filter(l=>l.plugin?.isInstalled).map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l));n&&s.add("ai");let a=["ai",...i].filter(l=>!s.has(l)),d=r.length===0;return React.createElement(As,{title:(0,ht.__)("Connectors"),subTitle:(0,ht.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${d?" connectors-page--empty":""}`},a.length>0&&(e||!o)&&React.createElement(Qo.Root,{intent:"info",className:"connectors-page__file-mods-notice"},React.createElement(Qo.Description,null,e?(0,ht.__)("Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow."):(0,ht.__)("You do not have permission to install plugins. Please ask a site administrator to install them for you."))),d?React.createElement(it.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(it.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(it.__experimentalHeading,{level:2,size:15,weight:600},(0,ht.__)("No connectors yet")),React.createElement(it.__experimentalText,{size:12},(0,ht.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(it.Button,{variant:"secondary",href:"plugin-install.php",__next40pxDefaultSize:!0},(0,ht.__)("Learn more"))):React.createElement(it.__experimentalVStack,{spacing:3},React.createElement(Vu,null),React.createElement(it.__experimentalVStack,{spacing:3,role:"list"},t.map(l=>l.render?React.createElement(l.render,{key:l.slug,slug:l.slug,name:l.name,description:l.description,type:l.type,logo:l.logo,authentication:l.authentication,plugin:l.plugin}):null))),o&&!e&&React.createElement("p",null,(0,Yu.createInterpolateElement)((0,ht.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function P0(){return React.createElement(T0,null)}var C0=P0;export{C0 as stage}; /*! Bundled license information: use-sync-external-store/cjs/use-sync-external-store-shim.production.js: diff --git a/src/wp-includes/build/routes/font-list/content.js b/src/wp-includes/build/routes/font-list/content.js index f09d467f9b5d1..079635609d627 100644 --- a/src/wp-includes/build/routes/font-list/content.js +++ b/src/wp-includes/build/routes/font-list/content.js @@ -904,12 +904,15 @@ var Text = (0, import_element.forwardRef)(function Text2({ variant = "body-md", var import_element2 = __toESM(require_element(), 1); var icon_default = (0, import_element2.forwardRef)( ({ icon, size = 24, ...props }, ref) => { - return (0, import_element2.cloneElement)(icon, { - width: size, - height: size, - ...props, - ref - }); + return (0, import_element2.cloneElement)( + icon, + { + width: size, + height: size, + ...props, + ref + } + ); } ); @@ -3023,7 +3026,7 @@ var import_components10 = __toESM(require_components(), 1); var import_i18n6 = __toESM(require_i18n(), 1); var import_block_editor2 = __toESM(require_block_editor(), 1); var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); -var { StateControl } = unlock(import_block_editor2.privateApis); +var { StateControl, StateControlBadges } = unlock(import_block_editor2.privateApis); // packages/global-styles-ui/build-module/screen-block-list.mjs var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); @@ -4346,7 +4349,7 @@ function InstalledFonts() { ).length; return (0, import_i18n14.sprintf)( /* translators: 1: Active font variants, 2: Total font variants. */ - (0, import_i18n14.__)("%1$d/%2$d variants active"), + (0, import_i18n14.__)("%1$d of %2$d active"), variantsActive, variantsInstalled ); diff --git a/src/wp-includes/build/routes/font-list/content.min.asset.php b/src/wp-includes/build/routes/font-list/content.min.asset.php index 2f2b14966873e..5b49ca4c61012 100644 --- a/src/wp-includes/build/routes/font-list/content.min.asset.php +++ b/src/wp-includes/build/routes/font-list/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '70b6366062e25f2ed857'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '16885948849bd50299be'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/font-list/content.min.js b/src/wp-includes/build/routes/font-list/content.min.js index fe4792dd265f9..be1be4cf3a141 100644 --- a/src/wp-includes/build/routes/font-list/content.min.js +++ b/src/wp-includes/build/routes/font-list/content.min.js @@ -1,12 +1,12 @@ -var Sf=Object.create;var ga=Object.defineProperty;var Cf=Object.getOwnPropertyDescriptor;var _f=Object.getOwnPropertyNames;var Ff=Object.getPrototypeOf,kf=Object.prototype.hasOwnProperty;var dt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var He=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Of=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of _f(t))!kf.call(e,s)&&s!==r&&ga(e,s,{get:()=>t[s],enumerable:!(o=Cf(t,s))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?Sf(Ff(e)):{},Of(t||!e||!e.__esModule?ga(r,"default",{value:e,enumerable:!0}):r,e));var ie=He((By,ya)=>{ya.exports=window.wp.i18n});var ve=He((Ny,ba)=>{ba.exports=window.wp.element});var Rr=He((zy,wa)=>{wa.exports=window.React});var D=He((My,Ca)=>{Ca.exports=window.ReactJSXRuntime});var Ir=He((vv,qa)=>{qa.exports=window.wp.primitives});var pr=He((Lv,Ya)=>{Ya.exports=window.wp.compose});var Ws=He((Bv,Za)=>{Za.exports=window.wp.privateApis});var X=He((Gv,ti)=>{ti.exports=window.wp.components});var fi=He((e1,ui)=>{ui.exports=window.wp.editor});var wt=He((t1,ci)=>{ci.exports=window.wp.coreData});var pt=He((r1,di)=>{di.exports=window.wp.data});var Br=He((o1,pi)=>{pi.exports=window.wp.blocks});var it=He((s1,mi)=>{mi.exports=window.wp.blockEditor});var gi=He((f1,hi)=>{hi.exports=window.wp.styleEngine});var xi=He((S1,wi)=>{"use strict";wi.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var o,s,n;if(Array.isArray(t)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!e(t[s],r[s]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;for(s of t.entries())if(!e(s[1],r.get(s[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(t[s]!==r[s])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(n=Object.keys(t),o=n.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,n[s]))return!1;for(s=o;s--!==0;){var a=n[s];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Fi=He((_1,_i)=>{"use strict";var pc=function(t){return mc(t)&&!hc(t)};function mc(e){return!!e&&typeof e=="object"}function hc(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||vc(e)}var gc=typeof Symbol=="function"&&Symbol.for,yc=gc?Symbol.for("react.element"):60103;function vc(e){return e.$$typeof===yc}function bc(e){return Array.isArray(e)?[]:{}}function lo(e,t){return t.clone!==!1&&t.isMergeableObject(e)?Nr(bc(e),e,t):e}function wc(e,t,r){return e.concat(t).map(function(o){return lo(o,r)})}function xc(e,t){if(!t.customMerge)return Nr;var r=t.customMerge(e);return typeof r=="function"?r:Nr}function Sc(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function Si(e){return Object.keys(e).concat(Sc(e))}function Ci(e,t){try{return t in e}catch{return!1}}function Cc(e,t){return Ci(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function _c(e,t,r){var o={};return r.isMergeableObject(e)&&Si(e).forEach(function(s){o[s]=lo(e[s],r)}),Si(t).forEach(function(s){Cc(e,s)||(Ci(e,s)&&r.isMergeableObject(t[s])?o[s]=xc(s,r)(e[s],t[s],r):o[s]=lo(t[s],r))}),o}function Nr(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||wc,r.isMergeableObject=r.isMergeableObject||pc,r.cloneUnlessOtherwiseSpecified=lo;var o=Array.isArray(t),s=Array.isArray(e),n=o===s;return n?o?r.arrayMerge(e,t,r):_c(e,t,r):lo(t,r)}Nr.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(o,s){return Nr(o,s,r)},{})};var Fc=Nr;_i.exports=Fc});var kn=He((jb,Sl)=>{Sl.exports=window.wp.keycodes});var Ol=He((Qb,kl)=>{kl.exports=window.wp.apiFetch});var ef=He((x_,$u)=>{$u.exports=window.wp.date});function va(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(r=va(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function Tf(){for(var e,t,r=0,o="",s=arguments.length;r<s;r++)(e=arguments[r])&&(t=va(e))&&(o&&(o+=" "),o+=t);return o}var Ze=Tf;var Sa=u(Rr(),1),xa={};function Ps(e,t){let r=Sa.useRef(xa);return r.current===xa&&(r.current=e(t)),r}function Pf(e,t){return function(o,...s){let n=new URL(e);return n.searchParams.set("code",o.toString()),s.forEach(a=>n.searchParams.append("args[]",a)),`${t} error #${o}; visit ${n} for the full message.`}}var Af=Pf("https://base-ui.com/production-error","Base UI"),_a=Af;var fr=u(Rr(),1);function As(e,t,r,o){let s=Ps(ka).current;return Rf(s,e,t,r,o)&&Oa(s,[e,t,r,o]),s.callback}function Fa(e){let t=Ps(ka).current;return Ef(t,e)&&Oa(t,e),t.callback}function ka(){return{callback:null,cleanup:null,refs:[]}}function Rf(e,t,r,o,s){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==s}function Ef(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Oa(e,t){if(e.refs=t,t.every(r=>r==null)){e.callback=null;return}e.callback=r=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),r!=null){let o=Array(t.length).fill(null);for(let s=0;s<t.length;s+=1){let n=t[s];if(n!=null)switch(typeof n){case"function":{let a=n(r);typeof a=="function"&&(o[s]=a);break}case"object":{n.current=r;break}default:}}e.cleanup=()=>{for(let s=0;s<t.length;s+=1){let n=t[s];if(n!=null)switch(typeof n){case"function":{let a=o[s];typeof a=="function"?a():n(null);break}case"object":{n.current=null;break}default:}}}}}}var Aa=u(Rr(),1);var Ta=u(Rr(),1),If=parseInt(Ta.version,10);function Pa(e){return If>=e}function Rs(e){if(!Aa.isValidElement(e))return null;let t=e,r=t.props;return(Pa(19)?r?.ref:t.ref)??null}function ro(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}var Zy=Object.freeze([]),Er=Object.freeze({});function Ra(e,t){let r={};for(let o in e){let s=e[o];if(t?.hasOwnProperty(o)){let n=t[o](s);n!=null&&Object.assign(r,n);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Ea(e,t){return typeof e=="function"?e(t):e}function Ia(e,t){return typeof e=="function"?e(t):e}var Es={};function ur(e,t,r,o,s){if(!r&&!o&&!s&&!e)return To(t);let n=To(e);return t&&(n=oo(n,t)),r&&(n=oo(n,r)),o&&(n=oo(n,o)),s&&(n=oo(n,s)),n}function La(e){if(e.length===0)return Es;if(e.length===1)return To(e[0]);let t=To(e[0]);for(let r=1;r<e.length;r+=1)t=oo(t,e[r]);return t}function To(e){return Is(e)?{...Va(e,Es)}:Lf(e)}function oo(e,t){return Is(t)?Va(t,e):Bf(e,t)}function Lf(e){let t={...e};for(let r in t){let o=t[r];Ba(r,o)&&(t[r]=Na(o))}return t}function Bf(e,t){if(!t)return e;for(let r in t){let o=t[r];switch(r){case"style":{e[r]=ro(e.style,o);break}case"className":{e[r]=Ls(e.className,o);break}default:Ba(r,o)?e[r]=Vf(e[r],o):e[r]=o}}return e}function Ba(e,t){let r=e.charCodeAt(0),o=e.charCodeAt(1),s=e.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof t=="function"||typeof t>"u")}function Is(e){return typeof e=="function"}function Va(e,t){return Is(e)?e(t):e??Es}function Vf(e,t){return t?e?(...r)=>{let o=r[0];if(Da(o)){let n=o;za(n);let a=t(...r);return n.baseUIHandlerPrevented||e?.(...r),a}let s=t(...r);return e?.(...r),s}:Na(t):e}function Na(e){return e&&((...t)=>{let r=t[0];return Da(r)&&za(r),e(...t)})}function za(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Ls(e,t){return t?e?t+" "+e:t:e}function Da(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Bs=u(Rr(),1);function Ma(e,t,r={}){let o=t.render,s=Nf(t,r);if(r.enabled===!1)return null;let n=r.state??Er;return Mf(e,o,s,n)}function Nf(e,t={}){let{className:r,style:o,render:s}=e,{state:n=Er,ref:a,props:l,stateAttributesMapping:h,enabled:f=!0}=t,c=f?Ea(r,n):void 0,d=f?Ia(o,n):void 0,m=f?Ra(n,h):Er,g=f&&l?zf(l):void 0,y=f?ro(m,g)??{}:Er;return typeof document<"u"&&(f?Array.isArray(a)?y.ref=Fa([y.ref,Rs(s),...a]):y.ref=As(y.ref,Rs(s),a):As(null,null)),f?(c!==void 0&&(y.className=Ls(y.className,c)),d!==void 0&&(y.style=ro(y.style,d)),y):Er}function zf(e){return Array.isArray(e)?La(e):ur(void 0,e)}var Df=Symbol.for("react.lazy");function Mf(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let s=ur(r,t.props);s.ref=r.ref;let n=t;return n?.$$typeof===Df&&(n=fr.Children.toArray(t)[0]),fr.cloneElement(n,s)}if(e&&typeof e=="string")return jf(e,r);throw new Error(_a(8))}function jf(e,t){return e==="button"?(0,Bs.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Bs.createElement)("img",{alt:"",...t,key:t.key}):fr.createElement(e,t)}function Po(e){return Ma(e.defaultTagName??"div",e,e)}var Ua=u(ve(),1),Vs="data-wp-hash";function Ns(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Uf(document)),e.__wpStyleRuntime}function Gf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Vs}]`))if(r.getAttribute(Vs)===t)return!0;return!1}function Wa(e,t,r){if(!e.head)return;let o=Ns(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Gf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Vs,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Uf(e){let t=Ns();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Wa(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Ha(e,t){let r=Ns();r.styles.set(e,t);for(let o of r.documents.keys())Wa(o,e,t)}typeof process>"u",Ha("0c8601dd83",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');var ja={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",Ha("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Ga={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ao=(0,Ua.forwardRef)(function({variant:t="body-md",render:r,className:o,...s},n){return Po({render:r,defaultTagName:"span",ref:n,props:ur(s,{className:Ze(ja.text,Ga.heading,Ga.p,ja[t],o)})})});var Ro=u(ve(),1),so=(0,Ro.forwardRef)(({icon:e,size:t=24,...r},o)=>(0,Ro.cloneElement)(e,{width:t,height:t,...r,ref:o}));var Eo=u(Ir(),1),zs=u(D(),1),cr=(0,zs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,zs.jsx)(Eo.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Io=u(Ir(),1),Ds=u(D(),1),dr=(0,Ds.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Io.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Lo=u(Ir(),1),Ms=u(D(),1),js=(0,Ms.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ms.jsx)(Lo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Bo=u(Ir(),1),Gs=u(D(),1),Vo=(0,Gs.jsx)(Bo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Gs.jsx)(Bo.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var No=u(Ir(),1),Us=u(D(),1),zo=(0,Us.jsx)(No.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Us.jsx)(No.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Xa=u(ve(),1),Hs="data-wp-hash";function qs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Hf(document)),e.__wpStyleRuntime}function Wf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Hs}]`))if(r.getAttribute(Hs)===t)return!0;return!1}function Ka(e,t,r){if(!e.head)return;let o=qs(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Wf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Hs,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Hf(e){let t=qs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Ka(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function qf(e,t){let r=qs();r.styles.set(e,t);for(let o of r.documents.keys())Ka(o,e,t)}typeof process>"u",qf("b51ff41489","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");var Yf={stack:"_19ce0419607e1896__stack"},Zf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Lr=(0,Xa.forwardRef)(function({direction:t,gap:r,align:o,justify:s,wrap:n,render:a,...l},h){let f={gap:r&&Zf[r],alignItems:o,justifyContent:s,flexDirection:t,flexWrap:n};return Po({render:a,ref:h,props:ur(l,{style:f,className:Yf.stack})})});var Ja=u(ve(),1),Qa=u(D(),1),$a=(0,Ja.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...s},n)=>(0,Qa.jsx)(o,{ref:n,className:Ze("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...s,children:e}));$a.displayName="NavigableRegion";var ei=$a;var ri=u(X(),1),{Fill:oi,Slot:si}=(0,ri.createSlotFill)("SidebarToggle");var Ft=u(D(),1),Ys="data-wp-hash";function Zs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Kf(document)),e.__wpStyleRuntime}function Xf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ys}]`))if(r.getAttribute(Ys)===t)return!0;return!1}function ni(e,t,r){if(!e.head)return;let o=Zs(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Xf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Ys,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Kf(e){let t=Zs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)ni(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Jf(e,t){let r=Zs();r.styles.set(e,t);for(let o of r.documents.keys())ni(o,e,t)}typeof process>"u",Jf("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var mr={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function ai({headingLevel:e=1,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,actions:a,showSidebarToggle:l=!0}){let h=`h${e}`;return(0,Ft.jsxs)(Lr,{direction:"column",className:mr.header,children:[(0,Ft.jsxs)(Lr,{className:mr["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Ft.jsxs)(Lr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[l&&(0,Ft.jsx)(si,{bubblesVirtually:!0,className:mr["sidebar-toggle-slot"]}),o&&(0,Ft.jsx)("div",{className:mr["header-visual"],"aria-hidden":"true",children:o}),s&&(0,Ft.jsx)(Ao,{className:mr["header-title"],render:(0,Ft.jsx)(h,{}),variant:"heading-lg",children:s}),t,r]}),a&&(0,Ft.jsx)(Lr,{align:"center",className:mr["header-actions"],direction:"row",gap:"sm",children:a})]}),n&&(0,Ft.jsx)(Ao,{render:(0,Ft.jsx)("p",{}),variant:"body-md",className:mr["header-subtitle"],children:n})]})}var no=u(D(),1),Ks="data-wp-hash";function Js(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&$f(document)),e.__wpStyleRuntime}function Qf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ks}]`))if(r.getAttribute(Ks)===t)return!0;return!1}function ii(e,t,r){if(!e.head)return;let o=Js(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Qf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Ks,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function $f(e){let t=Js();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)ii(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function ec(e,t){let r=Js();r.styles.set(e,t);for(let o of r.documents.keys())ii(o,e,t)}typeof process>"u",ec("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Xs={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function li({headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,children:a,className:l,actions:h,ariaLabel:f,hasPadding:c=!1,showSidebarToggle:d=!0}){let m=Ze(Xs.page,l);return(0,no.jsxs)(ei,{className:m,ariaLabel:f??(typeof s=="string"?s:""),children:[(s||t||r||h||o)&&(0,no.jsx)(ai,{headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,actions:h,showSidebarToggle:d}),c?(0,no.jsx)("div",{className:Ze(Xs.content,Xs["has-padding"]),children:a}):a]})}li.SidebarToggleFill=oi;var Qs=li;var Jr=u(ie()),gf=u(X()),yf=u(fi()),Fs=u(wt()),vf=u(pt()),bf=u(ve());var pf=u(X(),1),mf=u(Br(),1),_y=u(pt(),1),Fy=u(it(),1),ia=u(ve(),1),ky=u(pr(),1);function Vr(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let n of t){let a=s[n];s=s[n]=Array.isArray(a)?[...a]:{...a}}return s[o]=r,e}var xt=(e,t,r)=>{let o=Array.isArray(t)?t:t.split("."),s=e;return o.forEach(n=>{s=s?.[n]}),s??r};var tc=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.minWidth","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function $s(e,t,r){let o=r?".blocks."+r:"",s=t?"."+t:"",n=`settings${o}${s}`,a=`settings${s}`;if(t)return xt(e,n)??xt(e,a);let l={};return tc.forEach(h=>{let f=xt(e,`settings${o}.${h}`)??xt(e,`settings.${h}`);f!==void 0&&(l=Vr(l,h.split("."),f))}),l}function en(e,t,r,o){let s=o?".blocks."+o:"",n=t?"."+t:"",a=`settings${s}${n}`;return Vr(e,a.split("."),r)}var uc=u(gi(),1);var rc="1600px",oc="320px",sc=1,nc=.25,ac=.75,ic="14px";function yi({minimumFontSize:e,maximumFontSize:t,fontSize:r,minimumViewportWidth:o=oc,maximumViewportWidth:s=rc,scaleFactor:n=sc,minimumFontSizeLimit:a}){if(a=It(a)?a:ic,r){let b=It(r);if(!b?.unit||!b?.value)return null;let P=It(a,{coerceTo:b.unit});if(P?.value&&!e&&!t&&b?.value<=P?.value)return null;if(t||(t=`${b.value}${b.unit}`),!e){let q=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(q),nc),ac),N=ao(b.value*I,3);P?.value&&N<P?.value?e=`${P.value}${P.unit}`:e=`${N}${b.unit}`}}let l=It(e),h=l?.unit||"rem",f=It(t,{coerceTo:h});if(!l||!f)return null;let c=It(e,{coerceTo:"rem"}),d=It(s,{coerceTo:h}),m=It(o,{coerceTo:h});if(!d||!m||!c)return null;let g=d.value-m.value;if(!g)return null;let y=ao(m.value/100,3),T=ao(y,3)+h,O=100*((f.value-l.value)/g),_=ao((O||1)*n,3),S=`${c.value}${c.unit} + ((1vw - ${T}) * ${_})`;return`clamp(${e}, ${S}, ${t})`}function It(e,t={}){if(typeof e!="string"&&typeof e!="number")return null;isFinite(e)&&(e=`${e}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...t},n=s?.join("|"),a=new RegExp(`^(\\d*\\.?\\d+)(${n}){1,1}$`),l=e.toString().match(a);if(!l||l.length<3)return null;let[,h,f]=l,c=parseFloat(h);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:ao(c,3),unit:f}:null}function ao(e,t=3){let r=Math.pow(10,t);return Math.round(e*r)/r}function tn(e){let t=e?.fluid;return t===!0||t&&typeof t=="object"&&Object.keys(t).length>0}function lc(e){let t=e?.typography??{},r=e?.layout,o=It(r?.wideSize)?r?.wideSize:null;return tn(t)&&o?{fluid:{maxViewportWidth:o,...typeof t.fluid=="object"?t.fluid:{}}}:{fluid:t?.fluid}}function vi(e,t){let{size:r}=e;if(!r||r==="0"||e?.fluid===!1||!tn(t?.typography)&&!tn(e))return r;let o=lc(t)?.fluid??{},s=yi({minimumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.min,maximumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var fc=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:e})=>`url( '#wp-duotone-${e}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(e,t)=>vi(e,t),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:e})=>e,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function bi(e,t,r=[],o="slug",s){let n=[t?xt(e,["blocks",t,...r]):void 0,xt(e,r)].filter(Boolean);for(let a of n)if(a){let l=["custom","theme","default"];for(let h of l){let f=a[h];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||bi(e,t,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function cc(e,t,r,[o,s]=[]){let n=fc.find(l=>l.cssVarInfix===o);if(!n||!e.settings)return r;let a=bi(e.settings,t,n.path,"slug",s);if(a){let{valueKey:l}=n,h=a[l];return Do(e,t,h)}return r}function dc(e,t,r,o=[]){let s=(t?xt(e?.settings??{},["blocks",t,"custom",...o]):void 0)??xt(e?.settings??{},["custom",...o]);return s?Do(e,t,s):r}function Do(e,t,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=xt(e,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",n=")",a;if(r.startsWith(o))a=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(n))a=r.slice(s.length,-n.length).split("--");else return r;let[l,...h]=a;return l==="preset"?cc(e,t,r,h):l==="custom"?dc(e,t,r,h):r}function Mo(e,t,r,o=!0){let s=t?"."+t:"",n=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!e)return;let a=xt(e,n);return o?Do(e,r,a):a}function rn(e,t,r,o){let s=t?"."+t:"",n=o?`styles.blocks.${o}${s}`:`styles${s}`;return Vr(e,n.split("."),r)}var on=u(xi(),1);function io(e,t){return typeof e!="object"||typeof t!="object"?e===t:(0,on.default)(e?.styles,t?.styles)&&(0,on.default)(e?.settings,t?.settings)}var Ti=u(Fi(),1);function ki(e){return Object.prototype.toString.call(e)==="[object Object]"}function Oi(e){var t,r;return ki(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(ki(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function hr(e,t){return(0,Ti.default)(e,t,{isMergeableObject:Oi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var kc={grad:.9,turn:360,rad:360/(2*Math.PI)},Ut=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Xe=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},kt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Vi=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},Pi=function(e){return{r:kt(e.r,0,255),g:kt(e.g,0,255),b:kt(e.b,0,255),a:kt(e.a)}},sn=function(e){return{r:Xe(e.r),g:Xe(e.g),b:Xe(e.b),a:Xe(e.a,3)}},Oc=/^#([0-9a-f]{3,8})$/i,jo=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Ni=function(e){var t=e.r,r=e.g,o=e.b,s=e.a,n=Math.max(t,r,o),a=n-Math.min(t,r,o),l=a?n===t?(r-o)/a:n===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(l<0?l+6:l),s:n?a/n*100:0,v:n/255*100,a:s}},zi=function(e){var t=e.h,r=e.s,o=e.v,s=e.a;t=t/360*6,r/=100,o/=100;var n=Math.floor(t),a=o*(1-r),l=o*(1-(t-n)*r),h=o*(1-(1-t+n)*r),f=n%6;return{r:255*[o,l,a,a,h,o][f],g:255*[h,o,o,l,a,a][f],b:255*[a,a,h,o,o,l][f],a:s}},Ai=function(e){return{h:Vi(e.h),s:kt(e.s,0,100),l:kt(e.l,0,100),a:kt(e.a)}},Ri=function(e){return{h:Xe(e.h),s:Xe(e.s),l:Xe(e.l),a:Xe(e.a,3)}},Ei=function(e){return zi((r=(t=e).s,{h:t.h,s:(r*=((o=t.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:t.a}));var t,r,o},uo=function(e){return{h:(t=Ni(e)).h,s:(s=(200-(r=t.s))*(o=t.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:t.a};var t,r,o,s},Tc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Pc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ac=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Rc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ln={string:[[function(e){var t=Oc.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Xe(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Xe(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=Ac.exec(e)||Rc.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:Pi({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=Tc.exec(e)||Pc.exec(e);if(!t)return null;var r,o,s=Ai({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(kc[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Ei(s)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,s=e.a,n=s===void 0?1:s;return Ut(t)&&Ut(r)&&Ut(o)?Pi({r:Number(t),g:Number(r),b:Number(o),a:Number(n)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,s=e.a,n=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var a=Ai({h:Number(t),s:Number(r),l:Number(o),a:Number(n)});return Ei(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,s=e.a,n=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var a=(function(l){return{h:Vi(l.h),s:kt(l.s,0,100),v:kt(l.v,0,100),a:kt(l.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(n)});return zi(a)},"hsv"]]},Ii=function(e,t){for(var r=0;r<t.length;r++){var o=t[r][0](e);if(o)return[o,t[r][1]]}return[null,void 0]},Ec=function(e){return typeof e=="string"?Ii(e.trim(),ln.string):typeof e=="object"&&e!==null?Ii(e,ln.object):[null,void 0]};var nn=function(e,t){var r=uo(e);return{h:r.h,s:kt(r.s+100*t,0,100),l:r.l,a:r.a}},an=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},Li=function(e,t){var r=uo(e);return{h:r.h,s:r.s,l:kt(r.l+100*t,0,100),a:r.a}},un=(function(){function e(t){this.parsed=Ec(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return Xe(an(this.rgba),2)},e.prototype.isDark=function(){return an(this.rgba)<.5},e.prototype.isLight=function(){return an(this.rgba)>=.5},e.prototype.toHex=function(){return t=sn(this.rgba),r=t.r,o=t.g,s=t.b,a=(n=t.a)<1?jo(Xe(255*n)):"","#"+jo(r)+jo(o)+jo(s)+a;var t,r,o,s,n,a},e.prototype.toRgb=function(){return sn(this.rgba)},e.prototype.toRgbString=function(){return t=sn(this.rgba),r=t.r,o=t.g,s=t.b,(n=t.a)<1?"rgba("+r+", "+o+", "+s+", "+n+")":"rgb("+r+", "+o+", "+s+")";var t,r,o,s,n},e.prototype.toHsl=function(){return Ri(uo(this.rgba))},e.prototype.toHslString=function(){return t=Ri(uo(this.rgba)),r=t.h,o=t.s,s=t.l,(n=t.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+n+")":"hsl("+r+", "+o+"%, "+s+"%)";var t,r,o,s,n},e.prototype.toHsv=function(){return t=Ni(this.rgba),{h:Xe(t.h),s:Xe(t.s),v:Xe(t.v),a:Xe(t.a,3)};var t},e.prototype.invert=function(){return Lt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),Lt(nn(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),Lt(nn(this.rgba,-t))},e.prototype.grayscale=function(){return Lt(nn(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),Lt(Li(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),Lt(Li(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?Lt({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Xe(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=uo(this.rgba);return typeof t=="number"?Lt({h:t,s:r.s,l:r.l,a:r.a}):Xe(r.h)},e.prototype.isEqual=function(t){return this.toHex()===Lt(t).toHex()},e})(),Lt=function(e){return e instanceof un?e:new un(e)},Bi=[],Di=function(e){e.forEach(function(t){Bi.indexOf(t)<0&&(t(un,ln),Bi.push(t))})};var fn=u(ve(),1);var Mi=u(ve(),1),Je=(0,Mi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var ji=u(D(),1);function fo({children:e,value:t,baseValue:r,onChange:o,fontLibraryEnabled:s}){let n=(0,fn.useMemo)(()=>hr(r,t),[r,t]),a=(0,fn.useMemo)(()=>({user:t,base:r,merged:n,onChange:o,fontLibraryEnabled:s}),[t,r,n,o,s]);return(0,ji.jsx)(Je.Provider,{value:a,children:e})}var Wt=u(X(),1),al=u(ie(),1);var qc=u(pt(),1),Yc=u(wt(),1);var Gi=u(D(),1);function cn({className:e,...t}){return(0,Gi.jsx)(so,{className:Ze(e,"global-styles-ui-icon-with-current-color"),...t})}var Jt=u(X(),1);var gr=u(D(),1);function Ic({icon:e,children:t,...r}){return(0,gr.jsxs)(Jt.__experimentalItem,{...r,children:[e&&(0,gr.jsxs)(Jt.__experimentalHStack,{justify:"flex-start",children:[(0,gr.jsx)(cn,{icon:e,size:24}),(0,gr.jsx)(Jt.FlexItem,{children:t})]}),!e&&t]})}function Bt(e){return(0,gr.jsx)(Jt.Navigator.Button,{as:Ic,...e})}var Vc=u(X(),1);var Nc=u(ie(),1),Xi=u(it(),1);var dn=function(e){var t=e/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},pn=function(e){return .2126*dn(e.r)+.7152*dn(e.g)+.0722*dn(e.b)};function Ui(e){e.prototype.luminance=function(){return t=pn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*t)/o+0;var t,r,o},e.prototype.contrast=function(t){t===void 0&&(t="#FFF");var r,o,s,n,a,l,h,f=t instanceof e?t:new e(t);return n=this.rgba,a=f.toRgb(),l=pn(n),h=pn(a),r=l>h?(l+.05)/(h+.05):(h+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},e.prototype.isReadable=function(t,r){return t===void 0&&(t="#FFF"),r===void 0&&(r={}),this.contrast(t)>=(l=(a=(o=r).size)===void 0?"normal":a,(n=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:n==="AA"&&l==="large"?3:4.5);var o,s,n,a,l}}var Rt=u(ve(),1),qi=u(pt(),1),Yi=u(wt(),1),hn=u(ie(),1);var De=u(ie(),1),Y1={link:[{value:":link",label:(0,De.__)("Link")},{value:":any-link",label:(0,De.__)("Any Link")},{value:":visited",label:(0,De.__)("Visited")},{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}],button:[{value:":link",label:(0,De.__)("Link")},{value:":any-link",label:(0,De.__)("Any Link")},{value:":visited",label:(0,De.__)("Visited")},{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}]},Z1={"core/button":[{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}]},X1=[{value:"tablet",label:(0,De.__)("Tablet")},{value:"mobile",label:(0,De.__)("Mobile")}];function mn(e,t){if(!t?.length||typeof e!="object"||!e||!Object.keys(e).length)return e;for(let r in e)t.includes(r)?delete e[r]:typeof e[r]=="object"&&mn(e[r],t);return e}var Go=(e,t)=>{if(!e||!t?.length)return{};let r={};return Object.keys(e).forEach(o=>{if(t.includes(o))r[o]=e[o];else if(typeof e[o]=="object"){let s=Go(e[o],t);Object.keys(s).length&&(r[o]=s)}}),r};function co(e,t){let r=Go(structuredClone(e),t);return io(r,e)}function Wi(e,t){if(!Array.isArray(e)||!t)return null;let o=t.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return e.find(s=>s.slug===o)}function Hi(e){let t=e?.settings?.typography?.fontFamilies?.theme,r=e?.settings?.typography?.fontFamilies?.custom,o=[];t&&r?o=[...t,...r]:t?o=t:r&&(o=r);let s=e?.styles?.typography?.fontFamily,n=Wi(o,s),a=e?.styles?.elements?.heading?.typography?.fontFamily,l;return a?l=Wi(o,e?.styles?.elements?.heading?.typography?.fontFamily):l=n,[n,l]}Di([Ui]);function Fe(e,t,r="merged",o=!0,s){let{user:n,base:a,merged:l,onChange:h}=(0,Rt.useContext)(Je),f=s?.split(".").filter(Boolean)??[],c=f.find(O=>O.startsWith(":")),d=f.filter(O=>!O.startsWith(":")).join("."),m=[e,d].filter(Boolean).join("."),g=l;r==="base"?g=a:r==="user"&&(g=n);let y=(0,Rt.useMemo)(()=>{let O=Mo(g,m,t,o);return c?O?.[c]??{}:O},[g,m,t,o,c]),T=(0,Rt.useCallback)(O=>{let _=O;c&&(_={...Mo(n,m,t,!1),[c]:O});let S=rn(n,m,_,t);h(S)},[n,h,m,t,c]);return[y,T]}function Te(e,t,r="merged"){let{user:o,base:s,merged:n,onChange:a}=(0,Rt.useContext)(Je),l=n;r==="base"?l=s:r==="user"&&(l=o);let h=(0,Rt.useMemo)(()=>$s(l,e,t),[l,e,t]),f=(0,Rt.useCallback)(c=>{let d=en(o,e,c,t);a(d)},[o,a,e,t]);return[h,f]}var Lc=[];function Bc({title:e,settings:t,styles:r}){return e===(0,hn.__)("Default")||Object.keys(t||{}).length>0||Object.keys(r||{}).length>0}function Uo(e=[]){let{variationsFromTheme:t}=(0,qi.useSelect)(o=>({variationsFromTheme:o(Yi.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||Lc}),[]),{user:r}=(0,Rt.useContext)(Je);return(0,Rt.useMemo)(()=>{let o=structuredClone(r),s=mn(o,e);s.title=(0,hn.__)("Default");let n=t.filter(l=>co(l,e)).map(l=>hr(s,l)),a=[s,...n];return a?.length?a.filter(Bc):[]},[e,r,t])}var Zi=u(Ws(),1),{lock:o0,unlock:ye}=(0,Zi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var gn=u(D(),1),{useHasDimensionsPanel:l0,useHasTypographyPanel:u0,useHasColorPanel:f0,useSettingsForBlockElement:c0,useHasBackgroundPanel:d0}=ye(Xi.privateApis);var Vt=u(X(),1);function zr(){let[e="black"]=Fe("color.text"),[t="white"]=Fe("color.background"),[r=e]=Fe("elements.h1.color.text"),[o=r]=Fe("elements.link.color.text"),[s=o]=Fe("elements.button.color.background"),[n]=Te("color.palette.core")||[],[a]=Te("color.palette.theme")||[],[l]=Te("color.palette.custom")||[],h=(a??[]).concat(l??[]).concat(n??[]),f=h.filter(({color:m})=>m===e),c=h.filter(({color:m})=>m===s),d=f.concat(c).concat(h).filter(({color:m})=>m!==t).slice(0,2);return{paletteColors:h,highlightedColors:d}}var Qi=u(ve(),1),$i=u(X(),1),vn=u(ie(),1);function zc(e,t){return t.length===0?null:(t.sort((r,o)=>Math.abs(e-r)-Math.abs(e-o)),t[0])}function Dc(e){let t=[];return e.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),n=parseInt(o[1]);for(let a=s;a<=n;a+=100)t.push(a)}else o.length===1&&t.push(parseInt(o[0]))}),t}function Ki(e){let t=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=e.trim(),o=s=>(s=s.trim(),s.match(t)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function yn(e){if(!e)return"";let t=e.trim();return t.includes(",")&&(t=(t.split(",").find(r=>r.trim()!=="")??"").trim()),t=t.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(t=`"${t}"`),t}function Dr(e){let t={fontFamily:Ki(e.fontFamily)};if(!("fontFace"in e)||!Array.isArray(e.fontFace))return t.fontWeight="400",t.fontStyle="normal",t;if(e.fontFace){let r=e.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){t.fontStyle="normal";let o=Dc(r),s=zc(400,o);t.fontWeight=String(s)||"400"}else t.fontStyle=e.fontFace.length&&e.fontFace[0].fontStyle||"normal",t.fontWeight=e.fontFace.length&&String(e.fontFace[0].fontWeight)||"400"}return t}function Ji(e){return{fontFamily:Ki(e.fontFamily),fontStyle:e.fontStyle||"normal",fontWeight:e.fontWeight||"400"}}var po=u(D(),1);function Wo({fontSize:e,variation:t}){let{base:r}=(0,Qi.useContext)(Je),o=r;t&&(o={...r,...t});let[s]=Fe("color.text"),[n,a]=Hi(o),l=n?Dr(n):{},h=a?Dr(a):{};return s&&(l.color=s,h.color=s),e&&(l.fontSize=e,h.fontSize=e),(0,po.jsxs)($i.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,po.jsx)("span",{style:h,children:(0,vn._x)("A","Uppercase letter A")}),(0,po.jsx)("span",{style:l,children:(0,vn._x)("a","Lowercase letter A")})]})}var el=u(X(),1);var tl=u(D(),1);function rl({normalizedColorSwatchSize:e,ratio:t}){let{highlightedColors:r}=zr(),o=e*t;return r.map(({slug:s,color:n},a)=>(0,tl.jsx)(el.__unstableMotion.div,{style:{height:o,width:o,background:n,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:a===1?.2:.1}},`${s}-${a}`))}var nl=u(X(),1),Mr=u(pr(),1),yr=u(ve(),1);var Qt=u(D(),1),ol=248,sl=152,Mc={leading:!0,trailing:!0};function jc({children:e,label:t,isFocused:r,withHoverView:o}){let[s="white"]=Fe("color.background"),[n]=Fe("color.gradient"),a=(0,Mr.useReducedMotion)(),[l,h]=(0,yr.useState)(!1),[f,{width:c}]=(0,Mr.useResizeObserver)(),[d,m]=(0,yr.useState)(c),[g,y]=(0,yr.useState)(),T=(0,Mr.useThrottle)(m,250,Mc);(0,yr.useLayoutEffect)(()=>{c&&T(c)},[c,T]),(0,yr.useLayoutEffect)(()=>{let b=d?d/ol:1,P=b-(g||0);(Math.abs(P)>.1||!g)&&y(b)},[d,g]);let O=c?c/ol:1,_=g||O;return(0,Qt.jsxs)(Qt.Fragment,{children:[(0,Qt.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qt.jsx)("div",{className:Ze("global-styles-ui-preview__wrapper",{"is-hoverable":o}),style:{height:sl*_},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),tabIndex:-1,children:(0,Qt.jsx)(nl.__unstableMotion.div,{style:{height:sl*_,width:"100%",background:n??s},initial:"start",animate:(l||r)&&!a&&t?"hover":"start",children:[].concat(e).map((b,P)=>b({ratio:_,key:P}))})})]})}var jr=jc;var mt=u(D(),1),Gc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},Uc={hover:{opacity:1},start:{opacity:.5}},Wc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function Hc({label:e,isFocused:t,withHoverView:r,variation:o}){let[s]=Fe("typography.fontWeight"),[n="serif"]=Fe("typography.fontFamily"),[a=n]=Fe("elements.h1.typography.fontFamily"),[l=s]=Fe("elements.h1.typography.fontWeight"),[h="black"]=Fe("color.text"),[f=h]=Fe("elements.h1.color.text"),{paletteColors:c}=zr();return(0,mt.jsxs)(jr,{label:e,isFocused:t,withHoverView:r,children:[({ratio:d,key:m})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:Gc,style:{height:"100%",overflow:"hidden"},children:(0,mt.jsxs)(Vt.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,mt.jsx)(Wo,{fontSize:65*d,variation:o}),(0,mt.jsx)(Vt.__experimentalVStack,{spacing:4*d,children:(0,mt.jsx)(rl,{normalizedColorSwatchSize:32,ratio:d})})]})},m),({key:d})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:r?Uc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,mt.jsx)(Vt.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:m},g)=>(0,mt.jsx)("div",{style:{height:"100%",background:m,flexGrow:1}},g))})},d),({ratio:d,key:m})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:Wc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,mt.jsx)(Vt.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:e&&(0,mt.jsx)("div",{style:{fontSize:40*d,fontFamily:a,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:e})})},m)]})}var bn=Hc;var il=u(D(),1);var xn=u(Br(),1),Gr=u(ie(),1),br=u(X(),1),Sn=u(pt(),1),$t=u(ve(),1),Ho=u(it(),1),pl=u(pr(),1);import{speak as Jc}from"@wordpress/a11y";var ll=u(Br(),1),ul=u(pt(),1),Zc=u(X(),1);var Xc=u(D(),1);function Kc(e,t){return e?.filter(r=>r.source==="block"||t.includes(r.name))||[]}function wn(e){let t=(0,ul.useSelect)(s=>{let{getBlockStyles:n}=s(ll.store);return n(e)},[e]),[r]=Fe("variations",e),o=Object.keys(r??{});return Kc(t,o)}var vr=u(X(),1),fl=u(ie(),1);var cl=u(it(),1);var dl=u(D(),1),{StateControl:U0}=ye(cl.privateApis);var Nt=u(D(),1),{useHasDimensionsPanel:Qc,useHasTypographyPanel:$c,useHasBorderPanel:ed,useSettingsForBlockElement:td,useHasColorPanel:rd}=ye(Ho.privateApis);function od(){let e=(0,Sn.useSelect)(s=>s(xn.store).getBlockTypes(),[]),t=(s,n)=>{let{core:a,noncore:l}=s;return(n.name.startsWith("core/")?a:l).push(n),s},{core:r,noncore:o}=e.reduce(t,{core:[],noncore:[]});return[...r,...o]}function sd(e){let[t]=Te("",e),r=td(t,e),o=$c(r),s=rd(r),n=ed(r),a=Qc(r),l=n||a,h=!!wn(e)?.length;return o||s||l||h}function nd({block:e}){return sd(e.name)?(0,Nt.jsx)(Bt,{path:"/blocks/"+encodeURIComponent(e.name),children:(0,Nt.jsxs)(br.__experimentalHStack,{justify:"flex-start",children:[(0,Nt.jsx)(Ho.BlockIcon,{icon:e.icon}),(0,Nt.jsx)(br.FlexItem,{children:e.title})]})}):null}function ad({filterValue:e}){let t=od(),r=(0,pl.useDebounce)(Jc,500),{isMatchingSearchTerm:o}=(0,Sn.useSelect)(xn.store),s=e?t.filter(a=>o(a,e)):t,n=(0,$t.useRef)(null);return(0,$t.useEffect)(()=>{if(!e)return;let a=n.current?.childElementCount||0,l=(0,Gr.sprintf)((0,Gr._n)("%d result found.","%d results found.",a),a);r(l,"polite")},[e,r]),(0,Nt.jsx)("div",{ref:n,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,Nt.jsx)(br.__experimentalText,{align:"center",as:"p",children:(0,Gr.__)("No blocks found.")}):s.map(a=>(0,Nt.jsx)(nd,{block:a},"menu-itemblock-"+a.name))})}var J0=(0,$t.memo)(ad);var cd=u(Br(),1),yl=u(it(),1),Cn=u(ve(),1),dd=u(pt(),1),pd=u(wt(),1),_n=u(X(),1),vl=u(ie(),1);var id=u(it(),1),ml=u(Br(),1),ld=u(X(),1),ud=u(ve(),1);var fd=u(D(),1);var hl=u(X(),1),gl=u(D(),1);function St({children:e,level:t=2}){return(0,gl.jsx)(hl.__experimentalHeading,{className:"global-styles-ui-subtitle",level:t,children:e})}var Fn=u(D(),1);var{useHasDimensionsPanel:hb,useHasTypographyPanel:gb,useHasBorderPanel:yb,useSettingsForBlockElement:vb,useHasColorPanel:bb,useHasFiltersPanel:wb,useHasImageSettingsPanel:xb,useHasBackgroundPanel:Sb,BackgroundPanel:Cb,BorderPanel:_b,ColorPanel:Fb,TypographyPanel:kb,DimensionsPanel:Ob,FiltersPanel:Tb,ImageSettingsPanel:Pb,AdvancedPanel:Ab}=ye(yl.privateApis);var kg=u(ie(),1),Og=u(X(),1),Tg=u(ve(),1);var md=u(X(),1);var hd=u(D(),1);var gd=u(ie(),1),qo=u(X(),1);var bl=u(D(),1);var Xo=u(X(),1);var wl=u(X(),1);var Yo=u(D(),1),yd=({variation:e,isFocused:t,withHoverView:r})=>(0,Yo.jsx)(jr,{label:e.title,isFocused:t,withHoverView:r,children:({ratio:o,key:s})=>(0,Yo.jsx)(wl.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Yo.jsx)(Wo,{variation:e,fontSize:85*o})},s)}),xl=yd;var Cl=u(X(),1),wr=u(ve(),1),_l=u(kn(),1),Zo=u(ie(),1);var mo=u(D(),1);function Ur({variation:e,children:t,isPill:r=!1,properties:o,showTooltip:s=!1}){let[n,a]=(0,wr.useState)(!1),{base:l,user:h,onChange:f}=(0,wr.useContext)(Je),c=(0,wr.useMemo)(()=>{let O=hr(l,e);return o&&(O=Go(O,o)),{user:e,base:l,merged:O,onChange:()=>{}}},[e,l,o]),d=()=>f(e),m=O=>{O.keyCode===_l.ENTER&&(O.preventDefault(),d())},g=(0,wr.useMemo)(()=>io(h,e),[h,e]),y=e?.title;e?.description&&(y=(0,Zo.sprintf)((0,Zo._x)("%1$s (%2$s)","variation label"),e?.title,e?.description));let T=(0,mo.jsx)("div",{className:Ze("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:d,onKeyDown:m,tabIndex:0,"aria-label":y,"aria-current":g,onFocus:()=>a(!0),onBlur:()=>a(!1),children:(0,mo.jsx)("div",{className:Ze("global-styles-ui-variations_item-preview",{"is-pill":r}),children:t(n)})});return(0,mo.jsx)(Je.Provider,{value:c,children:s?(0,mo.jsx)(Cl.Tooltip,{text:e?.title,children:T}):T})}var xr=u(D(),1),Fl=["typography"];function Ko({title:e,gap:t=2}){let r=Uo(Fl);return r?.length<=1?null:(0,xr.jsxs)(Xo.__experimentalVStack,{spacing:3,children:[e&&(0,xr.jsx)(St,{level:3,children:e}),(0,xr.jsx)(Xo.__experimentalGrid,{columns:3,gap:t,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,xr.jsx)(Ur,{variation:o,properties:Fl,showTooltip:!0,children:()=>(0,xr.jsx)(xl,{variation:o})},s))})]})}var _g=u(ie(),1),xo=u(X(),1);var Fg=u(ve(),1);var Ht=u(ve(),1),or=u(pt(),1),rr=u(wt(),1),An=u(ie(),1);var On=u(Ol(),1),Tl=u(wt(),1),Pl="/wp/v2/font-families";function Al(e){let{receiveEntityRecords:t}=e.dispatch(Tl.store);t("postType","wp_font_family",[],void 0,!0)}async function Rl(e,t){let o=await(0,On.default)({path:Pl,method:"POST",body:e});return Al(t),{id:o.id,...o.font_family_settings,fontFace:[]}}async function El(e,t,r){let o={path:`${Pl}/${e}/font-faces`,method:"POST",body:t},s=await(0,On.default)(o);return Al(r),{id:s.id,...s.font_face_settings}}var Bl=u(X(),1);var Ot=u(ie(),1),Tn=["otf","ttf","woff","woff2"],Il={100:(0,Ot._x)("Thin","font weight"),200:(0,Ot._x)("Extra-light","font weight"),300:(0,Ot._x)("Light","font weight"),400:(0,Ot._x)("Normal","font weight"),500:(0,Ot._x)("Medium","font weight"),600:(0,Ot._x)("Semi-bold","font weight"),700:(0,Ot._x)("Bold","font weight"),800:(0,Ot._x)("Extra-bold","font weight"),900:(0,Ot._x)("Black","font weight")},Ll={normal:(0,Ot._x)("Normal","font style"),italic:(0,Ot._x)("Italic","font style")};var{File:Vl}=window,{kebabCase:vd}=ye(Bl.privateApis);function er(e,t={}){return!e.name&&(e.fontFamily||e.slug)&&(e.name=e.fontFamily||e.slug),{...e,...t}}function bd(e){return typeof e!="string"?!1:e!==decodeURIComponent(e)}function Jo(e){let t=Il[e.fontWeight??""]||e.fontWeight,r=e.fontStyle==="normal"?"":Ll[e.fontStyle??""]||e.fontStyle;return`${t} ${r}`}function wd(e=[],t=[]){let r=new Map;for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function Nl(e=[],t=[]){let r=new Map;for(let o of e)r.set(o.slug,{...o});for(let o of t)if(r.has(o.slug)){let{fontFace:s,...n}=o,a=r.get(o.slug),l=wd(a.fontFace,s);r.set(o.slug,{...n,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function tr(e,t,r="all"){let o;if(typeof t=="string")o=`url(${t})`;else if(t instanceof Vl)o=await t.arrayBuffer();else return;let n=await new window.FontFace(yn(e.fontFamily),o,{style:e.fontStyle,weight:String(e.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(n),r==="iframe"||r==="all"){let a=document.querySelector('iframe[name="editor-canvas"]');a?.contentDocument&&a.contentDocument.fonts.add(n)}}function ho(e,t="all"){let r=o=>{o.forEach(s=>{s.family===yn(e?.fontFamily)&&s.weight===e?.fontWeight&&s.style===e?.fontStyle&&o.delete(s)})};if((t==="document"||t==="all")&&r(document.fonts),t==="iframe"||t==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Wr(e){if(!e)return;let t;if(Array.isArray(e)?t=e[0]:t=e,!t.startsWith("file:."))return bd(t)||(t=encodeURI(t)),t}function zl(e){let t=new FormData,{fontFace:r,category:o,...s}=e,n={...s,slug:vd(e.slug)};return t.append("font_family_settings",JSON.stringify(n)),t}function Dl(e){return(e?.fontFace??[]).map((r,o)=>{let s={...r},n=new FormData;if(s.file){let a=Array.isArray(s.file)?s.file:[s.file],l=[];a.forEach((h,f)=>{let c=`file-${o}-${f}`;n.append(c,h,h.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,n.append("font_face_settings",JSON.stringify(s))}else n.append("font_face_settings",JSON.stringify(s));return n})}async function Ml(e,t,r){let o=[];for(let n of t)try{let a=await El(e,n,r);o.push({status:"fulfilled",value:a})}catch(a){o.push({status:"rejected",reason:a})}let s={errors:[],successes:[]};return o.forEach((n,a)=>{if(n.status==="fulfilled"&&n.value){let l=n.value;s.successes.push(l)}else n.reason&&s.errors.push({data:t[a],message:n.reason.message})}),s}async function jl(e){e=Array.isArray(e)?e:[e];let t=await Promise.all(e.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new Vl([o],s,{type:o.type})})));return t.length===1?t[0]:t}function Pn(e,t){return t.findIndex(r=>r.fontWeight===e.fontWeight&&r.fontStyle===e.fontStyle)!==-1}function Gl(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let n of t){let a=s[n];s=s[n]=Array.isArray(a)?[...a]:{...a}}return s[o]=r,e}function Qo(e,t,r=[]){let o=h=>h.slug===e.slug,s=h=>h.find(o),n=h=>h?r.filter(f=>!o(f)):[...r,e],a=h=>{let f=d=>d.fontWeight===t.fontWeight&&d.fontStyle===t.fontStyle;if(!h)return[...r,{...e,fontFace:[t]}];let c=h.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,t],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return t?a(l):n(l)}var Ul=u(D(),1),lt=(0,Ht.createContext)({});lt.displayName="FontLibraryContext";function xd({children:e}){let t=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(x=>{let{__experimentalGetCurrentGlobalStylesId:E}=x(rr.store);return{globalStylesId:E()}},[]),n=(0,rr.useEntityRecord)("root","globalStyles",s),[a,l]=(0,Ht.useState)(!1),{records:h=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(h||[]).map(x=>({id:x.id,...x.font_family_settings||{},fontFace:x?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,m]=Te("typography.fontFamilies"),g=async x=>{if(!n.record)return;let E=n.record,te=Gl(E??{},["settings","typography","fontFamilies"],x);await r("root","globalStyles",te)},[y,T]=(0,Ht.useState)(""),[O,_]=(0,Ht.useState)(void 0),S=d?.theme?d.theme.map(x=>er(x,{source:"theme"})).sort((x,E)=>x.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[],P=c?c.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[];(0,Ht.useEffect)(()=>{y||_(void 0)},[y]);let q=x=>{if(!x){_(void 0);return}let te=(x.source==="theme"?S:P).find(ce=>ce.slug===x.slug);_({...te||x,source:x.source})},[I]=(0,Ht.useState)(new Set),N=x=>x.reduce((te,ce)=>{let ae=ce?.fontFace&&ce.fontFace?.length>0?ce?.fontFace.map(Ce=>`${Ce.fontStyle??""}${Ce.fontWeight??""}`):["normal400"];return te[ce.slug]=ae,te},{}),W=x=>N(x==="theme"?S:b),$=(x,E,te,ce)=>!E&&!te?!!W(ce)[x]:!!W(ce)[x]?.includes((E??"")+(te??"")),be=(x,E)=>W(E)[x]||[];async function H(x){l(!0);try{let E=[],te=[];for(let ae of x){let Ce=!1,qe=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:ae.slug,per_page:1,_embed:!0}),ke=qe&&qe.length>0?qe[0]:null,J=ke?{id:ke.id,...ke.font_family_settings,fontFace:(ke?._embedded?.font_faces??[]).map(Me=>Me.font_face_settings)||[]}:null;J||(Ce=!0,J=await Rl(zl(ae),t));let Se=J.fontFace&&ae.fontFace?J.fontFace.filter(Me=>Me&&ae.fontFace&&Pn(Me,ae.fontFace)):[];J.fontFace&&ae.fontFace&&(ae.fontFace=ae.fontFace.filter(Me=>!Pn(Me,J.fontFace)));let Ae=[],Ct=[];if(ae?.fontFace?.length??!1){let Me=await Ml(J.id,Dl(ae),t);Ae=Me?.successes,Ct=Me?.errors}(Ae?.length>0||Se?.length>0)&&(J.fontFace=[...Ae],E.push(J)),J&&!ae?.fontFace?.length&&E.push(J),Ce&&(ae?.fontFace?.length??0)>0&&Ae?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),te=te.concat(Ct)}let ce=te.reduce((ae,Ce)=>ae.includes(Ce.message)?ae:[...ae,Ce.message],[]);if(E.length>0){let ae=le(E);await g(ae)}if(ce.length>0){let ae=new Error((0,An.__)("There was an error installing fonts."));throw ae.installationErrors=ce,ae}}finally{l(!1)}}async function v(x){if(!x?.id)throw new Error((0,An.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",x.id,{force:!0});let E=L(x);return await g(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=x=>{let te=(d?.[x.source??""]??[]).filter(ae=>ae.slug!==x.slug),ce={...d,[x.source??""]:te};return m(ce),x.fontFace&&x.fontFace.forEach(ae=>{ho(ae,"all")}),ce},le=x=>{let E=oe(x),te={...d,custom:Nl(d?.custom,E)};return m(te),K(E),te},oe=x=>x.map(({id:E,fontFace:te,...ce})=>({...ce,...te&&te.length>0?{fontFace:te.map(({id:ae,...Ce})=>Ce)}:{}})),K=x=>{x.forEach(E=>{E.fontFace&&E.fontFace.forEach(te=>{let ce=Wr(te?.src??"");ce&&tr(te,ce,"all")})})},ge=(x,E)=>{let te=d?.[x.source??""]??[],ce=Qo(x,E,te);m({...d,[x.source??""]:ce});let ae=$(x.slug,E?.fontStyle??"",E?.fontWeight??"",x.source??"custom");if(E&&ae)ho(E,"all");else{let Ce=Wr(E?.src??"");E&&Ce&&tr(E,Ce,"all")}},R=async x=>{if(!x.src)return;let E=Wr(x.src);!E||I.has(E)||(tr(x,E,"document"),I.add(E))};return(0,Ul.jsx)(lt.Provider,{value:{libraryFontSelected:O,handleSetLibraryFontSelected:q,fontFamilies:d??{},baseCustomFonts:P,isFontActivated:$,getFontFacesActivated:be,loadFontFaceAsset:R,installFonts:H,uninstallFontFamily:v,toggleActivateFont:ge,getAvailableFontsOutline:N,modalTabOpen:y,setModalTabOpen:T,saveFontFamilies:g,isResolvingLibrary:f,isInstalling:a},children:e})}var $o=xd;var ms=u(ie(),1),Bn=u(X(),1),Fu=u(wt(),1),Sg=u(pt(),1);var he=u(X(),1),yo=u(wt(),1),Rn=u(pt(),1),Cr=u(ve(),1),Ee=u(ie(),1);var qr=u(ie(),1),Tt=u(X(),1);var Wl=u(X(),1),zt=u(ve(),1);var es=u(D(),1);function Sd(e){if(e.preview)return e.preview;if(e.src)return Array.isArray(e.src)?e.src[0]:e.src}function Cd(e){return"fontStyle"in e&&e.fontStyle||"fontWeight"in e&&e.fontWeight?e:"fontFace"in e&&e.fontFace&&e.fontFace.length?e.fontFace.find(t=>t.fontStyle==="normal"&&t.fontWeight==="400")||e.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:e.fontFamily}}function _d({font:e,text:t}){let r=(0,zt.useRef)(null),o=Cd(e),s=Dr(e);t=t||("name"in e?e.name:"");let n=e.preview,[a,l]=(0,zt.useState)(!1),[h,f]=(0,zt.useState)(!1),{loadFontFaceAsset:c}=(0,zt.useContext)(lt),d=n??Sd(o),m=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Ji(o),y={fontSize:"18px",lineHeight:1,opacity:h?"1":"0",...s,...g};return(0,zt.useEffect)(()=>{let T=new window.IntersectionObserver(([O])=>{l(O.isIntersecting)},{});return r.current&&T.observe(r.current),()=>T.disconnect()},[r]),(0,zt.useEffect)(()=>{(async()=>a&&(!m&&o.src&&await c(o),f(!0)))()},[o,a,c,m]),(0,es.jsx)("div",{ref:r,children:m?(0,es.jsx)("img",{src:d,loading:"lazy",alt:t,className:"font-library__font-variant_demo-image"}):(0,es.jsx)(Wl.__experimentalText,{style:y,className:"font-library__font-variant_demo-text",children:t})})}var Hr=_d;var Dt=u(D(),1);function Fd({font:e,onClick:t,variantsText:r,navigatorPath:o}){let s=e.fontFace?.length||1,n={cursor:t?"pointer":"default"},a=(0,Tt.useNavigator)();return(0,Dt.jsx)(Tt.Button,{__next40pxDefaultSize:!0,onClick:()=>{t(),o&&a.goTo(o)},style:n,className:"font-library__font-card",children:(0,Dt.jsxs)(Tt.Flex,{justify:"space-between",wrap:!1,children:[(0,Dt.jsx)(Hr,{font:e}),(0,Dt.jsxs)(Tt.Flex,{justify:"flex-end",children:[(0,Dt.jsx)(Tt.FlexItem,{children:(0,Dt.jsx)(Tt.__experimentalText,{className:"font-library__font-card__count",children:r||(0,qr.sprintf)((0,qr._n)("%d variant","%d variants",s),s)})}),(0,Dt.jsx)(Tt.FlexItem,{children:(0,Dt.jsx)(so,{icon:(0,qr.isRTL)()?cr:dr})})]})]})})}var go=Fd;var ts=u(ve(),1),rs=u(X(),1);var Sr=u(D(),1);function kd({face:e,font:t}){let{isFontActivated:r,toggleActivateFont:o}=(0,ts.useContext)(lt),s=(t?.fontFace?.length??0)>0?r(t.slug,e.fontStyle,e.fontWeight,t.source):r(t.slug,void 0,void 0,t.source),n=()=>{if((t?.fontFace?.length??0)>0){o(t,e);return}o(t)},a=t.name+" "+Jo(e),l=(0,ts.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(rs.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(rs.CheckboxControl,{checked:s,onChange:n,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Hr,{font:e,text:a,onClick:n})})]})})}var Hl=kd;function ql(e){switch(e){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(e,10)}}function os(e){return e.sort((t,r)=>t.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&t.fontStyle!=="normal"?1:t.fontStyle===r.fontStyle?ql(t.fontWeight?.toString()??"normal")-ql(r.fontWeight?.toString()??"normal"):!t.fontStyle||!r.fontStyle?t.fontStyle?-1:1:t.fontStyle.localeCompare(r.fontStyle))}var fe=u(D(),1);function Od(){let{baseCustomFonts:e,libraryFontSelected:t,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:n,saveFontFamilies:a,getFontFacesActivated:l}=(0,Cr.useContext)(lt),[h,f]=Te("typography.fontFamilies"),[c,d]=(0,Cr.useState)(!1),[m,g]=(0,Cr.useState)(null),[y]=Te("typography.fontFamilies",void 0,"base"),T=(0,Rn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:x}=R(yo.store);return x()},[]),_=!!(0,yo.useEntityRecord)("root","globalStyles",T)?.edits?.settings?.typography?.fontFamilies,S=h?.theme?h.theme.map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name)):[],b=new Set(S.map(R=>R.slug)),P=y?.theme?S.concat(y.theme.filter(R=>!b.has(R.slug)).map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name))):[],q=t?.source==="custom"&&t?.id,I=(0,Rn.useSelect)(R=>{let{canUser:x}=R(yo.store);return q&&x("delete",{kind:"postType",name:"wp_font_family",id:q})},[q]),N=!!t&&t?.source!=="theme"&&I,W=()=>{d(!0)},$=async()=>{g(null);try{await a(h),g({type:"success",message:(0,Ee.__)("Font family updated successfully.")})}catch(R){g({type:"error",message:(0,Ee.sprintf)((0,Ee.__)("There was an error updating the font family. %s"),R.message)})}},be=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(R.fontFace):[],H=R=>{let x=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Ee.sprintf)((0,Ee.__)("%1$d/%2$d variants active"),E,x)};(0,Cr.useEffect)(()=>{r(t)},[]);let v=t?l(t.slug,t.source).length:0,L=t?.fontFace?.length??(t?.fontFamily?1:0),le=v>0&&v!==L,oe=v===L,K=()=>{if(!t||!t?.source)return;let R=h?.[t.source]?.filter(E=>E.slug!==t.slug)??[],x=oe?R:[...R,t];f({...h,[t.source]:x}),t.fontFace&&t.fontFace.forEach(E=>{if(oe)ho(E,"all");else{let te=Wr(E?.src??"");te&&tr(E,te,"all")}})},ge=P.length>0||e.length>0;return(0,fe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,fe.jsx)("div",{className:"font-library__loading",children:(0,fe.jsx)(he.ProgressBar,{})}),!s&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsxs)(he.Navigator,{initialPath:t?"/fontFamily":"/",children:[(0,fe.jsx)(he.Navigator.Screen,{path:"/",children:(0,fe.jsxs)(he.__experimentalVStack,{spacing:"8",children:[m&&(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),!ge&&(0,fe.jsx)(he.__experimentalText,{as:"p",children:(0,Ee.__)("No fonts installed.")}),P.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Theme","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:P.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]}),e.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Custom","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]})]})}),(0,fe.jsxs)(he.Navigator.Screen,{path:"/fontFamily",children:[t&&(0,fe.jsx)(Td,{font:t,isOpen:c,setIsOpen:d,setNotice:g,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,fe.jsxs)(he.Flex,{justify:"flex-start",children:[(0,fe.jsx)(he.Navigator.BackButton,{icon:(0,Ee.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),g(null)},label:(0,Ee.__)("Back")}),(0,fe.jsx)(he.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:t?.name})]}),m&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsx)(he.__experimentalSpacer,{margin:1}),(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),(0,fe.jsx)(he.__experimentalSpacer,{margin:1})]}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsx)(he.__experimentalText,{children:(0,Ee.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsxs)(he.__experimentalVStack,{spacing:0,children:[(0,fe.jsx)(he.CheckboxControl,{className:"font-library__select-all",label:(0,Ee.__)("Select all"),checked:oe,onChange:K,indeterminate:le}),(0,fe.jsx)(he.__experimentalSpacer,{margin:8}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t&&be(t).map((R,x)=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(Hl,{font:t,face:R},`face${x}`)},`face${x}`))})]})]})]}),(0,fe.jsxs)(he.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[n&&(0,fe.jsx)(he.ProgressBar,{}),N&&(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:W,children:(0,Ee.__)("Delete")}),(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!_,accessibleWhenDisabled:!0,children:(0,Ee.__)("Update")})]})]})]})}function Td({font:e,isOpen:t,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:n}){let a=(0,he.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(e),a.goBack(),n(void 0),o({type:"success",message:(0,Ee.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Ee.__)("There was an error uninstalling the font family.")+f.message})}},h=()=>{r(!1)};return(0,fe.jsx)(he.__experimentalConfirmDialog,{isOpen:t,cancelButtonText:(0,Ee.__)("Cancel"),confirmButtonText:(0,Ee.__)("Delete"),onCancel:h,onConfirm:l,size:"medium",children:e&&(0,Ee.sprintf)((0,Ee.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),e.name)})}var ss=Od;var Ke=u(ve(),1),ne=u(X(),1),eu=u(pr(),1),Re=u(ie(),1);var tu=u(wt(),1);function Yl(e,t){let{category:r,search:o}=t,s=e||[];return r&&r!=="all"&&(s=s.filter(n=>n.categories&&n.categories.indexOf(r)!==-1)),o&&(s=s.filter(n=>n.font_family_settings&&n.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Zl(e){return e.reduce((t,r)=>({...t,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Xl(e,t,r){return t?!!r[e]?.[`${t.fontStyle}-${t.fontWeight}`]:!!r[e]}var vo=u(ie(),1),ut=u(X(),1),Pt=u(D(),1);function Pd(){let e=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Pt.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Pt.jsx)(ut.Card,{children:(0,Pt.jsxs)(ut.CardBody,{children:[(0,Pt.jsx)(ut.__experimentalHeading,{level:2,children:(0,vo.__)("Connect to Google Fonts")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:3}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:e,children:(0,vo.__)("Allow access to Google Fonts")})]})})})}var Kl=Pd;var Jl=u(ve(),1),ns=u(X(),1);var _r=u(D(),1);function Ad({face:e,font:t,handleToggleVariant:r,selected:o}){let s=()=>{if(t?.fontFace){r(t,e);return}r(t)},n=t.name+" "+Jo(e),a=(0,Jl.useId)();return(0,_r.jsx)("div",{className:"font-library__font-card",children:(0,_r.jsxs)(ns.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,_r.jsx)(ns.CheckboxControl,{checked:o,onChange:s,id:a}),(0,_r.jsx)("label",{htmlFor:a,children:(0,_r.jsx)(Hr,{font:e,text:n,onClick:s})})]})})}var Ql=Ad;var ee=u(D(),1),Rd={slug:"all",name:(0,Re._x)("All","font categories")},$l="wp-font-library-google-fonts-permission",Ed=500;function Id({slug:e}){let t=e==="google-fonts",r=()=>window.localStorage.getItem($l)==="true",[o,s]=(0,Ke.useState)(null),[n,a]=(0,Ke.useState)(null),[l,h]=(0,Ke.useState)([]),[f,c]=(0,Ke.useState)(1),[d,m]=(0,Ke.useState)({}),[g,y]=(0,Ke.useState)(t&&!r()),{installFonts:T,isInstalling:O}=(0,Ke.useContext)(lt),{record:_,isResolving:S}=(0,tu.useEntityRecord)("root","fontCollection",e);(0,Ke.useEffect)(()=>{let J=()=>{y(t&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[e,t]);let b=()=>{window.localStorage.setItem($l,"false"),window.dispatchEvent(new Event("storage"))};(0,Ke.useEffect)(()=>{s(null)},[e]),(0,Ke.useEffect)(()=>{h([])},[o]);let P=(0,Ke.useMemo)(()=>_?.font_families??[],[_]),q=_?.categories??[],I=[Rd,...q],N=(0,Ke.useMemo)(()=>Yl(P,d),[P,d]),W=Math.max(window.innerHeight,Ed),$=Math.floor((W-417)/61),be=Math.ceil(N.length/$),H=(f-1)*$,v=f*$,L=N.slice(H,v),le=J=>{m({...d,category:J}),c(1)},K=(0,eu.debounce)(J=>{m({...d,search:J}),c(1)},300),ge=(J,Se)=>{let Ae=Qo(J,Se,l);h(Ae)},R=Zl(l),x=()=>{h([])},E=l.length>0?l[0]?.fontFace?.length??0:0,te=E>0&&E!==o?.fontFace?.length,ce=E===o?.fontFace?.length,ae=()=>{let J=[];!ce&&o&&J.push(o),h(J)},Ce=async()=>{a(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async Se=>{Se.src&&(Se.file=await jl(Se.src))}))}catch{a({type:"error",message:(0,Re.__)("Error installing the fonts, could not be downloaded.")});return}try{await T([J]),a({type:"success",message:(0,Re.__)("Fonts were installed successfully.")})}catch(Se){a({type:"error",message:Se.message})}x()},qe=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(J.fontFace):[];if(g)return(0,ee.jsx)(Kl,{});let ke=e==="google-fonts"&&!g&&!o;return(0,ee.jsxs)("div",{className:"font-library__tabpanel-layout",children:[S&&(0,ee.jsx)("div",{className:"font-library__loading",children:(0,ee.jsx)(ne.ProgressBar,{})}),!S&&_&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsxs)(ne.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,ee.jsxs)(ne.Navigator.Screen,{path:"/",children:[(0,ee.jsxs)(ne.__experimentalHStack,{justify:"space-between",children:[(0,ee.jsxs)(ne.__experimentalVStack,{children:[(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,children:_.name}),(0,ee.jsx)(ne.__experimentalText,{children:_.description})]}),ke&&(0,ee.jsx)(ne.DropdownMenu,{icon:js,label:(0,Re.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Re.__)("Revoke access to Google Fonts"),onClick:b}]})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsxs)(ne.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,ee.jsx)(ne.SearchControl,{value:d.search,placeholder:(0,Re.__)("Font name\u2026"),label:(0,Re.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,ee.jsx)(ne.SelectControl,{__next40pxDefaultSize:!0,label:(0,Re.__)("Category"),value:d.category,onChange:le,children:I&&I.map(J=>(0,ee.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),!!_?.font_families?.length&&!N.length&&(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("No fonts found. Try with a different search term.")}),(0,ee.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(go,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,ee.jsxs)(ne.Navigator.Screen,{path:"/fontFamily",children:[(0,ee.jsxs)(ne.Flex,{justify:"flex-start",children:[(0,ee.jsx)(ne.Navigator.BackButton,{icon:(0,Re.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),a(null)},label:(0,Re.__)("Back")}),(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),n&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(ne.__experimentalSpacer,{margin:1}),(0,ee.jsx)(ne.Notice,{status:n.type,onRemove:()=>a(null),children:n.message}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:1})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("Select font variants to install.")}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.CheckboxControl,{className:"font-library__select-all",label:(0,Re.__)("Select all"),checked:ce,onChange:ae,indeterminate:te}),(0,ee.jsx)(ne.__experimentalVStack,{spacing:0,children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&qe(o).map((J,Se)=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(Ql,{font:o,face:J,handleToggleVariant:ge,selected:Xl(o.slug,o.fontFace?J:null,R)})},`face${Se}`))})}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:16})]})]}),o&&(0,ee.jsx)(ne.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,ee.jsx)(ne.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ce,isBusy:O,disabled:l.length===0||O,accessibleWhenDisabled:!0,children:(0,Re.__)("Install")})}),!o&&(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,ee.jsx)(ne.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Ke.createInterpolateElement)((0,Re.sprintf)((0,Re._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",be),{div:(0,ee.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,ee.jsx)(ne.SelectControl,{"aria-label":(0,Re.__)("Current page"),value:f.toString(),options:[...Array(be)].map((J,Se)=>({label:(Se+1).toString(),value:(Se+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,ee.jsx)(ne.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Re.__)("Previous page"),icon:(0,Re.isRTL)()?Vo:zo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,ee.jsx)(ne.Button,{onClick:()=>c(f+1),disabled:f===be,accessibleWhenDisabled:!0,label:(0,Re.__)("Next page"),icon:(0,Re.isRTL)()?zo:Vo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var as=Id;var Yr=u(ie(),1),tt=u(X(),1),wo=u(ve(),1);var is=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),ru=(function(){var e,t,r;return(function(){function o(s,n,a){function l(c,d){if(!n[c]){if(!s[c]){var m=typeof is=="function"&&is;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=n[c]={exports:{}};s[c][0].call(y.exports,function(T){var O=s[c][1][T];return l(O||T)},y,y.exports,o,s,n,a)}return n[c].exports}for(var h=typeof is=="function"&&is,f=0;f<a.length;f++)l(a[f]);return l}return o})()({1:[function(o,s,n){var a=4096,l=2*a+32,h=2*a-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=a,c.IBUF_MASK=h,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,m=this.input_.read(this.buf_,d,a);if(m<0)throw new Error("Unexpected end of input");if(m<a){this.eos_=1;for(var g=0;g<32;g++)this.buf_[d+m+g]=0}if(d===0){for(var g=0;g<32;g++)this.buf_[(a<<1)+g]=this.buf_[g];this.buf_ptr_=a}else this.buf_ptr_=0;this.bit_end_pos_+=m<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&h]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var m=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,m},s.exports=c},{}],2:[function(o,s,n){var a=0,l=1,h=2,f=3;n.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),n.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,n){var a=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,h=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,m=o("./context"),g=o("./prefix"),y=o("./transform"),T=8,O=16,_=256,S=704,b=26,P=6,q=2,I=8,N=255,W=1080,$=18,be=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),H=16,v=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),le=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function oe(z){var k;return z.readBits(1)===0?16:(k=z.readBits(3),k>0?17+k:(k=z.readBits(3),k>0?8+k:17))}function K(z){if(z.readBits(1)){var k=z.readBits(3);return k===0?1:z.readBits(k)+(1<<k)}return 0}function ge(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(z){var k=new ge,B,A,V;if(k.input_end=z.readBits(1),k.input_end&&z.readBits(1))return k;if(B=z.readBits(2)+4,B===7){if(k.is_metadata=!0,z.readBits(1)!==0)throw new Error("Invalid reserved bit");if(A=z.readBits(2),A===0)return k;for(V=0;V<A;V++){var de=z.readBits(8);if(V+1===A&&A>1&&de===0)throw new Error("Invalid size byte");k.meta_block_length|=de<<V*8}}else for(V=0;V<B;++V){var re=z.readBits(4);if(V+1===B&&B>4&&re===0)throw new Error("Invalid size nibble");k.meta_block_length|=re<<V*4}return++k.meta_block_length,!k.input_end&&!k.is_metadata&&(k.is_uncompressed=z.readBits(1)),k}function x(z,k,B){var A=k,V;return B.fillBitWindow(),k+=B.val_>>>B.bit_pos_&N,V=z[k].bits-I,V>0&&(B.bit_pos_+=I,k+=z[k].value,k+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=z[k].bits,z[k].value}function E(z,k,B,A){for(var V=0,de=T,re=0,se=0,we=32768,ue=[],Y=0;Y<32;Y++)ue.push(new c(0,0));for(d(ue,0,5,z,$);V<k&&we>0;){var _e=0,Qe;if(A.readMoreInput(),A.fillBitWindow(),_e+=A.val_>>>A.bit_pos_&31,A.bit_pos_+=ue[_e].bits,Qe=ue[_e].value&255,Qe<O)re=0,B[V++]=Qe,Qe!==0&&(de=Qe,we-=32768>>Qe);else{var yt=Qe-14,rt,$e,Ve=0;if(Qe===O&&(Ve=de),se!==Ve&&(re=0,se=Ve),rt=re,re>0&&(re-=2,re<<=yt),re+=A.readBits(yt)+3,$e=re-rt,V+$e>k)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var et=0;et<$e;et++)B[V+et]=se;V+=$e,se!==0&&(we-=$e<<15-se)}}if(we!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+we);for(;V<k;V++)B[V]=0}function te(z,k,B,A){var V=0,de,re=new Uint8Array(z);if(A.readMoreInput(),de=A.readBits(2),de===1){for(var se,we=z-1,ue=0,Y=new Int32Array(4),_e=A.readBits(2)+1;we;)we>>=1,++ue;for(se=0;se<_e;++se)Y[se]=A.readBits(ue)%z,re[Y[se]]=2;switch(re[Y[0]]=1,_e){case 1:break;case 3:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[1]===Y[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(Y[0]===Y[1])throw new Error("[ReadHuffmanCode] invalid symbols");re[Y[1]]=1;break;case 4:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[0]===Y[3]||Y[1]===Y[2]||Y[1]===Y[3]||Y[2]===Y[3])throw new Error("[ReadHuffmanCode] invalid symbols");A.readBits(1)?(re[Y[2]]=3,re[Y[3]]=3):re[Y[0]]=2;break}}else{var se,Qe=new Uint8Array($),yt=32,rt=0,$e=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(se=de;se<$&&yt>0;++se){var Ve=be[se],et=0,ot;A.fillBitWindow(),et+=A.val_>>>A.bit_pos_&15,A.bit_pos_+=$e[et].bits,ot=$e[et].value,Qe[Ve]=ot,ot!==0&&(yt-=32>>ot,++rt)}if(!(rt===1||yt===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Qe,z,re,A)}if(V=d(k,B,I,re,z),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ce(z,k,B){var A,V;return A=x(z,k,B),V=g.kBlockLengthPrefixCode[A].nbits,g.kBlockLengthPrefixCode[A].offset+B.readBits(V)}function ae(z,k,B){var A;return z<H?(B+=v[z],B&=3,A=k[B]+L[z]):A=z-H+1,A}function Ce(z,k){for(var B=z[k],A=k;A;--A)z[A]=z[A-1];z[0]=B}function qe(z,k){var B=new Uint8Array(256),A;for(A=0;A<256;++A)B[A]=A;for(A=0;A<k;++A){var V=z[A];z[A]=B[V],V&&Ce(B,V)}}function ke(z,k){this.alphabet_size=z,this.num_htrees=k,this.codes=new Array(k+k*le[z+31>>>5]),this.htrees=new Uint32Array(k)}ke.prototype.decode=function(z){var k,B,A=0;for(k=0;k<this.num_htrees;++k)this.htrees[k]=A,B=te(this.alphabet_size,this.codes,A,z),A+=B};function J(z,k){var B={num_htrees:null,context_map:null},A,V=0,de,re;k.readMoreInput();var se=B.num_htrees=K(k)+1,we=B.context_map=new Uint8Array(z);if(se<=1)return B;for(A=k.readBits(1),A&&(V=k.readBits(4)+1),de=[],re=0;re<W;re++)de[re]=new c(0,0);for(te(se+V,de,0,k),re=0;re<z;){var ue;if(k.readMoreInput(),ue=x(de,0,k),ue===0)we[re]=0,++re;else if(ue<=V)for(var Y=1+(1<<ue)+k.readBits(ue);--Y;){if(re>=z)throw new Error("[DecodeContextMap] i >= context_map_size");we[re]=0,++re}else we[re]=ue-V,++re}return k.readBits(1)&&qe(we,z),B}function Se(z,k,B,A,V,de,re){var se=B*2,we=B,ue=x(k,B*W,re),Y;ue===0?Y=V[se+(de[we]&1)]:ue===1?Y=V[se+(de[we]-1&1)]+1:Y=ue-2,Y>=z&&(Y-=z),A[B]=Y,V[se+(de[we]&1)]=Y,++de[we]}function Ae(z,k,B,A,V,de){var re=V+1,se=B&V,we=de.pos_&h.IBUF_MASK,ue;if(k<8||de.bit_pos_+(k<<3)<de.bit_end_pos_){for(;k-- >0;)de.readMoreInput(),A[se++]=de.readBits(8),se===re&&(z.write(A,re),se=0);return}if(de.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;de.bit_pos_<32;)A[se]=de.val_>>>de.bit_pos_,de.bit_pos_+=8,++se,--k;if(ue=de.bit_end_pos_-de.bit_pos_>>3,we+ue>h.IBUF_MASK){for(var Y=h.IBUF_MASK+1-we,_e=0;_e<Y;_e++)A[se+_e]=de.buf_[we+_e];ue-=Y,se+=Y,k-=Y,we=0}for(var _e=0;_e<ue;_e++)A[se+_e]=de.buf_[we+_e];if(se+=ue,k-=ue,se>=re){z.write(A,re),se-=re;for(var _e=0;_e<se;_e++)A[_e]=A[re+_e]}for(;se+k>=re;){if(ue=re-se,de.input_.read(A,se,ue)<ue)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");z.write(A,re),k-=ue,se=0}if(de.input_.read(A,se,k)<k)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");de.reset()}function Ct(z){var k=z.bit_pos_+7&-8,B=z.readBits(k-z.bit_pos_);return B==0}function Me(z){var k=new a(z),B=new h(k);oe(B);var A=R(B);return A.meta_block_length}n.BrotliDecompressedSize=Me;function sr(z,k){var B=new a(z);k==null&&(k=Me(z));var A=new Uint8Array(k),V=new l(A);return Kt(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}n.BrotliDecompressBuffer=sr;function Kt(z,k){var B,A=0,V=0,de=0,re,se=0,we,ue,Y,_e,Qe=[16,15,11,4],yt=0,rt=0,$e=0,Ve=[new ke(0,0),new ke(0,0),new ke(0,0)],et,ot,me,Qr=128+h.READ_SIZE;me=new h(z),de=oe(me),re=(1<<de)-16,we=1<<de,ue=we-1,Y=new Uint8Array(we+Qr+f.maxDictionaryWordLength),_e=we,et=[],ot=[];for(var Tr=0;Tr<3*W;Tr++)et[Tr]=new c(0,0),ot[Tr]=new c(0,0);for(;!V;){var je=0,ko,_t=[1<<28,1<<28,1<<28],Et=[0],vt=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pe,j,st=null,G=null,Ne,F=null,C,nr=0,Oe=null,Q=0,ar=0,ir=null,Ie=0,xe=0,Ge=0,Ue,Ye;for(B=0;B<3;++B)Ve[B].codes=null,Ve[B].htrees=null;me.readMoreInput();var jt=R(me);if(je=jt.meta_block_length,A+je>k.buffer.length){var lr=new Uint8Array(A+je);lr.set(k.buffer),k.buffer=lr}if(V=jt.input_end,ko=jt.is_uncompressed,jt.is_metadata){for(Ct(me);je>0;--je)me.readMoreInput(),me.readBits(8);continue}if(je!==0){if(ko){me.bit_pos_=me.bit_pos_+7&-8,Ae(k,je,A,Y,ue,me),A+=je;continue}for(B=0;B<3;++B)vt[B]=K(me)+1,vt[B]>=2&&(te(vt[B]+2,et,B*W,me),te(b,ot,B*W,me),_t[B]=ce(ot,B*W,me),M[B]=1);for(me.readMoreInput(),i=me.readBits(2),U=H+(me.readBits(4)<<i),Pe=(1<<i)-1,j=U+(48<<i),G=new Uint8Array(vt[0]),B=0;B<vt[0];++B)me.readMoreInput(),G[B]=me.readBits(2)<<1;var Le=J(vt[0]<<P,me);Ne=Le.num_htrees,st=Le.context_map;var nt=J(vt[2]<<q,me);for(C=nt.num_htrees,F=nt.context_map,Ve[0]=new ke(_,Ne),Ve[1]=new ke(S,vt[1]),Ve[2]=new ke(j,C),B=0;B<3;++B)Ve[B].decode(me);for(Oe=0,ir=0,Ue=G[Et[0]],xe=m.lookupOffsets[Ue],Ge=m.lookupOffsets[Ue+1],Ye=Ve[1].htrees[0];je>0;){var ze,at,ft,Pr,ks,ct,bt,Gt,$r,Ar,eo;for(me.readMoreInput(),_t[1]===0&&(Se(vt[1],et,1,Et,w,M,me),_t[1]=ce(ot,W,me),Ye=Ve[1].htrees[Et[1]]),--_t[1],ze=x(Ve[1].codes,Ye,me),at=ze>>6,at>=2?(at-=2,bt=-1):bt=0,ft=g.kInsertRangeLut[at]+(ze>>3&7),Pr=g.kCopyRangeLut[at]+(ze&7),ks=g.kInsertLengthPrefixCode[ft].offset+me.readBits(g.kInsertLengthPrefixCode[ft].nbits),ct=g.kCopyLengthPrefixCode[Pr].offset+me.readBits(g.kCopyLengthPrefixCode[Pr].nbits),rt=Y[A-1&ue],$e=Y[A-2&ue],Ar=0;Ar<ks;++Ar)me.readMoreInput(),_t[0]===0&&(Se(vt[0],et,0,Et,w,M,me),_t[0]=ce(ot,0,me),nr=Et[0]<<P,Oe=nr,Ue=G[Et[0]],xe=m.lookupOffsets[Ue],Ge=m.lookupOffsets[Ue+1]),$r=m.lookup[xe+rt]|m.lookup[Ge+$e],Q=st[Oe+$r],--_t[0],$e=rt,rt=x(Ve[0].codes,Ve[0].htrees[Q],me),Y[A&ue]=rt,(A&ue)===ue&&k.write(Y,we),++A;if(je-=ks,je<=0)break;if(bt<0){var $r;if(me.readMoreInput(),_t[2]===0&&(Se(vt[2],et,2,Et,w,M,me),_t[2]=ce(ot,2*W,me),ar=Et[2]<<q,ir=ar),--_t[2],$r=(ct>4?3:ct-2)&255,Ie=F[ir+$r],bt=x(Ve[2].codes,Ve[2].htrees[Ie],me),bt>=U){var Os,da,to;bt-=U,da=bt&Pe,bt>>=i,Os=(bt>>1)+1,to=(2+(bt&1)<<Os)-4,bt=U+(to+me.readBits(Os)<<i)+da}}if(Gt=ae(bt,Qe,yt),Gt<0)throw new Error("[BrotliDecompress] invalid distance");if(A<re&&se!==re?se=A:se=re,eo=A&ue,Gt>se)if(ct>=f.minDictionaryWordLength&&ct<=f.maxDictionaryWordLength){var to=f.offsetsByLength[ct],pa=Gt-se-1,ma=f.sizeBitsByLength[ct],wf=(1<<ma)-1,xf=pa&wf,ha=pa>>ma;if(to+=xf*ct,ha<y.kNumTransforms){var Ts=y.transformDictionaryWord(Y,eo,to,ct,ha);if(eo+=Ts,A+=Ts,je-=Ts,eo>=_e){k.write(Y,we);for(var Oo=0;Oo<eo-_e;Oo++)Y[Oo]=Y[_e+Oo]}}else throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je)}else throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je);else{if(bt>0&&(Qe[yt&3]=Gt,++yt),ct>je)throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je);for(Ar=0;Ar<ct;++Ar)Y[A&ue]=Y[A-Gt&ue],(A&ue)===ue&&k.write(Y,we),++A,--je}rt=Y[A-1&ue],$e=Y[A-2&ue]}A&=1073741823}}k.write(Y,A&ue)}n.BrotliDecompress=Kt,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,n){var a=o("base64-js");n.init=function(){var l=o("./decode").BrotliDecompressBuffer,h=a.toByteArray(o("./dictionary.bin.js"));return l(h)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,n){s.exports="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"},{}],6:[function(o,s,n){var a=o("./dictionary-browser");n.init=function(){n.dictionary=a.init()},n.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),n.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),n.minDictionaryWordLength=4,n.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,n){function a(d,m){this.bits=d,this.value=m}n.HuffmanCode=a;var l=15;function h(d,m){for(var g=1<<m-1;d&g;)g>>=1;return(d&g-1)+g}function f(d,m,g,y,T){do y-=g,d[m+y]=new a(T.bits,T.value);while(y>0)}function c(d,m,g){for(var y=1<<m-g;m<l&&(y-=d[m],!(y<=0));)++m,y<<=1;return m-g}n.BrotliBuildHuffmanTable=function(d,m,g,y,T){var O=m,_,S,b,P,q,I,N,W,$,be,H,v=new Int32Array(l+1),L=new Int32Array(l+1);for(H=new Int32Array(T),b=0;b<T;b++)v[y[b]]++;for(L[1]=0,S=1;S<l;S++)L[S+1]=L[S]+v[S];for(b=0;b<T;b++)y[b]!==0&&(H[L[y[b]]++]=b);if(W=g,$=1<<W,be=$,L[l]===1){for(P=0;P<be;++P)d[m+P]=new a(0,H[0]&65535);return be}for(P=0,b=0,S=1,q=2;S<=g;++S,q<<=1)for(;v[S]>0;--v[S])_=new a(S&255,H[b++]&65535),f(d,m+P,q,$,_),P=h(P,S);for(N=be-1,I=-1,S=g+1,q=2;S<=l;++S,q<<=1)for(;v[S]>0;--v[S])(P&N)!==I&&(m+=$,W=c(v,S,g),$=1<<W,be+=$,I=P&N,d[O+I]=new a(W+g&255,m-O-I&65535)),_=new a(S-g&255,H[b++]&65535),f(d,m+(P>>g),q,$,_),P=h(P,S);return be}},{}],8:[function(o,s,n){"use strict";n.byteLength=g,n.toByteArray=T,n.fromByteArray=S;for(var a=[],l=[],h=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)a[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function m(b){var P=b.length;if(P%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var q=b.indexOf("=");q===-1&&(q=P);var I=q===P?0:4-q%4;return[q,I]}function g(b){var P=m(b),q=P[0],I=P[1];return(q+I)*3/4-I}function y(b,P,q){return(P+q)*3/4-q}function T(b){for(var P,q=m(b),I=q[0],N=q[1],W=new h(y(b,I,N)),$=0,be=N>0?I-4:I,H=0;H<be;H+=4)P=l[b.charCodeAt(H)]<<18|l[b.charCodeAt(H+1)]<<12|l[b.charCodeAt(H+2)]<<6|l[b.charCodeAt(H+3)],W[$++]=P>>16&255,W[$++]=P>>8&255,W[$++]=P&255;return N===2&&(P=l[b.charCodeAt(H)]<<2|l[b.charCodeAt(H+1)]>>4,W[$++]=P&255),N===1&&(P=l[b.charCodeAt(H)]<<10|l[b.charCodeAt(H+1)]<<4|l[b.charCodeAt(H+2)]>>2,W[$++]=P>>8&255,W[$++]=P&255),W}function O(b){return a[b>>18&63]+a[b>>12&63]+a[b>>6&63]+a[b&63]}function _(b,P,q){for(var I,N=[],W=P;W<q;W+=3)I=(b[W]<<16&16711680)+(b[W+1]<<8&65280)+(b[W+2]&255),N.push(O(I));return N.join("")}function S(b){for(var P,q=b.length,I=q%3,N=[],W=16383,$=0,be=q-I;$<be;$+=W)N.push(_(b,$,$+W>be?be:$+W));return I===1?(P=b[q-1],N.push(a[P>>2]+a[P<<4&63]+"==")):I===2&&(P=(b[q-2]<<8)+b[q-1],N.push(a[P>>10]+a[P>>4&63]+a[P<<2&63]+"=")),N.join("")}},{}],9:[function(o,s,n){function a(l,h){this.offset=l,this.nbits=h}n.kBlockLengthPrefixCode=[new a(1,2),new a(5,2),new a(9,2),new a(13,2),new a(17,3),new a(25,3),new a(33,3),new a(41,3),new a(49,4),new a(65,4),new a(81,4),new a(97,4),new a(113,5),new a(145,5),new a(177,5),new a(209,5),new a(241,6),new a(305,6),new a(369,7),new a(497,8),new a(753,9),new a(1265,10),new a(2289,11),new a(4337,12),new a(8433,13),new a(16625,24)],n.kInsertLengthPrefixCode=[new a(0,0),new a(1,0),new a(2,0),new a(3,0),new a(4,0),new a(5,0),new a(6,1),new a(8,1),new a(10,2),new a(14,2),new a(18,3),new a(26,3),new a(34,4),new a(50,4),new a(66,5),new a(98,5),new a(130,6),new a(194,7),new a(322,8),new a(578,9),new a(1090,10),new a(2114,12),new a(6210,14),new a(22594,24)],n.kCopyLengthPrefixCode=[new a(2,0),new a(3,0),new a(4,0),new a(5,0),new a(6,0),new a(7,0),new a(8,0),new a(9,0),new a(10,1),new a(12,1),new a(14,2),new a(18,2),new a(22,3),new a(30,3),new a(38,4),new a(54,4),new a(70,5),new a(102,5),new a(134,6),new a(198,7),new a(326,8),new a(582,9),new a(1094,10),new a(2118,24)],n.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],n.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,n){function a(h){this.buffer=h,this.pos=0}a.prototype.read=function(h,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)h[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},n.BrotliInput=a;function l(h){this.buffer=h,this.pos=0}l.prototype.write=function(h,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(h.subarray(0,f),this.pos),this.pos+=f,f},n.BrotliOutput=l},{}],11:[function(o,s,n){var a=o("./dictionary"),l=0,h=1,f=2,c=3,d=4,m=5,g=6,y=7,T=8,O=9,_=10,S=11,b=12,P=13,q=14,I=15,N=16,W=17,$=18,be=19,H=20;function v(oe,K,ge){this.prefix=new Uint8Array(oe.length),this.transform=K,this.suffix=new Uint8Array(ge.length);for(var R=0;R<oe.length;R++)this.prefix[R]=oe.charCodeAt(R);for(var R=0;R<ge.length;R++)this.suffix[R]=ge.charCodeAt(R)}var L=[new v("",l,""),new v("",l," "),new v(" ",l," "),new v("",b,""),new v("",_," "),new v("",l," the "),new v(" ",l,""),new v("s ",l," "),new v("",l," of "),new v("",_,""),new v("",l," and "),new v("",P,""),new v("",h,""),new v(", ",l," "),new v("",l,", "),new v(" ",_," "),new v("",l," in "),new v("",l," to "),new v("e ",l," "),new v("",l,'"'),new v("",l,"."),new v("",l,'">'),new v("",l,` +var Sf=Object.create;var ga=Object.defineProperty;var Cf=Object.getOwnPropertyDescriptor;var _f=Object.getOwnPropertyNames;var Ff=Object.getPrototypeOf,kf=Object.prototype.hasOwnProperty;var dt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var He=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Of=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of _f(t))!kf.call(e,s)&&s!==r&&ga(e,s,{get:()=>t[s],enumerable:!(o=Cf(t,s))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?Sf(Ff(e)):{},Of(t||!e||!e.__esModule?ga(r,"default",{value:e,enumerable:!0}):r,e));var ie=He((By,ya)=>{ya.exports=window.wp.i18n});var ve=He((Ny,ba)=>{ba.exports=window.wp.element});var Rr=He((zy,wa)=>{wa.exports=window.React});var D=He((My,Ca)=>{Ca.exports=window.ReactJSXRuntime});var Ir=He((vv,qa)=>{qa.exports=window.wp.primitives});var pr=He((Lv,Ya)=>{Ya.exports=window.wp.compose});var Ws=He((Bv,Za)=>{Za.exports=window.wp.privateApis});var X=He((Gv,ti)=>{ti.exports=window.wp.components});var fi=He((e1,ui)=>{ui.exports=window.wp.editor});var wt=He((t1,ci)=>{ci.exports=window.wp.coreData});var pt=He((r1,di)=>{di.exports=window.wp.data});var Br=He((o1,pi)=>{pi.exports=window.wp.blocks});var it=He((s1,mi)=>{mi.exports=window.wp.blockEditor});var gi=He((f1,hi)=>{hi.exports=window.wp.styleEngine});var xi=He((S1,wi)=>{"use strict";wi.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var o,s,n;if(Array.isArray(t)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!e(t[s],r[s]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;for(s of t.entries())if(!e(s[1],r.get(s[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(t[s]!==r[s])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(n=Object.keys(t),o=n.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,n[s]))return!1;for(s=o;s--!==0;){var a=n[s];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Fi=He((_1,_i)=>{"use strict";var pc=function(t){return mc(t)&&!hc(t)};function mc(e){return!!e&&typeof e=="object"}function hc(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||vc(e)}var gc=typeof Symbol=="function"&&Symbol.for,yc=gc?Symbol.for("react.element"):60103;function vc(e){return e.$$typeof===yc}function bc(e){return Array.isArray(e)?[]:{}}function lo(e,t){return t.clone!==!1&&t.isMergeableObject(e)?Nr(bc(e),e,t):e}function wc(e,t,r){return e.concat(t).map(function(o){return lo(o,r)})}function xc(e,t){if(!t.customMerge)return Nr;var r=t.customMerge(e);return typeof r=="function"?r:Nr}function Sc(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function Si(e){return Object.keys(e).concat(Sc(e))}function Ci(e,t){try{return t in e}catch{return!1}}function Cc(e,t){return Ci(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function _c(e,t,r){var o={};return r.isMergeableObject(e)&&Si(e).forEach(function(s){o[s]=lo(e[s],r)}),Si(t).forEach(function(s){Cc(e,s)||(Ci(e,s)&&r.isMergeableObject(t[s])?o[s]=xc(s,r)(e[s],t[s],r):o[s]=lo(t[s],r))}),o}function Nr(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||wc,r.isMergeableObject=r.isMergeableObject||pc,r.cloneUnlessOtherwiseSpecified=lo;var o=Array.isArray(t),s=Array.isArray(e),n=o===s;return n?o?r.arrayMerge(e,t,r):_c(e,t,r):lo(t,r)}Nr.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(o,s){return Nr(o,s,r)},{})};var Fc=Nr;_i.exports=Fc});var kn=He((Gb,Sl)=>{Sl.exports=window.wp.keycodes});var Ol=He(($b,kl)=>{kl.exports=window.wp.apiFetch});var ef=He((S_,$u)=>{$u.exports=window.wp.date});function va(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(r=va(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function Tf(){for(var e,t,r=0,o="",s=arguments.length;r<s;r++)(e=arguments[r])&&(t=va(e))&&(o&&(o+=" "),o+=t);return o}var Ze=Tf;var Sa=u(Rr(),1),xa={};function Ps(e,t){let r=Sa.useRef(xa);return r.current===xa&&(r.current=e(t)),r}function Pf(e,t){return function(o,...s){let n=new URL(e);return n.searchParams.set("code",o.toString()),s.forEach(a=>n.searchParams.append("args[]",a)),`${t} error #${o}; visit ${n} for the full message.`}}var Af=Pf("https://base-ui.com/production-error","Base UI"),_a=Af;var fr=u(Rr(),1);function As(e,t,r,o){let s=Ps(ka).current;return Rf(s,e,t,r,o)&&Oa(s,[e,t,r,o]),s.callback}function Fa(e){let t=Ps(ka).current;return Ef(t,e)&&Oa(t,e),t.callback}function ka(){return{callback:null,cleanup:null,refs:[]}}function Rf(e,t,r,o,s){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==s}function Ef(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Oa(e,t){if(e.refs=t,t.every(r=>r==null)){e.callback=null;return}e.callback=r=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),r!=null){let o=Array(t.length).fill(null);for(let s=0;s<t.length;s+=1){let n=t[s];if(n!=null)switch(typeof n){case"function":{let a=n(r);typeof a=="function"&&(o[s]=a);break}case"object":{n.current=r;break}default:}}e.cleanup=()=>{for(let s=0;s<t.length;s+=1){let n=t[s];if(n!=null)switch(typeof n){case"function":{let a=o[s];typeof a=="function"?a():n(null);break}case"object":{n.current=null;break}default:}}}}}}var Aa=u(Rr(),1);var Ta=u(Rr(),1),If=parseInt(Ta.version,10);function Pa(e){return If>=e}function Rs(e){if(!Aa.isValidElement(e))return null;let t=e,r=t.props;return(Pa(19)?r?.ref:t.ref)??null}function ro(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}var Zy=Object.freeze([]),Er=Object.freeze({});function Ra(e,t){let r={};for(let o in e){let s=e[o];if(t?.hasOwnProperty(o)){let n=t[o](s);n!=null&&Object.assign(r,n);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Ea(e,t){return typeof e=="function"?e(t):e}function Ia(e,t){return typeof e=="function"?e(t):e}var Es={};function ur(e,t,r,o,s){if(!r&&!o&&!s&&!e)return To(t);let n=To(e);return t&&(n=oo(n,t)),r&&(n=oo(n,r)),o&&(n=oo(n,o)),s&&(n=oo(n,s)),n}function La(e){if(e.length===0)return Es;if(e.length===1)return To(e[0]);let t=To(e[0]);for(let r=1;r<e.length;r+=1)t=oo(t,e[r]);return t}function To(e){return Is(e)?{...Va(e,Es)}:Lf(e)}function oo(e,t){return Is(t)?Va(t,e):Bf(e,t)}function Lf(e){let t={...e};for(let r in t){let o=t[r];Ba(r,o)&&(t[r]=Na(o))}return t}function Bf(e,t){if(!t)return e;for(let r in t){let o=t[r];switch(r){case"style":{e[r]=ro(e.style,o);break}case"className":{e[r]=Ls(e.className,o);break}default:Ba(r,o)?e[r]=Vf(e[r],o):e[r]=o}}return e}function Ba(e,t){let r=e.charCodeAt(0),o=e.charCodeAt(1),s=e.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof t=="function"||typeof t>"u")}function Is(e){return typeof e=="function"}function Va(e,t){return Is(e)?e(t):e??Es}function Vf(e,t){return t?e?(...r)=>{let o=r[0];if(Da(o)){let n=o;za(n);let a=t(...r);return n.baseUIHandlerPrevented||e?.(...r),a}let s=t(...r);return e?.(...r),s}:Na(t):e}function Na(e){return e&&((...t)=>{let r=t[0];return Da(r)&&za(r),e(...t)})}function za(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Ls(e,t){return t?e?t+" "+e:t:e}function Da(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Bs=u(Rr(),1);function Ma(e,t,r={}){let o=t.render,s=Nf(t,r);if(r.enabled===!1)return null;let n=r.state??Er;return Mf(e,o,s,n)}function Nf(e,t={}){let{className:r,style:o,render:s}=e,{state:n=Er,ref:a,props:l,stateAttributesMapping:h,enabled:f=!0}=t,c=f?Ea(r,n):void 0,d=f?Ia(o,n):void 0,m=f?Ra(n,h):Er,g=f&&l?zf(l):void 0,y=f?ro(m,g)??{}:Er;return typeof document<"u"&&(f?Array.isArray(a)?y.ref=Fa([y.ref,Rs(s),...a]):y.ref=As(y.ref,Rs(s),a):As(null,null)),f?(c!==void 0&&(y.className=Ls(y.className,c)),d!==void 0&&(y.style=ro(y.style,d)),y):Er}function zf(e){return Array.isArray(e)?La(e):ur(void 0,e)}var Df=Symbol.for("react.lazy");function Mf(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let s=ur(r,t.props);s.ref=r.ref;let n=t;return n?.$$typeof===Df&&(n=fr.Children.toArray(t)[0]),fr.cloneElement(n,s)}if(e&&typeof e=="string")return jf(e,r);throw new Error(_a(8))}function jf(e,t){return e==="button"?(0,Bs.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Bs.createElement)("img",{alt:"",...t,key:t.key}):fr.createElement(e,t)}function Po(e){return Ma(e.defaultTagName??"div",e,e)}var Ua=u(ve(),1),Vs="data-wp-hash";function Ns(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Uf(document)),e.__wpStyleRuntime}function Gf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Vs}]`))if(r.getAttribute(Vs)===t)return!0;return!1}function Wa(e,t,r){if(!e.head)return;let o=Ns(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Gf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Vs,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Uf(e){let t=Ns();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Wa(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Ha(e,t){let r=Ns();r.styles.set(e,t);for(let o of r.documents.keys())Wa(o,e,t)}typeof process>"u",Ha("0c8601dd83",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');var ja={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",Ha("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Ga={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ao=(0,Ua.forwardRef)(function({variant:t="body-md",render:r,className:o,...s},n){return Po({render:r,defaultTagName:"span",ref:n,props:ur(s,{className:Ze(ja.text,Ga.heading,Ga.p,ja[t],o)})})});var Ro=u(ve(),1),so=(0,Ro.forwardRef)(({icon:e,size:t=24,...r},o)=>(0,Ro.cloneElement)(e,{width:t,height:t,...r,ref:o}));var Eo=u(Ir(),1),zs=u(D(),1),cr=(0,zs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,zs.jsx)(Eo.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Io=u(Ir(),1),Ds=u(D(),1),dr=(0,Ds.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Io.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Lo=u(Ir(),1),Ms=u(D(),1),js=(0,Ms.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ms.jsx)(Lo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Bo=u(Ir(),1),Gs=u(D(),1),Vo=(0,Gs.jsx)(Bo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Gs.jsx)(Bo.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var No=u(Ir(),1),Us=u(D(),1),zo=(0,Us.jsx)(No.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Us.jsx)(No.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Xa=u(ve(),1),Hs="data-wp-hash";function qs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Hf(document)),e.__wpStyleRuntime}function Wf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Hs}]`))if(r.getAttribute(Hs)===t)return!0;return!1}function Ka(e,t,r){if(!e.head)return;let o=qs(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Wf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Hs,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Hf(e){let t=qs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Ka(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function qf(e,t){let r=qs();r.styles.set(e,t);for(let o of r.documents.keys())Ka(o,e,t)}typeof process>"u",qf("b51ff41489","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");var Yf={stack:"_19ce0419607e1896__stack"},Zf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Lr=(0,Xa.forwardRef)(function({direction:t,gap:r,align:o,justify:s,wrap:n,render:a,...l},h){let f={gap:r&&Zf[r],alignItems:o,justifyContent:s,flexDirection:t,flexWrap:n};return Po({render:a,ref:h,props:ur(l,{style:f,className:Yf.stack})})});var Ja=u(ve(),1),Qa=u(D(),1),$a=(0,Ja.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...s},n)=>(0,Qa.jsx)(o,{ref:n,className:Ze("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...s,children:e}));$a.displayName="NavigableRegion";var ei=$a;var ri=u(X(),1),{Fill:oi,Slot:si}=(0,ri.createSlotFill)("SidebarToggle");var Ft=u(D(),1),Ys="data-wp-hash";function Zs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Kf(document)),e.__wpStyleRuntime}function Xf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ys}]`))if(r.getAttribute(Ys)===t)return!0;return!1}function ni(e,t,r){if(!e.head)return;let o=Zs(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Xf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Ys,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Kf(e){let t=Zs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)ni(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Jf(e,t){let r=Zs();r.styles.set(e,t);for(let o of r.documents.keys())ni(o,e,t)}typeof process>"u",Jf("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var mr={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function ai({headingLevel:e=1,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,actions:a,showSidebarToggle:l=!0}){let h=`h${e}`;return(0,Ft.jsxs)(Lr,{direction:"column",className:mr.header,children:[(0,Ft.jsxs)(Lr,{className:mr["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Ft.jsxs)(Lr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[l&&(0,Ft.jsx)(si,{bubblesVirtually:!0,className:mr["sidebar-toggle-slot"]}),o&&(0,Ft.jsx)("div",{className:mr["header-visual"],"aria-hidden":"true",children:o}),s&&(0,Ft.jsx)(Ao,{className:mr["header-title"],render:(0,Ft.jsx)(h,{}),variant:"heading-lg",children:s}),t,r]}),a&&(0,Ft.jsx)(Lr,{align:"center",className:mr["header-actions"],direction:"row",gap:"sm",children:a})]}),n&&(0,Ft.jsx)(Ao,{render:(0,Ft.jsx)("p",{}),variant:"body-md",className:mr["header-subtitle"],children:n})]})}var no=u(D(),1),Ks="data-wp-hash";function Js(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&$f(document)),e.__wpStyleRuntime}function Qf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ks}]`))if(r.getAttribute(Ks)===t)return!0;return!1}function ii(e,t,r){if(!e.head)return;let o=Js(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Qf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Ks,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function $f(e){let t=Js();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)ii(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function ec(e,t){let r=Js();r.styles.set(e,t);for(let o of r.documents.keys())ii(o,e,t)}typeof process>"u",ec("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Xs={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function li({headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,children:a,className:l,actions:h,ariaLabel:f,hasPadding:c=!1,showSidebarToggle:d=!0}){let m=Ze(Xs.page,l);return(0,no.jsxs)(ei,{className:m,ariaLabel:f??(typeof s=="string"?s:""),children:[(s||t||r||h||o)&&(0,no.jsx)(ai,{headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,actions:h,showSidebarToggle:d}),c?(0,no.jsx)("div",{className:Ze(Xs.content,Xs["has-padding"]),children:a}):a]})}li.SidebarToggleFill=oi;var Qs=li;var Jr=u(ie()),gf=u(X()),yf=u(fi()),Fs=u(wt()),vf=u(pt()),bf=u(ve());var pf=u(X(),1),mf=u(Br(),1),_y=u(pt(),1),Fy=u(it(),1),ia=u(ve(),1),ky=u(pr(),1);function Vr(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let n of t){let a=s[n];s=s[n]=Array.isArray(a)?[...a]:{...a}}return s[o]=r,e}var xt=(e,t,r)=>{let o=Array.isArray(t)?t:t.split("."),s=e;return o.forEach(n=>{s=s?.[n]}),s??r};var tc=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.minWidth","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function $s(e,t,r){let o=r?".blocks."+r:"",s=t?"."+t:"",n=`settings${o}${s}`,a=`settings${s}`;if(t)return xt(e,n)??xt(e,a);let l={};return tc.forEach(h=>{let f=xt(e,`settings${o}.${h}`)??xt(e,`settings.${h}`);f!==void 0&&(l=Vr(l,h.split("."),f))}),l}function en(e,t,r,o){let s=o?".blocks."+o:"",n=t?"."+t:"",a=`settings${s}${n}`;return Vr(e,a.split("."),r)}var uc=u(gi(),1);var rc="1600px",oc="320px",sc=1,nc=.25,ac=.75,ic="14px";function yi({minimumFontSize:e,maximumFontSize:t,fontSize:r,minimumViewportWidth:o=oc,maximumViewportWidth:s=rc,scaleFactor:n=sc,minimumFontSizeLimit:a}){if(a=It(a)?a:ic,r){let b=It(r);if(!b?.unit||!b?.value)return null;let P=It(a,{coerceTo:b.unit});if(P?.value&&!e&&!t&&b?.value<=P?.value)return null;if(t||(t=`${b.value}${b.unit}`),!e){let q=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(q),nc),ac),N=ao(b.value*I,3);P?.value&&N<P?.value?e=`${P.value}${P.unit}`:e=`${N}${b.unit}`}}let l=It(e),h=l?.unit||"rem",f=It(t,{coerceTo:h});if(!l||!f)return null;let c=It(e,{coerceTo:"rem"}),d=It(s,{coerceTo:h}),m=It(o,{coerceTo:h});if(!d||!m||!c)return null;let g=d.value-m.value;if(!g)return null;let y=ao(m.value/100,3),T=ao(y,3)+h,O=100*((f.value-l.value)/g),_=ao((O||1)*n,3),S=`${c.value}${c.unit} + ((1vw - ${T}) * ${_})`;return`clamp(${e}, ${S}, ${t})`}function It(e,t={}){if(typeof e!="string"&&typeof e!="number")return null;isFinite(e)&&(e=`${e}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...t},n=s?.join("|"),a=new RegExp(`^(\\d*\\.?\\d+)(${n}){1,1}$`),l=e.toString().match(a);if(!l||l.length<3)return null;let[,h,f]=l,c=parseFloat(h);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:ao(c,3),unit:f}:null}function ao(e,t=3){let r=Math.pow(10,t);return Math.round(e*r)/r}function tn(e){let t=e?.fluid;return t===!0||t&&typeof t=="object"&&Object.keys(t).length>0}function lc(e){let t=e?.typography??{},r=e?.layout,o=It(r?.wideSize)?r?.wideSize:null;return tn(t)&&o?{fluid:{maxViewportWidth:o,...typeof t.fluid=="object"?t.fluid:{}}}:{fluid:t?.fluid}}function vi(e,t){let{size:r}=e;if(!r||r==="0"||e?.fluid===!1||!tn(t?.typography)&&!tn(e))return r;let o=lc(t)?.fluid??{},s=yi({minimumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.min,maximumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var fc=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:e})=>`url( '#wp-duotone-${e}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(e,t)=>vi(e,t),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:e})=>e,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function bi(e,t,r=[],o="slug",s){let n=[t?xt(e,["blocks",t,...r]):void 0,xt(e,r)].filter(Boolean);for(let a of n)if(a){let l=["custom","theme","default"];for(let h of l){let f=a[h];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||bi(e,t,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function cc(e,t,r,[o,s]=[]){let n=fc.find(l=>l.cssVarInfix===o);if(!n||!e.settings)return r;let a=bi(e.settings,t,n.path,"slug",s);if(a){let{valueKey:l}=n,h=a[l];return Do(e,t,h)}return r}function dc(e,t,r,o=[]){let s=(t?xt(e?.settings??{},["blocks",t,"custom",...o]):void 0)??xt(e?.settings??{},["custom",...o]);return s?Do(e,t,s):r}function Do(e,t,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=xt(e,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",n=")",a;if(r.startsWith(o))a=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(n))a=r.slice(s.length,-n.length).split("--");else return r;let[l,...h]=a;return l==="preset"?cc(e,t,r,h):l==="custom"?dc(e,t,r,h):r}function Mo(e,t,r,o=!0){let s=t?"."+t:"",n=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!e)return;let a=xt(e,n);return o?Do(e,r,a):a}function rn(e,t,r,o){let s=t?"."+t:"",n=o?`styles.blocks.${o}${s}`:`styles${s}`;return Vr(e,n.split("."),r)}var on=u(xi(),1);function io(e,t){return typeof e!="object"||typeof t!="object"?e===t:(0,on.default)(e?.styles,t?.styles)&&(0,on.default)(e?.settings,t?.settings)}var Ti=u(Fi(),1);function ki(e){return Object.prototype.toString.call(e)==="[object Object]"}function Oi(e){var t,r;return ki(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(ki(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function hr(e,t){return(0,Ti.default)(e,t,{isMergeableObject:Oi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var kc={grad:.9,turn:360,rad:360/(2*Math.PI)},Ut=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Xe=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},kt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Vi=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},Pi=function(e){return{r:kt(e.r,0,255),g:kt(e.g,0,255),b:kt(e.b,0,255),a:kt(e.a)}},sn=function(e){return{r:Xe(e.r),g:Xe(e.g),b:Xe(e.b),a:Xe(e.a,3)}},Oc=/^#([0-9a-f]{3,8})$/i,jo=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Ni=function(e){var t=e.r,r=e.g,o=e.b,s=e.a,n=Math.max(t,r,o),a=n-Math.min(t,r,o),l=a?n===t?(r-o)/a:n===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(l<0?l+6:l),s:n?a/n*100:0,v:n/255*100,a:s}},zi=function(e){var t=e.h,r=e.s,o=e.v,s=e.a;t=t/360*6,r/=100,o/=100;var n=Math.floor(t),a=o*(1-r),l=o*(1-(t-n)*r),h=o*(1-(1-t+n)*r),f=n%6;return{r:255*[o,l,a,a,h,o][f],g:255*[h,o,o,l,a,a][f],b:255*[a,a,h,o,o,l][f],a:s}},Ai=function(e){return{h:Vi(e.h),s:kt(e.s,0,100),l:kt(e.l,0,100),a:kt(e.a)}},Ri=function(e){return{h:Xe(e.h),s:Xe(e.s),l:Xe(e.l),a:Xe(e.a,3)}},Ei=function(e){return zi((r=(t=e).s,{h:t.h,s:(r*=((o=t.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:t.a}));var t,r,o},uo=function(e){return{h:(t=Ni(e)).h,s:(s=(200-(r=t.s))*(o=t.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:t.a};var t,r,o,s},Tc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Pc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ac=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Rc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ln={string:[[function(e){var t=Oc.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Xe(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Xe(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=Ac.exec(e)||Rc.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:Pi({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=Tc.exec(e)||Pc.exec(e);if(!t)return null;var r,o,s=Ai({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(kc[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Ei(s)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,s=e.a,n=s===void 0?1:s;return Ut(t)&&Ut(r)&&Ut(o)?Pi({r:Number(t),g:Number(r),b:Number(o),a:Number(n)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,s=e.a,n=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var a=Ai({h:Number(t),s:Number(r),l:Number(o),a:Number(n)});return Ei(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,s=e.a,n=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var a=(function(l){return{h:Vi(l.h),s:kt(l.s,0,100),v:kt(l.v,0,100),a:kt(l.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(n)});return zi(a)},"hsv"]]},Ii=function(e,t){for(var r=0;r<t.length;r++){var o=t[r][0](e);if(o)return[o,t[r][1]]}return[null,void 0]},Ec=function(e){return typeof e=="string"?Ii(e.trim(),ln.string):typeof e=="object"&&e!==null?Ii(e,ln.object):[null,void 0]};var nn=function(e,t){var r=uo(e);return{h:r.h,s:kt(r.s+100*t,0,100),l:r.l,a:r.a}},an=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},Li=function(e,t){var r=uo(e);return{h:r.h,s:r.s,l:kt(r.l+100*t,0,100),a:r.a}},un=(function(){function e(t){this.parsed=Ec(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return Xe(an(this.rgba),2)},e.prototype.isDark=function(){return an(this.rgba)<.5},e.prototype.isLight=function(){return an(this.rgba)>=.5},e.prototype.toHex=function(){return t=sn(this.rgba),r=t.r,o=t.g,s=t.b,a=(n=t.a)<1?jo(Xe(255*n)):"","#"+jo(r)+jo(o)+jo(s)+a;var t,r,o,s,n,a},e.prototype.toRgb=function(){return sn(this.rgba)},e.prototype.toRgbString=function(){return t=sn(this.rgba),r=t.r,o=t.g,s=t.b,(n=t.a)<1?"rgba("+r+", "+o+", "+s+", "+n+")":"rgb("+r+", "+o+", "+s+")";var t,r,o,s,n},e.prototype.toHsl=function(){return Ri(uo(this.rgba))},e.prototype.toHslString=function(){return t=Ri(uo(this.rgba)),r=t.h,o=t.s,s=t.l,(n=t.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+n+")":"hsl("+r+", "+o+"%, "+s+"%)";var t,r,o,s,n},e.prototype.toHsv=function(){return t=Ni(this.rgba),{h:Xe(t.h),s:Xe(t.s),v:Xe(t.v),a:Xe(t.a,3)};var t},e.prototype.invert=function(){return Lt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),Lt(nn(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),Lt(nn(this.rgba,-t))},e.prototype.grayscale=function(){return Lt(nn(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),Lt(Li(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),Lt(Li(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?Lt({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Xe(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=uo(this.rgba);return typeof t=="number"?Lt({h:t,s:r.s,l:r.l,a:r.a}):Xe(r.h)},e.prototype.isEqual=function(t){return this.toHex()===Lt(t).toHex()},e})(),Lt=function(e){return e instanceof un?e:new un(e)},Bi=[],Di=function(e){e.forEach(function(t){Bi.indexOf(t)<0&&(t(un,ln),Bi.push(t))})};var fn=u(ve(),1);var Mi=u(ve(),1),Je=(0,Mi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var ji=u(D(),1);function fo({children:e,value:t,baseValue:r,onChange:o,fontLibraryEnabled:s}){let n=(0,fn.useMemo)(()=>hr(r,t),[r,t]),a=(0,fn.useMemo)(()=>({user:t,base:r,merged:n,onChange:o,fontLibraryEnabled:s}),[t,r,n,o,s]);return(0,ji.jsx)(Je.Provider,{value:a,children:e})}var Wt=u(X(),1),al=u(ie(),1);var qc=u(pt(),1),Yc=u(wt(),1);var Gi=u(D(),1);function cn({className:e,...t}){return(0,Gi.jsx)(so,{className:Ze(e,"global-styles-ui-icon-with-current-color"),...t})}var Jt=u(X(),1);var gr=u(D(),1);function Ic({icon:e,children:t,...r}){return(0,gr.jsxs)(Jt.__experimentalItem,{...r,children:[e&&(0,gr.jsxs)(Jt.__experimentalHStack,{justify:"flex-start",children:[(0,gr.jsx)(cn,{icon:e,size:24}),(0,gr.jsx)(Jt.FlexItem,{children:t})]}),!e&&t]})}function Bt(e){return(0,gr.jsx)(Jt.Navigator.Button,{as:Ic,...e})}var Vc=u(X(),1);var Nc=u(ie(),1),Xi=u(it(),1);var dn=function(e){var t=e/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},pn=function(e){return .2126*dn(e.r)+.7152*dn(e.g)+.0722*dn(e.b)};function Ui(e){e.prototype.luminance=function(){return t=pn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*t)/o+0;var t,r,o},e.prototype.contrast=function(t){t===void 0&&(t="#FFF");var r,o,s,n,a,l,h,f=t instanceof e?t:new e(t);return n=this.rgba,a=f.toRgb(),l=pn(n),h=pn(a),r=l>h?(l+.05)/(h+.05):(h+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},e.prototype.isReadable=function(t,r){return t===void 0&&(t="#FFF"),r===void 0&&(r={}),this.contrast(t)>=(l=(a=(o=r).size)===void 0?"normal":a,(n=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:n==="AA"&&l==="large"?3:4.5);var o,s,n,a,l}}var Rt=u(ve(),1),qi=u(pt(),1),Yi=u(wt(),1),hn=u(ie(),1);var De=u(ie(),1),Y1={link:[{value:":link",label:(0,De.__)("Link")},{value:":any-link",label:(0,De.__)("Any Link")},{value:":visited",label:(0,De.__)("Visited")},{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}],button:[{value:":link",label:(0,De.__)("Link")},{value:":any-link",label:(0,De.__)("Any Link")},{value:":visited",label:(0,De.__)("Visited")},{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}]},Z1={"core/button":[{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}]},X1=[{value:"tablet",label:(0,De.__)("Tablet")},{value:"mobile",label:(0,De.__)("Mobile")}];function mn(e,t){if(!t?.length||typeof e!="object"||!e||!Object.keys(e).length)return e;for(let r in e)t.includes(r)?delete e[r]:typeof e[r]=="object"&&mn(e[r],t);return e}var Go=(e,t)=>{if(!e||!t?.length)return{};let r={};return Object.keys(e).forEach(o=>{if(t.includes(o))r[o]=e[o];else if(typeof e[o]=="object"){let s=Go(e[o],t);Object.keys(s).length&&(r[o]=s)}}),r};function co(e,t){let r=Go(structuredClone(e),t);return io(r,e)}function Wi(e,t){if(!Array.isArray(e)||!t)return null;let o=t.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return e.find(s=>s.slug===o)}function Hi(e){let t=e?.settings?.typography?.fontFamilies?.theme,r=e?.settings?.typography?.fontFamilies?.custom,o=[];t&&r?o=[...t,...r]:t?o=t:r&&(o=r);let s=e?.styles?.typography?.fontFamily,n=Wi(o,s),a=e?.styles?.elements?.heading?.typography?.fontFamily,l;return a?l=Wi(o,e?.styles?.elements?.heading?.typography?.fontFamily):l=n,[n,l]}Di([Ui]);function Fe(e,t,r="merged",o=!0,s){let{user:n,base:a,merged:l,onChange:h}=(0,Rt.useContext)(Je),f=s?.split(".").filter(Boolean)??[],c=f.find(O=>O.startsWith(":")),d=f.filter(O=>!O.startsWith(":")).join("."),m=[e,d].filter(Boolean).join("."),g=l;r==="base"?g=a:r==="user"&&(g=n);let y=(0,Rt.useMemo)(()=>{let O=Mo(g,m,t,o);return c?O?.[c]??{}:O},[g,m,t,o,c]),T=(0,Rt.useCallback)(O=>{let _=O;c&&(_={...Mo(n,m,t,!1),[c]:O});let S=rn(n,m,_,t);h(S)},[n,h,m,t,c]);return[y,T]}function Te(e,t,r="merged"){let{user:o,base:s,merged:n,onChange:a}=(0,Rt.useContext)(Je),l=n;r==="base"?l=s:r==="user"&&(l=o);let h=(0,Rt.useMemo)(()=>$s(l,e,t),[l,e,t]),f=(0,Rt.useCallback)(c=>{let d=en(o,e,c,t);a(d)},[o,a,e,t]);return[h,f]}var Lc=[];function Bc({title:e,settings:t,styles:r}){return e===(0,hn.__)("Default")||Object.keys(t||{}).length>0||Object.keys(r||{}).length>0}function Uo(e=[]){let{variationsFromTheme:t}=(0,qi.useSelect)(o=>({variationsFromTheme:o(Yi.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||Lc}),[]),{user:r}=(0,Rt.useContext)(Je);return(0,Rt.useMemo)(()=>{let o=structuredClone(r),s=mn(o,e);s.title=(0,hn.__)("Default");let n=t.filter(l=>co(l,e)).map(l=>hr(s,l)),a=[s,...n];return a?.length?a.filter(Bc):[]},[e,r,t])}var Zi=u(Ws(),1),{lock:o0,unlock:ye}=(0,Zi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var gn=u(D(),1),{useHasDimensionsPanel:l0,useHasTypographyPanel:u0,useHasColorPanel:f0,useSettingsForBlockElement:c0,useHasBackgroundPanel:d0}=ye(Xi.privateApis);var Vt=u(X(),1);function zr(){let[e="black"]=Fe("color.text"),[t="white"]=Fe("color.background"),[r=e]=Fe("elements.h1.color.text"),[o=r]=Fe("elements.link.color.text"),[s=o]=Fe("elements.button.color.background"),[n]=Te("color.palette.core")||[],[a]=Te("color.palette.theme")||[],[l]=Te("color.palette.custom")||[],h=(a??[]).concat(l??[]).concat(n??[]),f=h.filter(({color:m})=>m===e),c=h.filter(({color:m})=>m===s),d=f.concat(c).concat(h).filter(({color:m})=>m!==t).slice(0,2);return{paletteColors:h,highlightedColors:d}}var Qi=u(ve(),1),$i=u(X(),1),vn=u(ie(),1);function zc(e,t){return t.length===0?null:(t.sort((r,o)=>Math.abs(e-r)-Math.abs(e-o)),t[0])}function Dc(e){let t=[];return e.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),n=parseInt(o[1]);for(let a=s;a<=n;a+=100)t.push(a)}else o.length===1&&t.push(parseInt(o[0]))}),t}function Ki(e){let t=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=e.trim(),o=s=>(s=s.trim(),s.match(t)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function yn(e){if(!e)return"";let t=e.trim();return t.includes(",")&&(t=(t.split(",").find(r=>r.trim()!=="")??"").trim()),t=t.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(t=`"${t}"`),t}function Dr(e){let t={fontFamily:Ki(e.fontFamily)};if(!("fontFace"in e)||!Array.isArray(e.fontFace))return t.fontWeight="400",t.fontStyle="normal",t;if(e.fontFace){let r=e.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){t.fontStyle="normal";let o=Dc(r),s=zc(400,o);t.fontWeight=String(s)||"400"}else t.fontStyle=e.fontFace.length&&e.fontFace[0].fontStyle||"normal",t.fontWeight=e.fontFace.length&&String(e.fontFace[0].fontWeight)||"400"}return t}function Ji(e){return{fontFamily:Ki(e.fontFamily),fontStyle:e.fontStyle||"normal",fontWeight:e.fontWeight||"400"}}var po=u(D(),1);function Wo({fontSize:e,variation:t}){let{base:r}=(0,Qi.useContext)(Je),o=r;t&&(o={...r,...t});let[s]=Fe("color.text"),[n,a]=Hi(o),l=n?Dr(n):{},h=a?Dr(a):{};return s&&(l.color=s,h.color=s),e&&(l.fontSize=e,h.fontSize=e),(0,po.jsxs)($i.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,po.jsx)("span",{style:h,children:(0,vn._x)("A","Uppercase letter A")}),(0,po.jsx)("span",{style:l,children:(0,vn._x)("a","Lowercase letter A")})]})}var el=u(X(),1);var tl=u(D(),1);function rl({normalizedColorSwatchSize:e,ratio:t}){let{highlightedColors:r}=zr(),o=e*t;return r.map(({slug:s,color:n},a)=>(0,tl.jsx)(el.__unstableMotion.div,{style:{height:o,width:o,background:n,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:a===1?.2:.1}},`${s}-${a}`))}var nl=u(X(),1),Mr=u(pr(),1),yr=u(ve(),1);var Qt=u(D(),1),ol=248,sl=152,Mc={leading:!0,trailing:!0};function jc({children:e,label:t,isFocused:r,withHoverView:o}){let[s="white"]=Fe("color.background"),[n]=Fe("color.gradient"),a=(0,Mr.useReducedMotion)(),[l,h]=(0,yr.useState)(!1),[f,{width:c}]=(0,Mr.useResizeObserver)(),[d,m]=(0,yr.useState)(c),[g,y]=(0,yr.useState)(),T=(0,Mr.useThrottle)(m,250,Mc);(0,yr.useLayoutEffect)(()=>{c&&T(c)},[c,T]),(0,yr.useLayoutEffect)(()=>{let b=d?d/ol:1,P=b-(g||0);(Math.abs(P)>.1||!g)&&y(b)},[d,g]);let O=c?c/ol:1,_=g||O;return(0,Qt.jsxs)(Qt.Fragment,{children:[(0,Qt.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qt.jsx)("div",{className:Ze("global-styles-ui-preview__wrapper",{"is-hoverable":o}),style:{height:sl*_},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),tabIndex:-1,children:(0,Qt.jsx)(nl.__unstableMotion.div,{style:{height:sl*_,width:"100%",background:n??s},initial:"start",animate:(l||r)&&!a&&t?"hover":"start",children:[].concat(e).map((b,P)=>b({ratio:_,key:P}))})})]})}var jr=jc;var mt=u(D(),1),Gc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},Uc={hover:{opacity:1},start:{opacity:.5}},Wc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function Hc({label:e,isFocused:t,withHoverView:r,variation:o}){let[s]=Fe("typography.fontWeight"),[n="serif"]=Fe("typography.fontFamily"),[a=n]=Fe("elements.h1.typography.fontFamily"),[l=s]=Fe("elements.h1.typography.fontWeight"),[h="black"]=Fe("color.text"),[f=h]=Fe("elements.h1.color.text"),{paletteColors:c}=zr();return(0,mt.jsxs)(jr,{label:e,isFocused:t,withHoverView:r,children:[({ratio:d,key:m})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:Gc,style:{height:"100%",overflow:"hidden"},children:(0,mt.jsxs)(Vt.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,mt.jsx)(Wo,{fontSize:65*d,variation:o}),(0,mt.jsx)(Vt.__experimentalVStack,{spacing:4*d,children:(0,mt.jsx)(rl,{normalizedColorSwatchSize:32,ratio:d})})]})},m),({key:d})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:r?Uc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,mt.jsx)(Vt.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:m},g)=>(0,mt.jsx)("div",{style:{height:"100%",background:m,flexGrow:1}},g))})},d),({ratio:d,key:m})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:Wc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,mt.jsx)(Vt.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:e&&(0,mt.jsx)("div",{style:{fontSize:40*d,fontFamily:a,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:e})})},m)]})}var bn=Hc;var il=u(D(),1);var xn=u(Br(),1),Gr=u(ie(),1),br=u(X(),1),Sn=u(pt(),1),$t=u(ve(),1),Ho=u(it(),1),pl=u(pr(),1);import{speak as Jc}from"@wordpress/a11y";var ll=u(Br(),1),ul=u(pt(),1),Zc=u(X(),1);var Xc=u(D(),1);function Kc(e,t){return e?.filter(r=>r.source==="block"||t.includes(r.name))||[]}function wn(e){let t=(0,ul.useSelect)(s=>{let{getBlockStyles:n}=s(ll.store);return n(e)},[e]),[r]=Fe("variations",e),o=Object.keys(r??{});return Kc(t,o)}var vr=u(X(),1),fl=u(ie(),1);var cl=u(it(),1);var dl=u(D(),1),{StateControl:U0,StateControlBadges:W0}=ye(cl.privateApis);var Nt=u(D(),1),{useHasDimensionsPanel:Qc,useHasTypographyPanel:$c,useHasBorderPanel:ed,useSettingsForBlockElement:td,useHasColorPanel:rd}=ye(Ho.privateApis);function od(){let e=(0,Sn.useSelect)(s=>s(xn.store).getBlockTypes(),[]),t=(s,n)=>{let{core:a,noncore:l}=s;return(n.name.startsWith("core/")?a:l).push(n),s},{core:r,noncore:o}=e.reduce(t,{core:[],noncore:[]});return[...r,...o]}function sd(e){let[t]=Te("",e),r=td(t,e),o=$c(r),s=rd(r),n=ed(r),a=Qc(r),l=n||a,h=!!wn(e)?.length;return o||s||l||h}function nd({block:e}){return sd(e.name)?(0,Nt.jsx)(Bt,{path:"/blocks/"+encodeURIComponent(e.name),children:(0,Nt.jsxs)(br.__experimentalHStack,{justify:"flex-start",children:[(0,Nt.jsx)(Ho.BlockIcon,{icon:e.icon}),(0,Nt.jsx)(br.FlexItem,{children:e.title})]})}):null}function ad({filterValue:e}){let t=od(),r=(0,pl.useDebounce)(Jc,500),{isMatchingSearchTerm:o}=(0,Sn.useSelect)(xn.store),s=e?t.filter(a=>o(a,e)):t,n=(0,$t.useRef)(null);return(0,$t.useEffect)(()=>{if(!e)return;let a=n.current?.childElementCount||0,l=(0,Gr.sprintf)((0,Gr._n)("%d result found.","%d results found.",a),a);r(l,"polite")},[e,r]),(0,Nt.jsx)("div",{ref:n,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,Nt.jsx)(br.__experimentalText,{align:"center",as:"p",children:(0,Gr.__)("No blocks found.")}):s.map(a=>(0,Nt.jsx)(nd,{block:a},"menu-itemblock-"+a.name))})}var Q0=(0,$t.memo)(ad);var cd=u(Br(),1),yl=u(it(),1),Cn=u(ve(),1),dd=u(pt(),1),pd=u(wt(),1),_n=u(X(),1),vl=u(ie(),1);var id=u(it(),1),ml=u(Br(),1),ld=u(X(),1),ud=u(ve(),1);var fd=u(D(),1);var hl=u(X(),1),gl=u(D(),1);function St({children:e,level:t=2}){return(0,gl.jsx)(hl.__experimentalHeading,{className:"global-styles-ui-subtitle",level:t,children:e})}var Fn=u(D(),1);var{useHasDimensionsPanel:gb,useHasTypographyPanel:yb,useHasBorderPanel:vb,useSettingsForBlockElement:bb,useHasColorPanel:wb,useHasFiltersPanel:xb,useHasImageSettingsPanel:Sb,useHasBackgroundPanel:Cb,BackgroundPanel:_b,BorderPanel:Fb,ColorPanel:kb,TypographyPanel:Ob,DimensionsPanel:Tb,FiltersPanel:Pb,ImageSettingsPanel:Ab,AdvancedPanel:Rb}=ye(yl.privateApis);var kg=u(ie(),1),Og=u(X(),1),Tg=u(ve(),1);var md=u(X(),1);var hd=u(D(),1);var gd=u(ie(),1),qo=u(X(),1);var bl=u(D(),1);var Xo=u(X(),1);var wl=u(X(),1);var Yo=u(D(),1),yd=({variation:e,isFocused:t,withHoverView:r})=>(0,Yo.jsx)(jr,{label:e.title,isFocused:t,withHoverView:r,children:({ratio:o,key:s})=>(0,Yo.jsx)(wl.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Yo.jsx)(Wo,{variation:e,fontSize:85*o})},s)}),xl=yd;var Cl=u(X(),1),wr=u(ve(),1),_l=u(kn(),1),Zo=u(ie(),1);var mo=u(D(),1);function Ur({variation:e,children:t,isPill:r=!1,properties:o,showTooltip:s=!1}){let[n,a]=(0,wr.useState)(!1),{base:l,user:h,onChange:f}=(0,wr.useContext)(Je),c=(0,wr.useMemo)(()=>{let O=hr(l,e);return o&&(O=Go(O,o)),{user:e,base:l,merged:O,onChange:()=>{}}},[e,l,o]),d=()=>f(e),m=O=>{O.keyCode===_l.ENTER&&(O.preventDefault(),d())},g=(0,wr.useMemo)(()=>io(h,e),[h,e]),y=e?.title;e?.description&&(y=(0,Zo.sprintf)((0,Zo._x)("%1$s (%2$s)","variation label"),e?.title,e?.description));let T=(0,mo.jsx)("div",{className:Ze("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:d,onKeyDown:m,tabIndex:0,"aria-label":y,"aria-current":g,onFocus:()=>a(!0),onBlur:()=>a(!1),children:(0,mo.jsx)("div",{className:Ze("global-styles-ui-variations_item-preview",{"is-pill":r}),children:t(n)})});return(0,mo.jsx)(Je.Provider,{value:c,children:s?(0,mo.jsx)(Cl.Tooltip,{text:e?.title,children:T}):T})}var xr=u(D(),1),Fl=["typography"];function Ko({title:e,gap:t=2}){let r=Uo(Fl);return r?.length<=1?null:(0,xr.jsxs)(Xo.__experimentalVStack,{spacing:3,children:[e&&(0,xr.jsx)(St,{level:3,children:e}),(0,xr.jsx)(Xo.__experimentalGrid,{columns:3,gap:t,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,xr.jsx)(Ur,{variation:o,properties:Fl,showTooltip:!0,children:()=>(0,xr.jsx)(xl,{variation:o})},s))})]})}var _g=u(ie(),1),xo=u(X(),1);var Fg=u(ve(),1);var Ht=u(ve(),1),or=u(pt(),1),rr=u(wt(),1),An=u(ie(),1);var On=u(Ol(),1),Tl=u(wt(),1),Pl="/wp/v2/font-families";function Al(e){let{receiveEntityRecords:t}=e.dispatch(Tl.store);t("postType","wp_font_family",[],void 0,!0)}async function Rl(e,t){let o=await(0,On.default)({path:Pl,method:"POST",body:e});return Al(t),{id:o.id,...o.font_family_settings,fontFace:[]}}async function El(e,t,r){let o={path:`${Pl}/${e}/font-faces`,method:"POST",body:t},s=await(0,On.default)(o);return Al(r),{id:s.id,...s.font_face_settings}}var Bl=u(X(),1);var Ot=u(ie(),1),Tn=["otf","ttf","woff","woff2"],Il={100:(0,Ot._x)("Thin","font weight"),200:(0,Ot._x)("Extra-light","font weight"),300:(0,Ot._x)("Light","font weight"),400:(0,Ot._x)("Normal","font weight"),500:(0,Ot._x)("Medium","font weight"),600:(0,Ot._x)("Semi-bold","font weight"),700:(0,Ot._x)("Bold","font weight"),800:(0,Ot._x)("Extra-bold","font weight"),900:(0,Ot._x)("Black","font weight")},Ll={normal:(0,Ot._x)("Normal","font style"),italic:(0,Ot._x)("Italic","font style")};var{File:Vl}=window,{kebabCase:vd}=ye(Bl.privateApis);function er(e,t={}){return!e.name&&(e.fontFamily||e.slug)&&(e.name=e.fontFamily||e.slug),{...e,...t}}function bd(e){return typeof e!="string"?!1:e!==decodeURIComponent(e)}function Jo(e){let t=Il[e.fontWeight??""]||e.fontWeight,r=e.fontStyle==="normal"?"":Ll[e.fontStyle??""]||e.fontStyle;return`${t} ${r}`}function wd(e=[],t=[]){let r=new Map;for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function Nl(e=[],t=[]){let r=new Map;for(let o of e)r.set(o.slug,{...o});for(let o of t)if(r.has(o.slug)){let{fontFace:s,...n}=o,a=r.get(o.slug),l=wd(a.fontFace,s);r.set(o.slug,{...n,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function tr(e,t,r="all"){let o;if(typeof t=="string")o=`url(${t})`;else if(t instanceof Vl)o=await t.arrayBuffer();else return;let n=await new window.FontFace(yn(e.fontFamily),o,{style:e.fontStyle,weight:String(e.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(n),r==="iframe"||r==="all"){let a=document.querySelector('iframe[name="editor-canvas"]');a?.contentDocument&&a.contentDocument.fonts.add(n)}}function ho(e,t="all"){let r=o=>{o.forEach(s=>{s.family===yn(e?.fontFamily)&&s.weight===e?.fontWeight&&s.style===e?.fontStyle&&o.delete(s)})};if((t==="document"||t==="all")&&r(document.fonts),t==="iframe"||t==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Wr(e){if(!e)return;let t;if(Array.isArray(e)?t=e[0]:t=e,!t.startsWith("file:."))return bd(t)||(t=encodeURI(t)),t}function zl(e){let t=new FormData,{fontFace:r,category:o,...s}=e,n={...s,slug:vd(e.slug)};return t.append("font_family_settings",JSON.stringify(n)),t}function Dl(e){return(e?.fontFace??[]).map((r,o)=>{let s={...r},n=new FormData;if(s.file){let a=Array.isArray(s.file)?s.file:[s.file],l=[];a.forEach((h,f)=>{let c=`file-${o}-${f}`;n.append(c,h,h.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,n.append("font_face_settings",JSON.stringify(s))}else n.append("font_face_settings",JSON.stringify(s));return n})}async function Ml(e,t,r){let o=[];for(let n of t)try{let a=await El(e,n,r);o.push({status:"fulfilled",value:a})}catch(a){o.push({status:"rejected",reason:a})}let s={errors:[],successes:[]};return o.forEach((n,a)=>{if(n.status==="fulfilled"&&n.value){let l=n.value;s.successes.push(l)}else n.reason&&s.errors.push({data:t[a],message:n.reason.message})}),s}async function jl(e){e=Array.isArray(e)?e:[e];let t=await Promise.all(e.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new Vl([o],s,{type:o.type})})));return t.length===1?t[0]:t}function Pn(e,t){return t.findIndex(r=>r.fontWeight===e.fontWeight&&r.fontStyle===e.fontStyle)!==-1}function Gl(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let n of t){let a=s[n];s=s[n]=Array.isArray(a)?[...a]:{...a}}return s[o]=r,e}function Qo(e,t,r=[]){let o=h=>h.slug===e.slug,s=h=>h.find(o),n=h=>h?r.filter(f=>!o(f)):[...r,e],a=h=>{let f=d=>d.fontWeight===t.fontWeight&&d.fontStyle===t.fontStyle;if(!h)return[...r,{...e,fontFace:[t]}];let c=h.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,t],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return t?a(l):n(l)}var Ul=u(D(),1),lt=(0,Ht.createContext)({});lt.displayName="FontLibraryContext";function xd({children:e}){let t=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(x=>{let{__experimentalGetCurrentGlobalStylesId:E}=x(rr.store);return{globalStylesId:E()}},[]),n=(0,rr.useEntityRecord)("root","globalStyles",s),[a,l]=(0,Ht.useState)(!1),{records:h=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(h||[]).map(x=>({id:x.id,...x.font_family_settings||{},fontFace:x?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,m]=Te("typography.fontFamilies"),g=async x=>{if(!n.record)return;let E=n.record,te=Gl(E??{},["settings","typography","fontFamilies"],x);await r("root","globalStyles",te)},[y,T]=(0,Ht.useState)(""),[O,_]=(0,Ht.useState)(void 0),S=d?.theme?d.theme.map(x=>er(x,{source:"theme"})).sort((x,E)=>x.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[],P=c?c.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[];(0,Ht.useEffect)(()=>{y||_(void 0)},[y]);let q=x=>{if(!x){_(void 0);return}let te=(x.source==="theme"?S:P).find(ce=>ce.slug===x.slug);_({...te||x,source:x.source})},[I]=(0,Ht.useState)(new Set),N=x=>x.reduce((te,ce)=>{let ae=ce?.fontFace&&ce.fontFace?.length>0?ce?.fontFace.map(Ce=>`${Ce.fontStyle??""}${Ce.fontWeight??""}`):["normal400"];return te[ce.slug]=ae,te},{}),W=x=>N(x==="theme"?S:b),$=(x,E,te,ce)=>!E&&!te?!!W(ce)[x]:!!W(ce)[x]?.includes((E??"")+(te??"")),be=(x,E)=>W(E)[x]||[];async function H(x){l(!0);try{let E=[],te=[];for(let ae of x){let Ce=!1,qe=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:ae.slug,per_page:1,_embed:!0}),ke=qe&&qe.length>0?qe[0]:null,J=ke?{id:ke.id,...ke.font_family_settings,fontFace:(ke?._embedded?.font_faces??[]).map(Me=>Me.font_face_settings)||[]}:null;J||(Ce=!0,J=await Rl(zl(ae),t));let Se=J.fontFace&&ae.fontFace?J.fontFace.filter(Me=>Me&&ae.fontFace&&Pn(Me,ae.fontFace)):[];J.fontFace&&ae.fontFace&&(ae.fontFace=ae.fontFace.filter(Me=>!Pn(Me,J.fontFace)));let Ae=[],Ct=[];if(ae?.fontFace?.length??!1){let Me=await Ml(J.id,Dl(ae),t);Ae=Me?.successes,Ct=Me?.errors}(Ae?.length>0||Se?.length>0)&&(J.fontFace=[...Ae],E.push(J)),J&&!ae?.fontFace?.length&&E.push(J),Ce&&(ae?.fontFace?.length??0)>0&&Ae?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),te=te.concat(Ct)}let ce=te.reduce((ae,Ce)=>ae.includes(Ce.message)?ae:[...ae,Ce.message],[]);if(E.length>0){let ae=le(E);await g(ae)}if(ce.length>0){let ae=new Error((0,An.__)("There was an error installing fonts."));throw ae.installationErrors=ce,ae}}finally{l(!1)}}async function v(x){if(!x?.id)throw new Error((0,An.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",x.id,{force:!0});let E=L(x);return await g(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=x=>{let te=(d?.[x.source??""]??[]).filter(ae=>ae.slug!==x.slug),ce={...d,[x.source??""]:te};return m(ce),x.fontFace&&x.fontFace.forEach(ae=>{ho(ae,"all")}),ce},le=x=>{let E=oe(x),te={...d,custom:Nl(d?.custom,E)};return m(te),K(E),te},oe=x=>x.map(({id:E,fontFace:te,...ce})=>({...ce,...te&&te.length>0?{fontFace:te.map(({id:ae,...Ce})=>Ce)}:{}})),K=x=>{x.forEach(E=>{E.fontFace&&E.fontFace.forEach(te=>{let ce=Wr(te?.src??"");ce&&tr(te,ce,"all")})})},ge=(x,E)=>{let te=d?.[x.source??""]??[],ce=Qo(x,E,te);m({...d,[x.source??""]:ce});let ae=$(x.slug,E?.fontStyle??"",E?.fontWeight??"",x.source??"custom");if(E&&ae)ho(E,"all");else{let Ce=Wr(E?.src??"");E&&Ce&&tr(E,Ce,"all")}},R=async x=>{if(!x.src)return;let E=Wr(x.src);!E||I.has(E)||(tr(x,E,"document"),I.add(E))};return(0,Ul.jsx)(lt.Provider,{value:{libraryFontSelected:O,handleSetLibraryFontSelected:q,fontFamilies:d??{},baseCustomFonts:P,isFontActivated:$,getFontFacesActivated:be,loadFontFaceAsset:R,installFonts:H,uninstallFontFamily:v,toggleActivateFont:ge,getAvailableFontsOutline:N,modalTabOpen:y,setModalTabOpen:T,saveFontFamilies:g,isResolvingLibrary:f,isInstalling:a},children:e})}var $o=xd;var ms=u(ie(),1),Bn=u(X(),1),Fu=u(wt(),1),Sg=u(pt(),1);var he=u(X(),1),yo=u(wt(),1),Rn=u(pt(),1),Cr=u(ve(),1),Ee=u(ie(),1);var qr=u(ie(),1),Tt=u(X(),1);var Wl=u(X(),1),zt=u(ve(),1);var es=u(D(),1);function Sd(e){if(e.preview)return e.preview;if(e.src)return Array.isArray(e.src)?e.src[0]:e.src}function Cd(e){return"fontStyle"in e&&e.fontStyle||"fontWeight"in e&&e.fontWeight?e:"fontFace"in e&&e.fontFace&&e.fontFace.length?e.fontFace.find(t=>t.fontStyle==="normal"&&t.fontWeight==="400")||e.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:e.fontFamily}}function _d({font:e,text:t}){let r=(0,zt.useRef)(null),o=Cd(e),s=Dr(e);t=t||("name"in e?e.name:"");let n=e.preview,[a,l]=(0,zt.useState)(!1),[h,f]=(0,zt.useState)(!1),{loadFontFaceAsset:c}=(0,zt.useContext)(lt),d=n??Sd(o),m=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Ji(o),y={fontSize:"18px",lineHeight:1,opacity:h?"1":"0",...s,...g};return(0,zt.useEffect)(()=>{let T=new window.IntersectionObserver(([O])=>{l(O.isIntersecting)},{});return r.current&&T.observe(r.current),()=>T.disconnect()},[r]),(0,zt.useEffect)(()=>{(async()=>a&&(!m&&o.src&&await c(o),f(!0)))()},[o,a,c,m]),(0,es.jsx)("div",{ref:r,children:m?(0,es.jsx)("img",{src:d,loading:"lazy",alt:t,className:"font-library__font-variant_demo-image"}):(0,es.jsx)(Wl.__experimentalText,{style:y,className:"font-library__font-variant_demo-text",children:t})})}var Hr=_d;var Dt=u(D(),1);function Fd({font:e,onClick:t,variantsText:r,navigatorPath:o}){let s=e.fontFace?.length||1,n={cursor:t?"pointer":"default"},a=(0,Tt.useNavigator)();return(0,Dt.jsx)(Tt.Button,{__next40pxDefaultSize:!0,onClick:()=>{t(),o&&a.goTo(o)},style:n,className:"font-library__font-card",children:(0,Dt.jsxs)(Tt.Flex,{justify:"space-between",wrap:!1,children:[(0,Dt.jsx)(Hr,{font:e}),(0,Dt.jsxs)(Tt.Flex,{justify:"flex-end",children:[(0,Dt.jsx)(Tt.FlexItem,{children:(0,Dt.jsx)(Tt.__experimentalText,{className:"font-library__font-card__count",children:r||(0,qr.sprintf)((0,qr._n)("%d variant","%d variants",s),s)})}),(0,Dt.jsx)(Tt.FlexItem,{children:(0,Dt.jsx)(so,{icon:(0,qr.isRTL)()?cr:dr})})]})]})})}var go=Fd;var ts=u(ve(),1),rs=u(X(),1);var Sr=u(D(),1);function kd({face:e,font:t}){let{isFontActivated:r,toggleActivateFont:o}=(0,ts.useContext)(lt),s=(t?.fontFace?.length??0)>0?r(t.slug,e.fontStyle,e.fontWeight,t.source):r(t.slug,void 0,void 0,t.source),n=()=>{if((t?.fontFace?.length??0)>0){o(t,e);return}o(t)},a=t.name+" "+Jo(e),l=(0,ts.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(rs.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(rs.CheckboxControl,{checked:s,onChange:n,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Hr,{font:e,text:a,onClick:n})})]})})}var Hl=kd;function ql(e){switch(e){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(e,10)}}function os(e){return e.sort((t,r)=>t.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&t.fontStyle!=="normal"?1:t.fontStyle===r.fontStyle?ql(t.fontWeight?.toString()??"normal")-ql(r.fontWeight?.toString()??"normal"):!t.fontStyle||!r.fontStyle?t.fontStyle?-1:1:t.fontStyle.localeCompare(r.fontStyle))}var fe=u(D(),1);function Od(){let{baseCustomFonts:e,libraryFontSelected:t,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:n,saveFontFamilies:a,getFontFacesActivated:l}=(0,Cr.useContext)(lt),[h,f]=Te("typography.fontFamilies"),[c,d]=(0,Cr.useState)(!1),[m,g]=(0,Cr.useState)(null),[y]=Te("typography.fontFamilies",void 0,"base"),T=(0,Rn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:x}=R(yo.store);return x()},[]),_=!!(0,yo.useEntityRecord)("root","globalStyles",T)?.edits?.settings?.typography?.fontFamilies,S=h?.theme?h.theme.map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name)):[],b=new Set(S.map(R=>R.slug)),P=y?.theme?S.concat(y.theme.filter(R=>!b.has(R.slug)).map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name))):[],q=t?.source==="custom"&&t?.id,I=(0,Rn.useSelect)(R=>{let{canUser:x}=R(yo.store);return q&&x("delete",{kind:"postType",name:"wp_font_family",id:q})},[q]),N=!!t&&t?.source!=="theme"&&I,W=()=>{d(!0)},$=async()=>{g(null);try{await a(h),g({type:"success",message:(0,Ee.__)("Font family updated successfully.")})}catch(R){g({type:"error",message:(0,Ee.sprintf)((0,Ee.__)("There was an error updating the font family. %s"),R.message)})}},be=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(R.fontFace):[],H=R=>{let x=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Ee.sprintf)((0,Ee.__)("%1$d of %2$d active"),E,x)};(0,Cr.useEffect)(()=>{r(t)},[]);let v=t?l(t.slug,t.source).length:0,L=t?.fontFace?.length??(t?.fontFamily?1:0),le=v>0&&v!==L,oe=v===L,K=()=>{if(!t||!t?.source)return;let R=h?.[t.source]?.filter(E=>E.slug!==t.slug)??[],x=oe?R:[...R,t];f({...h,[t.source]:x}),t.fontFace&&t.fontFace.forEach(E=>{if(oe)ho(E,"all");else{let te=Wr(E?.src??"");te&&tr(E,te,"all")}})},ge=P.length>0||e.length>0;return(0,fe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,fe.jsx)("div",{className:"font-library__loading",children:(0,fe.jsx)(he.ProgressBar,{})}),!s&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsxs)(he.Navigator,{initialPath:t?"/fontFamily":"/",children:[(0,fe.jsx)(he.Navigator.Screen,{path:"/",children:(0,fe.jsxs)(he.__experimentalVStack,{spacing:"8",children:[m&&(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),!ge&&(0,fe.jsx)(he.__experimentalText,{as:"p",children:(0,Ee.__)("No fonts installed.")}),P.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Theme","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:P.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]}),e.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Custom","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]})]})}),(0,fe.jsxs)(he.Navigator.Screen,{path:"/fontFamily",children:[t&&(0,fe.jsx)(Td,{font:t,isOpen:c,setIsOpen:d,setNotice:g,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,fe.jsxs)(he.Flex,{justify:"flex-start",children:[(0,fe.jsx)(he.Navigator.BackButton,{icon:(0,Ee.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),g(null)},label:(0,Ee.__)("Back")}),(0,fe.jsx)(he.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:t?.name})]}),m&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsx)(he.__experimentalSpacer,{margin:1}),(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),(0,fe.jsx)(he.__experimentalSpacer,{margin:1})]}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsx)(he.__experimentalText,{children:(0,Ee.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsxs)(he.__experimentalVStack,{spacing:0,children:[(0,fe.jsx)(he.CheckboxControl,{className:"font-library__select-all",label:(0,Ee.__)("Select all"),checked:oe,onChange:K,indeterminate:le}),(0,fe.jsx)(he.__experimentalSpacer,{margin:8}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t&&be(t).map((R,x)=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(Hl,{font:t,face:R},`face${x}`)},`face${x}`))})]})]})]}),(0,fe.jsxs)(he.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[n&&(0,fe.jsx)(he.ProgressBar,{}),N&&(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:W,children:(0,Ee.__)("Delete")}),(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!_,accessibleWhenDisabled:!0,children:(0,Ee.__)("Update")})]})]})]})}function Td({font:e,isOpen:t,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:n}){let a=(0,he.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(e),a.goBack(),n(void 0),o({type:"success",message:(0,Ee.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Ee.__)("There was an error uninstalling the font family.")+f.message})}},h=()=>{r(!1)};return(0,fe.jsx)(he.__experimentalConfirmDialog,{isOpen:t,cancelButtonText:(0,Ee.__)("Cancel"),confirmButtonText:(0,Ee.__)("Delete"),onCancel:h,onConfirm:l,size:"medium",children:e&&(0,Ee.sprintf)((0,Ee.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),e.name)})}var ss=Od;var Ke=u(ve(),1),ne=u(X(),1),eu=u(pr(),1),Re=u(ie(),1);var tu=u(wt(),1);function Yl(e,t){let{category:r,search:o}=t,s=e||[];return r&&r!=="all"&&(s=s.filter(n=>n.categories&&n.categories.indexOf(r)!==-1)),o&&(s=s.filter(n=>n.font_family_settings&&n.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Zl(e){return e.reduce((t,r)=>({...t,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Xl(e,t,r){return t?!!r[e]?.[`${t.fontStyle}-${t.fontWeight}`]:!!r[e]}var vo=u(ie(),1),ut=u(X(),1),Pt=u(D(),1);function Pd(){let e=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Pt.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Pt.jsx)(ut.Card,{children:(0,Pt.jsxs)(ut.CardBody,{children:[(0,Pt.jsx)(ut.__experimentalHeading,{level:2,children:(0,vo.__)("Connect to Google Fonts")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:3}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:e,children:(0,vo.__)("Allow access to Google Fonts")})]})})})}var Kl=Pd;var Jl=u(ve(),1),ns=u(X(),1);var _r=u(D(),1);function Ad({face:e,font:t,handleToggleVariant:r,selected:o}){let s=()=>{if(t?.fontFace){r(t,e);return}r(t)},n=t.name+" "+Jo(e),a=(0,Jl.useId)();return(0,_r.jsx)("div",{className:"font-library__font-card",children:(0,_r.jsxs)(ns.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,_r.jsx)(ns.CheckboxControl,{checked:o,onChange:s,id:a}),(0,_r.jsx)("label",{htmlFor:a,children:(0,_r.jsx)(Hr,{font:e,text:n,onClick:s})})]})})}var Ql=Ad;var ee=u(D(),1),Rd={slug:"all",name:(0,Re._x)("All","font categories")},$l="wp-font-library-google-fonts-permission",Ed=500;function Id({slug:e}){let t=e==="google-fonts",r=()=>window.localStorage.getItem($l)==="true",[o,s]=(0,Ke.useState)(null),[n,a]=(0,Ke.useState)(null),[l,h]=(0,Ke.useState)([]),[f,c]=(0,Ke.useState)(1),[d,m]=(0,Ke.useState)({}),[g,y]=(0,Ke.useState)(t&&!r()),{installFonts:T,isInstalling:O}=(0,Ke.useContext)(lt),{record:_,isResolving:S}=(0,tu.useEntityRecord)("root","fontCollection",e);(0,Ke.useEffect)(()=>{let J=()=>{y(t&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[e,t]);let b=()=>{window.localStorage.setItem($l,"false"),window.dispatchEvent(new Event("storage"))};(0,Ke.useEffect)(()=>{s(null)},[e]),(0,Ke.useEffect)(()=>{h([])},[o]);let P=(0,Ke.useMemo)(()=>_?.font_families??[],[_]),q=_?.categories??[],I=[Rd,...q],N=(0,Ke.useMemo)(()=>Yl(P,d),[P,d]),W=Math.max(window.innerHeight,Ed),$=Math.floor((W-417)/61),be=Math.ceil(N.length/$),H=(f-1)*$,v=f*$,L=N.slice(H,v),le=J=>{m({...d,category:J}),c(1)},K=(0,eu.debounce)(J=>{m({...d,search:J}),c(1)},300),ge=(J,Se)=>{let Ae=Qo(J,Se,l);h(Ae)},R=Zl(l),x=()=>{h([])},E=l.length>0?l[0]?.fontFace?.length??0:0,te=E>0&&E!==o?.fontFace?.length,ce=E===o?.fontFace?.length,ae=()=>{let J=[];!ce&&o&&J.push(o),h(J)},Ce=async()=>{a(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async Se=>{Se.src&&(Se.file=await jl(Se.src))}))}catch{a({type:"error",message:(0,Re.__)("Error installing the fonts, could not be downloaded.")});return}try{await T([J]),a({type:"success",message:(0,Re.__)("Fonts were installed successfully.")})}catch(Se){a({type:"error",message:Se.message})}x()},qe=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(J.fontFace):[];if(g)return(0,ee.jsx)(Kl,{});let ke=e==="google-fonts"&&!g&&!o;return(0,ee.jsxs)("div",{className:"font-library__tabpanel-layout",children:[S&&(0,ee.jsx)("div",{className:"font-library__loading",children:(0,ee.jsx)(ne.ProgressBar,{})}),!S&&_&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsxs)(ne.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,ee.jsxs)(ne.Navigator.Screen,{path:"/",children:[(0,ee.jsxs)(ne.__experimentalHStack,{justify:"space-between",children:[(0,ee.jsxs)(ne.__experimentalVStack,{children:[(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,children:_.name}),(0,ee.jsx)(ne.__experimentalText,{children:_.description})]}),ke&&(0,ee.jsx)(ne.DropdownMenu,{icon:js,label:(0,Re.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Re.__)("Revoke access to Google Fonts"),onClick:b}]})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsxs)(ne.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,ee.jsx)(ne.SearchControl,{value:d.search,placeholder:(0,Re.__)("Font name\u2026"),label:(0,Re.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,ee.jsx)(ne.SelectControl,{__next40pxDefaultSize:!0,label:(0,Re.__)("Category"),value:d.category,onChange:le,children:I&&I.map(J=>(0,ee.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),!!_?.font_families?.length&&!N.length&&(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("No fonts found. Try with a different search term.")}),(0,ee.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(go,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,ee.jsxs)(ne.Navigator.Screen,{path:"/fontFamily",children:[(0,ee.jsxs)(ne.Flex,{justify:"flex-start",children:[(0,ee.jsx)(ne.Navigator.BackButton,{icon:(0,Re.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),a(null)},label:(0,Re.__)("Back")}),(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),n&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(ne.__experimentalSpacer,{margin:1}),(0,ee.jsx)(ne.Notice,{status:n.type,onRemove:()=>a(null),children:n.message}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:1})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("Select font variants to install.")}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.CheckboxControl,{className:"font-library__select-all",label:(0,Re.__)("Select all"),checked:ce,onChange:ae,indeterminate:te}),(0,ee.jsx)(ne.__experimentalVStack,{spacing:0,children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&qe(o).map((J,Se)=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(Ql,{font:o,face:J,handleToggleVariant:ge,selected:Xl(o.slug,o.fontFace?J:null,R)})},`face${Se}`))})}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:16})]})]}),o&&(0,ee.jsx)(ne.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,ee.jsx)(ne.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ce,isBusy:O,disabled:l.length===0||O,accessibleWhenDisabled:!0,children:(0,Re.__)("Install")})}),!o&&(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,ee.jsx)(ne.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Ke.createInterpolateElement)((0,Re.sprintf)((0,Re._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",be),{div:(0,ee.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,ee.jsx)(ne.SelectControl,{"aria-label":(0,Re.__)("Current page"),value:f.toString(),options:[...Array(be)].map((J,Se)=>({label:(Se+1).toString(),value:(Se+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,ee.jsx)(ne.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Re.__)("Previous page"),icon:(0,Re.isRTL)()?Vo:zo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,ee.jsx)(ne.Button,{onClick:()=>c(f+1),disabled:f===be,accessibleWhenDisabled:!0,label:(0,Re.__)("Next page"),icon:(0,Re.isRTL)()?zo:Vo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var as=Id;var Yr=u(ie(),1),tt=u(X(),1),wo=u(ve(),1);var is=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),ru=(function(){var e,t,r;return(function(){function o(s,n,a){function l(c,d){if(!n[c]){if(!s[c]){var m=typeof is=="function"&&is;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=n[c]={exports:{}};s[c][0].call(y.exports,function(T){var O=s[c][1][T];return l(O||T)},y,y.exports,o,s,n,a)}return n[c].exports}for(var h=typeof is=="function"&&is,f=0;f<a.length;f++)l(a[f]);return l}return o})()({1:[function(o,s,n){var a=4096,l=2*a+32,h=2*a-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=a,c.IBUF_MASK=h,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,m=this.input_.read(this.buf_,d,a);if(m<0)throw new Error("Unexpected end of input");if(m<a){this.eos_=1;for(var g=0;g<32;g++)this.buf_[d+m+g]=0}if(d===0){for(var g=0;g<32;g++)this.buf_[(a<<1)+g]=this.buf_[g];this.buf_ptr_=a}else this.buf_ptr_=0;this.bit_end_pos_+=m<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&h]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var m=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,m},s.exports=c},{}],2:[function(o,s,n){var a=0,l=1,h=2,f=3;n.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),n.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,n){var a=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,h=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,m=o("./context"),g=o("./prefix"),y=o("./transform"),T=8,O=16,_=256,S=704,b=26,P=6,q=2,I=8,N=255,W=1080,$=18,be=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),H=16,v=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),le=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function oe(z){var k;return z.readBits(1)===0?16:(k=z.readBits(3),k>0?17+k:(k=z.readBits(3),k>0?8+k:17))}function K(z){if(z.readBits(1)){var k=z.readBits(3);return k===0?1:z.readBits(k)+(1<<k)}return 0}function ge(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(z){var k=new ge,B,A,V;if(k.input_end=z.readBits(1),k.input_end&&z.readBits(1))return k;if(B=z.readBits(2)+4,B===7){if(k.is_metadata=!0,z.readBits(1)!==0)throw new Error("Invalid reserved bit");if(A=z.readBits(2),A===0)return k;for(V=0;V<A;V++){var de=z.readBits(8);if(V+1===A&&A>1&&de===0)throw new Error("Invalid size byte");k.meta_block_length|=de<<V*8}}else for(V=0;V<B;++V){var re=z.readBits(4);if(V+1===B&&B>4&&re===0)throw new Error("Invalid size nibble");k.meta_block_length|=re<<V*4}return++k.meta_block_length,!k.input_end&&!k.is_metadata&&(k.is_uncompressed=z.readBits(1)),k}function x(z,k,B){var A=k,V;return B.fillBitWindow(),k+=B.val_>>>B.bit_pos_&N,V=z[k].bits-I,V>0&&(B.bit_pos_+=I,k+=z[k].value,k+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=z[k].bits,z[k].value}function E(z,k,B,A){for(var V=0,de=T,re=0,se=0,we=32768,ue=[],Y=0;Y<32;Y++)ue.push(new c(0,0));for(d(ue,0,5,z,$);V<k&&we>0;){var _e=0,Qe;if(A.readMoreInput(),A.fillBitWindow(),_e+=A.val_>>>A.bit_pos_&31,A.bit_pos_+=ue[_e].bits,Qe=ue[_e].value&255,Qe<O)re=0,B[V++]=Qe,Qe!==0&&(de=Qe,we-=32768>>Qe);else{var yt=Qe-14,rt,$e,Ve=0;if(Qe===O&&(Ve=de),se!==Ve&&(re=0,se=Ve),rt=re,re>0&&(re-=2,re<<=yt),re+=A.readBits(yt)+3,$e=re-rt,V+$e>k)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var et=0;et<$e;et++)B[V+et]=se;V+=$e,se!==0&&(we-=$e<<15-se)}}if(we!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+we);for(;V<k;V++)B[V]=0}function te(z,k,B,A){var V=0,de,re=new Uint8Array(z);if(A.readMoreInput(),de=A.readBits(2),de===1){for(var se,we=z-1,ue=0,Y=new Int32Array(4),_e=A.readBits(2)+1;we;)we>>=1,++ue;for(se=0;se<_e;++se)Y[se]=A.readBits(ue)%z,re[Y[se]]=2;switch(re[Y[0]]=1,_e){case 1:break;case 3:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[1]===Y[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(Y[0]===Y[1])throw new Error("[ReadHuffmanCode] invalid symbols");re[Y[1]]=1;break;case 4:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[0]===Y[3]||Y[1]===Y[2]||Y[1]===Y[3]||Y[2]===Y[3])throw new Error("[ReadHuffmanCode] invalid symbols");A.readBits(1)?(re[Y[2]]=3,re[Y[3]]=3):re[Y[0]]=2;break}}else{var se,Qe=new Uint8Array($),yt=32,rt=0,$e=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(se=de;se<$&&yt>0;++se){var Ve=be[se],et=0,ot;A.fillBitWindow(),et+=A.val_>>>A.bit_pos_&15,A.bit_pos_+=$e[et].bits,ot=$e[et].value,Qe[Ve]=ot,ot!==0&&(yt-=32>>ot,++rt)}if(!(rt===1||yt===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Qe,z,re,A)}if(V=d(k,B,I,re,z),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ce(z,k,B){var A,V;return A=x(z,k,B),V=g.kBlockLengthPrefixCode[A].nbits,g.kBlockLengthPrefixCode[A].offset+B.readBits(V)}function ae(z,k,B){var A;return z<H?(B+=v[z],B&=3,A=k[B]+L[z]):A=z-H+1,A}function Ce(z,k){for(var B=z[k],A=k;A;--A)z[A]=z[A-1];z[0]=B}function qe(z,k){var B=new Uint8Array(256),A;for(A=0;A<256;++A)B[A]=A;for(A=0;A<k;++A){var V=z[A];z[A]=B[V],V&&Ce(B,V)}}function ke(z,k){this.alphabet_size=z,this.num_htrees=k,this.codes=new Array(k+k*le[z+31>>>5]),this.htrees=new Uint32Array(k)}ke.prototype.decode=function(z){var k,B,A=0;for(k=0;k<this.num_htrees;++k)this.htrees[k]=A,B=te(this.alphabet_size,this.codes,A,z),A+=B};function J(z,k){var B={num_htrees:null,context_map:null},A,V=0,de,re;k.readMoreInput();var se=B.num_htrees=K(k)+1,we=B.context_map=new Uint8Array(z);if(se<=1)return B;for(A=k.readBits(1),A&&(V=k.readBits(4)+1),de=[],re=0;re<W;re++)de[re]=new c(0,0);for(te(se+V,de,0,k),re=0;re<z;){var ue;if(k.readMoreInput(),ue=x(de,0,k),ue===0)we[re]=0,++re;else if(ue<=V)for(var Y=1+(1<<ue)+k.readBits(ue);--Y;){if(re>=z)throw new Error("[DecodeContextMap] i >= context_map_size");we[re]=0,++re}else we[re]=ue-V,++re}return k.readBits(1)&&qe(we,z),B}function Se(z,k,B,A,V,de,re){var se=B*2,we=B,ue=x(k,B*W,re),Y;ue===0?Y=V[se+(de[we]&1)]:ue===1?Y=V[se+(de[we]-1&1)]+1:Y=ue-2,Y>=z&&(Y-=z),A[B]=Y,V[se+(de[we]&1)]=Y,++de[we]}function Ae(z,k,B,A,V,de){var re=V+1,se=B&V,we=de.pos_&h.IBUF_MASK,ue;if(k<8||de.bit_pos_+(k<<3)<de.bit_end_pos_){for(;k-- >0;)de.readMoreInput(),A[se++]=de.readBits(8),se===re&&(z.write(A,re),se=0);return}if(de.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;de.bit_pos_<32;)A[se]=de.val_>>>de.bit_pos_,de.bit_pos_+=8,++se,--k;if(ue=de.bit_end_pos_-de.bit_pos_>>3,we+ue>h.IBUF_MASK){for(var Y=h.IBUF_MASK+1-we,_e=0;_e<Y;_e++)A[se+_e]=de.buf_[we+_e];ue-=Y,se+=Y,k-=Y,we=0}for(var _e=0;_e<ue;_e++)A[se+_e]=de.buf_[we+_e];if(se+=ue,k-=ue,se>=re){z.write(A,re),se-=re;for(var _e=0;_e<se;_e++)A[_e]=A[re+_e]}for(;se+k>=re;){if(ue=re-se,de.input_.read(A,se,ue)<ue)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");z.write(A,re),k-=ue,se=0}if(de.input_.read(A,se,k)<k)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");de.reset()}function Ct(z){var k=z.bit_pos_+7&-8,B=z.readBits(k-z.bit_pos_);return B==0}function Me(z){var k=new a(z),B=new h(k);oe(B);var A=R(B);return A.meta_block_length}n.BrotliDecompressedSize=Me;function sr(z,k){var B=new a(z);k==null&&(k=Me(z));var A=new Uint8Array(k),V=new l(A);return Kt(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}n.BrotliDecompressBuffer=sr;function Kt(z,k){var B,A=0,V=0,de=0,re,se=0,we,ue,Y,_e,Qe=[16,15,11,4],yt=0,rt=0,$e=0,Ve=[new ke(0,0),new ke(0,0),new ke(0,0)],et,ot,me,Qr=128+h.READ_SIZE;me=new h(z),de=oe(me),re=(1<<de)-16,we=1<<de,ue=we-1,Y=new Uint8Array(we+Qr+f.maxDictionaryWordLength),_e=we,et=[],ot=[];for(var Tr=0;Tr<3*W;Tr++)et[Tr]=new c(0,0),ot[Tr]=new c(0,0);for(;!V;){var je=0,ko,_t=[1<<28,1<<28,1<<28],Et=[0],vt=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pe,j,st=null,G=null,Ne,F=null,C,nr=0,Oe=null,Q=0,ar=0,ir=null,Ie=0,xe=0,Ge=0,Ue,Ye;for(B=0;B<3;++B)Ve[B].codes=null,Ve[B].htrees=null;me.readMoreInput();var jt=R(me);if(je=jt.meta_block_length,A+je>k.buffer.length){var lr=new Uint8Array(A+je);lr.set(k.buffer),k.buffer=lr}if(V=jt.input_end,ko=jt.is_uncompressed,jt.is_metadata){for(Ct(me);je>0;--je)me.readMoreInput(),me.readBits(8);continue}if(je!==0){if(ko){me.bit_pos_=me.bit_pos_+7&-8,Ae(k,je,A,Y,ue,me),A+=je;continue}for(B=0;B<3;++B)vt[B]=K(me)+1,vt[B]>=2&&(te(vt[B]+2,et,B*W,me),te(b,ot,B*W,me),_t[B]=ce(ot,B*W,me),M[B]=1);for(me.readMoreInput(),i=me.readBits(2),U=H+(me.readBits(4)<<i),Pe=(1<<i)-1,j=U+(48<<i),G=new Uint8Array(vt[0]),B=0;B<vt[0];++B)me.readMoreInput(),G[B]=me.readBits(2)<<1;var Le=J(vt[0]<<P,me);Ne=Le.num_htrees,st=Le.context_map;var nt=J(vt[2]<<q,me);for(C=nt.num_htrees,F=nt.context_map,Ve[0]=new ke(_,Ne),Ve[1]=new ke(S,vt[1]),Ve[2]=new ke(j,C),B=0;B<3;++B)Ve[B].decode(me);for(Oe=0,ir=0,Ue=G[Et[0]],xe=m.lookupOffsets[Ue],Ge=m.lookupOffsets[Ue+1],Ye=Ve[1].htrees[0];je>0;){var ze,at,ft,Pr,ks,ct,bt,Gt,$r,Ar,eo;for(me.readMoreInput(),_t[1]===0&&(Se(vt[1],et,1,Et,w,M,me),_t[1]=ce(ot,W,me),Ye=Ve[1].htrees[Et[1]]),--_t[1],ze=x(Ve[1].codes,Ye,me),at=ze>>6,at>=2?(at-=2,bt=-1):bt=0,ft=g.kInsertRangeLut[at]+(ze>>3&7),Pr=g.kCopyRangeLut[at]+(ze&7),ks=g.kInsertLengthPrefixCode[ft].offset+me.readBits(g.kInsertLengthPrefixCode[ft].nbits),ct=g.kCopyLengthPrefixCode[Pr].offset+me.readBits(g.kCopyLengthPrefixCode[Pr].nbits),rt=Y[A-1&ue],$e=Y[A-2&ue],Ar=0;Ar<ks;++Ar)me.readMoreInput(),_t[0]===0&&(Se(vt[0],et,0,Et,w,M,me),_t[0]=ce(ot,0,me),nr=Et[0]<<P,Oe=nr,Ue=G[Et[0]],xe=m.lookupOffsets[Ue],Ge=m.lookupOffsets[Ue+1]),$r=m.lookup[xe+rt]|m.lookup[Ge+$e],Q=st[Oe+$r],--_t[0],$e=rt,rt=x(Ve[0].codes,Ve[0].htrees[Q],me),Y[A&ue]=rt,(A&ue)===ue&&k.write(Y,we),++A;if(je-=ks,je<=0)break;if(bt<0){var $r;if(me.readMoreInput(),_t[2]===0&&(Se(vt[2],et,2,Et,w,M,me),_t[2]=ce(ot,2*W,me),ar=Et[2]<<q,ir=ar),--_t[2],$r=(ct>4?3:ct-2)&255,Ie=F[ir+$r],bt=x(Ve[2].codes,Ve[2].htrees[Ie],me),bt>=U){var Os,da,to;bt-=U,da=bt&Pe,bt>>=i,Os=(bt>>1)+1,to=(2+(bt&1)<<Os)-4,bt=U+(to+me.readBits(Os)<<i)+da}}if(Gt=ae(bt,Qe,yt),Gt<0)throw new Error("[BrotliDecompress] invalid distance");if(A<re&&se!==re?se=A:se=re,eo=A&ue,Gt>se)if(ct>=f.minDictionaryWordLength&&ct<=f.maxDictionaryWordLength){var to=f.offsetsByLength[ct],pa=Gt-se-1,ma=f.sizeBitsByLength[ct],wf=(1<<ma)-1,xf=pa&wf,ha=pa>>ma;if(to+=xf*ct,ha<y.kNumTransforms){var Ts=y.transformDictionaryWord(Y,eo,to,ct,ha);if(eo+=Ts,A+=Ts,je-=Ts,eo>=_e){k.write(Y,we);for(var Oo=0;Oo<eo-_e;Oo++)Y[Oo]=Y[_e+Oo]}}else throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je)}else throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je);else{if(bt>0&&(Qe[yt&3]=Gt,++yt),ct>je)throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je);for(Ar=0;Ar<ct;++Ar)Y[A&ue]=Y[A-Gt&ue],(A&ue)===ue&&k.write(Y,we),++A,--je}rt=Y[A-1&ue],$e=Y[A-2&ue]}A&=1073741823}}k.write(Y,A&ue)}n.BrotliDecompress=Kt,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,n){var a=o("base64-js");n.init=function(){var l=o("./decode").BrotliDecompressBuffer,h=a.toByteArray(o("./dictionary.bin.js"));return l(h)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,n){s.exports="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"},{}],6:[function(o,s,n){var a=o("./dictionary-browser");n.init=function(){n.dictionary=a.init()},n.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),n.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),n.minDictionaryWordLength=4,n.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,n){function a(d,m){this.bits=d,this.value=m}n.HuffmanCode=a;var l=15;function h(d,m){for(var g=1<<m-1;d&g;)g>>=1;return(d&g-1)+g}function f(d,m,g,y,T){do y-=g,d[m+y]=new a(T.bits,T.value);while(y>0)}function c(d,m,g){for(var y=1<<m-g;m<l&&(y-=d[m],!(y<=0));)++m,y<<=1;return m-g}n.BrotliBuildHuffmanTable=function(d,m,g,y,T){var O=m,_,S,b,P,q,I,N,W,$,be,H,v=new Int32Array(l+1),L=new Int32Array(l+1);for(H=new Int32Array(T),b=0;b<T;b++)v[y[b]]++;for(L[1]=0,S=1;S<l;S++)L[S+1]=L[S]+v[S];for(b=0;b<T;b++)y[b]!==0&&(H[L[y[b]]++]=b);if(W=g,$=1<<W,be=$,L[l]===1){for(P=0;P<be;++P)d[m+P]=new a(0,H[0]&65535);return be}for(P=0,b=0,S=1,q=2;S<=g;++S,q<<=1)for(;v[S]>0;--v[S])_=new a(S&255,H[b++]&65535),f(d,m+P,q,$,_),P=h(P,S);for(N=be-1,I=-1,S=g+1,q=2;S<=l;++S,q<<=1)for(;v[S]>0;--v[S])(P&N)!==I&&(m+=$,W=c(v,S,g),$=1<<W,be+=$,I=P&N,d[O+I]=new a(W+g&255,m-O-I&65535)),_=new a(S-g&255,H[b++]&65535),f(d,m+(P>>g),q,$,_),P=h(P,S);return be}},{}],8:[function(o,s,n){"use strict";n.byteLength=g,n.toByteArray=T,n.fromByteArray=S;for(var a=[],l=[],h=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)a[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function m(b){var P=b.length;if(P%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var q=b.indexOf("=");q===-1&&(q=P);var I=q===P?0:4-q%4;return[q,I]}function g(b){var P=m(b),q=P[0],I=P[1];return(q+I)*3/4-I}function y(b,P,q){return(P+q)*3/4-q}function T(b){for(var P,q=m(b),I=q[0],N=q[1],W=new h(y(b,I,N)),$=0,be=N>0?I-4:I,H=0;H<be;H+=4)P=l[b.charCodeAt(H)]<<18|l[b.charCodeAt(H+1)]<<12|l[b.charCodeAt(H+2)]<<6|l[b.charCodeAt(H+3)],W[$++]=P>>16&255,W[$++]=P>>8&255,W[$++]=P&255;return N===2&&(P=l[b.charCodeAt(H)]<<2|l[b.charCodeAt(H+1)]>>4,W[$++]=P&255),N===1&&(P=l[b.charCodeAt(H)]<<10|l[b.charCodeAt(H+1)]<<4|l[b.charCodeAt(H+2)]>>2,W[$++]=P>>8&255,W[$++]=P&255),W}function O(b){return a[b>>18&63]+a[b>>12&63]+a[b>>6&63]+a[b&63]}function _(b,P,q){for(var I,N=[],W=P;W<q;W+=3)I=(b[W]<<16&16711680)+(b[W+1]<<8&65280)+(b[W+2]&255),N.push(O(I));return N.join("")}function S(b){for(var P,q=b.length,I=q%3,N=[],W=16383,$=0,be=q-I;$<be;$+=W)N.push(_(b,$,$+W>be?be:$+W));return I===1?(P=b[q-1],N.push(a[P>>2]+a[P<<4&63]+"==")):I===2&&(P=(b[q-2]<<8)+b[q-1],N.push(a[P>>10]+a[P>>4&63]+a[P<<2&63]+"=")),N.join("")}},{}],9:[function(o,s,n){function a(l,h){this.offset=l,this.nbits=h}n.kBlockLengthPrefixCode=[new a(1,2),new a(5,2),new a(9,2),new a(13,2),new a(17,3),new a(25,3),new a(33,3),new a(41,3),new a(49,4),new a(65,4),new a(81,4),new a(97,4),new a(113,5),new a(145,5),new a(177,5),new a(209,5),new a(241,6),new a(305,6),new a(369,7),new a(497,8),new a(753,9),new a(1265,10),new a(2289,11),new a(4337,12),new a(8433,13),new a(16625,24)],n.kInsertLengthPrefixCode=[new a(0,0),new a(1,0),new a(2,0),new a(3,0),new a(4,0),new a(5,0),new a(6,1),new a(8,1),new a(10,2),new a(14,2),new a(18,3),new a(26,3),new a(34,4),new a(50,4),new a(66,5),new a(98,5),new a(130,6),new a(194,7),new a(322,8),new a(578,9),new a(1090,10),new a(2114,12),new a(6210,14),new a(22594,24)],n.kCopyLengthPrefixCode=[new a(2,0),new a(3,0),new a(4,0),new a(5,0),new a(6,0),new a(7,0),new a(8,0),new a(9,0),new a(10,1),new a(12,1),new a(14,2),new a(18,2),new a(22,3),new a(30,3),new a(38,4),new a(54,4),new a(70,5),new a(102,5),new a(134,6),new a(198,7),new a(326,8),new a(582,9),new a(1094,10),new a(2118,24)],n.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],n.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,n){function a(h){this.buffer=h,this.pos=0}a.prototype.read=function(h,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)h[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},n.BrotliInput=a;function l(h){this.buffer=h,this.pos=0}l.prototype.write=function(h,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(h.subarray(0,f),this.pos),this.pos+=f,f},n.BrotliOutput=l},{}],11:[function(o,s,n){var a=o("./dictionary"),l=0,h=1,f=2,c=3,d=4,m=5,g=6,y=7,T=8,O=9,_=10,S=11,b=12,P=13,q=14,I=15,N=16,W=17,$=18,be=19,H=20;function v(oe,K,ge){this.prefix=new Uint8Array(oe.length),this.transform=K,this.suffix=new Uint8Array(ge.length);for(var R=0;R<oe.length;R++)this.prefix[R]=oe.charCodeAt(R);for(var R=0;R<ge.length;R++)this.suffix[R]=ge.charCodeAt(R)}var L=[new v("",l,""),new v("",l," "),new v(" ",l," "),new v("",b,""),new v("",_," "),new v("",l," the "),new v(" ",l,""),new v("s ",l," "),new v("",l," of "),new v("",_,""),new v("",l," and "),new v("",P,""),new v("",h,""),new v(", ",l," "),new v("",l,", "),new v(" ",_," "),new v("",l," in "),new v("",l," to "),new v("e ",l," "),new v("",l,'"'),new v("",l,"."),new v("",l,'">'),new v("",l,` `),new v("",c,""),new v("",l,"]"),new v("",l," for "),new v("",q,""),new v("",f,""),new v("",l," a "),new v("",l," that "),new v(" ",_,""),new v("",l,". "),new v(".",l,""),new v(" ",l,", "),new v("",I,""),new v("",l," with "),new v("",l,"'"),new v("",l," from "),new v("",l," by "),new v("",N,""),new v("",W,""),new v(" the ",l,""),new v("",d,""),new v("",l,". The "),new v("",S,""),new v("",l," on "),new v("",l," as "),new v("",l," is "),new v("",y,""),new v("",h,"ing "),new v("",l,` - `),new v("",l,":"),new v(" ",l,". "),new v("",l,"ed "),new v("",H,""),new v("",$,""),new v("",g,""),new v("",l,"("),new v("",_,", "),new v("",T,""),new v("",l," at "),new v("",l,"ly "),new v(" the ",l," of "),new v("",m,""),new v("",O,""),new v(" ",_,", "),new v("",_,'"'),new v(".",l,"("),new v("",S," "),new v("",_,'">'),new v("",l,'="'),new v(" ",l,"."),new v(".com/",l,""),new v(" the ",l," of the "),new v("",_,"'"),new v("",l,". This "),new v("",l,","),new v(".",l," "),new v("",_,"("),new v("",_,"."),new v("",l," not "),new v(" ",l,'="'),new v("",l,"er "),new v(" ",S," "),new v("",l,"al "),new v(" ",S,""),new v("",l,"='"),new v("",S,'"'),new v("",_,". "),new v(" ",l,"("),new v("",l,"ful "),new v(" ",_,". "),new v("",l,"ive "),new v("",l,"less "),new v("",S,"'"),new v("",l,"est "),new v(" ",_,"."),new v("",S,'">'),new v(" ",l,"='"),new v("",_,","),new v("",l,"ize "),new v("",S,"."),new v("\xC2\xA0",l,""),new v(" ",l,","),new v("",_,'="'),new v("",S,'="'),new v("",l,"ous "),new v("",S,", "),new v("",_,"='"),new v(" ",_,","),new v(" ",S,'="'),new v(" ",S,", "),new v("",S,","),new v("",S,"("),new v("",S,". "),new v(" ",S,"."),new v("",S,"='"),new v(" ",S,". "),new v(" ",_,'="'),new v(" ",S,"='"),new v(" ",_,"='")];n.kTransforms=L,n.kNumTransforms=L.length;function le(oe,K){return oe[K]<192?(oe[K]>=97&&oe[K]<=122&&(oe[K]^=32),1):oe[K]<224?(oe[K+1]^=32,2):(oe[K+2]^=5,3)}n.transformDictionaryWord=function(oe,K,ge,R,x){var E=L[x].prefix,te=L[x].suffix,ce=L[x].transform,ae=ce<b?0:ce-(b-1),Ce=0,qe=K,ke;ae>R&&(ae=R);for(var J=0;J<E.length;)oe[K++]=E[J++];for(ge+=ae,R-=ae,ce<=O&&(R-=ce),Ce=0;Ce<R;Ce++)oe[K++]=a.dictionary[ge+Ce];if(ke=K-R,ce===_)le(oe,ke);else if(ce===S)for(;R>0;){var Se=le(oe,ke);ke+=Se,R-=Se}for(var Ae=0;Ae<te.length;)oe[K++]=te[Ae++];return K-qe}},{"./dictionary":6}],12:[function(o,s,n){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ls=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),ou=(function(){var e,t,r;return(function(){function o(s,n,a){function l(c,d){if(!n[c]){if(!s[c]){var m=typeof ls=="function"&&ls;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=n[c]={exports:{}};s[c][0].call(y.exports,function(T){var O=s[c][1][T];return l(O||T)},y,y.exports,o,s,n,a)}return n[c].exports}for(var h=typeof ls=="function"&&ls,f=0;f<a.length;f++)l(a[f]);return l}return o})()({1:[function(o,s,n){"use strict";var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}n.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var m=d.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var g in m)l(m,g)&&(c[g]=m[g])}}return c},n.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var h={arraySet:function(c,d,m,g,y){if(d.subarray&&c.subarray){c.set(d.subarray(m,m+g),y);return}for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){var d,m,g,y,T,O;for(g=0,d=0,m=c.length;d<m;d++)g+=c[d].length;for(O=new Uint8Array(g),y=0,d=0,m=c.length;d<m;d++)T=c[d],O.set(T,y),y+=T.length;return O}},f={arraySet:function(c,d,m,g,y){for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){return[].concat.apply([],c)}};n.setTyped=function(c){c?(n.Buf8=Uint8Array,n.Buf16=Uint16Array,n.Buf32=Int32Array,n.assign(n,h)):(n.Buf8=Array,n.Buf16=Array,n.Buf32=Array,n.assign(n,f))},n.setTyped(a)},{}],2:[function(o,s,n){"use strict";var a=o("./common"),l=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{h=!1}for(var f=new a.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,n.string2buf=function(m){var g,y,T,O,_,S=m.length,b=0;for(O=0;O<S;O++)y=m.charCodeAt(O),(y&64512)===55296&&O+1<S&&(T=m.charCodeAt(O+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),O++)),b+=y<128?1:y<2048?2:y<65536?3:4;for(g=new a.Buf8(b),_=0,O=0;_<b;O++)y=m.charCodeAt(O),(y&64512)===55296&&O+1<S&&(T=m.charCodeAt(O+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),O++)),y<128?g[_++]=y:y<2048?(g[_++]=192|y>>>6,g[_++]=128|y&63):y<65536?(g[_++]=224|y>>>12,g[_++]=128|y>>>6&63,g[_++]=128|y&63):(g[_++]=240|y>>>18,g[_++]=128|y>>>12&63,g[_++]=128|y>>>6&63,g[_++]=128|y&63);return g};function d(m,g){if(g<65534&&(m.subarray&&h||!m.subarray&&l))return String.fromCharCode.apply(null,a.shrinkBuf(m,g));for(var y="",T=0;T<g;T++)y+=String.fromCharCode(m[T]);return y}n.buf2binstring=function(m){return d(m,m.length)},n.binstring2buf=function(m){for(var g=new a.Buf8(m.length),y=0,T=g.length;y<T;y++)g[y]=m.charCodeAt(y);return g},n.buf2string=function(m,g){var y,T,O,_,S=g||m.length,b=new Array(S*2);for(T=0,y=0;y<S;){if(O=m[y++],O<128){b[T++]=O;continue}if(_=f[O],_>4){b[T++]=65533,y+=_-1;continue}for(O&=_===2?31:_===3?15:7;_>1&&y<S;)O=O<<6|m[y++]&63,_--;if(_>1){b[T++]=65533;continue}O<65536?b[T++]=O:(O-=65536,b[T++]=55296|O>>10&1023,b[T++]=56320|O&1023)}return d(b,T)},n.utf8border=function(m,g){var y;for(g=g||m.length,g>m.length&&(g=m.length),y=g-1;y>=0&&(m[y]&192)===128;)y--;return y<0||y===0?g:y+f[m[y]]>g?y:g}},{"./common":1}],3:[function(o,s,n){"use strict";function a(l,h,f,c){for(var d=l&65535|0,m=l>>>16&65535|0,g=0;f!==0;){g=f>2e3?2e3:f,f-=g;do d=d+h[c++]|0,m=m+d|0;while(--g);d%=65521,m%=65521}return d|m<<16|0}s.exports=a},{}],4:[function(o,s,n){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,n){"use strict";function a(){for(var f,c=[],d=0;d<256;d++){f=d;for(var m=0;m<8;m++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=a();function h(f,c,d,m){var g=l,y=m+d;f^=-1;for(var T=m;T<y;T++)f=f>>>8^g[(f^c[T])&255];return f^-1}s.exports=h},{}],6:[function(o,s,n){"use strict";function a(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=a},{}],7:[function(o,s,n){"use strict";var a=30,l=12;s.exports=function(f,c){var d,m,g,y,T,O,_,S,b,P,q,I,N,W,$,be,H,v,L,le,oe,K,ge,R,x;d=f.state,m=f.next_in,R=f.input,g=m+(f.avail_in-5),y=f.next_out,x=f.output,T=y-(c-f.avail_out),O=y+(f.avail_out-257),_=d.dmax,S=d.wsize,b=d.whave,P=d.wnext,q=d.window,I=d.hold,N=d.bits,W=d.lencode,$=d.distcode,be=(1<<d.lenbits)-1,H=(1<<d.distbits)-1;e:do{N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=W[I&be];t:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L===0)x[y++]=v&65535;else if(L&16){le=v&65535,L&=15,L&&(N<L&&(I+=R[m++]<<N,N+=8),le+=I&(1<<L)-1,I>>>=L,N-=L),N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=$[I&H];r:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L&16){if(oe=v&65535,L&=15,N<L&&(I+=R[m++]<<N,N+=8,N<L&&(I+=R[m++]<<N,N+=8)),oe+=I&(1<<L)-1,oe>_){f.msg="invalid distance too far back",d.mode=a;break e}if(I>>>=L,N-=L,L=y-T,oe>L){if(L=oe-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=a;break e}if(K=0,ge=q,P===0){if(K+=S-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}else if(P<L){if(K+=S+P-L,L-=P,L<le){le-=L;do x[y++]=q[K++];while(--L);if(K=0,P<le){L=P,le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}}else if(K+=P-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}for(;le>2;)x[y++]=ge[K++],x[y++]=ge[K++],x[y++]=ge[K++],le-=3;le&&(x[y++]=ge[K++],le>1&&(x[y++]=ge[K++]))}else{K=y-oe;do x[y++]=x[K++],x[y++]=x[K++],x[y++]=x[K++],le-=3;while(le>2);le&&(x[y++]=x[K++],le>1&&(x[y++]=x[K++]))}}else if((L&64)===0){v=$[(v&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=a;break e}break}}else if((L&64)===0){v=W[(v&65535)+(I&(1<<L)-1)];continue t}else if(L&32){d.mode=l;break e}else{f.msg="invalid literal/length code",d.mode=a;break e}break}}while(m<g&&y<O);le=N>>3,m-=le,N-=le<<3,I&=(1<<N)-1,f.next_in=m,f.next_out=y,f.avail_in=m<g?5+(g-m):5-(m-g),f.avail_out=y<O?257+(O-y):257-(y-O),d.hold=I,d.bits=N}},{}],8:[function(o,s,n){"use strict";var a=o("../utils/common"),l=o("./adler32"),h=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,m=1,g=2,y=4,T=5,O=6,_=0,S=1,b=2,P=-2,q=-3,I=-4,N=-5,W=8,$=1,be=2,H=3,v=4,L=5,le=6,oe=7,K=8,ge=9,R=10,x=11,E=12,te=13,ce=14,ae=15,Ce=16,qe=17,ke=18,J=19,Se=20,Ae=21,Ct=22,Me=23,sr=24,Kt=25,z=26,k=27,B=28,A=29,V=30,de=31,re=32,se=852,we=592,ue=15,Y=ue;function _e(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Qe(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function yt(w){var M;return!w||!w.state?P:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new a.Buf32(se),M.distcode=M.distdyn=new a.Buf32(we),M.sane=1,M.back=-1,_)}function rt(w){var M;return!w||!w.state?P:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,yt(w))}function $e(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?P:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,rt(w))}function Ve(w,M){var i,U;return w?(U=new Qe,w.state=U,U.window=null,i=$e(w,M),i!==_&&(w.state=null),i):P}function et(w){return Ve(w,Y)}var ot=!0,me,Qr;function Tr(w){if(ot){var M;for(me=new a.Buf32(512),Qr=new a.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(m,w.lens,0,288,me,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(g,w.lens,0,32,Qr,0,w.work,{bits:5}),ot=!1}w.lencode=me,w.lenbits=9,w.distcode=Qr,w.distbits=5}function je(w,M,i,U){var Pe,j=w.state;return j.window===null&&(j.wsize=1<<j.wbits,j.wnext=0,j.whave=0,j.window=new a.Buf8(j.wsize)),U>=j.wsize?(a.arraySet(j.window,M,i-j.wsize,j.wsize,0),j.wnext=0,j.whave=j.wsize):(Pe=j.wsize-j.wnext,Pe>U&&(Pe=U),a.arraySet(j.window,M,i-U,Pe,j.wnext),U-=Pe,U?(a.arraySet(j.window,M,i-U,U,0),j.wnext=U,j.whave=j.wsize):(j.wnext+=Pe,j.wnext===j.wsize&&(j.wnext=0),j.whave<j.wsize&&(j.whave+=Pe))),0}function ko(w,M){var i,U,Pe,j,st,G,Ne,F,C,nr,Oe,Q,ar,ir,Ie=0,xe,Ge,Ue,Ye,jt,lr,Le,nt,ze=new a.Buf8(4),at,ft,Pr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return P;i=w.state,i.mode===E&&(i.mode=te),st=w.next_out,Pe=w.output,Ne=w.avail_out,j=w.next_in,U=w.input,G=w.avail_in,F=i.hold,C=i.bits,nr=G,Oe=Ne,nt=_;e:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=te;break}for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0),F=0,C=0,i.mode=be;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==W){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Le=(F&15)+8,i.wbits===0)i.wbits=Le;else if(Le>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Le,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case be:for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==W){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0,i.mode=H;case H:for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,ze[2]=F>>>16&255,ze[3]=F>>>24&255,i.check=h(i.check,ze,4,0)),F=0,C=0,i.mode=v;case v:for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=le;case le:if(i.flags&1024&&(Q=i.length,Q>G&&(Q=G),Q&&(i.head&&(Le=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),a.arraySet(i.head.extra,U,j,Q,Le)),i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,i.length-=Q),i.length))break e;i.length=0,i.mode=oe;case oe:if(i.flags&2048){if(G===0)break e;Q=0;do Le=U[j+Q++],i.head&&Le&&i.length<65536&&(i.head.name+=String.fromCharCode(Le));while(Le&&Q<G);if(i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,Le)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(G===0)break e;Q=0;do Le=U[j+Q++],i.head&&Le&&i.length<65536&&(i.head.comment+=String.fromCharCode(Le));while(Le&&Q<G);if(i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,Le)break e}else i.head&&(i.head.comment=null);i.mode=ge;case ge:if(i.flags&512){for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}w.adler=i.check=_e(F),F=0,C=0,i.mode=x;case x:if(i.havedict===0)return w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===T||M===O)break e;case te:if(i.last){F>>>=C&7,C-=C&7,i.mode=k;break}for(;C<3;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ce;break;case 1:if(Tr(i),i.mode=Se,M===O){F>>>=2,C-=2;break e}break;case 2:i.mode=qe;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ce:for(F>>>=C&7,C-=C&7;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=ae,M===O)break e;case ae:i.mode=Ce;case Ce:if(Q=i.length,Q){if(Q>G&&(Q=G),Q>Ne&&(Q=Ne),Q===0)break e;a.arraySet(Pe,U,j,Q,st),G-=Q,j+=Q,Ne-=Q,st+=Q,i.length-=Q;break}i.mode=E;break;case qe:for(;C<14;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=ke;case ke:for(;i.have<i.ncode;){for(;C<3;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.lens[Pr[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[Pr[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,at={bits:i.lenbits},nt=c(d,i.lens,0,19,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(Ue<16)F>>>=xe,C-=xe,i.lens[i.have++]=Ue;else{if(Ue===16){for(ft=xe+2;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F>>>=xe,C-=xe,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Le=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(Ue===17){for(ft=xe+3;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ft=xe+7;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Le}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,at={bits:i.lenbits},nt=c(m,i.lens,0,i.nlen,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,at={bits:i.distbits},nt=c(g,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,at),i.distbits=at.bits,nt){w.msg="invalid distances set",i.mode=V;break}if(i.mode=Se,M===O)break e;case Se:i.mode=Ae;case Ae:if(G>=6&&Ne>=258){w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,f(w,Oe),st=w.next_out,Pe=w.output,Ne=w.avail_out,j=w.next_in,U=w.input,G=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(Ge&&(Ge&240)===0){for(Ye=xe,jt=Ge,lr=Ue;Ie=i.lencode[lr+((F&(1<<Ye+jt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(Ye+xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,i.length=Ue,Ge===0){i.mode=z;break}if(Ge&32){i.back=-1,i.mode=E;break}if(Ge&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Ge&15,i.mode=Ct;case Ct:if(i.extra){for(ft=i.extra;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=Me;case Me:for(;Ie=i.distcode[F&(1<<i.distbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if((Ge&240)===0){for(Ye=xe,jt=Ge,lr=Ue;Ie=i.distcode[lr+((F&(1<<Ye+jt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(Ye+xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,Ge&64){w.msg="invalid distance code",i.mode=V;break}i.offset=Ue,i.extra=Ge&15,i.mode=sr;case sr:if(i.extra){for(ft=i.extra;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Kt;case Kt:if(Ne===0)break e;if(Q=Oe-Ne,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pe,ar=st-i.offset,Q=i.length;Q>Ne&&(Q=Ne),Ne-=Q,i.length-=Q;do Pe[st++]=ir[ar++];while(--Q);i.length===0&&(i.mode=Ae);break;case z:if(Ne===0)break e;Pe[st++]=i.length,Ne--,i.mode=Ae;break;case k:if(i.wrap){for(;C<32;){if(G===0)break e;G--,F|=U[j++]<<C,C+=8}if(Oe-=Ne,w.total_out+=Oe,i.total+=Oe,Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,st-Oe):l(i.check,Pe,Oe,st-Oe)),Oe=Ne,(i.flags?F:_e(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=A;case A:nt=S;break e;case V:nt=q;break e;case de:return I;case re:default:return P}return w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,(i.wsize||Oe!==w.avail_out&&i.mode<V&&(i.mode<k||M!==y))&&je(w,w.output,w.next_out,Oe-w.avail_out)?(i.mode=de,I):(nr-=w.avail_in,Oe-=w.avail_out,w.total_in+=nr,w.total_out+=Oe,i.total+=Oe,i.wrap&&Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,w.next_out-Oe):l(i.check,Pe,Oe,w.next_out-Oe)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===Se||i.mode===ae?256:0),(nr===0&&Oe===0||M===y)&&nt===_&&(nt=N),nt)}function _t(w){if(!w||!w.state)return P;var M=w.state;return M.window&&(M.window=null),w.state=null,_}function Et(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?P:(i.head=M,M.done=!1,_)}function vt(w,M){var i=M.length,U,Pe,j;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==x)?P:U.mode===x&&(Pe=1,Pe=l(Pe,M,i,0),Pe!==U.check)?q:(j=je(w,M,i,i),j?(U.mode=de,I):(U.havedict=1,_))}n.inflateReset=rt,n.inflateReset2=$e,n.inflateResetKeep=yt,n.inflateInit=et,n.inflateInit2=Ve,n.inflate=ko,n.inflateEnd=_t,n.inflateGetHeader=Et,n.inflateSetDictionary=vt,n.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,n){"use strict";var a=o("../utils/common"),l=15,h=852,f=592,c=0,d=1,m=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],O=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(S,b,P,q,I,N,W,$){var be=$.bits,H=0,v=0,L=0,le=0,oe=0,K=0,ge=0,R=0,x=0,E=0,te,ce,ae,Ce,qe,ke=null,J=0,Se,Ae=new a.Buf16(l+1),Ct=new a.Buf16(l+1),Me=null,sr=0,Kt,z,k;for(H=0;H<=l;H++)Ae[H]=0;for(v=0;v<q;v++)Ae[b[P+v]]++;for(oe=be,le=l;le>=1&&Ae[le]===0;le--);if(oe>le&&(oe=le),le===0)return I[N++]=1<<24|64<<16|0,I[N++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<le&&Ae[L]===0;L++);for(oe<L&&(oe=L),R=1,H=1;H<=l;H++)if(R<<=1,R-=Ae[H],R<0)return-1;if(R>0&&(S===c||le!==1))return-1;for(Ct[1]=0,H=1;H<l;H++)Ct[H+1]=Ct[H]+Ae[H];for(v=0;v<q;v++)b[P+v]!==0&&(W[Ct[b[P+v]]++]=v);if(S===c?(ke=Me=W,Se=19):S===d?(ke=g,J-=257,Me=y,sr-=257,Se=256):(ke=T,Me=O,Se=-1),E=0,v=0,H=L,qe=N,K=oe,ge=0,ae=-1,x=1<<oe,Ce=x-1,S===d&&x>h||S===m&&x>f)return 1;for(;;){Kt=H-ge,W[v]<Se?(z=0,k=W[v]):W[v]>Se?(z=Me[sr+W[v]],k=ke[J+W[v]]):(z=96,k=0),te=1<<H-ge,ce=1<<K,L=ce;do ce-=te,I[qe+(E>>ge)+ce]=Kt<<24|z<<16|k|0;while(ce!==0);for(te=1<<H-1;E&te;)te>>=1;if(te!==0?(E&=te-1,E+=te):E=0,v++,--Ae[H]===0){if(H===le)break;H=b[P+W[v]]}if(H>oe&&(E&Ce)!==ae){for(ge===0&&(ge=oe),qe+=L,K=H-ge,R=1<<K;K+ge<le&&(R-=Ae[K+ge],!(R<=0));)K++,R<<=1;if(x+=1<<K,S===d&&x>h||S===m&&x>f)return 1;ae=E&Ce,I[ae]=oe<<24|K<<16|qe-N|0}}return E!==0&&(I[qe+E]=H-ge<<24|64<<16|0),$.bits=oe,0}},{"../utils/common":1}],10:[function(o,s,n){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,n){"use strict";function a(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=a},{}],"/lib/inflate.js":[function(o,s,n){"use strict";var a=o("./zlib/inflate"),l=o("./utils/common"),h=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),m=o("./zlib/gzheader"),g=Object.prototype.toString;function y(_){if(!(this instanceof y))return new y(_);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},_||{});var S=this.options;S.raw&&S.windowBits>=0&&S.windowBits<16&&(S.windowBits=-S.windowBits,S.windowBits===0&&(S.windowBits=-15)),S.windowBits>=0&&S.windowBits<16&&!(_&&_.windowBits)&&(S.windowBits+=32),S.windowBits>15&&S.windowBits<48&&(S.windowBits&15)===0&&(S.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=a.inflateInit2(this.strm,S.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new m,a.inflateGetHeader(this.strm,this.header),S.dictionary&&(typeof S.dictionary=="string"?S.dictionary=h.string2buf(S.dictionary):g.call(S.dictionary)==="[object ArrayBuffer]"&&(S.dictionary=new Uint8Array(S.dictionary)),S.raw&&(b=a.inflateSetDictionary(this.strm,S.dictionary),b!==f.Z_OK)))throw new Error(c[b])}y.prototype.push=function(_,S){var b=this.strm,P=this.options.chunkSize,q=this.options.dictionary,I,N,W,$,be,H=!1;if(this.ended)return!1;N=S===~~S?S:S===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof _=="string"?b.input=h.binstring2buf(_):g.call(_)==="[object ArrayBuffer]"?b.input=new Uint8Array(_):b.input=_,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(P),b.next_out=0,b.avail_out=P),I=a.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&q&&(I=a.inflateSetDictionary(this.strm,q)),I===f.Z_BUF_ERROR&&H===!0&&(I=f.Z_OK,H=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(N===f.Z_FINISH||N===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=h.utf8border(b.output,b.next_out),$=b.next_out-W,be=h.buf2string(b.output,W),b.next_out=$,b.avail_out=P-$,$&&l.arraySet(b.output,b.output,W,$,0),this.onData(be)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(H=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(N=f.Z_FINISH),N===f.Z_FINISH?(I=a.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(N===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},y.prototype.onData=function(_){this.chunks.push(_)},y.prototype.onEnd=function(_){_===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=_,this.msg=this.strm.msg};function T(_,S){var b=new y(S);if(b.push(_,!0),b.err)throw b.msg||c[b.err];return b.result}function O(_,S){return S=S||{},S.raw=!0,T(_,S)}n.Inflate=y,n.inflate=T,n.inflateRaw=O,n.ungzip=T},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var rx=globalThis.fetch,us=class{constructor(e,t={},r){this.type=e,this.detail=t,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},Ld=class{constructor(){this.listeners={}}addEventListener(e,t,r){let o=this.listeners[e]||[];r?o.unshift(t):o.push(t),this.listeners[e]=o}removeEventListener(e,t){let r=this.listeners[e]||[],o=r.findIndex(s=>s===t);o>-1&&(r.splice(o,1),this.listeners[e]=r)}dispatch(e){let t=this.listeners[e.type];if(t)for(let r=0,o=t.length;r<o&&e.__mayPropagate;r++)t[r](e)}},Bd=new Date("1904-01-01T00:00:00+0000").getTime();function Vd(e){return Array.from(e).map(t=>String.fromCharCode(t)).join("")}var Nd=class{constructor(e,t,r){this.name=(r||e.tag||"").trim(),this.length=e.length,this.start=e.offset,this.offset=0,this.data=t,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),n=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,n)})})}get currentPosition(){return this.start+this.offset}set currentPosition(e){this.start=e,this.offset=0}skip(e=0,t=8){this.offset+=e*t/8}getValue(e,t){let r=this.start+this.offset;this.offset+=t;try{return this.data[e](r)}catch(o){throw console.error("parser",e,t,this),console.error("parser",this.start,this.offset),o}}flags(e){if(e===8||e===16||e===32||e===64)return this[`uint${e}`].toString(2).padStart(e,0).split("").map(t=>t==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let e=this.uint32;return Vd([e>>24&255,e>>16&255,e>>8&255,e&255])}get fixed(){let e=this.int16,t=Math.round(1e3*this.uint16/65356);return e+t/1e3}get legacyFixed(){let e=this.uint16,t=this.uint16.toString(16).padStart(4,0);return parseFloat(`${e}.${t}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let e=0;for(let t=0;t<5;t++){let r=this.uint8;if(e=e*128+(r&127),r<128)break}return e}get longdatetime(){return new Date(Bd+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let e=p.uint16,t=[0,1,-2,-1][e>>14],r=e&16383;return t+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(e=0,t=0,r=8,o=!1){if(e=e||this.length,e===0)return[];t&&(this.currentPosition=t);let s=`${o?"":"u"}int${r}`,n=[];for(;e--;)n.push(this[s]);return n}},Be=class{constructor(e){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>e});let r=e.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(e){Object.keys(e).forEach(t=>{let r=Object.getOwnPropertyDescriptor(e,t);r.get?this[t]=r.get.bind(this):r.value!==void 0&&(this[t]=r.value)}),this.parser.length&&this.parser.verifyLength()}},pe=class extends Be{constructor(e,t,r){let{parser:o,start:s}=super(new Nd(e,t,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(e,t,r){let o;Object.defineProperty(e,t,{get:()=>o||(o=r(),o),enumerable:!0})}var zd=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:12},t,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new Dd(o)),this.tables={},this.directory.forEach(s=>{let n=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},t);Z(this.tables,s.tag.trim(),n)})}},Dd=class{constructor(e){this.tag=e.tag,this.checksum=e.uint32,this.offset=e.uint32,this.length=e.uint32}},su=ou.inflate||void 0,nu=void 0,Md=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:44},t,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new jd(o)),Gd(this,t,r)}},jd=class{constructor(e){this.tag=e.tag,this.offset=e.uint32,this.compLength=e.uint32,this.origLength=e.uint32,this.origChecksum=e.uint32}};function Gd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=0,n=t;if(o.compLength!==o.origLength){let a=t.buffer.slice(o.offset,o.offset+o.compLength),l;if(su)l=su(new Uint8Array(a));else if(nu)l=nu(new Uint8Array(a));else{let h="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(h),new Error(h)}n=new DataView(l.buffer)}else s=o.offset;return r(e.tables,{tag:o.tag,offset:s,length:o.origLength},n)})})}var au=ru,iu=void 0,Ud=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:48},t,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new Wd(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,h)=>{let f=this.directory[h+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let n,a=t.buffer.slice(s);if(au)n=au(new Uint8Array(a));else if(iu)n=new Uint8Array(iu(a));else{let l="no brotli decoder available to decode WOFF2 font";throw e.onerror&&e.onerror(l),new Error(l)}Hd(this,n,r)}},Wd=class{constructor(e){this.flags=e.uint8;let t=this.tagNumber=this.flags&63;t===63?this.tag=e.tag:this.tag=qd(t);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=e.uint128,o&&(this.transformLength=e.uint128)}};function Hd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=o.offset,n=s+(o.transformLength?o.transformLength:o.origLength),a=new DataView(t.slice(s,n).buffer);try{return r(e.tables,{tag:o.tag,offset:0,length:o.origLength},a)}catch(l){console.error(l)}})})}function qd(e){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][e&63]}var mu={},hu=!1;Promise.all([Promise.resolve().then(function(){return wp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return _p}),Promise.resolve().then(function(){return Op}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return zp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return nm}),Promise.resolve().then(function(){return qm}),Promise.resolve().then(function(){return Zm}),Promise.resolve().then(function(){return Qm}),Promise.resolve().then(function(){return rh}),Promise.resolve().then(function(){return sh}),Promise.resolve().then(function(){return ah}),Promise.resolve().then(function(){return uh}),Promise.resolve().then(function(){return ch}),Promise.resolve().then(function(){return ph}),Promise.resolve().then(function(){return hh}),Promise.resolve().then(function(){return yh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Sh}),Promise.resolve().then(function(){return Fh}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Th}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Lh}),Promise.resolve().then(function(){return Nh}),Promise.resolve().then(function(){return Uh}),Promise.resolve().then(function(){return Yh}),Promise.resolve().then(function(){return Kh}),Promise.resolve().then(function(){return eg}),Promise.resolve().then(function(){return rg}),Promise.resolve().then(function(){return sg}),Promise.resolve().then(function(){return ig}),Promise.resolve().then(function(){return ug}),Promise.resolve().then(function(){return mg}),Promise.resolve().then(function(){return gg}),Promise.resolve().then(function(){return bg})]).then(e=>{e.forEach(t=>{let r=Object.keys(t)[0];mu[r]=t[r]}),hu=!0});function Yd(e,t,r){let o=t.tag.replace(/[^\w\d]/g,""),s=mu[o];return s?new s(t,r,e):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Zd(){let e=0;function t(r,o){if(!hu)return e>10?o(new Error("loading took too long")):(e++,setTimeout(()=>t(r),250));r(Yd)}return new Promise((r,o)=>t(r))}function Xd(e,t){let r=e.lastIndexOf("."),o=(e.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let n={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(n||(n=`${e} is not a known webfont format.`),t)throw new Error(n);console.warn(`Could not load font: ${n}`)}async function Kd(e,t,r={}){if(!globalThis.document)return;let o=Xd(t,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let n=[];return r.styleRules&&(n=Object.entries(r.styleRules).map(([a,l])=>`${a}: ${l};`)),s.textContent=` + `),new v("",l,":"),new v(" ",l,". "),new v("",l,"ed "),new v("",H,""),new v("",$,""),new v("",g,""),new v("",l,"("),new v("",_,", "),new v("",T,""),new v("",l," at "),new v("",l,"ly "),new v(" the ",l," of "),new v("",m,""),new v("",O,""),new v(" ",_,", "),new v("",_,'"'),new v(".",l,"("),new v("",S," "),new v("",_,'">'),new v("",l,'="'),new v(" ",l,"."),new v(".com/",l,""),new v(" the ",l," of the "),new v("",_,"'"),new v("",l,". This "),new v("",l,","),new v(".",l," "),new v("",_,"("),new v("",_,"."),new v("",l," not "),new v(" ",l,'="'),new v("",l,"er "),new v(" ",S," "),new v("",l,"al "),new v(" ",S,""),new v("",l,"='"),new v("",S,'"'),new v("",_,". "),new v(" ",l,"("),new v("",l,"ful "),new v(" ",_,". "),new v("",l,"ive "),new v("",l,"less "),new v("",S,"'"),new v("",l,"est "),new v(" ",_,"."),new v("",S,'">'),new v(" ",l,"='"),new v("",_,","),new v("",l,"ize "),new v("",S,"."),new v("\xC2\xA0",l,""),new v(" ",l,","),new v("",_,'="'),new v("",S,'="'),new v("",l,"ous "),new v("",S,", "),new v("",_,"='"),new v(" ",_,","),new v(" ",S,'="'),new v(" ",S,", "),new v("",S,","),new v("",S,"("),new v("",S,". "),new v(" ",S,"."),new v("",S,"='"),new v(" ",S,". "),new v(" ",_,'="'),new v(" ",S,"='"),new v(" ",_,"='")];n.kTransforms=L,n.kNumTransforms=L.length;function le(oe,K){return oe[K]<192?(oe[K]>=97&&oe[K]<=122&&(oe[K]^=32),1):oe[K]<224?(oe[K+1]^=32,2):(oe[K+2]^=5,3)}n.transformDictionaryWord=function(oe,K,ge,R,x){var E=L[x].prefix,te=L[x].suffix,ce=L[x].transform,ae=ce<b?0:ce-(b-1),Ce=0,qe=K,ke;ae>R&&(ae=R);for(var J=0;J<E.length;)oe[K++]=E[J++];for(ge+=ae,R-=ae,ce<=O&&(R-=ce),Ce=0;Ce<R;Ce++)oe[K++]=a.dictionary[ge+Ce];if(ke=K-R,ce===_)le(oe,ke);else if(ce===S)for(;R>0;){var Se=le(oe,ke);ke+=Se,R-=Se}for(var Ae=0;Ae<te.length;)oe[K++]=te[Ae++];return K-qe}},{"./dictionary":6}],12:[function(o,s,n){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ls=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),ou=(function(){var e,t,r;return(function(){function o(s,n,a){function l(c,d){if(!n[c]){if(!s[c]){var m=typeof ls=="function"&&ls;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=n[c]={exports:{}};s[c][0].call(y.exports,function(T){var O=s[c][1][T];return l(O||T)},y,y.exports,o,s,n,a)}return n[c].exports}for(var h=typeof ls=="function"&&ls,f=0;f<a.length;f++)l(a[f]);return l}return o})()({1:[function(o,s,n){"use strict";var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}n.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var m=d.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var g in m)l(m,g)&&(c[g]=m[g])}}return c},n.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var h={arraySet:function(c,d,m,g,y){if(d.subarray&&c.subarray){c.set(d.subarray(m,m+g),y);return}for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){var d,m,g,y,T,O;for(g=0,d=0,m=c.length;d<m;d++)g+=c[d].length;for(O=new Uint8Array(g),y=0,d=0,m=c.length;d<m;d++)T=c[d],O.set(T,y),y+=T.length;return O}},f={arraySet:function(c,d,m,g,y){for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){return[].concat.apply([],c)}};n.setTyped=function(c){c?(n.Buf8=Uint8Array,n.Buf16=Uint16Array,n.Buf32=Int32Array,n.assign(n,h)):(n.Buf8=Array,n.Buf16=Array,n.Buf32=Array,n.assign(n,f))},n.setTyped(a)},{}],2:[function(o,s,n){"use strict";var a=o("./common"),l=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{h=!1}for(var f=new a.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,n.string2buf=function(m){var g,y,T,O,_,S=m.length,b=0;for(O=0;O<S;O++)y=m.charCodeAt(O),(y&64512)===55296&&O+1<S&&(T=m.charCodeAt(O+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),O++)),b+=y<128?1:y<2048?2:y<65536?3:4;for(g=new a.Buf8(b),_=0,O=0;_<b;O++)y=m.charCodeAt(O),(y&64512)===55296&&O+1<S&&(T=m.charCodeAt(O+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),O++)),y<128?g[_++]=y:y<2048?(g[_++]=192|y>>>6,g[_++]=128|y&63):y<65536?(g[_++]=224|y>>>12,g[_++]=128|y>>>6&63,g[_++]=128|y&63):(g[_++]=240|y>>>18,g[_++]=128|y>>>12&63,g[_++]=128|y>>>6&63,g[_++]=128|y&63);return g};function d(m,g){if(g<65534&&(m.subarray&&h||!m.subarray&&l))return String.fromCharCode.apply(null,a.shrinkBuf(m,g));for(var y="",T=0;T<g;T++)y+=String.fromCharCode(m[T]);return y}n.buf2binstring=function(m){return d(m,m.length)},n.binstring2buf=function(m){for(var g=new a.Buf8(m.length),y=0,T=g.length;y<T;y++)g[y]=m.charCodeAt(y);return g},n.buf2string=function(m,g){var y,T,O,_,S=g||m.length,b=new Array(S*2);for(T=0,y=0;y<S;){if(O=m[y++],O<128){b[T++]=O;continue}if(_=f[O],_>4){b[T++]=65533,y+=_-1;continue}for(O&=_===2?31:_===3?15:7;_>1&&y<S;)O=O<<6|m[y++]&63,_--;if(_>1){b[T++]=65533;continue}O<65536?b[T++]=O:(O-=65536,b[T++]=55296|O>>10&1023,b[T++]=56320|O&1023)}return d(b,T)},n.utf8border=function(m,g){var y;for(g=g||m.length,g>m.length&&(g=m.length),y=g-1;y>=0&&(m[y]&192)===128;)y--;return y<0||y===0?g:y+f[m[y]]>g?y:g}},{"./common":1}],3:[function(o,s,n){"use strict";function a(l,h,f,c){for(var d=l&65535|0,m=l>>>16&65535|0,g=0;f!==0;){g=f>2e3?2e3:f,f-=g;do d=d+h[c++]|0,m=m+d|0;while(--g);d%=65521,m%=65521}return d|m<<16|0}s.exports=a},{}],4:[function(o,s,n){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,n){"use strict";function a(){for(var f,c=[],d=0;d<256;d++){f=d;for(var m=0;m<8;m++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=a();function h(f,c,d,m){var g=l,y=m+d;f^=-1;for(var T=m;T<y;T++)f=f>>>8^g[(f^c[T])&255];return f^-1}s.exports=h},{}],6:[function(o,s,n){"use strict";function a(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=a},{}],7:[function(o,s,n){"use strict";var a=30,l=12;s.exports=function(f,c){var d,m,g,y,T,O,_,S,b,P,q,I,N,W,$,be,H,v,L,le,oe,K,ge,R,x;d=f.state,m=f.next_in,R=f.input,g=m+(f.avail_in-5),y=f.next_out,x=f.output,T=y-(c-f.avail_out),O=y+(f.avail_out-257),_=d.dmax,S=d.wsize,b=d.whave,P=d.wnext,q=d.window,I=d.hold,N=d.bits,W=d.lencode,$=d.distcode,be=(1<<d.lenbits)-1,H=(1<<d.distbits)-1;e:do{N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=W[I&be];t:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L===0)x[y++]=v&65535;else if(L&16){le=v&65535,L&=15,L&&(N<L&&(I+=R[m++]<<N,N+=8),le+=I&(1<<L)-1,I>>>=L,N-=L),N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=$[I&H];r:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L&16){if(oe=v&65535,L&=15,N<L&&(I+=R[m++]<<N,N+=8,N<L&&(I+=R[m++]<<N,N+=8)),oe+=I&(1<<L)-1,oe>_){f.msg="invalid distance too far back",d.mode=a;break e}if(I>>>=L,N-=L,L=y-T,oe>L){if(L=oe-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=a;break e}if(K=0,ge=q,P===0){if(K+=S-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}else if(P<L){if(K+=S+P-L,L-=P,L<le){le-=L;do x[y++]=q[K++];while(--L);if(K=0,P<le){L=P,le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}}else if(K+=P-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}for(;le>2;)x[y++]=ge[K++],x[y++]=ge[K++],x[y++]=ge[K++],le-=3;le&&(x[y++]=ge[K++],le>1&&(x[y++]=ge[K++]))}else{K=y-oe;do x[y++]=x[K++],x[y++]=x[K++],x[y++]=x[K++],le-=3;while(le>2);le&&(x[y++]=x[K++],le>1&&(x[y++]=x[K++]))}}else if((L&64)===0){v=$[(v&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=a;break e}break}}else if((L&64)===0){v=W[(v&65535)+(I&(1<<L)-1)];continue t}else if(L&32){d.mode=l;break e}else{f.msg="invalid literal/length code",d.mode=a;break e}break}}while(m<g&&y<O);le=N>>3,m-=le,N-=le<<3,I&=(1<<N)-1,f.next_in=m,f.next_out=y,f.avail_in=m<g?5+(g-m):5-(m-g),f.avail_out=y<O?257+(O-y):257-(y-O),d.hold=I,d.bits=N}},{}],8:[function(o,s,n){"use strict";var a=o("../utils/common"),l=o("./adler32"),h=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,m=1,g=2,y=4,T=5,O=6,_=0,S=1,b=2,P=-2,q=-3,I=-4,N=-5,W=8,$=1,be=2,H=3,v=4,L=5,le=6,oe=7,K=8,ge=9,R=10,x=11,E=12,te=13,ce=14,ae=15,Ce=16,qe=17,ke=18,J=19,Se=20,Ae=21,Ct=22,Me=23,sr=24,Kt=25,z=26,k=27,B=28,A=29,V=30,de=31,re=32,se=852,we=592,ue=15,Y=ue;function _e(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Qe(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function yt(w){var M;return!w||!w.state?P:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new a.Buf32(se),M.distcode=M.distdyn=new a.Buf32(we),M.sane=1,M.back=-1,_)}function rt(w){var M;return!w||!w.state?P:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,yt(w))}function $e(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?P:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,rt(w))}function Ve(w,M){var i,U;return w?(U=new Qe,w.state=U,U.window=null,i=$e(w,M),i!==_&&(w.state=null),i):P}function et(w){return Ve(w,Y)}var ot=!0,me,Qr;function Tr(w){if(ot){var M;for(me=new a.Buf32(512),Qr=new a.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(m,w.lens,0,288,me,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(g,w.lens,0,32,Qr,0,w.work,{bits:5}),ot=!1}w.lencode=me,w.lenbits=9,w.distcode=Qr,w.distbits=5}function je(w,M,i,U){var Pe,j=w.state;return j.window===null&&(j.wsize=1<<j.wbits,j.wnext=0,j.whave=0,j.window=new a.Buf8(j.wsize)),U>=j.wsize?(a.arraySet(j.window,M,i-j.wsize,j.wsize,0),j.wnext=0,j.whave=j.wsize):(Pe=j.wsize-j.wnext,Pe>U&&(Pe=U),a.arraySet(j.window,M,i-U,Pe,j.wnext),U-=Pe,U?(a.arraySet(j.window,M,i-U,U,0),j.wnext=U,j.whave=j.wsize):(j.wnext+=Pe,j.wnext===j.wsize&&(j.wnext=0),j.whave<j.wsize&&(j.whave+=Pe))),0}function ko(w,M){var i,U,Pe,j,st,G,Ne,F,C,nr,Oe,Q,ar,ir,Ie=0,xe,Ge,Ue,Ye,jt,lr,Le,nt,ze=new a.Buf8(4),at,ft,Pr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return P;i=w.state,i.mode===E&&(i.mode=te),st=w.next_out,Pe=w.output,Ne=w.avail_out,j=w.next_in,U=w.input,G=w.avail_in,F=i.hold,C=i.bits,nr=G,Oe=Ne,nt=_;e:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=te;break}for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0),F=0,C=0,i.mode=be;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==W){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Le=(F&15)+8,i.wbits===0)i.wbits=Le;else if(Le>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Le,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case be:for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==W){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0,i.mode=H;case H:for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,ze[2]=F>>>16&255,ze[3]=F>>>24&255,i.check=h(i.check,ze,4,0)),F=0,C=0,i.mode=v;case v:for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=le;case le:if(i.flags&1024&&(Q=i.length,Q>G&&(Q=G),Q&&(i.head&&(Le=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),a.arraySet(i.head.extra,U,j,Q,Le)),i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,i.length-=Q),i.length))break e;i.length=0,i.mode=oe;case oe:if(i.flags&2048){if(G===0)break e;Q=0;do Le=U[j+Q++],i.head&&Le&&i.length<65536&&(i.head.name+=String.fromCharCode(Le));while(Le&&Q<G);if(i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,Le)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(G===0)break e;Q=0;do Le=U[j+Q++],i.head&&Le&&i.length<65536&&(i.head.comment+=String.fromCharCode(Le));while(Le&&Q<G);if(i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,Le)break e}else i.head&&(i.head.comment=null);i.mode=ge;case ge:if(i.flags&512){for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}w.adler=i.check=_e(F),F=0,C=0,i.mode=x;case x:if(i.havedict===0)return w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===T||M===O)break e;case te:if(i.last){F>>>=C&7,C-=C&7,i.mode=k;break}for(;C<3;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ce;break;case 1:if(Tr(i),i.mode=Se,M===O){F>>>=2,C-=2;break e}break;case 2:i.mode=qe;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ce:for(F>>>=C&7,C-=C&7;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=ae,M===O)break e;case ae:i.mode=Ce;case Ce:if(Q=i.length,Q){if(Q>G&&(Q=G),Q>Ne&&(Q=Ne),Q===0)break e;a.arraySet(Pe,U,j,Q,st),G-=Q,j+=Q,Ne-=Q,st+=Q,i.length-=Q;break}i.mode=E;break;case qe:for(;C<14;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=ke;case ke:for(;i.have<i.ncode;){for(;C<3;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.lens[Pr[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[Pr[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,at={bits:i.lenbits},nt=c(d,i.lens,0,19,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(Ue<16)F>>>=xe,C-=xe,i.lens[i.have++]=Ue;else{if(Ue===16){for(ft=xe+2;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F>>>=xe,C-=xe,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Le=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(Ue===17){for(ft=xe+3;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ft=xe+7;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Le}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,at={bits:i.lenbits},nt=c(m,i.lens,0,i.nlen,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,at={bits:i.distbits},nt=c(g,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,at),i.distbits=at.bits,nt){w.msg="invalid distances set",i.mode=V;break}if(i.mode=Se,M===O)break e;case Se:i.mode=Ae;case Ae:if(G>=6&&Ne>=258){w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,f(w,Oe),st=w.next_out,Pe=w.output,Ne=w.avail_out,j=w.next_in,U=w.input,G=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(Ge&&(Ge&240)===0){for(Ye=xe,jt=Ge,lr=Ue;Ie=i.lencode[lr+((F&(1<<Ye+jt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(Ye+xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,i.length=Ue,Ge===0){i.mode=z;break}if(Ge&32){i.back=-1,i.mode=E;break}if(Ge&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Ge&15,i.mode=Ct;case Ct:if(i.extra){for(ft=i.extra;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=Me;case Me:for(;Ie=i.distcode[F&(1<<i.distbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if((Ge&240)===0){for(Ye=xe,jt=Ge,lr=Ue;Ie=i.distcode[lr+((F&(1<<Ye+jt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(Ye+xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,Ge&64){w.msg="invalid distance code",i.mode=V;break}i.offset=Ue,i.extra=Ge&15,i.mode=sr;case sr:if(i.extra){for(ft=i.extra;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Kt;case Kt:if(Ne===0)break e;if(Q=Oe-Ne,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pe,ar=st-i.offset,Q=i.length;Q>Ne&&(Q=Ne),Ne-=Q,i.length-=Q;do Pe[st++]=ir[ar++];while(--Q);i.length===0&&(i.mode=Ae);break;case z:if(Ne===0)break e;Pe[st++]=i.length,Ne--,i.mode=Ae;break;case k:if(i.wrap){for(;C<32;){if(G===0)break e;G--,F|=U[j++]<<C,C+=8}if(Oe-=Ne,w.total_out+=Oe,i.total+=Oe,Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,st-Oe):l(i.check,Pe,Oe,st-Oe)),Oe=Ne,(i.flags?F:_e(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=A;case A:nt=S;break e;case V:nt=q;break e;case de:return I;case re:default:return P}return w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,(i.wsize||Oe!==w.avail_out&&i.mode<V&&(i.mode<k||M!==y))&&je(w,w.output,w.next_out,Oe-w.avail_out)?(i.mode=de,I):(nr-=w.avail_in,Oe-=w.avail_out,w.total_in+=nr,w.total_out+=Oe,i.total+=Oe,i.wrap&&Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,w.next_out-Oe):l(i.check,Pe,Oe,w.next_out-Oe)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===Se||i.mode===ae?256:0),(nr===0&&Oe===0||M===y)&&nt===_&&(nt=N),nt)}function _t(w){if(!w||!w.state)return P;var M=w.state;return M.window&&(M.window=null),w.state=null,_}function Et(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?P:(i.head=M,M.done=!1,_)}function vt(w,M){var i=M.length,U,Pe,j;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==x)?P:U.mode===x&&(Pe=1,Pe=l(Pe,M,i,0),Pe!==U.check)?q:(j=je(w,M,i,i),j?(U.mode=de,I):(U.havedict=1,_))}n.inflateReset=rt,n.inflateReset2=$e,n.inflateResetKeep=yt,n.inflateInit=et,n.inflateInit2=Ve,n.inflate=ko,n.inflateEnd=_t,n.inflateGetHeader=Et,n.inflateSetDictionary=vt,n.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,n){"use strict";var a=o("../utils/common"),l=15,h=852,f=592,c=0,d=1,m=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],O=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(S,b,P,q,I,N,W,$){var be=$.bits,H=0,v=0,L=0,le=0,oe=0,K=0,ge=0,R=0,x=0,E=0,te,ce,ae,Ce,qe,ke=null,J=0,Se,Ae=new a.Buf16(l+1),Ct=new a.Buf16(l+1),Me=null,sr=0,Kt,z,k;for(H=0;H<=l;H++)Ae[H]=0;for(v=0;v<q;v++)Ae[b[P+v]]++;for(oe=be,le=l;le>=1&&Ae[le]===0;le--);if(oe>le&&(oe=le),le===0)return I[N++]=1<<24|64<<16|0,I[N++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<le&&Ae[L]===0;L++);for(oe<L&&(oe=L),R=1,H=1;H<=l;H++)if(R<<=1,R-=Ae[H],R<0)return-1;if(R>0&&(S===c||le!==1))return-1;for(Ct[1]=0,H=1;H<l;H++)Ct[H+1]=Ct[H]+Ae[H];for(v=0;v<q;v++)b[P+v]!==0&&(W[Ct[b[P+v]]++]=v);if(S===c?(ke=Me=W,Se=19):S===d?(ke=g,J-=257,Me=y,sr-=257,Se=256):(ke=T,Me=O,Se=-1),E=0,v=0,H=L,qe=N,K=oe,ge=0,ae=-1,x=1<<oe,Ce=x-1,S===d&&x>h||S===m&&x>f)return 1;for(;;){Kt=H-ge,W[v]<Se?(z=0,k=W[v]):W[v]>Se?(z=Me[sr+W[v]],k=ke[J+W[v]]):(z=96,k=0),te=1<<H-ge,ce=1<<K,L=ce;do ce-=te,I[qe+(E>>ge)+ce]=Kt<<24|z<<16|k|0;while(ce!==0);for(te=1<<H-1;E&te;)te>>=1;if(te!==0?(E&=te-1,E+=te):E=0,v++,--Ae[H]===0){if(H===le)break;H=b[P+W[v]]}if(H>oe&&(E&Ce)!==ae){for(ge===0&&(ge=oe),qe+=L,K=H-ge,R=1<<K;K+ge<le&&(R-=Ae[K+ge],!(R<=0));)K++,R<<=1;if(x+=1<<K,S===d&&x>h||S===m&&x>f)return 1;ae=E&Ce,I[ae]=oe<<24|K<<16|qe-N|0}}return E!==0&&(I[qe+E]=H-ge<<24|64<<16|0),$.bits=oe,0}},{"../utils/common":1}],10:[function(o,s,n){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,n){"use strict";function a(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=a},{}],"/lib/inflate.js":[function(o,s,n){"use strict";var a=o("./zlib/inflate"),l=o("./utils/common"),h=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),m=o("./zlib/gzheader"),g=Object.prototype.toString;function y(_){if(!(this instanceof y))return new y(_);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},_||{});var S=this.options;S.raw&&S.windowBits>=0&&S.windowBits<16&&(S.windowBits=-S.windowBits,S.windowBits===0&&(S.windowBits=-15)),S.windowBits>=0&&S.windowBits<16&&!(_&&_.windowBits)&&(S.windowBits+=32),S.windowBits>15&&S.windowBits<48&&(S.windowBits&15)===0&&(S.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=a.inflateInit2(this.strm,S.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new m,a.inflateGetHeader(this.strm,this.header),S.dictionary&&(typeof S.dictionary=="string"?S.dictionary=h.string2buf(S.dictionary):g.call(S.dictionary)==="[object ArrayBuffer]"&&(S.dictionary=new Uint8Array(S.dictionary)),S.raw&&(b=a.inflateSetDictionary(this.strm,S.dictionary),b!==f.Z_OK)))throw new Error(c[b])}y.prototype.push=function(_,S){var b=this.strm,P=this.options.chunkSize,q=this.options.dictionary,I,N,W,$,be,H=!1;if(this.ended)return!1;N=S===~~S?S:S===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof _=="string"?b.input=h.binstring2buf(_):g.call(_)==="[object ArrayBuffer]"?b.input=new Uint8Array(_):b.input=_,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(P),b.next_out=0,b.avail_out=P),I=a.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&q&&(I=a.inflateSetDictionary(this.strm,q)),I===f.Z_BUF_ERROR&&H===!0&&(I=f.Z_OK,H=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(N===f.Z_FINISH||N===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=h.utf8border(b.output,b.next_out),$=b.next_out-W,be=h.buf2string(b.output,W),b.next_out=$,b.avail_out=P-$,$&&l.arraySet(b.output,b.output,W,$,0),this.onData(be)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(H=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(N=f.Z_FINISH),N===f.Z_FINISH?(I=a.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(N===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},y.prototype.onData=function(_){this.chunks.push(_)},y.prototype.onEnd=function(_){_===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=_,this.msg=this.strm.msg};function T(_,S){var b=new y(S);if(b.push(_,!0),b.err)throw b.msg||c[b.err];return b.result}function O(_,S){return S=S||{},S.raw=!0,T(_,S)}n.Inflate=y,n.inflate=T,n.inflateRaw=O,n.ungzip=T},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var ox=globalThis.fetch,us=class{constructor(e,t={},r){this.type=e,this.detail=t,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},Ld=class{constructor(){this.listeners={}}addEventListener(e,t,r){let o=this.listeners[e]||[];r?o.unshift(t):o.push(t),this.listeners[e]=o}removeEventListener(e,t){let r=this.listeners[e]||[],o=r.findIndex(s=>s===t);o>-1&&(r.splice(o,1),this.listeners[e]=r)}dispatch(e){let t=this.listeners[e.type];if(t)for(let r=0,o=t.length;r<o&&e.__mayPropagate;r++)t[r](e)}},Bd=new Date("1904-01-01T00:00:00+0000").getTime();function Vd(e){return Array.from(e).map(t=>String.fromCharCode(t)).join("")}var Nd=class{constructor(e,t,r){this.name=(r||e.tag||"").trim(),this.length=e.length,this.start=e.offset,this.offset=0,this.data=t,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),n=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,n)})})}get currentPosition(){return this.start+this.offset}set currentPosition(e){this.start=e,this.offset=0}skip(e=0,t=8){this.offset+=e*t/8}getValue(e,t){let r=this.start+this.offset;this.offset+=t;try{return this.data[e](r)}catch(o){throw console.error("parser",e,t,this),console.error("parser",this.start,this.offset),o}}flags(e){if(e===8||e===16||e===32||e===64)return this[`uint${e}`].toString(2).padStart(e,0).split("").map(t=>t==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let e=this.uint32;return Vd([e>>24&255,e>>16&255,e>>8&255,e&255])}get fixed(){let e=this.int16,t=Math.round(1e3*this.uint16/65356);return e+t/1e3}get legacyFixed(){let e=this.uint16,t=this.uint16.toString(16).padStart(4,0);return parseFloat(`${e}.${t}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let e=0;for(let t=0;t<5;t++){let r=this.uint8;if(e=e*128+(r&127),r<128)break}return e}get longdatetime(){return new Date(Bd+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let e=p.uint16,t=[0,1,-2,-1][e>>14],r=e&16383;return t+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(e=0,t=0,r=8,o=!1){if(e=e||this.length,e===0)return[];t&&(this.currentPosition=t);let s=`${o?"":"u"}int${r}`,n=[];for(;e--;)n.push(this[s]);return n}},Be=class{constructor(e){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>e});let r=e.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(e){Object.keys(e).forEach(t=>{let r=Object.getOwnPropertyDescriptor(e,t);r.get?this[t]=r.get.bind(this):r.value!==void 0&&(this[t]=r.value)}),this.parser.length&&this.parser.verifyLength()}},pe=class extends Be{constructor(e,t,r){let{parser:o,start:s}=super(new Nd(e,t,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(e,t,r){let o;Object.defineProperty(e,t,{get:()=>o||(o=r(),o),enumerable:!0})}var zd=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:12},t,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new Dd(o)),this.tables={},this.directory.forEach(s=>{let n=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},t);Z(this.tables,s.tag.trim(),n)})}},Dd=class{constructor(e){this.tag=e.tag,this.checksum=e.uint32,this.offset=e.uint32,this.length=e.uint32}},su=ou.inflate||void 0,nu=void 0,Md=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:44},t,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new jd(o)),Gd(this,t,r)}},jd=class{constructor(e){this.tag=e.tag,this.offset=e.uint32,this.compLength=e.uint32,this.origLength=e.uint32,this.origChecksum=e.uint32}};function Gd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=0,n=t;if(o.compLength!==o.origLength){let a=t.buffer.slice(o.offset,o.offset+o.compLength),l;if(su)l=su(new Uint8Array(a));else if(nu)l=nu(new Uint8Array(a));else{let h="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(h),new Error(h)}n=new DataView(l.buffer)}else s=o.offset;return r(e.tables,{tag:o.tag,offset:s,length:o.origLength},n)})})}var au=ru,iu=void 0,Ud=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:48},t,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new Wd(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,h)=>{let f=this.directory[h+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let n,a=t.buffer.slice(s);if(au)n=au(new Uint8Array(a));else if(iu)n=new Uint8Array(iu(a));else{let l="no brotli decoder available to decode WOFF2 font";throw e.onerror&&e.onerror(l),new Error(l)}Hd(this,n,r)}},Wd=class{constructor(e){this.flags=e.uint8;let t=this.tagNumber=this.flags&63;t===63?this.tag=e.tag:this.tag=qd(t);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=e.uint128,o&&(this.transformLength=e.uint128)}};function Hd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=o.offset,n=s+(o.transformLength?o.transformLength:o.origLength),a=new DataView(t.slice(s,n).buffer);try{return r(e.tables,{tag:o.tag,offset:0,length:o.origLength},a)}catch(l){console.error(l)}})})}function qd(e){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][e&63]}var mu={},hu=!1;Promise.all([Promise.resolve().then(function(){return wp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return _p}),Promise.resolve().then(function(){return Op}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return zp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return nm}),Promise.resolve().then(function(){return qm}),Promise.resolve().then(function(){return Zm}),Promise.resolve().then(function(){return Qm}),Promise.resolve().then(function(){return rh}),Promise.resolve().then(function(){return sh}),Promise.resolve().then(function(){return ah}),Promise.resolve().then(function(){return uh}),Promise.resolve().then(function(){return ch}),Promise.resolve().then(function(){return ph}),Promise.resolve().then(function(){return hh}),Promise.resolve().then(function(){return yh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Sh}),Promise.resolve().then(function(){return Fh}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Th}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Lh}),Promise.resolve().then(function(){return Nh}),Promise.resolve().then(function(){return Uh}),Promise.resolve().then(function(){return Yh}),Promise.resolve().then(function(){return Kh}),Promise.resolve().then(function(){return eg}),Promise.resolve().then(function(){return rg}),Promise.resolve().then(function(){return sg}),Promise.resolve().then(function(){return ig}),Promise.resolve().then(function(){return ug}),Promise.resolve().then(function(){return mg}),Promise.resolve().then(function(){return gg}),Promise.resolve().then(function(){return bg})]).then(e=>{e.forEach(t=>{let r=Object.keys(t)[0];mu[r]=t[r]}),hu=!0});function Yd(e,t,r){let o=t.tag.replace(/[^\w\d]/g,""),s=mu[o];return s?new s(t,r,e):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Zd(){let e=0;function t(r,o){if(!hu)return e>10?o(new Error("loading took too long")):(e++,setTimeout(()=>t(r),250));r(Yd)}return new Promise((r,o)=>t(r))}function Xd(e,t){let r=e.lastIndexOf("."),o=(e.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let n={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(n||(n=`${e} is not a known webfont format.`),t)throw new Error(n);console.warn(`Could not load font: ${n}`)}async function Kd(e,t,r={}){if(!globalThis.document)return;let o=Xd(t,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let n=[];return r.styleRules&&(n=Object.entries(r.styleRules).map(([a,l])=>`${a}: ${l};`)),s.textContent=` @font-face { font-family: "${e}"; ${n.join(` `)} src: url("${t}") format("${o}"); -}`,globalThis.document.head.appendChild(s),s}var Jd=[0,1,0,0],Qd=[79,84,84,79],$d=[119,79,70,70],ep=[119,79,70,50];function fs(e,t){if(e.length===t.length){for(let r=0;r<e.length;r++)if(e[r]!==t[r])return;return!0}}function tp(e){let t=[e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3)];if(fs(t,Jd)||fs(t,Qd))return"SFNT";if(fs(t,$d))return"WOFF";if(fs(t,ep))return"WOFF2"}function rp(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}var ds=class extends Ld{constructor(e,t={}){super(),this.name=e,this.options=t,this.metrics=!1}get src(){return this.__src}set src(e){this.__src=e,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await Kd(this.name,e,this.options),this.loadFont(e)))()}async loadFont(e,t){fetch(e).then(r=>rp(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,t||e)).catch(r=>{let o=new us("error",r,`Failed to load font at ${t||e}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(e,t){this.fontData=new DataView(e);let r=tp(this.fontData);if(!r)throw new Error(`${t} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new us("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(e){return Zd().then(t=>(e==="SFNT"&&(this.opentype=new zd(this,this.fontData,t)),e==="WOFF"&&(this.opentype=new Md(this,this.fontData,t)),e==="WOFF2"&&(this.opentype=new Ud(this,this.fontData,t)),this.opentype))}getGlyphId(e){return this.opentype.tables.cmap.getGlyphId(e)}reverse(e){return this.opentype.tables.cmap.reverse(e)}supports(e){return this.getGlyphId(e)!==0}supportsVariation(e){return this.opentype.tables.cmap.supportsVariation(e)!==!1}measureText(e,t=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=e,r.style.fontFamily=this.name,r.style.fontSize=`${t}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=t,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let e=new us("unload",{font:this});this.dispatch(e),this.onunload&&this.onunload(e)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let e=new us("load",{font:this});this.dispatch(e),this.onload&&this.onload(e)}}};globalThis.Font=ds;var qt=class extends Be{constructor(e,t,r){super(e),this.plaformID=t,this.encodingID=r}},op=class extends qt{constructor(e,t,r){super(e,t,r),this.format=0,this.length=e.uint16,this.language=e.uint16,this.glyphIdArray=[...new Array(256)].map(o=>e.uint8)}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=e&&e<=255}reverse(e){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},sp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=2,this.length=e.uint16,this.language=e.uint16,this.subHeaderKeys=[...new Array(256)].map(a=>e.uint16);let o=Math.max(...this.subHeaderKeys),s=e.currentPosition;Z(this,"subHeaders",()=>(e.currentPosition=s,[...new Array(o)].map(a=>new np(e))));let n=s+o*8;Z(this,"glyphIndexArray",()=>(e.currentPosition=n,[...new Array(o)].map(a=>e.uint16)))}supports(e){e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let t=e&&255,r=e&&65280,o=this.subHeaders[r],s=this.subHeaders[o],n=s.firstCode,a=n+s.entryCount;return n<=t&&t<=a}reverse(e){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(e=!1){return e?this.subHeaders.map(t=>({firstCode:t.firstCode,lastCode:t.lastCode})):this.subHeaders.map(t=>({start:t.firstCode,end:t.lastCode}))}},np=class{constructor(e){this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=e.int16,this.idRangeOffset=e.uint16}},ap=class extends qt{constructor(e,t,r){super(e,t,r),this.format=4,this.length=e.uint16,this.language=e.uint16,this.segCountX2=e.uint16,this.segCount=this.segCountX2/2,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16;let o=e.currentPosition;Z(this,"endCode",()=>e.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>e.readBytes(this.segCount,s,16));let n=s+this.segCountX2;Z(this,"idDelta",()=>e.readBytes(this.segCount,n,16,!0));let a=n+this.segCountX2;Z(this,"idRangeOffset",()=>e.readBytes(this.segCount,a,16));let l=a+this.segCountX2,h=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>e.readBytes(h,l,16)),Z(this,"segments",()=>this.buildSegments(a,l,e))}buildSegments(e,t,r){let o=(s,n)=>{let a=this.startCode[n],l=this.endCode[n],h=this.idDelta[n],f=this.idRangeOffset[n],c=e+2*n,d=[];if(f===0)for(let m=a+h,g=l+h;m<=g;m++)d.push(m);else for(let m=0,g=l-a;m<=g;m++)r.currentPosition=c+f+m*2,d.push(r.uint16);return{startCode:a,endCode:l,idDelta:h,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(e){let t=this.segments.find(o=>o.glyphIDs.includes(e));if(!t)return{};let r=t.startCode+t.glyphIDs.indexOf(e);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(e){if(e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535)return 0;let t=this.segments.find(r=>r.startCode<=e&&e<=r.endCode);return t?t.glyphIDs[e-t.startCode]:0}supports(e){return this.getGlyphId(e)!==0}getSupportedCharCodes(e=!1){return e?this.segments:this.segments.map(t=>({start:t.startCode,end:t.endCode}))}},ip=class extends qt{constructor(e,t,r){super(e,t,r),this.format=6,this.length=e.uint16,this.language=e.uint16,this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>e.uint16))}supports(e){if(e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),e<this.firstCode)return{};if(e>this.firstCode+this.entryCount)return{};let t=e-this.firstCode;return{code:t,unicode:String.fromCodePoint(t)}}reverse(e){let t=this.glyphIdArray.indexOf(e);if(t>-1)return this.firstCode+t}getSupportedCharCodes(e=!1){return e?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},lp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=8,e.uint16,this.length=e.uint32,this.language=e.uint32,this.is32=[...new Array(8192)].map(s=>e.uint8),this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new up(e)))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(t=>t.startcharCode<=e&&e<=t.endcharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startcharCode,end:t.endcharCode}))}},up=class{constructor(e){this.startcharCode=e.uint32,this.endcharCode=e.uint32,this.startGlyphID=e.uint32}},fp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=10,e.uint16,this.length=e.uint32,this.language=e.uint32,this.startCharCode=e.uint32,this.numChars=e.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>e.uint16))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),e<this.startCharCode||e>this.startCharCode+this.numChars?!1:e-this.startCharCode}reverse(e){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(e=!1){return e?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},cp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=12,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new dp(e)))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535?0:this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){for(let t of this.groups){let r=t.startGlyphID;if(r>e)continue;if(r===e)return t.startCharCode;if(r+(t.endCharCode-t.startCharCode)<e)continue;let s=t.startCharCode+(e-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},dp=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.startGlyphID=e.uint32}},pp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=13,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32;let o=[...new Array(this.numGroups)].map(s=>new mp(e));Z(this,"groups",o)}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},mp=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.glyphID=e.uint32}},hp=class extends qt{constructor(e,t,r){super(e,t,r),this.subTableStart=e.currentPosition,this.format=14,this.length=e.uint32,this.numVarSelectorRecords=e.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new gp(e)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(e){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(e){let t=this.varSelector.find(r=>r.varSelector===e);return t||!1}getSupportedVariations(){return this.varSelectors.map(e=>e.varSelector)}},gp=class{constructor(e){this.varSelector=e.uint24,this.defaultUVSOffset=e.Offset32,this.nonDefaultUVSOffset=e.Offset32}};function yp(e,t,r){let o=e.uint16;return o===0?new op(e,t,r):o===2?new sp(e,t,r):o===4?new ap(e,t,r):o===6?new ip(e,t,r):o===8?new lp(e,t,r):o===10?new fp(e,t,r):o===12?new cp(e,t,r):o===13?new pp(e,t,r):o===14?new hp(e,t,r):{}}var vp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new bp(r,this.tableStart))}getSubTable(e){return this.encodingRecords[e].table}getSupportedEncodings(){return this.encodingRecords.map(e=>({platformID:e.platformID,encodingId:e.encodingID}))}getSupportedCharCodes(e,t){let r=this.encodingRecords.findIndex(s=>s.platformID===e&&s.encodingID===t);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(e){for(let t=0;t<this.numTables;t++){let r=this.getSubTable(t).reverse(e);if(r)return r}}getGlyphId(e){let t=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(t=s.getGlyphId(e),t!==0):!1}),t}supports(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(e)!==!1})}supportsVariation(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(e)!==!1})}},bp=class{constructor(e,t){let r=this.platformID=e.uint16,o=this.encodingID=e.uint16,s=this.offset=e.Offset32;Z(this,"table",()=>(e.currentPosition=t+s,yp(e,r,o)))}},wp=Object.freeze({__proto__:null,cmap:vp}),xp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Sp=Object.freeze({__proto__:null,head:xp}),Cp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},_p=Object.freeze({__proto__:null,hhea:Cp}),Fp=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.hhea.numberOfHMetrics,n=r.maxp.numGlyphs,a=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=a,[...new Array(s)].map(l=>new kp(o.uint16,o.int16)))),s<n){let l=a+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(n-s)].map(h=>o.int16)))}}},kp=class{constructor(e,t){this.advanceWidth=e,this.lsb=t}},Op=Object.freeze({__proto__:null,hmtx:Fp}),Tp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Pp=Object.freeze({__proto__:null,maxp:Tp}),Ap=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Ep(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new Rp(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(e){let t=this.nameRecords.find(r=>r.nameID===e);if(t)return t.string}},Rp=class{constructor(e,t){this.length=e,this.offset=t}},Ep=class{constructor(e,t){this.platformID=e.uint16,this.encodingID=e.uint16,this.languageID=e.uint16,this.nameID=e.uint16,this.length=e.uint16,this.offset=e.Offset16,Z(this,"string",()=>(e.currentPosition=t.stringStart+this.offset,Ip(e,this)))}};function Ip(e,t){let{platformID:r,length:o}=t;if(o===0)return"";if(r===0||r===3){let a=[];for(let l=0,h=o/2;l<h;l++)a[l]=String.fromCharCode(e.uint16);return a.join("")}let s=e.readBytes(o),n=[];return s.forEach(function(a,l){n[l]=String.fromCharCode(a)}),n.join("")}var Lp=Object.freeze({__proto__:null,name:Ap}),Bp=class extends pe{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},Vp=Object.freeze({__proto__:null,OS2:Bp}),Np=class extends pe{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<lu.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let n=r.int8;r.skip(n),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+n+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(e){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let t=this.glyphNameIndex[e];if(t<258)return lu[t];let r=this.glyphNameOffsets[e],s=this.glyphNameOffsets[e+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(a=>String.fromCharCode(a)).join(""))}},lu=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],zp=Object.freeze({__proto__:null,post:Np}),Dp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new En({offset:e.offset+this.horizAxisOffset},t)),Z(this,"vertAxis",()=>new En({offset:e.offset+this.vertAxisOffset},t)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new En({offset:e.offset+this.itemVarStoreOffset},t)))}},En=class extends pe{constructor(e,t){let{p:r}=super(e,t,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new Mp({offset:e.offset+this.baseTagListOffset},t)),Z(this,"baseScriptList",()=>new jp({offset:e.offset+this.baseScriptListOffset},t))}},Mp=class extends pe{constructor(e,t){let{p:r}=super(e,t,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},jp=class extends pe{constructor(e,t){let{p:r}=super(e,t,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new Gp(this.start,r))))}},Gp=class{constructor(e,t){this.baseScriptTag=t.tag,this.baseScriptOffset=t.Offset16,Z(this,"baseScriptTable",()=>(t.currentPosition=e+this.baseScriptOffset,new Up(t)))}},Up=class{constructor(e){this.start=e.currentPosition,this.baseValuesOffset=e.Offset16,this.defaultMinMaxOffset=e.Offset16,this.baseLangSysCount=e.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(t=>new Wp(this.start,e)),Z(this,"baseValues",()=>(e.currentPosition=this.start+this.baseValuesOffset,new Hp(e))),Z(this,"defaultMinMax",()=>(e.currentPosition=this.start+this.defaultMinMaxOffset,new gu(e)))}},Wp=class{constructor(e,t){this.baseLangSysTag=t.tag,this.minMaxOffset=t.Offset16,Z(this,"minMax",()=>(t.currentPosition=e+this.minMaxOffset,new gu(t)))}},Hp=class{constructor(e){this.parser=e,this.start=e.currentPosition,this.defaultBaselineIndex=e.uint16,this.baseCoordCount=e.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(t=>e.Offset16)}getTable(e){return this.parser.currentPosition=this.start+this.baseCoords[e],new Yp(this.parser)}},gu=class{constructor(e){this.minCoord=e.Offset16,this.maxCoord=e.Offset16,this.featMinMaxCount=e.uint16;let t=e.currentPosition;Z(this,"featMinMaxRecords",()=>(e.currentPosition=t,[...new Array(this.featMinMaxCount)].map(r=>new qp(e))))}},qp=class{constructor(e){this.featureTableTag=e.tag,this.minCoord=e.Offset16,this.maxCoord=e.Offset16}},Yp=class{constructor(e){this.baseCoordFormat=e.uint16,this.coordinate=e.int16,this.baseCoordFormat===2&&(this.referenceGlyph=e.uint16,this.baseCoordPoint=e.uint16),this.baseCoordFormat===3&&(this.deviceTable=e.Offset16)}},Zp=Object.freeze({__proto__:null,BASE:Dp}),uu=class{constructor(e){this.classFormat=e.uint16,this.classFormat===1&&(this.startGlyphID=e.uint16,this.glyphCount=e.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.classFormat===2&&(this.classRangeCount=e.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(t=>new Xp(e)))}},Xp=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.class=e.uint16}},bo=class extends Be{constructor(e){super(e),this.coverageFormat=e.uint16,this.coverageFormat===1&&(this.glyphCount=e.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.coverageFormat===2&&(this.rangeCount=e.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(t=>new Kp(e)))}},Kp=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.startCoverageIndex=e.uint16}},Jp=class{constructor(e,t){this.table=e,this.parser=t,this.start=t.currentPosition,this.format=t.uint16,this.variationRegionListOffset=t.Offset32,this.itemVariationDataCount=t.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>t.Offset32)}},Qp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new uu(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new $p(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new tm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new uu(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new sm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Jp(r)}))}},$p=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,this.glyphCount=e.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16)}getPoint(e){return this.parser.currentPosition=this.start+this.attachPointOffsets[e],new em(this.parser)}},em=class{constructor(e){this.pointCount=e.uint16,this.pointIndices=[...new Array(this.pointCount)].map(t=>e.uint16)}},tm=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,Z(this,"coverage",()=>(e.currentPosition=this.start+this.coverageOffset,new bo(e))),this.ligGlyphCount=e.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(t=>e.Offset16)}getLigGlyph(e){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[e],new rm(this.parser)}},rm=class extends Be{constructor(e){super(e),this.caretCount=e.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(t=>e.Offset16)}getCaretValue(e){return this.parser.currentPosition=this.start+this.caretValueOffsets[e],new om(this.parser)}},om=class{constructor(e){this.caretValueFormat=e.uint16,this.caretValueFormat===1&&(this.coordinate=e.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=e.uint16),this.caretValueFormat===3&&(this.coordinate=e.int16,this.deviceOffset=e.Offset16)}},sm=class extends Be{constructor(e){super(e),this.markGlyphSetTableFormat=e.uint16,this.markGlyphSetCount=e.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(t=>e.Offset32)}getMarkGlyphSet(e){return this.parser.currentPosition=this.start+this.coverageOffsets[e],new bo(this.parser)}},nm=Object.freeze({__proto__:null,GDEF:Qp}),fu=class extends Be{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(e){super(e),this.scriptCount=e.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(t=>new am(e))}},am=class{constructor(e){this.scriptTag=e.tag,this.scriptOffset=e.Offset16}},im=class extends Be{constructor(e){super(e),this.defaultLangSys=e.Offset16,this.langSysCount=e.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(t=>new lm(e))}},lm=class{constructor(e){this.langSysTag=e.tag,this.langSysOffset=e.Offset16}},cu=class{constructor(e){this.lookupOrder=e.Offset16,this.requiredFeatureIndex=e.uint16,this.featureIndexCount=e.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(t=>e.uint16)}},du=class extends Be{static EMPTY={featureCount:0,featureRecords:[]};constructor(e){super(e),this.featureCount=e.uint16,this.featureRecords=[...new Array(this.featureCount)].map(t=>new um(e))}},um=class{constructor(e){this.featureTag=e.tag,this.featureOffset=e.Offset16}},fm=class extends Be{constructor(e){super(e),this.featureParams=e.Offset16,this.lookupIndexCount=e.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(t=>e.uint16)}getFeatureParams(){if(this.featureParams>0){let e=this.parser;e.currentPosition=this.start+this.featureParams;let t=this.featureTag;if(t==="size")return new dm(e);if(t.startsWith("cc"))return new cm(e);if(t.startsWith("ss"))return new pm(e)}}},cm=class{constructor(e){this.format=e.uint16,this.featUiLabelNameId=e.uint16,this.featUiTooltipTextNameId=e.uint16,this.sampleTextNameId=e.uint16,this.numNamedParameters=e.uint16,this.firstParamUiLabelNameId=e.uint16,this.charCount=e.uint16,this.character=[...new Array(this.charCount)].map(t=>e.uint24)}},dm=class{constructor(e){this.designSize=e.uint16,this.subfamilyIdentifier=e.uint16,this.subfamilyNameID=e.uint16,this.smallEnd=e.uint16,this.largeEnd=e.uint16}},pm=class{constructor(e){this.version=e.uint16,this.UINameID=e.uint16}};function yu(e){e.parser.currentPosition-=2,delete e.coverageOffset,delete e.getCoverageTable}var Fr=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.coverageOffset=e.Offset16}getCoverageTable(){let e=this.parser;return e.currentPosition=this.start+this.coverageOffset,new bo(e)}},Ln=class{constructor(e){this.glyphSequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},mm=class extends Fr{constructor(e){super(e),this.deltaGlyphID=e.int16}},hm=class extends Fr{constructor(e){super(e),this.sequenceCount=e.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(t=>e.Offset16)}getSequence(e){let t=this.parser;return t.currentPosition=this.start+this.sequenceOffsets[e],new gm(t)}},gm=class{constructor(e){this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},ym=class extends Fr{constructor(e){super(e),this.alternateSetCount=e.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(t=>e.Offset16)}getAlternateSet(e){let t=this.parser;return t.currentPosition=this.start+this.alternateSetOffsets[e],new vm(t)}},vm=class{constructor(e){this.glyphCount=e.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},bm=class extends Fr{constructor(e){super(e),this.ligatureSetCount=e.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(t=>e.Offset16)}getLigatureSet(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureSetOffsets[e],new wm(t)}},wm=class extends Be{constructor(e){super(e),this.ligatureCount=e.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(t=>e.Offset16)}getLigature(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureOffsets[e],new xm(t)}},xm=class{constructor(e){this.ligatureGlyph=e.uint16,this.componentCount=e.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(t=>e.uint16)}},Sm=class extends Fr{constructor(e){super(e),this.substFormat===1&&(this.subRuleSetCount=e.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.classDefOffset=e.Offset16,this.subClassSetCount=e.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(yu(this),this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new Ln(e)))}getSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.subRuleSetOffsets[e],new Cm(t)}getSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.subClassSetOffsets[e],new _m(t)}getCoverageTable(e){if(this.substFormat!==3&&!e)return super.getCoverageTable();if(!e)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let t=this.parser;return t.currentPosition=this.start+this.coverageOffsets[e],new bo(t)}},Cm=class extends Be{constructor(e){super(e),this.subRuleCount=e.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.subRuleOffsets[e],new vu(t)}},vu=class{constructor(e){this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(t=>e.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new Ln(e))}},_m=class extends Be{constructor(e){super(e),this.subClassRuleCount=e.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.subClassRuleOffsets[e],new Fm(t)}},Fm=class extends vu{constructor(e){super(e)}},km=class extends Fr{constructor(e){super(e),this.substFormat===1&&(this.chainSubRuleSetCount=e.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=e.Offset16,this.inputClassDefOffset=e.Offset16,this.lookaheadClassDefOffset=e.Offset16,this.chainSubClassSetCount=e.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(yu(this),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.inputGlyphCount=e.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.seqLookupCount=e.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(t=>new bu(e)))}getChainSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleSetOffsets[e],new Om(t)}getChainSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubClassSetOffsets[e],new Pm(t)}getCoverageFromOffset(e){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let t=this.parser;return t.currentPosition=this.start+e,new bo(t)}},Om=class extends Be{constructor(e){super(e),this.chainSubRuleCount=e.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new Tm(t)}},Tm=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(t=>new Ln(e))}},Pm=class extends Be{constructor(e){super(e),this.chainSubClassRuleCount=e.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new Am(t)}},Am=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new bu(e))}},bu=class extends Be{constructor(e){super(e),this.sequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},Rm=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.extensionLookupType=e.uint16,this.extensionOffset=e.Offset32}},Em=class extends Fr{constructor(e){super(e),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Im={buildSubtable:function(e,t){let r=new[void 0,mm,hm,ym,bm,Sm,km,Rm,Em][e](t);return r.type=e,r}},Yt=class extends Be{constructor(e){super(e)}},Lm=class extends Yt{constructor(e){super(e),console.log("lookup type 1")}},Bm=class extends Yt{constructor(e){super(e),console.log("lookup type 2")}},Vm=class extends Yt{constructor(e){super(e),console.log("lookup type 3")}},Nm=class extends Yt{constructor(e){super(e),console.log("lookup type 4")}},zm=class extends Yt{constructor(e){super(e),console.log("lookup type 5")}},Dm=class extends Yt{constructor(e){super(e),console.log("lookup type 6")}},Mm=class extends Yt{constructor(e){super(e),console.log("lookup type 7")}},jm=class extends Yt{constructor(e){super(e),console.log("lookup type 8")}},Gm=class extends Yt{constructor(e){super(e),console.log("lookup type 9")}},Um={buildSubtable:function(e,t){let r=new[void 0,Lm,Bm,Vm,Nm,zm,Dm,Mm,jm,Gm][e](t);return r.type=e,r}},pu=class extends Be{static EMPTY={lookupCount:0,lookups:[]};constructor(e){super(e),this.lookupCount=e.uint16,this.lookups=[...new Array(this.lookupCount)].map(t=>e.Offset16)}},Wm=class extends Be{constructor(e,t){super(e),this.ctType=t,this.lookupType=e.uint16,this.lookupFlag=e.uint16,this.subTableCount=e.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>e.Offset16),this.markFilteringSet=e.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(e){let t=this.ctType==="GSUB"?Im:Um;return this.parser.currentPosition=this.start+this.subtableOffsets[e],t.buildSubtable(this.lookupType,this.parser)}},wu=class extends pe{constructor(e,t,r){let{p:o,tableStart:s}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let n=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>n?fu.EMPTY:(o.currentPosition=s+this.scriptListOffset,new fu(o))),Z(this,"featureList",()=>n?du.EMPTY:(o.currentPosition=s+this.featureListOffset,new du(o))),Z(this,"lookupList",()=>n?pu.EMPTY:(o.currentPosition=s+this.lookupListOffset,new pu(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>n?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(e=>e.scriptTag)}getScriptTable(e){let t=this.scriptList.scriptRecords.find(o=>o.scriptTag===e);this.parser.currentPosition=this.scriptList.start+t.scriptOffset;let r=new im(this.parser);return r.scriptTag=e,r}ensureScriptTable(e){return typeof e=="string"?this.getScriptTable(e):e}getSupportedLangSys(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys!==0,r=e.langSysRecords.map(o=>o.langSysTag);return t&&r.unshift("dflt"),r}getDefaultLangSysTable(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys;if(t!==0){this.parser.currentPosition=e.start+t;let r=new cu(this.parser);return r.langSysTag="",r.defaultForScript=e.scriptTag,r}}getLangSysTable(e,t="dflt"){if(t==="dflt")return this.getDefaultLangSysTable(e);e=this.ensureScriptTable(e);let r=e.langSysRecords.find(s=>s.langSysTag===t);this.parser.currentPosition=e.start+r.langSysOffset;let o=new cu(this.parser);return o.langSysTag=t,o}getFeatures(e){return e.featureIndices.map(t=>this.getFeature(t))}getFeature(e){let t;if(parseInt(e)==e?t=this.featureList.featureRecords[e]:t=this.featureList.featureRecords.find(o=>o.featureTag===e),!t)return;this.parser.currentPosition=this.featureList.start+t.featureOffset;let r=new fm(this.parser);return r.featureTag=t.featureTag,r}getLookups(e){return e.lookupListIndices.map(t=>this.getLookup(t))}getLookup(e,t){let r=this.lookupList.lookups[e];return this.parser.currentPosition=this.lookupList.start+r,new Wm(this.parser,t)}},Hm=class extends wu{constructor(e,t){super(e,t,"GSUB")}getLookup(e){return super.getLookup(e,"GSUB")}},qm=Object.freeze({__proto__:null,GSUB:Hm}),Ym=class extends wu{constructor(e,t){super(e,t,"GPOS")}getLookup(e){return super.getLookup(e,"GPOS")}},Zm=Object.freeze({__proto__:null,GPOS:Ym}),Xm=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new Km(r)}},Km=class extends Be{constructor(e){super(e),this.numEntries=e.uint16,this.documentRecords=[...new Array(this.numEntries)].map(t=>new Jm(e))}getDocument(e){let t=this.documentRecords[e];if(!t)return"";let r=this.start+t.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(t.svgDocLength)}getDocumentForGlyph(e){let t=this.documentRecords.findIndex(r=>r.startGlyphID<=e&&e<=r.endGlyphID);return t===-1?"":this.getDocument(t)}},Jm=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.svgDocOffset=e.Offset32,this.svgDocLength=e.uint32}},Qm=Object.freeze({__proto__:null,SVG:Xm}),$m=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(n=>new eh(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let n=[];for(let a=0;a<this.instanceCount;a++)r.currentPosition=s+a*this.instanceSize,n.push(new th(r,this.axisCount,this.instanceSize));return n})}getSupportedAxes(){return this.axes.map(e=>e.tag)}getAxis(e){return this.axes.find(t=>t.tag===e)}},eh=class{constructor(e){this.tag=e.tag,this.minValue=e.fixed,this.defaultValue=e.fixed,this.maxValue=e.fixed,this.flags=e.flags(16),this.axisNameID=e.uint16}},th=class{constructor(e,t,r){let o=e.currentPosition;this.subfamilyNameID=e.uint16,e.uint16,this.coordinates=[...new Array(t)].map(s=>e.fixed),e.currentPosition-o<r&&(this.postScriptNameID=e.uint16)}},rh=Object.freeze({__proto__:null,fvar:$m}),oh=class extends pe{constructor(e,t){let{p:r}=super(e,t),o=e.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},sh=Object.freeze({__proto__:null,cvt:oh}),nh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},ah=Object.freeze({__proto__:null,fpgm:nh}),ih=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new lh(r)))}},lh=class{constructor(e){this.rangeMaxPPEM=e.uint16,this.rangeGaspBehavior=e.uint16}},uh=Object.freeze({__proto__:null,gasp:ih}),fh=class extends pe{constructor(e,t){super(e,t)}getGlyphData(e,t){return this.parser.currentPosition=this.tableStart+e,this.parser.readBytes(t)}},ch=Object.freeze({__proto__:null,glyf:fh}),dh=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(n=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(n=>o.Offset32))}getGlyphDataOffsetAndLength(e){let t=this.offsets[e]*this.x2?2:1,r=this.offsets[e+1]*this.x2?2:1;return{offset:t,length:r-t}}},ph=Object.freeze({__proto__:null,loca:dh}),mh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},hh=Object.freeze({__proto__:null,prep:mh}),gh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},yh=Object.freeze({__proto__:null,CFF:gh}),vh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},bh=Object.freeze({__proto__:null,CFF2:vh}),wh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new xh(r)))}},xh=class{constructor(e){this.glyphIndex=e.uint16,this.vertOriginY=e.int16}},Sh=Object.freeze({__proto__:null,VORG:wh}),Ch=class{constructor(e){this.indexSubTableArrayOffset=e.Offset32,this.indexTablesSize=e.uint32,this.numberofIndexSubTables=e.uint32,this.colorRef=e.uint32,this.hori=new cs(e),this.vert=new cs(e),this.startGlyphIndex=e.uint16,this.endGlyphIndex=e.uint16,this.ppemX=e.uint8,this.ppemY=e.uint8,this.bitDepth=e.uint8,this.flags=e.int8}},_h=class{constructor(e){this.hori=new cs(e),this.vert=new cs(e),this.ppemX=e.uint8,this.ppemY=e.uint8,this.substitutePpemX=e.uint8,this.substitutePpemY=e.uint8}},cs=class{constructor(e){this.ascender=e.int8,this.descender=e.int8,this.widthMax=e.uint8,this.caretSlopeNumerator=e.int8,this.caretSlopeDenominator=e.int8,this.caretOffset=e.int8,this.minOriginSB=e.int8,this.minAdvanceSB=e.int8,this.maxBeforeBL=e.int8,this.minAfterBL=e.int8,this.pad1=e.int8,this.pad2=e.int8}},xu=class extends pe{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new Ch(o)))}},Fh=Object.freeze({__proto__:null,EBLC:xu}),Su=class extends pe{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},kh=Object.freeze({__proto__:null,EBDT:Su}),Oh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new _h(r)))}},Th=Object.freeze({__proto__:null,EBSC:Oh}),Ph=class extends xu{constructor(e,t){super(e,t,"CBLC")}},Ah=Object.freeze({__proto__:null,CBLC:Ph}),Rh=class extends Su{constructor(e,t){super(e,t,"CBDT")}},Eh=Object.freeze({__proto__:null,CBDT:Rh}),Ih=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},Lh=Object.freeze({__proto__:null,sbix:Ih}),Bh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(e){let t=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=t;let r=new In(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let n=new In(this.parser),a=n.gID;if(o===e)return r;if(a===e)return n;for(;t!==s;){let l=t+(s-t)/12;this.parser.currentPosition=l;let h=new In(this.parser),f=h.gID;if(f===e)return h;f>e?s=l:f<e&&(t=l)}return!1}getLayers(e){let t=this.getBaseGlyphRecord(e);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*t.firstLayerIndex,[...new Array(t.numLayers)].map(r=>new Vh(p))}},In=class{constructor(e){this.gID=e.uint16,this.firstLayerIndex=e.uint16,this.numLayers=e.uint16}},Vh=class{constructor(e){this.gID=e.uint16,this.paletteIndex=e.uint16}},Nh=Object.freeze({__proto__:null,COLR:Bh}),zh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new Dh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new Mh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new jh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new Gh(r,o))))}},Dh=class{constructor(e){this.blue=e.uint8,this.green=e.uint8,this.red=e.uint8,this.alpha=e.uint8}},Mh=class{constructor(e,t){this.paletteTypes=[...new Array(t)].map(r=>e.uint32)}},jh=class{constructor(e,t){this.paletteLabels=[...new Array(t)].map(r=>e.uint16)}},Gh=class{constructor(e,t){this.paletteEntryLabels=[...new Array(t)].map(r=>e.uint16)}},Uh=Object.freeze({__proto__:null,CPAL:zh}),Wh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new Hh(r))}getData(e){let t=this.signatureRecords[e];return this.parser.currentPosition=this.tableStart+t.offset,new qh(this.parser)}},Hh=class{constructor(e){this.format=e.uint32,this.length=e.uint32,this.offset=e.Offset32}},qh=class{constructor(e){e.uint16,e.uint16,this.signatureLength=e.uint32,this.signature=e.readBytes(this.signatureLength)}},Yh=Object.freeze({__proto__:null,DSIG:Wh}),Zh=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(n=>new Xh(o,s))}},Xh=class{constructor(e,t){this.pixelSize=e.uint8,this.maxWidth=e.uint8,this.widths=e.readBytes(t)}},Kh=Object.freeze({__proto__:null,hdmx:Zh}),Jh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let n=0;n<this.nTables;n++){r.currentPosition=o;let a=new Qh(r);s.push(a),o+=a}return s})}},Qh=class{constructor(e){this.version=e.uint16,this.length=e.uint16,this.coverage=e.flags(8),this.format=e.uint8,this.format===0&&(this.nPairs=e.uint16,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(t=>new $h(e)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},$h=class{constructor(e){this.left=e.uint16,this.right=e.uint16,this.value=e.fword}},eg=Object.freeze({__proto__:null,kern:Jh}),tg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},rg=Object.freeze({__proto__:null,LTSH:tg}),og=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},sg=Object.freeze({__proto__:null,MERG:og}),ng=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new ag(this.tableStart,r))}},ag=class{constructor(e,t){this.tableStart=e,this.parser=t,this.tag=t.tag,this.dataOffset=t.Offset32,this.dataLength=t.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},ig=Object.freeze({__proto__:null,meta:ng}),lg=class extends pe{constructor(e,t){super(e,t),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},ug=Object.freeze({__proto__:null,PCLT:lg}),fg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new cg(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new dg(r))}},cg=class{constructor(e){this.bCharSet=e.uint8,this.xRatio=e.uint8,this.yStartRatio=e.uint8,this.yEndRatio=e.uint8}},dg=class{constructor(e){this.recs=e.uint16,this.startsz=e.uint8,this.endsz=e.uint8,this.records=[...new Array(this.recs)].map(t=>new pg(e))}},pg=class{constructor(e){this.yPelHeight=e.uint16,this.yMax=e.int16,this.yMin=e.int16}},mg=Object.freeze({__proto__:null,VDMX:fg}),hg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},gg=Object.freeze({__proto__:null,vhea:hg}),yg=class extends pe{constructor(e,t,r){super(e,t);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,n=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=n,[...new Array(o)].map(a=>new vg(p.uint16,p.int16)))),o<s){let a=n+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=a,[...new Array(s-o)].map(l=>p.int16)))}}},vg=class{constructor(e,t){this.advanceHeight=e,this.topSideBearing=t}},bg=Object.freeze({__proto__:null,vmtx:yg});var Cu=u(X(),1);var{kebabCase:wg}=ye(Cu.privateApis);function _u(e){let t=e.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:wg(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(t)}var gt=u(D(),1);function xg(){let{installFonts:e}=(0,wo.useContext)(lt),[t,r]=(0,wo.useState)(!1),[o,s]=(0,wo.useState)(null),n=g=>{l(g)},a=g=>{l(g.target.files)},l=async g=>{if(!g)return;s(null),r(!0);let y=new Set,T=[...g],O=!1,_=T.map(async b=>{if(!await f(b))return O=!0,null;if(y.has(b.name))return null;let q=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return Tn.includes(q)?(y.add(b.name),b):null}),S=(await Promise.all(_)).filter(b=>b!==null);if(S.length>0)h(S);else{let b=O?(0,Yr.__)("Sorry, you are not allowed to upload this file type."):(0,Yr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},h=async g=>{let y=await Promise.all(g.map(async T=>{let O=await d(T);return await tr(O,O.file,"all"),O}));m(y)};async function f(g){let y=new ds("Uploaded Font");try{let T=await c(g);return await y.fromDataBuffer(T,"font"),!0}catch{return!1}}async function c(g){return new Promise((y,T)=>{let O=new window.FileReader;O.readAsArrayBuffer(g),O.onload=()=>y(O.result),O.onerror=T})}let d=async g=>{let y=await c(g),T=new ds("Uploaded Font");T.fromDataBuffer(y,g.name);let _=(await new Promise($=>T.onload=$)).detail.font,{name:S}=_.opentype.tables,b=S.get(16)||S.get(1),P=S.get(2).toLowerCase().includes("italic"),q=_.opentype.tables["OS/2"].usWeightClass||"normal",N=!!_.opentype.tables.fvar&&_.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),W=N?`${N.minValue} ${N.maxValue}`:null;return{file:g,fontFamily:b,fontStyle:P?"italic":"normal",fontWeight:W||q}},m=async g=>{let y=_u(g);try{await e(y),s({type:"success",message:(0,Yr.__)("Fonts were installed successfully.")})}catch(T){let O=T;s({type:"error",message:O.message,errors:O?.installationErrors})}r(!1)};return(0,gt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,gt.jsx)(tt.DropZone,{onFilesDrop:n}),(0,gt.jsxs)(tt.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,gt.jsxs)(tt.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,gt.jsx)("ul",{children:o.errors.map((g,y)=>(0,gt.jsx)("li",{children:g},y))})]}),t&&(0,gt.jsx)(tt.FlexItem,{children:(0,gt.jsx)("div",{className:"font-library__upload-area",children:(0,gt.jsx)(tt.ProgressBar,{})})}),!t&&(0,gt.jsx)(tt.FormFileUpload,{accept:Tn.map(g=>`.${g}`).join(","),multiple:!0,onChange:a,render:({openFileDialog:g})=>(0,gt.jsx)(tt.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,Yr.__)("Upload font")})}),(0,gt.jsx)(tt.__experimentalText,{className:"font-library__upload-area__text",children:(0,Yr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ps=xg;var ku=u(D(),1),{Tabs:b6}=ye(Bn.privateApis),w6={id:"installed-fonts",title:(0,ms._x)("Library","Font library")},x6={id:"upload-fonts",title:(0,ms._x)("Upload","noun")};var Ou=u(ie(),1),Vn=u(X(),1),Cg=u(ve(),1);var Tu=u(D(),1);var Nn=u(D(),1);var Pu=u(ie(),1),hs=u(X(),1);var Au=u(D(),1);var Dn=u(D(),1);var At=u(ie(),1),Mn=u(X(),1),Rg=u(ve(),1);var Ru=u(it(),1);var Pg=u(D(),1),{useSettingsForBlockElement:J6,TypographyPanel:Q6}=ye(Ru.privateApis);var Ag=u(D(),1);var jn=u(D(),1),iC={text:{description:(0,At.__)("Manage the fonts used on the site."),title:(0,At.__)("Text")},link:{description:(0,At.__)("Manage the fonts and typography used on the links."),title:(0,At.__)("Links")},heading:{description:(0,At.__)("Manage the fonts and typography used on headings."),title:(0,At.__)("Headings")},caption:{description:(0,At.__)("Manage the fonts and typography used on captions."),title:(0,At.__)("Captions")},button:{description:(0,At.__)("Manage the fonts and typography used on buttons."),title:(0,At.__)("Buttons")}};var Bg=u(ie(),1),Vg=u(X(),1),Iu=u(it(),1);var Zr=u(X(),1),Eu=u(ie(),1);var Lg=u(ve(),1);var Eg=u(X(),1),Ig=u(D(),1);var Gn=u(D(),1);var Un=u(D(),1),{useSettingsForBlockElement:CC,ColorPanel:_C}=ye(Iu.privateApis);var Ug=u(ie(),1),Mu=u(X(),1);var Dg=u(pr(),1),Wn=u(X(),1),Mg=u(ie(),1);var ys=u(X(),1);var gs=u(X(),1);var Lu=u(D(),1);function Bu(){let{paletteColors:e}=zr();return e.slice(0,4).map(({slug:t,color:r},o)=>(0,Lu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${t}-${o}`))}var So=u(D(),1),Ng={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},zg=({label:e,isFocused:t,withHoverView:r})=>(0,So.jsx)(jr,{label:e,isFocused:t,withHoverView:r,children:({key:o})=>(0,So.jsx)(gs.__unstableMotion.div,{variants:Ng,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(gs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(Bu,{})})},o)}),Vu=zg;var kr=u(D(),1),Nu=["color"];function vs({title:e,gap:t=2}){let r=Uo(Nu);return r?.length<=1?null:(0,kr.jsxs)(ys.__experimentalVStack,{spacing:3,children:[e&&(0,kr.jsx)(St,{level:3,children:e}),(0,kr.jsx)(ys.__experimentalGrid,{gap:t,children:r.map((o,s)=>(0,kr.jsx)(Ur,{variation:o,isPill:!0,properties:Nu,showTooltip:!0,children:()=>(0,kr.jsx)(Vu,{})},s))})]})}var zu=u(D(),1);var jg=u(pr(),1),bs=u(X(),1),Gg=u(ie(),1);var Du=u(D(),1);var Hn=u(D(),1),{Tabs:XC}=ye(Mu.privateApis);var Hg=u(ie(),1),Gu=u(it(),1),qg=u(X(),1);var ju=u(it(),1);var Wg=u(D(),1);var{BackgroundPanel:$C}=ye(ju.privateApis);var qn=u(D(),1),{useHasBackgroundPanel:a3}=ye(Gu.privateApis);var Or=u(X(),1),Yn=u(ie(),1);var Jg=u(ve(),1);var Yg=u(X(),1),Zg=u(ie(),1),Xg=u(D(),1);var Zn=u(D(),1),{Menu:v3}=ye(Or.privateApis);var We=u(X(),1),Co=u(ie(),1);var ws=u(ve(),1);var Xn=u(D(),1),{Menu:I3}=ye(We.privateApis),L3=[{label:(0,Co.__)("Rename"),action:"rename"},{label:(0,Co.__)("Delete"),action:"delete"}],B3=[{label:(0,Co.__)("Reset"),action:"reset"}];var Qg=u(D(),1);var ty=u(ie(),1),Wu=u(it(),1);var Uu=u(it(),1),$g=u(ve(),1);var ey=u(D(),1),{useSettingsForBlockElement:W3,DimensionsPanel:H3}=ye(Uu.privateApis);var Kn=u(D(),1),{useHasDimensionsPanel:Q3,useSettingsForBlockElement:$3}=ye(Wu.privateApis);var Ku=u(X(),1),ny=u(ie(),1);var oy=u(ie(),1),sy=u(X(),1);var Hu=u(wt(),1),qu=u(pt(),1),Ss=u(ve(),1),Yu=u(X(),1),Zu=u(ie(),1);var xs=u(D(),1);function ry({gap:e=2}){let{user:t}=(0,Ss.useContext)(Je),r=t?.styles,s=(0,qu.useSelect)(a=>{let l=a(Hu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(a=>!co(a,["color"])&&!co(a,["typography","spacing"])),n=(0,Ss.useMemo)(()=>[...[{title:(0,Zu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let h=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(m=>{if(r.blocks?.[m]?.css){let g=h[m]||{},y={css:`${h[m]?.css||""} ${r.blocks?.[m]?.css?.trim()||""}`};h[m]={...g,...y}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(h).length>0?{blocks:h}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,xs.jsx)(Yu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:e,children:n.map((a,l)=>(0,xs.jsx)(Ur,{variation:a,children:h=>(0,xs.jsx)(bn,{label:a?.title,withHoverView:!0,isFocused:h,variation:a})},l))})}var Jn=ry;var Xu=u(D(),1);var Qn=u(D(),1);var ay=u(ie(),1),iy=u(X(),1),Ju=u(it(),1);var $n=u(D(),1),{AdvancedPanel:y_}=ye(Ju.privateApis);var af=u(ie(),1),ta=u(X(),1),ra=u(ve(),1);var ly=u(pt(),1),uy=u(wt(),1),Qu=u(ve(),1);var tf=u(ie(),1),rf=u(X(),1),Cs=u(ef(),1),fy=u(wt(),1),cy=u(pt(),1);var of=u(kn(),1),sf=u(D(),1),S_=3600*1e3*24;var ea=u(X(),1),_o=u(ie(),1);var nf=u(D(),1);var oa=u(D(),1);var sa=u(ie(),1),Zt=u(X(),1);var gy=u(ve(),1);var py=u(X(),1),my=u(ie(),1),hy=u(D(),1);var na=u(D(),1),{Menu:U_}=ye(Zt.privateApis);var cf=u(ie(),1),Mt=u(X(),1);var df=u(ve(),1);var yy=u(it(),1),vy=u(ie(),1);var by=u(D(),1);var wy=u(X(),1),lf=u(ie(),1),xy=u(D(),1);var Fo=u(X(),1),Sy=u(ie(),1),Cy=u(ve(),1),uf=u(D(),1);var Xt=u(X(),1),ff=u(D(),1);var aa=u(D(),1),{Menu:i4}=ye(Mt.privateApis);var la=u(D(),1);var ua=u(D(),1);function Xr(e){return function({value:r,baseValue:o,onChange:s,...n}){return(0,ua.jsx)(fo,{value:r,baseValue:o,onChange:s,children:(0,ua.jsx)(e,{...n})})}}var Oy=Xr(Jn);var Ty=Xr(vs);var Py=Xr(Ko);var Kr=u(D(),1);function fa({value:e,baseValue:t,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Kr.jsx)(ps,{});break;case"installed-fonts":s=(0,Kr.jsx)(ss,{});break;default:s=(0,Kr.jsx)(as,{slug:o})}return(0,Kr.jsx)(fo,{value:e,baseValue:t,onChange:r,children:(0,Kr.jsx)($o,{children:s})})}var hf=u(Ws()),{unlock:ca}=(0,hf.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='7667192f29']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","7667192f29"),e.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(e)}var{Tabs:_s}=ca(gf.privateApis),{useGlobalStyles:Ay}=ca(yf.privateApis);function Ry(){let{records:e=[]}=(0,Fs.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[t,r]=(0,bf.useState)("installed-fonts"),{base:o,user:s,setUser:n,isReady:a}=Ay(),l=(0,vf.useSelect)(f=>f(Fs.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!a)return null;let h=[{id:"installed-fonts",title:(0,Jr._x)("Library","Font library")}];return l&&(h.push({id:"upload-fonts",title:(0,Jr._x)("Upload","noun")}),h.push(...(e||[]).map(({slug:f,name:c})=>({id:f,title:e&&e.length===1&&f==="google-fonts"?(0,Jr.__)("Install Fonts"):c})))),React.createElement(Qs,{title:(0,Jr.__)("Fonts"),className:"font-library-page"},React.createElement(_s,{selectedTabId:t,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(_s.TabList,null,h.map(({id:f,title:c})=>React.createElement(_s.Tab,{key:f,tabId:f},c)))),h.map(({id:f})=>React.createElement(_s.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(fa,{value:s,baseValue:o,onChange:n,activeTab:f})))))}function Ey(){return React.createElement(Ry,null)}var Iy=Ey;export{Iy as stage}; +}`,globalThis.document.head.appendChild(s),s}var Jd=[0,1,0,0],Qd=[79,84,84,79],$d=[119,79,70,70],ep=[119,79,70,50];function fs(e,t){if(e.length===t.length){for(let r=0;r<e.length;r++)if(e[r]!==t[r])return;return!0}}function tp(e){let t=[e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3)];if(fs(t,Jd)||fs(t,Qd))return"SFNT";if(fs(t,$d))return"WOFF";if(fs(t,ep))return"WOFF2"}function rp(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}var ds=class extends Ld{constructor(e,t={}){super(),this.name=e,this.options=t,this.metrics=!1}get src(){return this.__src}set src(e){this.__src=e,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await Kd(this.name,e,this.options),this.loadFont(e)))()}async loadFont(e,t){fetch(e).then(r=>rp(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,t||e)).catch(r=>{let o=new us("error",r,`Failed to load font at ${t||e}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(e,t){this.fontData=new DataView(e);let r=tp(this.fontData);if(!r)throw new Error(`${t} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new us("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(e){return Zd().then(t=>(e==="SFNT"&&(this.opentype=new zd(this,this.fontData,t)),e==="WOFF"&&(this.opentype=new Md(this,this.fontData,t)),e==="WOFF2"&&(this.opentype=new Ud(this,this.fontData,t)),this.opentype))}getGlyphId(e){return this.opentype.tables.cmap.getGlyphId(e)}reverse(e){return this.opentype.tables.cmap.reverse(e)}supports(e){return this.getGlyphId(e)!==0}supportsVariation(e){return this.opentype.tables.cmap.supportsVariation(e)!==!1}measureText(e,t=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=e,r.style.fontFamily=this.name,r.style.fontSize=`${t}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=t,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let e=new us("unload",{font:this});this.dispatch(e),this.onunload&&this.onunload(e)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let e=new us("load",{font:this});this.dispatch(e),this.onload&&this.onload(e)}}};globalThis.Font=ds;var qt=class extends Be{constructor(e,t,r){super(e),this.plaformID=t,this.encodingID=r}},op=class extends qt{constructor(e,t,r){super(e,t,r),this.format=0,this.length=e.uint16,this.language=e.uint16,this.glyphIdArray=[...new Array(256)].map(o=>e.uint8)}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=e&&e<=255}reverse(e){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},sp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=2,this.length=e.uint16,this.language=e.uint16,this.subHeaderKeys=[...new Array(256)].map(a=>e.uint16);let o=Math.max(...this.subHeaderKeys),s=e.currentPosition;Z(this,"subHeaders",()=>(e.currentPosition=s,[...new Array(o)].map(a=>new np(e))));let n=s+o*8;Z(this,"glyphIndexArray",()=>(e.currentPosition=n,[...new Array(o)].map(a=>e.uint16)))}supports(e){e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let t=e&&255,r=e&&65280,o=this.subHeaders[r],s=this.subHeaders[o],n=s.firstCode,a=n+s.entryCount;return n<=t&&t<=a}reverse(e){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(e=!1){return e?this.subHeaders.map(t=>({firstCode:t.firstCode,lastCode:t.lastCode})):this.subHeaders.map(t=>({start:t.firstCode,end:t.lastCode}))}},np=class{constructor(e){this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=e.int16,this.idRangeOffset=e.uint16}},ap=class extends qt{constructor(e,t,r){super(e,t,r),this.format=4,this.length=e.uint16,this.language=e.uint16,this.segCountX2=e.uint16,this.segCount=this.segCountX2/2,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16;let o=e.currentPosition;Z(this,"endCode",()=>e.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>e.readBytes(this.segCount,s,16));let n=s+this.segCountX2;Z(this,"idDelta",()=>e.readBytes(this.segCount,n,16,!0));let a=n+this.segCountX2;Z(this,"idRangeOffset",()=>e.readBytes(this.segCount,a,16));let l=a+this.segCountX2,h=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>e.readBytes(h,l,16)),Z(this,"segments",()=>this.buildSegments(a,l,e))}buildSegments(e,t,r){let o=(s,n)=>{let a=this.startCode[n],l=this.endCode[n],h=this.idDelta[n],f=this.idRangeOffset[n],c=e+2*n,d=[];if(f===0)for(let m=a+h,g=l+h;m<=g;m++)d.push(m);else for(let m=0,g=l-a;m<=g;m++)r.currentPosition=c+f+m*2,d.push(r.uint16);return{startCode:a,endCode:l,idDelta:h,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(e){let t=this.segments.find(o=>o.glyphIDs.includes(e));if(!t)return{};let r=t.startCode+t.glyphIDs.indexOf(e);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(e){if(e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535)return 0;let t=this.segments.find(r=>r.startCode<=e&&e<=r.endCode);return t?t.glyphIDs[e-t.startCode]:0}supports(e){return this.getGlyphId(e)!==0}getSupportedCharCodes(e=!1){return e?this.segments:this.segments.map(t=>({start:t.startCode,end:t.endCode}))}},ip=class extends qt{constructor(e,t,r){super(e,t,r),this.format=6,this.length=e.uint16,this.language=e.uint16,this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>e.uint16))}supports(e){if(e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),e<this.firstCode)return{};if(e>this.firstCode+this.entryCount)return{};let t=e-this.firstCode;return{code:t,unicode:String.fromCodePoint(t)}}reverse(e){let t=this.glyphIdArray.indexOf(e);if(t>-1)return this.firstCode+t}getSupportedCharCodes(e=!1){return e?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},lp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=8,e.uint16,this.length=e.uint32,this.language=e.uint32,this.is32=[...new Array(8192)].map(s=>e.uint8),this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new up(e)))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(t=>t.startcharCode<=e&&e<=t.endcharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startcharCode,end:t.endcharCode}))}},up=class{constructor(e){this.startcharCode=e.uint32,this.endcharCode=e.uint32,this.startGlyphID=e.uint32}},fp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=10,e.uint16,this.length=e.uint32,this.language=e.uint32,this.startCharCode=e.uint32,this.numChars=e.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>e.uint16))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),e<this.startCharCode||e>this.startCharCode+this.numChars?!1:e-this.startCharCode}reverse(e){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(e=!1){return e?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},cp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=12,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new dp(e)))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535?0:this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){for(let t of this.groups){let r=t.startGlyphID;if(r>e)continue;if(r===e)return t.startCharCode;if(r+(t.endCharCode-t.startCharCode)<e)continue;let s=t.startCharCode+(e-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},dp=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.startGlyphID=e.uint32}},pp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=13,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32;let o=[...new Array(this.numGroups)].map(s=>new mp(e));Z(this,"groups",o)}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},mp=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.glyphID=e.uint32}},hp=class extends qt{constructor(e,t,r){super(e,t,r),this.subTableStart=e.currentPosition,this.format=14,this.length=e.uint32,this.numVarSelectorRecords=e.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new gp(e)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(e){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(e){let t=this.varSelector.find(r=>r.varSelector===e);return t||!1}getSupportedVariations(){return this.varSelectors.map(e=>e.varSelector)}},gp=class{constructor(e){this.varSelector=e.uint24,this.defaultUVSOffset=e.Offset32,this.nonDefaultUVSOffset=e.Offset32}};function yp(e,t,r){let o=e.uint16;return o===0?new op(e,t,r):o===2?new sp(e,t,r):o===4?new ap(e,t,r):o===6?new ip(e,t,r):o===8?new lp(e,t,r):o===10?new fp(e,t,r):o===12?new cp(e,t,r):o===13?new pp(e,t,r):o===14?new hp(e,t,r):{}}var vp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new bp(r,this.tableStart))}getSubTable(e){return this.encodingRecords[e].table}getSupportedEncodings(){return this.encodingRecords.map(e=>({platformID:e.platformID,encodingId:e.encodingID}))}getSupportedCharCodes(e,t){let r=this.encodingRecords.findIndex(s=>s.platformID===e&&s.encodingID===t);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(e){for(let t=0;t<this.numTables;t++){let r=this.getSubTable(t).reverse(e);if(r)return r}}getGlyphId(e){let t=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(t=s.getGlyphId(e),t!==0):!1}),t}supports(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(e)!==!1})}supportsVariation(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(e)!==!1})}},bp=class{constructor(e,t){let r=this.platformID=e.uint16,o=this.encodingID=e.uint16,s=this.offset=e.Offset32;Z(this,"table",()=>(e.currentPosition=t+s,yp(e,r,o)))}},wp=Object.freeze({__proto__:null,cmap:vp}),xp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Sp=Object.freeze({__proto__:null,head:xp}),Cp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},_p=Object.freeze({__proto__:null,hhea:Cp}),Fp=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.hhea.numberOfHMetrics,n=r.maxp.numGlyphs,a=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=a,[...new Array(s)].map(l=>new kp(o.uint16,o.int16)))),s<n){let l=a+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(n-s)].map(h=>o.int16)))}}},kp=class{constructor(e,t){this.advanceWidth=e,this.lsb=t}},Op=Object.freeze({__proto__:null,hmtx:Fp}),Tp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Pp=Object.freeze({__proto__:null,maxp:Tp}),Ap=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Ep(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new Rp(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(e){let t=this.nameRecords.find(r=>r.nameID===e);if(t)return t.string}},Rp=class{constructor(e,t){this.length=e,this.offset=t}},Ep=class{constructor(e,t){this.platformID=e.uint16,this.encodingID=e.uint16,this.languageID=e.uint16,this.nameID=e.uint16,this.length=e.uint16,this.offset=e.Offset16,Z(this,"string",()=>(e.currentPosition=t.stringStart+this.offset,Ip(e,this)))}};function Ip(e,t){let{platformID:r,length:o}=t;if(o===0)return"";if(r===0||r===3){let a=[];for(let l=0,h=o/2;l<h;l++)a[l]=String.fromCharCode(e.uint16);return a.join("")}let s=e.readBytes(o),n=[];return s.forEach(function(a,l){n[l]=String.fromCharCode(a)}),n.join("")}var Lp=Object.freeze({__proto__:null,name:Ap}),Bp=class extends pe{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},Vp=Object.freeze({__proto__:null,OS2:Bp}),Np=class extends pe{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<lu.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let n=r.int8;r.skip(n),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+n+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(e){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let t=this.glyphNameIndex[e];if(t<258)return lu[t];let r=this.glyphNameOffsets[e],s=this.glyphNameOffsets[e+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(a=>String.fromCharCode(a)).join(""))}},lu=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],zp=Object.freeze({__proto__:null,post:Np}),Dp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new En({offset:e.offset+this.horizAxisOffset},t)),Z(this,"vertAxis",()=>new En({offset:e.offset+this.vertAxisOffset},t)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new En({offset:e.offset+this.itemVarStoreOffset},t)))}},En=class extends pe{constructor(e,t){let{p:r}=super(e,t,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new Mp({offset:e.offset+this.baseTagListOffset},t)),Z(this,"baseScriptList",()=>new jp({offset:e.offset+this.baseScriptListOffset},t))}},Mp=class extends pe{constructor(e,t){let{p:r}=super(e,t,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},jp=class extends pe{constructor(e,t){let{p:r}=super(e,t,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new Gp(this.start,r))))}},Gp=class{constructor(e,t){this.baseScriptTag=t.tag,this.baseScriptOffset=t.Offset16,Z(this,"baseScriptTable",()=>(t.currentPosition=e+this.baseScriptOffset,new Up(t)))}},Up=class{constructor(e){this.start=e.currentPosition,this.baseValuesOffset=e.Offset16,this.defaultMinMaxOffset=e.Offset16,this.baseLangSysCount=e.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(t=>new Wp(this.start,e)),Z(this,"baseValues",()=>(e.currentPosition=this.start+this.baseValuesOffset,new Hp(e))),Z(this,"defaultMinMax",()=>(e.currentPosition=this.start+this.defaultMinMaxOffset,new gu(e)))}},Wp=class{constructor(e,t){this.baseLangSysTag=t.tag,this.minMaxOffset=t.Offset16,Z(this,"minMax",()=>(t.currentPosition=e+this.minMaxOffset,new gu(t)))}},Hp=class{constructor(e){this.parser=e,this.start=e.currentPosition,this.defaultBaselineIndex=e.uint16,this.baseCoordCount=e.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(t=>e.Offset16)}getTable(e){return this.parser.currentPosition=this.start+this.baseCoords[e],new Yp(this.parser)}},gu=class{constructor(e){this.minCoord=e.Offset16,this.maxCoord=e.Offset16,this.featMinMaxCount=e.uint16;let t=e.currentPosition;Z(this,"featMinMaxRecords",()=>(e.currentPosition=t,[...new Array(this.featMinMaxCount)].map(r=>new qp(e))))}},qp=class{constructor(e){this.featureTableTag=e.tag,this.minCoord=e.Offset16,this.maxCoord=e.Offset16}},Yp=class{constructor(e){this.baseCoordFormat=e.uint16,this.coordinate=e.int16,this.baseCoordFormat===2&&(this.referenceGlyph=e.uint16,this.baseCoordPoint=e.uint16),this.baseCoordFormat===3&&(this.deviceTable=e.Offset16)}},Zp=Object.freeze({__proto__:null,BASE:Dp}),uu=class{constructor(e){this.classFormat=e.uint16,this.classFormat===1&&(this.startGlyphID=e.uint16,this.glyphCount=e.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.classFormat===2&&(this.classRangeCount=e.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(t=>new Xp(e)))}},Xp=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.class=e.uint16}},bo=class extends Be{constructor(e){super(e),this.coverageFormat=e.uint16,this.coverageFormat===1&&(this.glyphCount=e.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.coverageFormat===2&&(this.rangeCount=e.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(t=>new Kp(e)))}},Kp=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.startCoverageIndex=e.uint16}},Jp=class{constructor(e,t){this.table=e,this.parser=t,this.start=t.currentPosition,this.format=t.uint16,this.variationRegionListOffset=t.Offset32,this.itemVariationDataCount=t.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>t.Offset32)}},Qp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new uu(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new $p(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new tm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new uu(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new sm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Jp(r)}))}},$p=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,this.glyphCount=e.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16)}getPoint(e){return this.parser.currentPosition=this.start+this.attachPointOffsets[e],new em(this.parser)}},em=class{constructor(e){this.pointCount=e.uint16,this.pointIndices=[...new Array(this.pointCount)].map(t=>e.uint16)}},tm=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,Z(this,"coverage",()=>(e.currentPosition=this.start+this.coverageOffset,new bo(e))),this.ligGlyphCount=e.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(t=>e.Offset16)}getLigGlyph(e){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[e],new rm(this.parser)}},rm=class extends Be{constructor(e){super(e),this.caretCount=e.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(t=>e.Offset16)}getCaretValue(e){return this.parser.currentPosition=this.start+this.caretValueOffsets[e],new om(this.parser)}},om=class{constructor(e){this.caretValueFormat=e.uint16,this.caretValueFormat===1&&(this.coordinate=e.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=e.uint16),this.caretValueFormat===3&&(this.coordinate=e.int16,this.deviceOffset=e.Offset16)}},sm=class extends Be{constructor(e){super(e),this.markGlyphSetTableFormat=e.uint16,this.markGlyphSetCount=e.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(t=>e.Offset32)}getMarkGlyphSet(e){return this.parser.currentPosition=this.start+this.coverageOffsets[e],new bo(this.parser)}},nm=Object.freeze({__proto__:null,GDEF:Qp}),fu=class extends Be{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(e){super(e),this.scriptCount=e.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(t=>new am(e))}},am=class{constructor(e){this.scriptTag=e.tag,this.scriptOffset=e.Offset16}},im=class extends Be{constructor(e){super(e),this.defaultLangSys=e.Offset16,this.langSysCount=e.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(t=>new lm(e))}},lm=class{constructor(e){this.langSysTag=e.tag,this.langSysOffset=e.Offset16}},cu=class{constructor(e){this.lookupOrder=e.Offset16,this.requiredFeatureIndex=e.uint16,this.featureIndexCount=e.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(t=>e.uint16)}},du=class extends Be{static EMPTY={featureCount:0,featureRecords:[]};constructor(e){super(e),this.featureCount=e.uint16,this.featureRecords=[...new Array(this.featureCount)].map(t=>new um(e))}},um=class{constructor(e){this.featureTag=e.tag,this.featureOffset=e.Offset16}},fm=class extends Be{constructor(e){super(e),this.featureParams=e.Offset16,this.lookupIndexCount=e.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(t=>e.uint16)}getFeatureParams(){if(this.featureParams>0){let e=this.parser;e.currentPosition=this.start+this.featureParams;let t=this.featureTag;if(t==="size")return new dm(e);if(t.startsWith("cc"))return new cm(e);if(t.startsWith("ss"))return new pm(e)}}},cm=class{constructor(e){this.format=e.uint16,this.featUiLabelNameId=e.uint16,this.featUiTooltipTextNameId=e.uint16,this.sampleTextNameId=e.uint16,this.numNamedParameters=e.uint16,this.firstParamUiLabelNameId=e.uint16,this.charCount=e.uint16,this.character=[...new Array(this.charCount)].map(t=>e.uint24)}},dm=class{constructor(e){this.designSize=e.uint16,this.subfamilyIdentifier=e.uint16,this.subfamilyNameID=e.uint16,this.smallEnd=e.uint16,this.largeEnd=e.uint16}},pm=class{constructor(e){this.version=e.uint16,this.UINameID=e.uint16}};function yu(e){e.parser.currentPosition-=2,delete e.coverageOffset,delete e.getCoverageTable}var Fr=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.coverageOffset=e.Offset16}getCoverageTable(){let e=this.parser;return e.currentPosition=this.start+this.coverageOffset,new bo(e)}},Ln=class{constructor(e){this.glyphSequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},mm=class extends Fr{constructor(e){super(e),this.deltaGlyphID=e.int16}},hm=class extends Fr{constructor(e){super(e),this.sequenceCount=e.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(t=>e.Offset16)}getSequence(e){let t=this.parser;return t.currentPosition=this.start+this.sequenceOffsets[e],new gm(t)}},gm=class{constructor(e){this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},ym=class extends Fr{constructor(e){super(e),this.alternateSetCount=e.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(t=>e.Offset16)}getAlternateSet(e){let t=this.parser;return t.currentPosition=this.start+this.alternateSetOffsets[e],new vm(t)}},vm=class{constructor(e){this.glyphCount=e.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},bm=class extends Fr{constructor(e){super(e),this.ligatureSetCount=e.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(t=>e.Offset16)}getLigatureSet(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureSetOffsets[e],new wm(t)}},wm=class extends Be{constructor(e){super(e),this.ligatureCount=e.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(t=>e.Offset16)}getLigature(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureOffsets[e],new xm(t)}},xm=class{constructor(e){this.ligatureGlyph=e.uint16,this.componentCount=e.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(t=>e.uint16)}},Sm=class extends Fr{constructor(e){super(e),this.substFormat===1&&(this.subRuleSetCount=e.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.classDefOffset=e.Offset16,this.subClassSetCount=e.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(yu(this),this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new Ln(e)))}getSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.subRuleSetOffsets[e],new Cm(t)}getSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.subClassSetOffsets[e],new _m(t)}getCoverageTable(e){if(this.substFormat!==3&&!e)return super.getCoverageTable();if(!e)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let t=this.parser;return t.currentPosition=this.start+this.coverageOffsets[e],new bo(t)}},Cm=class extends Be{constructor(e){super(e),this.subRuleCount=e.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.subRuleOffsets[e],new vu(t)}},vu=class{constructor(e){this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(t=>e.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new Ln(e))}},_m=class extends Be{constructor(e){super(e),this.subClassRuleCount=e.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.subClassRuleOffsets[e],new Fm(t)}},Fm=class extends vu{constructor(e){super(e)}},km=class extends Fr{constructor(e){super(e),this.substFormat===1&&(this.chainSubRuleSetCount=e.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=e.Offset16,this.inputClassDefOffset=e.Offset16,this.lookaheadClassDefOffset=e.Offset16,this.chainSubClassSetCount=e.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(yu(this),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.inputGlyphCount=e.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.seqLookupCount=e.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(t=>new bu(e)))}getChainSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleSetOffsets[e],new Om(t)}getChainSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubClassSetOffsets[e],new Pm(t)}getCoverageFromOffset(e){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let t=this.parser;return t.currentPosition=this.start+e,new bo(t)}},Om=class extends Be{constructor(e){super(e),this.chainSubRuleCount=e.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new Tm(t)}},Tm=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(t=>new Ln(e))}},Pm=class extends Be{constructor(e){super(e),this.chainSubClassRuleCount=e.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new Am(t)}},Am=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new bu(e))}},bu=class extends Be{constructor(e){super(e),this.sequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},Rm=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.extensionLookupType=e.uint16,this.extensionOffset=e.Offset32}},Em=class extends Fr{constructor(e){super(e),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Im={buildSubtable:function(e,t){let r=new[void 0,mm,hm,ym,bm,Sm,km,Rm,Em][e](t);return r.type=e,r}},Yt=class extends Be{constructor(e){super(e)}},Lm=class extends Yt{constructor(e){super(e),console.log("lookup type 1")}},Bm=class extends Yt{constructor(e){super(e),console.log("lookup type 2")}},Vm=class extends Yt{constructor(e){super(e),console.log("lookup type 3")}},Nm=class extends Yt{constructor(e){super(e),console.log("lookup type 4")}},zm=class extends Yt{constructor(e){super(e),console.log("lookup type 5")}},Dm=class extends Yt{constructor(e){super(e),console.log("lookup type 6")}},Mm=class extends Yt{constructor(e){super(e),console.log("lookup type 7")}},jm=class extends Yt{constructor(e){super(e),console.log("lookup type 8")}},Gm=class extends Yt{constructor(e){super(e),console.log("lookup type 9")}},Um={buildSubtable:function(e,t){let r=new[void 0,Lm,Bm,Vm,Nm,zm,Dm,Mm,jm,Gm][e](t);return r.type=e,r}},pu=class extends Be{static EMPTY={lookupCount:0,lookups:[]};constructor(e){super(e),this.lookupCount=e.uint16,this.lookups=[...new Array(this.lookupCount)].map(t=>e.Offset16)}},Wm=class extends Be{constructor(e,t){super(e),this.ctType=t,this.lookupType=e.uint16,this.lookupFlag=e.uint16,this.subTableCount=e.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>e.Offset16),this.markFilteringSet=e.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(e){let t=this.ctType==="GSUB"?Im:Um;return this.parser.currentPosition=this.start+this.subtableOffsets[e],t.buildSubtable(this.lookupType,this.parser)}},wu=class extends pe{constructor(e,t,r){let{p:o,tableStart:s}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let n=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>n?fu.EMPTY:(o.currentPosition=s+this.scriptListOffset,new fu(o))),Z(this,"featureList",()=>n?du.EMPTY:(o.currentPosition=s+this.featureListOffset,new du(o))),Z(this,"lookupList",()=>n?pu.EMPTY:(o.currentPosition=s+this.lookupListOffset,new pu(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>n?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(e=>e.scriptTag)}getScriptTable(e){let t=this.scriptList.scriptRecords.find(o=>o.scriptTag===e);this.parser.currentPosition=this.scriptList.start+t.scriptOffset;let r=new im(this.parser);return r.scriptTag=e,r}ensureScriptTable(e){return typeof e=="string"?this.getScriptTable(e):e}getSupportedLangSys(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys!==0,r=e.langSysRecords.map(o=>o.langSysTag);return t&&r.unshift("dflt"),r}getDefaultLangSysTable(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys;if(t!==0){this.parser.currentPosition=e.start+t;let r=new cu(this.parser);return r.langSysTag="",r.defaultForScript=e.scriptTag,r}}getLangSysTable(e,t="dflt"){if(t==="dflt")return this.getDefaultLangSysTable(e);e=this.ensureScriptTable(e);let r=e.langSysRecords.find(s=>s.langSysTag===t);this.parser.currentPosition=e.start+r.langSysOffset;let o=new cu(this.parser);return o.langSysTag=t,o}getFeatures(e){return e.featureIndices.map(t=>this.getFeature(t))}getFeature(e){let t;if(parseInt(e)==e?t=this.featureList.featureRecords[e]:t=this.featureList.featureRecords.find(o=>o.featureTag===e),!t)return;this.parser.currentPosition=this.featureList.start+t.featureOffset;let r=new fm(this.parser);return r.featureTag=t.featureTag,r}getLookups(e){return e.lookupListIndices.map(t=>this.getLookup(t))}getLookup(e,t){let r=this.lookupList.lookups[e];return this.parser.currentPosition=this.lookupList.start+r,new Wm(this.parser,t)}},Hm=class extends wu{constructor(e,t){super(e,t,"GSUB")}getLookup(e){return super.getLookup(e,"GSUB")}},qm=Object.freeze({__proto__:null,GSUB:Hm}),Ym=class extends wu{constructor(e,t){super(e,t,"GPOS")}getLookup(e){return super.getLookup(e,"GPOS")}},Zm=Object.freeze({__proto__:null,GPOS:Ym}),Xm=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new Km(r)}},Km=class extends Be{constructor(e){super(e),this.numEntries=e.uint16,this.documentRecords=[...new Array(this.numEntries)].map(t=>new Jm(e))}getDocument(e){let t=this.documentRecords[e];if(!t)return"";let r=this.start+t.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(t.svgDocLength)}getDocumentForGlyph(e){let t=this.documentRecords.findIndex(r=>r.startGlyphID<=e&&e<=r.endGlyphID);return t===-1?"":this.getDocument(t)}},Jm=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.svgDocOffset=e.Offset32,this.svgDocLength=e.uint32}},Qm=Object.freeze({__proto__:null,SVG:Xm}),$m=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(n=>new eh(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let n=[];for(let a=0;a<this.instanceCount;a++)r.currentPosition=s+a*this.instanceSize,n.push(new th(r,this.axisCount,this.instanceSize));return n})}getSupportedAxes(){return this.axes.map(e=>e.tag)}getAxis(e){return this.axes.find(t=>t.tag===e)}},eh=class{constructor(e){this.tag=e.tag,this.minValue=e.fixed,this.defaultValue=e.fixed,this.maxValue=e.fixed,this.flags=e.flags(16),this.axisNameID=e.uint16}},th=class{constructor(e,t,r){let o=e.currentPosition;this.subfamilyNameID=e.uint16,e.uint16,this.coordinates=[...new Array(t)].map(s=>e.fixed),e.currentPosition-o<r&&(this.postScriptNameID=e.uint16)}},rh=Object.freeze({__proto__:null,fvar:$m}),oh=class extends pe{constructor(e,t){let{p:r}=super(e,t),o=e.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},sh=Object.freeze({__proto__:null,cvt:oh}),nh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},ah=Object.freeze({__proto__:null,fpgm:nh}),ih=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new lh(r)))}},lh=class{constructor(e){this.rangeMaxPPEM=e.uint16,this.rangeGaspBehavior=e.uint16}},uh=Object.freeze({__proto__:null,gasp:ih}),fh=class extends pe{constructor(e,t){super(e,t)}getGlyphData(e,t){return this.parser.currentPosition=this.tableStart+e,this.parser.readBytes(t)}},ch=Object.freeze({__proto__:null,glyf:fh}),dh=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(n=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(n=>o.Offset32))}getGlyphDataOffsetAndLength(e){let t=this.offsets[e]*this.x2?2:1,r=this.offsets[e+1]*this.x2?2:1;return{offset:t,length:r-t}}},ph=Object.freeze({__proto__:null,loca:dh}),mh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},hh=Object.freeze({__proto__:null,prep:mh}),gh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},yh=Object.freeze({__proto__:null,CFF:gh}),vh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},bh=Object.freeze({__proto__:null,CFF2:vh}),wh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new xh(r)))}},xh=class{constructor(e){this.glyphIndex=e.uint16,this.vertOriginY=e.int16}},Sh=Object.freeze({__proto__:null,VORG:wh}),Ch=class{constructor(e){this.indexSubTableArrayOffset=e.Offset32,this.indexTablesSize=e.uint32,this.numberofIndexSubTables=e.uint32,this.colorRef=e.uint32,this.hori=new cs(e),this.vert=new cs(e),this.startGlyphIndex=e.uint16,this.endGlyphIndex=e.uint16,this.ppemX=e.uint8,this.ppemY=e.uint8,this.bitDepth=e.uint8,this.flags=e.int8}},_h=class{constructor(e){this.hori=new cs(e),this.vert=new cs(e),this.ppemX=e.uint8,this.ppemY=e.uint8,this.substitutePpemX=e.uint8,this.substitutePpemY=e.uint8}},cs=class{constructor(e){this.ascender=e.int8,this.descender=e.int8,this.widthMax=e.uint8,this.caretSlopeNumerator=e.int8,this.caretSlopeDenominator=e.int8,this.caretOffset=e.int8,this.minOriginSB=e.int8,this.minAdvanceSB=e.int8,this.maxBeforeBL=e.int8,this.minAfterBL=e.int8,this.pad1=e.int8,this.pad2=e.int8}},xu=class extends pe{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new Ch(o)))}},Fh=Object.freeze({__proto__:null,EBLC:xu}),Su=class extends pe{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},kh=Object.freeze({__proto__:null,EBDT:Su}),Oh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new _h(r)))}},Th=Object.freeze({__proto__:null,EBSC:Oh}),Ph=class extends xu{constructor(e,t){super(e,t,"CBLC")}},Ah=Object.freeze({__proto__:null,CBLC:Ph}),Rh=class extends Su{constructor(e,t){super(e,t,"CBDT")}},Eh=Object.freeze({__proto__:null,CBDT:Rh}),Ih=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},Lh=Object.freeze({__proto__:null,sbix:Ih}),Bh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(e){let t=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=t;let r=new In(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let n=new In(this.parser),a=n.gID;if(o===e)return r;if(a===e)return n;for(;t!==s;){let l=t+(s-t)/12;this.parser.currentPosition=l;let h=new In(this.parser),f=h.gID;if(f===e)return h;f>e?s=l:f<e&&(t=l)}return!1}getLayers(e){let t=this.getBaseGlyphRecord(e);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*t.firstLayerIndex,[...new Array(t.numLayers)].map(r=>new Vh(p))}},In=class{constructor(e){this.gID=e.uint16,this.firstLayerIndex=e.uint16,this.numLayers=e.uint16}},Vh=class{constructor(e){this.gID=e.uint16,this.paletteIndex=e.uint16}},Nh=Object.freeze({__proto__:null,COLR:Bh}),zh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new Dh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new Mh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new jh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new Gh(r,o))))}},Dh=class{constructor(e){this.blue=e.uint8,this.green=e.uint8,this.red=e.uint8,this.alpha=e.uint8}},Mh=class{constructor(e,t){this.paletteTypes=[...new Array(t)].map(r=>e.uint32)}},jh=class{constructor(e,t){this.paletteLabels=[...new Array(t)].map(r=>e.uint16)}},Gh=class{constructor(e,t){this.paletteEntryLabels=[...new Array(t)].map(r=>e.uint16)}},Uh=Object.freeze({__proto__:null,CPAL:zh}),Wh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new Hh(r))}getData(e){let t=this.signatureRecords[e];return this.parser.currentPosition=this.tableStart+t.offset,new qh(this.parser)}},Hh=class{constructor(e){this.format=e.uint32,this.length=e.uint32,this.offset=e.Offset32}},qh=class{constructor(e){e.uint16,e.uint16,this.signatureLength=e.uint32,this.signature=e.readBytes(this.signatureLength)}},Yh=Object.freeze({__proto__:null,DSIG:Wh}),Zh=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(n=>new Xh(o,s))}},Xh=class{constructor(e,t){this.pixelSize=e.uint8,this.maxWidth=e.uint8,this.widths=e.readBytes(t)}},Kh=Object.freeze({__proto__:null,hdmx:Zh}),Jh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let n=0;n<this.nTables;n++){r.currentPosition=o;let a=new Qh(r);s.push(a),o+=a}return s})}},Qh=class{constructor(e){this.version=e.uint16,this.length=e.uint16,this.coverage=e.flags(8),this.format=e.uint8,this.format===0&&(this.nPairs=e.uint16,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(t=>new $h(e)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},$h=class{constructor(e){this.left=e.uint16,this.right=e.uint16,this.value=e.fword}},eg=Object.freeze({__proto__:null,kern:Jh}),tg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},rg=Object.freeze({__proto__:null,LTSH:tg}),og=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},sg=Object.freeze({__proto__:null,MERG:og}),ng=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new ag(this.tableStart,r))}},ag=class{constructor(e,t){this.tableStart=e,this.parser=t,this.tag=t.tag,this.dataOffset=t.Offset32,this.dataLength=t.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},ig=Object.freeze({__proto__:null,meta:ng}),lg=class extends pe{constructor(e,t){super(e,t),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},ug=Object.freeze({__proto__:null,PCLT:lg}),fg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new cg(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new dg(r))}},cg=class{constructor(e){this.bCharSet=e.uint8,this.xRatio=e.uint8,this.yStartRatio=e.uint8,this.yEndRatio=e.uint8}},dg=class{constructor(e){this.recs=e.uint16,this.startsz=e.uint8,this.endsz=e.uint8,this.records=[...new Array(this.recs)].map(t=>new pg(e))}},pg=class{constructor(e){this.yPelHeight=e.uint16,this.yMax=e.int16,this.yMin=e.int16}},mg=Object.freeze({__proto__:null,VDMX:fg}),hg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},gg=Object.freeze({__proto__:null,vhea:hg}),yg=class extends pe{constructor(e,t,r){super(e,t);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,n=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=n,[...new Array(o)].map(a=>new vg(p.uint16,p.int16)))),o<s){let a=n+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=a,[...new Array(s-o)].map(l=>p.int16)))}}},vg=class{constructor(e,t){this.advanceHeight=e,this.topSideBearing=t}},bg=Object.freeze({__proto__:null,vmtx:yg});var Cu=u(X(),1);var{kebabCase:wg}=ye(Cu.privateApis);function _u(e){let t=e.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:wg(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(t)}var gt=u(D(),1);function xg(){let{installFonts:e}=(0,wo.useContext)(lt),[t,r]=(0,wo.useState)(!1),[o,s]=(0,wo.useState)(null),n=g=>{l(g)},a=g=>{l(g.target.files)},l=async g=>{if(!g)return;s(null),r(!0);let y=new Set,T=[...g],O=!1,_=T.map(async b=>{if(!await f(b))return O=!0,null;if(y.has(b.name))return null;let q=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return Tn.includes(q)?(y.add(b.name),b):null}),S=(await Promise.all(_)).filter(b=>b!==null);if(S.length>0)h(S);else{let b=O?(0,Yr.__)("Sorry, you are not allowed to upload this file type."):(0,Yr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},h=async g=>{let y=await Promise.all(g.map(async T=>{let O=await d(T);return await tr(O,O.file,"all"),O}));m(y)};async function f(g){let y=new ds("Uploaded Font");try{let T=await c(g);return await y.fromDataBuffer(T,"font"),!0}catch{return!1}}async function c(g){return new Promise((y,T)=>{let O=new window.FileReader;O.readAsArrayBuffer(g),O.onload=()=>y(O.result),O.onerror=T})}let d=async g=>{let y=await c(g),T=new ds("Uploaded Font");T.fromDataBuffer(y,g.name);let _=(await new Promise($=>T.onload=$)).detail.font,{name:S}=_.opentype.tables,b=S.get(16)||S.get(1),P=S.get(2).toLowerCase().includes("italic"),q=_.opentype.tables["OS/2"].usWeightClass||"normal",N=!!_.opentype.tables.fvar&&_.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),W=N?`${N.minValue} ${N.maxValue}`:null;return{file:g,fontFamily:b,fontStyle:P?"italic":"normal",fontWeight:W||q}},m=async g=>{let y=_u(g);try{await e(y),s({type:"success",message:(0,Yr.__)("Fonts were installed successfully.")})}catch(T){let O=T;s({type:"error",message:O.message,errors:O?.installationErrors})}r(!1)};return(0,gt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,gt.jsx)(tt.DropZone,{onFilesDrop:n}),(0,gt.jsxs)(tt.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,gt.jsxs)(tt.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,gt.jsx)("ul",{children:o.errors.map((g,y)=>(0,gt.jsx)("li",{children:g},y))})]}),t&&(0,gt.jsx)(tt.FlexItem,{children:(0,gt.jsx)("div",{className:"font-library__upload-area",children:(0,gt.jsx)(tt.ProgressBar,{})})}),!t&&(0,gt.jsx)(tt.FormFileUpload,{accept:Tn.map(g=>`.${g}`).join(","),multiple:!0,onChange:a,render:({openFileDialog:g})=>(0,gt.jsx)(tt.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,Yr.__)("Upload font")})}),(0,gt.jsx)(tt.__experimentalText,{className:"font-library__upload-area__text",children:(0,Yr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ps=xg;var ku=u(D(),1),{Tabs:w6}=ye(Bn.privateApis),x6={id:"installed-fonts",title:(0,ms._x)("Library","Font library")},S6={id:"upload-fonts",title:(0,ms._x)("Upload","noun")};var Ou=u(ie(),1),Vn=u(X(),1),Cg=u(ve(),1);var Tu=u(D(),1);var Nn=u(D(),1);var Pu=u(ie(),1),hs=u(X(),1);var Au=u(D(),1);var Dn=u(D(),1);var At=u(ie(),1),Mn=u(X(),1),Rg=u(ve(),1);var Ru=u(it(),1);var Pg=u(D(),1),{useSettingsForBlockElement:Q6,TypographyPanel:$6}=ye(Ru.privateApis);var Ag=u(D(),1);var jn=u(D(),1),lC={text:{description:(0,At.__)("Manage the fonts used on the site."),title:(0,At.__)("Text")},link:{description:(0,At.__)("Manage the fonts and typography used on the links."),title:(0,At.__)("Links")},heading:{description:(0,At.__)("Manage the fonts and typography used on headings."),title:(0,At.__)("Headings")},caption:{description:(0,At.__)("Manage the fonts and typography used on captions."),title:(0,At.__)("Captions")},button:{description:(0,At.__)("Manage the fonts and typography used on buttons."),title:(0,At.__)("Buttons")}};var Bg=u(ie(),1),Vg=u(X(),1),Iu=u(it(),1);var Zr=u(X(),1),Eu=u(ie(),1);var Lg=u(ve(),1);var Eg=u(X(),1),Ig=u(D(),1);var Gn=u(D(),1);var Un=u(D(),1),{useSettingsForBlockElement:_C,ColorPanel:FC}=ye(Iu.privateApis);var Ug=u(ie(),1),Mu=u(X(),1);var Dg=u(pr(),1),Wn=u(X(),1),Mg=u(ie(),1);var ys=u(X(),1);var gs=u(X(),1);var Lu=u(D(),1);function Bu(){let{paletteColors:e}=zr();return e.slice(0,4).map(({slug:t,color:r},o)=>(0,Lu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${t}-${o}`))}var So=u(D(),1),Ng={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},zg=({label:e,isFocused:t,withHoverView:r})=>(0,So.jsx)(jr,{label:e,isFocused:t,withHoverView:r,children:({key:o})=>(0,So.jsx)(gs.__unstableMotion.div,{variants:Ng,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(gs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(Bu,{})})},o)}),Vu=zg;var kr=u(D(),1),Nu=["color"];function vs({title:e,gap:t=2}){let r=Uo(Nu);return r?.length<=1?null:(0,kr.jsxs)(ys.__experimentalVStack,{spacing:3,children:[e&&(0,kr.jsx)(St,{level:3,children:e}),(0,kr.jsx)(ys.__experimentalGrid,{gap:t,children:r.map((o,s)=>(0,kr.jsx)(Ur,{variation:o,isPill:!0,properties:Nu,showTooltip:!0,children:()=>(0,kr.jsx)(Vu,{})},s))})]})}var zu=u(D(),1);var jg=u(pr(),1),bs=u(X(),1),Gg=u(ie(),1);var Du=u(D(),1);var Hn=u(D(),1),{Tabs:KC}=ye(Mu.privateApis);var Hg=u(ie(),1),Gu=u(it(),1),qg=u(X(),1);var ju=u(it(),1);var Wg=u(D(),1);var{BackgroundPanel:e3}=ye(ju.privateApis);var qn=u(D(),1),{useHasBackgroundPanel:i3}=ye(Gu.privateApis);var Or=u(X(),1),Yn=u(ie(),1);var Jg=u(ve(),1);var Yg=u(X(),1),Zg=u(ie(),1),Xg=u(D(),1);var Zn=u(D(),1),{Menu:b3}=ye(Or.privateApis);var We=u(X(),1),Co=u(ie(),1);var ws=u(ve(),1);var Xn=u(D(),1),{Menu:L3}=ye(We.privateApis),B3=[{label:(0,Co.__)("Rename"),action:"rename"},{label:(0,Co.__)("Delete"),action:"delete"}],V3=[{label:(0,Co.__)("Reset"),action:"reset"}];var Qg=u(D(),1);var ty=u(ie(),1),Wu=u(it(),1);var Uu=u(it(),1),$g=u(ve(),1);var ey=u(D(),1),{useSettingsForBlockElement:H3,DimensionsPanel:q3}=ye(Uu.privateApis);var Kn=u(D(),1),{useHasDimensionsPanel:$3,useSettingsForBlockElement:e_}=ye(Wu.privateApis);var Ku=u(X(),1),ny=u(ie(),1);var oy=u(ie(),1),sy=u(X(),1);var Hu=u(wt(),1),qu=u(pt(),1),Ss=u(ve(),1),Yu=u(X(),1),Zu=u(ie(),1);var xs=u(D(),1);function ry({gap:e=2}){let{user:t}=(0,Ss.useContext)(Je),r=t?.styles,s=(0,qu.useSelect)(a=>{let l=a(Hu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(a=>!co(a,["color"])&&!co(a,["typography","spacing"])),n=(0,Ss.useMemo)(()=>[...[{title:(0,Zu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let h=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(m=>{if(r.blocks?.[m]?.css){let g=h[m]||{},y={css:`${h[m]?.css||""} ${r.blocks?.[m]?.css?.trim()||""}`};h[m]={...g,...y}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(h).length>0?{blocks:h}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,xs.jsx)(Yu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:e,children:n.map((a,l)=>(0,xs.jsx)(Ur,{variation:a,children:h=>(0,xs.jsx)(bn,{label:a?.title,withHoverView:!0,isFocused:h,variation:a})},l))})}var Jn=ry;var Xu=u(D(),1);var Qn=u(D(),1);var ay=u(ie(),1),iy=u(X(),1),Ju=u(it(),1);var $n=u(D(),1),{AdvancedPanel:v_}=ye(Ju.privateApis);var af=u(ie(),1),ta=u(X(),1),ra=u(ve(),1);var ly=u(pt(),1),uy=u(wt(),1),Qu=u(ve(),1);var tf=u(ie(),1),rf=u(X(),1),Cs=u(ef(),1),fy=u(wt(),1),cy=u(pt(),1);var of=u(kn(),1),sf=u(D(),1),C_=3600*1e3*24;var ea=u(X(),1),_o=u(ie(),1);var nf=u(D(),1);var oa=u(D(),1);var sa=u(ie(),1),Zt=u(X(),1);var gy=u(ve(),1);var py=u(X(),1),my=u(ie(),1),hy=u(D(),1);var na=u(D(),1),{Menu:W_}=ye(Zt.privateApis);var cf=u(ie(),1),Mt=u(X(),1);var df=u(ve(),1);var yy=u(it(),1),vy=u(ie(),1);var by=u(D(),1);var wy=u(X(),1),lf=u(ie(),1),xy=u(D(),1);var Fo=u(X(),1),Sy=u(ie(),1),Cy=u(ve(),1),uf=u(D(),1);var Xt=u(X(),1),ff=u(D(),1);var aa=u(D(),1),{Menu:l4}=ye(Mt.privateApis);var la=u(D(),1);var ua=u(D(),1);function Xr(e){return function({value:r,baseValue:o,onChange:s,...n}){return(0,ua.jsx)(fo,{value:r,baseValue:o,onChange:s,children:(0,ua.jsx)(e,{...n})})}}var Oy=Xr(Jn);var Ty=Xr(vs);var Py=Xr(Ko);var Kr=u(D(),1);function fa({value:e,baseValue:t,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Kr.jsx)(ps,{});break;case"installed-fonts":s=(0,Kr.jsx)(ss,{});break;default:s=(0,Kr.jsx)(as,{slug:o})}return(0,Kr.jsx)(fo,{value:e,baseValue:t,onChange:r,children:(0,Kr.jsx)($o,{children:s})})}var hf=u(Ws()),{unlock:ca}=(0,hf.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='7667192f29']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","7667192f29"),e.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(e)}var{Tabs:_s}=ca(gf.privateApis),{useGlobalStyles:Ay}=ca(yf.privateApis);function Ry(){let{records:e=[]}=(0,Fs.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[t,r]=(0,bf.useState)("installed-fonts"),{base:o,user:s,setUser:n,isReady:a}=Ay(),l=(0,vf.useSelect)(f=>f(Fs.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!a)return null;let h=[{id:"installed-fonts",title:(0,Jr._x)("Library","Font library")}];return l&&(h.push({id:"upload-fonts",title:(0,Jr._x)("Upload","noun")}),h.push(...(e||[]).map(({slug:f,name:c})=>({id:f,title:e&&e.length===1&&f==="google-fonts"?(0,Jr.__)("Install Fonts"):c})))),React.createElement(Qs,{title:(0,Jr.__)("Fonts"),className:"font-library-page"},React.createElement(_s,{selectedTabId:t,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(_s.TabList,null,h.map(({id:f,title:c})=>React.createElement(_s.Tab,{key:f,tabId:f},c)))),h.map(({id:f})=>React.createElement(_s.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(fa,{value:s,baseValue:o,onChange:n,activeTab:f})))))}function Ey(){return React.createElement(Ry,null)}var Iy=Ey;export{Iy as stage}; /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: From bbfb4d532c0e3c96b7cb48ad2464a0ae36fc8c3e Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Tue, 30 Jun 2026 01:38:23 +0000 Subject: [PATCH 276/327] General: Bump the pinned hash for Gutenberg to `v23.4.0`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the pinned commit hash of the Gutenberg repository from `14db4ab9395a9e96430eed678e4288a59eecbd15 ` (version `23.3.0`) to `14db4ab9395a9e96430eed678e4288a59eecbd15` (version `23.4.0`). A full list of changes included in this commit can be found on GitHub: https://github.com/WordPress/gutenberg/compare/v23.3.0..v23.4.0. The following commits are included: - Hide image dimension tools when a state is selected (https://github.com/WordPress/gutenberg/pull/78670) - Changed labels to consistently use Patterns in favor of Block patterns (https://github.com/WordPress/gutenberg/pull/56880) - Fix: Restrict parent page API search to post titles only (https://github.com/WordPress/gutenberg/pull/78683) - Update AGENTS.md to mention additional pitfalls: (https://github.com/WordPress/gutenberg/pull/78718) - Docs: Fix big_image_size_threshold xref typo (https://github.com/WordPress/gutenberg/pull/76299) - Compose: Fully deprecate the 'pure' HoC (https://github.com/WordPress/gutenberg/pull/78674) - Common CSS: avoid false-positive border-style on custom properties (https://github.com/WordPress/gutenberg/pull/77476) - Compose: Fix SSR crash in useMediaQuery and useViewportMatch (https://github.com/WordPress/gutenberg/pull/78725) - CI: Skip plugin repo release when SVN tag already exists (https://github.com/WordPress/gutenberg/pull/78476) - Dashboard: Hello Dolly (https://github.com/WordPress/gutenberg/pull/78648) - UI: `Tooltip.Provider` — forward upstream `closeDelay` and `timeout` props (https://github.com/WordPress/gutenberg/pull/78642) - Compose: Support React 19 ref callback cleanups in `useMergeRefs` (https://github.com/WordPress/gutenberg/pull/78685) - Add copilot-instructions.md file (https://github.com/WordPress/gutenberg/pull/78584) - Dashboard: show ghost widgets visually & allow easy removal (https://github.com/WordPress/gutenberg/pull/78502) - Bump fast-xml-builder from 1.0.0 to 1.2.0 (https://github.com/WordPress/gutenberg/pull/78272) - Bump actions/stale (https://github.com/WordPress/gutenberg/pull/78745) - Bump fast-xml-parser from 4.5.0 to 4.5.6 (https://github.com/WordPress/gutenberg/pull/77167) - Bump actions/github-script from 8.0.0 to 9.0.0 in /.github/workflows (https://github.com/WordPress/gutenberg/pull/78591) - @wordpress/theme: deduplicate addFallbackToVar helper (https://github.com/WordPress/gutenberg/pull/78666) - Add Combobox primitives (https://github.com/WordPress/gutenberg/pull/78399) - Editor: Fix keyboard activation of the template actions preview (https://github.com/WordPress/gutenberg/pull/78641) - Theme: drop `density` support from `@wordpress/theme` (https://github.com/WordPress/gutenberg/pull/78741) - Tooltip migration: fields + media-editor + media-fields + global-styles-ui (4/5) (https://github.com/WordPress/gutenberg/pull/78691) - List View: Expose block visibility label to assistive technology (https://github.com/WordPress/gutenberg/pull/78640) - Hide paragraph Drop cap control when a state is selected (https://github.com/WordPress/gutenberg/pull/78672) - Image cropper: round zoom control values and display as percentages (https://github.com/WordPress/gutenberg/pull/78757) - Media Editor Modal: Try placing the save and cancel buttons in the footer (https://github.com/WordPress/gutenberg/pull/78708) - Unset grid span defaults with viewport states enabled (https://github.com/WordPress/gutenberg/pull/78709) - Media Editor: Remove resize handles toggle from crop panel (https://github.com/WordPress/gutenberg/pull/78758) - Image Editor: focus return after closing image crop modal (https://github.com/WordPress/gutenberg/pull/78711) - Add dashboard Events widget (https://github.com/WordPress/gutenberg/pull/78553) - Writing flow: Delete at end of nested list item should merge into next block (https://github.com/WordPress/gutenberg/pull/78742) - RTC: Re-render collaborators overlay when the block tree changes (https://github.com/WordPress/gutenberg/pull/78636) - Dashboard: rename `widget-types` to `widget-primitives` and consolidate the widget contract (https://github.com/WordPress/gutenberg/pull/78749) - Fix Gutenberg plugin assuming its directory is named "gutenberg" (https://github.com/WordPress/gutenberg/pull/78705) - Codemods: Remove one-shot Tooltip migration codemod (https://github.com/WordPress/gutenberg/pull/78669) - Dashboard: rename `WidgetChrome` to `DashboardWidgetChrome` (https://github.com/WordPress/gutenberg/pull/78751) - Paragraph: Strip stale block-support classes from className during align attribute migration (https://github.com/WordPress/gutenberg/pull/78731) - Global Styles: Fix CSS not applying to Custom CSS textarea in Advanced panel (https://github.com/WordPress/gutenberg/pull/78773) - scripts: Use require.resolve for SVG loaders to fix pnpm compat (https://github.com/WordPress/gutenberg/pull/78777) - Post list: Remove close button from Quick Edit drawer (https://github.com/WordPress/gutenberg/pull/78730) - Revert "Gate client-side media processing as plugin-only (https://github.com/WordPress/gutenberg/pull/76700)" (https://github.com/WordPress/gutenberg/pull/76751) - Tooltip migration: boot consumers + shell-level Tooltip.Provider (5/5) (https://github.com/WordPress/gutenberg/pull/78692) - Dashboard: replace `surface` with `host` in widget contract docs (https://github.com/WordPress/gutenberg/pull/78778) - Shortcode block: Fix editor crash when selecting transform menu (https://github.com/WordPress/gutenberg/pull/78770) - Make `@wordpress/nux` a no-op compatibility package (https://github.com/WordPress/gutenberg/pull/77773) - Tests: Temporarily disable REST index output-format assertions (https://github.com/WordPress/gutenberg/pull/78788) - Hide Cover overlay controls for viewport states (https://github.com/WordPress/gutenberg/pull/78763) - Fix type of `$block_instance` parameter in `block_core_image_render_lightbox()` (https://github.com/WordPress/gutenberg/pull/78790) - TypeScript: Migrate server-side-render package to TS (https://github.com/WordPress/gutenberg/pull/71383) - feat: Migrate performance results to tools release (https://github.com/WordPress/gutenberg/pull/78761) - wp-build: Fix black flash on wp-admin pages before hydration (https://github.com/WordPress/gutenberg/pull/78493) - Icons: maintain absolute stroke-width regardless of icon-size (https://github.com/WordPress/gutenberg/pull/78774) - Dashboard: Use Howdy greeting for page title (https://github.com/WordPress/gutenberg/pull/78740) - Block Editor: Refactor Inserter to a function component (https://github.com/WordPress/gutenberg/pull/78766) - Dashboard: Move layout settings to customize toolbar (https://github.com/WordPress/gutenberg/pull/78738) - Build: update changelog (https://github.com/WordPress/gutenberg/pull/78807) - Icons: rename timeToRead to time (https://github.com/WordPress/gutenberg/pull/78804) - RTC: Prevent slower polling filters (https://github.com/WordPress/gutenberg/pull/78811) - Button.Icon: Fix clipped icons (https://github.com/WordPress/gutenberg/pull/78614) - Bump docker/login-action (https://github.com/WordPress/gutenberg/pull/78819) - RTC: Return forbidden rooms together (https://github.com/WordPress/gutenberg/pull/78748) - Update browserslist (https://github.com/WordPress/gutenberg/pull/78840) - Try allowing transforms to a variation of another block (https://github.com/WordPress/gutenberg/pull/78713) - Elements: Guard against non-string className in render filter (https://github.com/WordPress/gutenberg/pull/78841) - e2e-test-utils-playwright: add src to published NPM files (https://github.com/WordPress/gutenberg/pull/78847) - Editor: Refactor 'PostPublishButton' into function component (https://github.com/WordPress/gutenberg/pull/78737) - Dashboard: Promote WidgetRender into widget-primitives (https://github.com/WordPress/gutenberg/pull/78821) - Notes: Show default avatar in the indicator when user avatars are disabled (https://github.com/WordPress/gutenberg/pull/78849) - Revert "Icons: maintain absolute stroke-width regardless of icon-size (https://github.com/WordPress/gutenberg/pull/78774)" (https://github.com/WordPress/gutenberg/pull/78854) - Media: Send Document-Isolation-Policy header on the site preview frame (https://github.com/WordPress/gutenberg/pull/78404) - Revert navigation morph & playlist commits pushed directly to trunk (https://github.com/WordPress/gutenberg/pull/78857) - Fix Update button staying active when changes are reverted. (https://github.com/WordPress/gutenberg/pull/78567) - Docs: Fix and improve documentation (https://github.com/WordPress/gutenberg/pull/78686) - Abilities: Add validation tests pinning behavior for WP-specific schema keywords (https://github.com/WordPress/gutenberg/pull/78783) - Tools: migrate docs/tool into tools/docs workspace (https://github.com/WordPress/gutenberg/pull/78870) - Dashboard: Fix Add widget error on non-secure HTTP origins (https://github.com/WordPress/gutenberg/pull/78850) - Docs: Fix @wordpress/data README fragment links (https://github.com/WordPress/gutenberg/pull/78866) - bin: Remove obsolete bin/setup-local-env.sh (https://github.com/WordPress/gutenberg/pull/78871) - Boot navigation: wrap items in a list role for valid listitem semantics (https://github.com/WordPress/gutenberg/pull/78829) - wp-build: Document generated page hooks per WordPress standards. (https://github.com/WordPress/gutenberg/pull/78826) - Update CODEOWNERS for tooling directories (https://github.com/WordPress/gutenberg/pull/78874) - Block Visibility: Keep hide-everywhere working after a block opts out of visibility support (https://github.com/WordPress/gutenberg/pull/78780) - Dashboard: Replace grid row height controls with size presets. (https://github.com/WordPress/gutenberg/pull/78735) - Prevent font-size propagation in Navigation items causing `em` compounding (https://github.com/WordPress/gutenberg/pull/77419) - Media Editor Modal: Reorder details fields so the editable regular layout fields appear at the top (https://github.com/WordPress/gutenberg/pull/78792) - Fix media editor sidebar close button label (https://github.com/WordPress/gutenberg/pull/78895) - Dashboard: event widget iteration (https://github.com/WordPress/gutenberg/pull/78815) - Playlist Block: Add visualization style selector (https://github.com/WordPress/gutenberg/pull/76147) - [Content Types]: Fix extra Page padding causing vertical scrollbar (https://github.com/WordPress/gutenberg/pull/78661) - Remove migrated dependencies from root package.json (https://github.com/WordPress/gutenberg/pull/78813) - Packages: Declare missing `@types/react` dependency (https://github.com/WordPress/gutenberg/pull/78882) - Fix collapsed experiment cards not stretching to full width (https://github.com/WordPress/gutenberg/pull/78910) - Element: add polyfills for render, hydrate, unmountComponentAtNode (https://github.com/WordPress/gutenberg/pull/78899) - Revert "wp-build: Replace getter-based exports with data properties" (https://github.com/WordPress/gutenberg/pull/78917) - React: add ReactCurrentOwner polyfill (https://github.com/WordPress/gutenberg/pull/78923) - Fix playlist metadata edits recreating player (https://github.com/WordPress/gutenberg/pull/78876) - Media Editor: Fix sidebar overflowing the modal between the small and medium breakpoints (https://github.com/WordPress/gutenberg/pull/78931) - Media: Move client-side media compat file to wordpress-7.1 directory (https://github.com/WordPress/gutenberg/pull/78852) - env: Replace extract-zip with adm-zip to fix hang on Node 24.16 (https://github.com/WordPress/gutenberg/pull/78828) - Media Editor: refactor modal layout (https://github.com/WordPress/gutenberg/pull/78896) - Optimize wp-env source downloads with Git partial clones (https://github.com/WordPress/gutenberg/pull/78918) - Fix: Escape URLs in block render functions using `esc_url()` (https://github.com/WordPress/gutenberg/pull/78912) - Blocks: Allow the Login/out block as an inner block in the Navigation Submenu block (https://github.com/WordPress/gutenberg/pull/75497) - Fix sprintf format specifiers in post-date and read-more blocks (https://github.com/WordPress/gutenberg/pull/78933) - Refactor: Remove jest/test deps from root package.json (https://github.com/WordPress/gutenberg/pull/78801) - Upload Media: Add retry with exponential backoff and network resilience (https://github.com/WordPress/gutenberg/pull/76765) - Build Scripts: Fix Windows path handling in dev script (https://github.com/WordPress/gutenberg/pull/78939) - Revert React 19 upgrade (https://github.com/WordPress/gutenberg/pull/78940) - Fix: block auto-complete for AI API Keys in Connectors (https://github.com/WordPress/gutenberg/pull/78946) - Dashboard: Opinionated grid columns with container breakpoints (https://github.com/WordPress/gutenberg/pull/78732) - Skip including inactive or experimental routes when building for WordPress Core (https://github.com/WordPress/gutenberg/pull/76715) - RTC: Fix Yjs undo manager to update UI state when undo stack changes (https://github.com/WordPress/gutenberg/pull/78864) - Storybook: Enhance Theme Provider example with admin-ui Page. (https://github.com/WordPress/gutenberg/pull/78814) - RTC: Fix CRDT deferred updates resulting in jumbled typing (https://github.com/WordPress/gutenberg/pull/78756) - Add playlist track length setting (https://github.com/WordPress/gutenberg/pull/78954) - Add aspect ratio control to media editor mobile toolbar (https://github.com/WordPress/gutenberg/pull/78935) - Media Editor: Replace the zoom slider with +/- buttons (https://github.com/WordPress/gutenberg/pull/78928) - Use omit-unchanged for compressed-size-action (https://github.com/WordPress/gutenberg/pull/78976) - DataViewsPicker: Add a new `pickerActivity` layout (https://github.com/WordPress/gutenberg/pull/78941) - refactor: move babel dependencies to workspace configuration (https://github.com/WordPress/gutenberg/pull/78974) - feat: Migrate the browserlintrc file to `packages/postcss-plugins-preset` (https://github.com/WordPress/gutenberg/pull/78764) - Storybook: Declare workspace dependencies for theme example story. (https://github.com/WordPress/gutenberg/pull/78979) - Refactor: Move React dependencies from root to workspaces (https://github.com/WordPress/gutenberg/pull/78981) - UI: Update `@base-ui/react` to `1.5.0` (https://github.com/WordPress/gutenberg/pull/78448) - ui/AlertDialog: Fix footer layout style override (https://github.com/WordPress/gutenberg/pull/78953) - Font Library: Fix focus issue when navigating (https://github.com/WordPress/gutenberg/pull/78671) - Docs: Auto-generate per-block API reference pages from block.json (https://github.com/WordPress/gutenberg/pull/77612) - Patterns: fix focus loss when dismissing Create pattern dialog (https://github.com/WordPress/gutenberg/pull/78957) - Show media upload progress in a snackbar (https://github.com/WordPress/gutenberg/pull/77249) - Upload Media: Gate very large images out of client-side processing (https://github.com/WordPress/gutenberg/pull/78949) - Media: Add UltraHDR (ISO 21496-1) gain map support (https://github.com/WordPress/gutenberg/pull/74873) - Site Editor: Apply the user's admin color scheme (https://github.com/WordPress/gutenberg/pull/78397) - Navigation Link: fix duplicate block html attributes in editor (https://github.com/WordPress/gutenberg/pull/78973) - Added Missing Global Documentation (https://github.com/WordPress/gutenberg/pull/78997) - Post Revisions: Upgrade `diff` from v4 to v8 (https://github.com/WordPress/gutenberg/pull/77992) - Theme: Increase stroke1 contrast target to 2.9 (https://github.com/WordPress/gutenberg/pull/77599) - Tooltip: Use md border radius for portaled popups. (https://github.com/WordPress/gutenberg/pull/78983) - Framework: Remove invalid stale nested npm package references (https://github.com/WordPress/gutenberg/pull/79014) - Theme package: Add element size design tokens (https://github.com/WordPress/gutenberg/pull/76545) - Inserter: use forwardRef for refs (https://github.com/WordPress/gutenberg/pull/79006) - RTC: Add separate doc persistence endpoint (https://github.com/WordPress/gutenberg/pull/78891) - DataViews: Add DataViews components to components manifest (https://github.com/WordPress/gutenberg/pull/78960) - Media Editor: Keep crop handles operable on large images (https://github.com/WordPress/gutenberg/pull/79011) - Media editor: tweak paddings and margins (https://github.com/WordPress/gutenberg/pull/79009) - Media Editor: Remove lag when toggling the sidebar (https://github.com/WordPress/gutenberg/pull/79024) - Elements: Align class name parsing with custom CSS implementation (https://github.com/WordPress/gutenberg/pull/79023) - CI: Suppress lint:js warnings on static checks (https://github.com/WordPress/gutenberg/pull/79025) - Remove React Native implementation, framework, and dependencies (https://github.com/WordPress/gutenberg/pull/78747) - e2e-test-utils-playwright: start transpiling again, but faster (https://github.com/WordPress/gutenberg/pull/79026) - CI: Remove Validate Gradle Wrapper workflow (https://github.com/WordPress/gutenberg/pull/79030) - Remove dead native code branches from Platform usages (https://github.com/WordPress/gutenberg/pull/79031) - Remove orphaned README files for deleted native-only components (https://github.com/WordPress/gutenberg/pull/79035) - Remove orphaned mobile bug report issue template (https://github.com/WordPress/gutenberg/pull/79038) - Inserter: Fix error being thrown for spoken message when inserting default/direct block (https://github.com/WordPress/gutenberg/pull/79004) - Editor: Remove dead native guard in block removal warnings (https://github.com/WordPress/gutenberg/pull/79039) - Preserve nested list when deleting a selection across sibling list items (https://github.com/WordPress/gutenberg/pull/78776) - Remove platform-docs Docusaurus site (https://github.com/WordPress/gutenberg/pull/79034) - Align dependency versions across workspaces (https://github.com/WordPress/gutenberg/pull/77954) - RichText: Remove dead native-only prop filtering (https://github.com/WordPress/gutenberg/pull/79037) - Navigable Container: Hoist getFocusableContext out of the component (https://github.com/WordPress/gutenberg/pull/79029) - Tools: Lint dependency version consistency with Syncpack (https://github.com/WordPress/gutenberg/pull/77950) - Extract entity view config into a filterable API (https://github.com/WordPress/gutenberg/pull/78977) - Rich text: use subscribeDelegatedListener for element event listeners (https://github.com/WordPress/gutenberg/pull/79047) - theme/ThemeProvider: rename `color.bg` prop to `color.background` (https://github.com/WordPress/gutenberg/pull/79007) - Format Library: Migrate to recommended `@wordpress/ui` components (https://github.com/WordPress/gutenberg/pull/79059) - Syncpack: ban `classnames` from being reintroduced (https://github.com/WordPress/gutenberg/pull/79061) - UI: Update CSS cascade layers to use nesting (https://github.com/WordPress/gutenberg/pull/78959) - Docs: Remove stale mobile references from tooling and primitives docs (https://github.com/WordPress/gutenberg/pull/79041) - Release: Drop mobile-specific changelog omit rules (https://github.com/WordPress/gutenberg/pull/79042) - Bump actions/checkout (https://github.com/WordPress/gutenberg/pull/79033) - `ColorPalette`: don't render when custom colors disabled and no colors passed (https://github.com/WordPress/gutenberg/pull/72402) - Bump minimatch and lerna (https://github.com/WordPress/gutenberg/pull/76750) - Image block: don't show crop icon while image is uploading (https://github.com/WordPress/gutenberg/pull/79103) - Add React 19 as an experimental flag (https://github.com/WordPress/gutenberg/pull/79077) - Media modal: small tweak to gutters (https://github.com/WordPress/gutenberg/pull/79168) - Add more React internals polyfills (https://github.com/WordPress/gutenberg/pull/79142) - Media editor modal: Fix keyboard resizing for locked aspect-ratio crops (https://github.com/WordPress/gutenberg/pull/79207) - Fix responsive element styles front end output (https://github.com/WordPress/gutenberg/pull/79135) (https://github.com/WordPress/gutenberg/pull/79215) Props adamsilverstein, jorbin, westonruter, wildworks. Fixes #65368. git-svn-id: https://develop.svn.wordpress.org/trunk@62584 602fd350-edb4-49c9-b593-d223f7449a82 --- package.json | 2 +- .../assets/script-loader-packages.php | 141 +- .../assets/script-modules-packages.php | 12 +- src/wp-includes/blocks/home-link.php | 18 +- src/wp-includes/blocks/image.php | 8 +- src/wp-includes/blocks/navigation-link.php | 16 +- .../shared/build-css-font-sizes.php | 43 - src/wp-includes/blocks/navigation-submenu.php | 18 +- src/wp-includes/blocks/page-list.php | 18 +- src/wp-includes/blocks/post-author-name.php | 2 +- src/wp-includes/blocks/post-date.php | 2 +- .../blocks/post-featured-image.php | 2 +- src/wp-includes/blocks/read-more.php | 4 +- src/wp-includes/build/constants.php | 2 +- src/wp-includes/build/pages.php | 10 - .../pages/font-library/page-wp-admin.php | 6 +- .../build/pages/font-library/page.php | 28 +- .../options-connectors/page-wp-admin.php | 6 +- .../build/pages/options-connectors/page.php | 28 +- src/wp-includes/build/routes.php | 95 - .../build/routes/connectors-home/content.js | 2660 +++-- .../connectors-home/content.min.asset.php | 2 +- .../routes/connectors-home/content.min.js | 2 +- .../build/routes/font-list/content.js | 9837 +++++++++++++++-- .../routes/font-list/content.min.asset.php | 2 +- .../build/routes/font-list/content.min.js | 32 +- src/wp-includes/build/routes/registry.php | 63 - .../{time-to-read.svg => time.svg} | 0 28 files changed, 10594 insertions(+), 2465 deletions(-) delete mode 100644 src/wp-includes/blocks/navigation-link/shared/build-css-font-sizes.php rename src/wp-includes/images/icon-library/{time-to-read.svg => time.svg} (100%) diff --git a/package.json b/package.json index cc7422d42ef1b..3c93ef37f8c27 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://develop.svn.wordpress.org/trunk" }, "gutenberg": { - "sha": "14db4ab9395a9e96430eed678e4288a59eecbd15", + "sha": "98a796c8780c480ef7bcfe03c42302d9564d785c", "ghcrRepo": "WordPress/gutenberg/gutenberg-wp-develop-build" }, "engines": { diff --git a/src/wp-includes/assets/script-loader-packages.php b/src/wp-includes/assets/script-loader-packages.php index 68eb83ca50259..4d71779a88fce 100644 --- a/src/wp-includes/assets/script-loader-packages.php +++ b/src/wp-includes/assets/script-loader-packages.php @@ -4,7 +4,7 @@ 'wp-dom-ready', 'wp-i18n' ), - 'version' => 'fcf6721cc81dbcc7cb4c' + 'version' => '483af07a6016f640f456' ), 'annotations.js' => array( 'dependencies' => array( @@ -13,7 +13,7 @@ 'wp-i18n', 'wp-rich-text' ), - 'version' => '4890cce18af9c7b2cff7' + 'version' => 'd4fe1eeb787c2fd5ee89' ), 'api-fetch.js' => array( 'dependencies' => array( @@ -21,25 +21,25 @@ 'wp-private-apis', 'wp-url' ), - 'version' => '908b760f8cecb1dac3e2' + 'version' => 'b5b51750518787a93005' ), 'autop.js' => array( 'dependencies' => array( ), - 'version' => '8bcfa39099f75174e47f' + 'version' => '9d0d0901b46f0a9027c9' ), 'base-styles.js' => array( 'dependencies' => array( ), - 'version' => '534d03c4d98549e6f3ac' + 'version' => '8ebe97b095beb7e9279b' ), 'blob.js' => array( 'dependencies' => array( ), - 'version' => '36f5095d3e75fc266d24' + 'version' => '198af75fe06d924090d8' ), 'block-directory.js' => array( 'dependencies' => array( @@ -66,7 +66,7 @@ 'wp-theme', 'wp-url' ), - 'version' => 'e3668608ce66d220bdba' + 'version' => '13f742bc0bd8d649c08c' ), 'block-editor.js' => array( 'dependencies' => array( @@ -104,7 +104,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '8734d6b886270cd24cb1' + 'version' => '037b9686399884c08637' ), 'block-library.js' => array( 'dependencies' => array( @@ -149,19 +149,19 @@ 'import' => 'dynamic' ) ), - 'version' => 'f4ce0374a285364d8e28' + 'version' => 'bdc2f643328b35920a52' ), 'block-serialization-default-parser.js' => array( 'dependencies' => array( ), - 'version' => '9f925ec37fe0ec021ac2' + 'version' => 'bff55bd3f1ce9df0c99c' ), 'block-serialization-spec-parser.js' => array( 'dependencies' => array( ), - 'version' => '23146319d073f10647ab' + 'version' => '9ebc5e95e1de1cabd1e6' ), 'blocks.js' => array( 'dependencies' => array( @@ -182,7 +182,7 @@ 'wp-shortcode', 'wp-warning' ), - 'version' => 'f4a5cd2440113e1f29d1' + 'version' => '99de01fa6d78aee022f4' ), 'commands.js' => array( 'dependencies' => array( @@ -198,7 +198,7 @@ 'wp-primitives', 'wp-private-apis' ), - 'version' => '28baf08aaedb912f7881' + 'version' => '8b8663311faa33540c1b' ), 'components.js' => array( 'dependencies' => array( @@ -223,7 +223,7 @@ 'wp-theme', 'wp-warning' ), - 'version' => '4e3661d1128d5fbe846c' + 'version' => '693c237ae4066b1676f5' ), 'compose.js' => array( 'dependencies' => array( @@ -238,7 +238,7 @@ 'wp-private-apis', 'wp-undo-manager' ), - 'version' => 'd2b32325fa3cd394f20a' + 'version' => 'e234bbf2606001a9cdd3' ), 'core-commands.js' => array( 'dependencies' => array( @@ -255,7 +255,7 @@ 'wp-router', 'wp-url' ), - 'version' => 'adfb03e72a6284e81a0a' + 'version' => 'c387d70a2b85c37011a2' ), 'core-data.js' => array( 'dependencies' => array( @@ -276,7 +276,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '34cc32ede754e650311c' + 'version' => '526e825884ff5026978a' ), 'customize-widgets.js' => array( 'dependencies' => array( @@ -305,7 +305,7 @@ 'wp-theme', 'wp-widgets' ), - 'version' => 'c7699f8b9a9b894aa44f' + 'version' => '0c48982a1d300208f58b' ), 'data.js' => array( 'dependencies' => array( @@ -318,7 +318,7 @@ 'wp-private-apis', 'wp-redux-routine' ), - 'version' => '1e1f56991c684ecfa9b5' + 'version' => '17619b19747bc3be28d6' ), 'data-controls.js' => array( 'dependencies' => array( @@ -326,32 +326,32 @@ 'wp-data', 'wp-deprecated' ), - 'version' => '7c5523ccc35ca51b1612' + 'version' => '730061ade69d7f341014' ), 'date.js' => array( 'dependencies' => array( 'moment', 'wp-deprecated' ), - 'version' => '56c0df1810475be9c003' + 'version' => '2faaf49020b2074de156' ), 'deprecated.js' => array( 'dependencies' => array( 'wp-hooks' ), - 'version' => '039c87cfdc49dc9ebaee' + 'version' => '990e85f234fee8f7d446' ), 'dom.js' => array( 'dependencies' => array( 'wp-deprecated' ), - 'version' => '9c9013033c069dba635b' + 'version' => 'ea68e9ed0a44f0e21a67' ), 'dom-ready.js' => array( 'dependencies' => array( ), - 'version' => '2109e6d8d6b85110c2e1' + 'version' => 'a06281ae5cf5500e9317' ), 'edit-post.js' => array( 'dependencies' => array( @@ -395,7 +395,7 @@ 'import' => 'static' ) ), - 'version' => 'bf8943e7dfdd79e59fd6' + 'version' => 'f8f08bd1bcba533df3b2' ), 'edit-site.js' => array( 'dependencies' => array( @@ -444,7 +444,7 @@ 'import' => 'static' ) ), - 'version' => '7b6145d7696dd4b09737' + 'version' => 'e548ea6abc3fd2dd3ad3' ), 'edit-widgets.js' => array( 'dependencies' => array( @@ -485,7 +485,7 @@ 'import' => 'static' ) ), - 'version' => 'faa74e652cf98a61859c' + 'version' => '0a7901ee8e8f8c17db97' ), 'editor.js' => array( 'dependencies' => array( @@ -535,22 +535,21 @@ 'import' => 'static' ) ), - 'version' => '297c4f04ae33b54955ca' + 'version' => '75814498d4961e5d6e62' ), 'element.js' => array( 'dependencies' => array( 'react', 'react-dom', - 'wp-deprecated', 'wp-escape-html' ), - 'version' => '94fbaad7527a82fadfdb' + 'version' => 'ce395381f7d64d2a6d71' ), 'escape-html.js' => array( 'dependencies' => array( ), - 'version' => 'f6c90ca9eb0b2ade8525' + 'version' => '3f093e5cca67aa0f8b56' ), 'format-library.js' => array( 'dependencies' => array( @@ -577,31 +576,31 @@ 'import' => 'dynamic' ) ), - 'version' => '5eddf2ad1f670af962a7' + 'version' => '89b2dd6a55cd5242fe1f' ), 'hooks.js' => array( 'dependencies' => array( ), - 'version' => 'ba8576df586de61e43dd' + 'version' => '7496969728ca0f95732d' ), 'html-entities.js' => array( 'dependencies' => array( ), - 'version' => '6639fe16c26bf584092a' + 'version' => '8c6fa5b869dfeadc4af2' ), 'i18n.js' => array( 'dependencies' => array( 'wp-hooks' ), - 'version' => 'cf342c5f7668cb788dd6' + 'version' => '125448662852c5e18937' ), 'is-shallow-equal.js' => array( 'dependencies' => array( ), - 'version' => 'c10573b39b145ad52de8' + 'version' => '5d84b9f3cb50d2ce7d04' ), 'keyboard-shortcuts.js' => array( 'dependencies' => array( @@ -610,13 +609,13 @@ 'wp-element', 'wp-keycodes' ), - 'version' => '692235325fdbc6b7827a' + 'version' => '0dd268b2132a3f82b1d4' ), 'keycodes.js' => array( 'dependencies' => array( 'wp-i18n' ), - 'version' => '03c771bccf8cd94e7bf2' + 'version' => 'aa1a141e3468afe7f852' ), 'list-reusable-blocks.js' => array( 'dependencies' => array( @@ -628,7 +627,7 @@ 'wp-element', 'wp-i18n' ), - 'version' => '823632e44c0d5da68907' + 'version' => 'a44da9be02cdfef6e44d' ), 'media-utils.js' => array( 'dependencies' => array( @@ -655,7 +654,7 @@ 'wp-url', 'wp-warning' ), - 'version' => '8779c2f40074e16799fd' + 'version' => 'af846400ee8d1416963e' ), 'notices.js' => array( 'dependencies' => array( @@ -663,20 +662,14 @@ 'wp-components', 'wp-data' ), - 'version' => '917351f71ee3fe2cb31e' + 'version' => '505026883bbd05994872' ), 'nux.js' => array( 'dependencies' => array( - 'react-jsx-runtime', - 'wp-components', - 'wp-compose', 'wp-data', - 'wp-deprecated', - 'wp-element', - 'wp-i18n', - 'wp-primitives' + 'wp-deprecated' ), - 'version' => 'cb03c4a931dadcb071ad' + 'version' => 'b0afe722eacfd6e9a364' ), 'patterns.js' => array( 'dependencies' => array( @@ -696,7 +689,7 @@ 'wp-private-apis', 'wp-url' ), - 'version' => 'e1bf4bcb6c8368a1e201' + 'version' => 'e1c72298432c2ca51343' ), 'plugins.js' => array( 'dependencies' => array( @@ -708,7 +701,7 @@ 'wp-is-shallow-equal', 'wp-primitives' ), - 'version' => '5593b4af0066d1e56545' + 'version' => 'fb81afeb7c472b9fb513' ), 'preferences.js' => array( 'dependencies' => array( @@ -724,32 +717,32 @@ 'wp-primitives', 'wp-private-apis' ), - 'version' => '4770913d33bab775d31d' + 'version' => '918930601e250eee727e' ), 'preferences-persistence.js' => array( 'dependencies' => array( 'wp-api-fetch' ), - 'version' => 'c02ed55f24a03cff856f' + 'version' => 'e8033be98338d1861bca' ), 'primitives.js' => array( 'dependencies' => array( 'react-jsx-runtime', 'wp-element' ), - 'version' => 'feacea34d534e03dfe7b' + 'version' => 'a5c905ec27bcd76ef287' ), 'priority-queue.js' => array( 'dependencies' => array( ), - 'version' => '6249843c310fb0f4c2d5' + 'version' => '1f0e89e247bc0bd3f9b9' ), 'private-apis.js' => array( 'dependencies' => array( ), - 'version' => '8571ef20e035b1194567' + 'version' => 'db306a8644da6d3146ac' ), 'react-i18n.js' => array( 'dependencies' => array( @@ -757,13 +750,13 @@ 'wp-element', 'wp-i18n' ), - 'version' => 'c8381a0f1b9c8f4c16e2' + 'version' => '9b74577dbd7e50f6b77b' ), 'redux-routine.js' => array( 'dependencies' => array( ), - 'version' => '5c06ff6ae58b95bd35b1' + 'version' => '64f9f5001aabc046c605' ), 'reusable-blocks.js' => array( 'dependencies' => array( @@ -779,7 +772,7 @@ 'wp-primitives', 'wp-url' ), - 'version' => '845bf300466d158d6590' + 'version' => '372c845659b9a298e4fb' ), 'rich-text.js' => array( 'dependencies' => array( @@ -794,7 +787,7 @@ 'wp-keycodes', 'wp-private-apis' ), - 'version' => '903b225e25e9ebe0b950' + 'version' => 'da75f56985c87415ce86' ), 'router.js' => array( 'dependencies' => array( @@ -804,7 +797,7 @@ 'wp-private-apis', 'wp-url' ), - 'version' => '3aedf56b85f9bd271c2a' + 'version' => '0249e6724784b1c2583b' ), 'server-side-render.js' => array( 'dependencies' => array( @@ -818,19 +811,19 @@ 'wp-i18n', 'wp-url' ), - 'version' => 'ab9bb82bd793d93e0357' + 'version' => '48cee6850e8be3502509' ), 'shortcode.js' => array( 'dependencies' => array( ), - 'version' => 'a3ab4684e676fce66298' + 'version' => '11742fe18cc215d3d5ab' ), 'style-engine.js' => array( 'dependencies' => array( ), - 'version' => '22d526c0e640775bff61' + 'version' => '10a88969c2fbccc89f91' ), 'sync.js' => array( 'dependencies' => array( @@ -838,7 +831,7 @@ 'wp-hooks', 'wp-private-apis' ), - 'version' => 'b63f7b87a251db85fd94' + 'version' => 'eec01499761de7c20440' ), 'theme.js' => array( 'dependencies' => array( @@ -846,19 +839,19 @@ 'wp-element', 'wp-private-apis' ), - 'version' => 'd7dfbaed0fa14cf69398' + 'version' => '6a8c2c1a082df70216ad' ), 'token-list.js' => array( 'dependencies' => array( ), - 'version' => '8269785404c75dcfbc85' + 'version' => '16f0aebdd39d87c2a84b' ), 'undo-manager.js' => array( 'dependencies' => array( 'wp-is-shallow-equal' ), - 'version' => '1c629dcc3969852bf08f' + 'version' => '27bb0ae036a2c9d4a1b5' ), 'upload-media.js' => array( 'dependencies' => array( @@ -877,13 +870,13 @@ 'import' => 'dynamic' ) ), - 'version' => '8fdb1414fce1fa61de7e' + 'version' => 'c3362866e191c81cdc90' ), 'url.js' => array( 'dependencies' => array( ), - 'version' => '9f8919f385a1393af24d' + 'version' => '9dd5f16a5ce37bf4ba2c' ), 'viewport.js' => array( 'dependencies' => array( @@ -891,13 +884,13 @@ 'wp-data', 'wp-element' ), - 'version' => '75c93ee6116afdc602fd' + 'version' => '83b39beb77dcc56c4d26' ), 'warning.js' => array( 'dependencies' => array( ), - 'version' => '7398c7f00cc7d8469e22' + 'version' => '36fdbdc984d93aee8a97' ), 'widgets.js' => array( 'dependencies' => array( @@ -914,12 +907,12 @@ 'wp-notices', 'wp-primitives' ), - 'version' => '3bdcff96f81157b799e1' + 'version' => '3ab93e442c755a6b2b4e' ), 'wordcount.js' => array( 'dependencies' => array( ), - 'version' => 'dfb0120218281ee827f8' + 'version' => '3b928d5db8724a8614dd' ) ); \ No newline at end of file diff --git a/src/wp-includes/assets/script-modules-packages.php b/src/wp-includes/assets/script-modules-packages.php index 3f49e7b23ab16..927010b7128d6 100644 --- a/src/wp-includes/assets/script-modules-packages.php +++ b/src/wp-includes/assets/script-modules-packages.php @@ -88,7 +88,7 @@ 'import' => 'static' ) ), - 'version' => '1ecf748f10b95c76b349' + 'version' => '3440d5367efaa2741a5b' ), 'block-library/query/view.js' => array( 'dependencies' => array( @@ -166,7 +166,7 @@ 'import' => 'static' ) ), - 'version' => '7b98331334f7756a5210' + 'version' => 'ee45059f83b6c49290ed' ), 'connectors/index.js' => array( 'dependencies' => array( @@ -177,7 +177,7 @@ 'wp-i18n', 'wp-private-apis' ), - 'version' => 'dce5e2b0fc240815717b' + 'version' => '753a649aa400199df0fd' ), 'content-types/index.js' => array( 'dependencies' => array( @@ -212,7 +212,7 @@ 'import' => 'static' ) ), - 'version' => '5fde95653aecf285d659' + 'version' => 'b022ce0e97e0c8c91ce3' ), 'core-abilities/index.js' => array( 'dependencies' => array( @@ -240,7 +240,7 @@ 'import' => 'static' ) ), - 'version' => '3e9b6e117adbaf70a10f' + 'version' => '03b5e26742d2806990c6' ), 'interactivity/index.js' => array( 'dependencies' => array( @@ -335,7 +335,7 @@ 'dependencies' => array( ), - 'version' => '7ba90481a9cc1776ce7a' + 'version' => '4972ce7ba840491f17bb' ), 'workflow/index.js' => array( 'dependencies' => array( diff --git a/src/wp-includes/blocks/home-link.php b/src/wp-includes/blocks/home-link.php index beab1e7b9f011..48c4b5b191807 100644 --- a/src/wp-includes/blocks/home-link.php +++ b/src/wp-includes/blocks/home-link.php @@ -5,8 +5,6 @@ * @package WordPress */ -require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; - /** * Build an array with CSS classes and inline styles defining the colors * which will be applied to the home link markup in the front-end. @@ -70,22 +68,12 @@ function block_core_home_link_build_css_colors( $context ) { * @return string The li wrapper attributes. */ function block_core_home_link_build_li_wrapper_attributes( $context ) { - $colors = block_core_home_link_build_css_colors( $context ); - // The build system prefixes this function with "gutenberg_" to avoid - // collisions with the core version. Until this function is backported to - // core, we need to guard it's use and only call the prefixed name in - // the plugin. - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { - $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $context ); - } else { - $font_sizes = block_core_shared_navigation_build_css_font_sizes( $context ); - } + $colors = block_core_home_link_build_css_colors( $context ); $classes = array_merge( - $colors['css_classes'], - $font_sizes['css_classes'] + $colors['css_classes'] ); - $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); + $style_attribute = ( $colors['inline_styles'] ); $classes[] = 'wp-block-navigation-item'; if ( is_front_page() ) { diff --git a/src/wp-includes/blocks/image.php b/src/wp-includes/blocks/image.php index cedd35abc1d88..5aa42bb48ab98 100644 --- a/src/wp-includes/blocks/image.php +++ b/src/wp-includes/blocks/image.php @@ -171,13 +171,13 @@ function block_core_image_get_lightbox_settings( $block ) { * * @since 6.4.0 * - * @param string $block_content Rendered block content. - * @param array $block Block object. - * @param array $block_instance Block instance. + * @param string $block_content Rendered block content. + * @param array $block Block object. + * @param WP_Block $block_instance Block instance. * * @return string Filtered block content. */ -function block_core_image_render_lightbox( $block_content, $block, $block_instance ) { +function block_core_image_render_lightbox( $block_content, array $block, WP_Block $block_instance ) { /* * If there's no IMG tag in the block then return the given block content * as-is. There's nothing that this code can knowingly modify to add the diff --git a/src/wp-includes/blocks/navigation-link.php b/src/wp-includes/blocks/navigation-link.php index f92a2ff344e50..6a1cfb9918873 100644 --- a/src/wp-includes/blocks/navigation-link.php +++ b/src/wp-includes/blocks/navigation-link.php @@ -7,7 +7,6 @@ require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; -require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; /** * Build an array with CSS classes and inline styles defining the colors @@ -138,19 +137,7 @@ function render_block_core_navigation_link( $attributes, $content, $block ) { return ''; } - // The build system prefixes this function with "gutenberg_" to avoid - // collisions with the core version. Until this function is backported to - // core, we need to guard its use and only call the prefixed name in - // the plugin. - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { - $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $block->context ); - } else { - $font_sizes = block_core_shared_navigation_build_css_font_sizes( $block->context ); - } - $classes = array_merge( - $font_sizes['css_classes'] - ); - $style_attribute = $font_sizes['inline_styles']; + $classes = array(); // Render inner blocks first to check if any menu items will actually display. $inner_blocks_html = ''; @@ -174,7 +161,6 @@ function render_block_core_navigation_link( $attributes, $content, $block ) { array( 'class' => $css_classes . ' wp-block-navigation-item' . ( $has_submenu ? ' has-child' : '' ) . ( $is_active ? ' current-menu-item' : '' ), - 'style' => $style_attribute, ) ); $html = '<li ' . $wrapper_attributes . '>' . diff --git a/src/wp-includes/blocks/navigation-link/shared/build-css-font-sizes.php b/src/wp-includes/blocks/navigation-link/shared/build-css-font-sizes.php deleted file mode 100644 index 38fd82d12dac8..0000000000000 --- a/src/wp-includes/blocks/navigation-link/shared/build-css-font-sizes.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php -/** - * Shared helper function for building CSS font sizes in navigation blocks. - * - * @package WordPress - */ - -/** - * Build an array with CSS classes and inline styles defining the font sizes - * which will be applied to the navigation markup in the front-end. - * - * @since 7.1.0 - * - * @param array $context Navigation block context. - * @return array Font size CSS classes and inline styles. - */ -function block_core_shared_navigation_build_css_font_sizes( $context ) { - // CSS classes. - $font_sizes = array( - 'css_classes' => array(), - 'inline_styles' => '', - ); - - $has_named_font_size = array_key_exists( 'fontSize', $context ); - $has_custom_font_size = isset( $context['style']['typography']['fontSize'] ); - - if ( $has_named_font_size ) { - // Add the font size class. - $font_sizes['css_classes'][] = sprintf( 'has-%s-font-size', $context['fontSize'] ); - } elseif ( $has_custom_font_size ) { - // Add the custom font size inline style. - $font_sizes['inline_styles'] = sprintf( - 'font-size: %s;', - wp_get_typography_font_size_value( - array( - 'size' => $context['style']['typography']['fontSize'], - ) - ) - ); - } - - return $font_sizes; -} diff --git a/src/wp-includes/blocks/navigation-submenu.php b/src/wp-includes/blocks/navigation-submenu.php index 6990de1813d7a..831c7d1807dfb 100644 --- a/src/wp-includes/blocks/navigation-submenu.php +++ b/src/wp-includes/blocks/navigation-submenu.php @@ -7,7 +7,6 @@ require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; -require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; /** * Renders the submenu icon SVG for the Navigation Submenu block. @@ -87,17 +86,6 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) { return ''; } - // The build system prefixes this function with "gutenberg_" to avoid - // collisions with the core version. Until this function is backported to - // core, we need to guard its use and only call the prefixed name in - // the plugin. - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { - $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $block->context ); - } else { - $font_sizes = block_core_shared_navigation_build_css_font_sizes( $block->context ); - } - $style_attribute = $font_sizes['inline_styles']; - // Render inner blocks first to check if any menu items will actually display. $inner_blocks_html = ''; foreach ( $block->inner_blocks as $inner_block ) { @@ -124,10 +112,7 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) { $classes = array( 'wp-block-navigation-item', ); - $classes = array_merge( - $classes, - $font_sizes['css_classes'] - ); + if ( $has_submenu ) { $classes[] = 'has-child'; } @@ -147,7 +132,6 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) { $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ), - 'style' => $style_attribute, ) ); diff --git a/src/wp-includes/blocks/page-list.php b/src/wp-includes/blocks/page-list.php index 685f79331784b..a6ed5938d969e 100644 --- a/src/wp-includes/blocks/page-list.php +++ b/src/wp-includes/blocks/page-list.php @@ -5,8 +5,6 @@ * @package WordPress */ -require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; - /** * Returns the submenu visibility value with backward compatibility * for the deprecated openSubmenusOnClick attribute. @@ -306,22 +304,12 @@ function render_block_core_page_list( $attributes, $content, $block ) { } } - $colors = block_core_page_list_build_css_colors( $attributes, $block->context ); - // The build system prefixes this function with "gutenberg_" to avoid - // collisions with the core version. Until this function is backported to - // core, we need to guard its use and only call the prefixed name in - // the plugin. - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { - $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $block->context ); - } else { - $font_sizes = block_core_shared_navigation_build_css_font_sizes( $block->context ); - } + $colors = block_core_page_list_build_css_colors( $attributes, $block->context ); $classes = array_merge( - $colors['css_classes'], - $font_sizes['css_classes'] + $colors['css_classes'] ); - $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); + $style_attribute = ( $colors['inline_styles'] ); $css_classes = trim( implode( ' ', $classes ) ); $nested_pages = block_core_page_list_nest_pages( $top_level_pages, $pages_with_children ); diff --git a/src/wp-includes/blocks/post-author-name.php b/src/wp-includes/blocks/post-author-name.php index ac514401f5cc2..73113eb1efc4b 100644 --- a/src/wp-includes/blocks/post-author-name.php +++ b/src/wp-includes/blocks/post-author-name.php @@ -32,7 +32,7 @@ function render_block_core_post_author_name( $attributes, $content, $block ) { $author_name = get_the_author_meta( 'display_name', $author_id ); if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { - $author_name = sprintf( '<a href="%1$s" target="%2$s" class="wp-block-post-author-name__link">%3$s</a>', get_author_posts_url( $author_id ), esc_attr( $attributes['linkTarget'] ), $author_name ); + $author_name = sprintf( '<a href="%1$s" target="%2$s" class="wp-block-post-author-name__link">%3$s</a>', esc_url( get_author_posts_url( $author_id ) ), esc_attr( $attributes['linkTarget'] ), $author_name ); } $classes = array(); diff --git a/src/wp-includes/blocks/post-date.php b/src/wp-includes/blocks/post-date.php index a8073dd846217..5c92c46aa60d4 100644 --- a/src/wp-includes/blocks/post-date.php +++ b/src/wp-includes/blocks/post-date.php @@ -84,7 +84,7 @@ function render_block_core_post_date( $attributes, $content, $block ) { $time_tag = sprintf( '<time datetime="%1$s">%2$s</time>', $unformatted_date, $formatted_date ); if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $block->context['postId'] ) ) { - $time_tag = sprintf( '<a href="%1s">%2s</a>', get_the_permalink( $block->context['postId'] ), $time_tag ); + $time_tag = sprintf( '<a href="%1$s">%2$s</a>', esc_url( get_the_permalink( $block->context['postId'] ) ), $time_tag ); } return sprintf( '<div %1$s>%2$s</div>', $wrapper_attributes, $time_tag ); diff --git a/src/wp-includes/blocks/post-featured-image.php b/src/wp-includes/blocks/post-featured-image.php index 56cf9a66e4e03..0b0a0655c6c4f 100644 --- a/src/wp-includes/blocks/post-featured-image.php +++ b/src/wp-includes/blocks/post-featured-image.php @@ -104,7 +104,7 @@ function render_block_core_post_featured_image( $attributes, $content, $block ) $height = ! empty( $attributes['height'] ) ? 'style="' . esc_attr( safecss_filter_attr( 'height:' . $attributes['height'] ) ) . '"' : ''; $featured_image = sprintf( '<a href="%1$s" target="%2$s" %3$s %4$s>%5$s%6$s</a>', - get_the_permalink( $post_ID ), + esc_url( get_the_permalink( $post_ID ) ), esc_attr( $link_target ), $rel, $height, diff --git a/src/wp-includes/blocks/read-more.php b/src/wp-includes/blocks/read-more.php index c01a0a377fc93..bf14f8ea242e8 100644 --- a/src/wp-includes/blocks/read-more.php +++ b/src/wp-includes/blocks/read-more.php @@ -38,9 +38,9 @@ function render_block_core_read_more( $attributes, $content, $block ) { $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $justify_class_name ) ); $more_text = ! empty( $attributes['content'] ) ? wp_kses_post( $attributes['content'] ) : __( 'Read more' ); return sprintf( - '<a %1s href="%2s" target="%3s">%4s<span class="screen-reader-text">%5s</span></a>', + '<a %1$s href="%2$s" target="%3$s">%4$s<span class="screen-reader-text">%5$s</span></a>', $wrapper_attributes, - get_the_permalink( $post_ID ), + esc_url( get_the_permalink( $post_ID ) ), esc_attr( $attributes['linkTarget'] ), $more_text, $screen_reader_text diff --git a/src/wp-includes/build/constants.php b/src/wp-includes/build/constants.php index a46c20b7301e6..033d714c4cbc9 100644 --- a/src/wp-includes/build/constants.php +++ b/src/wp-includes/build/constants.php @@ -9,6 +9,6 @@ */ return array( - 'version' => '23.3.0', + 'version' => '23.4.0', 'build_url' => includes_url( 'build/' ), ); diff --git a/src/wp-includes/build/pages.php b/src/wp-includes/build/pages.php index d9fa3cfef0f7f..4ba7d4921e0a0 100644 --- a/src/wp-includes/build/pages.php +++ b/src/wp-includes/build/pages.php @@ -7,20 +7,10 @@ */ foreach ( [ - __DIR__ . '/pages/media-editor/page.php', - __DIR__ . '/pages/media-editor/page-wp-admin.php', __DIR__ . '/pages/font-library/page.php', __DIR__ . '/pages/font-library/page-wp-admin.php', __DIR__ . '/pages/options-connectors/page.php', __DIR__ . '/pages/options-connectors/page-wp-admin.php', - __DIR__ . '/pages/guidelines/page.php', - __DIR__ . '/pages/guidelines/page-wp-admin.php', - __DIR__ . '/pages/experiments/page.php', - __DIR__ . '/pages/experiments/page-wp-admin.php', - __DIR__ . '/pages/content-types/page.php', - __DIR__ . '/pages/content-types/page-wp-admin.php', - __DIR__ . '/pages/dashboard/page.php', - __DIR__ . '/pages/dashboard/page-wp-admin.php', ] as $file ) { if ( file_exists( $file ) ) { require_once $file; diff --git a/src/wp-includes/build/pages/font-library/page-wp-admin.php b/src/wp-includes/build/pages/font-library/page-wp-admin.php index 9bb35621d7d33..355b56a777bc7 100644 --- a/src/wp-includes/build/pages/font-library/page-wp-admin.php +++ b/src/wp-includes/build/pages/font-library/page-wp-admin.php @@ -134,7 +134,9 @@ function wp_font_library_wp_admin_enqueue_scripts( $hook_suffix ) { // Load build constants $build_constants = require __DIR__ . '/../../constants.php'; - // Fire init action for extensions to register routes and menu items + /** + * Fires when the font-library admin page is initialized so extensions can register routes and menu items. + */ do_action( 'font-library-wp-admin_init' ); // Preload REST API data @@ -258,9 +260,7 @@ function wp_font_library_wp_admin_render_page() { <style> /* Critical styles to prevent layout shifts - inlined for immediate application */ - /* Background colors */ #wpwrap { - background: var(--wpds-color-fg-content-neutral, #1e1e1e); overflow-y: auto; } body { diff --git a/src/wp-includes/build/pages/font-library/page.php b/src/wp-includes/build/pages/font-library/page.php index f41ec1e443227..7187986a0a918 100644 --- a/src/wp-includes/build/pages/font-library/page.php +++ b/src/wp-includes/build/pages/font-library/page.php @@ -134,7 +134,9 @@ function wp_font_library_render_page() { wp_dequeue_style( $style ); } - // Fire init action for extensions to register routes and menu items + /** + * Fires when the font-library page is initialized so extensions can register routes and menu items. + */ do_action( 'font-library_init' ); // Enqueue command palette assets for boot-based pages @@ -267,18 +269,10 @@ function ( $handle ) { print_admin_styles(); print_head_scripts(); - /** - * Fires in head section for a specific admin page. - * - * @since 2.1.0 - */ + /** This action is documented in wp-admin/admin-header.php */ do_action( "admin_head-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores - /** - * Fires in head section for all admin pages. - * - * @since 2.1.0 - */ + /** This action is documented in wp-admin/admin-header.php */ do_action( 'admin_head' ); // END see wp-admin/admin-header.php ?> @@ -288,11 +282,7 @@ function ( $handle ) { <?php // BEGIN see wp-admin/admin-footer.php - /** - * Prints scripts or data before the default footer scripts. - * - * @since 1.2.0 - */ + /** This action is documented in wp-admin/admin-footer.php */ do_action( 'admin_footer', '' ); // Print import map first so it's available for inline scripts @@ -302,11 +292,7 @@ function ( $handle ) { wp_script_modules()->print_script_module_preloads(); wp_script_modules()->print_script_module_data(); - /** - * Prints scripts or data after the default footer scripts. - * - * @since 2.8.0 - */ + /** This action is documented in wp-admin/admin-footer.php */ do_action( "admin_footer-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores // END see wp-admin/admin-footer.php ?> diff --git a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php index fc44da9d715d8..f154af1b95590 100644 --- a/src/wp-includes/build/pages/options-connectors/page-wp-admin.php +++ b/src/wp-includes/build/pages/options-connectors/page-wp-admin.php @@ -134,7 +134,9 @@ function wp_options_connectors_wp_admin_enqueue_scripts( $hook_suffix ) { // Load build constants $build_constants = require __DIR__ . '/../../constants.php'; - // Fire init action for extensions to register routes and menu items + /** + * Fires when the options-connectors admin page is initialized so extensions can register routes and menu items. + */ do_action( 'options-connectors-wp-admin_init' ); // Preload REST API data @@ -258,9 +260,7 @@ function wp_options_connectors_wp_admin_render_page() { <style> /* Critical styles to prevent layout shifts - inlined for immediate application */ - /* Background colors */ #wpwrap { - background: var(--wpds-color-fg-content-neutral, #1e1e1e); overflow-y: auto; } body { diff --git a/src/wp-includes/build/pages/options-connectors/page.php b/src/wp-includes/build/pages/options-connectors/page.php index 6be01a05641c0..d7383c0bee7c7 100644 --- a/src/wp-includes/build/pages/options-connectors/page.php +++ b/src/wp-includes/build/pages/options-connectors/page.php @@ -134,7 +134,9 @@ function wp_options_connectors_render_page() { wp_dequeue_style( $style ); } - // Fire init action for extensions to register routes and menu items + /** + * Fires when the options-connectors page is initialized so extensions can register routes and menu items. + */ do_action( 'options-connectors_init' ); // Enqueue command palette assets for boot-based pages @@ -267,18 +269,10 @@ function ( $handle ) { print_admin_styles(); print_head_scripts(); - /** - * Fires in head section for a specific admin page. - * - * @since 2.1.0 - */ + /** This action is documented in wp-admin/admin-header.php */ do_action( "admin_head-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores - /** - * Fires in head section for all admin pages. - * - * @since 2.1.0 - */ + /** This action is documented in wp-admin/admin-header.php */ do_action( 'admin_head' ); // END see wp-admin/admin-header.php ?> @@ -288,11 +282,7 @@ function ( $handle ) { <?php // BEGIN see wp-admin/admin-footer.php - /** - * Prints scripts or data before the default footer scripts. - * - * @since 1.2.0 - */ + /** This action is documented in wp-admin/admin-footer.php */ do_action( 'admin_footer', '' ); // Print import map first so it's available for inline scripts @@ -302,11 +292,7 @@ function ( $handle ) { wp_script_modules()->print_script_module_preloads(); wp_script_modules()->print_script_module_data(); - /** - * Prints scripts or data after the default footer scripts. - * - * @since 2.8.0 - */ + /** This action is documented in wp-admin/admin-footer.php */ do_action( "admin_footer-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores // END see wp-admin/admin-footer.php ?> diff --git a/src/wp-includes/build/routes.php b/src/wp-includes/build/routes.php index bb6177aee952e..2d87344225949 100644 --- a/src/wp-includes/build/routes.php +++ b/src/wp-includes/build/routes.php @@ -111,63 +111,6 @@ function wp_register_options_connectors_wp_admin_page_routes() { } add_action( 'options-connectors-wp-admin_init', 'wp_register_options_connectors_wp_admin_page_routes' ); -// Page-specific route registration functions for content-types -/** - * Register routes for content-types page (full-page mode). - */ -function wp_register_content_types_page_routes() { - global $wp_content_types_routes_data; - wp_register_page_routes( $wp_content_types_routes_data, 'wp_register_content_types_route' ); -} -add_action( 'content-types_init', 'wp_register_content_types_page_routes' ); - -/** - * Register routes for content-types page (wp-admin mode). - */ -function wp_register_content_types_wp_admin_page_routes() { - global $wp_content_types_routes_data; - wp_register_page_routes( $wp_content_types_routes_data, 'wp_register_content_types_wp_admin_route' ); -} -add_action( 'content-types-wp-admin_init', 'wp_register_content_types_wp_admin_page_routes' ); - -// Page-specific route registration functions for dashboard -/** - * Register routes for dashboard page (full-page mode). - */ -function wp_register_dashboard_page_routes() { - global $wp_dashboard_routes_data; - wp_register_page_routes( $wp_dashboard_routes_data, 'wp_register_dashboard_route' ); -} -add_action( 'dashboard_init', 'wp_register_dashboard_page_routes' ); - -/** - * Register routes for dashboard page (wp-admin mode). - */ -function wp_register_dashboard_wp_admin_page_routes() { - global $wp_dashboard_routes_data; - wp_register_page_routes( $wp_dashboard_routes_data, 'wp_register_dashboard_wp_admin_route' ); -} -add_action( 'dashboard-wp-admin_init', 'wp_register_dashboard_wp_admin_page_routes' ); - -// Page-specific route registration functions for experiments -/** - * Register routes for experiments page (full-page mode). - */ -function wp_register_experiments_page_routes() { - global $wp_experiments_routes_data; - wp_register_page_routes( $wp_experiments_routes_data, 'wp_register_experiments_route' ); -} -add_action( 'experiments_init', 'wp_register_experiments_page_routes' ); - -/** - * Register routes for experiments page (wp-admin mode). - */ -function wp_register_experiments_wp_admin_page_routes() { - global $wp_experiments_routes_data; - wp_register_page_routes( $wp_experiments_routes_data, 'wp_register_experiments_wp_admin_route' ); -} -add_action( 'experiments-wp-admin_init', 'wp_register_experiments_wp_admin_page_routes' ); - // Page-specific route registration functions for font-library /** * Register routes for font-library page (full-page mode). @@ -187,41 +130,3 @@ function wp_register_font_library_wp_admin_page_routes() { } add_action( 'font-library-wp-admin_init', 'wp_register_font_library_wp_admin_page_routes' ); -// Page-specific route registration functions for guidelines -/** - * Register routes for guidelines page (full-page mode). - */ -function wp_register_guidelines_page_routes() { - global $wp_guidelines_routes_data; - wp_register_page_routes( $wp_guidelines_routes_data, 'wp_register_guidelines_route' ); -} -add_action( 'guidelines_init', 'wp_register_guidelines_page_routes' ); - -/** - * Register routes for guidelines page (wp-admin mode). - */ -function wp_register_guidelines_wp_admin_page_routes() { - global $wp_guidelines_routes_data; - wp_register_page_routes( $wp_guidelines_routes_data, 'wp_register_guidelines_wp_admin_route' ); -} -add_action( 'guidelines-wp-admin_init', 'wp_register_guidelines_wp_admin_page_routes' ); - -// Page-specific route registration functions for media-editor -/** - * Register routes for media-editor page (full-page mode). - */ -function wp_register_media_editor_page_routes() { - global $wp_media_editor_routes_data; - wp_register_page_routes( $wp_media_editor_routes_data, 'wp_register_media_editor_route' ); -} -add_action( 'media-editor_init', 'wp_register_media_editor_page_routes' ); - -/** - * Register routes for media-editor page (wp-admin mode). - */ -function wp_register_media_editor_wp_admin_page_routes() { - global $wp_media_editor_routes_data; - wp_register_page_routes( $wp_media_editor_routes_data, 'wp_register_media_editor_wp_admin_route' ); -} -add_action( 'media-editor-wp-admin_init', 'wp_register_media_editor_wp_admin_page_routes' ); - diff --git a/src/wp-includes/build/routes/connectors-home/content.js b/src/wp-includes/build/routes/connectors-home/content.js index 09b2571402667..eb0b6d731da71 100644 --- a/src/wp-includes/build/routes/connectors-home/content.js +++ b/src/wp-includes/build/routes/connectors-home/content.js @@ -72,7 +72,7 @@ var require_use_sync_external_store_shim_development = __commonJS({ return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; } function useSyncExternalStore$2(subscribe, getSnapshot) { - didWarnOld18Alpha || void 0 === React53.startTransition || (didWarnOld18Alpha = true, console.error( + didWarnOld18Alpha || void 0 === React52.startTransition || (didWarnOld18Alpha = true, console.error( "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." )); var value = getSnapshot(); @@ -86,7 +86,7 @@ var require_use_sync_external_store_shim_development = __commonJS({ inst: { value, getSnapshot } }); var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; - useLayoutEffect4( + useLayoutEffect3( function() { inst.value = value; inst.getSnapshot = getSnapshot; @@ -120,8 +120,8 @@ var require_use_sync_external_store_shim_development = __commonJS({ return getSnapshot(); } "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); - var React53 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState14 = React53.useState, useEffect15 = React53.useEffect, useLayoutEffect4 = React53.useLayoutEffect, useDebugValue2 = React53.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; - exports.useSyncExternalStore = void 0 !== React53.useSyncExternalStore ? React53.useSyncExternalStore : shim; + var React52 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState14 = React52.useState, useEffect15 = React52.useEffect, useLayoutEffect3 = React52.useLayoutEffect, useDebugValue2 = React52.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; + exports.useSyncExternalStore = void 0 !== React52.useSyncExternalStore ? React52.useSyncExternalStore : shim; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); })(); } @@ -148,14 +148,14 @@ var require_with_selector_development = __commonJS({ return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; } "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); - var React53 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore2 = shim.useSyncExternalStore, useRef21 = React53.useRef, useEffect15 = React53.useEffect, useMemo17 = React53.useMemo, useDebugValue2 = React53.useDebugValue; + var React52 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore2 = shim.useSyncExternalStore, useRef22 = React52.useRef, useEffect15 = React52.useEffect, useMemo16 = React52.useMemo, useDebugValue2 = React52.useDebugValue; exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { - var instRef = useRef21(null); + var instRef = useRef22(null); if (null === instRef.current) { var inst = { hasValue: false, value: null }; instRef.current = inst; } else inst = instRef.current; - instRef = useMemo17( + instRef = useMemo16( function() { function memoizedSelector(nextSnapshot) { if (!hasMemo) { @@ -291,7 +291,7 @@ function clsx() { var clsx_default = clsx; // packages/ui/build-module/badge/badge.mjs -var import_element9 = __toESM(require_element(), 1); +var import_element11 = __toESM(require_element(), 1); // node_modules/@base-ui/utils/esm/error.js var set; @@ -308,14 +308,17 @@ function error(...messages) { } } -// node_modules/@base-ui/utils/esm/useStableCallback.js -var React3 = __toESM(require_react(), 1); +// node_modules/@base-ui/utils/esm/safeReact.js +var React2 = __toESM(require_react(), 1); +var SafeReact = { + ...React2 +}; // node_modules/@base-ui/utils/esm/useRefWithInit.js -var React2 = __toESM(require_react(), 1); +var React3 = __toESM(require_react(), 1); var UNINITIALIZED = {}; function useRefWithInit(init, initArg) { - const ref = React2.useRef(UNINITIALIZED); + const ref = React3.useRef(UNINITIALIZED); if (ref.current === UNINITIALIZED) { ref.current = init(initArg); } @@ -323,11 +326,11 @@ function useRefWithInit(init, initArg) { } // node_modules/@base-ui/utils/esm/useStableCallback.js -var useInsertionEffect = React3[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0, -3)]; +var useInsertionEffect = SafeReact.useInsertionEffect; var useSafeInsertionEffect = ( // React 17 doesn't have useInsertionEffect. useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. - useInsertionEffect !== React3.useLayoutEffect ? useInsertionEffect : (fn) => fn() + useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() ); function useStableCallback(callback) { const stable = useRefWithInit(createStableCallback).current; @@ -839,6 +842,7 @@ __export(reason_parts_exports, { focusOut: () => focusOut, imperativeAction: () => imperativeAction, incrementPress: () => incrementPress, + initial: () => initial, inputBlur: () => inputBlur, inputChange: () => inputChange, inputClear: () => inputClear, @@ -848,6 +852,7 @@ __export(reason_parts_exports, { keyboard: () => keyboard, linkPress: () => linkPress, listNavigation: () => listNavigation, + missing: () => missing, none: () => none, outsidePress: () => outsidePress, pointer: () => pointer, @@ -891,6 +896,8 @@ var scrub = "scrub"; var cancelOpen = "cancel-open"; var siblingOpen = "sibling-open"; var disabled = "disabled"; +var missing = "missing"; +var initial = "initial"; var imperativeAction = "imperative-action"; var swipe = "swipe"; var windowResize = "window-resize"; @@ -922,20 +929,12 @@ function createChangeEventDetails(reason, event, trigger, customProperties) { } // node_modules/@base-ui/utils/esm/useId.js -var React10 = __toESM(require_react(), 1); - -// node_modules/@base-ui/utils/esm/safeReact.js var React9 = __toESM(require_react(), 1); -var SafeReact = { - ...React9 -}; - -// node_modules/@base-ui/utils/esm/useId.js var globalId = 0; function useGlobalId(idOverride, prefix = "mui") { - const [defaultId, setDefaultId] = React10.useState(idOverride); + const [defaultId, setDefaultId] = React9.useState(idOverride); const id = idOverride || defaultId; - React10.useEffect(() => { + React9.useEffect(() => { if (defaultId == null) { globalId += 1; setDefaultId(`${prefix}-${globalId}`); @@ -957,14 +956,14 @@ function useBaseUiId(idOverride) { return useId(idOverride, "base-ui"); } -// node_modules/@base-ui/react/esm/internals/useAnimationsFinished.js -var ReactDOM = __toESM(require_react_dom(), 1); +// node_modules/@base-ui/react/esm/internals/useTransitionStatus.js +var React11 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/useOnMount.js -var React11 = __toESM(require_react(), 1); +var React10 = __toESM(require_react(), 1); var EMPTY = []; function useOnMount(fn) { - React11.useEffect(fn, EMPTY); + React10.useEffect(fn, EMPTY); } // node_modules/@base-ui/utils/esm/useAnimationFrame.js @@ -1055,103 +1054,10 @@ function useAnimationFrame() { return timeout; } -// node_modules/@base-ui/react/esm/utils/resolveRef.js -function resolveRef(maybeRef) { - if (maybeRef == null) { - return maybeRef; - } - return "current" in maybeRef ? maybeRef.current : maybeRef; -} - -// node_modules/@base-ui/react/esm/internals/stateAttributesMapping.js -var TransitionStatusDataAttributes = /* @__PURE__ */ (function(TransitionStatusDataAttributes2) { - TransitionStatusDataAttributes2["startingStyle"] = "data-starting-style"; - TransitionStatusDataAttributes2["endingStyle"] = "data-ending-style"; - return TransitionStatusDataAttributes2; -})({}); -var STARTING_HOOK = { - [TransitionStatusDataAttributes.startingStyle]: "" -}; -var ENDING_HOOK = { - [TransitionStatusDataAttributes.endingStyle]: "" -}; -var transitionStatusMapping = { - transitionStatus(value) { - if (value === "starting") { - return STARTING_HOOK; - } - if (value === "ending") { - return ENDING_HOOK; - } - return null; - } -}; - -// node_modules/@base-ui/react/esm/internals/useAnimationsFinished.js -function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, treatAbortedAsFinished = true) { - const frame = useAnimationFrame(); - return useStableCallback((fnToExecute, signal = null) => { - frame.cancel(); - const element = resolveRef(elementOrRef); - if (element == null) { - return; - } - const resolvedElement = element; - const done = () => { - ReactDOM.flushSync(fnToExecute); - }; - if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { - fnToExecute(); - return; - } - function exec() { - Promise.all(resolvedElement.getAnimations().map((animation) => animation.finished)).then(() => { - if (!signal?.aborted) { - done(); - } - }).catch(() => { - if (treatAbortedAsFinished) { - if (!signal?.aborted) { - done(); - } - return; - } - const currentAnimations = resolvedElement.getAnimations(); - if (!signal?.aborted && currentAnimations.length > 0 && currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { - exec(); - } - }); - } - if (waitForStartingStyleRemoved) { - const startingStyleAttribute = TransitionStatusDataAttributes.startingStyle; - if (!resolvedElement.hasAttribute(startingStyleAttribute)) { - frame.request(exec); - return; - } - const attributeObserver = new MutationObserver(() => { - if (!resolvedElement.hasAttribute(startingStyleAttribute)) { - attributeObserver.disconnect(); - exec(); - } - }); - attributeObserver.observe(resolvedElement, { - attributes: true, - attributeFilter: [startingStyleAttribute] - }); - signal?.addEventListener("abort", () => attributeObserver.disconnect(), { - once: true - }); - return; - } - frame.request(exec); - }); -} - // node_modules/@base-ui/react/esm/internals/useTransitionStatus.js -var React12 = __toESM(require_react(), 1); function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) { - const [transitionStatus, setTransitionStatus] = React12.useState(open && enableIdleState ? "idle" : void 0); - const [mounted, setMounted] = React12.useState(open); + const [transitionStatus, setTransitionStatus] = React11.useState(open && enableIdleState ? "idle" : void 0); + const [mounted, setMounted] = React11.useState(open); if (open && !mounted) { setMounted(true); setTransitionStatus("starting"); @@ -1205,8 +1111,32 @@ function useTransitionStatus(open, enableIdleState = false, deferEndingState = f }; } +// node_modules/@base-ui/react/esm/internals/stateAttributesMapping.js +var TransitionStatusDataAttributes = /* @__PURE__ */ (function(TransitionStatusDataAttributes2) { + TransitionStatusDataAttributes2["startingStyle"] = "data-starting-style"; + TransitionStatusDataAttributes2["endingStyle"] = "data-ending-style"; + return TransitionStatusDataAttributes2; +})({}); +var STARTING_HOOK = { + [TransitionStatusDataAttributes.startingStyle]: "" +}; +var ENDING_HOOK = { + [TransitionStatusDataAttributes.endingStyle]: "" +}; +var transitionStatusMapping = { + transitionStatus(value) { + if (value === "starting") { + return STARTING_HOOK; + } + if (value === "ending") { + return ENDING_HOOK; + } + return null; + } +}; + // node_modules/@base-ui/react/esm/internals/use-button/useButton.js -var React15 = __toESM(require_react(), 1); +var React14 = __toESM(require_react(), 1); // node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs function hasWindow() { @@ -1365,11 +1295,11 @@ function getFrameElement(win) { } // node_modules/@base-ui/react/esm/internals/composite/root/CompositeRootContext.js -var React13 = __toESM(require_react(), 1); -var CompositeRootContext = /* @__PURE__ */ React13.createContext(void 0); +var React12 = __toESM(require_react(), 1); +var CompositeRootContext = /* @__PURE__ */ React12.createContext(void 0); if (true) CompositeRootContext.displayName = "CompositeRootContext"; function useCompositeRootContext(optional = false) { - const context = React13.useContext(CompositeRootContext); + const context = React12.useContext(CompositeRootContext); if (context === void 0 && !optional) { throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); } @@ -1377,7 +1307,7 @@ function useCompositeRootContext(optional = false) { } // node_modules/@base-ui/react/esm/utils/useFocusableWhenDisabled.js -var React14 = __toESM(require_react(), 1); +var React13 = __toESM(require_react(), 1); function useFocusableWhenDisabled(parameters) { const { focusableWhenDisabled, @@ -1388,7 +1318,7 @@ function useFocusableWhenDisabled(parameters) { } = parameters; const isFocusableComposite = composite && focusableWhenDisabled !== false; const isNonFocusableComposite = composite && focusableWhenDisabled === false; - const props = React14.useMemo(() => { + const props = React13.useMemo(() => { const additionalProps = { // allow Tabbing away from focusableWhenDisabled elements onKeyDown(event) { @@ -1425,7 +1355,7 @@ function useButton(parameters = {}) { native: isNativeButton = true, composite: compositeProp } = parameters; - const elementRef = React15.useRef(null); + const elementRef = React14.useRef(null); const compositeRootContext = useCompositeRootContext(true); const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; const { @@ -1438,7 +1368,7 @@ function useButton(parameters = {}) { isNativeButton }); if (true) { - React15.useEffect(() => { + React14.useEffect(() => { if (!elementRef.current) { return; } @@ -1456,7 +1386,7 @@ function useButton(parameters = {}) { } }, [isNativeButton]); } - const updateDisabled = React15.useCallback(() => { + const updateDisabled = React14.useCallback(() => { const element = elementRef.current; if (!isButtonElement(element)) { return; @@ -1466,7 +1396,7 @@ function useButton(parameters = {}) { } }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); useIsoLayoutEffect(updateDisabled, [updateDisabled]); - const getButtonProps = React15.useCallback((externalProps = {}) => { + const getButtonProps = React14.useCallback((externalProps = {}) => { const { onClick: externalOnClick, onMouseDown: externalOnMouseDown, @@ -1475,9 +1405,7 @@ function useButton(parameters = {}) { onPointerDown: externalOnPointerDown, ...otherExternalProps } = externalProps; - const type = isNativeButton ? "button" : void 0; return mergeProps({ - type, onClick(event) { if (disabled2) { event.preventDefault(); @@ -1555,9 +1483,11 @@ function useButton(parameters = {}) { } externalOnPointerDown?.(event); } - }, !isNativeButton ? { + }, isNativeButton ? { + type: "button" + } : { role: "button" - } : void 0, focusableWhenDisabledProps, otherExternalProps); + }, focusableWhenDisabledProps, otherExternalProps); }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); const buttonRef = useStableCallback((element) => { elementRef.current = element; @@ -1636,8 +1566,6 @@ function getPlatform() { // node_modules/@base-ui/react/esm/floating-ui-react/utils/constants.js var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; -var ACTIVE_KEY = "active"; -var SELECTED_KEY = "selected"; var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; // node_modules/@base-ui/react/esm/internals/shadowDom.js @@ -2066,8 +1994,99 @@ function addEventListener(target, type, listener, options) { }; } +// node_modules/@base-ui/utils/esm/useValueAsRef.js +function useValueAsRef(value) { + const latest = useRefWithInit(createLatestRef, value).current; + latest.next = value; + useIsoLayoutEffect(latest.effect); + return latest; +} +function createLatestRef(value) { + const latest = { + current: value, + next: value, + effect: () => { + latest.current = latest.next; + } + }; + return latest; +} + +// node_modules/@base-ui/react/esm/internals/useOpenChangeComplete.js +var React15 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/internals/useAnimationsFinished.js +var ReactDOM = __toESM(require_react_dom(), 1); + +// node_modules/@base-ui/react/esm/utils/resolveRef.js +function resolveRef(maybeRef) { + if (maybeRef == null) { + return maybeRef; + } + return "current" in maybeRef ? maybeRef.current : maybeRef; +} + +// node_modules/@base-ui/react/esm/internals/useAnimationsFinished.js +function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, treatAbortedAsFinished = true) { + const frame = useAnimationFrame(); + return useStableCallback((fnToExecute, signal = null) => { + frame.cancel(); + const element = resolveRef(elementOrRef); + if (element == null) { + return; + } + const resolvedElement = element; + const done = () => { + ReactDOM.flushSync(fnToExecute); + }; + if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { + fnToExecute(); + return; + } + function exec() { + Promise.all(resolvedElement.getAnimations().map((animation) => animation.finished)).then(() => { + if (!signal?.aborted) { + done(); + } + }).catch(() => { + if (treatAbortedAsFinished) { + if (!signal?.aborted) { + done(); + } + return; + } + const currentAnimations = resolvedElement.getAnimations(); + if (!signal?.aborted && currentAnimations.length > 0 && currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { + exec(); + } + }); + } + if (waitForStartingStyleRemoved) { + const startingStyleAttribute = TransitionStatusDataAttributes.startingStyle; + if (!resolvedElement.hasAttribute(startingStyleAttribute)) { + frame.request(exec); + return; + } + const attributeObserver = new MutationObserver(() => { + if (!resolvedElement.hasAttribute(startingStyleAttribute)) { + attributeObserver.disconnect(); + exec(); + } + }); + attributeObserver.observe(resolvedElement, { + attributes: true, + attributeFilter: [startingStyleAttribute] + }); + signal?.addEventListener("abort", () => attributeObserver.disconnect(), { + once: true + }); + return; + } + frame.request(exec); + }); +} + // node_modules/@base-ui/react/esm/internals/useOpenChangeComplete.js -var React16 = __toESM(require_react(), 1); function useOpenChangeComplete(parameters) { const { enabled = true, @@ -2077,7 +2096,7 @@ function useOpenChangeComplete(parameters) { } = parameters; const onComplete = useStableCallback(onCompleteParam); const runOnceAnimationsFinish = useAnimationsFinished(ref, open, false); - React16.useEffect(() => { + React15.useEffect(() => { if (!enabled) { return void 0; } @@ -2090,9 +2109,9 @@ function useOpenChangeComplete(parameters) { } // node_modules/@base-ui/utils/esm/useOnFirstRender.js -var React17 = __toESM(require_react(), 1); +var React16 = __toESM(require_react(), 1); function useOnFirstRender(fn) { - const ref = React17.useRef(true); + const ref = React16.useRef(true); if (ref.current) { ref.current = false; fn(); @@ -2136,7 +2155,7 @@ function useTimeout() { } // node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingDelayGroup.js -var React18 = __toESM(require_react(), 1); +var React17 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverShared.js function resolveValue(value, pointerType) { @@ -2164,10 +2183,13 @@ function getRestMs(value) { function isClickLikeOpenEvent(openEventType, interactedInside) { return interactedInside || openEventType === "click" || openEventType === "mousedown"; } +function isHoverOpenEvent(openEventType) { + return openEventType?.includes("mouse") && openEventType !== "mousedown"; +} // node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingDelayGroup.js var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); -var FloatingDelayGroupContext = /* @__PURE__ */ React18.createContext({ +var FloatingDelayGroupContext = /* @__PURE__ */ React17.createContext({ hasProvider: false, timeoutMs: 0, delayRef: { @@ -2191,13 +2213,13 @@ function FloatingDelayGroup(props) { delay, timeoutMs = 0 } = props; - const delayRef = React18.useRef(delay); - const initialDelayRef = React18.useRef(delay); - const currentIdRef = React18.useRef(null); - const currentContextRef = React18.useRef(null); + const delayRef = React17.useRef(delay); + const initialDelayRef = React17.useRef(delay); + const currentIdRef = React17.useRef(null); + const currentContextRef = React17.useRef(null); const timeout = useTimeout(); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FloatingDelayGroupContext.Provider, { - value: React18.useMemo(() => ({ + value: React17.useMemo(() => ({ hasProvider: true, delayRef, initialDelayRef, @@ -2212,12 +2234,12 @@ function FloatingDelayGroup(props) { function useDelayGroup(context, options = { open: false }) { - const store2 = "rootStore" in context ? context.rootStore : context; - const floatingId = store2.useState("floatingId"); const { open } = options; - const groupContext = React18.useContext(FloatingDelayGroupContext); + const store2 = "rootStore" in context ? context.rootStore : context; + const floatingId = store2.useState("floatingId"); + const groupContext = React17.useContext(FloatingDelayGroupContext); const { currentIdRef, delayRef, @@ -2227,7 +2249,7 @@ function useDelayGroup(context, options = { hasProvider, timeout } = groupContext; - const [isInstantPhase, setIsInstantPhase] = React18.useState(false); + const [isInstantPhase, setIsInstantPhase] = React17.useState(false); useIsoLayoutEffect(() => { function unset() { setIsInstantPhase(false); @@ -2281,13 +2303,13 @@ function useDelayGroup(context, options = { setIsInstantPhase(false); prevContext?.setIsInstantPhase(false); } - }, [open, floatingId, store2, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout]); + }, [open, floatingId, store2, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]); useIsoLayoutEffect(() => { return () => { currentContextRef.current = null; }; }, [currentContextRef]); - return React18.useMemo(() => ({ + return React17.useMemo(() => ({ hasProvider, delayRef, isInstantPhase @@ -2306,26 +2328,8 @@ function mergeCleanups(...cleanups) { }; } -// node_modules/@base-ui/utils/esm/useValueAsRef.js -function useValueAsRef(value) { - const latest = useRefWithInit(createLatestRef, value).current; - latest.next = value; - useIsoLayoutEffect(latest.effect); - return latest; -} -function createLatestRef(value) { - const latest = { - current: value, - next: value, - effect: () => { - latest.current = latest.next; - } - }; - return latest; -} - // node_modules/@base-ui/react/esm/utils/FocusGuard.js -var React19 = __toESM(require_react(), 1); +var React18 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/visuallyHidden.js var visuallyHiddenBase = { @@ -2351,8 +2355,8 @@ var visuallyHiddenInput = { // node_modules/@base-ui/react/esm/utils/FocusGuard.js var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); -var FocusGuard = /* @__PURE__ */ React19.forwardRef(function FocusGuard2(props, ref) { - const [role, setRole] = React19.useState(); +var FocusGuard = /* @__PURE__ */ React18.forwardRef(function FocusGuard2(props, ref) { + const [role, setRole] = React18.useState(); useIsoLayoutEffect(() => { if (isSafari) { setRole("button"); @@ -2380,7 +2384,7 @@ function createAttribute(name) { } // node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingPortal.js -var React20 = __toESM(require_react(), 1); +var React19 = __toESM(require_react(), 1); var ReactDOM2 = __toESM(require_react_dom(), 1); // node_modules/@base-ui/react/esm/internals/constants.js @@ -2405,9 +2409,9 @@ var ownerVisuallyHidden = { // node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingPortal.js var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); -var PortalContext = /* @__PURE__ */ React20.createContext(null); +var PortalContext = /* @__PURE__ */ React19.createContext(null); if (true) PortalContext.displayName = "PortalContext"; -var usePortalContext = () => React20.useContext(PortalContext); +var usePortalContext = () => React19.useContext(PortalContext); var attr = createAttribute("portal"); function useFloatingPortalNode(props = {}) { const { @@ -2419,14 +2423,14 @@ function useFloatingPortalNode(props = {}) { const uniqueId = useId(); const portalContext = usePortalContext(); const parentPortalNode = portalContext?.portalNode; - const [containerElement, setContainerElement] = React20.useState(null); - const [portalNode, setPortalNode] = React20.useState(null); + const [containerElement, setContainerElement] = React19.useState(null); + const [portalNode, setPortalNode] = React19.useState(null); const setPortalNodeRef = useStableCallback((node) => { if (node !== null) { setPortalNode(node); } }); - const containerRef = React20.useRef(null); + const containerRef = React19.useRef(null); useIsoLayoutEffect(() => { if (containerProp === null) { if (containerRef.current) { @@ -2467,14 +2471,14 @@ function useFloatingPortalNode(props = {}) { portalSubtree }; } -var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { +var FloatingPortal = /* @__PURE__ */ React19.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { const { + render, + className, + style, children, container, - className, - render, renderGuards, - style, ...elementProps } = componentProps; const { @@ -2486,16 +2490,16 @@ var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2 componentProps, elementProps }); - const beforeOutsideRef = React20.useRef(null); - const afterOutsideRef = React20.useRef(null); - const beforeInsideRef = React20.useRef(null); - const afterInsideRef = React20.useRef(null); - const [focusManagerState, setFocusManagerState] = React20.useState(null); - const focusInsideDisabledRef = React20.useRef(false); + const beforeOutsideRef = React19.useRef(null); + const afterOutsideRef = React19.useRef(null); + const beforeInsideRef = React19.useRef(null); + const afterInsideRef = React19.useRef(null); + const [focusManagerState, setFocusManagerState] = React19.useState(null); + const focusInsideDisabledRef = React19.useRef(false); const modal = focusManagerState?.modal; const open = focusManagerState?.open; const shouldRenderGuards = typeof renderGuards === "boolean" ? renderGuards : !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; - React20.useEffect(() => { + React19.useEffect(() => { if (!portalNode || modal) { return void 0; } @@ -2514,14 +2518,14 @@ var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2 } return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); }, [portalNode, modal]); - React20.useEffect(() => { + React19.useEffect(() => { if (!portalNode || open !== false) { return; } enableFocusInside(portalNode); focusInsideDisabledRef.current = false; }, [open, portalNode]); - const portalContextValue = React20.useMemo(() => ({ + const portalContextValue = React19.useMemo(() => ({ beforeOutsideRef, afterOutsideRef, beforeInsideRef, @@ -2529,7 +2533,7 @@ var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2 portalNode, setFocusManagerState }), [portalNode]); - return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(React20.Fragment, { + return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(React19.Fragment, { children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(PortalContext.Provider, { value: portalContextValue, children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FocusGuard, { @@ -2569,7 +2573,7 @@ var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2 if (true) FloatingPortal.displayName = "FloatingPortal"; // node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingTree.js -var React21 = __toESM(require_react(), 1); +var React20 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/floating-ui-react/utils/createEventEmitter.js function createEventEmitter() { @@ -2592,18 +2596,18 @@ function createEventEmitter() { // node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingTree.js var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); -var FloatingNodeContext = /* @__PURE__ */ React21.createContext(null); +var FloatingNodeContext = /* @__PURE__ */ React20.createContext(null); if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; -var FloatingTreeContext = /* @__PURE__ */ React21.createContext(null); +var FloatingTreeContext = /* @__PURE__ */ React20.createContext(null); if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; -var useFloatingParentNodeId = () => React21.useContext(FloatingNodeContext)?.id || null; +var useFloatingParentNodeId = () => React20.useContext(FloatingNodeContext)?.id || null; var useFloatingTree = (externalTree) => { - const contextTree = React21.useContext(FloatingTreeContext); + const contextTree = React20.useContext(FloatingTreeContext); return externalTree ?? contextTree; }; // node_modules/@base-ui/react/esm/floating-ui-react/hooks/useClientPoint.js -var React22 = __toESM(require_react(), 1); +var React21 = __toESM(require_react(), 1); function createVirtualElement(domElement, data) { let offsetX = null; let offsetY = null; @@ -2661,19 +2665,22 @@ function isMouseBasedEvent(event) { return event != null && event.clientX != null; } function useClientPoint(context, props = {}) { + const { + enabled = true, + axis = "both" + } = props; const store2 = "rootStore" in context ? context.rootStore : context; const open = store2.useState("open"); const floating = store2.useState("floatingElement"); const domReference = store2.useState("domReferenceElement"); const dataRef = store2.context.dataRef; - const { - enabled = true, - axis = "both" - } = props; - const initialRef = React22.useRef(false); - const cleanupListenerRef = React22.useRef(null); - const [pointerType, setPointerType] = React22.useState(); - const [reactive, setReactive] = React22.useState([]); + const initialRef = React21.useRef(false); + const cleanupListenerRef = React21.useRef(null); + const [pointerType, setPointerType] = React21.useState(); + const [reactive, setReactive] = React21.useState([]); + const resetReference = useStableCallback((reference2) => { + store2.set("positionReference", reference2); + }); const setReference = useStableCallback((newX, newY, referenceElement) => { if (initialRef.current) { return; @@ -2693,49 +2700,53 @@ function useClientPoint(context, props = {}) { if (!open) { setReference(event.clientX, event.clientY, event.currentTarget); } else if (!cleanupListenerRef.current) { + setReference(event.clientX, event.clientY, event.currentTarget); setReactive([]); } }); const openCheck = isMouseLikePointerType(pointerType) ? floating : open; - const addListener = React22.useCallback(() => { - if (!openCheck || !enabled) { + React21.useEffect(() => { + if (!enabled) { + resetReference(domReference); + return void 0; + } + if (!openCheck) { return void 0; } + function cleanupListener() { + cleanupListenerRef.current?.(); + cleanupListenerRef.current = null; + } const win = getWindow(floating); function handleMouseMove(event) { const target = getTarget(event); if (!contains(floating, target)) { setReference(event.clientX, event.clientY); } else { - cleanupListenerRef.current?.(); - cleanupListenerRef.current = null; + cleanupListener(); } } if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) { - const cleanup = () => { - cleanupListenerRef.current?.(); - cleanupListenerRef.current = null; - }; cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove); - return cleanup; + } else { + resetReference(domReference); } - store2.set("positionReference", domReference); - return void 0; - }, [openCheck, enabled, floating, dataRef, domReference, store2, setReference]); - React22.useEffect(() => { - return addListener(); - }, [addListener, reactive]); - React22.useEffect(() => { + return cleanupListener; + }, [openCheck, enabled, floating, dataRef, domReference, store2, setReference, resetReference, reactive]); + React21.useEffect(() => () => { + store2.set("positionReference", null); + }, [store2]); + React21.useEffect(() => { if (enabled && !floating) { initialRef.current = false; } }, [enabled, floating]); - React22.useEffect(() => { + React21.useEffect(() => { if (!enabled && open) { initialRef.current = true; } }, [enabled, open]); - const reference = React22.useMemo(() => { + const reference = React21.useMemo(() => { function setPointerTypeRef(event) { setPointerType(event.pointerType); } @@ -2746,14 +2757,14 @@ function useClientPoint(context, props = {}) { onMouseEnter: handleReferenceEnterOrMove }; }, [handleReferenceEnterOrMove]); - return React22.useMemo(() => enabled ? { + return React21.useMemo(() => enabled ? { reference, trigger: reference } : {}, [enabled, reference]); } // node_modules/@base-ui/react/esm/floating-ui-react/hooks/useDismiss.js -var React23 = __toESM(require_react(), 1); +var React22 = __toESM(require_react(), 1); var bubbleHandlerKeys = { intentional: "onClick", sloppy: "onPointerDown" @@ -2768,12 +2779,6 @@ function normalizeProp(normalizable) { }; } function useDismiss(context, props = {}) { - const store2 = "rootStore" in context ? context.rootStore : context; - const open = store2.useState("open"); - const floatingElement = store2.useState("floatingElement"); - const { - dataRef - } = store2.context; const { enabled = true, escapeKey: escapeKey2 = true, @@ -2784,28 +2789,47 @@ function useDismiss(context, props = {}) { bubbles, externalTree } = props; + const store2 = "rootStore" in context ? context.rootStore : context; + const open = store2.useState("open"); + const floatingElement = store2.useState("floatingElement"); + const { + dataRef + } = store2.context; const tree = useFloatingTree(externalTree); const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; const outsidePressEnabled = outsidePress2 !== false; const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); - const pressStartedInsideRef = React23.useRef(false); - const pressStartPreventedRef = React23.useRef(false); - const suppressNextOutsideClickRef = React23.useRef(false); const { escapeKey: escapeKeyBubbles, outsidePress: outsidePressBubbles } = normalizeProp(bubbles); - const touchStateRef = React23.useRef(null); + const pressStartedInsideRef = React22.useRef(false); + const pressStartPreventedRef = React22.useRef(false); + const suppressNextOutsideClickRef = React22.useRef(false); + const isComposingRef = React22.useRef(false); + const currentPointerTypeRef = React22.useRef(""); + const touchStateRef = React22.useRef(null); const cancelDismissOnEndTimeout = useTimeout(); const clearInsideReactTreeTimeout = useTimeout(); const clearInsideReactTree = useStableCallback(() => { clearInsideReactTreeTimeout.clear(); dataRef.current.insideReactTree = false; }); - const isComposingRef = React23.useRef(false); - const currentPointerTypeRef = React23.useRef(""); - const isReferencePressEnabled = useStableCallback(referencePress); + const hasBlockingChild = useStableCallback((bubbleKey) => { + const nodeId = dataRef.current.floatingContext?.nodeId; + const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; + return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); + }); + const isEventWithinOwnElements = useStableCallback((event) => { + return isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement")); + }); + const closeOnReferencePress = useStableCallback((event) => { + if (!referencePress()) { + return; + } + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); + }); const closeOnEscapeKeyDown = useStableCallback((event) => { if (!open || !enabled || !escapeKey2 || event.key !== "Escape") { return; @@ -2813,24 +2837,15 @@ function useDismiss(context, props = {}) { if (isComposingRef.current) { return; } - const nodeId = dataRef.current.floatingContext?.nodeId; - const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; - if (!escapeKeyBubbles) { - if (children.length > 0) { - let shouldDismiss = true; - children.forEach((child) => { - if (child.context?.open && !child.context.dataRef.current.__escapeKeyBubbles) { - shouldDismiss = false; - } - }); - if (!shouldDismiss) { - return; - } - } + if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { + return; } const native = isReactEvent(event) ? event.nativeEvent : event; const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); store2.setOpen(false, eventDetails); + if (!eventDetails.isCanceled) { + event.preventDefault(); + } if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { event.stopPropagation(); } @@ -2839,7 +2854,31 @@ function useDismiss(context, props = {}) { dataRef.current.insideReactTree = true; clearInsideReactTreeTimeout.start(0, clearInsideReactTree); }); - React23.useEffect(() => { + const markPressStartedInsideReactTree = useStableCallback((event) => { + if (!open || !enabled || event.button !== 0) { + return; + } + const target = getTarget(event.nativeEvent); + if (!contains(store2.select("floatingElement"), target)) { + return; + } + if (!pressStartedInsideRef.current) { + pressStartedInsideRef.current = true; + pressStartPreventedRef.current = false; + } + }); + const markInsidePressStartPrevented = useStableCallback((event) => { + if (!open || !enabled) { + return; + } + if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { + return; + } + if (pressStartedInsideRef.current) { + pressStartPreventedRef.current = true; + } + }); + React22.useEffect(() => { if (!open || !enabled) { return void 0; } @@ -2888,10 +2927,14 @@ function useDismiss(context, props = {}) { function isEventWithinFloatingTree(event) { const nodeId = dataRef.current.floatingContext?.nodeId; const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); - return isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement")) || targetIsInsideChildren; + return isEventWithinOwnElements(event) || targetIsInsideChildren; } function closeOnPressOutside(event) { if (shouldIgnoreEvent(event)) { + if (event.type !== "click" && !isEventWithinOwnElements(event)) { + preventedPressSuppressionTimeout.clear(); + suppressNextOutsideClickRef.current = false; + } clearInsideReactTree(); return; } @@ -2947,30 +2990,20 @@ function useDismiss(context, props = {}) { if (typeof outsidePress2 === "function" && !outsidePress2(event)) { return; } - const nodeId = dataRef.current.floatingContext?.nodeId; - const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; - if (children.length > 0) { - let shouldDismiss = true; - children.forEach((child) => { - if (child.context?.open && !child.context.dataRef.current.__outsidePressBubbles) { - shouldDismiss = false; - } - }); - if (!shouldDismiss) { - return; - } + if (hasBlockingChild("__outsidePressBubbles")) { + return; } store2.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); clearInsideReactTree(); } function handlePointerDown(event) { - if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store2.select("open") || !enabled || isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"))) { + if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store2.select("open") || !enabled || isEventWithinOwnElements(event)) { return; } closeOnPressOutside(event); } function handleTouchStart(event) { - if (getOutsidePressEvent() !== "sloppy" || !store2.select("open") || !enabled || isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"))) { + if (getOutsidePressEvent() !== "sloppy" || !store2.select("open") || !enabled || isEventWithinOwnElements(event)) { return; } const touch = event.touches[0]; @@ -3050,7 +3083,7 @@ function useDismiss(context, props = {}) { clearInsideReactTree(); } function handleTouchMove(event) { - if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"))) { + if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { return; } const touch = event.touches[0]; @@ -3073,7 +3106,7 @@ function useDismiss(context, props = {}) { addTargetEventListenerOnce(event, handleTouchMove); } function handleTouchEnd(event) { - if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement"))) { + if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { return; } if (touchStateRef.current.dismissOnTouchEnd) { @@ -3094,50 +3127,16 @@ function useDismiss(context, props = {}) { resetPressStartState(); suppressNextOutsideClickRef.current = false; }; - }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, tree, store2, cancelDismissOnEndTimeout]); - React23.useEffect(clearInsideReactTree, [outsidePress2, clearInsideReactTree]); - const reference = React23.useMemo(() => ({ + }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store2, cancelDismissOnEndTimeout]); + React22.useEffect(clearInsideReactTree, [outsidePress2, clearInsideReactTree]); + const reference = React22.useMemo(() => ({ onKeyDown: closeOnEscapeKeyDown, - [bubbleHandlerKeys[referencePressEvent]]: (event) => { - if (!isReferencePressEnabled()) { - return; - } - store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); - }, + [bubbleHandlerKeys[referencePressEvent]]: closeOnReferencePress, ...referencePressEvent !== "intentional" && { - onClick(event) { - if (!isReferencePressEnabled()) { - return; - } - store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); - } - } - }), [closeOnEscapeKeyDown, store2, referencePressEvent, isReferencePressEnabled]); - const markPressStartedInsideReactTree = useStableCallback((event) => { - if (!open || !enabled || event.button !== 0) { - return; - } - const target = getTarget(event.nativeEvent); - if (!contains(store2.select("floatingElement"), target)) { - return; - } - if (!pressStartedInsideRef.current) { - pressStartedInsideRef.current = true; - pressStartPreventedRef.current = false; - } - }); - const markInsidePressStartPrevented = useStableCallback((event) => { - if (!open || !enabled) { - return; - } - if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { - return; - } - if (pressStartedInsideRef.current) { - pressStartPreventedRef.current = true; + onClick: closeOnReferencePress } - }); - const floating = React23.useMemo(() => ({ + }), [closeOnEscapeKeyDown, closeOnReferencePress, referencePressEvent]); + const floating = React22.useMemo(() => ({ onKeyDown: closeOnEscapeKeyDown, // `onMouseDown` may be blocked if `event.preventDefault()` is called in // `onPointerDown`, such as with <NumberField.ScrubArea>. @@ -3157,7 +3156,7 @@ function useDismiss(context, props = {}) { onTouchEndCapture: markInsideReactTree, onTouchMoveCapture: markInsideReactTree }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); - return React23.useMemo(() => enabled ? { + return React22.useMemo(() => enabled ? { reference, floating, trigger: reference @@ -4437,7 +4436,7 @@ var computePosition2 = (reference, floating, options) => { }; // node_modules/@base-ui/react/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs -var React24 = __toESM(require_react(), 1); +var React23 = __toESM(require_react(), 1); var import_react2 = __toESM(require_react(), 1); var ReactDOM3 = __toESM(require_react_dom(), 1); var isClient = typeof document !== "undefined"; @@ -4503,7 +4502,7 @@ function roundByDPR(element, value) { return Math.round(value * dpr) / dpr; } function useLatestRef(value) { - const ref = React24.useRef(value); + const ref = React23.useRef(value); index(() => { ref.current = value; }); @@ -4526,7 +4525,7 @@ function useFloating(options) { whileElementsMounted, open } = options; - const [data, setData] = React24.useState({ + const [data, setData] = React23.useState({ x: 0, y: 0, strategy, @@ -4534,19 +4533,19 @@ function useFloating(options) { middlewareData: {}, isPositioned: false }); - const [latestMiddleware, setLatestMiddleware] = React24.useState(middleware); + const [latestMiddleware, setLatestMiddleware] = React23.useState(middleware); if (!deepEqual(latestMiddleware, middleware)) { setLatestMiddleware(middleware); } - const [_reference, _setReference] = React24.useState(null); - const [_floating, _setFloating] = React24.useState(null); - const setReference = React24.useCallback((node) => { + const [_reference, _setReference] = React23.useState(null); + const [_floating, _setFloating] = React23.useState(null); + const setReference = React23.useCallback((node) => { if (node !== referenceRef.current) { referenceRef.current = node; _setReference(node); } }, []); - const setFloating = React24.useCallback((node) => { + const setFloating = React23.useCallback((node) => { if (node !== floatingRef.current) { floatingRef.current = node; _setFloating(node); @@ -4554,14 +4553,14 @@ function useFloating(options) { }, []); const referenceEl = externalReference || _reference; const floatingEl = externalFloating || _floating; - const referenceRef = React24.useRef(null); - const floatingRef = React24.useRef(null); - const dataRef = React24.useRef(data); + const referenceRef = React23.useRef(null); + const floatingRef = React23.useRef(null); + const dataRef = React23.useRef(data); const hasWhileElementsMounted = whileElementsMounted != null; const whileElementsMountedRef = useLatestRef(whileElementsMounted); const platformRef = useLatestRef(platform3); const openRef = useLatestRef(open); - const update2 = React24.useCallback(() => { + const update2 = React23.useCallback(() => { if (!referenceRef.current || !floatingRef.current) { return; } @@ -4599,7 +4598,7 @@ function useFloating(options) { })); } }, [open]); - const isMountedRef = React24.useRef(false); + const isMountedRef = React23.useRef(false); index(() => { isMountedRef.current = true; return () => { @@ -4616,17 +4615,17 @@ function useFloating(options) { update2(); } }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); - const refs = React24.useMemo(() => ({ + const refs = React23.useMemo(() => ({ reference: referenceRef, floating: floatingRef, setReference, setFloating }), [setReference, setFloating]); - const elements = React24.useMemo(() => ({ + const elements = React23.useMemo(() => ({ reference: referenceEl, floating: floatingEl }), [referenceEl, floatingEl]); - const floatingStyles = React24.useMemo(() => { + const floatingStyles = React23.useMemo(() => { const initialStyles = { position: strategy, left: 0, @@ -4652,7 +4651,7 @@ function useFloating(options) { top: y }; }, [strategy, transform, elements.floating, data.x, data.y]); - return React24.useMemo(() => ({ + return React23.useMemo(() => ({ ...data, update: update2, refs, @@ -4708,6 +4707,12 @@ var hide3 = (options, deps) => { }; }; +// node_modules/@base-ui/react/esm/utils/popups/popupStoreUtils.js +var React28 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +var React27 = __toESM(require_react(), 1); + // node_modules/@base-ui/utils/esm/store/createSelector.js var createSelector = (a, b, c, d, e, f, ...other) => { if (other.length > 0) { @@ -4761,12 +4766,12 @@ var createSelector = (a, b, c, d, e, f, ...other) => { }; // node_modules/@base-ui/utils/esm/store/useStore.js -var React26 = __toESM(require_react(), 1); +var React25 = __toESM(require_react(), 1); var import_shim = __toESM(require_shim(), 1); var import_with_selector = __toESM(require_with_selector(), 1); // node_modules/@base-ui/utils/esm/fastHooks.js -var React25 = __toESM(require_react(), 1); +var React24 = __toESM(require_react(), 1); var hooks = []; var currentInstance = void 0; function getInstance() { @@ -4798,7 +4803,7 @@ function fastComponent(fn) { return FastComponent; } function fastComponentRef(fn) { - return /* @__PURE__ */ React25.forwardRef(fastComponent(fn)); + return /* @__PURE__ */ React24.forwardRef(fastComponent(fn)); } function createInstance() { return { @@ -4813,7 +4818,7 @@ function useStore(store2, selector, a1, a2, a3) { return useStoreImplementation(store2, selector, a1, a2, a3); } function useStoreR19(store2, selector, a1, a2, a3) { - const getSelection = React26.useCallback(() => selector(store2.getSnapshot(), a1, a2, a3), [store2, selector, a1, a2, a3]); + const getSelection = React25.useCallback(() => selector(store2.getSnapshot(), a1, a2, a3), [store2, selector, a1, a2, a3]); return (0, import_shim.useSyncExternalStore)(store2.subscribe, getSelection, getSelection); } register({ @@ -5002,7 +5007,7 @@ var Store = class { }; // node_modules/@base-ui/utils/esm/store/ReactStore.js -var React27 = __toESM(require_react(), 1); +var React26 = __toESM(require_react(), 1); var ReactStore = class extends Store { /** * Creates a new ReactStore instance. @@ -5026,12 +5031,13 @@ var ReactStore = class extends Store { * by `useState` is updated before the next render (similarly to React's `useState`). */ useSyncedValue(key, value) { - React27.useDebugValue(key); + React26.useDebugValue(key); + const store2 = this; useIsoLayoutEffect(() => { - if (this.state[key] !== value) { - this.set(key, value); + if (store2.state[key] !== value) { + store2.set(key, value); } - }, [key, value]); + }, [store2, key, value]); } /** * Synchronizes a single external value into the store and @@ -5060,8 +5066,8 @@ var ReactStore = class extends Store { useSyncedValues(statePart) { const store2 = this; if (true) { - React27.useDebugValue(statePart, (p) => Object.keys(p)); - const keys = React27.useRef(Object.keys(statePart)).current; + React26.useDebugValue(statePart, (p) => Object.keys(p)); + const keys = React26.useRef(Object.keys(statePart)).current; const nextKeys = Object.keys(statePart); if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); @@ -5077,16 +5083,17 @@ var ReactStore = class extends Store { * is non-undefined, the store's state at `key` is updated to match `controlled`. */ useControlledProp(key, controlled) { - React27.useDebugValue(key); + React26.useDebugValue(key); + const store2 = this; const isControlled = controlled !== void 0; useIsoLayoutEffect(() => { - if (isControlled && !Object.is(this.state[key], controlled)) { - super.setState({ - ...this.state, + if (isControlled && !Object.is(store2.state[key], controlled)) { + store2.setState({ + ...store2.state, [key]: controlled }); } - }, [key, controlled, isControlled]); + }, [store2, key, controlled, isControlled]); if (true) { const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); if (!cache.has(key)) { @@ -5114,7 +5121,7 @@ var ReactStore = class extends Store { * @param key Key of the selector to use. */ useState(key, a1, a2, a3) { - React27.useDebugValue(key); + React26.useDebugValue(key); return useStore(this, this.selectors[key], a1, a2, a3); } /** @@ -5125,7 +5132,7 @@ var ReactStore = class extends Store { * @param fn Function to assign. */ useContextCallback(key, fn) { - React27.useDebugValue(key); + React26.useDebugValue(key); const stableFunction = useStableCallback(fn ?? NOOP); this.context[key] = stableFunction; } @@ -5136,7 +5143,7 @@ var ReactStore = class extends Store { * @param key Key of the state to set. */ useStateSetter(key) { - const ref = React27.useRef(void 0); + const ref = React26.useRef(void 0); if (ref.current === void 0) { ref.current = (value) => { this.set(key, value); @@ -5243,8 +5250,83 @@ var FloatingRootStore = class extends ReactStore { }; }; +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +function useSyncedFloatingRootContext(options) { + const { + popupStore, + treatPopupAsFloatingElement = false, + floatingRootContext: floatingRootContextProp, + floatingId, + nested, + onOpenChange + } = options; + const open = popupStore.useState("open"); + const referenceElement = popupStore.useState("activeTriggerElement"); + const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement"); + const triggerElements = popupStore.context.triggerElements; + const handleOpenChange = onOpenChange; + const internalStoreRef = React27.useRef(null); + if (floatingRootContextProp === void 0 && internalStoreRef.current === null) { + internalStoreRef.current = new FloatingRootStore({ + open, + transitionStatus: void 0, + referenceElement, + floatingElement, + triggerElements, + onOpenChange: handleOpenChange, + floatingId, + syncOnly: true, + nested + }); + } + const store2 = floatingRootContextProp ?? internalStoreRef.current; + popupStore.useSyncedValue("floatingId", floatingId); + useIsoLayoutEffect(() => { + const valuesToSync = { + open, + floatingId, + referenceElement, + floatingElement + }; + if (isElement(referenceElement)) { + valuesToSync.domReferenceElement = referenceElement; + } + if (store2.state.positionReference === store2.state.referenceElement) { + valuesToSync.positionReference = referenceElement; + } + store2.update(valuesToSync); + }, [open, floatingId, referenceElement, floatingElement, store2]); + store2.context.onOpenChange = handleOpenChange; + store2.context.nested = nested; + return store2; +} + // node_modules/@base-ui/react/esm/utils/popups/popupStoreUtils.js -var React28 = __toESM(require_react(), 1); +var FOCUSABLE_POPUP_PROPS = { + tabIndex: -1, + [FOCUSABLE_ATTRIBUTE]: "" +}; +function usePopupStore(externalStore, createStore, treatPopupAsFloatingElement = false) { + const floatingId = useId(); + const nested = useFloatingParentNodeId() != null; + const internalStoreRef = React28.useRef(null); + if (externalStore === void 0 && internalStoreRef.current === null) { + internalStoreRef.current = createStore(floatingId, nested); + } + const store2 = externalStore ?? internalStoreRef.current; + useSyncedFloatingRootContext({ + popupStore: store2, + treatPopupAsFloatingElement, + floatingRootContext: store2.state.floatingRootContext, + floatingId, + nested, + onOpenChange: store2.setOpen + }); + return { + store: store2, + internalStore: internalStoreRef.current + }; +} function useTriggerRegistration(id, store2) { const registeredElementIdRef = React28.useRef(null); const registeredElementRef = React28.useRef(null); @@ -5252,12 +5334,14 @@ function useTriggerRegistration(id, store2) { if (id === void 0) { return; } + let shouldSyncTriggerCount = false; if (registeredElementIdRef.current !== null) { const registeredId = registeredElementIdRef.current; const registeredElement = registeredElementRef.current; const currentElement = store2.context.triggerElements.getById(registeredId); if (registeredElement && currentElement === registeredElement) { store2.context.triggerElements.delete(registeredId); + shouldSyncTriggerCount = true; } registeredElementIdRef.current = null; registeredElementRef.current = null; @@ -5266,26 +5350,41 @@ function useTriggerRegistration(id, store2) { registeredElementIdRef.current = id; registeredElementRef.current = element; store2.context.triggerElements.add(id, element); + shouldSyncTriggerCount = true; + } + if (shouldSyncTriggerCount) { + const triggerCount = store2.context.triggerElements.size; + if (store2.select("open") && store2.state.triggerCount !== triggerCount) { + store2.set("triggerCount", triggerCount); + } } }, [store2, id]); } +function setOpenTriggerState(state, open, trigger) { + const triggerId = trigger?.id ?? null; + if (triggerId || open) { + state.activeTriggerId = triggerId; + state.activeTriggerElement = trigger ?? null; + } +} function useTriggerDataForwarding(triggerId, triggerElementRef, store2, stateUpdates) { const isMountedByThisTrigger = store2.useState("isMountedByTrigger", triggerId); const baseRegisterTrigger = useTriggerRegistration(triggerId, store2); const registerTrigger = useStableCallback((element) => { baseRegisterTrigger(element); - if (!element || !store2.select("open")) { + if (!element) { return; } + const open = store2.select("open"); const activeTriggerId = store2.select("activeTriggerId"); if (activeTriggerId === triggerId) { store2.update({ activeTriggerElement: element, - ...stateUpdates + ...open ? stateUpdates : null }); return; } - if (activeTriggerId == null) { + if (activeTriggerId == null && open) { store2.update({ activeTriggerId: triggerId, activeTriggerElement: element, @@ -5308,18 +5407,31 @@ function useTriggerDataForwarding(triggerId, triggerElementRef, store2, stateUpd } function useImplicitActiveTrigger(store2) { const open = store2.useState("open"); + const reactiveTriggerCount = store2.useState("triggerCount"); useIsoLayoutEffect(() => { - if (open && !store2.select("activeTriggerId") && store2.context.triggerElements.size === 1) { + if (!open) { + if (store2.state.triggerCount !== 0) { + store2.set("triggerCount", 0); + } + return; + } + const triggerCount = store2.context.triggerElements.size; + const stateUpdates = {}; + if (store2.state.triggerCount !== triggerCount) { + stateUpdates.triggerCount = triggerCount; + } + if (!store2.select("activeTriggerId") && triggerCount === 1) { const iteratorResult = store2.context.triggerElements.entries().next(); if (!iteratorResult.done) { const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value; - store2.update({ - activeTriggerId: implicitTriggerId, - activeTriggerElement: implicitTriggerElement - }); + stateUpdates.activeTriggerId = implicitTriggerId; + stateUpdates.activeTriggerElement = implicitTriggerElement; } } - }, [open, store2]); + if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0) { + store2.update(stateUpdates); + } + }, [open, store2, reactiveTriggerCount]); } function useOpenStateTransitions(open, store2, onUnmount) { const { @@ -5336,14 +5448,15 @@ function useOpenStateTransitions(open, store2, onUnmount) { store2.update({ activeTriggerId: null, activeTriggerElement: null, - mounted: false + mounted: false, + preventUnmountingOnClose: false }); onUnmount?.(); store2.context.onOpenChangeComplete?.(false); }); const preventUnmountingOnClose = store2.useState("preventUnmountingOnClose"); useOpenChangeComplete({ - enabled: !preventUnmountingOnClose, + enabled: mounted && !open && !preventUnmountingOnClose, open, ref: store2.context.popupRef, onComplete() { @@ -5357,6 +5470,16 @@ function useOpenStateTransitions(open, store2, onUnmount) { transitionStatus }; } +function usePopupInteractionProps(store2, statePart) { + store2.useSyncedValues(statePart); + useIsoLayoutEffect(() => () => { + store2.update({ + activeTriggerProps: EMPTY_OBJECT, + inactiveTriggerProps: EMPTY_OBJECT, + popupProps: EMPTY_OBJECT + }); + }, [store2]); +} // node_modules/@base-ui/react/esm/utils/popups/popupTriggerMap.js var PopupTriggerMap = class { @@ -5446,7 +5569,7 @@ function getEmptyRootContext() { floatingElement: null, referenceElement: null, triggerElements: new PopupTriggerMap(), - floatingId: "", + floatingId: void 0, syncOnly: false, nested: false, onOpenChange: void 0 @@ -5461,6 +5584,8 @@ function createInitialPopupStoreState() { mounted: false, transitionStatus: void 0, floatingRootContext: getEmptyRootContext(), + floatingId: void 0, + triggerCount: 0, preventUnmountingOnClose: false, payload: void 0, activeTriggerId: null, @@ -5473,16 +5598,45 @@ function createInitialPopupStoreState() { popupProps: EMPTY_OBJECT }; } +function createPopupFloatingRootContext(triggerElements, floatingId, nested = false) { + return new FloatingRootStore({ + open: false, + transitionStatus: void 0, + floatingElement: null, + referenceElement: null, + triggerElements, + floatingId, + syncOnly: true, + nested, + onOpenChange: void 0 + }); +} var activeTriggerIdSelector = createSelector((state) => state.triggerIdProp ?? state.activeTriggerId); +var openSelector = createSelector((state) => state.openProp ?? state.open); +var popupIdSelector = createSelector((state) => { + const popupId = state.popupElement?.id ?? state.floatingId; + return popupId || void 0; +}); +function triggerOwnsOpenPopup(state, triggerId) { + return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId; +} +function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) { + if (triggerOwnsOpenPopup(state, triggerId)) { + return true; + } + return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && state.triggerCount === 1; +} var popupStoreSelectors = { - open: createSelector((state) => state.openProp ?? state.open), + open: openSelector, mounted: createSelector((state) => state.mounted), transitionStatus: createSelector((state) => state.transitionStatus), floatingRootContext: createSelector((state) => state.floatingRootContext), + triggerCount: createSelector((state) => state.triggerCount), preventUnmountingOnClose: createSelector((state) => state.preventUnmountingOnClose), payload: createSelector((state) => state.payload), activeTriggerId: activeTriggerIdSelector, activeTriggerElement: createSelector((state) => state.mounted ? state.activeTriggerElement : null), + popupId: popupIdSelector, /** * Whether the trigger with the given ID was used to open the popup. */ @@ -5490,12 +5644,16 @@ var popupStoreSelectors = { /** * Whether the popup is open and was activated by a trigger with the given ID. */ - isOpenedByTrigger: createSelector((state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.open), + isOpenedByTrigger: createSelector((state, triggerId) => triggerOwnsOpenPopup(state, triggerId)), /** * Whether the popup is mounted and was activated by a trigger with the given ID. */ isMountedByTrigger: createSelector((state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted), triggerProps: createSelector((state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps), + /** + * Popup id for the trigger that currently owns the open popup. + */ + triggerPopupId: createSelector((state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0), popupProps: createSelector((state) => state.popupProps), popupElement: createSelector((state) => state.popupElement), positionerElement: createSelector((state) => state.positionerElement) @@ -5552,30 +5710,37 @@ function useFloating2(options = {}) { nodeId, externalTree } = options; - const internalRootStore = useFloatingRootContext(options); - const rootContext = options.rootContext || internalRootStore; - const rootContextElements = { - reference: rootContext.useState("referenceElement"), - floating: rootContext.useState("floatingElement"), - domReference: rootContext.useState("domReferenceElement") - }; + const internalStore = useFloatingRootContext(options); + const store2 = options.rootContext || internalStore; + const referenceElement = store2.useState("referenceElement"); + const floatingElement = store2.useState("floatingElement"); + const domReferenceElement = store2.useState("domReferenceElement"); + const open = store2.useState("open"); + const floatingId = store2.useState("floatingId"); const [positionReference, setPositionReferenceRaw] = React29.useState(null); + const [localDomReference, setLocalDomReference] = React29.useState(void 0); + const [localFloatingElement, setLocalFloatingElement] = React29.useState(void 0); const domReferenceRef = React29.useRef(null); const tree = useFloatingTree(externalTree); - useIsoLayoutEffect(() => { - if (rootContextElements.domReference) { - domReferenceRef.current = rootContextElements.domReference; - } - }, [rootContextElements.domReference]); + const storeElements = React29.useMemo(() => ({ + reference: referenceElement, + floating: floatingElement, + domReference: domReferenceElement + }), [referenceElement, floatingElement, domReferenceElement]); const position = useFloating({ ...options, elements: { - ...rootContextElements, + ...storeElements, ...positionReference && { reference: positionReference } } }); + const localDomReferenceElement = isElement(localDomReference) ? localDomReference : null; + const syncedFloatingElement = localFloatingElement === void 0 ? store2.state.floatingElement : localFloatingElement; + store2.useSyncedValue("referenceElement", localDomReference ?? null); + store2.useSyncedValue("domReferenceElement", localDomReference === void 0 ? domReferenceElement : localDomReferenceElement); + store2.useSyncedValue("floatingElement", syncedFloatingElement); const setPositionReference = React29.useCallback((node) => { const computedPositionReference = isElement(node) ? { getBoundingClientRect: () => node.getBoundingClientRect(), @@ -5585,12 +5750,6 @@ function useFloating2(options = {}) { setPositionReferenceRaw(computedPositionReference); position.refs.setReference(computedPositionReference); }, [position.refs]); - const [localDomReference, setLocalDomReference] = React29.useState(void 0); - const [localFloatingElement, setLocalFloatingElement] = React29.useState(null); - rootContext.useSyncedValue("referenceElement", localDomReference ?? null); - const localDomReferenceElement = isElement(localDomReference) ? localDomReference : null; - rootContext.useSyncedValue("domReferenceElement", localDomReference === void 0 ? rootContextElements.domReference : localDomReferenceElement); - rootContext.useSyncedValue("floatingElement", localFloatingElement); const setReference = React29.useCallback((node) => { if (isElement(node) || node === null) { domReferenceRef.current = node; @@ -5616,24 +5775,27 @@ function useFloating2(options = {}) { }), [position.refs, setReference, setFloating, setPositionReference]); const elements = React29.useMemo(() => ({ ...position.elements, - domReference: rootContextElements.domReference - }), [position.elements, rootContextElements.domReference]); - const open = rootContext.useState("open"); - const floatingId = rootContext.useState("floatingId"); + domReference: domReferenceElement + }), [position.elements, domReferenceElement]); const context = React29.useMemo(() => ({ ...position, - dataRef: rootContext.context.dataRef, + dataRef: store2.context.dataRef, open, - onOpenChange: rootContext.setOpen, - events: rootContext.context.events, + onOpenChange: store2.setOpen, + events: store2.context.events, floatingId, refs, elements, nodeId, - rootStore: rootContext - }), [position, refs, elements, nodeId, rootContext, open, floatingId]); + rootStore: store2 + }), [position, refs, elements, nodeId, store2, open, floatingId]); + useIsoLayoutEffect(() => { + if (domReferenceElement) { + domReferenceRef.current = domReferenceElement; + } + }, [domReferenceElement]); useIsoLayoutEffect(() => { - rootContext.context.dataRef.current.floatingContext = context; + store2.context.dataRef.current.floatingContext = context; const node = tree?.nodesRef.current.find((n) => n.id === nodeId); if (node) { node.context = context; @@ -5644,71 +5806,27 @@ function useFloating2(options = {}) { context, refs, elements, - rootStore: rootContext - }), [position, refs, elements, context, rootContext]); -} - -// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js -function useSyncedFloatingRootContext(options) { - const { - popupStore, - treatPopupAsFloatingElement = false, - onOpenChange - } = options; - const floatingId = useId(); - const nested = useFloatingParentNodeId() != null; - const open = popupStore.useState("open"); - const referenceElement = popupStore.useState("activeTriggerElement"); - const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement"); - const triggerElements = popupStore.context.triggerElements; - const store2 = useRefWithInit(() => new FloatingRootStore({ - open, - transitionStatus: void 0, - referenceElement, - floatingElement, - triggerElements, - onOpenChange, - floatingId, - syncOnly: true, - nested - })).current; - useIsoLayoutEffect(() => { - const valuesToSync = { - open, - floatingId, - referenceElement, - floatingElement - }; - if (isElement(referenceElement)) { - valuesToSync.domReferenceElement = referenceElement; - } - if (store2.state.positionReference === store2.state.referenceElement) { - valuesToSync.positionReference = referenceElement; - } - store2.update(valuesToSync); - }, [open, floatingId, referenceElement, floatingElement, store2]); - store2.context.onOpenChange = onOpenChange; - store2.context.nested = nested; - return store2; + rootStore: store2 + }), [position, refs, elements, context, store2]); } // node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFocus.js var React30 = __toESM(require_react(), 1); var isMacSafari = isMac && isSafari; function useFocus(context, props = {}) { + const { + enabled = true, + delay + } = props; const store2 = "rootStore" in context ? context.rootStore : context; const { events, dataRef } = store2.context; - const { - enabled = true, - delay - } = props; const blockFocusRef = React30.useRef(false); const blockedReferenceRef = React30.useRef(null); - const timeout = useTimeout(); const keyboardModalityRef = React30.useRef(true); + const timeout = useTimeout(); React30.useEffect(() => { const domReference = store2.select("domReferenceElement"); if (!enabled) { @@ -5747,70 +5865,73 @@ function useFocus(context, props = {}) { events.off("openchange", onOpenChangeLocal); }; }, [events, enabled, store2]); - const reference = React30.useMemo(() => ({ - onMouseLeave() { + const reference = React30.useMemo(() => { + function resetBlockedFocus() { blockFocusRef.current = false; blockedReferenceRef.current = null; - }, - onFocus(event) { - const focusTarget = event.currentTarget; - if (blockFocusRef.current) { - if (blockedReferenceRef.current === focusTarget) { - return; - } - blockFocusRef.current = false; - blockedReferenceRef.current = null; - } - const target = getTarget(event.nativeEvent); - if (isElement(target)) { - if (isMacSafari && !event.relatedTarget) { - if (!keyboardModalityRef.current && !isTypeableElement(target)) { + } + return { + onMouseLeave() { + resetBlockedFocus(); + }, + onFocus(event) { + const focusTarget = event.currentTarget; + if (blockFocusRef.current) { + if (blockedReferenceRef.current === focusTarget) { return; } - } else if (!matchesFocusVisible(target)) { - return; - } - } - const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements); - const { - nativeEvent, - currentTarget - } = event; - const delayValue = typeof delay === "function" ? delay() : delay; - if (store2.select("open") && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === void 0) { - store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); - return; - } - timeout.start(delayValue, () => { - if (blockFocusRef.current) { - return; - } - store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); - }); - }, - onBlur(event) { - blockFocusRef.current = false; - blockedReferenceRef.current = null; - const relatedTarget = event.relatedTarget; - const nativeEvent = event.nativeEvent; - const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside"; - timeout.start(0, () => { - const domReference = store2.select("domReferenceElement"); - const activeEl = activeElement(ownerDocument(domReference)); - if (!relatedTarget && activeEl === domReference) { - return; + resetBlockedFocus(); } - if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) { - return; + const target = getTarget(event.nativeEvent); + if (isElement(target)) { + if (isMacSafari && !event.relatedTarget) { + if (!keyboardModalityRef.current && !isTypeableElement(target)) { + return; + } + } else if (!matchesFocusVisible(target)) { + return; + } } - const nextFocusedElement = relatedTarget ?? activeEl; - if (isTargetInsideEnabledTrigger(nextFocusedElement, store2.context.triggerElements)) { + const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements); + const { + nativeEvent, + currentTarget + } = event; + const delayValue = typeof delay === "function" ? delay() : delay; + if (store2.select("open") && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === void 0) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); return; } - store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent)); - }); - } - }), [dataRef, store2, timeout, delay]); + timeout.start(delayValue, () => { + if (blockFocusRef.current) { + return; + } + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); + }); + }, + onBlur(event) { + resetBlockedFocus(); + const relatedTarget = event.relatedTarget; + const nativeEvent = event.nativeEvent; + const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside"; + timeout.start(0, () => { + const domReference = store2.select("domReferenceElement"); + const activeEl = activeElement(ownerDocument(domReference)); + if (!relatedTarget && activeEl === domReference) { + return; + } + if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) { + return; + } + const nextFocusedElement = relatedTarget ?? activeEl; + if (isTargetInsideEnabledTrigger(nextFocusedElement, store2.context.triggerElements)) { + return; + } + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent)); + }); + } + }; + }, [dataRef, delay, store2, timeout]); return React30.useMemo(() => enabled ? { reference, trigger: reference @@ -5885,8 +6006,8 @@ function applySafePolygonPointerEventsMutation(instance, options) { floatingElement.style.pointerEvents = "auto"; } function useHoverInteractionSharedState(store2) { - const instance = useRefWithInit(HoverInteraction.create).current; const data = store2.context.dataRef.current; + const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current; if (!data.hoverInteractionState) { data.hoverInteractionState = instance; } @@ -5896,6 +6017,11 @@ function useHoverInteractionSharedState(store2) { // node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js function useHoverFloatingInteraction(context, parameters = {}) { + const { + enabled = true, + closeDelay: closeDelayProp = 0, + nodeId: nodeIdProp + } = parameters; const store2 = "rootStore" in context ? context.rootStore : context; const open = store2.useState("open"); const floatingElement = store2.useState("floatingElement"); @@ -5903,48 +6029,19 @@ function useHoverFloatingInteraction(context, parameters = {}) { const { dataRef } = store2.context; - const { - enabled = true, - closeDelay: closeDelayProp = 0, - nodeId: nodeIdProp - } = parameters; - const instance = useHoverInteractionSharedState(store2); const tree = useFloatingTree(); const parentId = useFloatingParentNodeId(); + const instance = useHoverInteractionSharedState(store2); + const childClosedTimeout = useTimeout(); const isClickLikeOpenEvent2 = useStableCallback(() => { return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); }); const isHoverOpen = useStableCallback(() => { - const type = dataRef.current.openEvent?.type; - return type?.includes("mouse") && type !== "mousedown"; + return isHoverOpenEvent(dataRef.current.openEvent?.type); }); - const isRelatedTargetInsideEnabledTrigger = useStableCallback((target) => { - return isTargetInsideEnabledTrigger(target, store2.context.triggerElements); - }); - const closeWithDelay = React31.useCallback((event) => { - const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType); - const close = () => { - store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); - tree?.events.emit("floating.closed", event); - }; - if (closeDelay) { - instance.openChangeTimeout.start(closeDelay, close); - } else { - instance.openChangeTimeout.clear(); - close(); - } - }, [closeDelayProp, store2, instance, tree]); const clearPointerEvents = useStableCallback(() => { clearSafePolygonPointerEventsMutation(instance); }); - const handleInteractInside = useStableCallback((event) => { - const target = getTarget(event); - if (!isInteractiveElement(target)) { - instance.interactedInside = false; - return; - } - instance.interactedInside = target?.closest("[aria-haspopup]") != null; - }); useIsoLayoutEffect(() => { if (!open) { instance.pointerType = void 0; @@ -5968,7 +6065,9 @@ function useHoverFloatingInteraction(context, parameters = {}) { if (parentFloating) { parentFloating.style.pointerEvents = ""; } - const scopeElement = instance.handleCloseOptions?.getScope?.() ?? instance.pointerEventsScopeElement ?? parentFloating ?? ref.closest("[data-rootownerid]") ?? doc.body; + const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null; + const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null; + const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? ref.closest("[data-rootownerid]") ?? doc.body; applySafePolygonPointerEventsMutation(instance, { scopeElement, referenceElement: ref, @@ -5980,11 +6079,34 @@ function useHoverFloatingInteraction(context, parameters = {}) { } return void 0; }, [enabled, open, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]); - const childClosedTimeout = useTimeout(); React31.useEffect(() => { if (!enabled) { return void 0; } + function hasParentChildren() { + return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0); + } + function closeWithDelay(event) { + const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType); + const close = () => { + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + }; + if (closeDelay) { + instance.openChangeTimeout.start(closeDelay, close); + } else { + instance.openChangeTimeout.clear(); + close(); + } + } + function handleInteractInside(event) { + const target = getTarget(event); + if (!isInteractiveElement(target)) { + instance.interactedInside = false; + return; + } + instance.interactedInside = target?.closest("[aria-haspopup]") != null; + } function onFloatingMouseEnter() { instance.openChangeTimeout.clear(); childClosedTimeout.clear(); @@ -5992,11 +6114,11 @@ function useHoverFloatingInteraction(context, parameters = {}) { clearPointerEvents(); } function onFloatingMouseLeave(event) { - if (tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0) { + if (hasParentChildren() && tree) { tree.events.on("floating.closed", onNodeClosed); return; } - if (isRelatedTargetInsideEnabledTrigger(event.relatedTarget)) { + if (isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements)) { return; } const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp; @@ -6015,7 +6137,7 @@ function useHoverFloatingInteraction(context, parameters = {}) { } } function onNodeClosed(event) { - if (!tree || !parentId || getNodeChildren(tree.nodesRef.current, parentId).length > 0) { + if (!tree || !parentId || hasParentChildren()) { return; } childClosedTimeout.start(0, () => { @@ -6028,7 +6150,7 @@ function useHoverFloatingInteraction(context, parameters = {}) { return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => { tree?.events.off("floating.closed", onNodeClosed); }); - }, [enabled, floatingElement, store2, dataRef, nodeIdProp, isClickLikeOpenEvent2, isRelatedTargetInsideEnabledTrigger, closeWithDelay, clearPointerEvents, handleInteractInside, instance, tree, parentId, childClosedTimeout]); + }, [enabled, floatingElement, store2, dataRef, closeDelayProp, nodeIdProp, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]); } // node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js @@ -6038,11 +6160,6 @@ var EMPTY_REF = { current: null }; function useHoverReferenceInteraction(context, props = {}) { - const store2 = "rootStore" in context ? context.rootStore : context; - const { - dataRef, - events - } = store2.context; const { enabled = true, delay = 0, @@ -6054,8 +6171,14 @@ function useHoverReferenceInteraction(context, props = {}) { externalTree, isActiveTrigger = true, getHandleCloseContext, - isClosing + isClosing, + shouldOpen: shouldOpenProp } = props; + const store2 = "rootStore" in context ? context.rootStore : context; + const { + dataRef, + events + } = store2.context; const tree = useFloatingTree(externalTree); const instance = useHoverInteractionSharedState(store2); const isHoverCloseActiveRef = React32.useRef(false); @@ -6063,15 +6186,13 @@ function useHoverReferenceInteraction(context, props = {}) { const delayRef = useValueAsRef(delay); const restMsRef = useValueAsRef(restMs); const enabledRef = useValueAsRef(enabled); + const shouldOpenRef = useValueAsRef(shouldOpenProp); const isClosingRef = useValueAsRef(isClosing); - if (isActiveTrigger) { - instance.handleCloseOptions = handleCloseRef.current?.__options; - } const isClickLikeOpenEvent2 = useStableCallback(() => { return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); }); - const isRelatedTargetInsideEnabledTrigger = useStableCallback((target) => { - return isTargetInsideEnabledTrigger(target, store2.context.triggerElements); + const checkShouldOpen = useStableCallback(() => { + return shouldOpenRef.current?.() !== false; }); const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => { const allTriggers = store2.context.triggerElements; @@ -6084,19 +6205,6 @@ function useHoverReferenceInteraction(context, props = {}) { const targetElement = target; return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement)); }); - const closeWithDelay = useStableCallback((event, runElseBranch = true) => { - const closeDelay = getDelay(delayRef.current, "close", instance.pointerType); - if (closeDelay) { - instance.openChangeTimeout.start(closeDelay, () => { - store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); - tree?.events.emit("floating.closed", event); - }); - } else if (runElseBranch) { - instance.openChangeTimeout.clear(); - store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); - tree?.events.emit("floating.closed", event); - } - }); const cleanupMouseMoveHandler = useStableCallback(() => { if (!instance.handler) { return; @@ -6108,6 +6216,9 @@ function useHoverReferenceInteraction(context, props = {}) { const clearPointerEvents = useStableCallback(() => { clearSafePolygonPointerEventsMutation(instance); }); + if (isActiveTrigger) { + instance.handleCloseOptions = handleCloseRef.current?.__options; + } React32.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]); React32.useEffect(() => { if (!enabled) { @@ -6134,6 +6245,19 @@ function useHoverReferenceInteraction(context, props = {}) { if (!enabled) { return void 0; } + function closeWithDelay(event, runElseBranch = true) { + const closeDelay = getDelay(delayRef.current, "close", instance.pointerType); + if (closeDelay) { + instance.openChangeTimeout.start(closeDelay, () => { + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + }); + } else if (runElseBranch) { + instance.openChangeTimeout.clear(); + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + } + } const trigger = triggerElementRef.current ?? (isActiveTrigger ? store2.select("domReferenceElement") : null); if (!isElement(trigger)) { return void 0; @@ -6170,7 +6294,9 @@ function useHoverReferenceInteraction(context, props = {}) { const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition; const shouldOpen = !isOpen || isOverInactive; if (shouldOpenImmediately) { - store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + if (checkShouldOpen()) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + } return; } if (isRestOnlyDelay) { @@ -6178,12 +6304,14 @@ function useHoverReferenceInteraction(context, props = {}) { } if (openDelay) { instance.openChangeTimeout.start(openDelay, () => { - if (shouldOpen) { + if (shouldOpen && checkShouldOpen()) { store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); } }); } else if (shouldOpen) { - store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + if (checkShouldOpen()) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + } } } function onMouseLeave(event) { @@ -6197,8 +6325,7 @@ function useHoverReferenceInteraction(context, props = {}) { instance.restTimeout.clear(); instance.restTimeoutPending = false; const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.(); - const ignoreRelatedTargetTrigger = isRelatedTargetInsideEnabledTrigger(event.relatedTarget); - if (ignoreRelatedTargetTrigger) { + if (isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements)) { return; } if (handleCloseRef.current && handleCloseContextBase) { @@ -6234,7 +6361,7 @@ function useHoverReferenceInteraction(context, props = {}) { }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave)); } return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave)); - }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, closeWithDelay, store2, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, isRelatedTargetInsideEnabledTrigger, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef]); + }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store2, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen]); return React32.useMemo(() => { if (!enabled) { return void 0; @@ -6281,7 +6408,7 @@ function useHoverReferenceInteraction(context, props = {}) { return; } const latestOpen = store2.select("open"); - if (!instance.blockMouseMove && (!latestOpen || isOverInactive)) { + if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) { store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger)); } } @@ -6297,95 +6424,7 @@ function useHoverReferenceInteraction(context, props = {}) { } } }; - }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store2, restMsRef]); -} - -// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useInteractions.js -var React33 = __toESM(require_react(), 1); -function useInteractions(propsList = []) { - const referenceDeps = propsList.map((key) => key?.reference); - const floatingDeps = propsList.map((key) => key?.floating); - const itemDeps = propsList.map((key) => key?.item); - const triggerDeps = propsList.map((key) => key?.trigger); - const getReferenceProps = React33.useCallback( - (userProps) => mergeProps2(userProps, propsList, "reference"), - // eslint-disable-next-line react-hooks/exhaustive-deps - referenceDeps - ); - const getFloatingProps = React33.useCallback( - (userProps) => mergeProps2(userProps, propsList, "floating"), - // eslint-disable-next-line react-hooks/exhaustive-deps - floatingDeps - ); - const getItemProps = React33.useCallback( - (userProps) => mergeProps2(userProps, propsList, "item"), - // eslint-disable-next-line react-hooks/exhaustive-deps - itemDeps - ); - const getTriggerProps = React33.useCallback( - (userProps) => mergeProps2(userProps, propsList, "trigger"), - // eslint-disable-next-line react-hooks/exhaustive-deps - triggerDeps - ); - return React33.useMemo(() => ({ - getReferenceProps, - getFloatingProps, - getItemProps, - getTriggerProps - }), [getReferenceProps, getFloatingProps, getItemProps, getTriggerProps]); -} -function mergeProps2(userProps, propsList, elementKey) { - const eventHandlers = /* @__PURE__ */ new Map(); - const isItem = elementKey === "item"; - const outputProps = {}; - if (elementKey === "floating") { - outputProps.tabIndex = -1; - outputProps[FOCUSABLE_ATTRIBUTE] = ""; - } - for (const key in userProps) { - if (isItem && userProps) { - if (key === ACTIVE_KEY || key === SELECTED_KEY) { - continue; - } - } - outputProps[key] = userProps[key]; - } - for (let i = 0; i < propsList.length; i += 1) { - let props; - const propsOrGetProps = propsList[i]?.[elementKey]; - if (typeof propsOrGetProps === "function") { - props = userProps ? propsOrGetProps(userProps) : null; - } else { - props = propsOrGetProps; - } - if (!props) { - continue; - } - mutablyMergeProps(outputProps, props, isItem, eventHandlers); - } - mutablyMergeProps(outputProps, userProps, isItem, eventHandlers); - return outputProps; -} -function mutablyMergeProps(outputProps, props, isItem, eventHandlers) { - for (const key in props) { - const value = props[key]; - if (isItem && (key === ACTIVE_KEY || key === SELECTED_KEY)) { - continue; - } - if (!key.startsWith("on")) { - outputProps[key] = value; - } else { - if (!eventHandlers.has(key)) { - eventHandlers.set(key, []); - } - if (typeof value === "function") { - eventHandlers.get(key)?.push(value); - outputProps[key] = (...args) => { - return eventHandlers.get(key)?.map((fn) => fn(...args)).find((val) => val !== void 0); - }; - } - } - } + }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store2, restMsRef, checkShouldOpen]); } // node_modules/@base-ui/react/esm/floating-ui-react/safePolygon.js @@ -6668,7 +6707,7 @@ function inertValue(value) { } // node_modules/@base-ui/react/esm/utils/useAnchorPositioning.js -var React34 = __toESM(require_react(), 1); +var React33 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/floating-ui-react/middleware/arrow.js var baseArrow = (options) => ({ @@ -6876,6 +6915,7 @@ function useAnchorPositioning(params) { sticky = false, arrowPadding = 5, disableAnchorTracking = false, + inline: inlineMiddleware, // Private parameters keepMounted = false, floatingRootContext, @@ -6887,7 +6927,7 @@ function useAnchorPositioning(params) { lazyFlip = false, externalTree } = params; - const [mountSide, setMountSide] = React34.useState(null); + const [mountSide, setMountSide] = React33.useState(null); if (!mounted && mountSide !== null) { setMountSide(null); } @@ -6935,12 +6975,16 @@ function useAnchorPositioning(params) { boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, padding: collisionPadding }; - const arrowRef = React34.useRef(null); + const arrowRef = React33.useRef(null); const sideOffsetRef = useValueAsRef(sideOffset); const alignOffsetRef = useValueAsRef(alignOffset); const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; - const middleware = [offset3((state) => { + const middleware = []; + if (inlineMiddleware) { + middleware.push(inlineMiddleware); + } + middleware.push(offset3((state) => { const data = getOffsetData(state, sideParam, isRtl); const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; @@ -6949,7 +6993,7 @@ function useAnchorPositioning(params) { crossAxis: alignAxis, alignmentAxis: alignAxis }; - }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])]; + }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ @@ -7030,10 +7074,10 @@ function useAnchorPositioning(params) { floatingStyle.setProperty("--anchor-width", `${anchorWidth}px`); floatingStyle.setProperty("--anchor-height", `${anchorHeight}px`); } - }), arrow4(() => ({ + }), arrow4((state) => ({ // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, // we'll create a fake element. - element: arrowRef.current || ownerDocument(arrowRef.current).createElement("div"), + element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), padding: arrowPadding, offsetParent: "floating" }), [arrowPadding]), { @@ -7080,7 +7124,7 @@ function useAnchorPositioning(params) { }); } }, [mounted, floatingRootContext]); - const autoUpdateOptions = React34.useMemo(() => ({ + const autoUpdateOptions = React33.useMemo(() => ({ elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" }), [disableAnchorTracking]); @@ -7110,7 +7154,7 @@ function useAnchorPositioning(params) { sideY } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; const resolvedPosition = isPositioned ? positionMethod : "fixed"; - const floatingStyles = React34.useMemo(() => { + const floatingStyles = React33.useMemo(() => { const base = adaptiveOrigin2 ? { position: resolvedPosition, [sideX]: x, @@ -7124,7 +7168,7 @@ function useAnchorPositioning(params) { } return base; }, [adaptiveOrigin2, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]); - const registeredPositionReferenceRef = React34.useRef(null); + const registeredPositionReferenceRef = React33.useRef(null); useIsoLayoutEffect(() => { if (!mounted) { return; @@ -7138,7 +7182,7 @@ function useAnchorPositioning(params) { registeredPositionReferenceRef.current = finalAnchor; } }, [mounted, refs, anchorDep, anchorValueRef]); - React34.useEffect(() => { + React33.useEffect(() => { if (!mounted) { return; } @@ -7151,7 +7195,7 @@ function useAnchorPositioning(params) { registeredPositionReferenceRef.current = anchorValue.current; } }, [mounted, refs, anchorDep, anchorValueRef]); - React34.useEffect(() => { + React33.useEffect(() => { if (keepMounted && mounted && elements.domReference && elements.floating) { return autoUpdate(elements.domReference, elements.floating, update2, autoUpdateOptions); } @@ -7166,13 +7210,13 @@ function useAnchorPositioning(params) { setMountSide(renderedSide); } }, [lazyFlip, mounted, isPositioned, renderedSide]); - const arrowStyles = React34.useMemo(() => ({ + const arrowStyles = React33.useMemo(() => ({ position: "absolute", top: middlewareData.arrow?.y, left: middlewareData.arrow?.x }), [middlewareData.arrow]); const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; - return React34.useMemo(() => ({ + return React33.useMemo(() => ({ positionerStyles: floatingStyles, arrowStyles, arrowRef, @@ -7224,8 +7268,8 @@ function usePositioner(componentProps, state, { } // node_modules/@base-ui/react/esm/button/Button.js -var React35 = __toESM(require_react(), 1); -var Button = /* @__PURE__ */ React35.forwardRef(function Button2(componentProps, forwardedRef) { +var React34 = __toESM(require_react(), 1); +var Button = /* @__PURE__ */ React34.forwardRef(function Button2(componentProps, forwardedRef) { const { render, className, @@ -7255,13 +7299,13 @@ var Button = /* @__PURE__ */ React35.forwardRef(function Button2(componentProps, if (true) Button.displayName = "Button"; // node_modules/@base-ui/react/esm/utils/usePopupViewport.js -var React38 = __toESM(require_react(), 1); +var React37 = __toESM(require_react(), 1); var ReactDOM5 = __toESM(require_react_dom(), 1); // node_modules/@base-ui/utils/esm/usePreviousValue.js -var React36 = __toESM(require_react(), 1); +var React35 = __toESM(require_react(), 1); function usePreviousValue(value) { - const [state, setState] = React36.useState({ + const [state, setState] = React35.useState({ current: value, previous: null }); @@ -7275,7 +7319,7 @@ function usePreviousValue(value) { } // node_modules/@base-ui/react/esm/utils/usePopupAutoResize.js -var React37 = __toESM(require_react(), 1); +var React36 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/utils/getCssDimensions.js function getCssDimensions2(element) { @@ -7312,13 +7356,13 @@ function usePopupAutoResize(parameters) { } = parameters; const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true, false); const animationFrame = useAnimationFrame(); - const committedDimensionsRef = React37.useRef(null); - const liveDimensionsRef = React37.useRef(null); - const isInitialRenderRef = React37.useRef(true); - const restoreAnchoringStylesRef = React37.useRef(NOOP); + const committedDimensionsRef = React36.useRef(null); + const liveDimensionsRef = React36.useRef(null); + const isInitialRenderRef = React36.useRef(true); + const restoreAnchoringStylesRef = React36.useRef(NOOP); const onMeasureLayout = useStableCallback(onMeasureLayoutParam); const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam); - const anchoringStyles = React37.useMemo(() => { + const anchoringStyles = React36.useMemo(() => { let isOriginSide = side === "top"; let isPhysicalLeft = side === "left"; if (direction === "rtl") { @@ -7473,15 +7517,15 @@ function usePopupViewport(parameters) { const positionerElement = store2.useState("positionerElement"); const previousActiveTrigger = usePreviousValue(open ? activeTrigger : null); const currentContentKey = usePopupContentKey(activeTriggerId, payload); - const capturedNodeRef = React38.useRef(null); - const [previousContentNode, setPreviousContentNode] = React38.useState(null); - const [newTriggerOffset, setNewTriggerOffset] = React38.useState(null); - const currentContainerRef = React38.useRef(null); - const previousContainerRef = React38.useRef(null); + const capturedNodeRef = React37.useRef(null); + const [previousContentNode, setPreviousContentNode] = React37.useState(null); + const [newTriggerOffset, setNewTriggerOffset] = React37.useState(null); + const currentContainerRef = React37.useRef(null); + const previousContainerRef = React37.useRef(null); const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true, false); const cleanupFrame = useAnimationFrame(); - const [previousContentDimensions, setPreviousContentDimensions] = React38.useState(null); - const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React38.useState(false); + const [previousContentDimensions, setPreviousContentDimensions] = React37.useState(null); + const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React37.useState(false); useIsoLayoutEffect(() => { store2.set("hasViewport", true); return () => { @@ -7501,7 +7545,7 @@ function usePopupViewport(parameters) { setPreviousContentDimensions(previousDimensions); } }); - const lastHandledTriggerRef = React38.useRef(null); + const lastHandledTriggerRef = React37.useRef(null); useIsoLayoutEffect(() => { if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) { setPreviousContentNode(capturedNodeRef.current); @@ -7541,7 +7585,7 @@ function usePopupViewport(parameters) { children }, currentContentKey); } else { - childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(React38.Fragment, { + childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(React37.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { "data-previous": true, inert: inertValue(true), @@ -7620,10 +7664,10 @@ function calculateRelativePosition(from, to) { }; } function usePopupContentKey(activeTriggerId, payload) { - const [contentKey, setContentKey] = React38.useState(0); - const previousActiveTriggerIdRef = React38.useRef(activeTriggerId); - const previousPayloadRef = React38.useRef(payload); - const pendingPayloadUpdateRef = React38.useRef(false); + const [contentKey, setContentKey] = React37.useState(0); + const previousActiveTriggerIdRef = React37.useRef(activeTriggerId); + const previousPayloadRef = React37.useRef(payload); + const pendingPayloadUpdateRef = React37.useRef(false); useIsoLayoutEffect(() => { const previousActiveTriggerId = previousActiveTriggerIdRef.current; const previousPayload = previousPayloadRef.current; @@ -7643,10 +7687,10 @@ function usePopupContentKey(activeTriggerId, payload) { } // node_modules/@base-ui/react/esm/utils/FloatingPortalLite.js -var React39 = __toESM(require_react(), 1); +var React38 = __toESM(require_react(), 1); var ReactDOM6 = __toESM(require_react_dom(), 1); var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); -var FloatingPortalLite = /* @__PURE__ */ React39.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) { +var FloatingPortalLite = /* @__PURE__ */ React38.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) { const { children, container, @@ -7667,7 +7711,7 @@ var FloatingPortalLite = /* @__PURE__ */ React39.forwardRef(function FloatingPor if (!portalSubtree && !portalNode) { return null; } - return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(React39.Fragment, { + return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(React38.Fragment, { children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM6.createPortal(children, portalNode)] }); }); @@ -7689,14 +7733,14 @@ __export(index_parts_exports, { }); // node_modules/@base-ui/react/esm/tooltip/root/TooltipRoot.js -var React42 = __toESM(require_react(), 1); +var React41 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/tooltip/root/TooltipRootContext.js -var React40 = __toESM(require_react(), 1); -var TooltipRootContext = /* @__PURE__ */ React40.createContext(void 0); +var React39 = __toESM(require_react(), 1); +var TooltipRootContext = /* @__PURE__ */ React39.createContext(void 0); if (true) TooltipRootContext.displayName = "TooltipRootContext"; function useTooltipRootContext(optional) { - const context = React40.useContext(TooltipRootContext); + const context = React39.useContext(TooltipRootContext); if (context === void 0 && !optional) { throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72)); } @@ -7704,7 +7748,7 @@ function useTooltipRootContext(optional) { } // node_modules/@base-ui/react/esm/tooltip/store/TooltipStore.js -var React41 = __toESM(require_react(), 1); +var React40 = __toESM(require_react(), 1); var ReactDOM7 = __toESM(require_react_dom(), 1); var selectors2 = { ...popupStoreSelectors, @@ -7719,15 +7763,18 @@ var selectors2 = { hasViewport: createSelector((state) => state.hasViewport) }; var TooltipStore = class _TooltipStore extends ReactStore { - constructor(initialState) { - super({ + constructor(initialState, floatingId, nested = false) { + const triggerElements = new PopupTriggerMap(); + const state = { ...createInitialState(), ...initialState - }, { - popupRef: /* @__PURE__ */ React41.createRef(), + }; + state.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested); + super(state, { + popupRef: /* @__PURE__ */ React40.createRef(), onOpenChange: void 0, onOpenChangeComplete: void 0, - triggerElements: new PopupTriggerMap() + triggerElements }, selectors2); } setOpen = (nextOpen, eventDetails) => { @@ -7755,11 +7802,7 @@ var TooltipStore = class _TooltipStore extends ReactStore { } else if (reason === reason_parts_exports.triggerHover) { updatedState.instantType = void 0; } - const newTriggerId = eventDetails.trigger?.id ?? null; - if (newTriggerId || nextOpen) { - updatedState.activeTriggerId = newTriggerId; - updatedState.activeTriggerElement = eventDetails.trigger ?? null; - } + setOpenTriggerState(updatedState, nextOpen, eventDetails.trigger); this.update(updatedState); }; if (isHover) { @@ -7768,16 +7811,12 @@ var TooltipStore = class _TooltipStore extends ReactStore { changeState(); } }; + // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change. + cancelPendingOpen(event) { + this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event)); + } static useStore(externalStore, initialState) { - const internalStore = useRefWithInit(() => { - return new _TooltipStore(initialState); - }).current; - const store2 = externalStore ?? internalStore; - const floatingRootContext = useSyncedFloatingRootContext({ - popupStore: store2, - onOpenChange: store2.setOpen - }); - store2.state.floatingRootContext = floatingRootContext; + const store2 = usePopupStore(externalStore, (floatingId, nested) => new _TooltipStore(initialState, floatingId, nested)).store; return store2; } }; @@ -7834,27 +7873,27 @@ var TooltipRoot = fastComponent(function TooltipRoot2(props) { const openState = store2.useState("open"); const open = !disabled2 && openState; const activeTriggerId = store2.useState("activeTriggerId"); + const mounted = store2.useState("mounted"); const payload = store2.useState("payload"); store2.useSyncedValues({ trackCursorAxis, disableHoverablePopup }); - useIsoLayoutEffect(() => { - if (openState && disabled2) { - store2.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled)); - } - }, [openState, disabled2, store2]); store2.useSyncedValue("disabled", disabled2); useImplicitActiveTrigger(store2); const { forceUnmount, transitionStatus } = useOpenStateTransitions(open, store2); - const floatingRootContext = store2.select("floatingRootContext"); const isInstantPhase = store2.useState("isInstantPhase"); const instantType = store2.useState("instantType"); const lastOpenChangeReason = store2.useState("lastOpenChangeReason"); - const previousInstantTypeRef = React42.useRef(null); + const previousInstantTypeRef = React41.useRef(null); + useIsoLayoutEffect(() => { + if (openState && disabled2) { + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled)); + } + }, [openState, disabled2, store2]); useIsoLayoutEffect(() => { if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) { if (instantType !== "delay") { @@ -7873,13 +7912,32 @@ var TooltipRoot = fastComponent(function TooltipRoot2(props) { } } }, [store2, activeTriggerId, open]); - const handleImperativeClose = React42.useCallback(() => { + const handleImperativeClose = React41.useCallback(() => { store2.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); }, [store2]); - React42.useImperativeHandle(actionsRef, () => ({ + React41.useImperativeHandle(actionsRef, () => ({ unmount: forceUnmount, close: handleImperativeClose }), [forceUnmount, handleImperativeClose]); + const shouldRenderInteractions = open || mounted || !disabled2 && trackCursorAxis !== "none"; + return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(TooltipRootContext.Provider, { + value: store2, + children: [shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TooltipInteractions, { + store: store2, + disabled: disabled2, + trackCursorAxis + }), typeof children === "function" ? children({ + payload + }) : children] + }); +}); +if (true) TooltipRoot.displayName = "TooltipRoot"; +function TooltipInteractions({ + store: store2, + disabled: disabled2, + trackCursorAxis +}) { + const floatingRootContext = store2.useState("floatingRootContext"); const dismiss = useDismiss(floatingRootContext, { enabled: !disabled2, referencePress: () => store2.select("closeOnClick") @@ -7888,37 +7946,26 @@ var TooltipRoot = fastComponent(function TooltipRoot2(props) { enabled: !disabled2 && trackCursorAxis !== "none", axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis }); - const { - getReferenceProps, - getFloatingProps, - getTriggerProps - } = useInteractions([dismiss, clientPoint]); - const activeTriggerProps = React42.useMemo(() => getReferenceProps(), [getReferenceProps]); - const inactiveTriggerProps = React42.useMemo(() => getTriggerProps(), [getTriggerProps]); - const popupProps = React42.useMemo(() => getFloatingProps(), [getFloatingProps]); - store2.useSyncedValues({ + const activeTriggerProps = React41.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]); + const inactiveTriggerProps = React41.useMemo(() => mergeProps(clientPoint.trigger, dismiss.trigger), [clientPoint.trigger, dismiss.trigger]); + const popupProps = React41.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, clientPoint.floating, dismiss.floating), [clientPoint.floating, dismiss.floating]); + usePopupInteractionProps(store2, { activeTriggerProps, inactiveTriggerProps, popupProps }); - return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TooltipRootContext.Provider, { - value: store2, - children: typeof children === "function" ? children({ - payload - }) : children - }); -}); -if (true) TooltipRoot.displayName = "TooltipRoot"; + return null; +} // node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTrigger.js -var React44 = __toESM(require_react(), 1); +var React43 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/tooltip/provider/TooltipProviderContext.js -var React43 = __toESM(require_react(), 1); -var TooltipProviderContext = /* @__PURE__ */ React43.createContext(void 0); +var React42 = __toESM(require_react(), 1); +var TooltipProviderContext = /* @__PURE__ */ React42.createContext(void 0); if (true) TooltipProviderContext.displayName = "TooltipProviderContext"; function useTooltipProviderContext() { - return React43.useContext(TooltipProviderContext); + return React42.useContext(TooltipProviderContext); } // node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTriggerDataAttributes.js @@ -7932,18 +7979,51 @@ var TooltipTriggerDataAttributes = (function(TooltipTriggerDataAttributes2) { var OPEN_DELAY = 600; // node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTrigger.js -var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) { - const { - className, - render, - handle, - payload, - disabled: disabledProp, +var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger"; +function getTargetElement(event) { + if ("composedPath" in event) { + const path = event.composedPath(); + for (let i = 0; i < path.length; i += 1) { + const element = path[i]; + if (isElement(element)) { + return element; + } + } + } + const target = event.target; + if (isElement(target)) { + return target; + } + return null; +} +function closestEnabledTooltipTrigger(element) { + let current = element; + while (current) { + if (current.hasAttribute(TOOLTIP_TRIGGER_IDENTIFIER)) { + return current; + } + const parentElement = current.parentElement; + if (parentElement) { + current = parentElement; + continue; + } + const root = current.getRootNode(); + current = "host" in root && isElement(root.host) ? root.host : null; + } + return null; +} +var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) { + const { + render, + className, + style, + handle, + payload, + disabled: disabledProp, delay, closeOnClick = true, closeDelay, id: idProp, - style, ...elementProps } = componentProps; const rootContext = useTooltipRootContext(true); @@ -7955,7 +8035,7 @@ var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, f const isTriggerActive = store2.useState("isTriggerActive", thisTriggerId); const isOpenedByThisTrigger = store2.useState("isOpenedByTrigger", thisTriggerId); const floatingRootContext = store2.useState("floatingRootContext"); - const triggerElementRef = React44.useRef(null); + const triggerElementRef = React43.useRef(null); const delayWithDefault = delay ?? OPEN_DELAY; const closeDelayWithDefault = closeDelay ?? 0; const { @@ -7974,29 +8054,54 @@ var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, f } = useDelayGroup(floatingRootContext, { open: isOpenedByThisTrigger }); + const hoverInteraction = useHoverInteractionSharedState(floatingRootContext); store2.useSyncedValue("isInstantPhase", isInstantPhase); const rootDisabled = store2.useState("disabled"); const disabled2 = disabledProp ?? rootDisabled; + const disabledRef = useValueAsRef(disabled2); const trackCursorAxis = store2.useState("trackCursorAxis"); const disableHoverablePopup = store2.useState("disableHoverablePopup"); + const isNestedTriggerHoveredRef = React43.useRef(false); + const nestedTriggerOpenTimeout = useTimeout(); + const pointerTypeRef = React43.useRef(void 0); + function getOpenDelay() { + const providerDelay = providerContext?.delay; + const groupOpenValue = typeof delayRef.current === "object" ? delayRef.current.open : void 0; + let computedOpenDelay = delayWithDefault; + if (hasProvider) { + if (groupOpenValue !== 0) { + computedOpenDelay = delay ?? providerDelay ?? delayWithDefault; + } else { + computedOpenDelay = 0; + } + } + return computedOpenDelay; + } + function isEnabledNestedTriggerTarget(target) { + const triggerEl = triggerElementRef.current; + if (!triggerEl || !target) { + return false; + } + const nearestTrigger = closestEnabledTooltipTrigger(target); + return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger); + } + function detectNestedTriggerHover(target) { + const nestedTriggerHovered = isEnabledNestedTriggerTarget(target); + isNestedTriggerHoveredRef.current = nestedTriggerHovered; + if (nestedTriggerHovered) { + hoverInteraction.openChangeTimeout.clear(); + hoverInteraction.restTimeout.clear(); + hoverInteraction.restTimeoutPending = false; + nestedTriggerOpenTimeout.clear(); + } + return nestedTriggerHovered; + } const hoverProps = useHoverReferenceInteraction(floatingRootContext, { enabled: !disabled2, mouseOnly: true, move: false, handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null, - restMs() { - const providerDelay = providerContext?.delay; - const groupOpenValue = typeof delayRef.current === "object" ? delayRef.current.open : void 0; - let computedRestMs = delayWithDefault; - if (hasProvider) { - if (groupOpenValue !== 0) { - computedRestMs = delay ?? providerDelay ?? delayWithDefault; - } else { - computedRestMs = 0; - } - } - return computedRestMs; - }, + restMs: getOpenDelay, delay() { const closeValue = typeof delayRef.current === "object" ? delayRef.current.close : void 0; let computedCloseDelay = closeDelayWithDefault; @@ -8009,24 +8114,80 @@ var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, f }, triggerElementRef, isActiveTrigger: isTriggerActive, - isClosing: () => store2.select("transitionStatus") === "ending" + isClosing: () => store2.select("transitionStatus") === "ending", + shouldOpen() { + return !isNestedTriggerHoveredRef.current; + } }); const focusProps = useFocus(floatingRootContext, { enabled: !disabled2 }).reference; + const handleNestedTriggerHover = (event) => { + const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current; + const target = getTargetElement(event); + const nestedTriggerHovered = detectNestedTriggerHover(target); + const triggerEl = triggerElementRef.current; + const targetInsideTrigger = triggerEl && target && contains(triggerEl, target); + if (nestedTriggerHovered && store2.select("open") && store2.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) { + store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + return; + } + if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store2.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences. + isMouseLikePointerType(pointerTypeRef.current)) { + const open = () => { + if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store2.select("open")) { + store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl)); + } + }; + const openDelay = getOpenDelay(); + if (openDelay === 0) { + nestedTriggerOpenTimeout.clear(); + open(); + } else { + nestedTriggerOpenTimeout.start(openDelay, open); + } + } + }; + const rootTriggerProps = store2.useState("triggerProps", isMountedByThisTrigger); + const shouldApplyRootTriggerProps = isMountedByThisTrigger || trackCursorAxis !== "none"; const state = { open: isOpenedByThisTrigger }; - const rootTriggerProps = store2.useState("triggerProps", isMountedByThisTrigger); const element = useRenderElement("button", componentProps, { state, ref: [forwardedRef, registerTrigger, triggerElementRef], - props: [hoverProps, focusProps, rootTriggerProps, { - onPointerDown() { + props: [hoverProps, focusProps, shouldApplyRootTriggerProps ? rootTriggerProps : void 0, { + onMouseOver(event) { + handleNestedTriggerHover(event.nativeEvent); + }, + onFocus(event) { + if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) { + event.preventBaseUIHandler(); + } + }, + onMouseLeave() { + isNestedTriggerHoveredRef.current = false; + nestedTriggerOpenTimeout.clear(); + pointerTypeRef.current = void 0; + }, + onPointerEnter(event) { + pointerTypeRef.current = event.pointerType; + }, + onPointerDown(event) { + pointerTypeRef.current = event.pointerType; store2.set("closeOnClick", closeOnClick); + if (closeOnClick && !store2.select("open")) { + store2.cancelPendingOpen(event.nativeEvent); + } + }, + onClick(event) { + if (closeOnClick && !store2.select("open")) { + store2.cancelPendingOpen(event.nativeEvent); + } }, id: thisTriggerId, - [TooltipTriggerDataAttributes.triggerDisabled]: disabled2 ? "" : void 0 + [TooltipTriggerDataAttributes.triggerDisabled]: disabled2 ? "" : void 0, + [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : "" }, elementProps], stateAttributesMapping: triggerOpenStateMapping }); @@ -8035,14 +8196,14 @@ var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, f if (true) TooltipTrigger.displayName = "TooltipTrigger"; // node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortal.js -var React46 = __toESM(require_react(), 1); +var React45 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortalContext.js -var React45 = __toESM(require_react(), 1); -var TooltipPortalContext = /* @__PURE__ */ React45.createContext(void 0); +var React44 = __toESM(require_react(), 1); +var TooltipPortalContext = /* @__PURE__ */ React44.createContext(void 0); if (true) TooltipPortalContext.displayName = "TooltipPortalContext"; function useTooltipPortalContext() { - const value = React45.useContext(TooltipPortalContext); + const value = React44.useContext(TooltipPortalContext); if (value === void 0) { throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70)); } @@ -8051,7 +8212,7 @@ function useTooltipPortalContext() { // node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortal.js var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); -var TooltipPortal = /* @__PURE__ */ React46.forwardRef(function TooltipPortal2(props, forwardedRef) { +var TooltipPortal = /* @__PURE__ */ React45.forwardRef(function TooltipPortal2(props, forwardedRef) { const { keepMounted = false, ...portalProps @@ -8073,14 +8234,14 @@ var TooltipPortal = /* @__PURE__ */ React46.forwardRef(function TooltipPortal2(p if (true) TooltipPortal.displayName = "TooltipPortal"; // node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositioner.js -var React48 = __toESM(require_react(), 1); +var React47 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositionerContext.js -var React47 = __toESM(require_react(), 1); -var TooltipPositionerContext = /* @__PURE__ */ React47.createContext(void 0); +var React46 = __toESM(require_react(), 1); +var TooltipPositionerContext = /* @__PURE__ */ React46.createContext(void 0); if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext"; function useTooltipPositionerContext() { - const context = React47.useContext(TooltipPositionerContext); + const context = React46.useContext(TooltipPositionerContext); if (context === void 0) { throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71)); } @@ -8089,7 +8250,7 @@ function useTooltipPositionerContext() { // node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositioner.js var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); -var TooltipPositioner = /* @__PURE__ */ React48.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) { +var TooltipPositioner = /* @__PURE__ */ React47.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) { const { render, className, @@ -8136,7 +8297,7 @@ var TooltipPositioner = /* @__PURE__ */ React48.forwardRef(function TooltipPosit collisionAvoidance, adaptiveOrigin: hasViewport ? adaptiveOrigin : void 0 }); - const state = React48.useMemo(() => ({ + const state = React47.useMemo(() => ({ open, side: positioning.side, align: positioning.align, @@ -8159,15 +8320,15 @@ var TooltipPositioner = /* @__PURE__ */ React48.forwardRef(function TooltipPosit if (true) TooltipPositioner.displayName = "TooltipPositioner"; // node_modules/@base-ui/react/esm/tooltip/popup/TooltipPopup.js -var React49 = __toESM(require_react(), 1); +var React48 = __toESM(require_react(), 1); var stateAttributesMapping = { ...popupStateMapping, ...transitionStatusMapping }; -var TooltipPopup = /* @__PURE__ */ React49.forwardRef(function TooltipPopup2(componentProps, forwardedRef) { +var TooltipPopup = /* @__PURE__ */ React48.forwardRef(function TooltipPopup2(componentProps, forwardedRef) { const { - className, render, + className, style, ...elementProps } = componentProps; @@ -8181,6 +8342,8 @@ var TooltipPopup = /* @__PURE__ */ React49.forwardRef(function TooltipPopup2(com const transitionStatus = store2.useState("transitionStatus"); const popupProps = store2.useState("popupProps"); const floatingContext = store2.useState("floatingRootContext"); + const disabled2 = store2.useState("disabled"); + const closeDelay = store2.useState("closeDelay"); useOpenChangeComplete({ open, ref: store2.context.popupRef, @@ -8190,12 +8353,11 @@ var TooltipPopup = /* @__PURE__ */ React49.forwardRef(function TooltipPopup2(com } } }); - const disabled2 = store2.useState("disabled"); - const closeDelay = store2.useState("closeDelay"); useHoverFloatingInteraction(floatingContext, { enabled: !disabled2, closeDelay }); + const setPopupElement = store2.useStateSetter("popupElement"); const state = { open, side, @@ -8205,7 +8367,7 @@ var TooltipPopup = /* @__PURE__ */ React49.forwardRef(function TooltipPopup2(com }; const element = useRenderElement("div", componentProps, { state, - ref: [forwardedRef, store2.context.popupRef, store2.useStateSetter("popupElement")], + ref: [forwardedRef, store2.context.popupRef, setPopupElement], props: [popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps], stateAttributesMapping }); @@ -8214,17 +8376,15 @@ var TooltipPopup = /* @__PURE__ */ React49.forwardRef(function TooltipPopup2(com if (true) TooltipPopup.displayName = "TooltipPopup"; // node_modules/@base-ui/react/esm/tooltip/arrow/TooltipArrow.js -var React50 = __toESM(require_react(), 1); -var TooltipArrow = /* @__PURE__ */ React50.forwardRef(function TooltipArrow2(componentProps, forwardedRef) { +var React49 = __toESM(require_react(), 1); +var TooltipArrow = /* @__PURE__ */ React49.forwardRef(function TooltipArrow2(componentProps, forwardedRef) { const { - className, render, + className, style, ...elementProps } = componentProps; const store2 = useTooltipRootContext(); - const open = store2.useState("open"); - const instantType = store2.useState("instantType"); const { arrowRef, side, @@ -8232,6 +8392,8 @@ var TooltipArrow = /* @__PURE__ */ React50.forwardRef(function TooltipArrow2(com arrowUncentered, arrowStyles } = useTooltipPositionerContext(); + const open = store2.useState("open"); + const instantType = store2.useState("instantType"); const state = { open, side, @@ -8253,7 +8415,7 @@ var TooltipArrow = /* @__PURE__ */ React50.forwardRef(function TooltipArrow2(com if (true) TooltipArrow.displayName = "TooltipArrow"; // node_modules/@base-ui/react/esm/tooltip/provider/TooltipProvider.js -var React51 = __toESM(require_react(), 1); +var React50 = __toESM(require_react(), 1); var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); var TooltipProvider = function TooltipProvider2(props) { const { @@ -8261,11 +8423,11 @@ var TooltipProvider = function TooltipProvider2(props) { closeDelay, timeout = 400 } = props; - const contextValue = React51.useMemo(() => ({ + const contextValue = React50.useMemo(() => ({ delay, closeDelay }), [delay, closeDelay]); - const delayValue = React51.useMemo(() => ({ + const delayValue = React50.useMemo(() => ({ open: delay, close: closeDelay }), [delay, closeDelay]); @@ -8281,7 +8443,7 @@ var TooltipProvider = function TooltipProvider2(props) { if (true) TooltipProvider.displayName = "TooltipProvider"; // node_modules/@base-ui/react/esm/tooltip/viewport/TooltipViewport.js -var React52 = __toESM(require_react(), 1); +var React51 = __toESM(require_react(), 1); // node_modules/@base-ui/react/esm/tooltip/viewport/TooltipViewportCssVars.js var TooltipViewportCssVars = /* @__PURE__ */ (function(TooltipViewportCssVars2) { @@ -8296,7 +8458,7 @@ var stateAttributesMapping2 = { "data-activation-direction": value } : null }; -var TooltipViewport = /* @__PURE__ */ React52.forwardRef(function TooltipViewport2(componentProps, forwardedRef) { +var TooltipViewport = /* @__PURE__ */ React51.forwardRef(function TooltipViewport2(componentProps, forwardedRef) { const { render, className, @@ -8366,7 +8528,7 @@ var TooltipHandle = class { * Indicates whether the tooltip is currently open. */ get isOpen() { - return this.store.state.open; + return this.store.select("open"); } }; function createTooltipHandle() { @@ -8379,7 +8541,7 @@ function useRender(params) { } // packages/ui/build-module/text/text.mjs -var import_element8 = __toESM(require_element(), 1); +var import_element10 = __toESM(require_element(), 1); var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; function getRuntime() { const globalScope = globalThis; @@ -8461,14 +8623,14 @@ function registerStyle(hash, css) { } } if (typeof process === "undefined" || true) { - registerStyle("0c8601dd83", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}'); + registerStyle("0c5702ddca", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); } var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; if (typeof process === "undefined" || true) { - registerStyle("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); + registerStyle("d5c1b736fd", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}"); } var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; -var Text = (0, import_element8.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { +var Text = (0, import_element10.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { const element = useRender({ render, defaultTagName: "span", @@ -8569,10 +8731,10 @@ function registerStyle2(hash, css) { } } if (typeof process === "undefined" || true) { - registerStyle2("d6a685e1aa", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}"); + registerStyle2("9d817a6077", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}}"); } var style_default2 = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; -var Badge = (0, import_element9.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) { +var Badge = (0, import_element11.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( Text, { @@ -8589,7 +8751,7 @@ var Badge = (0, import_element9.forwardRef)(function Badge2({ intent = "none", c }); // packages/ui/build-module/button/button.mjs -var import_element10 = __toESM(require_element(), 1); +var import_element12 = __toESM(require_element(), 1); var import_i18n = __toESM(require_i18n(), 1); var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); import { speak } from "@wordpress/a11y"; @@ -8674,22 +8836,22 @@ function registerStyle3(hash, css) { } } if (typeof process === "undefined" || true) { - registerStyle3("7d54255a4c", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:#0000;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:#0000;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:#0000;&:not([data-disabled]):is(:hover,:active,:focus){color:#0000}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}'); + registerStyle3("459f56a7b7", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:-4px;--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:transparent;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:transparent;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}}'); } -var style_default3 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" }; +var style_default3 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" }; if (typeof process === "undefined" || true) { - registerStyle3("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); + registerStyle3("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); } var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; if (typeof process === "undefined" || true) { - registerStyle3("2a5ab8f3a7", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}"); + registerStyle3("693cd16544", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid transparent;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}}"); } var focus_default = { "outset-ring--focus": "_08e8a2e44959f892__outset-ring--focus", "outset-ring--focus-except-active": "e25b2bdd7aa21721__outset-ring--focus-except-active", "outset-ring--focus-visible": "d0541bc9dd9dc7b6__outset-ring--focus-visible", "outset-ring--focus-within": "cd83dfc2126a0846__outset-ring--focus-within", "outset-ring--focus-within-except-active": "_970d04df7376df67__outset-ring--focus-within-except-active", "outset-ring--focus-within-visible": "c5cb3ee4bddaa8e4__outset-ring--focus-within-visible", "outset-ring--focus-parent-visible": "ecadb9e080e2dfa5__outset-ring--focus-parent-visible" }; if (typeof process === "undefined" || true) { - registerStyle3("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); + registerStyle3("d5c1b736fd", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}"); } var global_css_defense_default2 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; -var Button3 = (0, import_element10.forwardRef)( +var Button3 = (0, import_element12.forwardRef)( function Button22({ tone = "brand", variant = "solid", @@ -8713,7 +8875,7 @@ var Button3 = (0, import_element10.forwardRef)( loading && style_default3["is-loading"], className ); - (0, import_element10.useEffect)(() => { + (0, import_element12.useEffect)(() => { if (loading && loadingAnnouncement) { speak(loadingAnnouncement); } @@ -8733,13 +8895,13 @@ var Button3 = (0, import_element10.forwardRef)( ); // packages/ui/build-module/button/icon.mjs -var import_element12 = __toESM(require_element(), 1); +var import_element14 = __toESM(require_element(), 1); // packages/ui/build-module/icon/icon.mjs -var import_element11 = __toESM(require_element(), 1); +var import_element13 = __toESM(require_element(), 1); var import_primitives = __toESM(require_primitives(), 1); var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); -var Icon = (0, import_element11.forwardRef)(function Icon2({ icon, size: size4 = 24, ...restProps }, ref) { +var Icon = (0, import_element13.forwardRef)(function Icon2({ icon, size: size4 = 24, ...restProps }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( import_primitives.SVG, { @@ -8755,15 +8917,99 @@ var Icon = (0, import_element11.forwardRef)(function Icon2({ icon, size: size4 = // packages/ui/build-module/button/icon.mjs var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); -var ButtonIcon = (0, import_element12.forwardRef)( - function ButtonIcon2({ icon, ...props }, ref) { +var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; +function getRuntime4() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument4(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash4(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE4}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { + return true; + } + } + return false; +} +function injectStyle4(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime4(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash4(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument4(targetDocument) { + const runtime = getRuntime4(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle4(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle4(hash, css) { + const runtime = getRuntime4(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle4(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle4("459f56a7b7", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:-4px;--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:transparent;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:transparent;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}}'); +} +var style_default4 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" }; +var ButtonIcon = (0, import_element14.forwardRef)( + function ButtonIcon2({ className, icon, ...props }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( Icon, { ref, icon, - viewBox: "4 4 16 16", - size: 16, + className: clsx_default(style_default4.icon, className), + size: 24, ...props } ); @@ -8806,12 +9052,9 @@ var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); var published_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives6.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z" }) }); // packages/ui/build-module/utils/render-slot-with-children.mjs -var import_element13 = __toESM(require_element(), 1); +var import_element15 = __toESM(require_element(), 1); function renderSlotWithChildren(slot, defaultSlot, children) { - return (0, import_element13.cloneElement)( - slot ?? defaultSlot, - { children } - ); + return (0, import_element15.cloneElement)(slot ?? defaultSlot, { children }); } // packages/ui/build-module/lock-unlock.mjs @@ -8822,9 +9065,9 @@ var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnl ); // packages/ui/build-module/stack/stack.mjs -var import_element14 = __toESM(require_element(), 1); -var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; -function getRuntime4() { +var import_element16 = __toESM(require_element(), 1); +var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; +function getRuntime5() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -8835,28 +9078,28 @@ function getRuntime4() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument4(document); + registerDocument5(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash4(targetDocument, hash) { +function documentContainsStyleHash5(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE4}]` + `style[${STYLE_HASH_ATTRIBUTE5}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { return true; } } return false; } -function injectStyle4(targetDocument, hash, css) { +function injectStyle5(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime4(); + const runtime = getRuntime5(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -8865,24 +9108,24 @@ function injectStyle4(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash4(targetDocument, hash)) { + if (documentContainsStyleHash5(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument4(targetDocument) { - const runtime = getRuntime4(); +function registerDocument5(targetDocument) { + const runtime = getRuntime5(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle4(targetDocument, hash, css); + injectStyle5(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -8896,17 +9139,17 @@ function registerDocument4(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle4(hash, css) { - const runtime = getRuntime4(); +function registerStyle5(hash, css) { + const runtime = getRuntime5(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle4(targetDocument, hash, css); + injectStyle5(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle4("b51ff41489", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}"); + registerStyle5("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}"); } -var style_default4 = { "stack": "_19ce0419607e1896__stack" }; +var style_default5 = { "stack": "_19ce0419607e1896__stack" }; var gapTokens = { xs: "var(--wpds-dimension-gap-xs, 4px)", sm: "var(--wpds-dimension-gap-sm, 8px)", @@ -8916,7 +9159,7 @@ var gapTokens = { "2xl": "var(--wpds-dimension-gap-2xl, 32px)", "3xl": "var(--wpds-dimension-gap-3xl, 40px)" }; -var Stack = (0, import_element14.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { +var Stack = (0, import_element16.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { const style = { gap: gap && gapTokens[gap], alignItems: align, @@ -8927,24 +9170,24 @@ var Stack = (0, import_element14.forwardRef)(function Stack2({ direction, gap, a const element = useRender({ render, ref, - props: mergeProps(props, { style, className: style_default4.stack }) + props: mergeProps(props, { style, className: style_default5.stack }) }); return element; }); // packages/ui/build-module/icon-button/icon-button.mjs -var import_element19 = __toESM(require_element(), 1); +var import_element21 = __toESM(require_element(), 1); // packages/ui/build-module/tooltip/popup.mjs -var import_element17 = __toESM(require_element(), 1); +var import_element19 = __toESM(require_element(), 1); var import_theme = __toESM(require_theme(), 1); // packages/ui/build-module/tooltip/portal.mjs -var import_element15 = __toESM(require_element(), 1); +var import_element17 = __toESM(require_element(), 1); // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs -var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; -function getRuntime5() { +var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; +function getRuntime6() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -8955,28 +9198,28 @@ function getRuntime5() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument5(document); + registerDocument6(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash5(targetDocument, hash) { +function documentContainsStyleHash6(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE5}]` + `style[${STYLE_HASH_ATTRIBUTE6}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { return true; } } return false; } -function injectStyle5(targetDocument, hash, css) { +function injectStyle6(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime5(); + const runtime = getRuntime6(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -8985,24 +9228,24 @@ function injectStyle5(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash5(targetDocument, hash)) { + if (documentContainsStyleHash6(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument5(targetDocument) { - const runtime = getRuntime5(); +function registerDocument6(targetDocument) { + const runtime = getRuntime6(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle5(targetDocument, hash, css); + injectStyle6(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9016,15 +9259,15 @@ function registerDocument5(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle5(hash, css) { - const runtime = getRuntime5(); +function registerStyle6(hash, css) { + const runtime = getRuntime6(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle5(targetDocument, hash, css); + injectStyle6(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle5("45eb1fe20f", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui-utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}"); + registerStyle6("be37f31c1e", "._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}"); } var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; @@ -9080,7 +9323,7 @@ function getWpCompatOverlaySlot() { // packages/ui/build-module/tooltip/portal.mjs var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); -var Portal = (0, import_element15.forwardRef)( +var Portal = (0, import_element17.forwardRef)( function TooltipPortal3({ container, ...restProps }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( index_parts_exports.Portal, @@ -9094,10 +9337,10 @@ var Portal = (0, import_element15.forwardRef)( ); // packages/ui/build-module/tooltip/positioner.mjs -var import_element16 = __toESM(require_element(), 1); +var import_element18 = __toESM(require_element(), 1); var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; -function getRuntime6() { +var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; +function getRuntime7() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9108,28 +9351,28 @@ function getRuntime6() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument6(document); + registerDocument7(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash6(targetDocument, hash) { +function documentContainsStyleHash7(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE6}]` + `style[${STYLE_HASH_ATTRIBUTE7}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { return true; } } return false; } -function injectStyle6(targetDocument, hash, css) { +function injectStyle7(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime6(); + const runtime = getRuntime7(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9138,24 +9381,24 @@ function injectStyle6(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash6(targetDocument, hash)) { + if (documentContainsStyleHash7(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument6(targetDocument) { - const runtime = getRuntime6(); +function registerDocument7(targetDocument) { + const runtime = getRuntime7(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle6(targetDocument, hash, css); + injectStyle7(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9169,22 +9412,22 @@ function registerDocument6(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle6(hash, css) { - const runtime = getRuntime6(); +function registerStyle7(hash, css) { + const runtime = getRuntime7(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle6(targetDocument, hash, css); + injectStyle7(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle6("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); + registerStyle7("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); } var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; if (typeof process === "undefined" || true) { - registerStyle6("8293efbb49", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}'); + registerStyle7("4811d023d1", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}'); } -var style_default5 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; -var Positioner = (0, import_element16.forwardRef)( +var style_default6 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; +var Positioner = (0, import_element18.forwardRef)( function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( index_parts_exports.Positioner, @@ -9196,7 +9439,7 @@ var Positioner = (0, import_element16.forwardRef)( ...props, className: clsx_default( resets_default2["box-sizing"], - style_default5.positioner, + style_default6.positioner, className ) } @@ -9206,8 +9449,8 @@ var Positioner = (0, import_element16.forwardRef)( // packages/ui/build-module/tooltip/popup.mjs var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; -function getRuntime7() { +var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; +function getRuntime8() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9218,28 +9461,28 @@ function getRuntime7() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument7(document); + registerDocument8(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash7(targetDocument, hash) { +function documentContainsStyleHash8(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE7}]` + `style[${STYLE_HASH_ATTRIBUTE8}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { return true; } } return false; } -function injectStyle7(targetDocument, hash, css) { +function injectStyle8(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime7(); + const runtime = getRuntime8(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9248,24 +9491,24 @@ function injectStyle7(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash7(targetDocument, hash)) { + if (documentContainsStyleHash8(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument7(targetDocument) { - const runtime = getRuntime7(); +function registerDocument8(targetDocument) { + const runtime = getRuntime8(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle7(targetDocument, hash, css); + injectStyle8(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9279,40 +9522,29 @@ function registerDocument7(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle7(hash, css) { - const runtime = getRuntime7(); +function registerStyle8(hash, css) { + const runtime = getRuntime8(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle7(targetDocument, hash, css); + injectStyle8(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle7("8293efbb49", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}'); + registerStyle8("4811d023d1", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}'); } -var style_default6 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; +var style_default7 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; var ThemeProvider = unlock(import_theme.privateApis).ThemeProvider; -var Popup = (0, import_element17.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { - const popupContent = ( - /* This should ideally use whatever dark color makes sense, - * and not be hardcoded to #1e1e1e. The solutions would be to: - * - review the design of the tooltip, in case we want to stop - * hardcoding it to a dark background - * - create new semantic tokens as needed (aliasing either the - * "inverted bg" or "perma-dark bg" private tokens) and have - * Tooltip.Popup use them; - * - remove the hardcoded `bg` setting from the `ThemeProvider` - * below - */ - /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ThemeProvider, { color: { bg: "#1e1e1e" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( - index_parts_exports.Popup, - { - ref, - className: clsx_default(style_default6.popup, className), - ...props, - children - } - ) }) - ); +var POPUP_COLOR = { background: "#1e1e1e" }; +var Popup = (0, import_element19.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { + const popupContent = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( + index_parts_exports.Popup, + { + ref, + className: clsx_default(style_default7.popup, className), + ...props, + children + } + ) }); const positionedPopup = renderSlotWithChildren( positioner, /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Positioner, {}), @@ -9322,9 +9554,9 @@ var Popup = (0, import_element17.forwardRef)(function TooltipPopup3({ portal, po }); // packages/ui/build-module/tooltip/trigger.mjs -var import_element18 = __toESM(require_element(), 1); +var import_element20 = __toESM(require_element(), 1); var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); -var Trigger = (0, import_element18.forwardRef)( +var Trigger = (0, import_element20.forwardRef)( function TooltipTrigger3(props, ref) { return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(index_parts_exports.Trigger, { ref, ...props }); } @@ -9344,8 +9576,8 @@ function Provider({ ...props }) { // packages/ui/build-module/icon-button/icon-button.mjs var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; -function getRuntime8() { +var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; +function getRuntime9() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9356,28 +9588,28 @@ function getRuntime8() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument8(document); + registerDocument9(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash8(targetDocument, hash) { +function documentContainsStyleHash9(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE8}]` + `style[${STYLE_HASH_ATTRIBUTE9}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { return true; } } return false; } -function injectStyle8(targetDocument, hash, css) { +function injectStyle9(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime8(); + const runtime = getRuntime9(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9386,24 +9618,24 @@ function injectStyle8(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash8(targetDocument, hash)) { + if (documentContainsStyleHash9(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument8(targetDocument) { - const runtime = getRuntime8(); +function registerDocument9(targetDocument) { + const runtime = getRuntime9(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle8(targetDocument, hash, css); + injectStyle9(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9417,18 +9649,18 @@ function registerDocument8(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle8(hash, css) { - const runtime = getRuntime8(); +function registerStyle9(hash, css) { + const runtime = getRuntime9(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle8(targetDocument, hash, css); + injectStyle9(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle8("358a2a646a", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}"); + registerStyle9("65cec4cf71", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}}"); } -var style_default7 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" }; -var IconButton = (0, import_element19.forwardRef)( +var style_default8 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" }; +var IconButton = (0, import_element21.forwardRef)( function IconButton2({ label, className, @@ -9442,7 +9674,7 @@ var IconButton = (0, import_element19.forwardRef)( positioner, ...restProps }, ref) { - const classes = clsx_default(style_default7["icon-button"], className); + const classes = clsx_default(style_default8["icon-button"], className); return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Provider, { delay: 0, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Root, { children: [ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( Trigger, @@ -9466,7 +9698,7 @@ var IconButton = (0, import_element19.forwardRef)( { icon, size: 24, - className: style_default7.icon + className: style_default8.icon } ) } @@ -9483,11 +9715,11 @@ var IconButton = (0, import_element19.forwardRef)( ); // packages/ui/build-module/link/link.mjs -var import_element20 = __toESM(require_element(), 1); +var import_element22 = __toESM(require_element(), 1); var import_i18n2 = __toESM(require_i18n(), 1); var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; -function getRuntime9() { +var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; +function getRuntime10() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9498,28 +9730,28 @@ function getRuntime9() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument9(document); + registerDocument10(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash9(targetDocument, hash) { +function documentContainsStyleHash10(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE9}]` + `style[${STYLE_HASH_ATTRIBUTE10}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { return true; } } return false; } -function injectStyle9(targetDocument, hash, css) { +function injectStyle10(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime9(); + const runtime = getRuntime10(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9528,24 +9760,24 @@ function injectStyle9(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash9(targetDocument, hash)) { + if (documentContainsStyleHash10(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument9(targetDocument) { - const runtime = getRuntime9(); +function registerDocument10(targetDocument) { + const runtime = getRuntime10(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle9(targetDocument, hash, css); + injectStyle10(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9559,30 +9791,30 @@ function registerDocument9(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle9(hash, css) { - const runtime = getRuntime9(); +function registerStyle10(hash, css) { + const runtime = getRuntime10(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle9(targetDocument, hash, css); + injectStyle10(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle9("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); + registerStyle10("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); } var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; if (typeof process === "undefined" || true) { - registerStyle9("2a5ab8f3a7", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}"); + registerStyle10("693cd16544", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid transparent;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}}"); } var focus_default2 = { "outset-ring--focus": "_08e8a2e44959f892__outset-ring--focus", "outset-ring--focus-except-active": "e25b2bdd7aa21721__outset-ring--focus-except-active", "outset-ring--focus-visible": "d0541bc9dd9dc7b6__outset-ring--focus-visible", "outset-ring--focus-within": "cd83dfc2126a0846__outset-ring--focus-within", "outset-ring--focus-within-except-active": "_970d04df7376df67__outset-ring--focus-within-except-active", "outset-ring--focus-within-visible": "c5cb3ee4bddaa8e4__outset-ring--focus-within-visible", "outset-ring--focus-parent-visible": "ecadb9e080e2dfa5__outset-ring--focus-parent-visible" }; if (typeof process === "undefined" || true) { - registerStyle9("90a23568f8", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}'); + registerStyle10("9f01019e30", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}}'); } -var style_default8 = { "link": "d4250949359b05ce__link", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" }; +var style_default9 = { "link": "d4250949359b05ce__link", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" }; if (typeof process === "undefined" || true) { - registerStyle9("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); + registerStyle10("d5c1b736fd", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}"); } var global_css_defense_default3 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; -var Link = (0, import_element20.forwardRef)(function Link2({ +var Link = (0, import_element22.forwardRef)(function Link2({ children, variant = "default", tone = "brand", @@ -9600,9 +9832,9 @@ var Link = (0, import_element20.forwardRef)(function Link2({ global_css_defense_default3.a, resets_default3["box-sizing"], focus_default2["outset-ring--focus"], - variant !== "unstyled" && style_default8.link, - variant !== "unstyled" && style_default8[`is-${tone}`], - variant === "unstyled" && style_default8["is-unstyled"], + variant !== "unstyled" && style_default9.link, + variant !== "unstyled" && style_default9[`is-${tone}`], + variant === "unstyled" && style_default9["is-unstyled"], className ), target: openInNewTab ? "_blank" : void 0, @@ -9611,7 +9843,7 @@ var Link = (0, import_element20.forwardRef)(function Link2({ openInNewTab && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( "span", { - className: style_default8["link-icon"], + className: style_default9["link-icon"], role: "img", "aria-label": ( /* translators: accessibility text appended to link text */ @@ -9638,11 +9870,11 @@ __export(notice_exports, { }); // packages/ui/build-module/notice/root.mjs -var import_element21 = __toESM(require_element(), 1); +var import_element23 = __toESM(require_element(), 1); import { speak as speak2 } from "@wordpress/a11y"; var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; -function getRuntime10() { +var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; +function getRuntime11() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9653,28 +9885,28 @@ function getRuntime10() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument10(document); + registerDocument11(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash10(targetDocument, hash) { +function documentContainsStyleHash11(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE10}]` + `style[${STYLE_HASH_ATTRIBUTE11}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { return true; } } return false; } -function injectStyle10(targetDocument, hash, css) { +function injectStyle11(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime10(); + const runtime = getRuntime11(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9683,24 +9915,24 @@ function injectStyle10(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash10(targetDocument, hash)) { + if (documentContainsStyleHash11(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument10(targetDocument) { - const runtime = getRuntime10(); +function registerDocument11(targetDocument) { + const runtime = getRuntime11(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle10(targetDocument, hash, css); + injectStyle11(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9714,21 +9946,21 @@ function registerDocument10(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle10(hash, css) { - const runtime = getRuntime10(); +function registerStyle11(hash, css) { + const runtime = getRuntime11(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle10(targetDocument, hash, css); + injectStyle11(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle10("e3ae230cea", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}"); + registerStyle11("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); } var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; if (typeof process === "undefined" || true) { - registerStyle10("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle11("80d31bc171", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}"); } -var style_default9 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var style_default10 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; var icons = { neutral: null, info: info_default, @@ -9747,20 +9979,20 @@ function safeRenderToString(message) { return message; } try { - return (0, import_element21.renderToString)(message); + return (0, import_element23.renderToString)(message); } catch { return void 0; } } function useSpokenMessage(message, politeness) { const spokenMessage = safeRenderToString(message); - (0, import_element21.useEffect)(() => { + (0, import_element23.useEffect)(() => { if (spokenMessage) { speak2(spokenMessage, politeness); } }, [spokenMessage, politeness]); } -var Root2 = (0, import_element21.forwardRef)(function Notice({ +var Root2 = (0, import_element23.forwardRef)(function Notice({ intent = "neutral", children, icon, @@ -9772,8 +10004,8 @@ var Root2 = (0, import_element21.forwardRef)(function Notice({ useSpokenMessage(spokenMessage, politeness); const iconElement = icon === null ? null : icon ?? icons[intent]; const mergedClassName = clsx_default( - style_default9.notice, - style_default9[`is-${intent}`], + style_default10.notice, + style_default10[`is-${intent}`], resets_default4["box-sizing"] ); const element = useRender({ @@ -9788,7 +10020,7 @@ var Root2 = (0, import_element21.forwardRef)(function Notice({ iconElement && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( Icon, { - className: style_default9.icon, + className: style_default10.icon, icon: iconElement } ) @@ -9801,10 +10033,10 @@ var Root2 = (0, import_element21.forwardRef)(function Notice({ }); // packages/ui/build-module/notice/title.mjs -var import_element22 = __toESM(require_element(), 1); +var import_element24 = __toESM(require_element(), 1); var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; -function getRuntime11() { +var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; +function getRuntime12() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9815,28 +10047,28 @@ function getRuntime11() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument11(document); + registerDocument12(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash11(targetDocument, hash) { +function documentContainsStyleHash12(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE11}]` + `style[${STYLE_HASH_ATTRIBUTE12}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { return true; } } return false; } -function injectStyle11(targetDocument, hash, css) { +function injectStyle12(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime11(); + const runtime = getRuntime12(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9845,24 +10077,24 @@ function injectStyle11(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash11(targetDocument, hash)) { + if (documentContainsStyleHash12(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument11(targetDocument) { - const runtime = getRuntime11(); +function registerDocument12(targetDocument) { + const runtime = getRuntime12(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle11(targetDocument, hash, css); + injectStyle12(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9876,25 +10108,25 @@ function registerDocument11(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle11(hash, css) { - const runtime = getRuntime11(); +function registerStyle12(hash, css) { + const runtime = getRuntime12(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle11(targetDocument, hash, css); + injectStyle12(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle11("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle12("80d31bc171", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}"); } -var style_default10 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; -var Title = (0, import_element22.forwardRef)( +var style_default11 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var Title = (0, import_element24.forwardRef)( function NoticeTitle({ className, ...props }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( Text, { ref, variant: "heading-md", - className: clsx_default(style_default10.title, className), + className: clsx_default(style_default11.title, className), ...props } ); @@ -9902,10 +10134,10 @@ var Title = (0, import_element22.forwardRef)( ); // packages/ui/build-module/notice/description.mjs -var import_element23 = __toESM(require_element(), 1); +var import_element25 = __toESM(require_element(), 1); var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; -function getRuntime12() { +var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; +function getRuntime13() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -9916,28 +10148,28 @@ function getRuntime12() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument12(document); + registerDocument13(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash12(targetDocument, hash) { +function documentContainsStyleHash13(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE12}]` + `style[${STYLE_HASH_ATTRIBUTE13}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { return true; } } return false; } -function injectStyle12(targetDocument, hash, css) { +function injectStyle13(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime12(); + const runtime = getRuntime13(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -9946,24 +10178,24 @@ function injectStyle12(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash12(targetDocument, hash)) { + if (documentContainsStyleHash13(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument12(targetDocument) { - const runtime = getRuntime12(); +function registerDocument13(targetDocument) { + const runtime = getRuntime13(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle12(targetDocument, hash, css); + injectStyle13(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -9977,25 +10209,25 @@ function registerDocument12(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle12(hash, css) { - const runtime = getRuntime12(); +function registerStyle13(hash, css) { + const runtime = getRuntime13(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle12(targetDocument, hash, css); + injectStyle13(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle12("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle13("80d31bc171", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}"); } -var style_default11 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; -var Description = (0, import_element23.forwardRef)( +var style_default12 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var Description = (0, import_element25.forwardRef)( function NoticeDescription({ className, ...props }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( Text, { ref, variant: "body-md", - className: clsx_default(style_default11.description, className), + className: clsx_default(style_default12.description, className), ...props } ); @@ -10003,9 +10235,9 @@ var Description = (0, import_element23.forwardRef)( ); // packages/ui/build-module/notice/actions.mjs -var import_element24 = __toESM(require_element(), 1); -var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; -function getRuntime13() { +var import_element26 = __toESM(require_element(), 1); +var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; +function getRuntime14() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10016,28 +10248,28 @@ function getRuntime13() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument13(document); + registerDocument14(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash13(targetDocument, hash) { +function documentContainsStyleHash14(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE13}]` + `style[${STYLE_HASH_ATTRIBUTE14}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { return true; } } return false; } -function injectStyle13(targetDocument, hash, css) { +function injectStyle14(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime13(); + const runtime = getRuntime14(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10046,24 +10278,24 @@ function injectStyle13(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash13(targetDocument, hash)) { + if (documentContainsStyleHash14(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument13(targetDocument) { - const runtime = getRuntime13(); +function registerDocument14(targetDocument) { + const runtime = getRuntime14(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle13(targetDocument, hash, css); + injectStyle14(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10077,18 +10309,18 @@ function registerDocument13(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle13(hash, css) { - const runtime = getRuntime13(); +function registerStyle14(hash, css) { + const runtime = getRuntime14(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle13(targetDocument, hash, css); + injectStyle14(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle13("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle14("80d31bc171", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}"); } -var style_default12 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; -var Actions = (0, import_element24.forwardRef)( +var style_default13 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var Actions = (0, import_element26.forwardRef)( function NoticeActions({ render, ...props }, ref) { const element = useRender({ defaultTagName: "div", @@ -10096,7 +10328,7 @@ var Actions = (0, import_element24.forwardRef)( ref, props: mergeProps( { - className: style_default12.actions + className: style_default13.actions }, props ) @@ -10106,11 +10338,11 @@ var Actions = (0, import_element24.forwardRef)( ); // packages/ui/build-module/notice/close-icon.mjs -var import_element25 = __toESM(require_element(), 1); +var import_element27 = __toESM(require_element(), 1); var import_i18n3 = __toESM(require_i18n(), 1); var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; -function getRuntime14() { +var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; +function getRuntime15() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10121,28 +10353,28 @@ function getRuntime14() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument14(document); + registerDocument15(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash14(targetDocument, hash) { +function documentContainsStyleHash15(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE14}]` + `style[${STYLE_HASH_ATTRIBUTE15}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { return true; } } return false; } -function injectStyle14(targetDocument, hash, css) { +function injectStyle15(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime14(); + const runtime = getRuntime15(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10151,24 +10383,24 @@ function injectStyle14(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash14(targetDocument, hash)) { + if (documentContainsStyleHash15(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument14(targetDocument) { - const runtime = getRuntime14(); +function registerDocument15(targetDocument) { + const runtime = getRuntime15(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle14(targetDocument, hash, css); + injectStyle15(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10182,25 +10414,25 @@ function registerDocument14(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle14(hash, css) { - const runtime = getRuntime14(); +function registerStyle15(hash, css) { + const runtime = getRuntime15(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle14(targetDocument, hash, css); + injectStyle15(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle14("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle15("80d31bc171", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}"); } -var style_default13 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; -var CloseIcon = (0, import_element25.forwardRef)( +var style_default14 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var CloseIcon = (0, import_element27.forwardRef)( function NoticeCloseIcon({ className, icon = close_small_default, label = (0, import_i18n3.__)("Dismiss"), ...props }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( IconButton, { ...props, ref, - className: clsx_default(style_default13["close-icon"], className), + className: clsx_default(style_default14["close-icon"], className), variant: "minimal", size: "small", tone: "neutral", @@ -10212,10 +10444,10 @@ var CloseIcon = (0, import_element25.forwardRef)( ); // packages/ui/build-module/notice/action-button.mjs -var import_element26 = __toESM(require_element(), 1); +var import_element28 = __toESM(require_element(), 1); var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; -function getRuntime15() { +var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; +function getRuntime16() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10226,28 +10458,28 @@ function getRuntime15() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument15(document); + registerDocument16(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash15(targetDocument, hash) { +function documentContainsStyleHash16(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE15}]` + `style[${STYLE_HASH_ATTRIBUTE16}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { return true; } } return false; } -function injectStyle15(targetDocument, hash, css) { +function injectStyle16(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime15(); + const runtime = getRuntime16(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10256,24 +10488,24 @@ function injectStyle15(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash15(targetDocument, hash)) { + if (documentContainsStyleHash16(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument15(targetDocument) { - const runtime = getRuntime15(); +function registerDocument16(targetDocument) { + const runtime = getRuntime16(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle15(targetDocument, hash, css); + injectStyle16(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10287,18 +10519,18 @@ function registerDocument15(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle15(hash, css) { - const runtime = getRuntime15(); +function registerStyle16(hash, css) { + const runtime = getRuntime16(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle15(targetDocument, hash, css); + injectStyle16(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle15("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle16("80d31bc171", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}"); } -var style_default14 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; -var ActionButton = (0, import_element26.forwardRef)( +var style_default15 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var ActionButton = (0, import_element28.forwardRef)( function NoticeActionButton({ className, loading, loadingAnnouncement, variant, ...props }, ref) { const loadingProps = loading !== void 0 ? { loading, loadingAnnouncement: loadingAnnouncement ?? "" } : {}; return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( @@ -10311,8 +10543,8 @@ var ActionButton = (0, import_element26.forwardRef)( tone: "neutral", variant, className: clsx_default( - style_default14["action-button"], - style_default14[`is-action-button-${variant}`], + style_default15["action-button"], + style_default15[`is-action-button-${variant}`], className ) } @@ -10321,10 +10553,10 @@ var ActionButton = (0, import_element26.forwardRef)( ); // packages/ui/build-module/notice/action-link.mjs -var import_element27 = __toESM(require_element(), 1); +var import_element29 = __toESM(require_element(), 1); var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; -function getRuntime16() { +var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; +function getRuntime17() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10335,28 +10567,28 @@ function getRuntime16() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument16(document); + registerDocument17(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash16(targetDocument, hash) { +function documentContainsStyleHash17(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE16}]` + `style[${STYLE_HASH_ATTRIBUTE17}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { return true; } } return false; } -function injectStyle16(targetDocument, hash, css) { +function injectStyle17(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime16(); + const runtime = getRuntime17(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10365,24 +10597,24 @@ function injectStyle16(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash16(targetDocument, hash)) { + if (documentContainsStyleHash17(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument16(targetDocument) { - const runtime = getRuntime16(); +function registerDocument17(targetDocument) { + const runtime = getRuntime17(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle16(targetDocument, hash, css); + injectStyle17(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10396,24 +10628,24 @@ function registerDocument16(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle16(hash, css) { - const runtime = getRuntime16(); +function registerStyle17(hash, css) { + const runtime = getRuntime17(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle16(targetDocument, hash, css); + injectStyle17(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle16("60dd1d4d42", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}"); + registerStyle17("80d31bc171", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}"); } -var style_default15 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; -var ActionLink = (0, import_element27.forwardRef)( +var style_default16 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" }; +var ActionLink = (0, import_element29.forwardRef)( function NoticeActionLink({ className, render, ...props }, ref) { return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( Text, { ref, - className: clsx_default(style_default15["action-link"], className), + className: clsx_default(style_default16["action-link"], className), ...props, variant: "body-md", render: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Link, { tone: "neutral", variant: "default", render }) @@ -10423,9 +10655,9 @@ var ActionLink = (0, import_element27.forwardRef)( ); // packages/admin-ui/build-module/navigable-region/index.mjs -var import_element28 = __toESM(require_element(), 1); +var import_element30 = __toESM(require_element(), 1); var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); -var NavigableRegion = (0, import_element28.forwardRef)( +var NavigableRegion = (0, import_element30.forwardRef)( ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( Tag, @@ -10450,8 +10682,8 @@ var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components // packages/admin-ui/build-module/page/header.mjs var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; -function getRuntime17() { +var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; +function getRuntime18() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10462,28 +10694,28 @@ function getRuntime17() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument17(document); + registerDocument18(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash17(targetDocument, hash) { +function documentContainsStyleHash18(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE17}]` + `style[${STYLE_HASH_ATTRIBUTE18}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { return true; } } return false; } -function injectStyle17(targetDocument, hash, css) { +function injectStyle18(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime17(); + const runtime = getRuntime18(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10492,24 +10724,24 @@ function injectStyle17(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash17(targetDocument, hash)) { + if (documentContainsStyleHash18(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument17(targetDocument) { - const runtime = getRuntime17(); +function registerDocument18(targetDocument) { + const runtime = getRuntime18(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle17(targetDocument, hash, css); + injectStyle18(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10523,17 +10755,17 @@ function registerDocument17(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle17(hash, css) { - const runtime = getRuntime17(); +function registerStyle18(hash, css) { + const runtime = getRuntime18(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle17(targetDocument, hash, css); + injectStyle18(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle17("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); + registerStyle18("683dd16f2c", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } -var style_default16 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; +var style_default17 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Header({ headingLevel = 1, breadcrumbs, @@ -10545,11 +10777,11 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Stack, { direction: "column", className: style_default16.header, children: [ + return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Stack, { direction: "column", className: style_default17.header, children: [ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)( Stack, { - className: style_default16["header-content"], + className: style_default17["header-content"], direction: "row", gap: "sm", justify: "space-between", @@ -10559,13 +10791,13 @@ function Header({ SidebarToggleSlot, { bubblesVirtually: true, - className: style_default16["sidebar-toggle-slot"] + className: style_default17["sidebar-toggle-slot"] } ), visual && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( "div", { - className: style_default16["header-visual"], + className: style_default17["header-visual"], "aria-hidden": "true", children: visual } @@ -10573,7 +10805,7 @@ function Header({ title && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( Text, { - className: style_default16["header-title"], + className: style_default17["header-title"], render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(HeadingTag, {}), variant: "heading-lg", children: title @@ -10586,7 +10818,7 @@ function Header({ Stack, { align: "center", - className: style_default16["header-actions"], + className: style_default17["header-actions"], direction: "row", gap: "sm", children: actions @@ -10600,7 +10832,7 @@ function Header({ { render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", {}), variant: "body-md", - className: style_default16["header-subtitle"], + className: style_default17["header-subtitle"], children: subTitle } ) @@ -10609,8 +10841,8 @@ function Header({ // packages/admin-ui/build-module/page/index.mjs var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; -function getRuntime18() { +var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; +function getRuntime19() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -10621,28 +10853,28 @@ function getRuntime18() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument18(document); + registerDocument19(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash18(targetDocument, hash) { +function documentContainsStyleHash19(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE18}]` + `style[${STYLE_HASH_ATTRIBUTE19}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { return true; } } return false; } -function injectStyle18(targetDocument, hash, css) { +function injectStyle19(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime18(); + const runtime = getRuntime19(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -10651,24 +10883,24 @@ function injectStyle18(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash18(targetDocument, hash)) { + if (documentContainsStyleHash19(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument18(targetDocument) { - const runtime = getRuntime18(); +function registerDocument19(targetDocument) { + const runtime = getRuntime19(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle18(targetDocument, hash, css); + injectStyle19(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -10682,17 +10914,17 @@ function registerDocument18(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle18(hash, css) { - const runtime = getRuntime18(); +function registerStyle19(hash, css) { + const runtime = getRuntime19(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle18(targetDocument, hash, css); + injectStyle19(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle18("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); + registerStyle19("683dd16f2c", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } -var style_default17 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; +var style_default18 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Page({ headingLevel, breadcrumbs, @@ -10707,7 +10939,7 @@ function Page({ hasPadding = false, showSidebarToggle = true }) { - const classes = clsx_default(style_default17.page, className); + const classes = clsx_default(style_default18.page, className); const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ (title || breadcrumbs || badges || actions || visual) && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( @@ -10727,8 +10959,8 @@ function Page({ "div", { className: clsx_default( - style_default17.content, - style_default17["has-padding"] + style_default18.content, + style_default18["has-padding"] ), children } @@ -10741,7 +10973,7 @@ var page_default = Page; // routes/connectors-home/stage.tsx var import_components4 = __toESM(require_components()); var import_data4 = __toESM(require_data()); -var import_element32 = __toESM(require_element()); +var import_element34 = __toESM(require_element()); var import_i18n7 = __toESM(require_i18n()); var import_core_data3 = __toESM(require_core_data()); import { @@ -10749,10 +10981,10 @@ import { } from "@wordpress/connectors"; // routes/connectors-home/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='359735ef0e']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='09e9b056ea']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "359735ef0e"); - style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 92% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 58% -10%,#aa82b873 0,#aa82b800 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 8% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 42% -10%,#aa82b873 0,#aa82b800 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); + style.setAttribute("data-wp-hash", "09e9b056ea"); + style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,rgba(202,158,198,.75) 0,rgba(202,158,198,0) 60%),radial-gradient(ellipse 55% 110% at 92% -15%,rgba(208,175,217,.7) 0,rgba(208,175,217,0) 65%),radial-gradient(ellipse 40% 85% at 58% -10%,rgba(170,130,184,.45) 0,rgba(170,130,184,0) 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,rgba(202,158,198,.75) 0,rgba(202,158,198,0) 60%),radial-gradient(ellipse 55% 110% at 8% -15%,rgba(208,175,217,.7) 0,rgba(208,175,217,0) 65%),radial-gradient(ellipse 40% 85% at 42% -10%,rgba(170,130,184,.45) 0,rgba(170,130,184,0) 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); document.head.appendChild(style); } @@ -10760,14 +10992,14 @@ if (typeof document !== "undefined" && true && !document.head.querySelector("sty var import_components3 = __toESM(require_components()); var import_core_data2 = __toESM(require_core_data()); var import_data3 = __toESM(require_data()); -var import_element31 = __toESM(require_element()); +var import_element33 = __toESM(require_element()); var import_i18n6 = __toESM(require_i18n()); var import_notices2 = __toESM(require_notices()); var import_url = __toESM(require_url()); // routes/connectors-home/default-connectors.tsx var import_components2 = __toESM(require_components()); -var import_element30 = __toESM(require_element()); +var import_element32 = __toESM(require_element()); var import_data2 = __toESM(require_data()); var import_i18n5 = __toESM(require_i18n()); import { @@ -10787,7 +11019,7 @@ var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptIn // routes/connectors-home/use-connector-plugin.ts var import_core_data = __toESM(require_core_data()); var import_data = __toESM(require_data()); -var import_element29 = __toESM(require_element()); +var import_element31 = __toESM(require_element()); var import_i18n4 = __toESM(require_i18n()); var import_notices = __toESM(require_notices()); function useConnectorPlugin({ @@ -10799,10 +11031,10 @@ function useConnectorPlugin({ keySource = "none", initialIsConnected = false }) { - const [isExpanded, setIsExpanded] = (0, import_element29.useState)(false); - const [isBusy, setIsBusy] = (0, import_element29.useState)(false); - const [connectedState, setConnectedState] = (0, import_element29.useState)(initialIsConnected); - const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element29.useState)(null); + const [isExpanded, setIsExpanded] = (0, import_element31.useState)(false); + const [isBusy, setIsBusy] = (0, import_element31.useState)(false); + const [connectedState, setConnectedState] = (0, import_element31.useState)(initialIsConnected); + const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element31.useState)(null); const pluginBasename = pluginFileFromServer?.replace(/\.php$/, ""); const pluginSlug = pluginBasename?.includes("/") ? pluginBasename.split("/")[0] : pluginBasename; const { @@ -11356,7 +11588,7 @@ function ApiKeyConnector({ const isExternallyConfigured = keySource === "env" || keySource === "constant"; const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; const showActionButton = !showUnavailableBadge; - const actionButtonRef = (0, import_element30.useRef)(null); + const actionButtonRef = (0, import_element32.useRef)(null); return /* @__PURE__ */ React.createElement( ConnectorItem, { @@ -11466,15 +11698,15 @@ for (const c of connectorDataValues) { } } function AiPluginCallout() { - const [isBusy, setIsBusy] = (0, import_element31.useState)(false); - const [justActivated, setJustActivated] = (0, import_element31.useState)(false); - const actionButtonRef = (0, import_element31.useRef)(null); - (0, import_element31.useEffect)(() => { + const [isBusy, setIsBusy] = (0, import_element33.useState)(false); + const [justActivated, setJustActivated] = (0, import_element33.useState)(false); + const actionButtonRef = (0, import_element33.useRef)(null); + (0, import_element33.useEffect)(() => { if (justActivated) { actionButtonRef.current?.focus(); } }, [justActivated]); - const initialHasConnectedProvider = (0, import_element31.useRef)( + const initialHasConnectedProvider = (0, import_element33.useRef)( connectorDataValues.some( (c) => c.type === "ai_provider" && c.authentication.method === "api_key" && c.authentication.isConnected ) @@ -11623,7 +11855,7 @@ function AiPluginCallout() { onClick: isBusy ? void 0 : activatePlugin }; }; - return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element31.createInterpolateElement)(getMessage(), { + return /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout" }, /* @__PURE__ */ React.createElement("div", { className: "ai-plugin-callout__content" }, /* @__PURE__ */ React.createElement("p", null, (0, import_element33.createInterpolateElement)(getMessage(), { strong: /* @__PURE__ */ React.createElement("strong", null), // @ts-ignore children are injected by createInterpolateElement at runtime. a: /* @__PURE__ */ React.createElement(import_components3.ExternalLink, { href: AI_PLUGIN_URL }) @@ -11766,7 +11998,7 @@ function ConnectorsPage() { return null; } ))), - canInstallPlugins && !isFileModDisabled && /* @__PURE__ */ React.createElement("p", null, (0, import_element32.createInterpolateElement)( + canInstallPlugins && !isFileModDisabled && /* @__PURE__ */ React.createElement("p", null, (0, import_element34.createInterpolateElement)( (0, import_i18n7.__)( "If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available." ), diff --git a/src/wp-includes/build/routes/connectors-home/content.min.asset.php b/src/wp-includes/build/routes/connectors-home/content.min.asset.php index 3d989d85dade0..02262484b37d9 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.asset.php +++ b/src/wp-includes/build/routes/connectors-home/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => 'ab5f74f49e6a70ea8062'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-theme', 'wp-url'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/connectors', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '71d471e6411e7c385a4c'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/connectors-home/content.min.js b/src/wp-includes/build/routes/connectors-home/content.min.js index 843176b88cd43..a4ff7f4b4b5e6 100644 --- a/src/wp-includes/build/routes/connectors-home/content.min.js +++ b/src/wp-includes/build/routes/connectors-home/content.min.js @@ -1,4 +1,4 @@ -var Qu=Object.create;var wr=Object.defineProperty;var $u=Object.getOwnPropertyDescriptor;var ef=Object.getOwnPropertyNames;var tf=Object.getPrototypeOf,of=Object.prototype.hasOwnProperty;var ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),vr=(e,t)=>{for(var o in t)wr(e,o,{get:t[o],enumerable:!0})},nf=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ef(t))!of.call(e,r)&&r!==o&&wr(e,r,{get:()=>t[r],enumerable:!(n=$u(t,r))||n.enumerable});return e};var g=(e,t,o)=>(o=e!=null?Qu(tf(e)):{},nf(t||!e||!e.__esModule?wr(o,"default",{value:e,enumerable:!0}):o,e));var _t=ve((k0,Hs)=>{Hs.exports=window.wp.i18n});var oe=ve((N0,Ds)=>{Ds.exports=window.wp.element});var H=ve((L0,js)=>{js.exports=window.React});var q=ve((z0,Ys)=>{Ys.exports=window.ReactJSXRuntime});var xt=ve((wb,ca)=>{ca.exports=window.ReactDOM});var Tc=ve(Ec=>{"use strict";var bo=H();function $p(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var em=typeof Object.is=="function"?Object.is:$p,tm=bo.useState,om=bo.useEffect,nm=bo.useLayoutEffect,rm=bo.useDebugValue;function im(e,t){var o=t(),n=tm({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return nm(function(){r.value=o,r.getSnapshot=t,ei(r)&&i({inst:r})},[e,o,t]),om(function(){return ei(r)&&i({inst:r}),e(function(){ei(r)&&i({inst:r})})},[e]),rm(o),o}function ei(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!em(e,o)}catch{return!0}}function sm(e,t){return t()}var am=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?sm:im;Ec.useSyncExternalStore=bo.useSyncExternalStore!==void 0?bo.useSyncExternalStore:am});var ti=ve((k1,Pc)=>{"use strict";Pc.exports=Tc()});var Ac=ve(Cc=>{"use strict";var Bn=H(),cm=ti();function lm(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var dm=typeof Object.is=="function"?Object.is:lm,um=cm.useSyncExternalStore,fm=Bn.useRef,pm=Bn.useEffect,mm=Bn.useMemo,gm=Bn.useDebugValue;Cc.useSyncExternalStoreWithSelector=function(e,t,o,n,r){var i=fm(null);if(i.current===null){var s={hasValue:!1,value:null};i.current=s}else s=i.current;i=mm(function(){function d(p){if(!l){if(l=!0,c=p,p=n(p),r!==void 0&&s.hasValue){var f=s.value;if(r(f,p))return u=f}return u=p}if(f=u,dm(c,p))return f;var h=n(p);return r!==void 0&&r(f,h)?(c=p,f):(c=p,u=h)}var l=!1,c,u,m=o===void 0?null:o;return[function(){return d(t())},m===null?void 0:function(){return d(m())}]},[t,o,n,r]);var a=um(e,i[0],i[1]);return pm(function(){s.hasValue=!0,s.value=a},[a]),gm(a),a}});var Oc=ve((N1,kc)=>{"use strict";kc.exports=Ac()});var Zt=ve((Zx,Zl)=>{Zl.exports=window.wp.primitives});var nd=ve((b2,od)=>{od.exports=window.wp.theme});var Yi=ve((w2,id)=>{id.exports=window.wp.privateApis});var $o=ve((Z4,fu)=>{fu.exports=window.wp.components});var tn=ve((c5,_u)=>{_u.exports=window.wp.data});var fr=ve((l5,yu)=>{yu.exports=window.wp.coreData});var ks=ve((d5,xu)=>{xu.exports=window.wp.notices});var Su=ve((u5,Ru)=>{Ru.exports=window.wp.url});function zs(e){var t,o,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(o=zs(e[t]))&&(n&&(n+=" "),n+=o)}else for(o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function rf(){for(var e,t,o=0,n="",r=arguments.length;o<r;o++)(e=arguments[o])&&(t=zs(e))&&(n&&(n+=" "),n+=t);return n}var J=rf;var Wl=g(oe(),1);var yr=g(H(),1);var Vs=g(H(),1),Fs={};function de(e,t){let o=Vs.useRef(Fs);return o.current===Fs&&(o.current=e(t)),o}var _r=yr[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],sf=_r&&_r!==yr.useLayoutEffect?_r:e=>e();function V(e){let t=de(af).current;return t.next=e,sf(t.effect),t.trampoline}function af(){let e={next:void 0,callback:cf,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function cf(){}var Ws=g(H(),1),lf=()=>{},j=typeof document<"u"?Ws.useLayoutEffect:lf;var gn=g(H(),1),df=gn.createContext(void 0);function no(){return gn.useContext(df)?.direction??"ltr"}function uf(e,t){return function(n,...r){let i=new URL(e);return i.searchParams.set("code",n.toString()),r.forEach(s=>i.searchParams.append("args[]",s)),`${t} error #${n}; visit ${i} for the full message.`}}var ff=uf("https://base-ui.com/production-error","Base UI"),xe=ff;var Ht=g(H(),1);function xr(e,t,o,n){let r=de(Gs).current;return pf(r,e,t,o,n)&&Xs(r,[e,t,o,n]),r.callback}function Us(e){let t=de(Gs).current;return mf(t,e)&&Xs(t,e),t.callback}function Gs(){return{callback:null,cleanup:null,refs:[]}}function pf(e,t,o,n,r){return e.refs[0]!==t||e.refs[1]!==o||e.refs[2]!==n||e.refs[3]!==r}function mf(e,t){return e.refs.length!==t.length||e.refs.some((o,n)=>o!==t[n])}function Xs(e,t){if(e.refs=t,t.every(o=>o==null)){e.callback=null;return}e.callback=o=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),o!=null){let n=Array(t.length).fill(null);for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=i(o);typeof s=="function"&&(n[r]=s);break}case"object":{i.current=o;break}default:}}e.cleanup=()=>{for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=n[r];typeof s=="function"?s():i(null);break}case"object":{i.current=null;break}default:}}}}}}var qs=g(H(),1);var Ks=g(H(),1),gf=parseInt(Ks.version,10);function ro(e){return gf>=e}function Rr(e){if(!qs.isValidElement(e))return null;let t=e,o=t.props;return(ro(19)?o?.ref:t.ref)??null}function Oo(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function mt(){}var X0=Object.freeze([]),ge=Object.freeze({});function Zs(e,t){let o={};for(let n in e){let r=e[n];if(t?.hasOwnProperty(n)){let i=t[n](r);i!=null&&Object.assign(o,i);continue}r===!0?o[`data-${n.toLowerCase()}`]="":r&&(o[`data-${n.toLowerCase()}`]=r.toString())}return o}function Js(e,t){return typeof e=="function"?e(t):e}function Qs(e,t){return typeof e=="function"?e(t):e}var Sr={};function Ae(e,t,o,n,r){if(!o&&!n&&!r&&!e)return bn(t);let i=bn(e);return t&&(i=No(i,t)),o&&(i=No(i,o)),n&&(i=No(i,n)),r&&(i=No(i,r)),i}function $s(e){if(e.length===0)return Sr;if(e.length===1)return bn(e[0]);let t=bn(e[0]);for(let o=1;o<e.length;o+=1)t=No(t,e[o]);return t}function bn(e){return Er(e)?{...ta(e,Sr)}:bf(e)}function No(e,t){return Er(t)?ta(t,e):hf(e,t)}function bf(e){let t={...e};for(let o in t){let n=t[o];ea(o,n)&&(t[o]=oa(n))}return t}function hf(e,t){if(!t)return e;for(let o in t){let n=t[o];switch(o){case"style":{e[o]=Oo(e.style,n);break}case"className":{e[o]=Tr(e.className,n);break}default:ea(o,n)?e[o]=wf(e[o],n):e[o]=n}}return e}function ea(e,t){let o=e.charCodeAt(0),n=e.charCodeAt(1),r=e.charCodeAt(2);return o===111&&n===110&&r>=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function Er(e){return typeof e=="function"}function ta(e,t){return Er(e)?e(t):e??Sr}function wf(e,t){return t?e?(...o)=>{let n=o[0];if(na(n)){let i=n;Lo(i);let s=t(...o);return i.baseUIHandlerPrevented||e?.(...o),s}let r=t(...o);return e?.(...o),r}:oa(t):e}function oa(e){return e&&((...t)=>{let o=t[0];return na(o)&&Lo(o),e(...t)})}function Lo(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Tr(e,t){return t?e?t+" "+e:t:e}function na(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Pr=g(H(),1);function Re(e,t,o={}){let n=t.render,r=vf(t,o);if(o.enabled===!1)return null;let i=o.state??ge;return xf(e,n,r,i)}function vf(e,t={}){let{className:o,style:n,render:r}=e,{state:i=ge,ref:s,props:a,stateAttributesMapping:d,enabled:l=!0}=t,c=l?Js(o,i):void 0,u=l?Qs(n,i):void 0,m=l?Zs(i,d):ge,p=l&&a?_f(a):void 0,f=l?Oo(m,p)??{}:ge;return typeof document<"u"&&(l?Array.isArray(s)?f.ref=Us([f.ref,Rr(r),...s]):f.ref=xr(f.ref,Rr(r),s):xr(null,null)),l?(c!==void 0&&(f.className=Tr(f.className,c)),u!==void 0&&(f.style=Oo(f.style,u)),f):ge}function _f(e){return Array.isArray(e)?$s(e):Ae(void 0,e)}var yf=Symbol.for("react.lazy");function xf(e,t,o,n){if(t){if(typeof t=="function")return t(o,n);let r=Ae(o,t.props);r.ref=o.ref;let i=t;return i?.$$typeof===yf&&(i=Ht.Children.toArray(t)[0]),Ht.cloneElement(i,r)}if(e&&typeof e=="string")return Rf(e,o);throw new Error(xe(8))}function Rf(e,t){return e==="button"?(0,Pr.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Pr.createElement)("img",{alt:"",...t,key:t.key}):Ht.createElement(e,t)}var G={};vr(G,{cancelOpen:()=>Jf,chipRemovePress:()=>Lf,clearPress:()=>Nf,closePress:()=>kf,closeWatcher:()=>Yf,decrementPress:()=>Bf,disabled:()=>$f,drag:()=>Kf,escapeKey:()=>Wf,focusOut:()=>Vf,imperativeAction:()=>ep,incrementPress:()=>Mf,inputBlur:()=>Df,inputChange:()=>Hf,inputClear:()=>zf,inputPaste:()=>jf,inputPress:()=>Ff,itemPress:()=>Af,keyboard:()=>Gf,linkPress:()=>Of,listNavigation:()=>Uf,none:()=>Sf,outsidePress:()=>Cf,pointer:()=>Xf,scrub:()=>Zf,siblingOpen:()=>Qf,swipe:()=>tp,trackPress:()=>If,triggerFocus:()=>Pf,triggerHover:()=>Tf,triggerPress:()=>Ef,wheel:()=>qf,windowResize:()=>op});var Sf="none",Ef="trigger-press",Tf="trigger-hover",Pf="trigger-focus",Cf="outside-press",Af="item-press",kf="close-press",Of="link-press",Nf="clear-press",Lf="chip-remove-press",If="track-press",Mf="increment-press",Bf="decrement-press",Hf="input-change",zf="input-clear",Df="input-blur",jf="input-paste",Ff="input-press",Vf="focus-out",Wf="escape-key",Yf="close-watcher",Uf="list-navigation",Gf="keyboard",Xf="pointer",Kf="drag",qf="wheel",Zf="scrub",Jf="cancel-open",Qf="sibling-open",$f="disabled",ep="imperative-action",tp="swipe",op="window-resize";function ee(e,t,o,n){let r=!1,i=!1,s=n??ge;return{reason:e,event:t??new Event("base-ui"),cancel(){r=!0},allowPropagation(){i=!0},get isCanceled(){return r},get isPropagationAllowed(){return i},trigger:o,...s}}var hn=g(H(),1);var np=g(H(),1),ra={...np};var ia=0;function rp(e,t="mui"){let[o,n]=hn.useState(e),r=e||o;return hn.useEffect(()=>{o==null&&(ia+=1,n(`${t}-${ia}`))},[o,t]),r}var sa=ra.useId;function yt(e,t){if(sa!==void 0){let o=sa();return e??(t?`${t}-${o}`:o)}return rp(e,t)}function aa(e){return yt(e,"base-ui")}var fa=g(xt(),1);var la=g(H(),1),ip=[];function io(e){la.useEffect(e,ip)}var wn=null,xb=globalThis.requestAnimationFrame,Cr=class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=t=>{this.isScheduled=!1;let o=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let r=0;r<o.length;r+=1)o[r]?.(t)};request(t){let o=this.nextId;return this.nextId+=1,this.callbacks.push(t),this.callbacksCount+=1,!this.isScheduled&&(requestAnimationFrame(this.tick),this.isScheduled=!0),o}cancel(t){let o=t-this.startId;o<0||o>=this.callbacks.length||(this.callbacks[o]=null,this.callbacksCount-=1)}},vn=new Cr,st=class e{static create(){return new e}static request(t){return vn.request(t)}static cancel(t){return vn.cancel(t)}currentId=wn;request(t){this.cancel(),this.currentId=vn.request(()=>{this.currentId=wn,t()})}cancel=()=>{this.currentId!==wn&&(vn.cancel(this.currentId),this.currentId=wn)};disposeEffect=()=>this.cancel};function so(){let e=de(st.create).current;return io(e.disposeEffect),e}function da(e){return e==null?e:"current"in e?e.current:e}var zt=(function(e){return e.startingStyle="data-starting-style",e.endingStyle="data-ending-style",e})({}),sp={[zt.startingStyle]:""},ap={[zt.endingStyle]:""},ua={transitionStatus(e){return e==="starting"?sp:e==="ending"?ap:null}};function ao(e,t=!1,o=!0){let n=so();return V((r,i=null)=>{n.cancel();let s=da(e);if(s==null)return;let a=s,d=()=>{fa.flushSync(r)};if(typeof a.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){r();return}function l(){Promise.all(a.getAnimations().map(c=>c.finished)).then(()=>{i?.aborted||d()}).catch(()=>{if(o){i?.aborted||d();return}let c=a.getAnimations();!i?.aborted&&c.length>0&&c.some(u=>u.pending||u.playState!=="finished")&&l()})}if(t){let c=zt.startingStyle;if(!a.hasAttribute(c)){n.request(l);return}let u=new MutationObserver(()=>{a.hasAttribute(c)||(u.disconnect(),l())});u.observe(a,{attributes:!0,attributeFilter:[c]}),i?.addEventListener("abort",()=>u.disconnect(),{once:!0});return}n.request(l)})}var Ar=g(H(),1);function pa(e,t=!1,o=!1){let[n,r]=Ar.useState(e&&t?"idle":void 0),[i,s]=Ar.useState(e);return e&&!i&&(s(!0),r("starting")),!e&&i&&n!=="ending"&&!o&&r("ending"),!e&&!i&&n==="ending"&&r(void 0),j(()=>{if(!e&&i&&n!=="ending"&&o){let a=st.request(()=>{r("ending")});return()=>{st.cancel(a)}}},[e,i,n,o]),j(()=>{if(!e||t)return;let a=st.request(()=>{r(void 0)});return()=>{st.cancel(a)}},[t,e]),j(()=>{if(!e||!t)return;e&&i&&n!=="idle"&&r("starting");let a=st.request(()=>{r("idle")});return()=>{st.cancel(a)}},[t,e,i,n]),{mounted:i,setMounted:s,transitionStatus:n}}var fo=g(H(),1);function _n(){return typeof window<"u"}function jt(e){return yn(e)?(e.nodeName||"").toLowerCase():"#document"}function ce(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Je(e){var t;return(t=(yn(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function yn(e){return _n()?e instanceof Node||e instanceof ce(e).Node:!1}function W(e){return _n()?e instanceof Element||e instanceof ce(e).Element:!1}function ue(e){return _n()?e instanceof HTMLElement||e instanceof ce(e).HTMLElement:!1}function co(e){return!_n()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof ce(e).ShadowRoot}function lo(e){let{overflow:t,overflowX:o,overflowY:n,display:r}=Se(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+o)&&r!=="inline"&&r!=="contents"}function ma(e){return/^(table|td|th)$/.test(jt(e))}function Io(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}var cp=/transform|translate|scale|rotate|perspective|filter/,lp=/paint|layout|strict|content/,Dt=e=>!!e&&e!=="none",kr;function xn(e){let t=W(e)?Se(e):e;return Dt(t.transform)||Dt(t.translate)||Dt(t.scale)||Dt(t.rotate)||Dt(t.perspective)||!uo()&&(Dt(t.backdropFilter)||Dt(t.filter))||cp.test(t.willChange||"")||lp.test(t.contain||"")}function ga(e){let t=Ze(e);for(;ue(t)&&!Qe(t);){if(xn(t))return t;if(Io(t))return null;t=Ze(t)}return null}function uo(){return kr==null&&(kr=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),kr}function Qe(e){return/^(html|body|#document)$/.test(jt(e))}function Se(e){return ce(e).getComputedStyle(e)}function Mo(e){return W(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Ze(e){if(jt(e)==="html")return e;let t=e.assignedSlot||e.parentNode||co(e)&&e.host||Je(e);return co(t)?t.host:t}function ba(e){let t=Ze(e);return Qe(t)?e.ownerDocument?e.ownerDocument.body:e.body:ue(t)&&lo(t)?t:ba(t)}function Rt(e,t,o){var n;t===void 0&&(t=[]),o===void 0&&(o=!0);let r=ba(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),s=ce(r);if(i){let a=Rn(s);return t.concat(s,s.visualViewport||[],lo(r)?r:[],a&&o?Rt(a):[])}else return t.concat(r,Rt(r,[],o))}function Rn(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var Sn=g(H(),1),dp=Sn.createContext(void 0);function ha(e=!1){let t=Sn.useContext(dp);if(t===void 0&&!e)throw new Error(xe(16));return t}var wa=g(H(),1);function va(e){let{focusableWhenDisabled:t,disabled:o,composite:n=!1,tabIndex:r=0,isNativeButton:i}=e,s=n&&t!==!1,a=n&&t===!1;return{props:wa.useMemo(()=>{let l={onKeyDown(c){o&&t&&c.key!=="Tab"&&c.preventDefault()}};return n||(l.tabIndex=r,!i&&o&&(l.tabIndex=t?r:-1)),(i&&(t||s)||!i&&o)&&(l["aria-disabled"]=o),i&&(!t||a)&&(l.disabled=o),l},[n,o,t,s,a,i,r])}}function _a(e={}){let{disabled:t=!1,focusableWhenDisabled:o,tabIndex:n=0,native:r=!0,composite:i}=e,s=fo.useRef(null),a=ha(!0),d=i??a!==void 0,{props:l}=va({focusableWhenDisabled:o,disabled:t,composite:d,tabIndex:n,isNativeButton:r}),c=fo.useCallback(()=>{let p=s.current;Or(p)&&d&&t&&l.disabled===void 0&&p.disabled&&(p.disabled=!1)},[t,l.disabled,d]);j(c,[c]);let u=fo.useCallback((p={})=>{let{onClick:f,onMouseDown:h,onKeyUp:v,onKeyDown:b,onPointerDown:T,...y}=p;return Ae({type:r?"button":void 0,onClick(w){if(t){w.preventDefault();return}f?.(w)},onMouseDown(w){t||h?.(w)},onKeyDown(w){if(t||(Lo(w),b?.(w),w.baseUIHandlerPrevented))return;let R=w.target===w.currentTarget,E=w.currentTarget,x=Or(E),k=!r&&up(E),O=R&&(r?x:!k),B=w.key==="Enter",z=w.key===" ",N=E.getAttribute("role"),C=N?.startsWith("menuitem")||N==="option"||N==="gridcell";if(R&&d&&z){if(w.defaultPrevented&&C)return;w.preventDefault(),k||r&&x?(E.click(),w.preventBaseUIHandler()):O&&(f?.(w),w.preventBaseUIHandler());return}O&&(!r&&(z||B)&&w.preventDefault(),!r&&B&&f?.(w))},onKeyUp(w){if(!t){if(Lo(w),v?.(w),w.target===w.currentTarget&&r&&d&&Or(w.currentTarget)&&w.key===" "){w.preventDefault();return}w.baseUIHandlerPrevented||w.target===w.currentTarget&&!r&&!d&&w.key===" "&&f?.(w)}},onPointerDown(w){if(t){w.preventDefault();return}T?.(w)}},r?void 0:{role:"button"},l,y)},[t,l,d,r]),m=V(p=>{s.current=p,c()});return{getButtonProps:u,buttonRef:m}}function Or(e){return ue(e)&&e.tagName==="BUTTON"}function up(e){return!!(e?.tagName==="A"&&e?.href)}var St=typeof navigator<"u",Nr=fp(),ya=mp(),En=pp(),Ub=typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter:none"),Gb=Nr.platform==="MacIntel"&&Nr.maxTouchPoints>1?!0:/iP(hone|ad|od)|iOS/.test(Nr.platform),Xb=St&&/firefox/i.test(En),xa=St&&/apple/i.test(navigator.vendor),Kb=St&&/Edg/i.test(En),qb=St&&/android/i.test(ya)||/android/i.test(En),Ra=St&&ya.toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints,Sa=En.includes("jsdom/");function fp(){if(!St)return{platform:"",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??-1}}function pp(){if(!St)return"";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:t,version:o})=>`${t}/${o}`).join(" "):navigator.userAgent}function mp(){if(!St)return"";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??""}var Lr="data-base-ui-focusable",Ir="active",Mr="selected",Br="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function Tn(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function ne(e,t){if(!e||!t)return!1;let o=t.getRootNode?.();if(e.contains(t))return!0;if(o&&co(o)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function ke(e){return"composedPath"in e?e.composedPath()[0]:e.target}function Ft(e,t){if(!W(e))return!1;let o=e;if(t.hasElement(o))return!o.hasAttribute("data-trigger-disabled");for(let[,n]of t.entries())if(ne(n,o))return!n.hasAttribute("data-trigger-disabled");return!1}function Ye(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);let o=e;return o.target!=null&&t.contains(o.target)}function Ea(e){return e.matches("html,body")}function Ta(e){return ue(e)&&e.matches(Br)}function Hr(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${Br}`)!=null}function Pa(e){if(!e||Sa)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function $e(e,t,o=!0){return e.filter(r=>r.parentId===t).flatMap(r=>[...!o||r.context?.open?[r]:[],...$e(e,r.id,o)])}function Ca(e){return"nativeEvent"in e}function Vt(e,t){let o=["mouse","pen"];return t||o.push("",void 0),o.includes(e)}function Aa(e){let t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}var Na=["top","right","bottom","left"];var Et=Math.min,Oe=Math.max,Tt=Math.round,Ho=Math.floor,et=e=>({x:e,y:e}),gp={left:"right",right:"left",bottom:"top",top:"bottom"};function zo(e,t,o){return Oe(e,Et(t,o))}function tt(e,t){return typeof e=="function"?e(t):e}function _e(e){return e.split("-")[0]}function ot(e){return e.split("-")[1]}function Cn(e){return e==="x"?"y":"x"}function Do(e){return e==="y"?"height":"width"}function Me(e){let t=e[0];return t==="t"||t==="b"?"y":"x"}function jo(e){return Cn(Me(e))}function La(e,t,o){o===void 0&&(o=!1);let n=ot(e),r=jo(e),i=Do(r),s=r==="x"?n===(o?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=Bo(s)),[s,Bo(s)]}function Ia(e){let t=Bo(e);return[Pn(e),t,Pn(t)]}function Pn(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var ka=["left","right"],Oa=["right","left"],bp=["top","bottom"],hp=["bottom","top"];function wp(e,t,o){switch(e){case"top":case"bottom":return o?t?Oa:ka:t?ka:Oa;case"left":case"right":return t?bp:hp;default:return[]}}function Ma(e,t,o,n){let r=ot(e),i=wp(_e(e),o==="start",n);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(Pn)))),i}function Bo(e){let t=_e(e);return gp[t]+e.slice(t.length)}function vp(e){return{top:0,right:0,bottom:0,left:0,...e}}function An(e){return typeof e!="number"?vp(e):{top:e,right:e,bottom:e,left:e}}function Wt(e){let{x:t,y:o,width:n,height:r}=e;return{width:n,height:r,top:o,left:t,right:t+n,bottom:o+r,x:t,y:o}}function be(e){return e?.ownerDocument||document}function Q(e,t,o,n){return e.addEventListener(t,o,n),()=>{e.removeEventListener(t,o,n)}}var Ba=g(H(),1);function kn(e){let{enabled:t=!0,open:o,ref:n,onComplete:r}=e,i=V(r),s=ao(n,o,!1);Ba.useEffect(()=>{if(!t)return;let a=new AbortController;return s(i,a.signal),()=>{a.abort()}},[t,o,i,s])}var Ha=g(H(),1);function za(e){let t=Ha.useRef(!0);t.current&&(t.current=!1,e())}var Fo=0,De=class e{static create(){return new e}currentId=Fo;start(t,o){this.clear(),this.currentId=setTimeout(()=>{this.currentId=Fo,o()},t)}isStarted(){return this.currentId!==Fo}clear=()=>{this.currentId!==Fo&&(clearTimeout(this.currentId),this.currentId=Fo)};disposeEffect=()=>this.clear};function gt(){let e=de(De.create).current;return io(e.disposeEffect),e}var Be=g(H(),1);function _p(e,t){return t!=null&&!Vt(t)?0:typeof e=="function"?e():e}function Yt(e,t,o){let n=_p(e,o);return typeof n=="number"?n:n?.[t]}function zr(e){return typeof e=="function"?e():e}function On(e,t){return t||e==="click"||e==="mousedown"}var Da=g(q(),1),ja=Be.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new De,currentIdRef:{current:null},currentContextRef:{current:null}});function Dr(e){let{children:t,delay:o,timeoutMs:n=0}=e,r=Be.useRef(o),i=Be.useRef(o),s=Be.useRef(null),a=Be.useRef(null),d=gt();return(0,Da.jsx)(ja.Provider,{value:Be.useMemo(()=>({hasProvider:!0,delayRef:r,initialDelayRef:i,currentIdRef:s,timeoutMs:n,currentContextRef:a,timeout:d}),[n,d]),children:t})}function jr(e,t={open:!1}){let o="rootStore"in e?e.rootStore:e,n=o.useState("floatingId"),{open:r}=t,i=Be.useContext(ja),{currentIdRef:s,delayRef:a,timeoutMs:d,initialDelayRef:l,currentContextRef:c,hasProvider:u,timeout:m}=i,[p,f]=Be.useState(!1);return j(()=>{function h(){f(!1),c.current?.setIsInstantPhase(!1),s.current=null,c.current=null,a.current=l.current}if(s.current&&!r&&s.current===n){if(f(!1),d){let v=n;return m.start(d,()=>{o.select("open")||s.current&&s.current!==v||h()}),()=>{m.clear()}}h()}},[r,n,s,a,d,l,c,m,o]),j(()=>{if(!r)return;let h=c.current,v=s.current;m.clear(),c.current={onOpenChange:o.setOpen,setIsInstantPhase:f},s.current=n,a.current={open:0,close:Yt(l.current,"close")},v!==null&&v!==n?(f(!0),h?.setIsInstantPhase(!0),h?.onOpenChange(!1,ee(G.none))):(f(!1),h?.setIsInstantPhase(!1))},[r,n,o,s,a,d,l,c,m]),j(()=>()=>{c.current=null},[c]),Be.useMemo(()=>({hasProvider:u,delayRef:a,isInstantPhase:p}),[u,a,p])}function nt(...e){return()=>{for(let t=0;t<e.length;t+=1){let o=e[t];o&&o()}}}function rt(e){let t=de(yp,e).current;return t.next=e,j(t.effect),t}function yp(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}function po(e){return`data-base-ui-${e}`}var je=g(H(),1),Wa=g(xt(),1);var Fa={style:{transition:"none"}};var xp="data-base-ui-swipe-ignore",Rp="data-swipe-ignore",Oh=`[${xp}]`,Nh=`[${Rp}]`;var Va={fallbackAxisSide:"end"};var Ya=g(q(),1),Sp=je.createContext(null),Ep=()=>je.useContext(Sp),Tp=po("portal");function Fr(e={}){let{ref:t,container:o,componentProps:n=ge,elementProps:r}=e,i=yt(),a=Ep()?.portalNode,[d,l]=je.useState(null),[c,u]=je.useState(null),m=V(v=>{v!==null&&u(v)}),p=je.useRef(null);j(()=>{if(o===null){p.current&&(p.current=null,u(null),l(null));return}if(i==null)return;let v=(o&&(yn(o)?o:o.current))??a??document.body;if(v==null){p.current&&(p.current=null,u(null),l(null));return}p.current!==v&&(p.current=v,u(null),l(v))},[o,a,i]);let f=Re("div",n,{ref:[t,m],props:[{id:i,[Tp]:""},r]});return{portalNode:c,portalSubtree:d&&f?Wa.createPortal(f,d):null}}var Ut=g(H(),1);function Ua(){let e=new Map;return{emit(t,o){e.get(t)?.forEach(n=>n(o))},on(t,o){e.has(t)||e.set(t,new Set),e.get(t).add(o)},off(t,o){e.get(t)?.delete(o)}}}var Pp=g(q(),1),Cp=Ut.createContext(null),Ap=Ut.createContext(null),mo=()=>Ut.useContext(Cp)?.id||null,Pt=e=>{let t=Ut.useContext(Ap);return e??t};var Ne=g(H(),1);function kp(e,t){let o=null,n=null,r=!1;return{contextElement:e||void 0,getBoundingClientRect(){let i=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},s=t.axis==="x"||t.axis==="both",a=t.axis==="y"||t.axis==="both",d=["mouseenter","mousemove"].includes(t.dataRef.current.openEvent?.type||"")&&t.pointerType!=="touch",l=i.width,c=i.height,u=i.x,m=i.y;return o==null&&t.x&&s&&(o=i.x-t.x),n==null&&t.y&&a&&(n=i.y-t.y),u-=o||0,m-=n||0,l=0,c=0,!r||d?(l=t.axis==="y"?i.width:0,c=t.axis==="x"?i.height:0,u=s&&t.x!=null?t.x:u,m=a&&t.y!=null?t.y:m):r&&!d&&(c=t.axis==="x"?i.height:c,l=t.axis==="y"?i.width:l),r=!0,{width:l,height:c,x:u,y:m,top:m,right:u+l,bottom:m+c,left:u}}}}function Ga(e){return e!=null&&e.clientX!=null}function Vr(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),i=o.useState("domReferenceElement"),s=o.context.dataRef,{enabled:a=!0,axis:d="both"}=t,l=Ne.useRef(!1),c=Ne.useRef(null),[u,m]=Ne.useState(),[p,f]=Ne.useState([]),h=V((_,w,R)=>{l.current||s.current.openEvent&&!Ga(s.current.openEvent)||o.set("positionReference",kp(R??i,{x:_,y:w,axis:d,dataRef:s,pointerType:u}))}),v=V(_=>{n?c.current||f([]):h(_.clientX,_.clientY,_.currentTarget)}),b=Vt(u)?r:n,T=Ne.useCallback(()=>{if(!b||!a)return;let _=ce(r);function w(R){let E=ke(R);ne(r,E)?(c.current?.(),c.current=null):h(R.clientX,R.clientY)}if(!s.current.openEvent||Ga(s.current.openEvent)){let R=()=>{c.current?.(),c.current=null};return c.current=Q(_,"mousemove",w),R}o.set("positionReference",i)},[b,a,r,s,i,o,h]);Ne.useEffect(()=>T(),[T,p]),Ne.useEffect(()=>{a&&!r&&(l.current=!1)},[a,r]),Ne.useEffect(()=>{!a&&n&&(l.current=!0)},[a,n]);let y=Ne.useMemo(()=>{function _(w){m(w.pointerType)}return{onPointerDown:_,onPointerEnter:_,onMouseMove:v,onMouseEnter:v}},[v]);return Ne.useMemo(()=>a?{reference:y,trigger:y}:{},[a,y])}var He=g(H(),1);var Op={intentional:"onClick",sloppy:"onPointerDown"};function Np(){return!1}function Lp(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Wr(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),{dataRef:i}=o.context,{enabled:s=!0,escapeKey:a=!0,outsidePress:d=!0,outsidePressEvent:l="sloppy",referencePress:c=Np,referencePressEvent:u="sloppy",bubbles:m,externalTree:p}=t,f=Pt(p),h=V(typeof d=="function"?d:()=>!1),v=typeof d=="function"?h:d,b=v!==!1,T=V(()=>l),y=He.useRef(!1),_=He.useRef(!1),w=He.useRef(!1),{escapeKey:R,outsidePress:E}=Lp(m),x=He.useRef(null),k=gt(),O=gt(),B=V(()=>{O.clear(),i.current.insideReactTree=!1}),z=He.useRef(!1),N=He.useRef(""),C=V(c),S=V(Y=>{if(!n||!s||!a||Y.key!=="Escape"||z.current)return;let X=i.current.floatingContext?.nodeId,K=f?$e(f.nodesRef.current,X):[];if(!R&&K.length>0){let U=!0;if(K.forEach(re=>{re.context?.open&&!re.context.dataRef.current.__escapeKeyBubbles&&(U=!1)}),!U)return}let ae=Ca(Y)?Y.nativeEvent:Y,ie=ee(G.escapeKey,ae);o.setOpen(!1,ie),!R&&!ie.isPropagationAllowed&&Y.stopPropagation()}),L=V(()=>{i.current.insideReactTree=!0,O.start(0,B)});He.useEffect(()=>{if(!n||!s)return;i.current.__escapeKeyBubbles=R,i.current.__outsidePressBubbles=E;let Y=new De,X=new De;function K(){Y.clear(),z.current=!0}function ae(){Y.start(uo()?5:0,()=>{z.current=!1})}function ie(){w.current=!0,X.start(0,()=>{w.current=!1})}function U(){y.current=!1,_.current=!1}function re(){let I=N.current,D=I==="pen"||!I?"mouse":I,le=T(),ye=typeof le=="function"?le():le;return typeof ye=="string"?ye:ye[D]}function Te(I){let D=re();return D==="intentional"&&I.type!=="click"||D==="sloppy"&&I.type==="click"}function he(I){let D=i.current.floatingContext?.nodeId,le=f&&$e(f.nodesRef.current,D).some(ye=>Ye(I,ye.context?.elements.floating));return Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement"))||le}function Pe(I){if(Te(I)){B();return}if(i.current.insideReactTree){B();return}let D=ke(I),le=`[${po("inert")}]`,ye=W(D)?D.getRootNode():null,vt=Array.from((co(ye)?ye:be(o.select("floatingElement"))).querySelectorAll(le)),Co=o.context.triggerElements;if(D&&(Co.hasElement(D)||Co.hasMatchingElement(me=>ne(me,D))))return;let ut=W(D)?D:null;for(;ut&&!Qe(ut);){let me=Ze(ut);if(Qe(me)||!W(me))break;ut=me}if(vt.length&&W(D)&&!Ea(D)&&!ne(D,o.select("floatingElement"))&&vt.every(me=>!ne(ut,me)))return;if(ue(D)&&!("touches"in I)){let me=Qe(D),ft=Se(D),Ao=/auto|scroll/,un=me||Ao.test(ft.overflowX),fn=me||Ao.test(ft.overflowY),pn=un&&D.clientWidth>0&&D.scrollWidth>D.clientWidth,te=fn&&D.clientHeight>0&&D.scrollHeight>D.clientHeight,Ce=ft.direction==="rtl",We=te&&(Ce?I.offsetX<=D.offsetWidth-D.clientWidth:I.offsetX>D.clientWidth),Ie=pn&&I.offsetY>D.clientHeight;if(We||Ie)return}if(he(I))return;if(re()==="intentional"&&w.current){X.clear(),w.current=!1;return}if(typeof v=="function"&&!v(I))return;let dn=i.current.floatingContext?.nodeId,Mt=f?$e(f.nodesRef.current,dn):[];if(Mt.length>0){let me=!0;if(Mt.forEach(ft=>{ft.context?.open&&!ft.context.dataRef.current.__outsidePressBubbles&&(me=!1)}),!me)return}o.setOpen(!1,ee(G.outsidePress,I)),B()}function we(I){re()!=="sloppy"||I.pointerType==="touch"||!o.select("open")||!s||Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement"))||Pe(I)}function Ot(I){if(re()!=="sloppy"||!o.select("open")||!s||Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement")))return;let D=I.touches[0];D&&(x.current={startTime:Date.now(),startX:D.clientX,startY:D.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},k.start(1e3,()=>{x.current&&(x.current.dismissOnTouchEnd=!1,x.current.dismissOnMouseDown=!1)}))}function Nt(I,D){let le=ke(I);if(!le)return;let ye=Q(le,I.type,()=>{D(I),ye()})}function an(I){N.current="touch",Nt(I,Ot)}function eo(I){k.clear(),I.type==="pointerdown"&&(N.current=I.pointerType),!(I.type==="mousedown"&&x.current&&!x.current.dismissOnMouseDown)&&Nt(I,D=>{D.type==="pointerdown"?we(D):Pe(D)})}function Lt(I){if(!y.current)return;let D=_.current;if(U(),re()==="intentional"){if(I.type==="pointercancel"){D&&ie();return}if(!he(I)){if(D){ie();return}typeof v=="function"&&!v(I)||(X.clear(),w.current=!0,B())}}}function wt(I){if(re()!=="sloppy"||!x.current||Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement")))return;let D=I.touches[0];if(!D)return;let le=Math.abs(D.clientX-x.current.startX),ye=Math.abs(D.clientY-x.current.startY),vt=Math.sqrt(le*le+ye*ye);vt>5&&(x.current.dismissOnTouchEnd=!0),vt>10&&(Pe(I),k.clear(),x.current=null)}function It(I){Nt(I,wt)}function cn(I){re()!=="sloppy"||!x.current||Ye(I,o.select("floatingElement"))||Ye(I,o.select("domReferenceElement"))||(x.current.dismissOnTouchEnd&&Pe(I),k.clear(),x.current=null)}function ln(I){Nt(I,cn)}let pe=be(r),to=nt(a&&nt(Q(pe,"keydown",S),Q(pe,"compositionstart",K),Q(pe,"compositionend",ae)),b&&nt(Q(pe,"click",eo,!0),Q(pe,"pointerdown",eo,!0),Q(pe,"pointerup",Lt,!0),Q(pe,"pointercancel",Lt,!0),Q(pe,"mousedown",eo,!0),Q(pe,"mouseup",Lt,!0),Q(pe,"touchstart",an,!0),Q(pe,"touchmove",It,!0),Q(pe,"touchend",ln,!0)));return()=>{to(),Y.clear(),X.clear(),U(),w.current=!1}},[i,r,a,b,v,n,s,R,E,S,B,T,f,o,k]),He.useEffect(B,[v,B]);let M=He.useMemo(()=>({onKeyDown:S,[Op[u]]:Y=>{C()&&o.setOpen(!1,ee(G.triggerPress,Y.nativeEvent))},...u!=="intentional"&&{onClick(Y){C()&&o.setOpen(!1,ee(G.triggerPress,Y.nativeEvent))}}}),[S,o,u,C]),P=V(Y=>{if(!n||!s||Y.button!==0)return;let X=ke(Y.nativeEvent);ne(o.select("floatingElement"),X)&&(y.current||(y.current=!0,_.current=!1))}),A=V(Y=>{!n||!s||(Y.defaultPrevented||Y.nativeEvent.defaultPrevented)&&y.current&&(_.current=!0)}),F=He.useMemo(()=>({onKeyDown:S,onPointerDown:A,onMouseDown:A,onClickCapture:L,onMouseDownCapture(Y){L(),P(Y)},onPointerDownCapture(Y){L(),P(Y)},onMouseUpCapture:L,onTouchEndCapture:L,onTouchMoveCapture:L}),[S,L,P,A]);return He.useMemo(()=>s?{reference:M,floating:F,trigger:M}:{},[s,M,F])}var Le=g(H(),1);function Xa(e,t,o){let{reference:n,floating:r}=e,i=Me(t),s=jo(t),a=Do(s),d=_e(t),l=i==="y",c=n.x+n.width/2-r.width/2,u=n.y+n.height/2-r.height/2,m=n[a]/2-r[a]/2,p;switch(d){case"top":p={x:c,y:n.y-r.height};break;case"bottom":p={x:c,y:n.y+n.height};break;case"right":p={x:n.x+n.width,y:u};break;case"left":p={x:n.x-r.width,y:u};break;default:p={x:n.x,y:n.y}}switch(ot(t)){case"start":p[s]-=m*(o&&l?-1:1);break;case"end":p[s]+=m*(o&&l?-1:1);break}return p}async function Za(e,t){var o;t===void 0&&(t={});let{x:n,y:r,platform:i,rects:s,elements:a,strategy:d}=e,{boundary:l="clippingAncestors",rootBoundary:c="viewport",elementContext:u="floating",altBoundary:m=!1,padding:p=0}=tt(t,e),f=An(p),v=a[m?u==="floating"?"reference":"floating":u],b=Wt(await i.getClippingRect({element:(o=await(i.isElement==null?void 0:i.isElement(v)))==null||o?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:l,rootBoundary:c,strategy:d})),T=u==="floating"?{x:n,y:r,width:s.floating.width,height:s.floating.height}:s.reference,y=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),_=await(i.isElement==null?void 0:i.isElement(y))?await(i.getScale==null?void 0:i.getScale(y))||{x:1,y:1}:{x:1,y:1},w=Wt(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:T,offsetParent:y,strategy:d}):T);return{top:(b.top-w.top+f.top)/_.y,bottom:(w.bottom-b.bottom+f.bottom)/_.y,left:(b.left-w.left+f.left)/_.x,right:(w.right-b.right+f.right)/_.x}}var Ip=50,Ja=async(e,t,o)=>{let{placement:n="bottom",strategy:r="absolute",middleware:i=[],platform:s}=o,a=s.detectOverflow?s:{...s,detectOverflow:Za},d=await(s.isRTL==null?void 0:s.isRTL(t)),l=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:c,y:u}=Xa(l,n,d),m=n,p=0,f={};for(let h=0;h<i.length;h++){let v=i[h];if(!v)continue;let{name:b,fn:T}=v,{x:y,y:_,data:w,reset:R}=await T({x:c,y:u,initialPlacement:n,placement:m,strategy:r,middlewareData:f,rects:l,platform:a,elements:{reference:e,floating:t}});c=y??c,u=_??u,f[b]={...f[b],...w},R&&p<Ip&&(p++,typeof R=="object"&&(R.placement&&(m=R.placement),R.rects&&(l=R.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:r}):R.rects),{x:c,y:u}=Xa(l,m,d)),h=-1)}return{x:c,y:u,placement:m,strategy:r,middlewareData:f}};var Qa=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var o,n;let{placement:r,middlewareData:i,rects:s,initialPlacement:a,platform:d,elements:l}=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:m,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:h=!0,...v}=tt(e,t);if((o=i.arrow)!=null&&o.alignmentOffset)return{};let b=_e(r),T=Me(a),y=_e(a)===a,_=await(d.isRTL==null?void 0:d.isRTL(l.floating)),w=m||(y||!h?[Bo(a)]:Ia(a)),R=f!=="none";!m&&R&&w.push(...Ma(a,h,f,_));let E=[a,...w],x=await d.detectOverflow(t,v),k=[],O=((n=i.flip)==null?void 0:n.overflows)||[];if(c&&k.push(x[b]),u){let C=La(r,s,_);k.push(x[C[0]],x[C[1]])}if(O=[...O,{placement:r,overflows:k}],!k.every(C=>C<=0)){var B,z;let C=(((B=i.flip)==null?void 0:B.index)||0)+1,S=E[C];if(S&&(!(u==="alignment"?T!==Me(S):!1)||O.every(P=>Me(P.placement)===T?P.overflows[0]>0:!0)))return{data:{index:C,overflows:O},reset:{placement:S}};let L=(z=O.filter(M=>M.overflows[0]<=0).sort((M,P)=>M.overflows[1]-P.overflows[1])[0])==null?void 0:z.placement;if(!L)switch(p){case"bestFit":{var N;let M=(N=O.filter(P=>{if(R){let A=Me(P.placement);return A===T||A==="y"}return!0}).map(P=>[P.placement,P.overflows.filter(A=>A>0).reduce((A,F)=>A+F,0)]).sort((P,A)=>P[1]-A[1])[0])==null?void 0:N[0];M&&(L=M);break}case"initialPlacement":L=a;break}if(r!==L)return{reset:{placement:L}}}return{}}}};function Ka(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function qa(e){return Na.some(t=>e[t]>=0)}var $a=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){let{rects:o,platform:n}=t,{strategy:r="referenceHidden",...i}=tt(e,t);switch(r){case"referenceHidden":{let s=await n.detectOverflow(t,{...i,elementContext:"reference"}),a=Ka(s,o.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:qa(a)}}}case"escaped":{let s=await n.detectOverflow(t,{...i,altBoundary:!0}),a=Ka(s,o.floating);return{data:{escapedOffsets:a,escaped:qa(a)}}}default:return{}}}}};var ec=new Set(["left","top"]);async function Mp(e,t){let{placement:o,platform:n,elements:r}=e,i=await(n.isRTL==null?void 0:n.isRTL(r.floating)),s=_e(o),a=ot(o),d=Me(o)==="y",l=ec.has(s)?-1:1,c=i&&d?-1:1,u=tt(t,e),{mainAxis:m,crossAxis:p,alignmentAxis:f}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return a&&typeof f=="number"&&(p=a==="end"?f*-1:f),d?{x:p*c,y:m*l}:{x:m*l,y:p*c}}var tc=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var o,n;let{x:r,y:i,placement:s,middlewareData:a}=t,d=await Mp(t,e);return s===((o=a.offset)==null?void 0:o.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:r+d.x,y:i+d.y,data:{...d,placement:s}}}}},oc=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:o,y:n,placement:r,platform:i}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:d={fn:b=>{let{x:T,y}=b;return{x:T,y}}},...l}=tt(e,t),c={x:o,y:n},u=await i.detectOverflow(t,l),m=Me(_e(r)),p=Cn(m),f=c[p],h=c[m];if(s){let b=p==="y"?"top":"left",T=p==="y"?"bottom":"right",y=f+u[b],_=f-u[T];f=zo(y,f,_)}if(a){let b=m==="y"?"top":"left",T=m==="y"?"bottom":"right",y=h+u[b],_=h-u[T];h=zo(y,h,_)}let v=d.fn({...t,[p]:f,[m]:h});return{...v,data:{x:v.x-o,y:v.y-n,enabled:{[p]:s,[m]:a}}}}}},nc=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:o,y:n,placement:r,rects:i,middlewareData:s}=t,{offset:a=0,mainAxis:d=!0,crossAxis:l=!0}=tt(e,t),c={x:o,y:n},u=Me(r),m=Cn(u),p=c[m],f=c[u],h=tt(a,t),v=typeof h=="number"?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(d){let y=m==="y"?"height":"width",_=i.reference[m]-i.floating[y]+v.mainAxis,w=i.reference[m]+i.reference[y]-v.mainAxis;p<_?p=_:p>w&&(p=w)}if(l){var b,T;let y=m==="y"?"width":"height",_=ec.has(_e(r)),w=i.reference[u]-i.floating[y]+(_&&((b=s.offset)==null?void 0:b[u])||0)+(_?0:v.crossAxis),R=i.reference[u]+i.reference[y]+(_?0:((T=s.offset)==null?void 0:T[u])||0)-(_?v.crossAxis:0);f<w?f=w:f>R&&(f=R)}return{[m]:p,[u]:f}}}},rc=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var o,n;let{placement:r,rects:i,platform:s,elements:a}=t,{apply:d=()=>{},...l}=tt(e,t),c=await s.detectOverflow(t,l),u=_e(r),m=ot(r),p=Me(r)==="y",{width:f,height:h}=i.floating,v,b;u==="top"||u==="bottom"?(v=u,b=m===(await(s.isRTL==null?void 0:s.isRTL(a.floating))?"start":"end")?"left":"right"):(b=u,v=m==="end"?"top":"bottom");let T=h-c.top-c.bottom,y=f-c.left-c.right,_=Et(h-c[v],T),w=Et(f-c[b],y),R=!t.middlewareData.shift,E=_,x=w;if((o=t.middlewareData.shift)!=null&&o.enabled.x&&(x=y),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(E=T),R&&!m){let O=Oe(c.left,0),B=Oe(c.right,0),z=Oe(c.top,0),N=Oe(c.bottom,0);p?x=f-2*(O!==0||B!==0?O+B:Oe(c.left,c.right)):E=h-2*(z!==0||N!==0?z+N:Oe(c.top,c.bottom))}await d({...t,availableWidth:x,availableHeight:E});let k=await s.getDimensions(a.floating);return f!==k.width||h!==k.height?{reset:{rects:!0}}:{}}}};function cc(e){let t=Se(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=ue(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n,a=Tt(o)!==i||Tt(n)!==s;return a&&(o=i,n=s),{width:o,height:n,$:a}}function Ur(e){return W(e)?e:e.contextElement}function go(e){let t=Ur(e);if(!ue(t))return et(1);let o=t.getBoundingClientRect(),{width:n,height:r,$:i}=cc(t),s=(i?Tt(o.width):o.width)/n,a=(i?Tt(o.height):o.height)/r;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var Bp=et(0);function lc(e){let t=ce(e);return!uo()||!t.visualViewport?Bp:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Hp(e,t,o){return t===void 0&&(t=!1),!o||t&&o!==ce(e)?!1:t}function Gt(e,t,o,n){t===void 0&&(t=!1),o===void 0&&(o=!1);let r=e.getBoundingClientRect(),i=Ur(e),s=et(1);t&&(n?W(n)&&(s=go(n)):s=go(e));let a=Hp(i,o,n)?lc(i):et(0),d=(r.left+a.x)/s.x,l=(r.top+a.y)/s.y,c=r.width/s.x,u=r.height/s.y;if(i){let m=ce(i),p=n&&W(n)?ce(n):n,f=m,h=Rn(f);for(;h&&n&&p!==f;){let v=go(h),b=h.getBoundingClientRect(),T=Se(h),y=b.left+(h.clientLeft+parseFloat(T.paddingLeft))*v.x,_=b.top+(h.clientTop+parseFloat(T.paddingTop))*v.y;d*=v.x,l*=v.y,c*=v.x,u*=v.y,d+=y,l+=_,f=ce(h),h=Rn(f)}}return Wt({width:c,height:u,x:d,y:l})}function Nn(e,t){let o=Mo(e).scrollLeft;return t?t.left+o:Gt(Je(e)).left+o}function dc(e,t){let o=e.getBoundingClientRect(),n=o.left+t.scrollLeft-Nn(e,o),r=o.top+t.scrollTop;return{x:n,y:r}}function zp(e){let{elements:t,rect:o,offsetParent:n,strategy:r}=e,i=r==="fixed",s=Je(n),a=t?Io(t.floating):!1;if(n===s||a&&i)return o;let d={scrollLeft:0,scrollTop:0},l=et(1),c=et(0),u=ue(n);if((u||!u&&!i)&&((jt(n)!=="body"||lo(s))&&(d=Mo(n)),u)){let p=Gt(n);l=go(n),c.x=p.x+n.clientLeft,c.y=p.y+n.clientTop}let m=s&&!u&&!i?dc(s,d):et(0);return{width:o.width*l.x,height:o.height*l.y,x:o.x*l.x-d.scrollLeft*l.x+c.x+m.x,y:o.y*l.y-d.scrollTop*l.y+c.y+m.y}}function Dp(e){return Array.from(e.getClientRects())}function jp(e){let t=Je(e),o=Mo(e),n=e.ownerDocument.body,r=Oe(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),i=Oe(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight),s=-o.scrollLeft+Nn(e),a=-o.scrollTop;return Se(n).direction==="rtl"&&(s+=Oe(t.clientWidth,n.clientWidth)-r),{width:r,height:i,x:s,y:a}}var ic=25;function Fp(e,t){let o=ce(e),n=Je(e),r=o.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,d=0;if(r){i=r.width,s=r.height;let c=uo();(!c||c&&t==="fixed")&&(a=r.offsetLeft,d=r.offsetTop)}let l=Nn(n);if(l<=0){let c=n.ownerDocument,u=c.body,m=getComputedStyle(u),p=c.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,f=Math.abs(n.clientWidth-u.clientWidth-p);f<=ic&&(i-=f)}else l<=ic&&(i+=l);return{width:i,height:s,x:a,y:d}}function Vp(e,t){let o=Gt(e,!0,t==="fixed"),n=o.top+e.clientTop,r=o.left+e.clientLeft,i=ue(e)?go(e):et(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,d=r*i.x,l=n*i.y;return{width:s,height:a,x:d,y:l}}function sc(e,t,o){let n;if(t==="viewport")n=Fp(e,o);else if(t==="document")n=jp(Je(e));else if(W(t))n=Vp(t,o);else{let r=lc(e);n={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return Wt(n)}function uc(e,t){let o=Ze(e);return o===t||!W(o)||Qe(o)?!1:Se(o).position==="fixed"||uc(o,t)}function Wp(e,t){let o=t.get(e);if(o)return o;let n=Rt(e,[],!1).filter(a=>W(a)&&jt(a)!=="body"),r=null,i=Se(e).position==="fixed",s=i?Ze(e):e;for(;W(s)&&!Qe(s);){let a=Se(s),d=xn(s);!d&&a.position==="fixed"&&(r=null),(i?!d&&!r:!d&&a.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||lo(s)&&!d&&uc(e,s))?n=n.filter(c=>c!==s):r=a,s=Ze(s)}return t.set(e,n),n}function Yp(e){let{element:t,boundary:o,rootBoundary:n,strategy:r}=e,s=[...o==="clippingAncestors"?Io(t)?[]:Wp(t,this._c):[].concat(o),n],a=sc(t,s[0],r),d=a.top,l=a.right,c=a.bottom,u=a.left;for(let m=1;m<s.length;m++){let p=sc(t,s[m],r);d=Oe(p.top,d),l=Et(p.right,l),c=Et(p.bottom,c),u=Oe(p.left,u)}return{width:l-u,height:c-d,x:u,y:d}}function Up(e){let{width:t,height:o}=cc(e);return{width:t,height:o}}function Gp(e,t,o){let n=ue(t),r=Je(t),i=o==="fixed",s=Gt(e,!0,i,t),a={scrollLeft:0,scrollTop:0},d=et(0);function l(){d.x=Nn(r)}if(n||!n&&!i)if((jt(t)!=="body"||lo(r))&&(a=Mo(t)),n){let p=Gt(t,!0,i,t);d.x=p.x+t.clientLeft,d.y=p.y+t.clientTop}else r&&l();i&&!n&&r&&l();let c=r&&!n&&!i?dc(r,a):et(0),u=s.left+a.scrollLeft-d.x-c.x,m=s.top+a.scrollTop-d.y-c.y;return{x:u,y:m,width:s.width,height:s.height}}function Yr(e){return Se(e).position==="static"}function ac(e,t){if(!ue(e)||Se(e).position==="fixed")return null;if(t)return t(e);let o=e.offsetParent;return Je(e)===o&&(o=o.ownerDocument.body),o}function fc(e,t){let o=ce(e);if(Io(e))return o;if(!ue(e)){let r=Ze(e);for(;r&&!Qe(r);){if(W(r)&&!Yr(r))return r;r=Ze(r)}return o}let n=ac(e,t);for(;n&&ma(n)&&Yr(n);)n=ac(n,t);return n&&Qe(n)&&Yr(n)&&!xn(n)?o:n||ga(e)||o}var Xp=async function(e){let t=this.getOffsetParent||fc,o=this.getDimensions,n=await o(e.floating);return{reference:Gp(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function Kp(e){return Se(e).direction==="rtl"}var Gr={convertOffsetParentRelativeRectToViewportRelativeRect:zp,getDocumentElement:Je,getClippingRect:Yp,getOffsetParent:fc,getElementRects:Xp,getClientRects:Dp,getDimensions:Up,getScale:go,isElement:W,isRTL:Kp};function pc(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function qp(e,t){let o=null,n,r=Je(e);function i(){var a;clearTimeout(n),(a=o)==null||a.disconnect(),o=null}function s(a,d){a===void 0&&(a=!1),d===void 0&&(d=1),i();let l=e.getBoundingClientRect(),{left:c,top:u,width:m,height:p}=l;if(a||t(),!m||!p)return;let f=Ho(u),h=Ho(r.clientWidth-(c+m)),v=Ho(r.clientHeight-(u+p)),b=Ho(c),y={rootMargin:-f+"px "+-h+"px "+-v+"px "+-b+"px",threshold:Oe(0,Et(1,d))||1},_=!0;function w(R){let E=R[0].intersectionRatio;if(E!==d){if(!_)return s();E?s(!1,E):n=setTimeout(()=>{s(!1,1e-7)},1e3)}E===1&&!pc(l,e.getBoundingClientRect())&&s(),_=!1}try{o=new IntersectionObserver(w,{...y,root:r.ownerDocument})}catch{o=new IntersectionObserver(w,y)}o.observe(e)}return s(!0),i}function Vo(e,t,o,n){n===void 0&&(n={});let{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:d=!1}=n,l=Ur(e),c=r||i?[...l?Rt(l):[],...t?Rt(t):[]]:[];c.forEach(b=>{r&&b.addEventListener("scroll",o,{passive:!0}),i&&b.addEventListener("resize",o)});let u=l&&a?qp(l,o):null,m=-1,p=null;s&&(p=new ResizeObserver(b=>{let[T]=b;T&&T.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var y;(y=p)==null||y.observe(t)})),o()}),l&&!d&&p.observe(l),t&&p.observe(t));let f,h=d?Gt(e):null;d&&v();function v(){let b=Gt(e);h&&!pc(h,b)&&o(),h=b,f=requestAnimationFrame(v)}return o(),()=>{var b;c.forEach(T=>{r&&T.removeEventListener("scroll",o),i&&T.removeEventListener("resize",o)}),u?.(),(b=p)==null||b.disconnect(),p=null,d&&cancelAnimationFrame(f)}}var mc=tc;var gc=oc,bc=Qa,hc=rc,wc=$a;var vc=nc,Ln=(e,t,o)=>{let n=new Map,r={platform:Gr,...o},i={...r.platform,_c:n};return Ja(e,t,{...r,platform:i})};var fe=g(H(),1),yc=g(H(),1),xc=g(xt(),1),Jp=typeof document<"u",Qp=function(){},In=Jp?yc.useLayoutEffect:Qp;function Mn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let o,n,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(o=e.length,o!==t.length)return!1;for(n=o;n--!==0;)if(!Mn(e[n],t[n]))return!1;return!0}if(r=Object.keys(e),o=r.length,o!==Object.keys(t).length)return!1;for(n=o;n--!==0;)if(!{}.hasOwnProperty.call(t,r[n]))return!1;for(n=o;n--!==0;){let i=r[n];if(!(i==="_owner"&&e.$$typeof)&&!Mn(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Rc(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function _c(e,t){let o=Rc(e);return Math.round(t*o)/o}function Xr(e){let t=fe.useRef(e);return In(()=>{t.current=e}),t}function Sc(e){e===void 0&&(e={});let{placement:t="bottom",strategy:o="absolute",middleware:n=[],platform:r,elements:{reference:i,floating:s}={},transform:a=!0,whileElementsMounted:d,open:l}=e,[c,u]=fe.useState({x:0,y:0,strategy:o,placement:t,middlewareData:{},isPositioned:!1}),[m,p]=fe.useState(n);Mn(m,n)||p(n);let[f,h]=fe.useState(null),[v,b]=fe.useState(null),T=fe.useCallback(P=>{P!==R.current&&(R.current=P,h(P))},[]),y=fe.useCallback(P=>{P!==E.current&&(E.current=P,b(P))},[]),_=i||f,w=s||v,R=fe.useRef(null),E=fe.useRef(null),x=fe.useRef(c),k=d!=null,O=Xr(d),B=Xr(r),z=Xr(l),N=fe.useCallback(()=>{if(!R.current||!E.current)return;let P={placement:t,strategy:o,middleware:m};B.current&&(P.platform=B.current),Ln(R.current,E.current,P).then(A=>{let F={...A,isPositioned:z.current!==!1};C.current&&!Mn(x.current,F)&&(x.current=F,xc.flushSync(()=>{u(F)}))})},[m,t,o,B,z]);In(()=>{l===!1&&x.current.isPositioned&&(x.current.isPositioned=!1,u(P=>({...P,isPositioned:!1})))},[l]);let C=fe.useRef(!1);In(()=>(C.current=!0,()=>{C.current=!1}),[]),In(()=>{if(_&&(R.current=_),w&&(E.current=w),_&&w){if(O.current)return O.current(_,w,N);N()}},[_,w,N,O,k]);let S=fe.useMemo(()=>({reference:R,floating:E,setReference:T,setFloating:y}),[T,y]),L=fe.useMemo(()=>({reference:_,floating:w}),[_,w]),M=fe.useMemo(()=>{let P={position:o,left:0,top:0};if(!L.floating)return P;let A=_c(L.floating,c.x),F=_c(L.floating,c.y);return a?{...P,transform:"translate("+A+"px, "+F+"px)",...Rc(L.floating)>=1.5&&{willChange:"transform"}}:{position:o,left:A,top:F}},[o,a,L.floating,c.x,c.y]);return fe.useMemo(()=>({...c,update:N,refs:S,elements:L,floatingStyles:M}),[c,N,S,L,M])}var Kr=(e,t)=>{let o=mc(e);return{name:o.name,fn:o.fn,options:[e,t]}},qr=(e,t)=>{let o=gc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Zr=(e,t)=>({fn:vc(e).fn,options:[e,t]}),Jr=(e,t)=>{let o=bc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Qr=(e,t)=>{let o=hc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var $r=(e,t)=>{let o=wc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var Z=(e,t,o,n,r,i,...s)=>{if(s.length>0)throw new Error(xe(1));let a;if(e&&t&&o&&n&&r&&i)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u),h=n(d,l,c,u),v=r(d,l,c,u);return i(m,p,f,h,v,l,c,u)};else if(e&&t&&o&&n&&r)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u),h=n(d,l,c,u);return r(m,p,f,h,l,c,u)};else if(e&&t&&o&&n)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u),f=o(d,l,c,u);return n(m,p,f,l,c,u)};else if(e&&t&&o)a=(d,l,c,u)=>{let m=e(d,l,c,u),p=t(d,l,c,u);return o(m,p,l,c,u)};else if(e&&t)a=(d,l,c,u)=>{let m=e(d,l,c,u);return t(m,l,c,u)};else if(e)a=e;else throw new Error("Missing arguments");return a};var Bc=g(H(),1),ii=g(ti(),1),Hc=g(Oc(),1);var Nc=g(H(),1);var oi=[],ni;function Lc(){return ni}function Ic(e){oi.push(e)}function ri(e){let t=(o,n)=>{let r=de(bm).current,i;try{ni=r;for(let s of oi)s.before(r);i=e(o,n);for(let s of oi)s.after(r);r.didInitialize=!0}finally{ni=void 0}return i};return t.displayName=e.displayName||e.name,t}function Mc(e){return Nc.forwardRef(ri(e))}function bm(){return{didInitialize:!1}}var hm=ro(19),wm=hm?_m:ym;function Hn(e,t,o,n,r){return wm(e,t,o,n,r)}function vm(e,t,o,n,r){let i=Bc.useCallback(()=>t(e.getSnapshot(),o,n,r),[e,t,o,n,r]);return(0,ii.useSyncExternalStore)(e.subscribe,i,i)}Ic({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let o=0;o<e.syncHooks.length;o+=1){let n=e.syncHooks[o],r=n.selector(n.store.state,n.a1,n.a2,n.a3);(n.didChange||!Object.is(n.value,r))&&(t=!0,n.value=r,n.didChange=!1)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let o=new Set;for(let r of e.syncHooks)o.add(r.store);let n=[];for(let r of o)n.push(r.subscribe(t));return()=>{for(let r of n)r()}}),(0,ii.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function _m(e,t,o,n,r){let i=Lc();if(!i)return vm(e,t,o,n,r);let s=i.syncIndex;i.syncIndex+=1;let a;return i.didInitialize?(a=i.syncHooks[s],(a.store!==e||a.selector!==t||!Object.is(a.a1,o)||!Object.is(a.a2,n)||!Object.is(a.a3,r))&&(a.store!==e&&(i.didChangeStore=!0),a.store=e,a.selector=t,a.a1=o,a.a2=n,a.a3=r,a.didChange=!0)):(a={store:e,selector:t,a1:o,a2:n,a3:r,value:t(e.getSnapshot(),o,n,r),didChange:!1},i.syncHooks.push(a)),a.value}function ym(e,t,o,n,r){return(0,Hc.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,i=>t(i,o,n,r))}var zn=class{constructor(t){this.state=t,this.listeners=new Set,this.updateTick=0}subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});getSnapshot=()=>this.state;setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;let o=this.updateTick;for(let n of this.listeners){if(o!==this.updateTick)return;n(t)}}update(t){for(let o in t)if(!Object.is(this.state[o],t[o])){this.setState({...this.state,...t});return}}set(t,o){Object.is(this.state[t],o)||this.setState({...this.state,[t]:o})}notifyAll(){let t={...this.state};this.setState(t)}use(t,o,n,r){return Hn(this,t,o,n,r)}};var Xt=g(H(),1);var ho=class extends zn{constructor(t,o={},n){super(t),this.context=o,this.selectors=n}useSyncedValue(t,o){Xt.useDebugValue(t),j(()=>{this.state[t]!==o&&this.set(t,o)},[t,o])}useSyncedValueWithCleanup(t,o){let n=this;j(()=>(n.state[t]!==o&&n.set(t,o),()=>{n.set(t,void 0)}),[n,t,o])}useSyncedValues(t){let o=this,n=Object.values(t);j(()=>{o.update(t)},[o,...n])}useControlledProp(t,o){Xt.useDebugValue(t);let n=o!==void 0;j(()=>{n&&!Object.is(this.state[t],o)&&super.setState({...this.state,[t]:o})},[t,o,n])}select(t,o,n,r){let i=this.selectors[t];return i(this.state,o,n,r)}useState(t,o,n,r){return Xt.useDebugValue(t),Hn(this,this.selectors[t],o,n,r)}useContextCallback(t,o){Xt.useDebugValue(t);let n=V(o??mt);this.context[t]=n}useStateSetter(t){let o=Xt.useRef(void 0);return o.current===void 0&&(o.current=n=>{this.set(t,n)}),o.current}observe(t,o){let n;typeof t=="function"?n=t:n=this.selectors[t];let r=n(this.state);return o(r,r,this),this.subscribe(i=>{let s=n(i);if(!Object.is(r,s)){let a=r;r=s,o(s,a,this)}})}};var xm={open:Z(e=>e.open),transitionStatus:Z(e=>e.transitionStatus),domReferenceElement:Z(e=>e.domReferenceElement),referenceElement:Z(e=>e.positionReference??e.referenceElement),floatingElement:Z(e=>e.floatingElement),floatingId:Z(e=>e.floatingId)},Ct=class extends ho{constructor(t){let{syncOnly:o,nested:n,onOpenChange:r,triggerElements:i,...s}=t;super({...s,positionReference:s.referenceElement,domReferenceElement:s.referenceElement},{onOpenChange:r,dataRef:{current:{}},events:Ua(),nested:n,triggerElements:i},xm),this.syncOnly=o}syncOpenEvent=(t,o)=>{(!t||!this.state.open||o!=null&&Aa(o))&&(this.context.dataRef.current.openEvent=t?o:void 0)};dispatchOpenChange=(t,o)=>{this.syncOpenEvent(t,o.event);let n={open:t,reason:o.reason,nativeEvent:o.event,nested:this.context.nested,triggerElement:o.trigger};this.context.events.emit("openchange",n)};setOpen=(t,o)=>{if(this.syncOnly){this.context.onOpenChange?.(t,o);return}this.dispatchOpenChange(t,o),this.context.onOpenChange?.(t,o)}};var Wo=g(H(),1);function Rm(e,t){let o=Wo.useRef(null),n=Wo.useRef(null);return Wo.useCallback(r=>{if(e!==void 0){if(o.current!==null){let i=o.current,s=n.current,a=t.context.triggerElements.getById(i);s&&a===s&&t.context.triggerElements.delete(i),o.current=null,n.current=null}r!==null&&(o.current=e,n.current=r,t.context.triggerElements.add(e,r))}},[t,e])}function zc(e,t,o,n){let r=o.useState("isMountedByTrigger",e),i=Rm(e,o),s=V(a=>{if(i(a),!a||!o.select("open"))return;let d=o.select("activeTriggerId");if(d===e){o.update({activeTriggerElement:a,...n});return}d==null&&o.update({activeTriggerId:e,activeTriggerElement:a,...n})});return j(()=>{r&&o.update({activeTriggerElement:t.current,...n})},[r,o,t,...Object.values(n)]),{registerTrigger:s,isMountedByThisTrigger:r}}function Dc(e){let t=e.useState("open");j(()=>{if(t&&!e.select("activeTriggerId")&&e.context.triggerElements.size===1){let o=e.context.triggerElements.entries().next();if(!o.done){let[n,r]=o.value;e.update({activeTriggerId:n,activeTriggerElement:r})}}},[t,e])}function jc(e,t,o){let{mounted:n,setMounted:r,transitionStatus:i}=pa(e);t.useSyncedValues({mounted:n,transitionStatus:i});let s=V(()=>{r(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1}),o?.(),t.context.onOpenChangeComplete?.(!1)}),a=t.useState("preventUnmountingOnClose");return kn({enabled:!a,open:e,ref:t.context.popupRef,onComplete(){e||s()}}),{forceUnmount:s,transitionStatus:i}}var At=class{constructor(){this.elementsSet=new Set,this.idMap=new Map}add(t,o){let n=this.idMap.get(t);n!==o&&(n!==void 0&&this.elementsSet.delete(n),this.elementsSet.add(o),this.idMap.set(t,o))}delete(t){let o=this.idMap.get(t);o&&(this.elementsSet.delete(o),this.idMap.delete(t))}hasElement(t){return this.elementsSet.has(t)}hasMatchingElement(t){for(let o of this.elementsSet)if(t(o))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}elements(){return this.elementsSet.values()}get size(){return this.idMap.size}};function Fc(){return new Ct({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:new At,floatingId:"",syncOnly:!1,nested:!1,onOpenChange:void 0})}function Vc(){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:Fc(),preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:ge,inactiveTriggerProps:ge,popupProps:ge}}var Dn=Z(e=>e.triggerIdProp??e.activeTriggerId),Wc={open:Z(e=>e.openProp??e.open),mounted:Z(e=>e.mounted),transitionStatus:Z(e=>e.transitionStatus),floatingRootContext:Z(e=>e.floatingRootContext),preventUnmountingOnClose:Z(e=>e.preventUnmountingOnClose),payload:Z(e=>e.payload),activeTriggerId:Dn,activeTriggerElement:Z(e=>e.mounted?e.activeTriggerElement:null),isTriggerActive:Z((e,t)=>t!==void 0&&Dn(e)===t),isOpenedByTrigger:Z((e,t)=>t!==void 0&&Dn(e)===t&&e.open),isMountedByTrigger:Z((e,t)=>t!==void 0&&Dn(e)===t&&e.mounted),triggerProps:Z((e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps),popupProps:Z(e=>e.popupProps),popupElement:Z(e=>e.popupElement),positionerElement:Z(e=>e.positionerElement)};function Yc(e){let{open:t=!1,onOpenChange:o,elements:n={}}=e,r=yt(),i=mo()!=null,s=de(()=>new Ct({open:t,transitionStatus:void 0,onOpenChange:o,referenceElement:n.reference??null,floatingElement:n.floating??null,triggerElements:new At,floatingId:r,syncOnly:!1,nested:i})).current;return j(()=>{let a={open:t,floatingId:r};n.reference!==void 0&&(a.referenceElement=n.reference,a.domReferenceElement=W(n.reference)?n.reference:null),n.floating!==void 0&&(a.floatingElement=n.floating),s.update(a)},[t,r,n.reference,n.floating,s]),s.context.onOpenChange=o,s.context.nested=i,s}function si(e={}){let{nodeId:t,externalTree:o}=e,n=Yc(e),r=e.rootContext||n,i={reference:r.useState("referenceElement"),floating:r.useState("floatingElement"),domReference:r.useState("domReferenceElement")},[s,a]=Le.useState(null),d=Le.useRef(null),l=Pt(o);j(()=>{i.domReference&&(d.current=i.domReference)},[i.domReference]);let c=Sc({...e,elements:{...i,...s&&{reference:s}}}),u=Le.useCallback(x=>{let k=W(x)?{getBoundingClientRect:()=>x.getBoundingClientRect(),getClientRects:()=>x.getClientRects(),contextElement:x}:x;a(k),c.refs.setReference(k)},[c.refs]),[m,p]=Le.useState(void 0),[f,h]=Le.useState(null);r.useSyncedValue("referenceElement",m??null);let v=W(m)?m:null;r.useSyncedValue("domReferenceElement",m===void 0?i.domReference:v),r.useSyncedValue("floatingElement",f);let b=Le.useCallback(x=>{(W(x)||x===null)&&(d.current=x,p(x)),(W(c.refs.reference.current)||c.refs.reference.current===null||x!==null&&!W(x))&&c.refs.setReference(x)},[c.refs,p]),T=Le.useCallback(x=>{h(x),c.refs.setFloating(x)},[c.refs]),y=Le.useMemo(()=>({...c.refs,setReference:b,setFloating:T,setPositionReference:u,domReference:d}),[c.refs,b,T,u]),_=Le.useMemo(()=>({...c.elements,domReference:i.domReference}),[c.elements,i.domReference]),w=r.useState("open"),R=r.useState("floatingId"),E=Le.useMemo(()=>({...c,dataRef:r.context.dataRef,open:w,onOpenChange:r.setOpen,events:r.context.events,floatingId:R,refs:y,elements:_,nodeId:t,rootStore:r}),[c,y,_,t,r,w,R]);return j(()=>{r.context.dataRef.current.floatingContext=E;let x=l?.nodesRef.current.find(k=>k.id===t);x&&(x.context=E)}),Le.useMemo(()=>({...c,context:E,refs:y,elements:_,rootStore:r}),[c,y,_,E,r])}function ai(e){let{popupStore:t,treatPopupAsFloatingElement:o=!1,onOpenChange:n}=e,r=yt(),i=mo()!=null,s=t.useState("open"),a=t.useState("activeTriggerElement"),d=t.useState(o?"popupElement":"positionerElement"),l=t.context.triggerElements,c=de(()=>new Ct({open:s,transitionStatus:void 0,referenceElement:a,floatingElement:d,triggerElements:l,onOpenChange:n,floatingId:r,syncOnly:!0,nested:i})).current;return j(()=>{let u={open:s,floatingId:r,referenceElement:a,floatingElement:d};W(a)&&(u.domReferenceElement=a),c.state.positionReference===c.state.referenceElement&&(u.positionReference=a),c.update(u)},[s,r,a,d,c]),c.context.onOpenChange=n,c.context.nested=i,c}var at=g(H(),1);var ci=Ra&&xa;function li(e,t={}){let o="rootStore"in e?e.rootStore:e,{events:n,dataRef:r}=o.context,{enabled:i=!0,delay:s}=t,a=at.useRef(!1),d=at.useRef(null),l=gt(),c=at.useRef(!0);at.useEffect(()=>{let m=o.select("domReferenceElement");if(!i)return;let p=ce(m);function f(){let b=o.select("domReferenceElement");!o.select("open")&&ue(b)&&b===Tn(be(b))&&(a.current=!0)}function h(){c.current=!0}function v(){c.current=!1}return nt(Q(p,"blur",f),ci&&Q(p,"keydown",h,!0),ci&&Q(p,"pointerdown",v,!0))},[o,i]),at.useEffect(()=>{if(!i)return;function m(p){if(p.reason===G.triggerPress||p.reason===G.escapeKey){let f=o.select("domReferenceElement");W(f)&&(d.current=f,a.current=!0)}}return n.on("openchange",m),()=>{n.off("openchange",m)}},[n,i,o]);let u=at.useMemo(()=>({onMouseLeave(){a.current=!1,d.current=null},onFocus(m){let p=m.currentTarget;if(a.current){if(d.current===p)return;a.current=!1,d.current=null}let f=ke(m.nativeEvent);if(W(f)){if(ci&&!m.relatedTarget){if(!c.current&&!Ta(f))return}else if(!Pa(f))return}let h=Ft(m.relatedTarget,o.context.triggerElements),{nativeEvent:v,currentTarget:b}=m,T=typeof s=="function"?s():s;if(o.select("open")&&h||T===0||T===void 0){o.setOpen(!0,ee(G.triggerFocus,v,b));return}l.start(T,()=>{a.current||o.setOpen(!0,ee(G.triggerFocus,v,b))})},onBlur(m){a.current=!1,d.current=null;let p=m.relatedTarget,f=m.nativeEvent,h=W(p)&&p.hasAttribute(po("focus-guard"))&&p.getAttribute("data-type")==="outside";l.start(0,()=>{let v=o.select("domReferenceElement"),b=Tn(be(v));!p&&b===v||ne(r.current.floatingContext?.refs.floating.current,b)||ne(v,b)||h||Ft(p??b,o.context.triggerElements)||o.setOpen(!1,ee(G.triggerFocus,f))})}}),[r,o,l,s]);return at.useMemo(()=>i?{reference:u,trigger:u}:{},[i,u])}var Yo=g(H(),1);var di=class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new De,this.restTimeout=new De,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose},jn=new WeakMap;function wo(e){if(!e.performedPointerEventsMutation)return;let t=e.pointerEventsScopeElement;t&&jn.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),jn.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function Fn(e,t){let{scopeElement:o,referenceElement:n,floatingElement:r}=t,i=jn.get(o);i&&i!==e&&wo(i),wo(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=o,e.pointerEventsReferenceElement=n,e.pointerEventsFloatingElement=r,jn.set(o,e),o.style.pointerEvents="none",n.style.pointerEvents="auto",r.style.pointerEvents="auto"}function Vn(e){let t=de(di.create).current,o=e.context.dataRef.current;return o.hoverInteractionState||(o.hoverInteractionState=t),io(o.hoverInteractionState.disposeEffect),o.hoverInteractionState}function ui(e,t={}){let o="rootStore"in e?e.rootStore:e,n=o.useState("open"),r=o.useState("floatingElement"),i=o.useState("domReferenceElement"),{dataRef:s}=o.context,{enabled:a=!0,closeDelay:d=0,nodeId:l}=t,c=Vn(o),u=Pt(),m=mo(),p=V(()=>On(s.current.openEvent?.type,c.interactedInside)),f=V(()=>{let _=s.current.openEvent?.type;return _?.includes("mouse")&&_!=="mousedown"}),h=V(_=>Ft(_,o.context.triggerElements)),v=Yo.useCallback(_=>{let w=Yt(d,"close",c.pointerType),R=()=>{o.setOpen(!1,ee(G.triggerHover,_)),u?.events.emit("floating.closed",_)};w?c.openChangeTimeout.start(w,R):(c.openChangeTimeout.clear(),R())},[d,o,c,u]),b=V(()=>{wo(c)}),T=V(_=>{let w=ke(_);if(!Hr(w)){c.interactedInside=!1;return}c.interactedInside=w?.closest("[aria-haspopup]")!=null});j(()=>{n||(c.pointerType=void 0,c.restTimeoutPending=!1,c.interactedInside=!1,b())},[n,c,b]),Yo.useEffect(()=>b,[b]),j(()=>{if(a&&n&&c.handleCloseOptions?.blockPointerEvents&&f()&&W(i)&&r){let _=i,w=r,R=be(r),E=u?.nodesRef.current.find(k=>k.id===m)?.context?.elements.floating;E&&(E.style.pointerEvents="");let x=c.handleCloseOptions?.getScope?.()??c.pointerEventsScopeElement??E??_.closest("[data-rootownerid]")??R.body;return Fn(c,{scopeElement:x,referenceElement:_,floatingElement:w}),()=>{b()}}},[a,n,i,r,c,f,u,m,b]);let y=gt();Yo.useEffect(()=>{if(!a)return;function _(){c.openChangeTimeout.clear(),y.clear(),u?.events.off("floating.closed",R),b()}function w(x){if(u&&m&&$e(u.nodesRef.current,m).length>0){u.events.on("floating.closed",R);return}if(h(x.relatedTarget))return;let k=s.current.floatingContext?.nodeId??l,O=x.relatedTarget;if(!(u&&k&&W(O)&&$e(u.nodesRef.current,k,!1).some(z=>ne(z.context?.elements.floating,O)))){if(c.handler){c.handler(x);return}b(),p()||v(x)}}function R(x){!u||!m||$e(u.nodesRef.current,m).length>0||y.start(0,()=>{u.events.off("floating.closed",R),o.setOpen(!1,ee(G.triggerHover,x)),u.events.emit("floating.closed",x)})}let E=r;return nt(E&&Q(E,"mouseenter",_),E&&Q(E,"mouseleave",w),E&&Q(E,"pointerdown",T,!0),()=>{u?.events.off("floating.closed",R)})},[a,r,o,s,l,p,h,v,b,T,c,u,m,y])}var kt=g(H(),1),Uc=g(xt(),1);var Sm={current:null};function fi(e,t={}){let o="rootStore"in e?e.rootStore:e,{dataRef:n,events:r}=o.context,{enabled:i=!0,delay:s=0,handleClose:a=null,mouseOnly:d=!1,restMs:l=0,move:c=!0,triggerElementRef:u=Sm,externalTree:m,isActiveTrigger:p=!0,getHandleCloseContext:f,isClosing:h}=t,v=Pt(m),b=Vn(o),T=kt.useRef(!1),y=rt(a),_=rt(s),w=rt(l),R=rt(i),E=rt(h);p&&(b.handleCloseOptions=y.current?.__options);let x=V(()=>On(n.current.openEvent?.type,b.interactedInside)),k=V(C=>Ft(C,o.context.triggerElements)),O=V((C,S,L)=>{let M=o.context.triggerElements;if(M.hasElement(S))return!C||!ne(C,S);if(!W(L))return!1;let P=L;return M.hasMatchingElement(A=>ne(A,P))&&(!C||!ne(C,P))}),B=V((C,S=!0)=>{let L=Yt(_.current,"close",b.pointerType);L?b.openChangeTimeout.start(L,()=>{o.setOpen(!1,ee(G.triggerHover,C)),v?.events.emit("floating.closed",C)}):S&&(b.openChangeTimeout.clear(),o.setOpen(!1,ee(G.triggerHover,C)),v?.events.emit("floating.closed",C))}),z=V(()=>{if(!b.handler)return;be(o.select("domReferenceElement")).removeEventListener("mousemove",b.handler),b.handler=void 0}),N=V(()=>{wo(b)});return kt.useEffect(()=>z,[z]),kt.useEffect(()=>{if(!i)return;function C(S){S.open?T.current=!1:(T.current=S.reason===G.triggerHover,z(),b.openChangeTimeout.clear(),b.restTimeout.clear(),b.blockMouseMove=!0,b.restTimeoutPending=!1)}return r.on("openchange",C),()=>{r.off("openchange",C)}},[i,r,b,z]),kt.useEffect(()=>{if(!i)return;let C=u.current??(p?o.select("domReferenceElement"):null);if(!W(C))return;function S(M){if(b.openChangeTimeout.clear(),b.blockMouseMove=!1,d&&!Vt(b.pointerType))return;let P=zr(w.current),A=Yt(_.current,"open",b.pointerType),F=ke(M),Y=M.currentTarget??null,X=o.select("domReferenceElement"),K=Y;if(W(F)&&!o.context.triggerElements.hasElement(F)){for(let Ot of o.context.triggerElements.elements())if(ne(Ot,F)){K=Ot;break}}W(Y)&&W(X)&&!o.context.triggerElements.hasElement(Y)&&ne(Y,X)&&(K=X);let ae=K==null?!1:O(X,K,F),ie=o.select("open"),U=E.current?.()??o.select("transitionStatus")==="ending",re=!ie&&U&&T.current,Te=!ae&&W(K)&&W(X)&&ne(X,K)&&re,he=P>0&&!A,Pe=ae&&(ie||re)||Te,we=!ie||ae;if(Pe){o.setOpen(!0,ee(G.triggerHover,M,K));return}he||(A?b.openChangeTimeout.start(A,()=>{we&&o.setOpen(!0,ee(G.triggerHover,M,K))}):we&&o.setOpen(!0,ee(G.triggerHover,M,K)))}function L(M){if(x()){N();return}z();let P=o.select("domReferenceElement"),A=be(P);b.restTimeout.clear(),b.restTimeoutPending=!1;let F=n.current.floatingContext??f?.();if(k(M.relatedTarget))return;if(y.current&&F){o.select("open")||b.openChangeTimeout.clear();let K=u.current;b.handler=y.current({...F,tree:v,x:M.clientX,y:M.clientY,onClose(){N(),z(),R.current&&!x()&&K===o.select("domReferenceElement")&&B(M,!0)}}),A.addEventListener("mousemove",b.handler),b.handler(M);return}(b.pointerType!=="touch"||!ne(o.select("floatingElement"),M.relatedTarget))&&B(M)}return c?nt(Q(C,"mousemove",S,{once:!0}),Q(C,"mouseenter",S),Q(C,"mouseleave",L)):nt(Q(C,"mouseenter",S),Q(C,"mouseleave",L))},[z,N,n,_,B,o,i,y,b,p,O,x,k,d,c,w,u,v,R,f,E]),kt.useMemo(()=>{if(!i)return;function C(S){b.pointerType=S.pointerType}return{onPointerDown:C,onPointerEnter:C,onMouseMove(S){let{nativeEvent:L}=S,M=S.currentTarget,P=o.select("domReferenceElement"),A=o.select("open"),F=O(P,M,S.target);if(d&&!Vt(b.pointerType))return;if(A&&F&&b.handleCloseOptions?.blockPointerEvents){let K=o.select("floatingElement");if(K){let ae=b.handleCloseOptions?.getScope?.()??M.ownerDocument.body;Fn(b,{scopeElement:ae,referenceElement:M,floatingElement:K})}}let Y=zr(w.current);if(A&&!F||Y===0||!F&&b.restTimeoutPending&&S.movementX**2+S.movementY**2<2)return;b.restTimeout.clear();function X(){if(b.restTimeoutPending=!1,x())return;let K=o.select("open");!b.blockMouseMove&&(!K||F)&&o.setOpen(!0,ee(G.triggerHover,L,M))}b.pointerType==="touch"?Uc.flushSync(()=>{X()}):F&&A?X():(b.restTimeoutPending=!0,b.restTimeout.start(Y,X))}}},[i,b,x,O,d,o,w])}var Kt=g(H(),1);function pi(e=[]){let t=e.map(l=>l?.reference),o=e.map(l=>l?.floating),n=e.map(l=>l?.item),r=e.map(l=>l?.trigger),i=Kt.useCallback(l=>Wn(l,e,"reference"),t),s=Kt.useCallback(l=>Wn(l,e,"floating"),o),a=Kt.useCallback(l=>Wn(l,e,"item"),n),d=Kt.useCallback(l=>Wn(l,e,"trigger"),r);return Kt.useMemo(()=>({getReferenceProps:i,getFloatingProps:s,getItemProps:a,getTriggerProps:d}),[i,s,a,d])}function Wn(e,t,o){let n=new Map,r=o==="item",i={};o==="floating"&&(i.tabIndex=-1,i[Lr]="");for(let s in e)r&&e&&(s===Ir||s===Mr)||(i[s]=e[s]);for(let s=0;s<t.length;s+=1){let a,d=t[s]?.[o];typeof d=="function"?a=e?d(e):null:a=d,a&&Gc(i,a,r,n)}return Gc(i,e,r,n),i}function Gc(e,t,o,n){for(let r in t){let i=t[r];o&&(r===Ir||r===Mr)||(r.startsWith("on")?(n.has(r)||n.set(r,[]),typeof i=="function"&&(n.get(r)?.push(i),e[r]=(...s)=>n.get(r)?.map(a=>a(...s)).find(a=>a!==void 0))):e[r]=i)}}var Xc=.1,Em=Xc*Xc,$=.5;function Yn(e,t,o,n,r,i){return n>=t!=i>=t&&e<=(r-o)*(t-n)/(i-n)+o}function Un(e,t,o,n,r,i,s,a,d,l){let c=!1;return Yn(e,t,o,n,r,i)&&(c=!c),Yn(e,t,r,i,s,a)&&(c=!c),Yn(e,t,s,a,d,l)&&(c=!c),Yn(e,t,d,l,o,n)&&(c=!c),c}function Tm(e,t,o){return e>=o.x&&e<=o.x+o.width&&t>=o.y&&t<=o.y+o.height}function Gn(e,t,o,n,r,i){let s=Math.min(o,r),a=Math.max(o,r),d=Math.min(n,i),l=Math.max(n,i);return e>=s&&e<=a&&t>=d&&t<=l}function mi(e={}){let{blockPointerEvents:t=!1}=e,o=new De,n=({x:r,y:i,placement:s,elements:a,onClose:d,nodeId:l,tree:c})=>{let u=s?.split("-")[0],m=!1,p=null,f=null,h=typeof performance<"u"?performance.now():0;function v(T,y){let _=performance.now(),w=_-h;if(p===null||f===null||w===0)return p=T,f=y,h=_,!1;let R=T-p,E=y-f,x=R*R+E*E,k=w*w*Em;return p=T,f=y,h=_,x<k}function b(){o.clear(),d()}return function(y){o.clear();let _=a.domReference,w=a.floating;if(!_||!w||u==null||r==null||i==null)return;let{clientX:R,clientY:E}=y,x=ke(y),k=y.type==="mouseleave",O=ne(w,x),B=ne(_,x);if(O&&(m=!0,!k))return;if(B&&(m=!1,!k)){m=!0;return}if(k&&W(y.relatedTarget)&&ne(w,y.relatedTarget))return;function z(){return!!(c&&$e(c.nodesRef.current,l).length>0)}function N(){z()||b()}if(z())return;let C=_.getBoundingClientRect(),S=w.getBoundingClientRect(),L=r>S.right-S.width/2,M=i>S.bottom-S.height/2,P=S.width>C.width,A=S.height>C.height,F=(P?C:S).left,Y=(P?C:S).right,X=(A?C:S).top,K=(A?C:S).bottom;if(u==="top"&&i>=C.bottom-1||u==="bottom"&&i<=C.top+1||u==="left"&&r>=C.right-1||u==="right"&&r<=C.left+1){N();return}let ae=!1;switch(u){case"top":ae=Gn(R,E,F,C.top+1,Y,S.bottom-1);break;case"bottom":ae=Gn(R,E,F,S.top+1,Y,C.bottom-1);break;case"left":ae=Gn(R,E,S.right-1,K,C.left+1,X);break;case"right":ae=Gn(R,E,C.right-1,K,S.left+1,X);break;default:}if(ae)return;if(m&&!Tm(R,E,C)){N();return}if(!k&&v(R,E)){N();return}let ie=!1;switch(u){case"top":{let U=P?$/2:$*4,re=P||L?r+U:r-U,Te=P?r-U:L?r+U:r-U,he=i+$+1,Pe=L||P?S.bottom-$:S.top,we=L?P?S.bottom-$:S.top:S.bottom-$;ie=Un(R,E,re,he,Te,he,S.left,Pe,S.right,we);break}case"bottom":{let U=P?$/2:$*4,re=P||L?r+U:r-U,Te=P?r-U:L?r+U:r-U,he=i-$,Pe=L||P?S.top+$:S.bottom,we=L?P?S.top+$:S.bottom:S.top+$;ie=Un(R,E,re,he,Te,he,S.left,Pe,S.right,we);break}case"left":{let U=A?$/2:$*4,re=A||M?i+U:i-U,Te=A?i-U:M?i+U:i-U,he=r+$+1,Pe=M||A?S.right-$:S.left,we=M?A?S.right-$:S.left:S.right-$;ie=Un(R,E,Pe,S.top,we,S.bottom,he,re,he,Te);break}case"right":{let U=A?$/2:$*4,re=A||M?i+U:i-U,Te=A?i-U:M?i+U:i-U,he=r-$,Pe=M||A?S.left+$:S.right,we=M?A?S.left+$:S.right:S.left+$;ie=Un(R,E,he,re,he,Te,Pe,S.top,we,S.bottom);break}default:}ie?m||o.start(40,N):N()}};return n.__options={...e,blockPointerEvents:t},n}var gi=(function(e){return e.open="data-open",e.closed="data-closed",e[e.startingStyle=zt.startingStyle]="startingStyle",e[e.endingStyle=zt.endingStyle]="endingStyle",e.anchorHidden="data-anchor-hidden",e.side="data-side",e.align="data-align",e})({}),Uo=(function(e){return e.popupOpen="data-popup-open",e.pressed="data-pressed",e})({}),Pm={[Uo.popupOpen]:""},Gv={[Uo.popupOpen]:"",[Uo.pressed]:""},Cm={[gi.open]:""},Am={[gi.closed]:""},km={[gi.anchorHidden]:""},Kc={open(e){return e?Pm:null}};var vo={open(e){return e?Cm:Am},anchorHidden(e){return e?km:null}};function qc(e){return ro(19)?e:e?"true":void 0}var Fe=g(H(),1);var Om=e=>({name:"arrow",options:e,async fn(t){let{x:o,y:n,placement:r,rects:i,platform:s,elements:a,middlewareData:d}=t,{element:l,padding:c=0,offsetParent:u="real"}=tt(e,t)||{};if(l==null)return{};let m=An(c),p={x:o,y:n},f=jo(r),h=Do(f),v=await s.getDimensions(l),b=f==="y",T=b?"top":"left",y=b?"bottom":"right",_=b?"clientHeight":"clientWidth",w=i.reference[h]+i.reference[f]-p[f]-i.floating[h],R=p[f]-i.reference[f],E=u==="real"?await s.getOffsetParent?.(l):a.floating,x=a.floating[_]||i.floating[h];(!x||!await s.isElement?.(E))&&(x=a.floating[_]||i.floating[h]);let k=w/2-R/2,O=x/2-v[h]/2-1,B=Math.min(m[T],O),z=Math.min(m[y],O),N=B,C=x-v[h]-z,S=x/2-v[h]/2+k,L=zo(N,S,C),M=!d.arrow&&ot(r)!=null&&S!==L&&i.reference[h]/2-(S<N?B:z)-v[h]/2<0,P=M?S<N?S-N:S-C:0;return{[f]:p[f]+P,data:{[f]:L,centerOffset:S-L-P,...M&&{alignmentOffset:P}},reset:M}}}),Zc=(e,t)=>({...Om(e),options:[e,t]});var Jc={name:"hide",async fn(e){let{width:t,height:o,x:n,y:r}=e.rects.reference,i=t===0&&o===0&&n===0&&r===0;return{data:{referenceHidden:(await $r().fn(e)).data?.referenceHidden||i}}}};var Go={sideX:"left",sideY:"top"},Qc={name:"adaptiveOrigin",async fn(e){let{x:t,y:o,rects:{floating:n},elements:{floating:r},platform:i,strategy:s,placement:a}=e,d=ce(r),l=d.getComputedStyle(r);if(!(l.transitionDuration!=="0s"&&l.transitionDuration!==""))return{x:t,y:o,data:Go};let u=await i.getOffsetParent?.(r),m={width:0,height:0};if(s==="fixed"&&d?.visualViewport)m={width:d.visualViewport.width,height:d.visualViewport.height};else if(u===d){let T=be(r);m={width:T.documentElement.clientWidth,height:T.documentElement.clientHeight}}else await i.isElement?.(u)&&(m=await i.getDimensions(u));let p=_e(a),f=t,h=o;p==="left"&&(f=m.width-(t+n.width)),p==="top"&&(h=m.height-(o+n.height));let v=p==="left"?"right":Go.sideX,b=p==="top"?"bottom":Go.sideY;return{x:f,y:h,data:{sideX:v,sideY:b}}}};function tl(e,t,o){let n=e==="inline-start"||e==="inline-end";return{top:"top",right:n?o?"inline-start":"inline-end":"right",bottom:"bottom",left:n?o?"inline-end":"inline-start":"left"}[t]}function $c(e,t,o){let{rects:n,placement:r}=e;return{side:tl(t,_e(r),o),align:ot(r)||"center",anchor:{width:n.reference.width,height:n.reference.height},positioner:{width:n.floating.width,height:n.floating.height}}}function ol(e){let{anchor:t,positionMethod:o="absolute",side:n="bottom",sideOffset:r=0,align:i="center",alignOffset:s=0,collisionBoundary:a,collisionPadding:d=5,sticky:l=!1,arrowPadding:c=5,disableAnchorTracking:u=!1,keepMounted:m=!1,floatingRootContext:p,mounted:f,collisionAvoidance:h,shiftCrossAxis:v=!1,nodeId:b,adaptiveOrigin:T,lazyFlip:y=!1,externalTree:_}=e,[w,R]=Fe.useState(null);!f&&w!==null&&R(null);let E=h.side||"flip",x=h.align||"flip",k=h.fallbackAxisSide||"end",O=typeof t=="function"?t:void 0,B=V(O),z=O?B:t,N=rt(t),C=rt(f),L=no()==="rtl",M=w||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":L?"left":"right","inline-start":L?"right":"left"}[n],P=i==="center"?M:`${M}-${i}`,A=d,F=1,Y=n==="bottom"?F:0,X=n==="top"?F:0,K=n==="right"?F:0,ae=n==="left"?F:0;typeof A=="number"?A={top:A+Y,right:A+ae,bottom:A+X,left:A+K}:A&&(A={top:(A.top||0)+Y,right:(A.right||0)+ae,bottom:(A.bottom||0)+X,left:(A.left||0)+K});let ie={boundary:a==="clipping-ancestors"?"clippingAncestors":a,padding:A},U=Fe.useRef(null),re=rt(r),Te=rt(s),we=[Kr(te=>{let Ce=$c(te,n,L),We=typeof re.current=="function"?re.current(Ce):re.current,Ie=typeof Te.current=="function"?Te.current(Ce):Te.current;return{mainAxis:We,crossAxis:Ie,alignmentAxis:Ie}},[typeof r!="function"?r:0,typeof s!="function"?s:0,L,n])],Ot=x==="none"&&E!=="shift",Nt=!Ot&&(l||v||E==="shift"),an=E==="none"?null:Jr({...ie,padding:{top:A.top+F,right:A.right+F,bottom:A.bottom+F,left:A.left+F},mainAxis:!v&&E==="flip",crossAxis:x==="flip"?"alignment":!1,fallbackAxisSideDirection:k}),eo=Ot?null:qr(te=>{let Ce=be(te.elements.floating).documentElement;return{...ie,rootBoundary:v?{x:0,y:0,width:Ce.clientWidth,height:Ce.clientHeight}:void 0,mainAxis:x!=="none",crossAxis:Nt,limiter:l||v?void 0:Zr(We=>{if(!U.current)return{};let{width:Ie,height:pt}=U.current.getBoundingClientRect(),qe=Me(_e(We.placement)),Bt=qe==="y"?Ie:pt,oo=qe==="y"?A.left+A.right:A.top+A.bottom;return{offset:Bt/2+oo/2}})}},[ie,l,v,A,x]);E==="shift"||x==="shift"||i==="center"?we.push(eo,an):we.push(an,eo),we.push(Qr({...ie,apply({elements:{floating:te},availableWidth:Ce,availableHeight:We,rects:Ie}){if(!C.current)return;let pt=te.style;pt.setProperty("--available-width",`${Ce}px`),pt.setProperty("--available-height",`${We}px`);let qe=ce(te).devicePixelRatio||1,{x:Bt,y:oo,width:mn,height:mr}=Ie.reference,gr=(Math.round((Bt+mn)*qe)-Math.round(Bt*qe))/qe,br=(Math.round((oo+mr)*qe)-Math.round(oo*qe))/qe;pt.setProperty("--anchor-width",`${gr}px`),pt.setProperty("--anchor-height",`${br}px`)}}),Zc(()=>({element:U.current||be(U.current).createElement("div"),padding:c,offsetParent:"floating"}),[c]),{name:"transformOrigin",fn(te){let{elements:Ce,middlewareData:We,placement:Ie,rects:pt,y:qe}=te,Bt=_e(Ie),oo=Me(Bt),mn=U.current,mr=We.arrow?.x||0,gr=We.arrow?.y||0,br=mn?.clientWidth||0,Gu=mn?.clientHeight||0,hr=mr+br/2,Bs=gr+Gu/2,Xu=Math.abs(We.shift?.y||0),Ku=pt.reference.height/2,ko=typeof r=="function"?r($c(te,n,L)):r,qu=Xu>ko,Zu={top:`${hr}px calc(100% + ${ko}px)`,bottom:`${hr}px ${-ko}px`,left:`calc(100% + ${ko}px) ${Bs}px`,right:`${-ko}px ${Bs}px`}[Bt],Ju=`${hr}px ${pt.reference.y+Ku-qe}px`;return Ce.floating.style.setProperty("--transform-origin",Nt&&oo==="y"&&qu?Ju:Zu),{}}},Jc,T),j(()=>{!f&&p&&p.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[f,p]);let Lt=Fe.useMemo(()=>({elementResize:!u&&typeof ResizeObserver<"u",layoutShift:!u&&typeof IntersectionObserver<"u"}),[u]),{refs:wt,elements:It,x:cn,y:ln,middlewareData:pe,update:to,placement:I,context:D,isPositioned:le,floatingStyles:ye}=si({rootContext:p,open:m?f:void 0,placement:P,middleware:we,strategy:o,whileElementsMounted:m?void 0:(...te)=>Vo(...te,Lt),nodeId:b,externalTree:_}),{sideX:vt,sideY:Co}=pe.adaptiveOrigin||Go,ut=le?o:"fixed",dn=Fe.useMemo(()=>{let te=T?{position:ut,[vt]:cn,[Co]:ln}:{position:ut,...ye};return le||(te.opacity=0),te},[T,ut,vt,cn,Co,ln,ye,le]),Mt=Fe.useRef(null);j(()=>{if(!f)return;let te=N.current,Ce=typeof te=="function"?te():te,Ie=(el(Ce)?Ce.current:Ce)||null||null;Ie!==Mt.current&&(wt.setPositionReference(Ie),Mt.current=Ie)},[f,wt,z,N]),Fe.useEffect(()=>{if(!f)return;let te=N.current;typeof te!="function"&&el(te)&&te.current!==Mt.current&&(wt.setPositionReference(te.current),Mt.current=te.current)},[f,wt,z,N]),Fe.useEffect(()=>{if(m&&f&&It.domReference&&It.floating)return Vo(It.domReference,It.floating,to,Lt)},[m,f,It,to,Lt]);let me=_e(I),ft=tl(n,me,L),Ao=ot(I)||"center",un=!!pe.hide?.referenceHidden;j(()=>{y&&f&&le&&R(me)},[y,f,le,me]);let fn=Fe.useMemo(()=>({position:"absolute",top:pe.arrow?.y,left:pe.arrow?.x}),[pe.arrow]),pn=pe.arrow?.centerOffset!==0;return Fe.useMemo(()=>({positionerStyles:dn,arrowStyles:fn,arrowRef:U,arrowUncentered:pn,side:ft,align:Ao,physicalSide:me,anchorHidden:un,refs:wt,context:D,isPositioned:le,update:to}),[dn,fn,U,pn,ft,Ao,me,un,wt,D,le,to])}function el(e){return e!=null&&"current"in e}function Xn(e){return e==="starting"?Fa:ge}function nl(e,t,{styles:o,transitionStatus:n,props:r,refs:i,hidden:s,inert:a=!1}){let d={...o};return a&&(d.pointerEvents="none"),Re("div",e,{state:t,ref:i,props:[{role:"presentation",hidden:s,style:d},Xn(n),r],stateAttributesMapping:vo})}var rl=g(H(),1);var bi=rl.forwardRef(function(t,o){let{render:n,className:r,disabled:i=!1,focusableWhenDisabled:s=!1,nativeButton:a=!0,style:d,...l}=t,{getButtonProps:c,buttonRef:u}=_a({disabled:i,focusableWhenDisabled:s,native:a});return Re("button",t,{state:{disabled:i},ref:[o,u],props:[l,c]})});var Ee=g(H(),1),dl=g(xt(),1);var il=g(H(),1);function sl(e){let[t,o]=il.useState({current:e,previous:null});return e!==t.current&&o({current:e,previous:t.current}),t.previous}var qt=g(H(),1);function hi(e){let t=Se(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=ue(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n;return(Tt(o)!==i||Tt(n)!==s)&&(o=i,n=s),{width:o,height:n}}var Nm=()=>!0;function cl(e){let{popupElement:t,positionerElement:o,content:n,mounted:r,enabled:i=Nm,onMeasureLayout:s,onMeasureLayoutComplete:a,side:d,direction:l}=e,c=ao(t,!0,!1),u=so(),m=qt.useRef(null),p=qt.useRef(null),f=qt.useRef(!0),h=qt.useRef(mt),v=V(s),b=V(a),T=qt.useMemo(()=>{let y=d==="top",_=d==="left";return l==="rtl"?(y=y||d==="inline-end",_=_||d==="inline-end"):(y=y||d==="inline-start",_=_||d==="inline-start"),y?{position:"absolute",[d==="top"?"bottom":"top"]:"0",[_?"right":"left"]:"0"}:ge},[d,l]);j(()=>{if(!r||!i()||typeof ResizeObserver!="function"){h.current=mt,f.current=!0,m.current=null,p.current=null;return}if(!t||!o)return;h.current=al(t,T);let y=new ResizeObserver(N=>{let C=N[0];C&&(p.current={width:Math.ceil(C.borderBoxSize[0].inlineSize),height:Math.ceil(C.borderBoxSize[0].blockSize)})});y.observe(t),Kn(t,"auto");let _=qn(t,"position","static"),w=qn(t,"transform","none"),R=qn(t,"scale","1"),E=al(o,{"--available-width":"max-content","--available-height":"max-content"});function x(){_(),w(),E()}function k(){x(),R()}if(v?.(),f.current||m.current===null){Xo(o,"max-content");let N=hi(t);return m.current=N,Xo(o,N),k(),b?.(null,N),f.current=!1,()=>{y.disconnect(),h.current(),h.current=mt}}Kn(t,"auto"),Xo(o,"max-content");let O=m.current??p.current,B=hi(t);if(m.current=B,!O)return Xo(o,B),k(),b?.(null,B),()=>{y.disconnect(),u.cancel(),h.current(),h.current=mt};Kn(t,O),k(),b?.(O,B),Xo(o,B);let z=new AbortController;return u.request(()=>{Kn(t,B),c(()=>{t.style.setProperty("--popup-width","auto"),t.style.setProperty("--popup-height","auto")},z.signal)}),()=>{y.disconnect(),z.abort(),u.cancel(),h.current(),h.current=mt}},[n,t,o,c,u,i,r,v,b,T])}function qn(e,t,o){let n=e.style.getPropertyValue(t);return e.style.setProperty(t,o),()=>{e.style.setProperty(t,n)}}function al(e,t){let o=[];for(let[n,r]of Object.entries(t))o.push(qn(e,n,r));return o.length?()=>{o.forEach(n=>n())}:mt}function Kn(e,t){let o=t==="auto"?"auto":`${t.width}px`,n=t==="auto"?"auto":`${t.height}px`;e.style.setProperty("--popup-width",o),e.style.setProperty("--popup-height",n)}function Xo(e,t){let o=t==="max-content"?"max-content":`${t.width}px`,n=t==="max-content"?"max-content":`${t.height}px`;e.style.setProperty("--positioner-width",o),e.style.setProperty("--positioner-height",n)}var _o=g(q(),1);function ul(e){let{store:t,side:o,cssVars:n,children:r}=e,i=no(),s=t.useState("activeTriggerElement"),a=t.useState("activeTriggerId"),d=t.useState("open"),l=t.useState("payload"),c=t.useState("mounted"),u=t.useState("popupElement"),m=t.useState("positionerElement"),p=sl(d?s:null),f=Mm(a,l),h=Ee.useRef(null),[v,b]=Ee.useState(null),[T,y]=Ee.useState(null),_=Ee.useRef(null),w=Ee.useRef(null),R=ao(_,!0,!1),E=so(),[x,k]=Ee.useState(null),[O,B]=Ee.useState(!1);j(()=>(t.set("hasViewport",!0),()=>{t.set("hasViewport",!1)}),[t]);let z=V(()=>{_.current?.style.setProperty("animation","none"),_.current?.style.setProperty("transition","none"),w.current?.style.setProperty("display","none")}),N=V(P=>{_.current?.style.removeProperty("animation"),_.current?.style.removeProperty("transition"),w.current?.style.removeProperty("display"),P&&k(P)}),C=Ee.useRef(null);j(()=>{if(s&&p&&s!==p&&C.current!==s&&h.current){b(h.current),B(!0);let P=Im(p,s);y(P),E.request(()=>{dl.flushSync(()=>{B(!1)}),R(()=>{b(null),k(null),h.current=null})}),C.current=s}},[s,p,v,R,E]),j(()=>{let P=_.current;if(!P)return;let A=be(P).createElement("div");for(let F of Array.from(P.childNodes))A.appendChild(F.cloneNode(!0));h.current=A});let S=v!=null,L;S?L=(0,_o.jsxs)(Ee.Fragment,{children:[(0,_o.jsx)("div",{"data-previous":!0,inert:qc(!0),ref:w,style:{...x?{[n.popupWidth]:`${x.width}px`,[n.popupHeight]:`${x.height}px`}:null,position:"absolute"},"data-ending-style":O?void 0:""},"previous"),(0,_o.jsx)("div",{"data-current":!0,ref:_,"data-starting-style":O?"":void 0,children:r},f)]}):L=(0,_o.jsx)("div",{"data-current":!0,ref:_,children:r},f),j(()=>{let P=w.current;!P||!v||P.replaceChildren(...Array.from(v.childNodes))},[v]),cl({popupElement:u,positionerElement:m,mounted:c,content:l,onMeasureLayout:z,onMeasureLayoutComplete:N,side:o,direction:i});let M={activationDirection:Lm(T),transitioning:S};return{children:L,state:M}}function Lm(e){if(e)return`${ll(e.horizontal,5,"right","left")} ${ll(e.vertical,5,"down","up")}`}function ll(e,t,o,n){return e>t?o:e<-t?n:""}function Im(e,t){let o=e.getBoundingClientRect(),n=t.getBoundingClientRect(),r={x:o.left+o.width/2,y:o.top+o.height/2},i={x:n.left+n.width/2,y:n.top+n.height/2};return{horizontal:i.x-r.x,vertical:i.y-r.y}}function Mm(e,t){let[o,n]=Ee.useState(0),r=Ee.useRef(e),i=Ee.useRef(t),s=Ee.useRef(!1);return j(()=>{let a=r.current,d=i.current,l=e!==a,c=t!==d;l?(n(u=>u+1),s.current=!c):s.current&&c&&(n(u=>u+1),s.current=!1),r.current=e,i.current=t},[e,t]),`${e??"current"}-${o}`}var Zn=g(H(),1),fl=g(xt(),1);var pl=g(q(),1),ml=Zn.forwardRef(function(t,o){let{children:n,container:r,className:i,render:s,style:a,...d}=t,{portalNode:l,portalSubtree:c}=Fr({container:r,ref:o,componentProps:t,elementProps:d});return!c&&!l?null:(0,pl.jsxs)(Zn.Fragment,{children:[c,l&&fl.createPortal(n,l)]})});var ze={};vr(ze,{Arrow:()=>Ol,Handle:()=>Ko,Popup:()=>Al,Portal:()=>El,Positioner:()=>Pl,Provider:()=>Nl,Root:()=>wl,Trigger:()=>xl,Viewport:()=>Ml,createHandle:()=>Bl});var ct=g(H(),1);var Jn=g(H(),1),wi=Jn.createContext(void 0);function Ue(e){let t=Jn.useContext(wi);if(t===void 0&&!e)throw new Error(xe(72));return t}var gl=g(H(),1),bl=g(xt(),1);var Bm={...Wc,disabled:Z(e=>e.disabled),instantType:Z(e=>e.instantType),isInstantPhase:Z(e=>e.isInstantPhase),trackCursorAxis:Z(e=>e.trackCursorAxis),disableHoverablePopup:Z(e=>e.disableHoverablePopup),lastOpenChangeReason:Z(e=>e.openChangeReason),closeOnClick:Z(e=>e.closeOnClick),closeDelay:Z(e=>e.closeDelay),hasViewport:Z(e=>e.hasViewport)},yo=class e extends ho{constructor(t){super({...Hm(),...t},{popupRef:gl.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:new At},Bm)}setOpen=(t,o)=>{let n=o.reason,r=n===G.triggerHover,i=t&&n===G.triggerFocus,s=!t&&(n===G.triggerPress||n===G.escapeKey);if(o.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},this.context.onOpenChange?.(t,o),o.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(t,o);let a=()=>{let d={open:t,openChangeReason:n};i?d.instantType="focus":s?d.instantType="dismiss":n===G.triggerHover&&(d.instantType=void 0);let l=o.trigger?.id??null;(l||t)&&(d.activeTriggerId=l,d.activeTriggerElement=o.trigger??null),this.update(d)};r?bl.flushSync(a):a()};static useStore(t,o){let n=de(()=>new e(o)).current,r=t??n,i=ai({popupStore:r,onOpenChange:r.setOpen});return r.state.floatingRootContext=i,r}};function Hm(){return{...Vc(),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,hasViewport:!1}}var hl=g(q(),1),wl=ri(function(t){let{disabled:o=!1,defaultOpen:n=!1,open:r,disableHoverablePopup:i=!1,trackCursorAxis:s="none",actionsRef:a,onOpenChange:d,onOpenChangeComplete:l,handle:c,triggerId:u,defaultTriggerId:m=null,children:p}=t,f=yo.useStore(c?.store,{open:n,openProp:r,activeTriggerId:m,triggerIdProp:u});za(()=>{r===void 0&&f.state.open===!1&&n===!0&&f.update({open:!0,activeTriggerId:m})}),f.useControlledProp("openProp",r),f.useControlledProp("triggerIdProp",u),f.useContextCallback("onOpenChange",d),f.useContextCallback("onOpenChangeComplete",l);let h=f.useState("open"),v=!o&&h,b=f.useState("activeTriggerId"),T=f.useState("payload");f.useSyncedValues({trackCursorAxis:s,disableHoverablePopup:i}),j(()=>{h&&o&&f.setOpen(!1,ee(G.disabled))},[h,o,f]),f.useSyncedValue("disabled",o),Dc(f);let{forceUnmount:y,transitionStatus:_}=jc(v,f),w=f.select("floatingRootContext"),R=f.useState("isInstantPhase"),E=f.useState("instantType"),x=f.useState("lastOpenChangeReason"),k=ct.useRef(null);j(()=>{_==="ending"&&x===G.none||_!=="ending"&&R?(E!=="delay"&&(k.current=E),f.set("instantType","delay")):k.current!==null&&(f.set("instantType",k.current),k.current=null)},[_,R,x,E,f]),j(()=>{v&&b==null&&f.set("payload",void 0)},[f,b,v]);let O=ct.useCallback(()=>{f.setOpen(!1,ee(G.imperativeAction))},[f]);ct.useImperativeHandle(a,()=>({unmount:y,close:O}),[y,O]);let B=Wr(w,{enabled:!o,referencePress:()=>f.select("closeOnClick")}),z=Vr(w,{enabled:!o&&s!=="none",axis:s==="none"?void 0:s}),{getReferenceProps:N,getFloatingProps:C,getTriggerProps:S}=pi([B,z]),L=ct.useMemo(()=>N(),[N]),M=ct.useMemo(()=>S(),[S]),P=ct.useMemo(()=>C(),[C]);return f.useSyncedValues({activeTriggerProps:L,inactiveTriggerProps:M,popupProps:P}),(0,hl.jsx)(wi.Provider,{value:f,children:typeof p=="function"?p({payload:T}):p})});var yl=g(H(),1);var Qn=g(H(),1),vi=Qn.createContext(void 0);function vl(){return Qn.useContext(vi)}var _l=(function(e){return e[e.popupOpen=Uo.popupOpen]="popupOpen",e.triggerDisabled="data-trigger-disabled",e})({});var xl=Mc(function(t,o){let{className:n,render:r,handle:i,payload:s,disabled:a,delay:d,closeOnClick:l=!0,closeDelay:c,id:u,style:m,...p}=t,f=Ue(!0),h=i?.store??f;if(!h)throw new Error(xe(82));let v=aa(u),b=h.useState("isTriggerActive",v),T=h.useState("isOpenedByTrigger",v),y=h.useState("floatingRootContext"),_=yl.useRef(null),w=d??600,R=c??0,{registerTrigger:E,isMountedByThisTrigger:x}=zc(v,_,h,{payload:s,closeOnClick:l,closeDelay:R}),k=vl(),{delayRef:O,isInstantPhase:B,hasProvider:z}=jr(y,{open:T});h.useSyncedValue("isInstantPhase",B);let N=h.useState("disabled"),C=a??N,S=h.useState("trackCursorAxis"),L=h.useState("disableHoverablePopup"),M=fi(y,{enabled:!C,mouseOnly:!0,move:!1,handleClose:!L&&S!=="both"?mi():null,restMs(){let X=k?.delay,K=typeof O.current=="object"?O.current.open:void 0,ae=w;return z&&(K!==0?ae=d??X??w:ae=0),ae},delay(){let X=typeof O.current=="object"?O.current.close:void 0,K=R;return c==null&&z&&(K=X),{close:K}},triggerElementRef:_,isActiveTrigger:b,isClosing:()=>h.select("transitionStatus")==="ending"}),P=li(y,{enabled:!C}).reference,A={open:T},F=h.useState("triggerProps",x);return Re("button",t,{state:A,ref:[o,E,_],props:[M,P,F,{onPointerDown(){h.set("closeOnClick",l)},id:v,[_l.triggerDisabled]:C?"":void 0},p],stateAttributesMapping:Kc})});var Sl=g(H(),1);var $n=g(H(),1),_i=$n.createContext(void 0);function Rl(){let e=$n.useContext(_i);if(e===void 0)throw new Error(xe(70));return e}var yi=g(q(),1),El=Sl.forwardRef(function(t,o){let{keepMounted:n=!1,...r}=t;return Ue().useState("mounted")||n?(0,yi.jsx)(_i.Provider,{value:n,children:(0,yi.jsx)(ml,{ref:o,...r})}):null});var tr=g(H(),1);var er=g(H(),1),xi=er.createContext(void 0);function xo(){let e=er.useContext(xi);if(e===void 0)throw new Error(xe(71));return e}var Tl=g(q(),1),Pl=tr.forwardRef(function(t,o){let{render:n,className:r,anchor:i,positionMethod:s="absolute",side:a="top",align:d="center",sideOffset:l=0,alignOffset:c=0,collisionBoundary:u="clipping-ancestors",collisionPadding:m=5,arrowPadding:p=5,sticky:f=!1,disableAnchorTracking:h=!1,collisionAvoidance:v=Va,style:b,...T}=t,y=Ue(),_=Rl(),w=y.useState("open"),R=y.useState("mounted"),E=y.useState("trackCursorAxis"),x=y.useState("disableHoverablePopup"),k=y.useState("floatingRootContext"),O=y.useState("instantType"),B=y.useState("transitionStatus"),z=y.useState("hasViewport"),N=ol({anchor:i,positionMethod:s,floatingRootContext:k,mounted:R,side:a,sideOffset:l,align:d,alignOffset:c,collisionBoundary:u,collisionPadding:m,sticky:f,arrowPadding:p,disableAnchorTracking:h,keepMounted:_,collisionAvoidance:v,adaptiveOrigin:z?Qc:void 0}),C=tr.useMemo(()=>({open:w,side:N.side,align:N.align,anchorHidden:N.anchorHidden,instant:E!=="none"?"tracking-cursor":O}),[w,N.side,N.align,N.anchorHidden,E,O]),S=nl(t,C,{styles:N.positionerStyles,transitionStatus:B,props:T,refs:[o,y.useStateSetter("positionerElement")],hidden:!R,inert:!w||E==="both"||x});return(0,Tl.jsx)(xi.Provider,{value:N,children:S})});var Cl=g(H(),1);var zm={...vo,...ua},Al=Cl.forwardRef(function(t,o){let{className:n,render:r,style:i,...s}=t,a=Ue(),{side:d,align:l}=xo(),c=a.useState("open"),u=a.useState("instantType"),m=a.useState("transitionStatus"),p=a.useState("popupProps"),f=a.useState("floatingRootContext");kn({open:c,ref:a.context.popupRef,onComplete(){c&&a.context.onOpenChangeComplete?.(!0)}});let h=a.useState("disabled"),v=a.useState("closeDelay");return ui(f,{enabled:!h,closeDelay:v}),Re("div",t,{state:{open:c,side:d,align:l,instant:u,transitionStatus:m},ref:[o,a.context.popupRef,a.useStateSetter("popupElement")],props:[p,Xn(m),s],stateAttributesMapping:zm})});var kl=g(H(),1);var Ol=kl.forwardRef(function(t,o){let{className:n,render:r,style:i,...s}=t,a=Ue(),d=a.useState("open"),l=a.useState("instantType"),{arrowRef:c,side:u,align:m,arrowUncentered:p,arrowStyles:f}=xo();return Re("div",t,{state:{open:d,side:u,align:m,uncentered:p,instant:l},ref:[o,c],props:[{style:f,"aria-hidden":!0},s],stateAttributesMapping:vo})});var Ri=g(H(),1);var Si=g(q(),1),Nl=function(t){let{delay:o,closeDelay:n,timeout:r=400}=t,i=Ri.useMemo(()=>({delay:o,closeDelay:n}),[o,n]),s=Ri.useMemo(()=>({open:o,close:n}),[o,n]);return(0,Si.jsx)(vi.Provider,{value:i,children:(0,Si.jsx)(Dr,{delay:s,timeoutMs:r,children:t.children})})};var Il=g(H(),1);var Ll=(function(e){return e.popupWidth="--popup-width",e.popupHeight="--popup-height",e})({});var Dm={activationDirection:e=>e?{"data-activation-direction":e}:null},Ml=Il.forwardRef(function(t,o){let{render:n,className:r,style:i,children:s,...a}=t,d=Ue(),l=xo(),c=d.useState("instantType"),{children:u,state:m}=ul({store:d,side:l.side,cssVars:Ll,children:s}),p={activationDirection:m.activationDirection,transitioning:m.transitioning,instant:c};return Re("div",t,{state:p,ref:o,props:[a,{children:u}],stateAttributesMapping:Dm})});var Ko=class{constructor(){this.store=new yo}open(t){let o=t?this.store.context.triggerElements.getById(t):void 0;if(t&&!o)throw new Error(xe(81,t));this.store.setOpen(!0,ee(G.imperativeAction,void 0,o))}close(){this.store.setOpen(!1,ee(G.imperativeAction,void 0,void 0))}get isOpen(){return this.store.state.open}};function Bl(){return new Ko}function lt(e){return Re(e.defaultTagName??"div",e,e)}var Dl=g(oe(),1),Ei="data-wp-hash";function Ti(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Fm(document)),e.__wpStyleRuntime}function jm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ei}]`))if(o.getAttribute(Ei)===t)return!0;return!1}function jl(e,t,o){if(!e.head)return;let n=Ti(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(jm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ei,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Fm(e){let t=Ti();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)jl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Fl(e,t){let o=Ti();o.styles.set(e,t);for(let n of o.documents.keys())jl(n,e,t)}typeof process>"u",Fl("0c8601dd83",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');var Hl={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",Fl("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var zl={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ge=(0,Dl.forwardRef)(function({variant:t="body-md",render:o,className:n,...r},i){return lt({render:o,defaultTagName:"span",ref:i,props:Ae(r,{className:J(Hl.text,zl.heading,zl.p,Hl[t],n)})})});var Ul=g(q(),1),Pi="data-wp-hash";function Ci(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Wm(document)),e.__wpStyleRuntime}function Vm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Pi}]`))if(o.getAttribute(Pi)===t)return!0;return!1}function Yl(e,t,o){if(!e.head)return;let n=Ci(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Vm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Pi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Wm(e){let t=Ci();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Yl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Ym(e,t){let o=Ci();o.styles.set(e,t);for(let n of o.documents.keys())Yl(n,e,t)}typeof process>"u",Ym("d6a685e1aa","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}");var Vl={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},Ai=(0,Wl.forwardRef)(function({intent:t="none",className:o,...n},r){return(0,Ul.jsx)(Ge,{ref:r,className:J(Vl.badge,Vl[`is-${t}-intent`],o),...n,variant:"body-sm"})});var or=g(oe(),1),Gl=g(_t(),1),Kl=g(q(),1);import{speak as Um}from"@wordpress/a11y";var ki="data-wp-hash";function Oi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Xm(document)),e.__wpStyleRuntime}function Gm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ki}]`))if(o.getAttribute(ki)===t)return!0;return!1}function Xl(e,t,o){if(!e.head)return;let n=Oi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Gm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ki,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Xm(e){let t=Oi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Xl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function nr(e,t){let o=Oi();o.styles.set(e,t);for(let n of o.documents.keys())Xl(n,e,t)}typeof process>"u",nr("7d54255a4c",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:#0000;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:#0000;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:#0000;&:not([data-disabled]):is(:hover,:active,:focus){color:#0000}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}');var qo={button:"_97b0fc33c028be1a__button","is-unstyled":"abbb272e2ce49bd6__is-unstyled","is-loading":"_914b42f315c0e580__is-loading","is-small":"_908205475f9f2a92__is-small","is-brand":"dd460c965226cc77__is-brand","is-outline":"_62d5a778b7b258ee__is-outline","is-minimal":"ad0619a3217c6a5b__is-minimal","is-neutral":"e722a8f96726aa99__is-neutral","is-solid":"b50b3358c5fb4d0b__is-solid","is-compact":"cf59cf1b69629838__is-compact","loading-animation":"_5a1d53da6f830c8d__loading-animation"};typeof process>"u",nr("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Km={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",nr("2a5ab8f3a7","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}");var qm={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",nr("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Zm={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},ql=(0,or.forwardRef)(function({tone:t="brand",variant:o="solid",size:n="default",className:r,focusableWhenDisabled:i=!0,disabled:s,loading:a,loadingAnnouncement:d=(0,Gl.__)("Loading"),children:l,...c},u){let m=J(Zm.button,Km["box-sizing"],qm["outset-ring--focus-except-active"],o!=="unstyled"&&qo.button,qo[`is-${t}`],qo[`is-${o}`],qo[`is-${n}`],a&&qo["is-loading"],r);return(0,or.useEffect)(()=>{a&&d&&Um(d)},[a,d]),(0,Kl.jsx)(bi,{ref:u,className:m,focusableWhenDisabled:i,disabled:s??a,...c,children:l})});var ed=g(oe(),1);var Jl=g(oe(),1),Ql=g(Zt(),1),$l=g(q(),1),Jt=(0,Jl.forwardRef)(function({icon:t,size:o=24,...n},r){return(0,$l.jsx)(Ql.SVG,{ref:r,fill:"currentColor",...t.props,...n,width:o,height:o})});var td=g(q(),1),Ni=(0,ed.forwardRef)(function({icon:t,...o},n){return(0,td.jsx)(Jt,{ref:n,icon:t,viewBox:"4 4 16 16",size:16,...o})});Ni.displayName="Button.Icon";var rr=Object.assign(ql,{Icon:Ni});var ir=g(Zt(),1),Li=g(q(),1),Ii=(0,Li.jsx)(ir.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Li.jsx)(ir.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})});var sr=g(Zt(),1),Mi=g(q(),1),Bi=(0,Mi.jsx)(sr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Mi.jsx)(sr.Path,{d:"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"})});var ar=g(Zt(),1),Hi=g(q(),1),zi=(0,Hi.jsx)(ar.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Hi.jsx)(ar.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})});var cr=g(Zt(),1),Di=g(q(),1),ji=(0,Di.jsx)(cr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Di.jsx)(cr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})});var lr=g(Zt(),1),Fi=g(q(),1),Vi=(0,Fi.jsx)(lr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Fi.jsx)(lr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"})});var rd=g(oe(),1);function Wi(e,t,o){return(0,rd.cloneElement)(e??t,{children:o})}var sd=g(Yi(),1),{lock:v2,unlock:ad}=(0,sd.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/ui");var cd=g(oe(),1),Ui="data-wp-hash";function Gi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Qm(document)),e.__wpStyleRuntime}function Jm(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ui}]`))if(o.getAttribute(Ui)===t)return!0;return!1}function ld(e,t,o){if(!e.head)return;let n=Gi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Jm(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ui,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Qm(e){let t=Gi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ld(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function $m(e,t){let o=Gi();o.styles.set(e,t);for(let n of o.documents.keys())ld(n,e,t)}typeof process>"u",$m("b51ff41489","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");var eg={stack:"_19ce0419607e1896__stack"},tg={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Ro=(0,cd.forwardRef)(function({direction:t,gap:o,align:n,justify:r,wrap:i,render:s,...a},d){let l={gap:o&&tg[o],alignItems:n,justifyContent:r,flexDirection:t,flexWrap:i};return lt({render:s,ref:d,props:Ae(a,{style:l,className:eg.stack})})});var kd=g(oe(),1);var xd=g(oe(),1),Rd=g(nd(),1);var md=g(oe(),1);var Xi="data-wp-hash";function Ki(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&ng(document)),e.__wpStyleRuntime}function og(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Xi}]`))if(o.getAttribute(Xi)===t)return!0;return!1}function ud(e,t,o){if(!e.head)return;let n=Ki(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(og(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Xi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function ng(e){let t=Ki();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ud(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function rg(e,t){let o=Ki();o.styles.set(e,t);for(let n of o.documents.keys())ud(n,e,t)}typeof process>"u",rg("45eb1fe20f","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui-utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}");var dd={slot:"_11fc52b637ff8a7e__slot"},fd="data-wp-compat-overlay-slot";function ig(){return typeof document>"u"?null:document}function sg(){let e;try{e=window.top?.wp}catch{}let t=e??window.wp;return typeof t?.components=="object"&&t.components!==null}var bt=null;function ag(e){let t=e.createElement("div");return t.setAttribute(fd,""),dd.slot&&t.classList.add(dd.slot),e.body.appendChild(t),t}function pd(){if(typeof window>"u"||!sg()&&window.__wpUiCompatOverlaySlotEnabled!==!0)return;let e=ig();if(!e||!e.body)return;if(bt&&bt.ownerDocument===e&&bt.isConnected)return bt;let t=e.querySelector(`[${fd}]`);return t instanceof HTMLDivElement?(bt=t,t):(bt?.isConnected&&bt.remove(),bt=ag(e),bt)}var gd=g(q(),1),bd=(0,md.forwardRef)(function({container:t,...o},n){return(0,gd.jsx)(ze.Portal,{container:t??pd(),...o,ref:n})});var hd=g(oe(),1),_d=g(q(),1),qi="data-wp-hash";function Zi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&lg(document)),e.__wpStyleRuntime}function cg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${qi}]`))if(o.getAttribute(qi)===t)return!0;return!1}function wd(e,t,o){if(!e.head)return;let n=Zi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(cg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(qi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function lg(e){let t=Zi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)wd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function vd(e,t){let o=Zi();o.styles.set(e,t);for(let n of o.documents.keys())wd(n,e,t)}typeof process>"u",vd("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var dg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",vd("8293efbb49",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}');var ug={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},yd=(0,hd.forwardRef)(function({align:t="center",className:o,side:n="top",sideOffset:r=4,...i},s){return(0,_d.jsx)(ze.Positioner,{ref:s,align:t,side:n,sideOffset:r,...i,className:J(dg["box-sizing"],ug.positioner,o)})});var Zo=g(q(),1),Ji="data-wp-hash";function Qi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&pg(document)),e.__wpStyleRuntime}function fg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ji}]`))if(o.getAttribute(Ji)===t)return!0;return!1}function Sd(e,t,o){if(!e.head)return;let n=Qi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(fg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ji,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function pg(e){let t=Qi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Sd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function mg(e,t){let o=Qi();o.styles.set(e,t);for(let n of o.documents.keys())Sd(n,e,t)}typeof process>"u",mg("8293efbb49",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-sm,2px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}');var gg={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},bg=ad(Rd.privateApis).ThemeProvider,$i=(0,xd.forwardRef)(function({portal:t,positioner:o,children:n,className:r,...i},s){let a=(0,Zo.jsx)(bg,{color:{bg:"#1e1e1e"},children:(0,Zo.jsx)(ze.Popup,{ref:s,className:J(gg.popup,r),...i,children:n})}),d=Wi(o,(0,Zo.jsx)(yd,{}),a);return Wi(t,(0,Zo.jsx)(bd,{}),d)});var Ed=g(oe(),1),Td=g(q(),1),es=(0,Ed.forwardRef)(function(t,o){return(0,Td.jsx)(ze.Trigger,{ref:o,...t})});var Pd=g(q(),1);function ts(e){return(0,Pd.jsx)(ze.Root,{...e})}var Cd=g(q(),1);function os({...e}){return(0,Cd.jsx)(ze.Provider,{...e})}var Xe=g(q(),1),ns="data-wp-hash";function rs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&vg(document)),e.__wpStyleRuntime}function wg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ns}]`))if(o.getAttribute(ns)===t)return!0;return!1}function Od(e,t,o){if(!e.head)return;let n=rs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(wg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ns,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function vg(e){let t=rs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Od(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function _g(e,t){let o=rs();o.styles.set(e,t);for(let n of o.documents.keys())Od(n,e,t)}typeof process>"u",_g("358a2a646a","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}");var Ad={"icon-button":"_28cfdc260e755391__icon-button",icon:"f1c70d719989a85a__icon"},is=(0,kd.forwardRef)(function({label:t,className:o,children:n,disabled:r,focusableWhenDisabled:i=!0,icon:s,size:a,shortcut:d,positioner:l,...c},u){let m=J(Ad["icon-button"],o);return(0,Xe.jsx)(os,{delay:0,children:(0,Xe.jsxs)(ts,{children:[(0,Xe.jsx)(es,{ref:u,disabled:r&&!i,render:(0,Xe.jsx)(rr,{...c,size:a,"aria-label":t,"aria-keyshortcuts":d?.ariaKeyShortcut,disabled:r,focusableWhenDisabled:i}),className:m,children:(0,Xe.jsx)(Jt,{icon:s,size:24,className:Ad.icon})}),(0,Xe.jsxs)($i,{positioner:l,children:[t,d&&(0,Xe.jsxs)(Xe.Fragment,{children:[" ",(0,Xe.jsx)("span",{"aria-hidden":"true",children:d.displayShortcut})]})]})]})})});var Nd=g(oe(),1),Ld=g(_t(),1),So=g(q(),1),ss="data-wp-hash";function as(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&xg(document)),e.__wpStyleRuntime}function yg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ss}]`))if(o.getAttribute(ss)===t)return!0;return!1}function Id(e,t,o){if(!e.head)return;let n=as(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(yg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function xg(e){let t=as();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Id(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function ur(e,t){let o=as();o.styles.set(e,t);for(let n of o.documents.keys())Id(n,e,t)}typeof process>"u",ur("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Rg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",ur("2a5ab8f3a7","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid #0000;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}");var Sg={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",ur("90a23568f8",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}');var dr={link:"d4250949359b05ce__link","is-brand":"c6055659b8e2cd2c__is-brand","is-neutral":"_92e0dfcaeee15b88__is-neutral","is-unstyled":"cf122a9bf1035d42__is-unstyled","link-icon":"_0cb411afac4c86c7__link-icon"};typeof process>"u",ur("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Eg={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Jo=(0,Nd.forwardRef)(function({children:t,variant:o="default",tone:n="brand",openInNewTab:r=!1,render:i,className:s,...a},d){return lt({render:i,defaultTagName:"a",ref:d,props:Ae(a,{className:J(Eg.a,Rg["box-sizing"],Sg["outset-ring--focus"],o!=="unstyled"&&dr.link,o!=="unstyled"&&dr[`is-${n}`],o==="unstyled"&&dr["is-unstyled"],s),target:r?"_blank":void 0,children:(0,So.jsxs)(So.Fragment,{children:[t,r&&(0,So.jsx)("span",{className:dr["link-icon"],role:"img","aria-label":(0,Ld.__)("(opens in a new tab)")})]})})})});var Qo={};vr(Qo,{ActionButton:()=>ru,ActionLink:()=>au,Actions:()=>Kd,CloseIcon:()=>$d,Description:()=>Ud,Root:()=>Hd,Title:()=>Fd});var Eo=g(oe(),1);import{speak as Tg}from"@wordpress/a11y";var To=g(q(),1),ls="data-wp-hash";function ds(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Cg(document)),e.__wpStyleRuntime}function Pg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ls}]`))if(o.getAttribute(ls)===t)return!0;return!1}function Md(e,t,o){if(!e.head)return;let n=ds(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Pg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ls,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Cg(e){let t=ds();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Md(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Bd(e,t){let o=ds();o.styles.set(e,t);for(let n of o.documents.keys())Md(n,e,t)}typeof process>"u",Bd("e3ae230cea","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}");var Ag={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",Bd("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var cs={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},kg={neutral:null,info:ji,warning:Ii,success:Vi,error:zi};function Og(e){return e==="error"?"assertive":"polite"}function Ng(e){if(e){if(typeof e=="string")return e;try{return(0,Eo.renderToString)(e)}catch{return}}}function Lg(e,t){let o=Ng(e);(0,Eo.useEffect)(()=>{o&&Tg(o,t)},[o,t])}var Hd=(0,Eo.forwardRef)(function({intent:t="neutral",children:o,icon:n,spokenMessage:r=o,politeness:i=Og(t),render:s,...a},d){Lg(r,i);let l=n===null?null:n??kg[t],c=J(cs.notice,cs[`is-${t}`],Ag["box-sizing"]);return lt({defaultTagName:"div",render:s,ref:d,props:Ae({className:c,children:(0,To.jsxs)(To.Fragment,{children:[o,l&&(0,To.jsx)(Jt,{className:cs.icon,icon:l})]})},a)})});var zd=g(oe(),1);var jd=g(q(),1),us="data-wp-hash";function fs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Mg(document)),e.__wpStyleRuntime}function Ig(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${us}]`))if(o.getAttribute(us)===t)return!0;return!1}function Dd(e,t,o){if(!e.head)return;let n=fs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Ig(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(us,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Mg(e){let t=fs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Dd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Bg(e,t){let o=fs();o.styles.set(e,t);for(let n of o.documents.keys())Dd(n,e,t)}typeof process>"u",Bg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Hg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Fd=(0,zd.forwardRef)(function({className:t,...o},n){return(0,jd.jsx)(Ge,{ref:n,variant:"heading-md",className:J(Hg.title,t),...o})});var Vd=g(oe(),1);var Yd=g(q(),1),ps="data-wp-hash";function ms(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Dg(document)),e.__wpStyleRuntime}function zg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ps}]`))if(o.getAttribute(ps)===t)return!0;return!1}function Wd(e,t,o){if(!e.head)return;let n=ms(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(zg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ps,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Dg(e){let t=ms();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Wd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function jg(e,t){let o=ms();o.styles.set(e,t);for(let n of o.documents.keys())Wd(n,e,t)}typeof process>"u",jg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Fg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Ud=(0,Vd.forwardRef)(function({className:t,...o},n){return(0,Yd.jsx)(Ge,{ref:n,variant:"body-md",className:J(Fg.description,t),...o})});var Gd=g(oe(),1);var gs="data-wp-hash";function bs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Wg(document)),e.__wpStyleRuntime}function Vg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${gs}]`))if(o.getAttribute(gs)===t)return!0;return!1}function Xd(e,t,o){if(!e.head)return;let n=bs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Vg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(gs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Wg(e){let t=bs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Xd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Yg(e,t){let o=bs();o.styles.set(e,t);for(let n of o.documents.keys())Xd(n,e,t)}typeof process>"u",Yg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var Ug={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Kd=(0,Gd.forwardRef)(function({render:t,...o},n){return lt({defaultTagName:"div",render:t,ref:n,props:Ae({className:Ug.actions},o)})});var qd=g(oe(),1),Zd=g(_t(),1);var Qd=g(q(),1),hs="data-wp-hash";function ws(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Xg(document)),e.__wpStyleRuntime}function Gg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${hs}]`))if(o.getAttribute(hs)===t)return!0;return!1}function Jd(e,t,o){if(!e.head)return;let n=ws(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Gg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(hs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Xg(e){let t=ws();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Jd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Kg(e,t){let o=ws();o.styles.set(e,t);for(let n of o.documents.keys())Jd(n,e,t)}typeof process>"u",Kg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var qg={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},$d=(0,qd.forwardRef)(function({className:t,icon:o=Bi,label:n=(0,Zd.__)("Dismiss"),...r},i){return(0,Qd.jsx)(is,{...r,ref:i,className:J(qg["close-icon"],t),variant:"minimal",size:"small",tone:"neutral",icon:o,label:n})});var tu=g(oe(),1);var nu=g(q(),1),vs="data-wp-hash";function _s(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Jg(document)),e.__wpStyleRuntime}function Zg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${vs}]`))if(o.getAttribute(vs)===t)return!0;return!1}function ou(e,t,o){if(!e.head)return;let n=_s(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Zg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(vs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Jg(e){let t=_s();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ou(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Qg(e,t){let o=_s();o.styles.set(e,t);for(let n of o.documents.keys())ou(n,e,t)}typeof process>"u",Qg("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var eu={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},ru=(0,tu.forwardRef)(function({className:t,loading:o,loadingAnnouncement:n,variant:r,...i},s){return(0,nu.jsx)(rr,{...i,...o!==void 0?{loading:o,loadingAnnouncement:n??""}:{},ref:s,size:"compact",tone:"neutral",variant:r,className:J(eu["action-button"],eu[`is-action-button-${r}`],t)})});var iu=g(oe(),1);var xs=g(q(),1),ys="data-wp-hash";function Rs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&e0(document)),e.__wpStyleRuntime}function $g(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ys}]`))if(o.getAttribute(ys)===t)return!0;return!1}function su(e,t,o){if(!e.head)return;let n=Rs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if($g(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ys,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function e0(e){let t=Rs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)su(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function t0(e,t){let o=Rs();o.styles.set(e,t);for(let n of o.documents.keys())su(n,e,t)}typeof process>"u",t0("60dd1d4d42","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#9fbcdc);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#d0b481);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#8ac894);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#daa39b);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer wp-ui-compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,#0000 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}");var o0={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},au=(0,iu.forwardRef)(function({className:t,render:o,...n},r){return(0,xs.jsx)(Ge,{ref:r,className:J(o0["action-link"],t),...n,variant:"body-md",render:(0,xs.jsx)(Jo,{tone:"neutral",variant:"default",render:o})})});var cu=g(oe(),1),lu=g(q(),1),du=(0,cu.forwardRef)(({children:e,className:t,ariaLabel:o,as:n="div",...r},i)=>(0,lu.jsx)(n,{ref:i,className:J("admin-ui-navigable-region",t),"aria-label":o,role:"region",tabIndex:"-1",...r,children:e}));du.displayName="NavigableRegion";var uu=du;var pu=g($o(),1),{Fill:mu,Slot:gu}=(0,pu.createSlotFill)("SidebarToggle");var Ke=g(q(),1),Ss="data-wp-hash";function Es(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&r0(document)),e.__wpStyleRuntime}function n0(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ss}]`))if(o.getAttribute(Ss)===t)return!0;return!1}function bu(e,t,o){if(!e.head)return;let n=Es(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(n0(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function r0(e){let t=Es();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)bu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function i0(e,t){let o=Es();o.styles.set(e,t);for(let n of o.documents.keys())bu(n,e,t)}typeof process>"u",i0("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Qt={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function hu({headingLevel:e=1,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:s,showSidebarToggle:a=!0}){let d=`h${e}`;return(0,Ke.jsxs)(Ro,{direction:"column",className:Qt.header,children:[(0,Ke.jsxs)(Ro,{className:Qt["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Ke.jsxs)(Ro,{direction:"row",gap:"sm",align:"center",justify:"start",children:[a&&(0,Ke.jsx)(gu,{bubblesVirtually:!0,className:Qt["sidebar-toggle-slot"]}),n&&(0,Ke.jsx)("div",{className:Qt["header-visual"],"aria-hidden":"true",children:n}),r&&(0,Ke.jsx)(Ge,{className:Qt["header-title"],render:(0,Ke.jsx)(d,{}),variant:"heading-lg",children:r}),t,o]}),s&&(0,Ke.jsx)(Ro,{align:"center",className:Qt["header-actions"],direction:"row",gap:"sm",children:s})]}),i&&(0,Ke.jsx)(Ge,{render:(0,Ke.jsx)("p",{}),variant:"body-md",className:Qt["header-subtitle"],children:i})]})}var en=g(q(),1),Ps="data-wp-hash";function Cs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&a0(document)),e.__wpStyleRuntime}function s0(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ps}]`))if(o.getAttribute(Ps)===t)return!0;return!1}function wu(e,t,o){if(!e.head)return;let n=Cs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(s0(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ps,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function a0(e){let t=Cs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)wu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function c0(e,t){let o=Cs();o.styles.set(e,t);for(let n of o.documents.keys())wu(n,e,t)}typeof process>"u",c0("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Ts={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function vu({headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,children:s,className:a,actions:d,ariaLabel:l,hasPadding:c=!1,showSidebarToggle:u=!0}){let m=J(Ts.page,a);return(0,en.jsxs)(uu,{className:m,ariaLabel:l??(typeof r=="string"?r:""),children:[(r||t||o||d||n)&&(0,en.jsx)(hu,{headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:d,showSidebarToggle:u}),c?(0,en.jsx)("div",{className:J(Ts.content,Ts["has-padding"]),children:s}):s]})}vu.SidebarToggleFill=mu;var As=vu;var it=g($o()),Wu=g(tn()),Yu=g(oe()),ht=g(_t()),Uu=g(fr());import{privateApis as S0}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='359735ef0e']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","359735ef0e"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 92% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 58% -10%,#aa82b873 0,#aa82b800 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,#ca9ec6bf 0,#ca9ec600 60%),radial-gradient(ellipse 55% 110% at 8% -15%,#d0afd9b3 0,#d0afd900 65%),radial-gradient(ellipse 40% 85% at 42% -10%,#aa82b873 0,#aa82b800 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var rn=g($o()),Is=g(fr()),sn=g(tn()),dt=g(oe()),Ve=g(_t()),Du=g(ks()),ju=g(Su());var pr=g($o()),Lu=g(oe()),Iu=g(tn()),$t=g(_t());import{__experimentalRegisterConnector as l0,__experimentalConnectorItem as d0,__experimentalDefaultConnectorSettings as u0,privateApis as f0}from"@wordpress/connectors";var Eu=g(Yi()),{lock:f5,unlock:Po}=(0,Eu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Os=g(fr()),nn=g(tn()),on=g(oe()),se=g(_t()),Tu=g(ks());function Pu({file:e,settingName:t,connectorName:o,isInstalled:n,isActivated:r,keySource:i="none",initialIsConnected:s=!1}){let[a,d]=(0,on.useState)(!1),[l,c]=(0,on.useState)(!1),[u,m]=(0,on.useState)(s),[p,f]=(0,on.useState)(null),h=e?.replace(/\.php$/,""),v=h?.includes("/")?h.split("/")[0]:h,{derivedPluginStatus:b,canManagePlugins:T,currentApiKey:y,canInstallPlugins:_}=(0,nn.useSelect)(P=>{let A=P(Os.store),Y=A.getEntityRecord("root","site")?.[t]??"",X=!!A.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:A.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:Y,canInstallPlugins:X};let K=A.getEntityRecord("root","plugin",h);if(!A.hasFinishedResolution("getEntityRecord",["root","plugin",h]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:Y,canInstallPlugins:X};if(K)return{derivedPluginStatus:K.status==="active"||K.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:Y,canInstallPlugins:X};let ie="not-installed";return r?ie="active":n&&(ie="inactive"),{derivedPluginStatus:ie,canManagePlugins:!1,currentApiKey:Y,canInstallPlugins:X}},[h,t,n,r]),w=p??b,R=T,E=w==="active"&&u||p==="active"&&!!y,{saveEntityRecord:x,invalidateResolution:k}=(0,nn.useDispatch)(Os.store),{createSuccessNotice:O,createErrorNotice:B}=(0,nn.useDispatch)(Tu.store),z=async()=>{if(v){c(!0);try{await x("root","plugin",{slug:v,status:"active"},{throwOnError:!0}),f("active"),k("getEntityRecord",["root","site"]),d(!0),O((0,se.sprintf)((0,se.__)("Plugin for %s installed and activated successfully."),o),{id:"connector-plugin-install-success",type:"snackbar"})}catch{B((0,se.sprintf)((0,se.__)("Failed to install plugin for %s."),o),{id:"connector-plugin-install-error",type:"snackbar"})}finally{c(!1)}}},N=async()=>{if(e){c(!0);try{await x("root","plugin",{plugin:h,status:"active"},{throwOnError:!0}),f("active"),k("getEntityRecord",["root","site"]),d(!0),O((0,se.sprintf)((0,se.__)("Plugin for %s activated successfully."),o),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{B((0,se.sprintf)((0,se.__)("Failed to activate plugin for %s."),o),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{c(!1)}}};return{pluginStatus:w,canInstallPlugins:_,canActivatePlugins:R,isExpanded:a,setIsExpanded:d,isBusy:l,isConnected:E,currentApiKey:y,keySource:i,handleButtonClick:()=>{if(w==="not-installed"){if(_===!1)return;z()}else if(w==="inactive"){if(R===!1)return;N()}else d(!a)},getButtonLabel:()=>{if(l)return w==="not-installed"?(0,se.__)("Installing\u2026"):(0,se.__)("Activating\u2026");if(a)return(0,se.__)("Cancel");if(E)return(0,se.__)("Edit");switch(w){case"checking":return(0,se.__)("Checking\u2026");case"not-installed":return(0,se.__)("Install");case"inactive":return(0,se.__)("Activate");case"active":return(0,se.__)("Set up")}},saveApiKey:async P=>{let A=y;try{let X=(await x("root","site",{[t]:P},{throwOnError:!0}))?.[t];if(P&&(X===A||!X))throw new Error("It was not possible to connect to the provider using this key.");m(!0),O((0,se.sprintf)((0,se.__)("%s connected successfully."),o),{id:"connector-connect-success",type:"snackbar"})}catch(F){throw console.error("Failed to save API key:",F),F}},removeApiKey:async()=>{try{await x("root","site",{[t]:""},{throwOnError:!0}),m(!1),O((0,se.sprintf)((0,se.__)("%s disconnected."),o),{id:"connector-disconnect-success",type:"snackbar"})}catch(P){throw console.error("Failed to remove API key:",P),B((0,se.sprintf)((0,se.__)("Failed to disconnect %s."),o),{id:"connector-disconnect-error",type:"snackbar"}),P}}}}var Cu=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),Au=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),ku=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),Ou=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),Nu=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:p0}=Po(f0);function Mu(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"{}")}catch{return{}}}function Ns(){return Mu().connectors??{}}function Bu(){return!!Mu().isFileModDisabled}var m0={google:Nu,openai:Cu,anthropic:Au,akismet:Ou};function g0(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let o=m0[e];return React.createElement(o||ku,null)}var b0=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,$t.__)("Connected")),h0=({slug:e})=>React.createElement(Jo,{href:(0,$t.sprintf)((0,$t.__)("https://wordpress.org/plugins/%s/"),e),openInNewTab:!0},(0,$t.__)("Learn more")),w0=()=>React.createElement(Ai,null,(0,$t.__)("Not available"));function v0({name:e,description:t,logo:o,authentication:n,plugin:r}){let i=n?.method==="api_key"?n:void 0,s=i?.settingName??"",a=i?.credentialsUrl??void 0,d=r?.file?.replace(/\.php$/,""),l=d?.includes("/")?d.split("/")[0]:d,c;try{a&&(c=new URL(a).hostname)}catch{}let{pluginStatus:u,canInstallPlugins:m,canActivatePlugins:p,isExpanded:f,setIsExpanded:h,isBusy:v,isConnected:b,currentApiKey:T,keySource:y,handleButtonClick:_,getButtonLabel:w,saveApiKey:R,removeApiKey:E}=Pu({file:r?.file,settingName:s,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:i?.keySource,initialIsConnected:i?.isConnected}),x=y==="env"||y==="constant",k=u==="not-installed"&&m===!1||u==="inactive"&&p===!1,O=!k,B=(0,Lu.useRef)(null);return React.createElement(d0,{className:l?`connector-item--${l}`:void 0,logo:o,name:e,description:t,actionArea:React.createElement(pr.__experimentalHStack,{spacing:3,expanded:!1},b&&React.createElement(b0,null),k&&(l?React.createElement(h0,{slug:l}):React.createElement(w0,null)),O&&React.createElement(pr.Button,{ref:B,variant:f||b?"tertiary":"secondary",size:"compact",onClick:_,disabled:u==="checking"||v,isBusy:v,accessibleWhenDisabled:!0},w()))},f&&u==="active"&&React.createElement(u0,{key:b?"connected":"setup",initialValue:x?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":T,helpUrl:a,helpLabel:c,readOnly:b||x,keySource:y,onRemove:x?void 0:async()=>{await E(),B.current?.focus()},onSave:async z=>{await R(z),h(!1),B.current?.focus()}}))}function Hu(){let e=Ns(),t=o=>o.replace(/[^a-z0-9-_]/gi,"-");for(let[o,n]of Object.entries(e)){if(o==="akismet"&&!n.plugin?.isInstalled)continue;let{authentication:r}=n,i=t(o),s={name:n.name,description:n.description,type:n.type,logo:g0(o,n.logoUrl),authentication:r,plugin:n.plugin},a=Po((0,Iu.select)(p0)).getConnector(i);r.method==="api_key"&&!a?.render&&(s.render=v0),l0(i,s)}}function zu(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}})))}var _0="ai",y0="ai-wp-admin",Ls="ai/ai",x0="https://wordpress.org/plugins/ai/",Ms=Object.values(Ns()),R0=Ms.some(e=>e.type==="ai_provider"),Fu=[];for(let e of Ms)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Fu.push(e.authentication.settingName);function Vu(){let[e,t]=(0,dt.useState)(!1),[o,n]=(0,dt.useState)(!1),r=(0,dt.useRef)(null);(0,dt.useEffect)(()=>{o&&r.current?.focus()},[o]);let i=(0,dt.useRef)(Ms.some(w=>w.type==="ai_provider"&&w.authentication.method==="api_key"&&w.authentication.isConnected)).current,{pluginStatus:s,canInstallPlugins:a,canManagePlugins:d,hasConnectedProvider:l}=(0,sn.useSelect)(w=>{let R=w(Is.store),E=!!R.canUser("create",{kind:"root",name:"plugin"}),x=R.getEntityRecord("root","site"),k=i||Fu.some(z=>!!x?.[z]),O=R.getEntityRecord("root","plugin",Ls);return R.hasFinishedResolution("getEntityRecord",["root","plugin",Ls])?O?{pluginStatus:O.status==="active"?"active":"inactive",canInstallPlugins:E,canManagePlugins:!0,hasConnectedProvider:k}:{pluginStatus:"not-installed",canInstallPlugins:E,canManagePlugins:E,hasConnectedProvider:k}:{pluginStatus:"checking",canInstallPlugins:E,canManagePlugins:void 0,hasConnectedProvider:k}},[]),{saveEntityRecord:c}=(0,sn.useDispatch)(Is.store),{createSuccessNotice:u,createErrorNotice:m}=(0,sn.useDispatch)(Du.store),p=async()=>{t(!0);try{await c("root","plugin",{slug:_0,status:"active"},{throwOnError:!0}),n(!0),u((0,Ve.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{m((0,Ve.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},f=async()=>{t(!0);try{await c("root","plugin",{plugin:Ls,status:"active"},{throwOnError:!0}),n(!0),u((0,Ve.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{m((0,Ve.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!R0||s==="checking"||s==="active"&&i&&!o||s==="inactive"&&d===!1)return null;let h=s==="active"&&!l,v=s==="active"&&l&&(!i||o),b=s==="not-installed"||s==="inactive",T=s==="not-installed"&&a===!1,y=()=>v?(0,Ve.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):h?(0,Ve.__)("The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,Ve.__)("The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),_=()=>s==="not-installed"?{label:e?(0,Ve.__)("Installing\u2026"):(0,Ve.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:p}:{label:e?(0,Ve.__)("Activating\u2026"):(0,Ve.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:f};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,dt.createInterpolateElement)(y(),{strong:React.createElement("strong",null),a:React.createElement(rn.ExternalLink,{href:x0})})),!T&&(b?React.createElement(rn.Button,{variant:"primary",size:"compact",isBusy:e,disabled:_().disabled,accessibleWhenDisabled:!0,onClick:_().onClick},_().label):React.createElement(rn.Button,{ref:r,variant:"secondary",size:"compact",href:(0,ju.addQueryArgs)("options-general.php",{page:y0})},(0,Ve.__)("Control features in the AI plugin")))),React.createElement(zu,null))}var{store:E0}=Po(S0);Hu();function T0(){let e=Bu(),{connectors:t,canInstallPlugins:o,isAiPluginInstalled:n}=(0,Wu.useSelect)(l=>{let c=l(Uu.store),u=c.getEntityRecord("root","plugin","ai/ai");return{connectors:Po(l(E0)).getConnectors(),canInstallPlugins:c.canUser("create",{kind:"root",name:"plugin"}),isAiPluginInstalled:!!u}},[]),r=t.filter(l=>l.render),i=Array.from(new Set(t.filter(l=>l.type==="ai_provider").map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l))).sort(),s=new Set(t.filter(l=>l.plugin?.isInstalled).map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l));n&&s.add("ai");let a=["ai",...i].filter(l=>!s.has(l)),d=r.length===0;return React.createElement(As,{title:(0,ht.__)("Connectors"),subTitle:(0,ht.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${d?" connectors-page--empty":""}`},a.length>0&&(e||!o)&&React.createElement(Qo.Root,{intent:"info",className:"connectors-page__file-mods-notice"},React.createElement(Qo.Description,null,e?(0,ht.__)("Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow."):(0,ht.__)("You do not have permission to install plugins. Please ask a site administrator to install them for you."))),d?React.createElement(it.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(it.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(it.__experimentalHeading,{level:2,size:15,weight:600},(0,ht.__)("No connectors yet")),React.createElement(it.__experimentalText,{size:12},(0,ht.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(it.Button,{variant:"secondary",href:"plugin-install.php",__next40pxDefaultSize:!0},(0,ht.__)("Learn more"))):React.createElement(it.__experimentalVStack,{spacing:3},React.createElement(Vu,null),React.createElement(it.__experimentalVStack,{spacing:3,role:"list"},t.map(l=>l.render?React.createElement(l.render,{key:l.slug,slug:l.slug,name:l.name,description:l.description,type:l.type,logo:l.logo,authentication:l.authentication,plugin:l.plugin}):null))),o&&!e&&React.createElement("p",null,(0,Yu.createInterpolateElement)((0,ht.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function P0(){return React.createElement(T0,null)}var C0=P0;export{C0 as stage}; +var cf=Object.create;var vr=Object.defineProperty;var lf=Object.getOwnPropertyDescriptor;var df=Object.getOwnPropertyNames;var uf=Object.getPrototypeOf,ff=Object.prototype.hasOwnProperty;var _e=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),_r=(e,t)=>{for(var o in t)vr(e,o,{get:t[o],enumerable:!0})},pf=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of df(t))!ff.call(e,r)&&r!==o&&vr(e,r,{get:()=>t[r],enumerable:!(n=lf(t,r))||n.enumerable});return e};var h=(e,t,o)=>(o=e!=null?cf(uf(e)):{},pf(t||!e||!e.__esModule?vr(o,"default",{value:e,enumerable:!0}):o,e));var kt=_e((qb,Hs)=>{Hs.exports=window.wp.i18n});var ae=_e((Jb,Ds)=>{Ds.exports=window.wp.element});var D=_e((Qb,js)=>{js.exports=window.React});var Z=_e((i0,Ys)=>{Ys.exports=window.ReactJSXRuntime});var Bt=_e((Ph,Na)=>{Na.exports=window.ReactDOM});var Tc=_e(Ec=>{"use strict";var bo=D();function dm(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var um=typeof Object.is=="function"?Object.is:dm,fm=bo.useState,pm=bo.useEffect,mm=bo.useLayoutEffect,gm=bo.useDebugValue;function bm(e,t){var o=t(),n=fm({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return mm(function(){r.value=o,r.getSnapshot=t,Qr(r)&&i({inst:r})},[e,o,t]),pm(function(){return Qr(r)&&i({inst:r}),e(function(){Qr(r)&&i({inst:r})})},[e]),gm(o),o}function Qr(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!um(e,o)}catch{return!0}}function hm(e,t){return t()}var wm=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?hm:bm;Ec.useSyncExternalStore=bo.useSyncExternalStore!==void 0?bo.useSyncExternalStore:wm});var $r=_e((J1,Pc)=>{"use strict";Pc.exports=Tc()});var kc=_e(Cc=>{"use strict";var zn=D(),vm=$r();function _m(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var ym=typeof Object.is=="function"?Object.is:_m,xm=vm.useSyncExternalStore,Rm=zn.useRef,Sm=zn.useEffect,Em=zn.useMemo,Tm=zn.useDebugValue;Cc.useSyncExternalStoreWithSelector=function(e,t,o,n,r){var i=Rm(null);if(i.current===null){var s={hasValue:!1,value:null};i.current=s}else s=i.current;i=Em(function(){function d(p){if(!l){if(l=!0,c=p,p=n(p),r!==void 0&&s.hasValue){var u=s.value;if(r(u,p))return f=u}return f=p}if(u=f,ym(c,p))return u;var g=n(p);return r!==void 0&&r(u,g)?(c=p,u):(c=p,f=g)}var l=!1,c,f,m=o===void 0?null:o;return[function(){return d(t())},m===null?void 0:function(){return d(m())}]},[t,o,n,r]);var a=xm(e,i[0],i[1]);return Sm(function(){s.hasValue=!0,s.value=a},[a]),Tm(a),a}});var Oc=_e(($1,Ac)=>{"use strict";Ac.exports=kc()});var Jt=_e((S2,rd)=>{rd.exports=window.wp.primitives});var fd=_e((U2,ud)=>{ud.exports=window.wp.theme});var Yi=_e((X2,md)=>{md.exports=window.wp.privateApis});var en=_e((E5,yu)=>{yu.exports=window.wp.components});var on=_e((H5,ku)=>{ku.exports=window.wp.data});var pr=_e((z5,Au)=>{Au.exports=window.wp.coreData});var As=_e((D5,Ou)=>{Ou.exports=window.wp.notices});var Lu=_e((j5,Nu)=>{Nu.exports=window.wp.url});function zs(e){var t,o,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(o=zs(e[t]))&&(n&&(n+=" "),n+=o)}else for(o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function mf(){for(var e,t,o=0,n="",r=arguments.length;o<r;o++)(e=arguments[o])&&(t=zs(e))&&(n&&(n+=" "),n+=t);return n}var $=mf;var Jl=h(ae(),1);var gf=h(D(),1),No={...gf};var Vs=h(D(),1),Fs={};function ye(e,t){let o=Vs.useRef(Fs);return o.current===Fs&&(o.current=e(t)),o}var yr=No.useInsertionEffect,bf=yr&&yr!==No.useLayoutEffect?yr:e=>e();function Y(e){let t=ye(hf).current;return t.next=e,bf(t.effect),t.trampoline}function hf(){let e={next:void 0,callback:wf,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function wf(){}var Ws=h(D(),1),vf=()=>{},W=typeof document<"u"?Ws.useLayoutEffect:vf;var bn=h(D(),1),_f=bn.createContext(void 0);function no(){return bn.useContext(_f)?.direction??"ltr"}function yf(e,t){return function(n,...r){let i=new URL(e);return i.searchParams.set("code",n.toString()),r.forEach(s=>i.searchParams.append("args[]",s)),`${t} error #${n}; visit ${i} for the full message.`}}var xf=yf("https://base-ui.com/production-error","Base UI"),Ee=xf;var Ft=h(D(),1);function xr(e,t,o,n){let r=ye(Gs).current;return Rf(r,e,t,o,n)&&Xs(r,[e,t,o,n]),r.callback}function Us(e){let t=ye(Gs).current;return Sf(t,e)&&Xs(t,e),t.callback}function Gs(){return{callback:null,cleanup:null,refs:[]}}function Rf(e,t,o,n,r){return e.refs[0]!==t||e.refs[1]!==o||e.refs[2]!==n||e.refs[3]!==r}function Sf(e,t){return e.refs.length!==t.length||e.refs.some((o,n)=>o!==t[n])}function Xs(e,t){if(e.refs=t,t.every(o=>o==null)){e.callback=null;return}e.callback=o=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),o!=null){let n=Array(t.length).fill(null);for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=i(o);typeof s=="function"&&(n[r]=s);break}case"object":{i.current=o;break}default:}}e.cleanup=()=>{for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=null)switch(typeof i){case"function":{let s=n[r];typeof s=="function"?s():i(null);break}case"object":{i.current=null;break}default:}}}}}}var qs=h(D(),1);var Ks=h(D(),1),Ef=parseInt(Ks.version,10);function ro(e){return Ef>=e}function Rr(e){if(!qs.isValidElement(e))return null;let t=e,o=t.props;return(ro(19)?o?.ref:t.ref)??null}function Lo(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function yt(){}var m0=Object.freeze([]),fe=Object.freeze({});function Zs(e,t){let o={};for(let n in e){let r=e[n];if(t?.hasOwnProperty(n)){let i=t[n](r);i!=null&&Object.assign(o,i);continue}r===!0?o[`data-${n.toLowerCase()}`]="":r&&(o[`data-${n.toLowerCase()}`]=r.toString())}return o}function Js(e,t){return typeof e=="function"?e(t):e}function Qs(e,t){return typeof e=="function"?e(t):e}var Sr={};function be(e,t,o,n,r){if(!o&&!n&&!r&&!e)return hn(t);let i=hn(e);return t&&(i=Io(i,t)),o&&(i=Io(i,o)),n&&(i=Io(i,n)),r&&(i=Io(i,r)),i}function $s(e){if(e.length===0)return Sr;if(e.length===1)return hn(e[0]);let t=hn(e[0]);for(let o=1;o<e.length;o+=1)t=Io(t,e[o]);return t}function hn(e){return Er(e)?{...ta(e,Sr)}:Tf(e)}function Io(e,t){return Er(t)?ta(t,e):Pf(e,t)}function Tf(e){let t={...e};for(let o in t){let n=t[o];ea(o,n)&&(t[o]=oa(n))}return t}function Pf(e,t){if(!t)return e;for(let o in t){let n=t[o];switch(o){case"style":{e[o]=Lo(e.style,n);break}case"className":{e[o]=Tr(e.className,n);break}default:ea(o,n)?e[o]=Cf(e[o],n):e[o]=n}}return e}function ea(e,t){let o=e.charCodeAt(0),n=e.charCodeAt(1),r=e.charCodeAt(2);return o===111&&n===110&&r>=65&&r<=90&&(typeof t=="function"||typeof t>"u")}function Er(e){return typeof e=="function"}function ta(e,t){return Er(e)?e(t):e??Sr}function Cf(e,t){return t?e?(...o)=>{let n=o[0];if(na(n)){let i=n;Mo(i);let s=t(...o);return i.baseUIHandlerPrevented||e?.(...o),s}let r=t(...o);return e?.(...o),r}:oa(t):e}function oa(e){return e&&((...t)=>{let o=t[0];return na(o)&&Mo(o),e(...t)})}function Mo(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Tr(e,t){return t?e?t+" "+e:t:e}function na(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Pr=h(D(),1);function Te(e,t,o={}){let n=t.render,r=kf(t,o);if(o.enabled===!1)return null;let i=o.state??fe;return Nf(e,n,r,i)}function kf(e,t={}){let{className:o,style:n,render:r}=e,{state:i=fe,ref:s,props:a,stateAttributesMapping:d,enabled:l=!0}=t,c=l?Js(o,i):void 0,f=l?Qs(n,i):void 0,m=l?Zs(i,d):fe,p=l&&a?Af(a):void 0,u=l?Lo(m,p)??{}:fe;return typeof document<"u"&&(l?Array.isArray(s)?u.ref=Us([u.ref,Rr(r),...s]):u.ref=xr(u.ref,Rr(r),s):xr(null,null)),l?(c!==void 0&&(u.className=Tr(u.className,c)),f!==void 0&&(u.style=Lo(u.style,f)),u):fe}function Af(e){return Array.isArray(e)?$s(e):be(void 0,e)}var Of=Symbol.for("react.lazy");function Nf(e,t,o,n){if(t){if(typeof t=="function")return t(o,n);let r=be(o,t.props);r.ref=o.ref;let i=t;return i?.$$typeof===Of&&(i=Ft.Children.toArray(t)[0]),Ft.cloneElement(i,r)}if(e&&typeof e=="string")return Lf(e,o);throw new Error(Ee(8))}function Lf(e,t){return e==="button"?(0,Pr.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Pr.createElement)("img",{alt:"",...t,key:t.key}):Ft.createElement(e,t)}var G={};_r(G,{cancelOpen:()=>ap,chipRemovePress:()=>Wf,clearPress:()=>Vf,closePress:()=>jf,closeWatcher:()=>ep,decrementPress:()=>Gf,disabled:()=>lp,drag:()=>rp,escapeKey:()=>$f,focusOut:()=>Qf,imperativeAction:()=>fp,incrementPress:()=>Uf,initial:()=>up,inputBlur:()=>qf,inputChange:()=>Xf,inputClear:()=>Kf,inputPaste:()=>Zf,inputPress:()=>Jf,itemPress:()=>Df,keyboard:()=>op,linkPress:()=>Ff,listNavigation:()=>tp,missing:()=>dp,none:()=>If,outsidePress:()=>zf,pointer:()=>np,scrub:()=>sp,siblingOpen:()=>cp,swipe:()=>pp,trackPress:()=>Yf,triggerFocus:()=>Hf,triggerHover:()=>Bf,triggerPress:()=>Mf,wheel:()=>ip,windowResize:()=>mp});var If="none",Mf="trigger-press",Bf="trigger-hover",Hf="trigger-focus",zf="outside-press",Df="item-press",jf="close-press",Ff="link-press",Vf="clear-press",Wf="chip-remove-press",Yf="track-press",Uf="increment-press",Gf="decrement-press",Xf="input-change",Kf="input-clear",qf="input-blur",Zf="input-paste",Jf="input-press",Qf="focus-out",$f="escape-key",ep="close-watcher",tp="list-navigation",op="keyboard",np="pointer",rp="drag",ip="wheel",sp="scrub",ap="cancel-open",cp="sibling-open",lp="disabled",dp="missing",up="initial",fp="imperative-action",pp="swipe",mp="window-resize";function ee(e,t,o,n){let r=!1,i=!1,s=n??fe;return{reason:e,event:t??new Event("base-ui"),cancel(){r=!0},allowPropagation(){i=!0},get isCanceled(){return r},get isPropagationAllowed(){return i},trigger:o,...s}}var wn=h(D(),1);var ra=0;function gp(e,t="mui"){let[o,n]=wn.useState(e),r=e||o;return wn.useEffect(()=>{o==null&&(ra+=1,n(`${t}-${ra}`))},[o,t]),r}var ia=No.useId;function At(e,t){if(ia!==void 0){let o=ia();return e??(t?`${t}-${o}`:o)}return gp(e,t)}function sa(e){return At(e,"base-ui")}var kr=h(D(),1);var aa=h(D(),1),bp=[];function io(e){aa.useEffect(e,bp)}var vn=null,F0=globalThis.requestAnimationFrame,Cr=class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=t=>{this.isScheduled=!1;let o=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let r=0;r<o.length;r+=1)o[r]?.(t)};request(t){let o=this.nextId;return this.nextId+=1,this.callbacks.push(t),this.callbacksCount+=1,!this.isScheduled&&(requestAnimationFrame(this.tick),this.isScheduled=!0),o}cancel(t){let o=t-this.startId;o<0||o>=this.callbacks.length||(this.callbacks[o]=null,this.callbacksCount-=1)}},_n=new Cr,ut=class e{static create(){return new e}static request(t){return _n.request(t)}static cancel(t){return _n.cancel(t)}currentId=vn;request(t){this.cancel(),this.currentId=_n.request(()=>{this.currentId=vn,t()})}cancel=()=>{this.currentId!==vn&&(_n.cancel(this.currentId),this.currentId=vn)};disposeEffect=()=>this.cancel};function so(){let e=ye(ut.create).current;return io(e.disposeEffect),e}function ca(e,t=!1,o=!1){let[n,r]=kr.useState(e&&t?"idle":void 0),[i,s]=kr.useState(e);return e&&!i&&(s(!0),r("starting")),!e&&i&&n!=="ending"&&!o&&r("ending"),!e&&!i&&n==="ending"&&r(void 0),W(()=>{if(!e&&i&&n!=="ending"&&o){let a=ut.request(()=>{r("ending")});return()=>{ut.cancel(a)}}},[e,i,n,o]),W(()=>{if(!e||t)return;let a=ut.request(()=>{r(void 0)});return()=>{ut.cancel(a)}},[t,e]),W(()=>{if(!e||!t)return;e&&i&&n!=="idle"&&r("starting");let a=ut.request(()=>{r("idle")});return()=>{ut.cancel(a)}},[t,e,i,n]),{mounted:i,setMounted:s,transitionStatus:n}}var Vt=(function(e){return e.startingStyle="data-starting-style",e.endingStyle="data-ending-style",e})({}),hp={[Vt.startingStyle]:""},wp={[Vt.endingStyle]:""},la={transitionStatus(e){return e==="starting"?hp:e==="ending"?wp:null}};var uo=h(D(),1);function yn(){return typeof window<"u"}function Yt(e){return xn(e)?(e.nodeName||"").toLowerCase():"#document"}function de(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function tt(e){var t;return(t=(xn(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function xn(e){return yn()?e instanceof Node||e instanceof de(e).Node:!1}function V(e){return yn()?e instanceof Element||e instanceof de(e).Element:!1}function pe(e){return yn()?e instanceof HTMLElement||e instanceof de(e).HTMLElement:!1}function ao(e){return!yn()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof de(e).ShadowRoot}function co(e){let{overflow:t,overflowX:o,overflowY:n,display:r}=Pe(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+o)&&r!=="inline"&&r!=="contents"}function da(e){return/^(table|td|th)$/.test(Yt(e))}function Bo(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}var vp=/transform|translate|scale|rotate|perspective|filter/,_p=/paint|layout|strict|content/,Wt=e=>!!e&&e!=="none",Ar;function Rn(e){let t=V(e)?Pe(e):e;return Wt(t.transform)||Wt(t.translate)||Wt(t.scale)||Wt(t.rotate)||Wt(t.perspective)||!lo()&&(Wt(t.backdropFilter)||Wt(t.filter))||vp.test(t.willChange||"")||_p.test(t.contain||"")}function ua(e){let t=et(e);for(;pe(t)&&!ot(t);){if(Rn(t))return t;if(Bo(t))return null;t=et(t)}return null}function lo(){return Ar==null&&(Ar=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),Ar}function ot(e){return/^(html|body|#document)$/.test(Yt(e))}function Pe(e){return de(e).getComputedStyle(e)}function Ho(e){return V(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function et(e){if(Yt(e)==="html")return e;let t=e.assignedSlot||e.parentNode||ao(e)&&e.host||tt(e);return ao(t)?t.host:t}function fa(e){let t=et(e);return ot(t)?e.ownerDocument?e.ownerDocument.body:e.body:pe(t)&&co(t)?t:fa(t)}function Ot(e,t,o){var n;t===void 0&&(t=[]),o===void 0&&(o=!0);let r=fa(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),s=de(r);if(i){let a=Sn(s);return t.concat(s,s.visualViewport||[],co(r)?r:[],a&&o?Ot(a):[])}else return t.concat(r,Ot(r,[],o))}function Sn(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var En=h(D(),1),yp=En.createContext(void 0);function pa(e=!1){let t=En.useContext(yp);if(t===void 0&&!e)throw new Error(Ee(16));return t}var ma=h(D(),1);function ga(e){let{focusableWhenDisabled:t,disabled:o,composite:n=!1,tabIndex:r=0,isNativeButton:i}=e,s=n&&t!==!1,a=n&&t===!1;return{props:ma.useMemo(()=>{let l={onKeyDown(c){o&&t&&c.key!=="Tab"&&c.preventDefault()}};return n||(l.tabIndex=r,!i&&o&&(l.tabIndex=t?r:-1)),(i&&(t||s)||!i&&o)&&(l["aria-disabled"]=o),i&&(!t||a)&&(l.disabled=o),l},[n,o,t,s,a,i,r])}}function ba(e={}){let{disabled:t=!1,focusableWhenDisabled:o,tabIndex:n=0,native:r=!0,composite:i}=e,s=uo.useRef(null),a=pa(!0),d=i??a!==void 0,{props:l}=ga({focusableWhenDisabled:o,disabled:t,composite:d,tabIndex:n,isNativeButton:r}),c=uo.useCallback(()=>{let p=s.current;Or(p)&&d&&t&&l.disabled===void 0&&p.disabled&&(p.disabled=!1)},[t,l.disabled,d]);W(c,[c]);let f=uo.useCallback((p={})=>{let{onClick:u,onMouseDown:g,onKeyUp:w,onKeyDown:y,onPointerDown:_,...v}=p;return be({onClick(b){if(t){b.preventDefault();return}u?.(b)},onMouseDown(b){t||g?.(b)},onKeyDown(b){if(t||(Mo(b),y?.(b),b.baseUIHandlerPrevented))return;let x=b.target===b.currentTarget,S=b.currentTarget,E=Or(S),P=!r&&xp(S),k=x&&(r?E:!P),C=b.key==="Enter",L=b.key===" ",N=S.getAttribute("role"),O=N?.startsWith("menuitem")||N==="option"||N==="gridcell";if(x&&d&&L){if(b.defaultPrevented&&O)return;b.preventDefault(),P||r&&E?(S.click(),b.preventBaseUIHandler()):k&&(u?.(b),b.preventBaseUIHandler());return}k&&(!r&&(L||C)&&b.preventDefault(),!r&&C&&u?.(b))},onKeyUp(b){if(!t){if(Mo(b),w?.(b),b.target===b.currentTarget&&r&&d&&Or(b.currentTarget)&&b.key===" "){b.preventDefault();return}b.baseUIHandlerPrevented||b.target===b.currentTarget&&!r&&!d&&b.key===" "&&u?.(b)}},onPointerDown(b){if(t){b.preventDefault();return}_?.(b)}},r?{type:"button"}:{role:"button"},l,v)},[t,l,d,r]),m=Y(p=>{s.current=p,c()});return{getButtonProps:f,buttonRef:m}}function Or(e){return pe(e)&&e.tagName==="BUTTON"}function xp(e){return!!(e?.tagName==="A"&&e?.href)}var Nt=typeof navigator<"u",Nr=Rp(),ha=Ep(),Tn=Sp(),rh=typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter:none"),ih=Nr.platform==="MacIntel"&&Nr.maxTouchPoints>1?!0:/iP(hone|ad|od)|iOS/.test(Nr.platform),sh=Nt&&/firefox/i.test(Tn),wa=Nt&&/apple/i.test(navigator.vendor),ah=Nt&&/Edg/i.test(Tn),ch=Nt&&/android/i.test(ha)||/android/i.test(Tn),va=Nt&&ha.toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints,_a=Tn.includes("jsdom/");function Rp(){if(!Nt)return{platform:"",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??-1}}function Sp(){if(!Nt)return"";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:t,version:o})=>`${t}/${o}`).join(" "):navigator.userAgent}function Ep(){if(!Nt)return"";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??""}var Lr="data-base-ui-focusable";var Ir="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function Pn(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function ne(e,t){if(!e||!t)return!1;let o=t.getRootNode?.();if(e.contains(t))return!0;if(o&&ao(o)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function Le(e){return"composedPath"in e?e.composedPath()[0]:e.target}function Lt(e,t){if(!V(e))return!1;let o=e;if(t.hasElement(o))return!o.hasAttribute("data-trigger-disabled");for(let[,n]of t.entries())if(ne(n,o))return!n.hasAttribute("data-trigger-disabled");return!1}function Cn(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);let o=e;return o.target!=null&&t.contains(o.target)}function ya(e){return e.matches("html,body")}function xa(e){return pe(e)&&e.matches(Ir)}function Mr(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${Ir}`)!=null}function Ra(e){if(!e||_a)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function xt(e,t,o=!0){return e.filter(r=>r.parentId===t).flatMap(r=>[...!o||r.context?.open?[r]:[],...xt(e,r.id,o)])}function Sa(e){return"nativeEvent"in e}function Rt(e,t){let o=["mouse","pen"];return t||o.push("",void 0),o.includes(e)}function Ea(e){let t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}var Ca=["top","right","bottom","left"];var It=Math.min,Ie=Math.max,Mt=Math.round,Do=Math.floor,nt=e=>({x:e,y:e}),Tp={left:"right",right:"left",bottom:"top",top:"bottom"};function jo(e,t,o){return Ie(e,It(t,o))}function rt(e,t){return typeof e=="function"?e(t):e}function xe(e){return e.split("-")[0]}function it(e){return e.split("-")[1]}function An(e){return e==="x"?"y":"x"}function Fo(e){return e==="y"?"height":"width"}function Be(e){let t=e[0];return t==="t"||t==="b"?"y":"x"}function Vo(e){return An(Be(e))}function ka(e,t,o){o===void 0&&(o=!1);let n=it(e),r=Vo(e),i=Fo(r),s=r==="x"?n===(o?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=zo(s)),[s,zo(s)]}function Aa(e){let t=zo(e);return[kn(e),t,kn(t)]}function kn(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var Ta=["left","right"],Pa=["right","left"],Pp=["top","bottom"],Cp=["bottom","top"];function kp(e,t,o){switch(e){case"top":case"bottom":return o?t?Pa:Ta:t?Ta:Pa;case"left":case"right":return t?Pp:Cp;default:return[]}}function Oa(e,t,o,n){let r=it(e),i=kp(xe(e),o==="start",n);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(kn)))),i}function zo(e){let t=xe(e);return Tp[t]+e.slice(t.length)}function Ap(e){return{top:0,right:0,bottom:0,left:0,...e}}function On(e){return typeof e!="number"?Ap(e):{top:e,right:e,bottom:e,left:e}}function Ut(e){let{x:t,y:o,width:n,height:r}=e;return{width:n,height:r,top:o,left:t,right:t+n,bottom:o+r,x:t,y:o}}function we(e){return e?.ownerDocument||document}function oe(e,t,o,n){return e.addEventListener(t,o,n),()=>{e.removeEventListener(t,o,n)}}function He(e){let t=ye(Op,e).current;return t.next=e,W(t.effect),t}function Op(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}var Ma=h(D(),1);var Ia=h(Bt(),1);function La(e){return e==null?e:"current"in e?e.current:e}function fo(e,t=!1,o=!0){let n=so();return Y((r,i=null)=>{n.cancel();let s=La(e);if(s==null)return;let a=s,d=()=>{Ia.flushSync(r)};if(typeof a.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){r();return}function l(){Promise.all(a.getAnimations().map(c=>c.finished)).then(()=>{i?.aborted||d()}).catch(()=>{if(o){i?.aborted||d();return}let c=a.getAnimations();!i?.aborted&&c.length>0&&c.some(f=>f.pending||f.playState!=="finished")&&l()})}if(t){let c=Vt.startingStyle;if(!a.hasAttribute(c)){n.request(l);return}let f=new MutationObserver(()=>{a.hasAttribute(c)||(f.disconnect(),l())});f.observe(a,{attributes:!0,attributeFilter:[c]}),i?.addEventListener("abort",()=>f.disconnect(),{once:!0});return}n.request(l)})}function Nn(e){let{enabled:t=!0,open:o,ref:n,onComplete:r}=e,i=Y(r),s=fo(n,o,!1);Ma.useEffect(()=>{if(!t)return;let a=new AbortController;return s(i,a.signal),()=>{a.abort()}},[t,o,i,s])}var Ba=h(D(),1);function Ha(e){let t=Ba.useRef(!0);t.current&&(t.current=!1,e())}var Wo=0,We=class e{static create(){return new e}currentId=Wo;start(t,o){this.clear(),this.currentId=setTimeout(()=>{this.currentId=Wo,o()},t)}isStarted(){return this.currentId!==Wo}clear=()=>{this.currentId!==Wo&&(clearTimeout(this.currentId),this.currentId=Wo)};disposeEffect=()=>this.clear};function st(){let e=ye(We.create).current;return io(e.disposeEffect),e}var ze=h(D(),1);function Np(e,t){return t!=null&&!Rt(t)?0:typeof e=="function"?e():e}function Gt(e,t,o){let n=Np(e,o);return typeof n=="number"?n:n?.[t]}function Br(e){return typeof e=="function"?e():e}function Ln(e,t){return t||e==="click"||e==="mousedown"}function za(e){return e?.includes("mouse")&&e!=="mousedown"}var Da=h(Z(),1),ja=ze.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new We,currentIdRef:{current:null},currentContextRef:{current:null}});function Hr(e){let{children:t,delay:o,timeoutMs:n=0}=e,r=ze.useRef(o),i=ze.useRef(o),s=ze.useRef(null),a=ze.useRef(null),d=st();return(0,Da.jsx)(ja.Provider,{value:ze.useMemo(()=>({hasProvider:!0,delayRef:r,initialDelayRef:i,currentIdRef:s,timeoutMs:n,currentContextRef:a,timeout:d}),[n,d]),children:t})}function zr(e,t={open:!1}){let{open:o}=t,n="rootStore"in e?e.rootStore:e,r=n.useState("floatingId"),i=ze.useContext(ja),{currentIdRef:s,delayRef:a,timeoutMs:d,initialDelayRef:l,currentContextRef:c,hasProvider:f,timeout:m}=i,[p,u]=ze.useState(!1);return W(()=>{function g(){u(!1),c.current?.setIsInstantPhase(!1),s.current=null,c.current=null,a.current=l.current}if(s.current&&!o&&s.current===r){if(u(!1),d){let w=r;return m.start(d,()=>{n.select("open")||s.current&&s.current!==w||g()}),()=>{m.clear()}}g()}},[o,r,s,a,d,l,c,m,n]),W(()=>{if(!o)return;let g=c.current,w=s.current;m.clear(),c.current={onOpenChange:n.setOpen,setIsInstantPhase:u},s.current=r,a.current={open:0,close:Gt(l.current,"close")},w!==null&&w!==r?(u(!0),g?.setIsInstantPhase(!0),g?.onOpenChange(!1,ee(G.none))):(u(!1),g?.setIsInstantPhase(!1))},[o,r,n,s,a,l,c,m]),W(()=>()=>{c.current=null},[c]),ze.useMemo(()=>({hasProvider:f,delayRef:a,isInstantPhase:p}),[f,a,p])}function at(...e){return()=>{for(let t=0;t<e.length;t+=1){let o=e[t];o&&o()}}}function po(e){return`data-base-ui-${e}`}var Ye=h(D(),1),Wa=h(Bt(),1);var Fa={style:{transition:"none"}};var Lp="data-base-ui-swipe-ignore",Ip="data-swipe-ignore",Qh=`[${Lp}]`,$h=`[${Ip}]`;var Va={fallbackAxisSide:"end"};var Ya=h(Z(),1),Mp=Ye.createContext(null),Bp=()=>Ye.useContext(Mp),Hp=po("portal");function Dr(e={}){let{ref:t,container:o,componentProps:n=fe,elementProps:r}=e,i=At(),a=Bp()?.portalNode,[d,l]=Ye.useState(null),[c,f]=Ye.useState(null),m=Y(w=>{w!==null&&f(w)}),p=Ye.useRef(null);W(()=>{if(o===null){p.current&&(p.current=null,f(null),l(null));return}if(i==null)return;let w=(o&&(xn(o)?o:o.current))??a??document.body;if(w==null){p.current&&(p.current=null,f(null),l(null));return}p.current!==w&&(p.current=w,f(null),l(w))},[o,a,i]);let u=Te("div",n,{ref:[t,m],props:[{id:i,[Hp]:""},r]});return{portalNode:c,portalSubtree:d&&u?Wa.createPortal(u,d):null}}var Xt=h(D(),1);function Ua(){let e=new Map;return{emit(t,o){e.get(t)?.forEach(n=>n(o))},on(t,o){e.has(t)||e.set(t,new Set),e.get(t).add(o)},off(t,o){e.get(t)?.delete(o)}}}var zp=h(Z(),1),Dp=Xt.createContext(null),jp=Xt.createContext(null),mo=()=>Xt.useContext(Dp)?.id||null,Ht=e=>{let t=Xt.useContext(jp);return e??t};var De=h(D(),1);function Fp(e,t){let o=null,n=null,r=!1;return{contextElement:e||void 0,getBoundingClientRect(){let i=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},s=t.axis==="x"||t.axis==="both",a=t.axis==="y"||t.axis==="both",d=["mouseenter","mousemove"].includes(t.dataRef.current.openEvent?.type||"")&&t.pointerType!=="touch",l=i.width,c=i.height,f=i.x,m=i.y;return o==null&&t.x&&s&&(o=i.x-t.x),n==null&&t.y&&a&&(n=i.y-t.y),f-=o||0,m-=n||0,l=0,c=0,!r||d?(l=t.axis==="y"?i.width:0,c=t.axis==="x"?i.height:0,f=s&&t.x!=null?t.x:f,m=a&&t.y!=null?t.y:m):r&&!d&&(c=t.axis==="x"?i.height:c,l=t.axis==="y"?i.width:l),r=!0,{width:l,height:c,x:f,y:m,top:m,right:f+l,bottom:m+c,left:f}}}}function Ga(e){return e!=null&&e.clientX!=null}function jr(e,t={}){let{enabled:o=!0,axis:n="both"}=t,r="rootStore"in e?e.rootStore:e,i=r.useState("open"),s=r.useState("floatingElement"),a=r.useState("domReferenceElement"),d=r.context.dataRef,l=De.useRef(!1),c=De.useRef(null),[f,m]=De.useState(),[p,u]=De.useState([]),g=Y(b=>{r.set("positionReference",b)}),w=Y((b,x,S)=>{l.current||d.current.openEvent&&!Ga(d.current.openEvent)||r.set("positionReference",Fp(S??a,{x:b,y:x,axis:n,dataRef:d,pointerType:f}))}),y=Y(b=>{i?c.current||(w(b.clientX,b.clientY,b.currentTarget),u([])):w(b.clientX,b.clientY,b.currentTarget)}),_=Rt(f)?s:i;De.useEffect(()=>{if(!o){g(a);return}if(!_)return;function b(){c.current?.(),c.current=null}let x=de(s);function S(E){let P=Le(E);ne(s,P)?b():w(E.clientX,E.clientY)}return!d.current.openEvent||Ga(d.current.openEvent)?c.current=oe(x,"mousemove",S):g(a),b},[_,o,s,d,a,r,w,g,p]),De.useEffect(()=>()=>{r.set("positionReference",null)},[r]),De.useEffect(()=>{o&&!s&&(l.current=!1)},[o,s]),De.useEffect(()=>{!o&&i&&(l.current=!0)},[o,i]);let v=De.useMemo(()=>{function b(x){m(x.pointerType)}return{onPointerDown:b,onPointerEnter:b,onMouseMove:y,onMouseEnter:y}},[y]);return De.useMemo(()=>o?{reference:v,trigger:v}:{},[o,v])}var je=h(D(),1);var Vp={intentional:"onClick",sloppy:"onPointerDown"};function Wp(){return!1}function Yp(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Fr(e,t={}){let{enabled:o=!0,escapeKey:n=!0,outsidePress:r=!0,outsidePressEvent:i="sloppy",referencePress:s=Wp,referencePressEvent:a="sloppy",bubbles:d,externalTree:l}=t,c="rootStore"in e?e.rootStore:e,f=c.useState("open"),m=c.useState("floatingElement"),{dataRef:p}=c.context,u=Ht(l),g=Y(typeof r=="function"?r:()=>!1),w=typeof r=="function"?g:r,y=w!==!1,_=Y(()=>i),{escapeKey:v,outsidePress:b}=Yp(d),x=je.useRef(!1),S=je.useRef(!1),E=je.useRef(!1),P=je.useRef(!1),k=je.useRef(""),C=je.useRef(null),L=st(),N=st(),O=Y(()=>{N.clear(),p.current.insideReactTree=!1}),H=Y(F=>{let q=p.current.floatingContext?.nodeId;return(u?xt(u.nodesRef.current,q):[]).some(U=>U.context?.open&&!U.context.dataRef.current[F])}),R=Y(F=>Cn(F,c.select("floatingElement"))||Cn(F,c.select("domReferenceElement"))),M=Y(F=>{s()&&c.setOpen(!1,ee(G.triggerPress,F.nativeEvent))}),j=Y(F=>{if(!f||!o||!n||F.key!=="Escape"||P.current||!v&&H("__escapeKeyBubbles"))return;let q=Sa(F)?F.nativeEvent:F,Q=ee(G.escapeKey,q);c.setOpen(!1,Q),Q.isCanceled||F.preventDefault(),!v&&!Q.isPropagationAllowed&&F.stopPropagation()}),T=Y(()=>{p.current.insideReactTree=!0,N.start(0,O)}),A=Y(F=>{if(!f||!o||F.button!==0)return;let q=Le(F.nativeEvent);ne(c.select("floatingElement"),q)&&(x.current||(x.current=!0,S.current=!1))}),I=Y(F=>{!f||!o||(F.defaultPrevented||F.nativeEvent.defaultPrevented)&&x.current&&(S.current=!0)});je.useEffect(()=>{if(!f||!o)return;p.current.__escapeKeyBubbles=v,p.current.__outsidePressBubbles=b;let F=new We,q=new We;function Q(){F.clear(),P.current=!0}function U(){F.start(lo()?5:0,()=>{P.current=!1})}function le(){E.current=!0,q.start(0,()=>{E.current=!1})}function he(){x.current=!1,S.current=!1}function se(){let B=k.current,z=B==="pen"||!B?"mouse":B,Re=_(),Se=typeof Re=="function"?Re():Re;return typeof Se=="string"?Se:Se[z]}function Me(B){let z=se();return z==="intentional"&&B.type!=="click"||z==="sloppy"&&B.type==="click"}function Ae(B){let z=p.current.floatingContext?.nodeId,Re=u&&xt(u.nodesRef.current,z).some(Se=>Cn(B,Se.context?.elements.floating));return R(B)||Re}function K(B){if(Me(B)){B.type!=="click"&&!R(B)&&(q.clear(),E.current=!1),O();return}if(p.current.insideReactTree){O();return}let z=Le(B),Re=`[${po("inert")}]`,Se=V(z)?z.getRootNode():null,Pt=Array.from((ao(Se)?Se:we(c.select("floatingElement"))).querySelectorAll(Re)),to=c.context.triggerElements;if(z&&(to.hasElement(z)||to.hasMatchingElement(Oe=>ne(Oe,z))))return;let Ct=V(z)?z:null;for(;Ct&&!ot(Ct);){let Oe=et(Ct);if(ot(Oe)||!V(Oe))break;Ct=Oe}if(!(Pt.length&&V(z)&&!ya(z)&&!ne(z,c.select("floatingElement"))&&Pt.every(Oe=>!ne(Ct,Oe)))){if(pe(z)&&!("touches"in B)){let Oe=ot(z),vt=Pe(z),Ao=/auto|scroll/,un=Oe||Ao.test(vt.overflowX),fn=Oe||Ao.test(vt.overflowY),pn=un&&z.clientWidth>0&&z.scrollWidth>z.clientWidth,mn=fn&&z.clientHeight>0&&z.scrollHeight>z.clientHeight,re=vt.direction==="rtl",Ne=mn&&(re?B.offsetX<=z.offsetWidth-z.clientWidth:B.offsetX>z.clientWidth),Xe=pn&&B.offsetY>z.clientHeight;if(Ne||Xe)return}if(!Ae(B)){if(se()==="intentional"&&E.current){q.clear(),E.current=!1;return}typeof w=="function"&&!w(B)||H("__outsidePressBubbles")||(c.setOpen(!1,ee(G.outsidePress,B)),O())}}}function ue(B){se()!=="sloppy"||B.pointerType==="touch"||!c.select("open")||!o||R(B)||K(B)}function ge(B){if(se()!=="sloppy"||!c.select("open")||!o||R(B))return;let z=B.touches[0];z&&(C.current={startTime:Date.now(),startX:z.clientX,startY:z.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},L.start(1e3,()=>{C.current&&(C.current.dismissOnTouchEnd=!1,C.current.dismissOnMouseDown=!1)}))}function lt(B,z){let Re=Le(B);if(!Re)return;let Se=oe(Re,B.type,()=>{z(B),Se()})}function ht(B){k.current="touch",lt(B,ge)}function wt(B){L.clear(),B.type==="pointerdown"&&(k.current=B.pointerType),!(B.type==="mousedown"&&C.current&&!C.current.dismissOnMouseDown)&<(B,z=>{z.type==="pointerdown"?ue(z):K(z)})}function Ve(B){if(!x.current)return;let z=S.current;if(he(),se()==="intentional"){if(B.type==="pointercancel"){z&&le();return}if(!Ae(B)){if(z){le();return}typeof w=="function"&&!w(B)||(q.clear(),E.current=!0,O())}}}function dt(B){if(se()!=="sloppy"||!C.current||R(B))return;let z=B.touches[0];if(!z)return;let Re=Math.abs(z.clientX-C.current.startX),Se=Math.abs(z.clientY-C.current.startY),Pt=Math.sqrt(Re*Re+Se*Se);Pt>5&&(C.current.dismissOnTouchEnd=!0),Pt>10&&(K(B),L.clear(),C.current=null)}function cn(B){lt(B,dt)}function ln(B){se()!=="sloppy"||!C.current||R(B)||(C.current.dismissOnTouchEnd&&K(B),L.clear(),C.current=null)}function Tt(B){lt(B,ln)}let ve=we(m),dn=at(n&&at(oe(ve,"keydown",j),oe(ve,"compositionstart",Q),oe(ve,"compositionend",U)),y&&at(oe(ve,"click",wt,!0),oe(ve,"pointerdown",wt,!0),oe(ve,"pointerup",Ve,!0),oe(ve,"pointercancel",Ve,!0),oe(ve,"mousedown",wt,!0),oe(ve,"mouseup",Ve,!0),oe(ve,"touchstart",ht,!0),oe(ve,"touchmove",cn,!0),oe(ve,"touchend",Tt,!0)));return()=>{dn(),F.clear(),q.clear(),he(),E.current=!1}},[p,m,n,y,w,f,o,v,b,j,O,_,H,R,u,c,L]),je.useEffect(O,[w,O]);let X=je.useMemo(()=>({onKeyDown:j,[Vp[a]]:M,...a!=="intentional"&&{onClick:M}}),[j,M,a]),te=je.useMemo(()=>({onKeyDown:j,onPointerDown:I,onMouseDown:I,onClickCapture:T,onMouseDownCapture(F){T(),A(F)},onPointerDownCapture(F){T(),A(F)},onMouseUpCapture:T,onTouchEndCapture:T,onTouchMoveCapture:T}),[j,T,A,I]);return je.useMemo(()=>o?{reference:X,floating:te,trigger:X}:{},[o,X,te])}var Ce=h(D(),1);function Xa(e,t,o){let{reference:n,floating:r}=e,i=Be(t),s=Vo(t),a=Fo(s),d=xe(t),l=i==="y",c=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2,m=n[a]/2-r[a]/2,p;switch(d){case"top":p={x:c,y:n.y-r.height};break;case"bottom":p={x:c,y:n.y+n.height};break;case"right":p={x:n.x+n.width,y:f};break;case"left":p={x:n.x-r.width,y:f};break;default:p={x:n.x,y:n.y}}switch(it(t)){case"start":p[s]-=m*(o&&l?-1:1);break;case"end":p[s]+=m*(o&&l?-1:1);break}return p}async function Za(e,t){var o;t===void 0&&(t={});let{x:n,y:r,platform:i,rects:s,elements:a,strategy:d}=e,{boundary:l="clippingAncestors",rootBoundary:c="viewport",elementContext:f="floating",altBoundary:m=!1,padding:p=0}=rt(t,e),u=On(p),w=a[m?f==="floating"?"reference":"floating":f],y=Ut(await i.getClippingRect({element:(o=await(i.isElement==null?void 0:i.isElement(w)))==null||o?w:w.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:l,rootBoundary:c,strategy:d})),_=f==="floating"?{x:n,y:r,width:s.floating.width,height:s.floating.height}:s.reference,v=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),b=await(i.isElement==null?void 0:i.isElement(v))?await(i.getScale==null?void 0:i.getScale(v))||{x:1,y:1}:{x:1,y:1},x=Ut(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:_,offsetParent:v,strategy:d}):_);return{top:(y.top-x.top+u.top)/b.y,bottom:(x.bottom-y.bottom+u.bottom)/b.y,left:(y.left-x.left+u.left)/b.x,right:(x.right-y.right+u.right)/b.x}}var Up=50,Ja=async(e,t,o)=>{let{placement:n="bottom",strategy:r="absolute",middleware:i=[],platform:s}=o,a=s.detectOverflow?s:{...s,detectOverflow:Za},d=await(s.isRTL==null?void 0:s.isRTL(t)),l=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:c,y:f}=Xa(l,n,d),m=n,p=0,u={};for(let g=0;g<i.length;g++){let w=i[g];if(!w)continue;let{name:y,fn:_}=w,{x:v,y:b,data:x,reset:S}=await _({x:c,y:f,initialPlacement:n,placement:m,strategy:r,middlewareData:u,rects:l,platform:a,elements:{reference:e,floating:t}});c=v??c,f=b??f,u[y]={...u[y],...x},S&&p<Up&&(p++,typeof S=="object"&&(S.placement&&(m=S.placement),S.rects&&(l=S.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:r}):S.rects),{x:c,y:f}=Xa(l,m,d)),g=-1)}return{x:c,y:f,placement:m,strategy:r,middlewareData:u}};var Qa=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var o,n;let{placement:r,middlewareData:i,rects:s,initialPlacement:a,platform:d,elements:l}=t,{mainAxis:c=!0,crossAxis:f=!0,fallbackPlacements:m,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:u="none",flipAlignment:g=!0,...w}=rt(e,t);if((o=i.arrow)!=null&&o.alignmentOffset)return{};let y=xe(r),_=Be(a),v=xe(a)===a,b=await(d.isRTL==null?void 0:d.isRTL(l.floating)),x=m||(v||!g?[zo(a)]:Aa(a)),S=u!=="none";!m&&S&&x.push(...Oa(a,g,u,b));let E=[a,...x],P=await d.detectOverflow(t,w),k=[],C=((n=i.flip)==null?void 0:n.overflows)||[];if(c&&k.push(P[y]),f){let H=ka(r,s,b);k.push(P[H[0]],P[H[1]])}if(C=[...C,{placement:r,overflows:k}],!k.every(H=>H<=0)){var L,N;let H=(((L=i.flip)==null?void 0:L.index)||0)+1,R=E[H];if(R&&(!(f==="alignment"?_!==Be(R):!1)||C.every(T=>Be(T.placement)===_?T.overflows[0]>0:!0)))return{data:{index:H,overflows:C},reset:{placement:R}};let M=(N=C.filter(j=>j.overflows[0]<=0).sort((j,T)=>j.overflows[1]-T.overflows[1])[0])==null?void 0:N.placement;if(!M)switch(p){case"bestFit":{var O;let j=(O=C.filter(T=>{if(S){let A=Be(T.placement);return A===_||A==="y"}return!0}).map(T=>[T.placement,T.overflows.filter(A=>A>0).reduce((A,I)=>A+I,0)]).sort((T,A)=>T[1]-A[1])[0])==null?void 0:O[0];j&&(M=j);break}case"initialPlacement":M=a;break}if(r!==M)return{reset:{placement:M}}}return{}}}};function Ka(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function qa(e){return Ca.some(t=>e[t]>=0)}var $a=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){let{rects:o,platform:n}=t,{strategy:r="referenceHidden",...i}=rt(e,t);switch(r){case"referenceHidden":{let s=await n.detectOverflow(t,{...i,elementContext:"reference"}),a=Ka(s,o.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:qa(a)}}}case"escaped":{let s=await n.detectOverflow(t,{...i,altBoundary:!0}),a=Ka(s,o.floating);return{data:{escapedOffsets:a,escaped:qa(a)}}}default:return{}}}}};var ec=new Set(["left","top"]);async function Gp(e,t){let{placement:o,platform:n,elements:r}=e,i=await(n.isRTL==null?void 0:n.isRTL(r.floating)),s=xe(o),a=it(o),d=Be(o)==="y",l=ec.has(s)?-1:1,c=i&&d?-1:1,f=rt(t,e),{mainAxis:m,crossAxis:p,alignmentAxis:u}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof u=="number"&&(p=a==="end"?u*-1:u),d?{x:p*c,y:m*l}:{x:m*l,y:p*c}}var tc=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var o,n;let{x:r,y:i,placement:s,middlewareData:a}=t,d=await Gp(t,e);return s===((o=a.offset)==null?void 0:o.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:r+d.x,y:i+d.y,data:{...d,placement:s}}}}},oc=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:o,y:n,placement:r,platform:i}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:d={fn:y=>{let{x:_,y:v}=y;return{x:_,y:v}}},...l}=rt(e,t),c={x:o,y:n},f=await i.detectOverflow(t,l),m=Be(xe(r)),p=An(m),u=c[p],g=c[m];if(s){let y=p==="y"?"top":"left",_=p==="y"?"bottom":"right",v=u+f[y],b=u-f[_];u=jo(v,u,b)}if(a){let y=m==="y"?"top":"left",_=m==="y"?"bottom":"right",v=g+f[y],b=g-f[_];g=jo(v,g,b)}let w=d.fn({...t,[p]:u,[m]:g});return{...w,data:{x:w.x-o,y:w.y-n,enabled:{[p]:s,[m]:a}}}}}},nc=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:o,y:n,placement:r,rects:i,middlewareData:s}=t,{offset:a=0,mainAxis:d=!0,crossAxis:l=!0}=rt(e,t),c={x:o,y:n},f=Be(r),m=An(f),p=c[m],u=c[f],g=rt(a,t),w=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(d){let v=m==="y"?"height":"width",b=i.reference[m]-i.floating[v]+w.mainAxis,x=i.reference[m]+i.reference[v]-w.mainAxis;p<b?p=b:p>x&&(p=x)}if(l){var y,_;let v=m==="y"?"width":"height",b=ec.has(xe(r)),x=i.reference[f]-i.floating[v]+(b&&((y=s.offset)==null?void 0:y[f])||0)+(b?0:w.crossAxis),S=i.reference[f]+i.reference[v]+(b?0:((_=s.offset)==null?void 0:_[f])||0)-(b?w.crossAxis:0);u<x?u=x:u>S&&(u=S)}return{[m]:p,[f]:u}}}},rc=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var o,n;let{placement:r,rects:i,platform:s,elements:a}=t,{apply:d=()=>{},...l}=rt(e,t),c=await s.detectOverflow(t,l),f=xe(r),m=it(r),p=Be(r)==="y",{width:u,height:g}=i.floating,w,y;f==="top"||f==="bottom"?(w=f,y=m===(await(s.isRTL==null?void 0:s.isRTL(a.floating))?"start":"end")?"left":"right"):(y=f,w=m==="end"?"top":"bottom");let _=g-c.top-c.bottom,v=u-c.left-c.right,b=It(g-c[w],_),x=It(u-c[y],v),S=!t.middlewareData.shift,E=b,P=x;if((o=t.middlewareData.shift)!=null&&o.enabled.x&&(P=v),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(E=_),S&&!m){let C=Ie(c.left,0),L=Ie(c.right,0),N=Ie(c.top,0),O=Ie(c.bottom,0);p?P=u-2*(C!==0||L!==0?C+L:Ie(c.left,c.right)):E=g-2*(N!==0||O!==0?N+O:Ie(c.top,c.bottom))}await d({...t,availableWidth:P,availableHeight:E});let k=await s.getDimensions(a.floating);return u!==k.width||g!==k.height?{reset:{rects:!0}}:{}}}};function cc(e){let t=Pe(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=pe(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n,a=Mt(o)!==i||Mt(n)!==s;return a&&(o=i,n=s),{width:o,height:n,$:a}}function Wr(e){return V(e)?e:e.contextElement}function go(e){let t=Wr(e);if(!pe(t))return nt(1);let o=t.getBoundingClientRect(),{width:n,height:r,$:i}=cc(t),s=(i?Mt(o.width):o.width)/n,a=(i?Mt(o.height):o.height)/r;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var Xp=nt(0);function lc(e){let t=de(e);return!lo()||!t.visualViewport?Xp:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Kp(e,t,o){return t===void 0&&(t=!1),!o||t&&o!==de(e)?!1:t}function Kt(e,t,o,n){t===void 0&&(t=!1),o===void 0&&(o=!1);let r=e.getBoundingClientRect(),i=Wr(e),s=nt(1);t&&(n?V(n)&&(s=go(n)):s=go(e));let a=Kp(i,o,n)?lc(i):nt(0),d=(r.left+a.x)/s.x,l=(r.top+a.y)/s.y,c=r.width/s.x,f=r.height/s.y;if(i){let m=de(i),p=n&&V(n)?de(n):n,u=m,g=Sn(u);for(;g&&n&&p!==u;){let w=go(g),y=g.getBoundingClientRect(),_=Pe(g),v=y.left+(g.clientLeft+parseFloat(_.paddingLeft))*w.x,b=y.top+(g.clientTop+parseFloat(_.paddingTop))*w.y;d*=w.x,l*=w.y,c*=w.x,f*=w.y,d+=v,l+=b,u=de(g),g=Sn(u)}}return Ut({width:c,height:f,x:d,y:l})}function In(e,t){let o=Ho(e).scrollLeft;return t?t.left+o:Kt(tt(e)).left+o}function dc(e,t){let o=e.getBoundingClientRect(),n=o.left+t.scrollLeft-In(e,o),r=o.top+t.scrollTop;return{x:n,y:r}}function qp(e){let{elements:t,rect:o,offsetParent:n,strategy:r}=e,i=r==="fixed",s=tt(n),a=t?Bo(t.floating):!1;if(n===s||a&&i)return o;let d={scrollLeft:0,scrollTop:0},l=nt(1),c=nt(0),f=pe(n);if((f||!f&&!i)&&((Yt(n)!=="body"||co(s))&&(d=Ho(n)),f)){let p=Kt(n);l=go(n),c.x=p.x+n.clientLeft,c.y=p.y+n.clientTop}let m=s&&!f&&!i?dc(s,d):nt(0);return{width:o.width*l.x,height:o.height*l.y,x:o.x*l.x-d.scrollLeft*l.x+c.x+m.x,y:o.y*l.y-d.scrollTop*l.y+c.y+m.y}}function Zp(e){return Array.from(e.getClientRects())}function Jp(e){let t=tt(e),o=Ho(e),n=e.ownerDocument.body,r=Ie(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),i=Ie(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight),s=-o.scrollLeft+In(e),a=-o.scrollTop;return Pe(n).direction==="rtl"&&(s+=Ie(t.clientWidth,n.clientWidth)-r),{width:r,height:i,x:s,y:a}}var ic=25;function Qp(e,t){let o=de(e),n=tt(e),r=o.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,d=0;if(r){i=r.width,s=r.height;let c=lo();(!c||c&&t==="fixed")&&(a=r.offsetLeft,d=r.offsetTop)}let l=In(n);if(l<=0){let c=n.ownerDocument,f=c.body,m=getComputedStyle(f),p=c.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,u=Math.abs(n.clientWidth-f.clientWidth-p);u<=ic&&(i-=u)}else l<=ic&&(i+=l);return{width:i,height:s,x:a,y:d}}function $p(e,t){let o=Kt(e,!0,t==="fixed"),n=o.top+e.clientTop,r=o.left+e.clientLeft,i=pe(e)?go(e):nt(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,d=r*i.x,l=n*i.y;return{width:s,height:a,x:d,y:l}}function sc(e,t,o){let n;if(t==="viewport")n=Qp(e,o);else if(t==="document")n=Jp(tt(e));else if(V(t))n=$p(t,o);else{let r=lc(e);n={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return Ut(n)}function uc(e,t){let o=et(e);return o===t||!V(o)||ot(o)?!1:Pe(o).position==="fixed"||uc(o,t)}function em(e,t){let o=t.get(e);if(o)return o;let n=Ot(e,[],!1).filter(a=>V(a)&&Yt(a)!=="body"),r=null,i=Pe(e).position==="fixed",s=i?et(e):e;for(;V(s)&&!ot(s);){let a=Pe(s),d=Rn(s);!d&&a.position==="fixed"&&(r=null),(i?!d&&!r:!d&&a.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||co(s)&&!d&&uc(e,s))?n=n.filter(c=>c!==s):r=a,s=et(s)}return t.set(e,n),n}function tm(e){let{element:t,boundary:o,rootBoundary:n,strategy:r}=e,s=[...o==="clippingAncestors"?Bo(t)?[]:em(t,this._c):[].concat(o),n],a=sc(t,s[0],r),d=a.top,l=a.right,c=a.bottom,f=a.left;for(let m=1;m<s.length;m++){let p=sc(t,s[m],r);d=Ie(p.top,d),l=It(p.right,l),c=It(p.bottom,c),f=Ie(p.left,f)}return{width:l-f,height:c-d,x:f,y:d}}function om(e){let{width:t,height:o}=cc(e);return{width:t,height:o}}function nm(e,t,o){let n=pe(t),r=tt(t),i=o==="fixed",s=Kt(e,!0,i,t),a={scrollLeft:0,scrollTop:0},d=nt(0);function l(){d.x=In(r)}if(n||!n&&!i)if((Yt(t)!=="body"||co(r))&&(a=Ho(t)),n){let p=Kt(t,!0,i,t);d.x=p.x+t.clientLeft,d.y=p.y+t.clientTop}else r&&l();i&&!n&&r&&l();let c=r&&!n&&!i?dc(r,a):nt(0),f=s.left+a.scrollLeft-d.x-c.x,m=s.top+a.scrollTop-d.y-c.y;return{x:f,y:m,width:s.width,height:s.height}}function Vr(e){return Pe(e).position==="static"}function ac(e,t){if(!pe(e)||Pe(e).position==="fixed")return null;if(t)return t(e);let o=e.offsetParent;return tt(e)===o&&(o=o.ownerDocument.body),o}function fc(e,t){let o=de(e);if(Bo(e))return o;if(!pe(e)){let r=et(e);for(;r&&!ot(r);){if(V(r)&&!Vr(r))return r;r=et(r)}return o}let n=ac(e,t);for(;n&&da(n)&&Vr(n);)n=ac(n,t);return n&&ot(n)&&Vr(n)&&!Rn(n)?o:n||ua(e)||o}var rm=async function(e){let t=this.getOffsetParent||fc,o=this.getDimensions,n=await o(e.floating);return{reference:nm(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function im(e){return Pe(e).direction==="rtl"}var Yr={convertOffsetParentRelativeRectToViewportRelativeRect:qp,getDocumentElement:tt,getClippingRect:tm,getOffsetParent:fc,getElementRects:rm,getClientRects:Zp,getDimensions:om,getScale:go,isElement:V,isRTL:im};function pc(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function sm(e,t){let o=null,n,r=tt(e);function i(){var a;clearTimeout(n),(a=o)==null||a.disconnect(),o=null}function s(a,d){a===void 0&&(a=!1),d===void 0&&(d=1),i();let l=e.getBoundingClientRect(),{left:c,top:f,width:m,height:p}=l;if(a||t(),!m||!p)return;let u=Do(f),g=Do(r.clientWidth-(c+m)),w=Do(r.clientHeight-(f+p)),y=Do(c),v={rootMargin:-u+"px "+-g+"px "+-w+"px "+-y+"px",threshold:Ie(0,It(1,d))||1},b=!0;function x(S){let E=S[0].intersectionRatio;if(E!==d){if(!b)return s();E?s(!1,E):n=setTimeout(()=>{s(!1,1e-7)},1e3)}E===1&&!pc(l,e.getBoundingClientRect())&&s(),b=!1}try{o=new IntersectionObserver(x,{...v,root:r.ownerDocument})}catch{o=new IntersectionObserver(x,v)}o.observe(e)}return s(!0),i}function Yo(e,t,o,n){n===void 0&&(n={});let{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:d=!1}=n,l=Wr(e),c=r||i?[...l?Ot(l):[],...t?Ot(t):[]]:[];c.forEach(y=>{r&&y.addEventListener("scroll",o,{passive:!0}),i&&y.addEventListener("resize",o)});let f=l&&a?sm(l,o):null,m=-1,p=null;s&&(p=new ResizeObserver(y=>{let[_]=y;_&&_.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var v;(v=p)==null||v.observe(t)})),o()}),l&&!d&&p.observe(l),t&&p.observe(t));let u,g=d?Kt(e):null;d&&w();function w(){let y=Kt(e);g&&!pc(g,y)&&o(),g=y,u=requestAnimationFrame(w)}return o(),()=>{var y;c.forEach(_=>{r&&_.removeEventListener("scroll",o),i&&_.removeEventListener("resize",o)}),f?.(),(y=p)==null||y.disconnect(),p=null,d&&cancelAnimationFrame(u)}}var mc=tc;var gc=oc,bc=Qa,hc=rc,wc=$a;var vc=nc,Mn=(e,t,o)=>{let n=new Map,r={platform:Yr,...o},i={...r.platform,_c:n};return Ja(e,t,{...r,platform:i})};var me=h(D(),1),yc=h(D(),1),xc=h(Bt(),1),cm=typeof document<"u",lm=function(){},Bn=cm?yc.useLayoutEffect:lm;function Hn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let o,n,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(o=e.length,o!==t.length)return!1;for(n=o;n--!==0;)if(!Hn(e[n],t[n]))return!1;return!0}if(r=Object.keys(e),o=r.length,o!==Object.keys(t).length)return!1;for(n=o;n--!==0;)if(!{}.hasOwnProperty.call(t,r[n]))return!1;for(n=o;n--!==0;){let i=r[n];if(!(i==="_owner"&&e.$$typeof)&&!Hn(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Rc(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function _c(e,t){let o=Rc(e);return Math.round(t*o)/o}function Ur(e){let t=me.useRef(e);return Bn(()=>{t.current=e}),t}function Sc(e){e===void 0&&(e={});let{placement:t="bottom",strategy:o="absolute",middleware:n=[],platform:r,elements:{reference:i,floating:s}={},transform:a=!0,whileElementsMounted:d,open:l}=e,[c,f]=me.useState({x:0,y:0,strategy:o,placement:t,middlewareData:{},isPositioned:!1}),[m,p]=me.useState(n);Hn(m,n)||p(n);let[u,g]=me.useState(null),[w,y]=me.useState(null),_=me.useCallback(T=>{T!==S.current&&(S.current=T,g(T))},[]),v=me.useCallback(T=>{T!==E.current&&(E.current=T,y(T))},[]),b=i||u,x=s||w,S=me.useRef(null),E=me.useRef(null),P=me.useRef(c),k=d!=null,C=Ur(d),L=Ur(r),N=Ur(l),O=me.useCallback(()=>{if(!S.current||!E.current)return;let T={placement:t,strategy:o,middleware:m};L.current&&(T.platform=L.current),Mn(S.current,E.current,T).then(A=>{let I={...A,isPositioned:N.current!==!1};H.current&&!Hn(P.current,I)&&(P.current=I,xc.flushSync(()=>{f(I)}))})},[m,t,o,L,N]);Bn(()=>{l===!1&&P.current.isPositioned&&(P.current.isPositioned=!1,f(T=>({...T,isPositioned:!1})))},[l]);let H=me.useRef(!1);Bn(()=>(H.current=!0,()=>{H.current=!1}),[]),Bn(()=>{if(b&&(S.current=b),x&&(E.current=x),b&&x){if(C.current)return C.current(b,x,O);O()}},[b,x,O,C,k]);let R=me.useMemo(()=>({reference:S,floating:E,setReference:_,setFloating:v}),[_,v]),M=me.useMemo(()=>({reference:b,floating:x}),[b,x]),j=me.useMemo(()=>{let T={position:o,left:0,top:0};if(!M.floating)return T;let A=_c(M.floating,c.x),I=_c(M.floating,c.y);return a?{...T,transform:"translate("+A+"px, "+I+"px)",...Rc(M.floating)>=1.5&&{willChange:"transform"}}:{position:o,left:A,top:I}},[o,a,M.floating,c.x,c.y]);return me.useMemo(()=>({...c,update:O,refs:R,elements:M,floatingStyles:j}),[c,O,R,M,j])}var Gr=(e,t)=>{let o=mc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Xr=(e,t)=>{let o=gc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Kr=(e,t)=>({fn:vc(e).fn,options:[e,t]}),qr=(e,t)=>{let o=bc(e);return{name:o.name,fn:o.fn,options:[e,t]}},Zr=(e,t)=>{let o=hc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var Jr=(e,t)=>{let o=wc(e);return{name:o.name,fn:o.fn,options:[e,t]}};var wo=h(D(),1);var zc=h(D(),1);var J=(e,t,o,n,r,i,...s)=>{if(s.length>0)throw new Error(Ee(1));let a;if(e&&t&&o&&n&&r&&i)a=(d,l,c,f)=>{let m=e(d,l,c,f),p=t(d,l,c,f),u=o(d,l,c,f),g=n(d,l,c,f),w=r(d,l,c,f);return i(m,p,u,g,w,l,c,f)};else if(e&&t&&o&&n&&r)a=(d,l,c,f)=>{let m=e(d,l,c,f),p=t(d,l,c,f),u=o(d,l,c,f),g=n(d,l,c,f);return r(m,p,u,g,l,c,f)};else if(e&&t&&o&&n)a=(d,l,c,f)=>{let m=e(d,l,c,f),p=t(d,l,c,f),u=o(d,l,c,f);return n(m,p,u,l,c,f)};else if(e&&t&&o)a=(d,l,c,f)=>{let m=e(d,l,c,f),p=t(d,l,c,f);return o(m,p,l,c,f)};else if(e&&t)a=(d,l,c,f)=>{let m=e(d,l,c,f);return t(m,l,c,f)};else if(e)a=e;else throw new Error("Missing arguments");return a};var Bc=h(D(),1),ni=h($r(),1),Hc=h(Oc(),1);var Nc=h(D(),1);var ei=[],ti;function Lc(){return ti}function Ic(e){ei.push(e)}function oi(e){let t=(o,n)=>{let r=ye(Pm).current,i;try{ti=r;for(let s of ei)s.before(r);i=e(o,n);for(let s of ei)s.after(r);r.didInitialize=!0}finally{ti=void 0}return i};return t.displayName=e.displayName||e.name,t}function Mc(e){return Nc.forwardRef(oi(e))}function Pm(){return{didInitialize:!1}}var Cm=ro(19),km=Cm?Om:Nm;function Dn(e,t,o,n,r){return km(e,t,o,n,r)}function Am(e,t,o,n,r){let i=Bc.useCallback(()=>t(e.getSnapshot(),o,n,r),[e,t,o,n,r]);return(0,ni.useSyncExternalStore)(e.subscribe,i,i)}Ic({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let o=0;o<e.syncHooks.length;o+=1){let n=e.syncHooks[o],r=n.selector(n.store.state,n.a1,n.a2,n.a3);(n.didChange||!Object.is(n.value,r))&&(t=!0,n.value=r,n.didChange=!1)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let o=new Set;for(let r of e.syncHooks)o.add(r.store);let n=[];for(let r of o)n.push(r.subscribe(t));return()=>{for(let r of n)r()}}),(0,ni.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function Om(e,t,o,n,r){let i=Lc();if(!i)return Am(e,t,o,n,r);let s=i.syncIndex;i.syncIndex+=1;let a;return i.didInitialize?(a=i.syncHooks[s],(a.store!==e||a.selector!==t||!Object.is(a.a1,o)||!Object.is(a.a2,n)||!Object.is(a.a3,r))&&(a.store!==e&&(i.didChangeStore=!0),a.store=e,a.selector=t,a.a1=o,a.a2=n,a.a3=r,a.didChange=!0)):(a={store:e,selector:t,a1:o,a2:n,a3:r,value:t(e.getSnapshot(),o,n,r),didChange:!1},i.syncHooks.push(a)),a.value}function Nm(e,t,o,n,r){return(0,Hc.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,i=>t(i,o,n,r))}var jn=class{constructor(t){this.state=t,this.listeners=new Set,this.updateTick=0}subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});getSnapshot=()=>this.state;setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;let o=this.updateTick;for(let n of this.listeners){if(o!==this.updateTick)return;n(t)}}update(t){for(let o in t)if(!Object.is(this.state[o],t[o])){this.setState({...this.state,...t});return}}set(t,o){Object.is(this.state[t],o)||this.setState({...this.state,[t]:o})}notifyAll(){let t={...this.state};this.setState(t)}use(t,o,n,r){return Dn(this,t,o,n,r)}};var qt=h(D(),1);var ho=class extends jn{constructor(t,o={},n){super(t),this.context=o,this.selectors=n}useSyncedValue(t,o){qt.useDebugValue(t);let n=this;W(()=>{n.state[t]!==o&&n.set(t,o)},[n,t,o])}useSyncedValueWithCleanup(t,o){let n=this;W(()=>(n.state[t]!==o&&n.set(t,o),()=>{n.set(t,void 0)}),[n,t,o])}useSyncedValues(t){let o=this,n=Object.values(t);W(()=>{o.update(t)},[o,...n])}useControlledProp(t,o){qt.useDebugValue(t);let n=this,r=o!==void 0;W(()=>{r&&!Object.is(n.state[t],o)&&n.setState({...n.state,[t]:o})},[n,t,o,r])}select(t,o,n,r){let i=this.selectors[t];return i(this.state,o,n,r)}useState(t,o,n,r){return qt.useDebugValue(t),Dn(this,this.selectors[t],o,n,r)}useContextCallback(t,o){qt.useDebugValue(t);let n=Y(o??yt);this.context[t]=n}useStateSetter(t){let o=qt.useRef(void 0);return o.current===void 0&&(o.current=n=>{this.set(t,n)}),o.current}observe(t,o){let n;typeof t=="function"?n=t:n=this.selectors[t];let r=n(this.state);return o(r,r,this),this.subscribe(i=>{let s=n(i);if(!Object.is(r,s)){let a=r;r=s,o(s,a,this)}})}};var Lm={open:J(e=>e.open),transitionStatus:J(e=>e.transitionStatus),domReferenceElement:J(e=>e.domReferenceElement),referenceElement:J(e=>e.positionReference??e.referenceElement),floatingElement:J(e=>e.floatingElement),floatingId:J(e=>e.floatingId)},ft=class extends ho{constructor(t){let{syncOnly:o,nested:n,onOpenChange:r,triggerElements:i,...s}=t;super({...s,positionReference:s.referenceElement,domReferenceElement:s.referenceElement},{onOpenChange:r,dataRef:{current:{}},events:Ua(),nested:n,triggerElements:i},Lm),this.syncOnly=o}syncOpenEvent=(t,o)=>{(!t||!this.state.open||o!=null&&Ea(o))&&(this.context.dataRef.current.openEvent=t?o:void 0)};dispatchOpenChange=(t,o)=>{this.syncOpenEvent(t,o.event);let n={open:t,reason:o.reason,nativeEvent:o.event,nested:this.context.nested,triggerElement:o.trigger};this.context.events.emit("openchange",n)};setOpen=(t,o)=>{if(this.syncOnly){this.context.onOpenChange?.(t,o);return}this.dispatchOpenChange(t,o),this.context.onOpenChange?.(t,o)}};function Dc(e){let{popupStore:t,treatPopupAsFloatingElement:o=!1,floatingRootContext:n,floatingId:r,nested:i,onOpenChange:s}=e,a=t.useState("open"),d=t.useState("activeTriggerElement"),l=t.useState(o?"popupElement":"positionerElement"),c=t.context.triggerElements,f=s,m=zc.useRef(null);n===void 0&&m.current===null&&(m.current=new ft({open:a,transitionStatus:void 0,referenceElement:d,floatingElement:l,triggerElements:c,onOpenChange:f,floatingId:r,syncOnly:!0,nested:i}));let p=n??m.current;return t.useSyncedValue("floatingId",r),W(()=>{let u={open:a,floatingId:r,referenceElement:d,floatingElement:l};V(d)&&(u.domReferenceElement=d),p.state.positionReference===p.state.referenceElement&&(u.positionReference=d),p.update(u)},[a,r,d,l,p]),p.context.onOpenChange=f,p.context.nested=i,p}var jc={tabIndex:-1,[Lr]:""};function Fc(e,t,o=!1){let n=At(),r=mo()!=null,i=wo.useRef(null);e===void 0&&i.current===null&&(i.current=t(n,r));let s=e??i.current;return Dc({popupStore:s,treatPopupAsFloatingElement:o,floatingRootContext:s.state.floatingRootContext,floatingId:n,nested:r,onOpenChange:s.setOpen}),{store:s,internalStore:i.current}}function Im(e,t){let o=wo.useRef(null),n=wo.useRef(null);return wo.useCallback(r=>{if(e===void 0)return;let i=!1;if(o.current!==null){let s=o.current,a=n.current,d=t.context.triggerElements.getById(s);a&&d===a&&(t.context.triggerElements.delete(s),i=!0),o.current=null,n.current=null}if(r!==null&&(o.current=e,n.current=r,t.context.triggerElements.add(e,r),i=!0),i){let s=t.context.triggerElements.size;t.select("open")&&t.state.triggerCount!==s&&t.set("triggerCount",s)}},[t,e])}function Vc(e,t,o){let n=o?.id??null;(n||t)&&(e.activeTriggerId=n,e.activeTriggerElement=o??null)}function Wc(e,t,o,n){let r=o.useState("isMountedByTrigger",e),i=Im(e,o),s=Y(a=>{if(i(a),!a)return;let d=o.select("open"),l=o.select("activeTriggerId");if(l===e){o.update({activeTriggerElement:a,...d?n:null});return}l==null&&d&&o.update({activeTriggerId:e,activeTriggerElement:a,...n})});return W(()=>{r&&o.update({activeTriggerElement:t.current,...n})},[r,o,t,...Object.values(n)]),{registerTrigger:s,isMountedByThisTrigger:r}}function Yc(e){let t=e.useState("open"),o=e.useState("triggerCount");W(()=>{if(!t){e.state.triggerCount!==0&&e.set("triggerCount",0);return}let n=e.context.triggerElements.size,r={};if(e.state.triggerCount!==n&&(r.triggerCount=n),!e.select("activeTriggerId")&&n===1){let i=e.context.triggerElements.entries().next();if(!i.done){let[s,a]=i.value;r.activeTriggerId=s,r.activeTriggerElement=a}}(r.triggerCount!==void 0||r.activeTriggerId!==void 0)&&e.update(r)},[t,e,o])}function Uc(e,t,o){let{mounted:n,setMounted:r,transitionStatus:i}=ca(e);t.useSyncedValues({mounted:n,transitionStatus:i});let s=Y(()=>{r(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1,preventUnmountingOnClose:!1}),o?.(),t.context.onOpenChangeComplete?.(!1)}),a=t.useState("preventUnmountingOnClose");return Nn({enabled:n&&!e&&!a,open:e,ref:t.context.popupRef,onComplete(){e||s()}}),{forceUnmount:s,transitionStatus:i}}function Gc(e,t){e.useSyncedValues(t),W(()=>()=>{e.update({activeTriggerProps:fe,inactiveTriggerProps:fe,popupProps:fe})},[e])}var zt=class{constructor(){this.elementsSet=new Set,this.idMap=new Map}add(t,o){let n=this.idMap.get(t);n!==o&&(n!==void 0&&this.elementsSet.delete(n),this.elementsSet.add(o),this.idMap.set(t,o))}delete(t){let o=this.idMap.get(t);o&&(this.elementsSet.delete(o),this.idMap.delete(t))}hasElement(t){return this.elementsSet.has(t)}hasMatchingElement(t){for(let o of this.elementsSet)if(t(o))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}elements(){return this.elementsSet.values()}get size(){return this.idMap.size}};function Xc(){return new ft({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:new zt,floatingId:void 0,syncOnly:!1,nested:!1,onOpenChange:void 0})}function qc(){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:Xc(),floatingId:void 0,triggerCount:0,preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:fe,inactiveTriggerProps:fe,popupProps:fe}}function Zc(e,t,o=!1){return new ft({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:e,floatingId:t,syncOnly:!0,nested:o,onOpenChange:void 0})}var Uo=J(e=>e.triggerIdProp??e.activeTriggerId),ri=J(e=>e.openProp??e.open),Kc=J(e=>(e.popupElement?.id??e.floatingId)||void 0);function Jc(e,t){return t!==void 0&&ri(e)&&Uo(e)===t}function Mm(e,t){return Jc(e,t)?!0:t!==void 0&&ri(e)&&Uo(e)==null&&e.triggerCount===1}var Qc={open:ri,mounted:J(e=>e.mounted),transitionStatus:J(e=>e.transitionStatus),floatingRootContext:J(e=>e.floatingRootContext),triggerCount:J(e=>e.triggerCount),preventUnmountingOnClose:J(e=>e.preventUnmountingOnClose),payload:J(e=>e.payload),activeTriggerId:Uo,activeTriggerElement:J(e=>e.mounted?e.activeTriggerElement:null),popupId:Kc,isTriggerActive:J((e,t)=>t!==void 0&&Uo(e)===t),isOpenedByTrigger:J((e,t)=>Jc(e,t)),isMountedByTrigger:J((e,t)=>t!==void 0&&Uo(e)===t&&e.mounted),triggerProps:J((e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps),triggerPopupId:J((e,t)=>Mm(e,t)?Kc(e):void 0),popupProps:J(e=>e.popupProps),popupElement:J(e=>e.popupElement),positionerElement:J(e=>e.positionerElement)};function $c(e){let{open:t=!1,onOpenChange:o,elements:n={}}=e,r=At(),i=mo()!=null,s=ye(()=>new ft({open:t,transitionStatus:void 0,onOpenChange:o,referenceElement:n.reference??null,floatingElement:n.floating??null,triggerElements:new zt,floatingId:r,syncOnly:!1,nested:i})).current;return W(()=>{let a={open:t,floatingId:r};n.reference!==void 0&&(a.referenceElement=n.reference,a.domReferenceElement=V(n.reference)?n.reference:null),n.floating!==void 0&&(a.floatingElement=n.floating),s.update(a)},[t,r,n.reference,n.floating,s]),s.context.onOpenChange=o,s.context.nested=i,s}function ii(e={}){let{nodeId:t,externalTree:o}=e,n=$c(e),r=e.rootContext||n,i=r.useState("referenceElement"),s=r.useState("floatingElement"),a=r.useState("domReferenceElement"),d=r.useState("open"),l=r.useState("floatingId"),[c,f]=Ce.useState(null),[m,p]=Ce.useState(void 0),[u,g]=Ce.useState(void 0),w=Ce.useRef(null),y=Ht(o),_=Ce.useMemo(()=>({reference:i,floating:s,domReference:a}),[i,s,a]),v=Sc({...e,elements:{..._,...c&&{reference:c}}}),b=V(m)?m:null,x=u===void 0?r.state.floatingElement:u;r.useSyncedValue("referenceElement",m??null),r.useSyncedValue("domReferenceElement",m===void 0?a:b),r.useSyncedValue("floatingElement",x);let S=Ce.useCallback(N=>{let O=V(N)?{getBoundingClientRect:()=>N.getBoundingClientRect(),getClientRects:()=>N.getClientRects(),contextElement:N}:N;f(O),v.refs.setReference(O)},[v.refs]),E=Ce.useCallback(N=>{(V(N)||N===null)&&(w.current=N,p(N)),(V(v.refs.reference.current)||v.refs.reference.current===null||N!==null&&!V(N))&&v.refs.setReference(N)},[v.refs,p]),P=Ce.useCallback(N=>{g(N),v.refs.setFloating(N)},[v.refs]),k=Ce.useMemo(()=>({...v.refs,setReference:E,setFloating:P,setPositionReference:S,domReference:w}),[v.refs,E,P,S]),C=Ce.useMemo(()=>({...v.elements,domReference:a}),[v.elements,a]),L=Ce.useMemo(()=>({...v,dataRef:r.context.dataRef,open:d,onOpenChange:r.setOpen,events:r.context.events,floatingId:l,refs:k,elements:C,nodeId:t,rootStore:r}),[v,k,C,t,r,d,l]);return W(()=>{a&&(w.current=a)},[a]),W(()=>{r.context.dataRef.current.floatingContext=L;let N=y?.nodesRef.current.find(O=>O.id===t);N&&(N.context=L)}),Ce.useMemo(()=>({...v,context:L,refs:k,elements:C,rootStore:r}),[v,k,C,L,r])}var pt=h(D(),1);var si=va&&wa;function ai(e,t={}){let{enabled:o=!0,delay:n}=t,r="rootStore"in e?e.rootStore:e,{events:i,dataRef:s}=r.context,a=pt.useRef(!1),d=pt.useRef(null),l=pt.useRef(!0),c=st();pt.useEffect(()=>{let m=r.select("domReferenceElement");if(!o)return;let p=de(m);function u(){let y=r.select("domReferenceElement");!r.select("open")&&pe(y)&&y===Pn(we(y))&&(a.current=!0)}function g(){l.current=!0}function w(){l.current=!1}return at(oe(p,"blur",u),si&&oe(p,"keydown",g,!0),si&&oe(p,"pointerdown",w,!0))},[r,o]),pt.useEffect(()=>{if(!o)return;function m(p){if(p.reason===G.triggerPress||p.reason===G.escapeKey){let u=r.select("domReferenceElement");V(u)&&(d.current=u,a.current=!0)}}return i.on("openchange",m),()=>{i.off("openchange",m)}},[i,o,r]);let f=pt.useMemo(()=>{function m(){a.current=!1,d.current=null}return{onMouseLeave(){m()},onFocus(p){let u=p.currentTarget;if(a.current){if(d.current===u)return;m()}let g=Le(p.nativeEvent);if(V(g)){if(si&&!p.relatedTarget){if(!l.current&&!xa(g))return}else if(!Ra(g))return}let w=Lt(p.relatedTarget,r.context.triggerElements),{nativeEvent:y,currentTarget:_}=p,v=typeof n=="function"?n():n;if(r.select("open")&&w||v===0||v===void 0){r.setOpen(!0,ee(G.triggerFocus,y,_));return}c.start(v,()=>{a.current||r.setOpen(!0,ee(G.triggerFocus,y,_))})},onBlur(p){m();let u=p.relatedTarget,g=p.nativeEvent,w=V(u)&&u.hasAttribute(po("focus-guard"))&&u.getAttribute("data-type")==="outside";c.start(0,()=>{let y=r.select("domReferenceElement"),_=Pn(we(y));!u&&_===y||ne(s.current.floatingContext?.refs.floating.current,_)||ne(y,_)||w||Lt(u??_,r.context.triggerElements)||r.setOpen(!1,ee(G.triggerFocus,g))})}}},[s,n,r,c]);return pt.useMemo(()=>o?{reference:f,trigger:f}:{},[o,f])}var li=h(D(),1);var ci=class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new We,this.restTimeout=new We,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose},Fn=new WeakMap;function vo(e){if(!e.performedPointerEventsMutation)return;let t=e.pointerEventsScopeElement;t&&Fn.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),Fn.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function Vn(e,t){let{scopeElement:o,referenceElement:n,floatingElement:r}=t,i=Fn.get(o);i&&i!==e&&vo(i),vo(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=o,e.pointerEventsReferenceElement=n,e.pointerEventsFloatingElement=r,Fn.set(o,e),o.style.pointerEvents="none",n.style.pointerEvents="auto",r.style.pointerEvents="auto"}function _o(e){let t=e.context.dataRef.current,o=ye(()=>t.hoverInteractionState??ci.create()).current;return t.hoverInteractionState||(t.hoverInteractionState=o),io(t.hoverInteractionState.disposeEffect),t.hoverInteractionState}function di(e,t={}){let{enabled:o=!0,closeDelay:n=0,nodeId:r}=t,i="rootStore"in e?e.rootStore:e,s=i.useState("open"),a=i.useState("floatingElement"),d=i.useState("domReferenceElement"),{dataRef:l}=i.context,c=Ht(),f=mo(),m=_o(i),p=st(),u=Y(()=>Ln(l.current.openEvent?.type,m.interactedInside)),g=Y(()=>za(l.current.openEvent?.type)),w=Y(()=>{vo(m)});W(()=>{s||(m.pointerType=void 0,m.restTimeoutPending=!1,m.interactedInside=!1,w())},[s,m,w]),li.useEffect(()=>w,[w]),W(()=>{if(o&&s&&m.handleCloseOptions?.blockPointerEvents&&g()&&V(d)&&a){let y=d,_=a,v=we(a),b=c?.nodesRef.current.find(P=>P.id===f)?.context?.elements.floating;b&&(b.style.pointerEvents="");let x=m.pointerEventsScopeElement!==_?m.pointerEventsScopeElement:null,S=b!==_?b:null,E=m.handleCloseOptions?.getScope?.()??x??S??y.closest("[data-rootownerid]")??v.body;return Vn(m,{scopeElement:E,referenceElement:y,floatingElement:_}),()=>{w()}}},[o,s,d,a,m,g,c,f,w]),li.useEffect(()=>{if(!o)return;function y(){return!!(c&&f&&xt(c.nodesRef.current,f).length>0)}function _(P){let k=Gt(n,"close",m.pointerType),C=()=>{i.setOpen(!1,ee(G.triggerHover,P)),c?.events.emit("floating.closed",P)};k?m.openChangeTimeout.start(k,C):(m.openChangeTimeout.clear(),C())}function v(P){let k=Le(P);if(!Mr(k)){m.interactedInside=!1;return}m.interactedInside=k?.closest("[aria-haspopup]")!=null}function b(){m.openChangeTimeout.clear(),p.clear(),c?.events.off("floating.closed",S),w()}function x(P){if(y()&&c){c.events.on("floating.closed",S);return}if(Lt(P.relatedTarget,i.context.triggerElements))return;let k=l.current.floatingContext?.nodeId??r,C=P.relatedTarget;if(!(c&&k&&V(C)&&xt(c.nodesRef.current,k,!1).some(N=>ne(N.context?.elements.floating,C)))){if(m.handler){m.handler(P);return}w(),u()||_(P)}}function S(P){!c||!f||y()||p.start(0,()=>{c.events.off("floating.closed",S),i.setOpen(!1,ee(G.triggerHover,P)),c.events.emit("floating.closed",P)})}let E=a;return at(E&&oe(E,"mouseenter",b),E&&oe(E,"mouseleave",x),E&&oe(E,"pointerdown",v,!0),()=>{c?.events.off("floating.closed",S)})},[o,a,i,l,n,r,u,w,m,c,f,p])}var Dt=h(D(),1),el=h(Bt(),1);var Bm={current:null};function ui(e,t={}){let{enabled:o=!0,delay:n=0,handleClose:r=null,mouseOnly:i=!1,restMs:s=0,move:a=!0,triggerElementRef:d=Bm,externalTree:l,isActiveTrigger:c=!0,getHandleCloseContext:f,isClosing:m,shouldOpen:p}=t,u="rootStore"in e?e.rootStore:e,{dataRef:g,events:w}=u.context,y=Ht(l),_=_o(u),v=Dt.useRef(!1),b=He(r),x=He(n),S=He(s),E=He(o),P=He(p),k=He(m),C=Y(()=>Ln(g.current.openEvent?.type,_.interactedInside)),L=Y(()=>P.current?.()!==!1),N=Y((R,M,j)=>{let T=u.context.triggerElements;if(T.hasElement(M))return!R||!ne(R,M);if(!V(j))return!1;let A=j;return T.hasMatchingElement(I=>ne(I,A))&&(!R||!ne(R,A))}),O=Y(()=>{if(!_.handler)return;we(u.select("domReferenceElement")).removeEventListener("mousemove",_.handler),_.handler=void 0}),H=Y(()=>{vo(_)});return c&&(_.handleCloseOptions=b.current?.__options),Dt.useEffect(()=>O,[O]),Dt.useEffect(()=>{if(!o)return;function R(M){M.open?v.current=!1:(v.current=M.reason===G.triggerHover,O(),_.openChangeTimeout.clear(),_.restTimeout.clear(),_.blockMouseMove=!0,_.restTimeoutPending=!1)}return w.on("openchange",R),()=>{w.off("openchange",R)}},[o,w,_,O]),Dt.useEffect(()=>{if(!o)return;function R(A,I=!0){let X=Gt(x.current,"close",_.pointerType);X?_.openChangeTimeout.start(X,()=>{u.setOpen(!1,ee(G.triggerHover,A)),y?.events.emit("floating.closed",A)}):I&&(_.openChangeTimeout.clear(),u.setOpen(!1,ee(G.triggerHover,A)),y?.events.emit("floating.closed",A))}let M=d.current??(c?u.select("domReferenceElement"):null);if(!V(M))return;function j(A){if(_.openChangeTimeout.clear(),_.blockMouseMove=!1,i&&!Rt(_.pointerType))return;let I=Br(S.current),X=Gt(x.current,"open",_.pointerType),te=Le(A),F=A.currentTarget??null,q=u.select("domReferenceElement"),Q=F;if(V(te)&&!u.context.triggerElements.hasElement(te)){for(let ge of u.context.triggerElements.elements())if(ne(ge,te)){Q=ge;break}}V(F)&&V(q)&&!u.context.triggerElements.hasElement(F)&&ne(F,q)&&(Q=q);let U=Q==null?!1:N(q,Q,te),le=u.select("open"),he=k.current?.()??u.select("transitionStatus")==="ending",se=!le&&he&&v.current,Me=!U&&V(Q)&&V(q)&&ne(q,Q)&&se,Ae=I>0&&!X,K=U&&(le||se)||Me,ue=!le||U;if(K){L()&&u.setOpen(!0,ee(G.triggerHover,A,Q));return}Ae||(X?_.openChangeTimeout.start(X,()=>{ue&&L()&&u.setOpen(!0,ee(G.triggerHover,A,Q))}):ue&&L()&&u.setOpen(!0,ee(G.triggerHover,A,Q)))}function T(A){if(C()){H();return}O();let I=u.select("domReferenceElement"),X=we(I);_.restTimeout.clear(),_.restTimeoutPending=!1;let te=g.current.floatingContext??f?.();if(Lt(A.relatedTarget,u.context.triggerElements))return;if(b.current&&te){u.select("open")||_.openChangeTimeout.clear();let q=d.current;_.handler=b.current({...te,tree:y,x:A.clientX,y:A.clientY,onClose(){H(),O(),E.current&&!C()&&q===u.select("domReferenceElement")&&R(A,!0)}}),X.addEventListener("mousemove",_.handler),_.handler(A);return}(_.pointerType!=="touch"||!ne(u.select("floatingElement"),A.relatedTarget))&&R(A)}return a?at(oe(M,"mousemove",j,{once:!0}),oe(M,"mouseenter",j),oe(M,"mouseleave",T)):at(oe(M,"mouseenter",j),oe(M,"mouseleave",T))},[O,H,g,x,u,o,b,_,c,N,C,i,a,S,d,y,E,f,k,L]),Dt.useMemo(()=>{if(!o)return;function R(M){_.pointerType=M.pointerType}return{onPointerDown:R,onPointerEnter:R,onMouseMove(M){let{nativeEvent:j}=M,T=M.currentTarget,A=u.select("domReferenceElement"),I=u.select("open"),X=N(A,T,M.target);if(i&&!Rt(_.pointerType))return;if(I&&X&&_.handleCloseOptions?.blockPointerEvents){let q=u.select("floatingElement");if(q){let Q=_.handleCloseOptions?.getScope?.()??T.ownerDocument.body;Vn(_,{scopeElement:Q,referenceElement:T,floatingElement:q})}}let te=Br(S.current);if(I&&!X||te===0||!X&&_.restTimeoutPending&&M.movementX**2+M.movementY**2<2)return;_.restTimeout.clear();function F(){if(_.restTimeoutPending=!1,C())return;let q=u.select("open");!_.blockMouseMove&&(!q||X)&&L()&&u.setOpen(!0,ee(G.triggerHover,j,T))}_.pointerType==="touch"?el.flushSync(()=>{F()}):X&&I?F():(_.restTimeoutPending=!0,_.restTimeout.start(te,F))}}},[o,_,C,N,i,u,S,L])}var tl=.1,Hm=tl*tl,ie=.5;function Wn(e,t,o,n,r,i){return n>=t!=i>=t&&e<=(r-o)*(t-n)/(i-n)+o}function Yn(e,t,o,n,r,i,s,a,d,l){let c=!1;return Wn(e,t,o,n,r,i)&&(c=!c),Wn(e,t,r,i,s,a)&&(c=!c),Wn(e,t,s,a,d,l)&&(c=!c),Wn(e,t,d,l,o,n)&&(c=!c),c}function zm(e,t,o){return e>=o.x&&e<=o.x+o.width&&t>=o.y&&t<=o.y+o.height}function Un(e,t,o,n,r,i){let s=Math.min(o,r),a=Math.max(o,r),d=Math.min(n,i),l=Math.max(n,i);return e>=s&&e<=a&&t>=d&&t<=l}function fi(e={}){let{blockPointerEvents:t=!1}=e,o=new We,n=({x:r,y:i,placement:s,elements:a,onClose:d,nodeId:l,tree:c})=>{let f=s?.split("-")[0],m=!1,p=null,u=null,g=typeof performance<"u"?performance.now():0;function w(_,v){let b=performance.now(),x=b-g;if(p===null||u===null||x===0)return p=_,u=v,g=b,!1;let S=_-p,E=v-u,P=S*S+E*E,k=x*x*Hm;return p=_,u=v,g=b,P<k}function y(){o.clear(),d()}return function(v){o.clear();let b=a.domReference,x=a.floating;if(!b||!x||f==null||r==null||i==null)return;let{clientX:S,clientY:E}=v,P=Le(v),k=v.type==="mouseleave",C=ne(x,P),L=ne(b,P);if(C&&(m=!0,!k))return;if(L&&(m=!1,!k)){m=!0;return}if(k&&V(v.relatedTarget)&&ne(x,v.relatedTarget))return;function N(){return!!(c&&xt(c.nodesRef.current,l).length>0)}function O(){N()||y()}if(N())return;let H=b.getBoundingClientRect(),R=x.getBoundingClientRect(),M=r>R.right-R.width/2,j=i>R.bottom-R.height/2,T=R.width>H.width,A=R.height>H.height,I=(T?H:R).left,X=(T?H:R).right,te=(A?H:R).top,F=(A?H:R).bottom;if(f==="top"&&i>=H.bottom-1||f==="bottom"&&i<=H.top+1||f==="left"&&r>=H.right-1||f==="right"&&r<=H.left+1){O();return}let q=!1;switch(f){case"top":q=Un(S,E,I,H.top+1,X,R.bottom-1);break;case"bottom":q=Un(S,E,I,R.top+1,X,H.bottom-1);break;case"left":q=Un(S,E,R.right-1,F,H.left+1,te);break;case"right":q=Un(S,E,H.right-1,F,R.left+1,te);break;default:}if(q)return;if(m&&!zm(S,E,H)){O();return}if(!k&&w(S,E)){O();return}let Q=!1;switch(f){case"top":{let U=T?ie/2:ie*4,le=T||M?r+U:r-U,he=T?r-U:M?r+U:r-U,se=i+ie+1,Me=M||T?R.bottom-ie:R.top,Ae=M?T?R.bottom-ie:R.top:R.bottom-ie;Q=Yn(S,E,le,se,he,se,R.left,Me,R.right,Ae);break}case"bottom":{let U=T?ie/2:ie*4,le=T||M?r+U:r-U,he=T?r-U:M?r+U:r-U,se=i-ie,Me=M||T?R.top+ie:R.bottom,Ae=M?T?R.top+ie:R.bottom:R.top+ie;Q=Yn(S,E,le,se,he,se,R.left,Me,R.right,Ae);break}case"left":{let U=A?ie/2:ie*4,le=A||j?i+U:i-U,he=A?i-U:j?i+U:i-U,se=r+ie+1,Me=j||A?R.right-ie:R.left,Ae=j?A?R.right-ie:R.left:R.right-ie;Q=Yn(S,E,Me,R.top,Ae,R.bottom,se,le,se,he);break}case"right":{let U=A?ie/2:ie*4,le=A||j?i+U:i-U,he=A?i-U:j?i+U:i-U,se=r-ie,Me=j||A?R.left+ie:R.right,Ae=j?A?R.left+ie:R.right:R.left+ie;Q=Yn(S,E,se,le,se,he,Me,R.top,Ae,R.bottom);break}default:}Q?m||o.start(40,O):O()}};return n.__options={...e,blockPointerEvents:t},n}var pi=(function(e){return e.open="data-open",e.closed="data-closed",e[e.startingStyle=Vt.startingStyle]="startingStyle",e[e.endingStyle=Vt.endingStyle]="endingStyle",e.anchorHidden="data-anchor-hidden",e.side="data-side",e.align="data-align",e})({}),Go=(function(e){return e.popupOpen="data-popup-open",e.pressed="data-pressed",e})({}),Dm={[Go.popupOpen]:""},f_={[Go.popupOpen]:"",[Go.pressed]:""},jm={[pi.open]:""},Fm={[pi.closed]:""},Vm={[pi.anchorHidden]:""},ol={open(e){return e?Dm:null}};var yo={open(e){return e?jm:Fm},anchorHidden(e){return e?Vm:null}};function nl(e){return ro(19)?e:e?"true":void 0}var Ue=h(D(),1);var Wm=e=>({name:"arrow",options:e,async fn(t){let{x:o,y:n,placement:r,rects:i,platform:s,elements:a,middlewareData:d}=t,{element:l,padding:c=0,offsetParent:f="real"}=rt(e,t)||{};if(l==null)return{};let m=On(c),p={x:o,y:n},u=Vo(r),g=Fo(u),w=await s.getDimensions(l),y=u==="y",_=y?"top":"left",v=y?"bottom":"right",b=y?"clientHeight":"clientWidth",x=i.reference[g]+i.reference[u]-p[u]-i.floating[g],S=p[u]-i.reference[u],E=f==="real"?await s.getOffsetParent?.(l):a.floating,P=a.floating[b]||i.floating[g];(!P||!await s.isElement?.(E))&&(P=a.floating[b]||i.floating[g]);let k=x/2-S/2,C=P/2-w[g]/2-1,L=Math.min(m[_],C),N=Math.min(m[v],C),O=L,H=P-w[g]-N,R=P/2-w[g]/2+k,M=jo(O,R,H),j=!d.arrow&&it(r)!=null&&R!==M&&i.reference[g]/2-(R<O?L:N)-w[g]/2<0,T=j?R<O?R-O:R-H:0;return{[u]:p[u]+T,data:{[u]:M,centerOffset:R-M-T,...j&&{alignmentOffset:T}},reset:j}}}),rl=(e,t)=>({...Wm(e),options:[e,t]});var il={name:"hide",async fn(e){let{width:t,height:o,x:n,y:r}=e.rects.reference,i=t===0&&o===0&&n===0&&r===0;return{data:{referenceHidden:(await Jr().fn(e)).data?.referenceHidden||i}}}};var Xo={sideX:"left",sideY:"top"},sl={name:"adaptiveOrigin",async fn(e){let{x:t,y:o,rects:{floating:n},elements:{floating:r},platform:i,strategy:s,placement:a}=e,d=de(r),l=d.getComputedStyle(r);if(!(l.transitionDuration!=="0s"&&l.transitionDuration!==""))return{x:t,y:o,data:Xo};let f=await i.getOffsetParent?.(r),m={width:0,height:0};if(s==="fixed"&&d?.visualViewport)m={width:d.visualViewport.width,height:d.visualViewport.height};else if(f===d){let _=we(r);m={width:_.documentElement.clientWidth,height:_.documentElement.clientHeight}}else await i.isElement?.(f)&&(m=await i.getDimensions(f));let p=xe(a),u=t,g=o;p==="left"&&(u=m.width-(t+n.width)),p==="top"&&(g=m.height-(o+n.height));let w=p==="left"?"right":Xo.sideX,y=p==="top"?"bottom":Xo.sideY;return{x:u,y:g,data:{sideX:w,sideY:y}}}};function ll(e,t,o){let n=e==="inline-start"||e==="inline-end";return{top:"top",right:n?o?"inline-start":"inline-end":"right",bottom:"bottom",left:n?o?"inline-end":"inline-start":"left"}[t]}function al(e,t,o){let{rects:n,placement:r}=e;return{side:ll(t,xe(r),o),align:it(r)||"center",anchor:{width:n.reference.width,height:n.reference.height},positioner:{width:n.floating.width,height:n.floating.height}}}function dl(e){let{anchor:t,positionMethod:o="absolute",side:n="bottom",sideOffset:r=0,align:i="center",alignOffset:s=0,collisionBoundary:a,collisionPadding:d=5,sticky:l=!1,arrowPadding:c=5,disableAnchorTracking:f=!1,inline:m,keepMounted:p=!1,floatingRootContext:u,mounted:g,collisionAvoidance:w,shiftCrossAxis:y=!1,nodeId:_,adaptiveOrigin:v,lazyFlip:b=!1,externalTree:x}=e,[S,E]=Ue.useState(null);!g&&S!==null&&E(null);let P=w.side||"flip",k=w.align||"flip",C=w.fallbackAxisSide||"end",L=typeof t=="function"?t:void 0,N=Y(L),O=L?N:t,H=He(t),R=He(g),j=no()==="rtl",T=S||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":j?"left":"right","inline-start":j?"right":"left"}[n],A=i==="center"?T:`${T}-${i}`,I=d,X=1,te=n==="bottom"?X:0,F=n==="top"?X:0,q=n==="right"?X:0,Q=n==="left"?X:0;typeof I=="number"?I={top:I+te,right:I+Q,bottom:I+F,left:I+q}:I&&(I={top:(I.top||0)+te,right:(I.right||0)+Q,bottom:(I.bottom||0)+F,left:(I.left||0)+q});let U={boundary:a==="clipping-ancestors"?"clippingAncestors":a,padding:I},le=Ue.useRef(null),he=He(r),se=He(s),Me=typeof r!="function"?r:0,Ae=typeof s!="function"?s:0,K=[];m&&K.push(m),K.push(Gr(re=>{let Ne=al(re,n,j),Xe=typeof he.current=="function"?he.current(Ne):he.current,Ke=typeof se.current=="function"?se.current(Ne):se.current;return{mainAxis:Xe,crossAxis:Ke,alignmentAxis:Ke}},[Me,Ae,j,n]));let ue=k==="none"&&P!=="shift",ge=!ue&&(l||y||P==="shift"),lt=P==="none"?null:qr({...U,padding:{top:I.top+X,right:I.right+X,bottom:I.bottom+X,left:I.left+X},mainAxis:!y&&P==="flip",crossAxis:k==="flip"?"alignment":!1,fallbackAxisSideDirection:C}),ht=ue?null:Xr(re=>{let Ne=we(re.elements.floating).documentElement;return{...U,rootBoundary:y?{x:0,y:0,width:Ne.clientWidth,height:Ne.clientHeight}:void 0,mainAxis:k!=="none",crossAxis:ge,limiter:l||y?void 0:Kr(Xe=>{if(!le.current)return{};let{width:Ke,height:_t}=le.current.getBoundingClientRect(),$e=Be(xe(Xe.placement)),jt=$e==="y"?Ke:_t,oo=$e==="y"?I.left+I.right:I.top+I.bottom;return{offset:jt/2+oo/2}})}},[U,l,y,I,k]);P==="shift"||k==="shift"||i==="center"?K.push(ht,lt):K.push(lt,ht),K.push(Zr({...U,apply({elements:{floating:re},availableWidth:Ne,availableHeight:Xe,rects:Ke}){if(!R.current)return;let _t=re.style;_t.setProperty("--available-width",`${Ne}px`),_t.setProperty("--available-height",`${Xe}px`);let $e=de(re).devicePixelRatio||1,{x:jt,y:oo,width:gn,height:gr}=Ke.reference,br=(Math.round((jt+gn)*$e)-Math.round(jt*$e))/$e,hr=(Math.round((oo+gr)*$e)-Math.round(oo*$e))/$e;_t.setProperty("--anchor-width",`${br}px`),_t.setProperty("--anchor-height",`${hr}px`)}}),rl(re=>({element:le.current||we(re.elements.floating).createElement("div"),padding:c,offsetParent:"floating"}),[c]),{name:"transformOrigin",fn(re){let{elements:Ne,middlewareData:Xe,placement:Ke,rects:_t,y:$e}=re,jt=xe(Ke),oo=Be(jt),gn=le.current,gr=Xe.arrow?.x||0,br=Xe.arrow?.y||0,hr=gn?.clientWidth||0,tf=gn?.clientHeight||0,wr=gr+hr/2,Bs=br+tf/2,of=Math.abs(Xe.shift?.y||0),nf=_t.reference.height/2,Oo=typeof r=="function"?r(al(re,n,j)):r,rf=of>Oo,sf={top:`${wr}px calc(100% + ${Oo}px)`,bottom:`${wr}px ${-Oo}px`,left:`calc(100% + ${Oo}px) ${Bs}px`,right:`${-Oo}px ${Bs}px`}[jt],af=`${wr}px ${_t.reference.y+nf-$e}px`;return Ne.floating.style.setProperty("--transform-origin",ge&&oo==="y"&&rf?af:sf),{}}},il,v),W(()=>{!g&&u&&u.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[g,u]);let wt=Ue.useMemo(()=>({elementResize:!f&&typeof ResizeObserver<"u",layoutShift:!f&&typeof IntersectionObserver<"u"}),[f]),{refs:Ve,elements:dt,x:cn,y:ln,middlewareData:Tt,update:ve,placement:dn,context:B,isPositioned:z,floatingStyles:Re}=ii({rootContext:u,open:p?g:void 0,placement:A,middleware:K,strategy:o,whileElementsMounted:p?void 0:(...re)=>Yo(...re,wt),nodeId:_,externalTree:x}),{sideX:Se,sideY:Pt}=Tt.adaptiveOrigin||Xo,to=z?o:"fixed",Ct=Ue.useMemo(()=>{let re=v?{position:to,[Se]:cn,[Pt]:ln}:{position:to,...Re};return z||(re.opacity=0),re},[v,to,Se,cn,Pt,ln,Re,z]),Oe=Ue.useRef(null);W(()=>{if(!g)return;let re=H.current,Ne=typeof re=="function"?re():re,Ke=(cl(Ne)?Ne.current:Ne)||null||null;Ke!==Oe.current&&(Ve.setPositionReference(Ke),Oe.current=Ke)},[g,Ve,O,H]),Ue.useEffect(()=>{if(!g)return;let re=H.current;typeof re!="function"&&cl(re)&&re.current!==Oe.current&&(Ve.setPositionReference(re.current),Oe.current=re.current)},[g,Ve,O,H]),Ue.useEffect(()=>{if(p&&g&&dt.domReference&&dt.floating)return Yo(dt.domReference,dt.floating,ve,wt)},[p,g,dt,ve,wt]);let vt=xe(dn),Ao=ll(n,vt,j),un=it(dn)||"center",fn=!!Tt.hide?.referenceHidden;W(()=>{b&&g&&z&&E(vt)},[b,g,z,vt]);let pn=Ue.useMemo(()=>({position:"absolute",top:Tt.arrow?.y,left:Tt.arrow?.x}),[Tt.arrow]),mn=Tt.arrow?.centerOffset!==0;return Ue.useMemo(()=>({positionerStyles:Ct,arrowStyles:pn,arrowRef:le,arrowUncentered:mn,side:Ao,align:un,physicalSide:vt,anchorHidden:fn,refs:Ve,context:B,isPositioned:z,update:ve}),[Ct,pn,le,mn,Ao,un,vt,fn,Ve,B,z,ve])}function cl(e){return e!=null&&"current"in e}function Gn(e){return e==="starting"?Fa:fe}function ul(e,t,{styles:o,transitionStatus:n,props:r,refs:i,hidden:s,inert:a=!1}){let d={...o};return a&&(d.pointerEvents="none"),Te("div",e,{state:t,ref:i,props:[{role:"presentation",hidden:s,style:d},Gn(n),r],stateAttributesMapping:yo})}var fl=h(D(),1);var mi=fl.forwardRef(function(t,o){let{render:n,className:r,disabled:i=!1,focusableWhenDisabled:s=!1,nativeButton:a=!0,style:d,...l}=t,{getButtonProps:c,buttonRef:f}=ba({disabled:i,focusableWhenDisabled:s,native:a});return Te("button",t,{state:{disabled:i},ref:[o,f],props:[l,c]})});var ke=h(D(),1),wl=h(Bt(),1);var pl=h(D(),1);function ml(e){let[t,o]=pl.useState({current:e,previous:null});return e!==t.current&&o({current:e,previous:t.current}),t.previous}var Zt=h(D(),1);function gi(e){let t=Pe(e),o=parseFloat(t.width)||0,n=parseFloat(t.height)||0,r=pe(e),i=r?e.offsetWidth:o,s=r?e.offsetHeight:n;return(Mt(o)!==i||Mt(n)!==s)&&(o=i,n=s),{width:o,height:n}}var Ym=()=>!0;function bl(e){let{popupElement:t,positionerElement:o,content:n,mounted:r,enabled:i=Ym,onMeasureLayout:s,onMeasureLayoutComplete:a,side:d,direction:l}=e,c=fo(t,!0,!1),f=so(),m=Zt.useRef(null),p=Zt.useRef(null),u=Zt.useRef(!0),g=Zt.useRef(yt),w=Y(s),y=Y(a),_=Zt.useMemo(()=>{let v=d==="top",b=d==="left";return l==="rtl"?(v=v||d==="inline-end",b=b||d==="inline-end"):(v=v||d==="inline-start",b=b||d==="inline-start"),v?{position:"absolute",[d==="top"?"bottom":"top"]:"0",[b?"right":"left"]:"0"}:fe},[d,l]);W(()=>{if(!r||!i()||typeof ResizeObserver!="function"){g.current=yt,u.current=!0,m.current=null,p.current=null;return}if(!t||!o)return;g.current=gl(t,_);let v=new ResizeObserver(O=>{let H=O[0];H&&(p.current={width:Math.ceil(H.borderBoxSize[0].inlineSize),height:Math.ceil(H.borderBoxSize[0].blockSize)})});v.observe(t),Xn(t,"auto");let b=Kn(t,"position","static"),x=Kn(t,"transform","none"),S=Kn(t,"scale","1"),E=gl(o,{"--available-width":"max-content","--available-height":"max-content"});function P(){b(),x(),E()}function k(){P(),S()}if(w?.(),u.current||m.current===null){Ko(o,"max-content");let O=gi(t);return m.current=O,Ko(o,O),k(),y?.(null,O),u.current=!1,()=>{v.disconnect(),g.current(),g.current=yt}}Xn(t,"auto"),Ko(o,"max-content");let C=m.current??p.current,L=gi(t);if(m.current=L,!C)return Ko(o,L),k(),y?.(null,L),()=>{v.disconnect(),f.cancel(),g.current(),g.current=yt};Xn(t,C),k(),y?.(C,L),Ko(o,L);let N=new AbortController;return f.request(()=>{Xn(t,L),c(()=>{t.style.setProperty("--popup-width","auto"),t.style.setProperty("--popup-height","auto")},N.signal)}),()=>{v.disconnect(),N.abort(),f.cancel(),g.current(),g.current=yt}},[n,t,o,c,f,i,r,w,y,_])}function Kn(e,t,o){let n=e.style.getPropertyValue(t);return e.style.setProperty(t,o),()=>{e.style.setProperty(t,n)}}function gl(e,t){let o=[];for(let[n,r]of Object.entries(t))o.push(Kn(e,n,r));return o.length?()=>{o.forEach(n=>n())}:yt}function Xn(e,t){let o=t==="auto"?"auto":`${t.width}px`,n=t==="auto"?"auto":`${t.height}px`;e.style.setProperty("--popup-width",o),e.style.setProperty("--popup-height",n)}function Ko(e,t){let o=t==="max-content"?"max-content":`${t.width}px`,n=t==="max-content"?"max-content":`${t.height}px`;e.style.setProperty("--positioner-width",o),e.style.setProperty("--positioner-height",n)}var xo=h(Z(),1);function vl(e){let{store:t,side:o,cssVars:n,children:r}=e,i=no(),s=t.useState("activeTriggerElement"),a=t.useState("activeTriggerId"),d=t.useState("open"),l=t.useState("payload"),c=t.useState("mounted"),f=t.useState("popupElement"),m=t.useState("positionerElement"),p=ml(d?s:null),u=Xm(a,l),g=ke.useRef(null),[w,y]=ke.useState(null),[_,v]=ke.useState(null),b=ke.useRef(null),x=ke.useRef(null),S=fo(b,!0,!1),E=so(),[P,k]=ke.useState(null),[C,L]=ke.useState(!1);W(()=>(t.set("hasViewport",!0),()=>{t.set("hasViewport",!1)}),[t]);let N=Y(()=>{b.current?.style.setProperty("animation","none"),b.current?.style.setProperty("transition","none"),x.current?.style.setProperty("display","none")}),O=Y(T=>{b.current?.style.removeProperty("animation"),b.current?.style.removeProperty("transition"),x.current?.style.removeProperty("display"),T&&k(T)}),H=ke.useRef(null);W(()=>{if(s&&p&&s!==p&&H.current!==s&&g.current){y(g.current),L(!0);let T=Gm(p,s);v(T),E.request(()=>{wl.flushSync(()=>{L(!1)}),S(()=>{y(null),k(null),g.current=null})}),H.current=s}},[s,p,w,S,E]),W(()=>{let T=b.current;if(!T)return;let A=we(T).createElement("div");for(let I of Array.from(T.childNodes))A.appendChild(I.cloneNode(!0));g.current=A});let R=w!=null,M;R?M=(0,xo.jsxs)(ke.Fragment,{children:[(0,xo.jsx)("div",{"data-previous":!0,inert:nl(!0),ref:x,style:{...P?{[n.popupWidth]:`${P.width}px`,[n.popupHeight]:`${P.height}px`}:null,position:"absolute"},"data-ending-style":C?void 0:""},"previous"),(0,xo.jsx)("div",{"data-current":!0,ref:b,"data-starting-style":C?"":void 0,children:r},u)]}):M=(0,xo.jsx)("div",{"data-current":!0,ref:b,children:r},u),W(()=>{let T=x.current;!T||!w||T.replaceChildren(...Array.from(w.childNodes))},[w]),bl({popupElement:f,positionerElement:m,mounted:c,content:l,onMeasureLayout:N,onMeasureLayoutComplete:O,side:o,direction:i});let j={activationDirection:Um(_),transitioning:R};return{children:M,state:j}}function Um(e){if(e)return`${hl(e.horizontal,5,"right","left")} ${hl(e.vertical,5,"down","up")}`}function hl(e,t,o,n){return e>t?o:e<-t?n:""}function Gm(e,t){let o=e.getBoundingClientRect(),n=t.getBoundingClientRect(),r={x:o.left+o.width/2,y:o.top+o.height/2},i={x:n.left+n.width/2,y:n.top+n.height/2};return{horizontal:i.x-r.x,vertical:i.y-r.y}}function Xm(e,t){let[o,n]=ke.useState(0),r=ke.useRef(e),i=ke.useRef(t),s=ke.useRef(!1);return W(()=>{let a=r.current,d=i.current,l=e!==a,c=t!==d;l?(n(f=>f+1),s.current=!c):s.current&&c&&(n(f=>f+1),s.current=!1),r.current=e,i.current=t},[e,t]),`${e??"current"}-${o}`}var qn=h(D(),1),_l=h(Bt(),1);var yl=h(Z(),1),xl=qn.forwardRef(function(t,o){let{children:n,container:r,className:i,render:s,style:a,...d}=t,{portalNode:l,portalSubtree:c}=Dr({container:r,ref:o,componentProps:t,elementProps:d});return!c&&!l?null:(0,yl.jsxs)(qn.Fragment,{children:[c,l&&_l.createPortal(n,l)]})});var Fe={};_r(Fe,{Arrow:()=>Dl,Handle:()=>qo,Popup:()=>Hl,Portal:()=>Ll,Positioner:()=>Ml,Provider:()=>jl,Root:()=>El,Trigger:()=>Al,Viewport:()=>Wl,createHandle:()=>Yl});var mt=h(D(),1);var Zn=h(D(),1),bi=Zn.createContext(void 0);function qe(e){let t=Zn.useContext(bi);if(t===void 0&&!e)throw new Error(Ee(72));return t}var Rl=h(D(),1),Sl=h(Bt(),1);var Km={...Qc,disabled:J(e=>e.disabled),instantType:J(e=>e.instantType),isInstantPhase:J(e=>e.isInstantPhase),trackCursorAxis:J(e=>e.trackCursorAxis),disableHoverablePopup:J(e=>e.disableHoverablePopup),lastOpenChangeReason:J(e=>e.openChangeReason),closeOnClick:J(e=>e.closeOnClick),closeDelay:J(e=>e.closeDelay),hasViewport:J(e=>e.hasViewport)},Ro=class e extends ho{constructor(t,o,n=!1){let r=new zt,i={...qm(),...t};i.floatingRootContext=Zc(r,o,n),super(i,{popupRef:Rl.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:r},Km)}setOpen=(t,o)=>{let n=o.reason,r=n===G.triggerHover,i=t&&n===G.triggerFocus,s=!t&&(n===G.triggerPress||n===G.escapeKey);if(o.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},this.context.onOpenChange?.(t,o),o.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(t,o);let a=()=>{let d={open:t,openChangeReason:n};i?d.instantType="focus":s?d.instantType="dismiss":n===G.triggerHover&&(d.instantType=void 0),Vc(d,t,o.trigger),this.update(d)};r?Sl.flushSync(a):a()};cancelPendingOpen(t){this.state.floatingRootContext.dispatchOpenChange(!1,ee(G.triggerPress,t))}static useStore(t,o){return Fc(t,(r,i)=>new e(o,r,i)).store}};function qm(){return{...qc(),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,hasViewport:!1}}var Jn=h(Z(),1),El=oi(function(t){let{disabled:o=!1,defaultOpen:n=!1,open:r,disableHoverablePopup:i=!1,trackCursorAxis:s="none",actionsRef:a,onOpenChange:d,onOpenChangeComplete:l,handle:c,triggerId:f,defaultTriggerId:m=null,children:p}=t,u=Ro.useStore(c?.store,{open:n,openProp:r,activeTriggerId:m,triggerIdProp:f});Ha(()=>{r===void 0&&u.state.open===!1&&n===!0&&u.update({open:!0,activeTriggerId:m})}),u.useControlledProp("openProp",r),u.useControlledProp("triggerIdProp",f),u.useContextCallback("onOpenChange",d),u.useContextCallback("onOpenChangeComplete",l);let g=u.useState("open"),w=!o&&g,y=u.useState("activeTriggerId"),_=u.useState("mounted"),v=u.useState("payload");u.useSyncedValues({trackCursorAxis:s,disableHoverablePopup:i}),u.useSyncedValue("disabled",o),Yc(u);let{forceUnmount:b,transitionStatus:x}=Uc(w,u),S=u.useState("isInstantPhase"),E=u.useState("instantType"),P=u.useState("lastOpenChangeReason"),k=mt.useRef(null);W(()=>{g&&o&&u.setOpen(!1,ee(G.disabled))},[g,o,u]),W(()=>{x==="ending"&&P===G.none||x!=="ending"&&S?(E!=="delay"&&(k.current=E),u.set("instantType","delay")):k.current!==null&&(u.set("instantType",k.current),k.current=null)},[x,S,P,E,u]),W(()=>{w&&y==null&&u.set("payload",void 0)},[u,y,w]);let C=mt.useCallback(()=>{u.setOpen(!1,ee(G.imperativeAction))},[u]);mt.useImperativeHandle(a,()=>({unmount:b,close:C}),[b,C]);let L=w||_||!o&&s!=="none";return(0,Jn.jsxs)(bi.Provider,{value:u,children:[L&&(0,Jn.jsx)(Zm,{store:u,disabled:o,trackCursorAxis:s}),typeof p=="function"?p({payload:v}):p]})});function Zm({store:e,disabled:t,trackCursorAxis:o}){let n=e.useState("floatingRootContext"),r=Fr(n,{enabled:!t,referencePress:()=>e.select("closeOnClick")}),i=jr(n,{enabled:!t&&o!=="none",axis:o==="none"?void 0:o}),s=mt.useMemo(()=>be(i.reference,r.reference),[i.reference,r.reference]),a=mt.useMemo(()=>be(i.trigger,r.trigger),[i.trigger,r.trigger]),d=mt.useMemo(()=>be(jc,i.floating,r.floating),[i.floating,r.floating]);return Gc(e,{activeTriggerProps:s,inactiveTriggerProps:a,popupProps:d}),null}var $n=h(D(),1);var Qn=h(D(),1),hi=Qn.createContext(void 0);function Tl(){return Qn.useContext(hi)}var Pl=(function(e){return e[e.popupOpen=Go.popupOpen]="popupOpen",e.triggerDisabled="data-trigger-disabled",e})({});var kl="data-base-ui-tooltip-trigger";function Cl(e){if("composedPath"in e){let o=e.composedPath();for(let n=0;n<o.length;n+=1){let r=o[n];if(V(r))return r}}let t=e.target;return V(t)?t:null}function Jm(e){let t=e;for(;t;){if(t.hasAttribute(kl))return t;let o=t.parentElement;if(o){t=o;continue}let n=t.getRootNode();t="host"in n&&V(n.host)?n.host:null}return null}var Al=Mc(function(t,o){let{render:n,className:r,style:i,handle:s,payload:a,disabled:d,delay:l,closeOnClick:c=!0,closeDelay:f,id:m,...p}=t,u=qe(!0),g=s?.store??u;if(!g)throw new Error(Ee(82));let w=sa(m),y=g.useState("isTriggerActive",w),_=g.useState("isOpenedByTrigger",w),v=g.useState("floatingRootContext"),b=$n.useRef(null),x=l??600,S=f??0,{registerTrigger:E,isMountedByThisTrigger:P}=Wc(w,b,g,{payload:a,closeOnClick:c,closeDelay:S}),k=Tl(),{delayRef:C,isInstantPhase:L,hasProvider:N}=zr(v,{open:_}),O=_o(v);g.useSyncedValue("isInstantPhase",L);let H=g.useState("disabled"),R=d??H,M=He(R),j=g.useState("trackCursorAxis"),T=g.useState("disableHoverablePopup"),A=$n.useRef(!1),I=st(),X=$n.useRef(void 0);function te(){let K=k?.delay,ue=typeof C.current=="object"?C.current.open:void 0,ge=x;return N&&(ue!==0?ge=l??K??x:ge=0),ge}function F(K){let ue=b.current;if(!ue||!K)return!1;let ge=Jm(K);return ge!==null&&ge!==ue&&ne(ue,ge)}function q(K){let ue=F(K);return A.current=ue,ue&&(O.openChangeTimeout.clear(),O.restTimeout.clear(),O.restTimeoutPending=!1,I.clear()),ue}let Q=ui(v,{enabled:!R,mouseOnly:!0,move:!1,handleClose:!T&&j!=="both"?fi():null,restMs:te,delay(){let K=typeof C.current=="object"?C.current.close:void 0,ue=S;return f==null&&N&&(ue=K),{close:ue}},triggerElementRef:b,isActiveTrigger:y,isClosing:()=>g.select("transitionStatus")==="ending",shouldOpen(){return!A.current}}),U=ai(v,{enabled:!R}).reference,le=K=>{let ue=A.current,ge=Cl(K),lt=q(ge),ht=b.current,wt=ht&&ge&&ne(ht,ge);if(lt&&g.select("open")&&g.select("lastOpenChangeReason")===G.triggerHover){g.setOpen(!1,ee(G.triggerHover,K));return}if(ue&&!lt&&wt&&!M.current&&!g.select("open")&&ht&&Rt(X.current)){let Ve=()=>{!A.current&&!M.current&&!g.select("open")&&g.setOpen(!0,ee(G.triggerHover,K,ht))},dt=te();dt===0?(I.clear(),Ve()):I.start(dt,Ve)}},he=g.useState("triggerProps",P);return Te("button",t,{state:{open:_},ref:[o,E,b],props:[Q,U,P||j!=="none"?he:void 0,{onMouseOver(K){le(K.nativeEvent)},onFocus(K){F(Cl(K.nativeEvent))&&K.preventBaseUIHandler()},onMouseLeave(){A.current=!1,I.clear(),X.current=void 0},onPointerEnter(K){X.current=K.pointerType},onPointerDown(K){X.current=K.pointerType,g.set("closeOnClick",c),c&&!g.select("open")&&g.cancelPendingOpen(K.nativeEvent)},onClick(K){c&&!g.select("open")&&g.cancelPendingOpen(K.nativeEvent)},id:w,[Pl.triggerDisabled]:R?"":void 0,[kl]:R?void 0:""},p],stateAttributesMapping:ol})});var Nl=h(D(),1);var er=h(D(),1),wi=er.createContext(void 0);function Ol(){let e=er.useContext(wi);if(e===void 0)throw new Error(Ee(70));return e}var vi=h(Z(),1),Ll=Nl.forwardRef(function(t,o){let{keepMounted:n=!1,...r}=t;return qe().useState("mounted")||n?(0,vi.jsx)(wi.Provider,{value:n,children:(0,vi.jsx)(xl,{ref:o,...r})}):null});var or=h(D(),1);var tr=h(D(),1),_i=tr.createContext(void 0);function So(){let e=tr.useContext(_i);if(e===void 0)throw new Error(Ee(71));return e}var Il=h(Z(),1),Ml=or.forwardRef(function(t,o){let{render:n,className:r,anchor:i,positionMethod:s="absolute",side:a="top",align:d="center",sideOffset:l=0,alignOffset:c=0,collisionBoundary:f="clipping-ancestors",collisionPadding:m=5,arrowPadding:p=5,sticky:u=!1,disableAnchorTracking:g=!1,collisionAvoidance:w=Va,style:y,..._}=t,v=qe(),b=Ol(),x=v.useState("open"),S=v.useState("mounted"),E=v.useState("trackCursorAxis"),P=v.useState("disableHoverablePopup"),k=v.useState("floatingRootContext"),C=v.useState("instantType"),L=v.useState("transitionStatus"),N=v.useState("hasViewport"),O=dl({anchor:i,positionMethod:s,floatingRootContext:k,mounted:S,side:a,sideOffset:l,align:d,alignOffset:c,collisionBoundary:f,collisionPadding:m,sticky:u,arrowPadding:p,disableAnchorTracking:g,keepMounted:b,collisionAvoidance:w,adaptiveOrigin:N?sl:void 0}),H=or.useMemo(()=>({open:x,side:O.side,align:O.align,anchorHidden:O.anchorHidden,instant:E!=="none"?"tracking-cursor":C}),[x,O.side,O.align,O.anchorHidden,E,C]),R=ul(t,H,{styles:O.positionerStyles,transitionStatus:L,props:_,refs:[o,v.useStateSetter("positionerElement")],hidden:!S,inert:!x||E==="both"||P});return(0,Il.jsx)(_i.Provider,{value:O,children:R})});var Bl=h(D(),1);var Qm={...yo,...la},Hl=Bl.forwardRef(function(t,o){let{render:n,className:r,style:i,...s}=t,a=qe(),{side:d,align:l}=So(),c=a.useState("open"),f=a.useState("instantType"),m=a.useState("transitionStatus"),p=a.useState("popupProps"),u=a.useState("floatingRootContext"),g=a.useState("disabled"),w=a.useState("closeDelay");Nn({open:c,ref:a.context.popupRef,onComplete(){c&&a.context.onOpenChangeComplete?.(!0)}}),di(u,{enabled:!g,closeDelay:w});let y=a.useStateSetter("popupElement");return Te("div",t,{state:{open:c,side:d,align:l,instant:f,transitionStatus:m},ref:[o,a.context.popupRef,y],props:[p,Gn(m),s],stateAttributesMapping:Qm})});var zl=h(D(),1);var Dl=zl.forwardRef(function(t,o){let{render:n,className:r,style:i,...s}=t,a=qe(),{arrowRef:d,side:l,align:c,arrowUncentered:f,arrowStyles:m}=So(),p=a.useState("open"),u=a.useState("instantType");return Te("div",t,{state:{open:p,side:l,align:c,uncentered:f,instant:u},ref:[o,d],props:[{style:m,"aria-hidden":!0},s],stateAttributesMapping:yo})});var yi=h(D(),1);var xi=h(Z(),1),jl=function(t){let{delay:o,closeDelay:n,timeout:r=400}=t,i=yi.useMemo(()=>({delay:o,closeDelay:n}),[o,n]),s=yi.useMemo(()=>({open:o,close:n}),[o,n]);return(0,xi.jsx)(hi.Provider,{value:i,children:(0,xi.jsx)(Hr,{delay:s,timeoutMs:r,children:t.children})})};var Vl=h(D(),1);var Fl=(function(e){return e.popupWidth="--popup-width",e.popupHeight="--popup-height",e})({});var $m={activationDirection:e=>e?{"data-activation-direction":e}:null},Wl=Vl.forwardRef(function(t,o){let{render:n,className:r,style:i,children:s,...a}=t,d=qe(),l=So(),c=d.useState("instantType"),{children:f,state:m}=vl({store:d,side:l.side,cssVars:Fl,children:s}),p={activationDirection:m.activationDirection,transitioning:m.transitioning,instant:c};return Te("div",t,{state:p,ref:o,props:[a,{children:f}],stateAttributesMapping:$m})});var qo=class{constructor(){this.store=new Ro}open(t){let o=t?this.store.context.triggerElements.getById(t):void 0;if(t&&!o)throw new Error(Ee(81,t));this.store.setOpen(!0,ee(G.imperativeAction,void 0,o))}close(){this.store.setOpen(!1,ee(G.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}};function Yl(){return new qo}function gt(e){return Te(e.defaultTagName??"div",e,e)}var Xl=h(ae(),1),Ri="data-wp-hash";function Si(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&tg(document)),e.__wpStyleRuntime}function eg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ri}]`))if(o.getAttribute(Ri)===t)return!0;return!1}function Kl(e,t,o){if(!e.head)return;let n=Si(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(eg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ri,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function tg(e){let t=Si();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Kl(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function ql(e,t){let o=Si();o.styles.set(e,t);for(let n of o.documents.keys())Kl(n,e,t)}typeof process>"u",ql("0c5702ddca",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');var Ul={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",ql("d5c1b736fd","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}");var Gl={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ze=(0,Xl.forwardRef)(function({variant:t="body-md",render:o,className:n,...r},i){return gt({render:o,defaultTagName:"span",ref:i,props:be(r,{className:$(Ul.text,Gl.heading,Gl.p,Ul[t],n)})})});var $l=h(Z(),1),Ei="data-wp-hash";function Ti(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&ng(document)),e.__wpStyleRuntime}function og(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ei}]`))if(o.getAttribute(Ei)===t)return!0;return!1}function Ql(e,t,o){if(!e.head)return;let n=Ti(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(og(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ei,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function ng(e){let t=Ti();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Ql(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function rg(e,t){let o=Ti();o.styles.set(e,t);for(let n of o.documents.keys())Ql(n,e,t)}typeof process>"u",rg("9d817a6077","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6be);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee995);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c6f7cd);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-fg-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}}");var Zl={badge:"_96e6251aad1a6136__badge","is-high-intent":"_99f7158cb520f750__is-high-intent","is-medium-intent":"c20ebef2365bc8b7__is-medium-intent","is-low-intent":"_365e1626c6202e52__is-low-intent","is-stable-intent":"_33f8198127ddf4ef__is-stable-intent","is-informational-intent":"_04c1aca8fc449412__is-informational-intent","is-draft-intent":"_90726e69d495ec19__is-draft-intent","is-none-intent":"_898f4a544993bd39__is-none-intent"},Pi=(0,Jl.forwardRef)(function({intent:t="none",className:o,...n},r){return(0,$l.jsx)(Ze,{ref:r,className:$(Zl.badge,Zl[`is-${t}-intent`],o),...n,variant:"body-sm"})});var nr=h(ae(),1),ed=h(kt(),1),od=h(Z(),1);import{speak as ig}from"@wordpress/a11y";var Ci="data-wp-hash";function ki(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&ag(document)),e.__wpStyleRuntime}function sg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ci}]`))if(o.getAttribute(Ci)===t)return!0;return!1}function td(e,t,o){if(!e.head)return;let n=ki(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(sg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ci,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function ag(e){let t=ki();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)td(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function rr(e,t){let o=ki();o.styles.set(e,t);for(let n of o.documents.keys())td(n,e,t)}typeof process>"u",rr("459f56a7b7",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:-4px;--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:transparent;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:transparent;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}}');var Zo={button:"_97b0fc33c028be1a__button","is-unstyled":"abbb272e2ce49bd6__is-unstyled","is-loading":"_914b42f315c0e580__is-loading","is-small":"_908205475f9f2a92__is-small",icon:"_9f6fc6553aeb36fe__icon","is-brand":"dd460c965226cc77__is-brand","is-outline":"_62d5a778b7b258ee__is-outline","is-minimal":"ad0619a3217c6a5b__is-minimal","is-neutral":"e722a8f96726aa99__is-neutral","is-solid":"b50b3358c5fb4d0b__is-solid","is-compact":"cf59cf1b69629838__is-compact","loading-animation":"_5a1d53da6f830c8d__loading-animation"};typeof process>"u",rr("10f3806643","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");var cg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",rr("693cd16544","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid transparent;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}}");var lg={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",rr("d5c1b736fd","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}");var dg={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},nd=(0,nr.forwardRef)(function({tone:t="brand",variant:o="solid",size:n="default",className:r,focusableWhenDisabled:i=!0,disabled:s,loading:a,loadingAnnouncement:d=(0,ed.__)("Loading"),children:l,...c},f){let m=$(dg.button,cg["box-sizing"],lg["outset-ring--focus-except-active"],o!=="unstyled"&&Zo.button,Zo[`is-${t}`],Zo[`is-${o}`],Zo[`is-${n}`],a&&Zo["is-loading"],r);return(0,nr.useEffect)(()=>{a&&d&&ig(d)},[a,d]),(0,od.jsx)(mi,{ref:f,className:m,focusableWhenDisabled:i,disabled:s??a,...c,children:l})});var cd=h(ae(),1);var id=h(ae(),1),sd=h(Jt(),1),ad=h(Z(),1),Qt=(0,id.forwardRef)(function({icon:t,size:o=24,...n},r){return(0,ad.jsx)(sd.SVG,{ref:r,fill:"currentColor",...t.props,...n,width:o,height:o})});var dd=h(Z(),1),Ai="data-wp-hash";function Oi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&fg(document)),e.__wpStyleRuntime}function ug(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ai}]`))if(o.getAttribute(Ai)===t)return!0;return!1}function ld(e,t,o){if(!e.head)return;let n=Oi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(ug(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ai,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function fg(e){let t=Oi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ld(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function pg(e,t){let o=Oi();o.styles.set(e,t);for(let n of o.documents.keys())ld(n,e,t)}typeof process>"u",pg("459f56a7b7",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:499;--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:40px;--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:-4px;--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:padding-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:transparent;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:transparent;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);inset-inline-start:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:24px}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-bg-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-bg-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-bg-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:32px}._914b42f315c0e580__is-loading{color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}}');var mg={button:"_97b0fc33c028be1a__button","is-unstyled":"abbb272e2ce49bd6__is-unstyled","is-loading":"_914b42f315c0e580__is-loading","is-small":"_908205475f9f2a92__is-small",icon:"_9f6fc6553aeb36fe__icon","is-brand":"dd460c965226cc77__is-brand","is-outline":"_62d5a778b7b258ee__is-outline","is-minimal":"ad0619a3217c6a5b__is-minimal","is-neutral":"e722a8f96726aa99__is-neutral","is-solid":"b50b3358c5fb4d0b__is-solid","is-compact":"cf59cf1b69629838__is-compact","loading-animation":"_5a1d53da6f830c8d__loading-animation"},Ni=(0,cd.forwardRef)(function({className:t,icon:o,...n},r){return(0,dd.jsx)(Qt,{ref:r,icon:o,className:$(mg.icon,t),size:24,...n})});Ni.displayName="Button.Icon";var ir=Object.assign(nd,{Icon:Ni});var sr=h(Jt(),1),Li=h(Z(),1),Ii=(0,Li.jsx)(sr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Li.jsx)(sr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})});var ar=h(Jt(),1),Mi=h(Z(),1),Bi=(0,Mi.jsx)(ar.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Mi.jsx)(ar.Path,{d:"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"})});var cr=h(Jt(),1),Hi=h(Z(),1),zi=(0,Hi.jsx)(cr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Hi.jsx)(cr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})});var lr=h(Jt(),1),Di=h(Z(),1),ji=(0,Di.jsx)(lr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Di.jsx)(lr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})});var dr=h(Jt(),1),Fi=h(Z(),1),Vi=(0,Fi.jsx)(dr.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Fi.jsx)(dr.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"})});var pd=h(ae(),1);function Wi(e,t,o){return(0,pd.cloneElement)(e??t,{children:o})}var gd=h(Yi(),1),{lock:K2,unlock:bd}=(0,gd.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/ui");var hd=h(ae(),1),Ui="data-wp-hash";function Gi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&bg(document)),e.__wpStyleRuntime}function gg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ui}]`))if(o.getAttribute(Ui)===t)return!0;return!1}function wd(e,t,o){if(!e.head)return;let n=Gi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(gg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ui,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function bg(e){let t=Gi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)wd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function hg(e,t){let o=Gi();o.styles.set(e,t);for(let n of o.documents.keys())wd(n,e,t)}typeof process>"u",hg("32aba35fe1","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}");var wg={stack:"_19ce0419607e1896__stack"},vg={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Eo=(0,hd.forwardRef)(function({direction:t,gap:o,align:n,justify:r,wrap:i,render:s,...a},d){let l={gap:o&&vg[o],alignItems:n,justifyContent:r,flexDirection:t,flexWrap:i};return gt({render:s,ref:d,props:be(a,{style:l,className:wg.stack})})});var Dd=h(ae(),1);var Od=h(ae(),1),Nd=h(fd(),1);var Rd=h(ae(),1);var Xi="data-wp-hash";function Ki(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&yg(document)),e.__wpStyleRuntime}function _g(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Xi}]`))if(o.getAttribute(Xi)===t)return!0;return!1}function _d(e,t,o){if(!e.head)return;let n=Ki(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(_g(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Xi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function yg(e){let t=Ki();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)_d(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function xg(e,t){let o=Ki();o.styles.set(e,t);for(let n of o.documents.keys())_d(n,e,t)}typeof process>"u",xg("be37f31c1e","._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}");var vd={slot:"_11fc52b637ff8a7e__slot"},yd="data-wp-compat-overlay-slot";function Rg(){return typeof document>"u"?null:document}function Sg(){let e;try{e=window.top?.wp}catch{}let t=e??window.wp;return typeof t?.components=="object"&&t.components!==null}var St=null;function Eg(e){let t=e.createElement("div");return t.setAttribute(yd,""),vd.slot&&t.classList.add(vd.slot),e.body.appendChild(t),t}function xd(){if(typeof window>"u"||!Sg()&&window.__wpUiCompatOverlaySlotEnabled!==!0)return;let e=Rg();if(!e||!e.body)return;if(St&&St.ownerDocument===e&&St.isConnected)return St;let t=e.querySelector(`[${yd}]`);return t instanceof HTMLDivElement?(St=t,t):(St?.isConnected&&St.remove(),St=Eg(e),St)}var Sd=h(Z(),1),Ed=(0,Rd.forwardRef)(function({container:t,...o},n){return(0,Sd.jsx)(Fe.Portal,{container:t??xd(),...o,ref:n})});var Td=h(ae(),1),kd=h(Z(),1),qi="data-wp-hash";function Zi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Pg(document)),e.__wpStyleRuntime}function Tg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${qi}]`))if(o.getAttribute(qi)===t)return!0;return!1}function Pd(e,t,o){if(!e.head)return;let n=Zi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Tg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(qi,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Pg(e){let t=Zi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Pd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Cd(e,t){let o=Zi();o.styles.set(e,t);for(let n of o.documents.keys())Pd(n,e,t)}typeof process>"u",Cd("10f3806643","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");var Cg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",Cd("4811d023d1",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');var kg={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},Ad=(0,Td.forwardRef)(function({align:t="center",className:o,side:n="top",sideOffset:r=4,...i},s){return(0,kd.jsx)(Fe.Positioner,{ref:s,align:t,side:n,sideOffset:r,...i,className:$(Cg["box-sizing"],kg.positioner,o)})});var Jo=h(Z(),1),Ji="data-wp-hash";function Qi(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Og(document)),e.__wpStyleRuntime}function Ag(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ji}]`))if(o.getAttribute(Ji)===t)return!0;return!1}function Ld(e,t,o){if(!e.head)return;let n=Qi(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Ag(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ji,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Og(e){let t=Qi();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Ld(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Ng(e,t){let o=Qi();o.styles.set(e,t);for(let n of o.documents.keys())Ld(n,e,t)}typeof process>"u",Ng("4811d023d1",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');var Lg={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},Ig=bd(Nd.privateApis).ThemeProvider,Mg={background:"#1e1e1e"},$i=(0,Od.forwardRef)(function({portal:t,positioner:o,children:n,className:r,...i},s){let a=(0,Jo.jsx)(Ig,{color:Mg,children:(0,Jo.jsx)(Fe.Popup,{ref:s,className:$(Lg.popup,r),...i,children:n})}),d=Wi(o,(0,Jo.jsx)(Ad,{}),a);return Wi(t,(0,Jo.jsx)(Ed,{}),d)});var Id=h(ae(),1),Md=h(Z(),1),es=(0,Id.forwardRef)(function(t,o){return(0,Md.jsx)(Fe.Trigger,{ref:o,...t})});var Bd=h(Z(),1);function ts(e){return(0,Bd.jsx)(Fe.Root,{...e})}var Hd=h(Z(),1);function os({...e}){return(0,Hd.jsx)(Fe.Provider,{...e})}var Je=h(Z(),1),ns="data-wp-hash";function rs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&zg(document)),e.__wpStyleRuntime}function Hg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ns}]`))if(o.getAttribute(ns)===t)return!0;return!1}function jd(e,t,o){if(!e.head)return;let n=rs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Hg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ns,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function zg(e){let t=rs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)jd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Dg(e,t){let o=rs();o.styles.set(e,t);for(let n of o.documents.keys())jd(n,e,t)}typeof process>"u",Dg("65cec4cf71","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}}");var zd={"icon-button":"_28cfdc260e755391__icon-button",icon:"f1c70d719989a85a__icon"},is=(0,Dd.forwardRef)(function({label:t,className:o,children:n,disabled:r,focusableWhenDisabled:i=!0,icon:s,size:a,shortcut:d,positioner:l,...c},f){let m=$(zd["icon-button"],o);return(0,Je.jsx)(os,{delay:0,children:(0,Je.jsxs)(ts,{children:[(0,Je.jsx)(es,{ref:f,disabled:r&&!i,render:(0,Je.jsx)(ir,{...c,size:a,"aria-label":t,"aria-keyshortcuts":d?.ariaKeyShortcut,disabled:r,focusableWhenDisabled:i}),className:m,children:(0,Je.jsx)(Qt,{icon:s,size:24,className:zd.icon})}),(0,Je.jsxs)($i,{positioner:l,children:[t,d&&(0,Je.jsxs)(Je.Fragment,{children:[" ",(0,Je.jsx)("span",{"aria-hidden":"true",children:d.displayShortcut})]})]})]})})});var Fd=h(ae(),1),Vd=h(kt(),1),To=h(Z(),1),ss="data-wp-hash";function as(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Fg(document)),e.__wpStyleRuntime}function jg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ss}]`))if(o.getAttribute(ss)===t)return!0;return!1}function Wd(e,t,o){if(!e.head)return;let n=as(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(jg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Fg(e){let t=as();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Wd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function fr(e,t){let o=as();o.styles.set(e,t);for(let n of o.documents.keys())Wd(n,e,t)}typeof process>"u",fr("10f3806643","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");var Vg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",fr("693cd16544","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._08e8a2e44959f892__outset-ring--focus,._970d04df7376df67__outset-ring--focus-within-except-active,.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible,.cd83dfc2126a0846__outset-ring--focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active,.ecadb9e080e2dfa5__outset-ring--focus-parent-visible{@media not (prefers-reduced-motion){--_gcd-a-transition:outline 0.1s ease-out;transition:outline .1s ease-out}outline:0 solid transparent;outline-offset:1px}._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus-brand,var(--wp-admin-theme-color,#3858e9))}}}");var Wg={"outset-ring--focus":"_08e8a2e44959f892__outset-ring--focus","outset-ring--focus-except-active":"e25b2bdd7aa21721__outset-ring--focus-except-active","outset-ring--focus-visible":"d0541bc9dd9dc7b6__outset-ring--focus-visible","outset-ring--focus-within":"cd83dfc2126a0846__outset-ring--focus-within","outset-ring--focus-within-except-active":"_970d04df7376df67__outset-ring--focus-within-except-active","outset-ring--focus-within-visible":"c5cb3ee4bddaa8e4__outset-ring--focus-within-visible","outset-ring--focus-parent-visible":"ecadb9e080e2dfa5__outset-ring--focus-parent-visible"};typeof process>"u",fr("9f01019e30",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-fg-interactive-brand-active,var(--wp-admin-theme-color,#3858e9))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-fg-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-regular,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}}');var ur={link:"d4250949359b05ce__link","is-brand":"c6055659b8e2cd2c__is-brand","is-neutral":"_92e0dfcaeee15b88__is-neutral","is-unstyled":"cf122a9bf1035d42__is-unstyled","link-icon":"_0cb411afac4c86c7__link-icon"};typeof process>"u",fr("d5c1b736fd","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}");var Yg={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Qo=(0,Fd.forwardRef)(function({children:t,variant:o="default",tone:n="brand",openInNewTab:r=!1,render:i,className:s,...a},d){return gt({render:i,defaultTagName:"a",ref:d,props:be(a,{className:$(Yg.a,Vg["box-sizing"],Wg["outset-ring--focus"],o!=="unstyled"&&ur.link,o!=="unstyled"&&ur[`is-${n}`],o==="unstyled"&&ur["is-unstyled"],s),target:r?"_blank":void 0,children:(0,To.jsxs)(To.Fragment,{children:[t,r&&(0,To.jsx)("span",{className:ur["link-icon"],role:"img","aria-label":(0,Vd.__)("(opens in a new tab)")})]})})})});var $o={};_r($o,{ActionButton:()=>pu,ActionLink:()=>bu,Actions:()=>nu,CloseIcon:()=>cu,Description:()=>eu,Root:()=>Gd,Title:()=>Zd});var Po=h(ae(),1);import{speak as Ug}from"@wordpress/a11y";var Co=h(Z(),1),ls="data-wp-hash";function ds(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Xg(document)),e.__wpStyleRuntime}function Gg(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ls}]`))if(o.getAttribute(ls)===t)return!0;return!1}function Yd(e,t,o){if(!e.head)return;let n=ds(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Gg(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ls,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Xg(e){let t=ds();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Yd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Ud(e,t){let o=ds();o.styles.set(e,t);for(let n of o.documents.keys())Yd(n,e,t)}typeof process>"u",Ud("10f3806643","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");var Kg={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",Ud("80d31bc171","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}");var cs={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},qg={neutral:null,info:ji,warning:Ii,success:Vi,error:zi};function Zg(e){return e==="error"?"assertive":"polite"}function Jg(e){if(e){if(typeof e=="string")return e;try{return(0,Po.renderToString)(e)}catch{return}}}function Qg(e,t){let o=Jg(e);(0,Po.useEffect)(()=>{o&&Ug(o,t)},[o,t])}var Gd=(0,Po.forwardRef)(function({intent:t="neutral",children:o,icon:n,spokenMessage:r=o,politeness:i=Zg(t),render:s,...a},d){Qg(r,i);let l=n===null?null:n??qg[t],c=$(cs.notice,cs[`is-${t}`],Kg["box-sizing"]);return gt({defaultTagName:"div",render:s,ref:d,props:be({className:c,children:(0,Co.jsxs)(Co.Fragment,{children:[o,l&&(0,Co.jsx)(Qt,{className:cs.icon,icon:l})]})},a)})});var Xd=h(ae(),1);var qd=h(Z(),1),us="data-wp-hash";function fs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&eb(document)),e.__wpStyleRuntime}function $g(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${us}]`))if(o.getAttribute(us)===t)return!0;return!1}function Kd(e,t,o){if(!e.head)return;let n=fs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if($g(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(us,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function eb(e){let t=fs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Kd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function tb(e,t){let o=fs();o.styles.set(e,t);for(let n of o.documents.keys())Kd(n,e,t)}typeof process>"u",tb("80d31bc171","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}");var ob={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},Zd=(0,Xd.forwardRef)(function({className:t,...o},n){return(0,qd.jsx)(Ze,{ref:n,variant:"heading-md",className:$(ob.title,t),...o})});var Jd=h(ae(),1);var $d=h(Z(),1),ps="data-wp-hash";function ms(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&rb(document)),e.__wpStyleRuntime}function nb(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ps}]`))if(o.getAttribute(ps)===t)return!0;return!1}function Qd(e,t,o){if(!e.head)return;let n=ms(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(nb(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ps,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function rb(e){let t=ms();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Qd(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function ib(e,t){let o=ms();o.styles.set(e,t);for(let n of o.documents.keys())Qd(n,e,t)}typeof process>"u",ib("80d31bc171","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}");var sb={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},eu=(0,Jd.forwardRef)(function({className:t,...o},n){return(0,$d.jsx)(Ze,{ref:n,variant:"body-md",className:$(sb.description,t),...o})});var tu=h(ae(),1);var gs="data-wp-hash";function bs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&cb(document)),e.__wpStyleRuntime}function ab(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${gs}]`))if(o.getAttribute(gs)===t)return!0;return!1}function ou(e,t,o){if(!e.head)return;let n=bs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(ab(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(gs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function cb(e){let t=bs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)ou(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function lb(e,t){let o=bs();o.styles.set(e,t);for(let n of o.documents.keys())ou(n,e,t)}typeof process>"u",lb("80d31bc171","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}");var db={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},nu=(0,tu.forwardRef)(function({render:t,...o},n){return gt({defaultTagName:"div",render:t,ref:n,props:be({className:db.actions},o)})});var ru=h(ae(),1),iu=h(kt(),1);var au=h(Z(),1),hs="data-wp-hash";function ws(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&fb(document)),e.__wpStyleRuntime}function ub(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${hs}]`))if(o.getAttribute(hs)===t)return!0;return!1}function su(e,t,o){if(!e.head)return;let n=ws(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(ub(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(hs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function fb(e){let t=ws();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)su(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function pb(e,t){let o=ws();o.styles.set(e,t);for(let n of o.documents.keys())su(n,e,t)}typeof process>"u",pb("80d31bc171","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}");var mb={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},cu=(0,ru.forwardRef)(function({className:t,icon:o=Bi,label:n=(0,iu.__)("Dismiss"),...r},i){return(0,au.jsx)(is,{...r,ref:i,className:$(mb["close-icon"],t),variant:"minimal",size:"small",tone:"neutral",icon:o,label:n})});var du=h(ae(),1);var fu=h(Z(),1),vs="data-wp-hash";function _s(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&bb(document)),e.__wpStyleRuntime}function gb(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${vs}]`))if(o.getAttribute(vs)===t)return!0;return!1}function uu(e,t,o){if(!e.head)return;let n=_s(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(gb(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(vs,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function bb(e){let t=_s();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)uu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function hb(e,t){let o=_s();o.styles.set(e,t);for(let n of o.documents.keys())uu(n,e,t)}typeof process>"u",hb("80d31bc171","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}");var lu={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},pu=(0,du.forwardRef)(function({className:t,loading:o,loadingAnnouncement:n,variant:r,...i},s){return(0,fu.jsx)(ir,{...i,...o!==void 0?{loading:o,loadingAnnouncement:n??""}:{},ref:s,size:"compact",tone:"neutral",variant:r,className:$(lu["action-button"],lu[`is-action-button-${r}`],t)})});var mu=h(ae(),1);var xs=h(Z(),1),ys="data-wp-hash";function Rs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&vb(document)),e.__wpStyleRuntime}function wb(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${ys}]`))if(o.getAttribute(ys)===t)return!0;return!1}function gu(e,t,o){if(!e.head)return;let n=Rs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(wb(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(ys,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function vb(e){let t=Rs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)gu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function _b(e,t){let o=Rs();o.styles.set(e,t);for(let n of o.documents.keys())gu(n,e,t)}typeof process>"u",_b("80d31bc171","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:24px;--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-bg-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-fg-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._1904b570a89bb815__description{text-wrap:pretty}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#a9c6e7);--wp-ui-notice-text-color:var(--wpds-color-fg-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bc7c);--wp-ui-notice-text-color:var(--wpds-color-fg-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-warning-weak,#926300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#94d29e);--wp-ui-notice-text-color:var(--wpds-color-fg-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-bg-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#dab1aa);--wp-ui-notice-text-color:var(--wpds-color-fg-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-fg-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-bg-interactive-neutral-weak-active,#ededed))}}}");var yb={notice:"_4145abab73d17514__notice",icon:"d0a25570cb528528__icon",title:"b5397fb9d05389e3__title",description:"_1904b570a89bb815__description",actions:"_0a1270dcdd79c031__actions","action-button":"_983740ab855c4e09__action-button","action-link":"d329e7416d368d31__action-link","close-icon":"_487e6a5c1375f7dc__close-icon","is-info":"_531c140826094795__is-info","is-warning":"ae2e1004697cce95__is-warning","is-success":"_2e614a76af494837__is-success","is-error":"af00331ae17a0065__is-error","is-action-button-outline":"_8ddb8fb33fbf3d38__is-action-button-outline","is-action-button-minimal":"_77bbde495a8a0af3__is-action-button-minimal"},bu=(0,mu.forwardRef)(function({className:t,render:o,...n},r){return(0,xs.jsx)(Ze,{ref:r,className:$(yb["action-link"],t),...n,variant:"body-md",render:(0,xs.jsx)(Qo,{tone:"neutral",variant:"default",render:o})})});var hu=h(ae(),1),wu=h(Z(),1),vu=(0,hu.forwardRef)(({children:e,className:t,ariaLabel:o,as:n="div",...r},i)=>(0,wu.jsx)(n,{ref:i,className:$("admin-ui-navigable-region",t),"aria-label":o,role:"region",tabIndex:"-1",...r,children:e}));vu.displayName="NavigableRegion";var _u=vu;var xu=h(en(),1),{Fill:Ru,Slot:Su}=(0,xu.createSlotFill)("SidebarToggle");var Qe=h(Z(),1),Ss="data-wp-hash";function Es(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Rb(document)),e.__wpStyleRuntime}function xb(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ss}]`))if(o.getAttribute(Ss)===t)return!0;return!1}function Eu(e,t,o){if(!e.head)return;let n=Es(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(xb(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ss,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Rb(e){let t=Es();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Eu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Sb(e,t){let o=Es();o.styles.set(e,t);for(let n of o.documents.keys())Eu(n,e,t)}typeof process>"u",Sb("683dd16f2c","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var $t={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function Tu({headingLevel:e=1,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:s,showSidebarToggle:a=!0}){let d=`h${e}`;return(0,Qe.jsxs)(Eo,{direction:"column",className:$t.header,children:[(0,Qe.jsxs)(Eo,{className:$t["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Qe.jsxs)(Eo,{direction:"row",gap:"sm",align:"center",justify:"start",children:[a&&(0,Qe.jsx)(Su,{bubblesVirtually:!0,className:$t["sidebar-toggle-slot"]}),n&&(0,Qe.jsx)("div",{className:$t["header-visual"],"aria-hidden":"true",children:n}),r&&(0,Qe.jsx)(Ze,{className:$t["header-title"],render:(0,Qe.jsx)(d,{}),variant:"heading-lg",children:r}),t,o]}),s&&(0,Qe.jsx)(Eo,{align:"center",className:$t["header-actions"],direction:"row",gap:"sm",children:s})]}),i&&(0,Qe.jsx)(Ze,{render:(0,Qe.jsx)("p",{}),variant:"body-md",className:$t["header-subtitle"],children:i})]})}var tn=h(Z(),1),Ps="data-wp-hash";function Cs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Tb(document)),e.__wpStyleRuntime}function Eb(e,t){if(!e.head)return!1;for(let o of e.head.querySelectorAll(`style[${Ps}]`))if(o.getAttribute(Ps)===t)return!0;return!1}function Pu(e,t,o){if(!e.head)return;let n=Cs(),r=n.injectedStyles.get(e);if(r||(r=new Set,n.injectedStyles.set(e,r)),r.has(t))return;if(Eb(e,t)){r.add(t);return}let i=e.createElement("style");i.setAttribute(Ps,t),i.appendChild(e.createTextNode(o)),e.head.appendChild(i),r.add(t)}function Tb(e){let t=Cs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[o,n]of t.styles)Pu(e,o,n);return()=>{let o=t.documents.get(e);if(o!==void 0){if(o<=1){t.documents.delete(e);return}t.documents.set(e,o-1)}}}function Pb(e,t){let o=Cs();o.styles.set(e,t);for(let n of o.documents.keys())Pu(n,e,t)}typeof process>"u",Pb("683dd16f2c","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Ts={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function Cu({headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,children:s,className:a,actions:d,ariaLabel:l,hasPadding:c=!1,showSidebarToggle:f=!0}){let m=$(Ts.page,a);return(0,tn.jsxs)(_u,{className:m,ariaLabel:l??(typeof r=="string"?r:""),children:[(r||t||o||d||n)&&(0,tn.jsx)(Tu,{headingLevel:e,breadcrumbs:t,badges:o,visual:n,title:r,subTitle:i,actions:d,showSidebarToggle:f}),c?(0,tn.jsx)("div",{className:$(Ts.content,Ts["has-padding"]),children:s}):s]})}Cu.SidebarToggleFill=Ru;var ks=Cu;var ct=h(en()),Qu=h(on()),$u=h(ae()),Et=h(kt()),ef=h(pr());import{privateApis as Wb}from"@wordpress/connectors";if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='09e9b056ea']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","09e9b056ea"),e.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,rgba(202,158,198,.75) 0,rgba(202,158,198,0) 60%),radial-gradient(ellipse 55% 110% at 92% -15%,rgba(208,175,217,.7) 0,rgba(208,175,217,0) 65%),radial-gradient(ellipse 40% 85% at 58% -10%,rgba(170,130,184,.45) 0,rgba(170,130,184,0) 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,rgba(202,158,198,.75) 0,rgba(202,158,198,0) 60%),radial-gradient(ellipse 55% 110% at 8% -15%,rgba(208,175,217,.7) 0,rgba(208,175,217,0) 65%),radial-gradient(ellipse 40% 85% at 42% -10%,rgba(170,130,184,.45) 0,rgba(170,130,184,0) 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page>p{color:#949494}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")),document.head.appendChild(e)}var sn=h(en()),Is=h(pr()),an=h(on()),bt=h(ae()),Ge=h(kt()),Ku=h(As()),qu=h(Lu());var mr=h(en()),Vu=h(ae()),Wu=h(on()),eo=h(kt());import{__experimentalRegisterConnector as Cb,__experimentalConnectorItem as kb,__experimentalDefaultConnectorSettings as Ab,privateApis as Ob}from"@wordpress/connectors";var Iu=h(Yi()),{lock:F5,unlock:ko}=(0,Iu.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/routes");var Os=h(pr()),rn=h(on()),nn=h(ae()),ce=h(kt()),Mu=h(As());function Bu({file:e,settingName:t,connectorName:o,isInstalled:n,isActivated:r,keySource:i="none",initialIsConnected:s=!1}){let[a,d]=(0,nn.useState)(!1),[l,c]=(0,nn.useState)(!1),[f,m]=(0,nn.useState)(s),[p,u]=(0,nn.useState)(null),g=e?.replace(/\.php$/,""),w=g?.includes("/")?g.split("/")[0]:g,{derivedPluginStatus:y,canManagePlugins:_,currentApiKey:v,canInstallPlugins:b}=(0,rn.useSelect)(T=>{let A=T(Os.store),X=A.getEntityRecord("root","site")?.[t]??"",te=!!A.canUser("create",{kind:"root",name:"plugin"});if(!e)return{derivedPluginStatus:A.hasFinishedResolution("getEntityRecord",["root","site"])?"active":"checking",canManagePlugins:void 0,currentApiKey:X,canInstallPlugins:te};let F=A.getEntityRecord("root","plugin",g);if(!A.hasFinishedResolution("getEntityRecord",["root","plugin",g]))return{derivedPluginStatus:"checking",canManagePlugins:void 0,currentApiKey:X,canInstallPlugins:te};if(F)return{derivedPluginStatus:F.status==="active"||F.status==="network-active"?"active":"inactive",canManagePlugins:!0,currentApiKey:X,canInstallPlugins:te};let Q="not-installed";return r?Q="active":n&&(Q="inactive"),{derivedPluginStatus:Q,canManagePlugins:!1,currentApiKey:X,canInstallPlugins:te}},[g,t,n,r]),x=p??y,S=_,E=x==="active"&&f||p==="active"&&!!v,{saveEntityRecord:P,invalidateResolution:k}=(0,rn.useDispatch)(Os.store),{createSuccessNotice:C,createErrorNotice:L}=(0,rn.useDispatch)(Mu.store),N=async()=>{if(w){c(!0);try{await P("root","plugin",{slug:w,status:"active"},{throwOnError:!0}),u("active"),k("getEntityRecord",["root","site"]),d(!0),C((0,ce.sprintf)((0,ce.__)("Plugin for %s installed and activated successfully."),o),{id:"connector-plugin-install-success",type:"snackbar"})}catch{L((0,ce.sprintf)((0,ce.__)("Failed to install plugin for %s."),o),{id:"connector-plugin-install-error",type:"snackbar"})}finally{c(!1)}}},O=async()=>{if(e){c(!0);try{await P("root","plugin",{plugin:g,status:"active"},{throwOnError:!0}),u("active"),k("getEntityRecord",["root","site"]),d(!0),C((0,ce.sprintf)((0,ce.__)("Plugin for %s activated successfully."),o),{id:"connector-plugin-activate-success",type:"snackbar"})}catch{L((0,ce.sprintf)((0,ce.__)("Failed to activate plugin for %s."),o),{id:"connector-plugin-activate-error",type:"snackbar"})}finally{c(!1)}}};return{pluginStatus:x,canInstallPlugins:b,canActivatePlugins:S,isExpanded:a,setIsExpanded:d,isBusy:l,isConnected:E,currentApiKey:v,keySource:i,handleButtonClick:()=>{if(x==="not-installed"){if(b===!1)return;N()}else if(x==="inactive"){if(S===!1)return;O()}else d(!a)},getButtonLabel:()=>{if(l)return x==="not-installed"?(0,ce.__)("Installing\u2026"):(0,ce.__)("Activating\u2026");if(a)return(0,ce.__)("Cancel");if(E)return(0,ce.__)("Edit");switch(x){case"checking":return(0,ce.__)("Checking\u2026");case"not-installed":return(0,ce.__)("Install");case"inactive":return(0,ce.__)("Activate");case"active":return(0,ce.__)("Set up")}},saveApiKey:async T=>{let A=v;try{let te=(await P("root","site",{[t]:T},{throwOnError:!0}))?.[t];if(T&&(te===A||!te))throw new Error("It was not possible to connect to the provider using this key.");m(!0),C((0,ce.sprintf)((0,ce.__)("%s connected successfully."),o),{id:"connector-connect-success",type:"snackbar"})}catch(I){throw console.error("Failed to save API key:",I),I}},removeApiKey:async()=>{try{await P("root","site",{[t]:""},{throwOnError:!0}),m(!1),C((0,ce.sprintf)((0,ce.__)("%s disconnected."),o),{id:"connector-disconnect-success",type:"snackbar"})}catch(T){throw console.error("Failed to remove API key:",T),L((0,ce.sprintf)((0,ce.__)("Failed to disconnect %s."),o),{id:"connector-disconnect-error",type:"snackbar"}),T}}}}var Hu=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",fill:"currentColor"})),zu=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z",fill:"#D97757"})),Du=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z",fill:"#F0F0F0"}),React.createElement("path",{d:"M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z",fill:"#949494"})),ju=()=>React.createElement("svg",{width:"40",height:"40",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("rect",{width:"44",height:"44",fill:"#357B49",rx:"6"}),React.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z",clipRule:"evenodd"})),Fu=()=>React.createElement("svg",{width:"40",height:"40",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-0)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-1)"}),React.createElement("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"url(#lobe-icons-gemini-fill-2)"}),React.createElement("defs",null,React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-0",x1:"7",x2:"11",y1:"15.5",y2:"12"},React.createElement("stop",{stopColor:"#08B962"}),React.createElement("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-1",x1:"8",x2:"11.5",y1:"5.5",y2:"11"},React.createElement("stop",{stopColor:"#F94543"}),React.createElement("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})),React.createElement("linearGradient",{gradientUnits:"userSpaceOnUse",id:"lobe-icons-gemini-fill-2",x1:"3.5",x2:"17.5",y1:"13.5",y2:"12"},React.createElement("stop",{stopColor:"#FABC12"}),React.createElement("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"}))));var{store:Nb}=ko(Ob);function Yu(){try{return JSON.parse(document.getElementById("wp-script-module-data-options-connectors-wp-admin")?.textContent??"{}")}catch{return{}}}function Ns(){return Yu().connectors??{}}function Uu(){return!!Yu().isFileModDisabled}var Lb={google:Fu,openai:Hu,anthropic:zu,akismet:ju};function Ib(e,t){if(t)return React.createElement("img",{src:t,alt:"",width:40,height:40});let o=Lb[e];return React.createElement(o||Du,null)}var Mb=()=>React.createElement("span",{style:{color:"#345b37",backgroundColor:"#eff8f0",padding:"4px 12px",borderRadius:"2px",fontSize:"13px",fontWeight:500,whiteSpace:"nowrap"}},(0,eo.__)("Connected")),Bb=({slug:e})=>React.createElement(Qo,{href:(0,eo.sprintf)((0,eo.__)("https://wordpress.org/plugins/%s/"),e),openInNewTab:!0},(0,eo.__)("Learn more")),Hb=()=>React.createElement(Pi,null,(0,eo.__)("Not available"));function zb({name:e,description:t,logo:o,authentication:n,plugin:r}){let i=n?.method==="api_key"?n:void 0,s=i?.settingName??"",a=i?.credentialsUrl??void 0,d=r?.file?.replace(/\.php$/,""),l=d?.includes("/")?d.split("/")[0]:d,c;try{a&&(c=new URL(a).hostname)}catch{}let{pluginStatus:f,canInstallPlugins:m,canActivatePlugins:p,isExpanded:u,setIsExpanded:g,isBusy:w,isConnected:y,currentApiKey:_,keySource:v,handleButtonClick:b,getButtonLabel:x,saveApiKey:S,removeApiKey:E}=Bu({file:r?.file,settingName:s,connectorName:e,isInstalled:r?.isInstalled,isActivated:r?.isActivated,keySource:i?.keySource,initialIsConnected:i?.isConnected}),P=v==="env"||v==="constant",k=f==="not-installed"&&m===!1||f==="inactive"&&p===!1,C=!k,L=(0,Vu.useRef)(null);return React.createElement(kb,{className:l?`connector-item--${l}`:void 0,logo:o,name:e,description:t,actionArea:React.createElement(mr.__experimentalHStack,{spacing:3,expanded:!1},y&&React.createElement(Mb,null),k&&(l?React.createElement(Bb,{slug:l}):React.createElement(Hb,null)),C&&React.createElement(mr.Button,{ref:L,variant:u||y?"tertiary":"secondary",size:"compact",onClick:b,disabled:f==="checking"||w,isBusy:w,accessibleWhenDisabled:!0},x()))},u&&f==="active"&&React.createElement(Ab,{key:y?"connected":"setup",initialValue:P?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":_,helpUrl:a,helpLabel:c,readOnly:y||P,keySource:v,onRemove:P?void 0:async()=>{await E(),L.current?.focus()},onSave:async N=>{await S(N),g(!1),L.current?.focus()}}))}function Gu(){let e=Ns(),t=o=>o.replace(/[^a-z0-9-_]/gi,"-");for(let[o,n]of Object.entries(e)){if(o==="akismet"&&!n.plugin?.isInstalled)continue;let{authentication:r}=n,i=t(o),s={name:n.name,description:n.description,type:n.type,logo:Ib(o,n.logoUrl),authentication:r,plugin:n.plugin},a=ko((0,Wu.select)(Nb)).getConnector(i);r.method==="api_key"&&!a?.render&&(s.render=zb),Cb(i,s)}}function Xu(){return React.createElement("div",{className:"ai-plugin-callout__decoration","aria-hidden":"true"},React.createElement("svg",{viewBox:"0 0 248 248",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",focusable:"false",style:{width:"100%",height:"100%"}},React.createElement("image",{href:"data:image/png;base64,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",width:"248",height:"248",style:{mixBlendMode:"multiply"}})))}var Db="ai",jb="ai-wp-admin",Ls="ai/ai",Fb="https://wordpress.org/plugins/ai/",Ms=Object.values(Ns()),Vb=Ms.some(e=>e.type==="ai_provider"),Zu=[];for(let e of Ms)e.type==="ai_provider"&&e.authentication.method==="api_key"&&Zu.push(e.authentication.settingName);function Ju(){let[e,t]=(0,bt.useState)(!1),[o,n]=(0,bt.useState)(!1),r=(0,bt.useRef)(null);(0,bt.useEffect)(()=>{o&&r.current?.focus()},[o]);let i=(0,bt.useRef)(Ms.some(x=>x.type==="ai_provider"&&x.authentication.method==="api_key"&&x.authentication.isConnected)).current,{pluginStatus:s,canInstallPlugins:a,canManagePlugins:d,hasConnectedProvider:l}=(0,an.useSelect)(x=>{let S=x(Is.store),E=!!S.canUser("create",{kind:"root",name:"plugin"}),P=S.getEntityRecord("root","site"),k=i||Zu.some(N=>!!P?.[N]),C=S.getEntityRecord("root","plugin",Ls);return S.hasFinishedResolution("getEntityRecord",["root","plugin",Ls])?C?{pluginStatus:C.status==="active"?"active":"inactive",canInstallPlugins:E,canManagePlugins:!0,hasConnectedProvider:k}:{pluginStatus:"not-installed",canInstallPlugins:E,canManagePlugins:E,hasConnectedProvider:k}:{pluginStatus:"checking",canInstallPlugins:E,canManagePlugins:void 0,hasConnectedProvider:k}},[]),{saveEntityRecord:c}=(0,an.useDispatch)(Is.store),{createSuccessNotice:f,createErrorNotice:m}=(0,an.useDispatch)(Ku.store),p=async()=>{t(!0);try{await c("root","plugin",{slug:Db,status:"active"},{throwOnError:!0}),n(!0),f((0,Ge.__)("AI plugin installed and activated successfully."),{id:"ai-plugin-install-success",type:"snackbar"})}catch{m((0,Ge.__)("Failed to install the AI plugin."),{id:"ai-plugin-install-error",type:"snackbar"})}finally{t(!1)}},u=async()=>{t(!0);try{await c("root","plugin",{plugin:Ls,status:"active"},{throwOnError:!0}),n(!0),f((0,Ge.__)("AI plugin activated successfully."),{id:"ai-plugin-activate-success",type:"snackbar"})}catch{m((0,Ge.__)("Failed to activate the AI plugin."),{id:"ai-plugin-activate-error",type:"snackbar"})}finally{t(!1)}};if(!Vb||s==="checking"||s==="active"&&i&&!o||s==="inactive"&&d===!1)return null;let g=s==="active"&&!l,w=s==="active"&&l&&(!i||o),y=s==="not-installed"||s==="inactive",_=s==="not-installed"&&a===!1,v=()=>w?(0,Ge.__)("The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"):g?(0,Ge.__)("The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>"):(0,Ge.__)("The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>"),b=()=>s==="not-installed"?{label:e?(0,Ge.__)("Installing\u2026"):(0,Ge.__)("Install the AI plugin"),disabled:e,onClick:e?void 0:p}:{label:e?(0,Ge.__)("Activating\u2026"):(0,Ge.__)("Activate the AI plugin"),disabled:e,onClick:e?void 0:u};return React.createElement("div",{className:"ai-plugin-callout"},React.createElement("div",{className:"ai-plugin-callout__content"},React.createElement("p",null,(0,bt.createInterpolateElement)(v(),{strong:React.createElement("strong",null),a:React.createElement(sn.ExternalLink,{href:Fb})})),!_&&(y?React.createElement(sn.Button,{variant:"primary",size:"compact",isBusy:e,disabled:b().disabled,accessibleWhenDisabled:!0,onClick:b().onClick},b().label):React.createElement(sn.Button,{ref:r,variant:"secondary",size:"compact",href:(0,qu.addQueryArgs)("options-general.php",{page:jb})},(0,Ge.__)("Control features in the AI plugin")))),React.createElement(Xu,null))}var{store:Yb}=ko(Wb);Gu();function Ub(){let e=Uu(),{connectors:t,canInstallPlugins:o,isAiPluginInstalled:n}=(0,Qu.useSelect)(l=>{let c=l(ef.store),f=c.getEntityRecord("root","plugin","ai/ai");return{connectors:ko(l(Yb)).getConnectors(),canInstallPlugins:c.canUser("create",{kind:"root",name:"plugin"}),isAiPluginInstalled:!!f}},[]),r=t.filter(l=>l.render),i=Array.from(new Set(t.filter(l=>l.type==="ai_provider").map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l))).sort(),s=new Set(t.filter(l=>l.plugin?.isInstalled).map(l=>l.plugin?.file?.split("/")[0]).filter(l=>!!l));n&&s.add("ai");let a=["ai",...i].filter(l=>!s.has(l)),d=r.length===0;return React.createElement(ks,{title:(0,Et.__)("Connectors"),subTitle:(0,Et.__)("All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere.")},React.createElement("div",{className:`connectors-page${d?" connectors-page--empty":""}`},a.length>0&&(e||!o)&&React.createElement($o.Root,{intent:"info",className:"connectors-page__file-mods-notice"},React.createElement($o.Description,null,e?(0,Et.__)("Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow."):(0,Et.__)("You do not have permission to install plugins. Please ask a site administrator to install them for you."))),d?React.createElement(ct.__experimentalVStack,{alignment:"center",spacing:3,style:{maxWidth:480}},React.createElement(ct.__experimentalVStack,{alignment:"center",spacing:2},React.createElement(ct.__experimentalHeading,{level:2,size:15,weight:600},(0,Et.__)("No connectors yet")),React.createElement(ct.__experimentalText,{size:12},(0,Et.__)("Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place."))),React.createElement(ct.Button,{variant:"secondary",href:"plugin-install.php",__next40pxDefaultSize:!0},(0,Et.__)("Learn more"))):React.createElement(ct.__experimentalVStack,{spacing:3},React.createElement(Ju,null),React.createElement(ct.__experimentalVStack,{spacing:3,role:"list"},t.map(l=>l.render?React.createElement(l.render,{key:l.slug,slug:l.slug,name:l.name,description:l.description,type:l.type,logo:l.logo,authentication:l.authentication,plugin:l.plugin}):null))),o&&!e&&React.createElement("p",null,(0,$u.createInterpolateElement)((0,Et.__)("If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available."),{a:React.createElement("a",{href:"plugin-install.php?s=connector&tab=search&type=tag"})}))))}function Gb(){return React.createElement(Ub,null)}var Xb=Gb;export{Xb as stage}; /*! Bundled license information: use-sync-external-store/cjs/use-sync-external-store-shim.production.js: diff --git a/src/wp-includes/build/routes/font-list/content.js b/src/wp-includes/build/routes/font-list/content.js index 079635609d627..f80128ac628b6 100644 --- a/src/wp-includes/build/routes/font-list/content.js +++ b/src/wp-includes/build/routes/font-list/content.js @@ -13,6 +13,10 @@ var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? requir var __commonJS = (cb, mod) => function __require4() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; +var __export = (target, all) => { + for (var name2 in all) + __defProp(target, name2, { get: all[name2], enumerable: true }); +}; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) @@ -58,6 +62,168 @@ var require_jsx_runtime = __commonJS({ } }); +// vendor-external:react-dom +var require_react_dom = __commonJS({ + "vendor-external:react-dom"(exports, module) { + module.exports = window.ReactDOM; + } +}); + +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +var require_use_sync_external_store_shim_development = __commonJS({ + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { + "use strict"; + (function() { + function is(x2, y2) { + return x2 === y2 && (0 !== x2 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; + } + function useSyncExternalStore$2(subscribe, getSnapshot) { + didWarnOld18Alpha || void 0 === React48.startTransition || (didWarnOld18Alpha = true, console.error( + "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." + )); + var value = getSnapshot(); + if (!didWarnUncachedGetSnapshot) { + var cachedValue = getSnapshot(); + objectIs(value, cachedValue) || (console.error( + "The result of getSnapshot should be cached to avoid an infinite loop" + ), didWarnUncachedGetSnapshot = true); + } + cachedValue = useState29({ + inst: { value, getSnapshot } + }); + var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; + useLayoutEffect4( + function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }, + [subscribe, value, getSnapshot] + ); + useEffect20( + function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + return subscribe(function() { + checkIfSnapshotChanged(inst) && forceUpdate({ inst }); + }); + }, + [subscribe] + ); + useDebugValue2(value); + return value; + } + function checkIfSnapshotChanged(inst) { + var latestGetSnapshot = inst.getSnapshot; + inst = inst.value; + try { + var nextValue = latestGetSnapshot(); + return !objectIs(inst, nextValue); + } catch (error) { + return true; + } + } + function useSyncExternalStore$1(subscribe, getSnapshot) { + return getSnapshot(); + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React48 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState29 = React48.useState, useEffect20 = React48.useEffect, useLayoutEffect4 = React48.useLayoutEffect, useDebugValue2 = React48.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; + exports.useSyncExternalStore = void 0 !== React48.useSyncExternalStore ? React48.useSyncExternalStore : shim; + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); + })(); + } +}); + +// node_modules/use-sync-external-store/shim/index.js +var require_shim = __commonJS({ + "node_modules/use-sync-external-store/shim/index.js"(exports, module) { + "use strict"; + if (false) { + module.exports = null; + } else { + module.exports = require_use_sync_external_store_shim_development(); + } + } +}); + +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +var require_with_selector_development = __commonJS({ + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) { + "use strict"; + (function() { + function is(x2, y2) { + return x2 === y2 && (0 !== x2 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React48 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore2 = shim.useSyncExternalStore, useRef23 = React48.useRef, useEffect20 = React48.useEffect, useMemo29 = React48.useMemo, useDebugValue2 = React48.useDebugValue; + exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { + var instRef = useRef23(null); + if (null === instRef.current) { + var inst = { hasValue: false, value: null }; + instRef.current = inst; + } else inst = instRef.current; + instRef = useMemo29( + function() { + function memoizedSelector(nextSnapshot) { + if (!hasMemo) { + hasMemo = true; + memoizedSnapshot = nextSnapshot; + nextSnapshot = selector(nextSnapshot); + if (void 0 !== isEqual && inst.hasValue) { + var currentSelection = inst.value; + if (isEqual(currentSelection, nextSnapshot)) + return memoizedSelection = currentSelection; + } + return memoizedSelection = nextSnapshot; + } + currentSelection = memoizedSelection; + if (objectIs(memoizedSnapshot, nextSnapshot)) + return currentSelection; + var nextSelection = selector(nextSnapshot); + if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) + return memoizedSnapshot = nextSnapshot, currentSelection; + memoizedSnapshot = nextSnapshot; + return memoizedSelection = nextSelection; + } + var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; + return [ + function() { + return memoizedSelector(getSnapshot()); + }, + null === maybeGetServerSnapshot ? void 0 : function() { + return memoizedSelector(maybeGetServerSnapshot()); + } + ]; + }, + [getSnapshot, getServerSnapshot, selector, isEqual] + ); + var value = useSyncExternalStore2(subscribe, instRef[0], instRef[1]); + useEffect20( + function() { + inst.hasValue = true; + inst.value = value; + }, + [value] + ); + useDebugValue2(value); + return value; + }; + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); + })(); + } +}); + +// node_modules/use-sync-external-store/shim/with-selector.js +var require_with_selector = __commonJS({ + "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { + "use strict"; + if (false) { + module.exports = null; + } else { + module.exports = require_with_selector_development(); + } + } +}); + // package-external:@wordpress/primitives var require_primitives = __commonJS({ "package-external:@wordpress/primitives"(exports, module) { @@ -72,6 +238,13 @@ var require_compose = __commonJS({ } }); +// package-external:@wordpress/theme +var require_theme = __commonJS({ + "package-external:@wordpress/theme"(exports, module) { + module.exports = window.wp.theme; + } +}); + // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { @@ -324,17 +497,62 @@ function clsx() { } var clsx_default = clsx; -// node_modules/@base-ui/utils/esm/useRefWithInit.js +// node_modules/@base-ui/utils/esm/safeReact.js var React2 = __toESM(require_react(), 1); +var SafeReact = { + ...React2 +}; + +// node_modules/@base-ui/utils/esm/useRefWithInit.js +var React3 = __toESM(require_react(), 1); var UNINITIALIZED = {}; function useRefWithInit(init, initArg) { - const ref = React2.useRef(UNINITIALIZED); + const ref = React3.useRef(UNINITIALIZED); if (ref.current === UNINITIALIZED) { ref.current = init(initArg); } return ref; } +// node_modules/@base-ui/utils/esm/useStableCallback.js +var useInsertionEffect = SafeReact.useInsertionEffect; +var useSafeInsertionEffect = ( + // React 17 doesn't have useInsertionEffect. + useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. + useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() +); +function useStableCallback(callback) { + const stable = useRefWithInit(createStableCallback).current; + stable.next = callback; + useSafeInsertionEffect(stable.effect); + return stable.trampoline; +} +function createStableCallback() { + const stable = { + next: void 0, + callback: assertNotCalled, + trampoline: (...args) => stable.callback?.(...args), + effect: () => { + stable.callback = stable.next; + } + }; + return stable; +} +function assertNotCalled() { + if (true) { + throw ( + /* minify-error-disabled */ + new Error("Base UI: Cannot call an event handler while rendering.") + ); + } +} + +// node_modules/@base-ui/utils/esm/useIsoLayoutEffect.js +var React4 = __toESM(require_react(), 1); +var noop = () => { +}; +var useIsoLayoutEffect = typeof document !== "undefined" ? React4.useLayoutEffect : noop; + // node_modules/@base-ui/utils/esm/warn.js var set; if (true) { @@ -350,8 +568,17 @@ function warn(...messages) { } } -// node_modules/@base-ui/react/esm/internals/useRenderElement.js +// node_modules/@base-ui/react/esm/internals/direction-context/DirectionContext.js var React5 = __toESM(require_react(), 1); +var DirectionContext = /* @__PURE__ */ React5.createContext(void 0); +if (true) DirectionContext.displayName = "DirectionContext"; +function useDirection() { + const context = React5.useContext(DirectionContext); + return context?.direction ?? "ltr"; +} + +// node_modules/@base-ui/react/esm/internals/useRenderElement.js +var React8 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/useMergedRefs.js function useMergedRefs(a2, b2, c2, d2) { @@ -379,7 +606,7 @@ function didChange(forkRef, a2, b2, c2, d2) { return forkRef.refs[0] !== a2 || forkRef.refs[1] !== b2 || forkRef.refs[2] !== c2 || forkRef.refs[3] !== d2; } function didChangeN(forkRef, newRefs) { - return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]); + return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); } function update(forkRef, refs) { forkRef.refs = refs; @@ -443,18 +670,18 @@ function update(forkRef, refs) { } // node_modules/@base-ui/utils/esm/getReactElementRef.js -var React4 = __toESM(require_react(), 1); +var React7 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/reactVersion.js -var React3 = __toESM(require_react(), 1); -var majorVersion = parseInt(React3.version, 10); +var React6 = __toESM(require_react(), 1); +var majorVersion = parseInt(React6.version, 10); function isReactVersionAtLeast(reactVersionToCheck) { return majorVersion >= reactVersionToCheck; } // node_modules/@base-ui/utils/esm/getReactElementRef.js function getReactElementRef(element) { - if (!/* @__PURE__ */ React4.isValidElement(element)) { + if (!/* @__PURE__ */ React7.isValidElement(element)) { return null; } const reactElement = element; @@ -480,6 +707,8 @@ function mergeObjects(a2, b2) { } // node_modules/@base-ui/utils/esm/empty.js +function NOOP() { +} var EMPTY_ARRAY = Object.freeze([]); var EMPTY_OBJECT = Object.freeze({}); @@ -690,12 +919,12 @@ function useRenderElementProps(componentProps, params = {}) { state = EMPTY_OBJECT, ref, props, - stateAttributesMapping, + stateAttributesMapping: stateAttributesMapping3, enabled = true } = params; const className = enabled ? resolveClassName(classNameProp, state) : void 0; const style = enabled ? resolveStyle(styleProp, state) : void 0; - const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT; + const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping3) : EMPTY_OBJECT; const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; if (typeof document !== "undefined") { @@ -739,63 +968,7966 @@ function evaluateRenderProp(element, render, props, state) { mergedProps.ref = props.ref; let newElement = render; if (newElement?.$$typeof === REACT_LAZY_TYPE) { - const children = React5.Children.toArray(render); + const children = React8.Children.toArray(render); newElement = children[0]; } if (true) { - if (!/* @__PURE__ */ React5.isValidElement(newElement)) { + if (!/* @__PURE__ */ React8.isValidElement(newElement)) { throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join("\n")); } } - return /* @__PURE__ */ React5.cloneElement(newElement, mergedProps); + return /* @__PURE__ */ React8.cloneElement(newElement, mergedProps); } if (element) { if (typeof element === "string") { return renderTag(element, props); } } - throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8)); + throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8)); +} +function warnIfRenderPropLooksLikeComponent(renderFn) { + const functionName = renderFn.name; + if (functionName.length === 0) { + return; + } + if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { + return; + } + if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { + return; + } + warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); +} +function renderTag(Tag, props) { + if (Tag === "button") { + return /* @__PURE__ */ (0, import_react.createElement)("button", { + type: "button", + ...props, + key: props.key + }); + } + if (Tag === "img") { + return /* @__PURE__ */ (0, import_react.createElement)("img", { + alt: "", + ...props, + key: props.key + }); + } + return /* @__PURE__ */ React8.createElement(Tag, props); +} + +// node_modules/@base-ui/react/esm/internals/reason-parts.js +var reason_parts_exports = {}; +__export(reason_parts_exports, { + cancelOpen: () => cancelOpen, + chipRemovePress: () => chipRemovePress, + clearPress: () => clearPress, + closePress: () => closePress, + closeWatcher: () => closeWatcher, + decrementPress: () => decrementPress, + disabled: () => disabled, + drag: () => drag, + escapeKey: () => escapeKey, + focusOut: () => focusOut, + imperativeAction: () => imperativeAction, + incrementPress: () => incrementPress, + initial: () => initial, + inputBlur: () => inputBlur, + inputChange: () => inputChange, + inputClear: () => inputClear, + inputPaste: () => inputPaste, + inputPress: () => inputPress, + itemPress: () => itemPress, + keyboard: () => keyboard, + linkPress: () => linkPress, + listNavigation: () => listNavigation, + missing: () => missing, + none: () => none, + outsidePress: () => outsidePress, + pointer: () => pointer, + scrub: () => scrub, + siblingOpen: () => siblingOpen, + swipe: () => swipe, + trackPress: () => trackPress, + triggerFocus: () => triggerFocus, + triggerHover: () => triggerHover, + triggerPress: () => triggerPress, + wheel: () => wheel, + windowResize: () => windowResize +}); +var none = "none"; +var triggerPress = "trigger-press"; +var triggerHover = "trigger-hover"; +var triggerFocus = "trigger-focus"; +var outsidePress = "outside-press"; +var itemPress = "item-press"; +var closePress = "close-press"; +var linkPress = "link-press"; +var clearPress = "clear-press"; +var chipRemovePress = "chip-remove-press"; +var trackPress = "track-press"; +var incrementPress = "increment-press"; +var decrementPress = "decrement-press"; +var inputChange = "input-change"; +var inputClear = "input-clear"; +var inputBlur = "input-blur"; +var inputPaste = "input-paste"; +var inputPress = "input-press"; +var focusOut = "focus-out"; +var escapeKey = "escape-key"; +var closeWatcher = "close-watcher"; +var listNavigation = "list-navigation"; +var keyboard = "keyboard"; +var pointer = "pointer"; +var drag = "drag"; +var wheel = "wheel"; +var scrub = "scrub"; +var cancelOpen = "cancel-open"; +var siblingOpen = "sibling-open"; +var disabled = "disabled"; +var missing = "missing"; +var initial = "initial"; +var imperativeAction = "imperative-action"; +var swipe = "swipe"; +var windowResize = "window-resize"; + +// node_modules/@base-ui/react/esm/internals/createBaseUIEventDetails.js +function createChangeEventDetails(reason, event, trigger, customProperties) { + let canceled = false; + let allowPropagation = false; + const custom = customProperties ?? EMPTY_OBJECT; + const details = { + reason, + event: event ?? new Event("base-ui"), + cancel() { + canceled = true; + }, + allowPropagation() { + allowPropagation = true; + }, + get isCanceled() { + return canceled; + }, + get isPropagationAllowed() { + return allowPropagation; + }, + trigger, + ...custom + }; + return details; +} + +// node_modules/@base-ui/utils/esm/useId.js +var React9 = __toESM(require_react(), 1); +var globalId = 0; +function useGlobalId(idOverride, prefix = "mui") { + const [defaultId, setDefaultId] = React9.useState(idOverride); + const id = idOverride || defaultId; + React9.useEffect(() => { + if (defaultId == null) { + globalId += 1; + setDefaultId(`${prefix}-${globalId}`); + } + }, [defaultId, prefix]); + return id; +} +var maybeReactUseId = SafeReact.useId; +function useId(idOverride, prefix) { + if (maybeReactUseId !== void 0) { + const reactId = maybeReactUseId(); + return idOverride ?? (prefix ? `${prefix}-${reactId}` : reactId); + } + return useGlobalId(idOverride, prefix); +} + +// node_modules/@base-ui/react/esm/internals/useBaseUiId.js +function useBaseUiId(idOverride) { + return useId(idOverride, "base-ui"); +} + +// node_modules/@base-ui/react/esm/internals/useTransitionStatus.js +var React11 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/useOnMount.js +var React10 = __toESM(require_react(), 1); +var EMPTY = []; +function useOnMount(fn) { + React10.useEffect(fn, EMPTY); +} + +// node_modules/@base-ui/utils/esm/useAnimationFrame.js +var EMPTY2 = null; +var LAST_RAF = globalThis.requestAnimationFrame; +var Scheduler = class { + /* This implementation uses an array as a backing data-structure for frame callbacks. + * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it + * never calls the native `cancelAnimationFrame` if there are no frames left. This can + * be much more efficient if there is a call pattern that alterns as + * "request-cancel-request-cancel-…". + * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation + * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ + callbacks = []; + callbacksCount = 0; + nextId = 1; + startId = 1; + isScheduled = false; + tick = (timestamp) => { + this.isScheduled = false; + const currentCallbacks = this.callbacks; + const currentCallbacksCount = this.callbacksCount; + this.callbacks = []; + this.callbacksCount = 0; + this.startId = this.nextId; + if (currentCallbacksCount > 0) { + for (let i2 = 0; i2 < currentCallbacks.length; i2 += 1) { + currentCallbacks[i2]?.(timestamp); + } + } + }; + request(fn) { + const id = this.nextId; + this.nextId += 1; + this.callbacks.push(fn); + this.callbacksCount += 1; + const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); + if (!this.isScheduled || didRAFChange) { + requestAnimationFrame(this.tick); + this.isScheduled = true; + } + return id; + } + cancel(id) { + const index2 = id - this.startId; + if (index2 < 0 || index2 >= this.callbacks.length) { + return; + } + this.callbacks[index2] = null; + this.callbacksCount -= 1; + } +}; +var scheduler = new Scheduler(); +var AnimationFrame = class _AnimationFrame { + static create() { + return new _AnimationFrame(); + } + static request(fn) { + return scheduler.request(fn); + } + static cancel(id) { + return scheduler.cancel(id); + } + currentId = EMPTY2; + /** + * Executes `fn` after `delay`, clearing any previously scheduled call. + */ + request(fn) { + this.cancel(); + this.currentId = scheduler.request(() => { + this.currentId = EMPTY2; + fn(); + }); + } + cancel = () => { + if (this.currentId !== EMPTY2) { + scheduler.cancel(this.currentId); + this.currentId = EMPTY2; + } + }; + disposeEffect = () => { + return this.cancel; + }; +}; +function useAnimationFrame() { + const timeout = useRefWithInit(AnimationFrame.create).current; + useOnMount(timeout.disposeEffect); + return timeout; +} + +// node_modules/@base-ui/react/esm/internals/useTransitionStatus.js +function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) { + const [transitionStatus, setTransitionStatus] = React11.useState(open && enableIdleState ? "idle" : void 0); + const [mounted, setMounted] = React11.useState(open); + if (open && !mounted) { + setMounted(true); + setTransitionStatus("starting"); + } + if (!open && mounted && transitionStatus !== "ending" && !deferEndingState) { + setTransitionStatus("ending"); + } + if (!open && !mounted && transitionStatus === "ending") { + setTransitionStatus(void 0); + } + useIsoLayoutEffect(() => { + if (!open && mounted && transitionStatus !== "ending" && deferEndingState) { + const frame = AnimationFrame.request(() => { + setTransitionStatus("ending"); + }); + return () => { + AnimationFrame.cancel(frame); + }; + } + return void 0; + }, [open, mounted, transitionStatus, deferEndingState]); + useIsoLayoutEffect(() => { + if (!open || enableIdleState) { + return void 0; + } + const frame = AnimationFrame.request(() => { + setTransitionStatus(void 0); + }); + return () => { + AnimationFrame.cancel(frame); + }; + }, [enableIdleState, open]); + useIsoLayoutEffect(() => { + if (!open || !enableIdleState) { + return void 0; + } + if (open && mounted && transitionStatus !== "idle") { + setTransitionStatus("starting"); + } + const frame = AnimationFrame.request(() => { + setTransitionStatus("idle"); + }); + return () => { + AnimationFrame.cancel(frame); + }; + }, [enableIdleState, open, mounted, transitionStatus]); + return { + mounted, + setMounted, + transitionStatus + }; +} + +// node_modules/@base-ui/react/esm/internals/stateAttributesMapping.js +var TransitionStatusDataAttributes = /* @__PURE__ */ (function(TransitionStatusDataAttributes2) { + TransitionStatusDataAttributes2["startingStyle"] = "data-starting-style"; + TransitionStatusDataAttributes2["endingStyle"] = "data-ending-style"; + return TransitionStatusDataAttributes2; +})({}); +var STARTING_HOOK = { + [TransitionStatusDataAttributes.startingStyle]: "" +}; +var ENDING_HOOK = { + [TransitionStatusDataAttributes.endingStyle]: "" +}; +var transitionStatusMapping = { + transitionStatus(value) { + if (value === "starting") { + return STARTING_HOOK; + } + if (value === "ending") { + return ENDING_HOOK; + } + return null; + } +}; + +// node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +function hasWindow() { + return typeof window !== "undefined"; +} +function getNodeName(node) { + if (isNode(node)) { + return (node.nodeName || "").toLowerCase(); + } + return "#document"; +} +function getWindow(node) { + var _node$ownerDocument; + return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; +} +function getDocumentElement(node) { + var _ref; + return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; +} +function isNode(value) { + if (!hasWindow()) { + return false; + } + return value instanceof Node || value instanceof getWindow(value).Node; +} +function isElement(value) { + if (!hasWindow()) { + return false; + } + return value instanceof Element || value instanceof getWindow(value).Element; +} +function isHTMLElement(value) { + if (!hasWindow()) { + return false; + } + return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; +} +function isShadowRoot(value) { + if (!hasWindow() || typeof ShadowRoot === "undefined") { + return false; + } + return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; +} +function isOverflowElement(element) { + const { + overflow, + overflowX, + overflowY, + display + } = getComputedStyle2(element); + return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; +} +function isTableElement(element) { + return /^(table|td|th)$/.test(getNodeName(element)); +} +function isTopLayer(element) { + try { + if (element.matches(":popover-open")) { + return true; + } + } catch (_e) { + } + try { + return element.matches(":modal"); + } catch (_e) { + return false; + } +} +var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; +var containRe = /paint|layout|strict|content/; +var isNotNone = (value) => !!value && value !== "none"; +var isWebKitValue; +function isContainingBlock(elementOrCss) { + const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; + return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || ""); +} +function getContainingBlock(element) { + let currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { + if (isContainingBlock(currentNode)) { + return currentNode; + } else if (isTopLayer(currentNode)) { + return null; + } + currentNode = getParentNode(currentNode); + } + return null; +} +function isWebKit() { + if (isWebKitValue == null) { + isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); + } + return isWebKitValue; +} +function isLastTraversableNode(node) { + return /^(html|body|#document)$/.test(getNodeName(node)); +} +function getComputedStyle2(element) { + return getWindow(element).getComputedStyle(element); +} +function getNodeScroll(element) { + if (isElement(element)) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + return { + scrollLeft: element.scrollX, + scrollTop: element.scrollY + }; +} +function getParentNode(node) { + if (getNodeName(node) === "html") { + return node; + } + const result = ( + // Step into the shadow DOM of the parent of a slotted node. + node.assignedSlot || // DOM Element detected. + node.parentNode || // ShadowRoot detected. + isShadowRoot(node) && node.host || // Fallback. + getDocumentElement(node) + ); + return isShadowRoot(result) ? result.host : result; +} +function getNearestOverflowAncestor(node) { + const parentNode = getParentNode(node); + if (isLastTraversableNode(parentNode)) { + return node.ownerDocument ? node.ownerDocument.body : node.body; + } + if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { + return parentNode; + } + return getNearestOverflowAncestor(parentNode); +} +function getOverflowAncestors(node, list, traverseIframes) { + var _node$ownerDocument2; + if (list === void 0) { + list = []; + } + if (traverseIframes === void 0) { + traverseIframes = true; + } + const scrollableAncestor = getNearestOverflowAncestor(node); + const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); + const win = getWindow(scrollableAncestor); + if (isBody) { + const frameElement = getFrameElement(win); + return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); + } else { + return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); + } +} +function getFrameElement(win) { + return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; +} + +// node_modules/@base-ui/utils/esm/detectBrowser.js +var hasNavigator = typeof navigator !== "undefined"; +var nav = getNavigatorData(); +var platform = getPlatform(); +var userAgent = getUserAgent(); +var isWebKit2 = typeof CSS === "undefined" || !CSS.supports ? false : CSS.supports("-webkit-backdrop-filter:none"); +var isIOS = ( + // iPads can claim to be MacIntel + nav.platform === "MacIntel" && nav.maxTouchPoints > 1 ? true : /iP(hone|ad|od)|iOS/.test(nav.platform) +); +var isFirefox = hasNavigator && /firefox/i.test(userAgent); +var isSafari = hasNavigator && /apple/i.test(navigator.vendor); +var isEdge = hasNavigator && /Edg/i.test(userAgent); +var isAndroid = hasNavigator && /android/i.test(platform) || /android/i.test(userAgent); +var isMac = hasNavigator && platform.toLowerCase().startsWith("mac") && !navigator.maxTouchPoints; +var isJSDOM = userAgent.includes("jsdom/"); +function getNavigatorData() { + if (!hasNavigator) { + return { + platform: "", + maxTouchPoints: -1 + }; + } + const uaData = navigator.userAgentData; + if (uaData?.platform) { + return { + platform: uaData.platform, + maxTouchPoints: navigator.maxTouchPoints + }; + } + return { + platform: navigator.platform ?? "", + maxTouchPoints: navigator.maxTouchPoints ?? -1 + }; +} +function getUserAgent() { + if (!hasNavigator) { + return ""; + } + const uaData = navigator.userAgentData; + if (uaData && Array.isArray(uaData.brands)) { + return uaData.brands.map(({ + brand, + version: version2 + }) => `${brand}/${version2}`).join(" "); + } + return navigator.userAgent; +} +function getPlatform() { + if (!hasNavigator) { + return ""; + } + const uaData = navigator.userAgentData; + if (uaData?.platform) { + return uaData.platform; + } + return navigator.platform ?? ""; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/constants.js +var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; +var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; + +// node_modules/@base-ui/react/esm/internals/shadowDom.js +function activeElement(doc) { + let element = doc.activeElement; + while (element?.shadowRoot?.activeElement != null) { + element = element.shadowRoot.activeElement; + } + return element; +} +function contains(parent, child) { + if (!parent || !child) { + return false; + } + const rootNode = child.getRootNode?.(); + if (parent.contains(child)) { + return true; + } + if (rootNode && isShadowRoot(rootNode)) { + let next = child; + while (next) { + if (parent === next) { + return true; + } + next = next.parentNode || next.host; + } + } + return false; +} +function getTarget(event) { + if ("composedPath" in event) { + return event.composedPath()[0]; + } + return event.target; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/element.js +function isTargetInsideEnabledTrigger(target, triggerElements) { + if (!isElement(target)) { + return false; + } + const targetElement = target; + if (triggerElements.hasElement(targetElement)) { + return !targetElement.hasAttribute("data-trigger-disabled"); + } + for (const [, trigger] of triggerElements.entries()) { + if (contains(trigger, targetElement)) { + return !trigger.hasAttribute("data-trigger-disabled"); + } + } + return false; +} +function isEventTargetWithin(event, node) { + if (node == null) { + return false; + } + if ("composedPath" in event) { + return event.composedPath().includes(node); + } + const eventAgain = event; + return eventAgain.target != null && node.contains(eventAgain.target); +} +function isRootElement(element) { + return element.matches("html,body"); +} +function isTypeableElement(element) { + return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); +} +function isInteractiveElement(element) { + return element?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${TYPEABLE_SELECTOR}`) != null; +} +function matchesFocusVisible(element) { + if (!element || isJSDOM) { + return true; + } + try { + return element.matches(":focus-visible"); + } catch (_e) { + return true; + } +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/nodes.js +function getNodeChildren(nodes, id, onlyOpenChildren = true) { + const directChildren = nodes.filter((node) => node.parentId === id); + return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/event.js +function isReactEvent(event) { + return "nativeEvent" in event; +} +function isMouseLikePointerType(pointerType, strict) { + const values = ["mouse", "pen"]; + if (!strict) { + values.push("", void 0); + } + return values.includes(pointerType); +} +function isClickLikeEvent(event) { + const type = event.type; + return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; +} + +// node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +var sides = ["top", "right", "bottom", "left"]; +var min = Math.min; +var max = Math.max; +var round = Math.round; +var floor = Math.floor; +var createCoords = (v2) => ({ + x: v2, + y: v2 +}); +var oppositeSideMap = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" +}; +function clamp(start, value, end) { + return max(start, min(value, end)); +} +function evaluate(value, param) { + return typeof value === "function" ? value(param) : value; +} +function getSide(placement) { + return placement.split("-")[0]; +} +function getAlignment(placement) { + return placement.split("-")[1]; +} +function getOppositeAxis(axis) { + return axis === "x" ? "y" : "x"; +} +function getAxisLength(axis) { + return axis === "y" ? "height" : "width"; +} +function getSideAxis(placement) { + const firstChar = placement[0]; + return firstChar === "t" || firstChar === "b" ? "y" : "x"; +} +function getAlignmentAxis(placement) { + return getOppositeAxis(getSideAxis(placement)); +} +function getAlignmentSides(placement, rects, rtl) { + if (rtl === void 0) { + rtl = false; + } + const alignment = getAlignment(placement); + const alignmentAxis = getAlignmentAxis(placement); + const length = getAxisLength(alignmentAxis); + let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; + if (rects.reference[length] > rects.floating[length]) { + mainAlignmentSide = getOppositePlacement(mainAlignmentSide); + } + return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; +} +function getExpandedPlacements(placement) { + const oppositePlacement = getOppositePlacement(placement); + return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; +} +function getOppositeAlignmentPlacement(placement) { + return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); +} +var lrPlacement = ["left", "right"]; +var rlPlacement = ["right", "left"]; +var tbPlacement = ["top", "bottom"]; +var btPlacement = ["bottom", "top"]; +function getSideList(side, isStart, rtl) { + switch (side) { + case "top": + case "bottom": + if (rtl) return isStart ? rlPlacement : lrPlacement; + return isStart ? lrPlacement : rlPlacement; + case "left": + case "right": + return isStart ? tbPlacement : btPlacement; + default: + return []; + } +} +function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { + const alignment = getAlignment(placement); + let list = getSideList(getSide(placement), direction === "start", rtl); + if (alignment) { + list = list.map((side) => side + "-" + alignment); + if (flipAlignment) { + list = list.concat(list.map(getOppositeAlignmentPlacement)); + } + } + return list; +} +function getOppositePlacement(placement) { + const side = getSide(placement); + return oppositeSideMap[side] + placement.slice(side.length); +} +function expandPaddingObject(padding) { + return { + top: 0, + right: 0, + bottom: 0, + left: 0, + ...padding + }; +} +function getPaddingObject(padding) { + return typeof padding !== "number" ? expandPaddingObject(padding) : { + top: padding, + right: padding, + bottom: padding, + left: padding + }; +} +function rectToClientRect(rect) { + const { + x: x2, + y: y2, + width, + height + } = rect; + return { + width, + height, + top: y2, + left: x2, + right: x2 + width, + bottom: y2 + height, + x: x2, + y: y2 + }; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/composite.js +function isHiddenByStyles(styles) { + return styles.visibility === "hidden" || styles.visibility === "collapse"; +} +function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { + if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { + return false; + } + if (typeof element.checkVisibility === "function") { + return element.checkVisibility(); + } + return styles.display !== "none" && styles.display !== "contents"; +} + +// node_modules/@base-ui/utils/esm/owner.js +function ownerDocument(node) { + return node?.ownerDocument || document; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/tabbable.js +var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; +function getParentElement(element) { + const assignedSlot = element.assignedSlot; + if (assignedSlot) { + return assignedSlot; + } + if (element.parentElement) { + return element.parentElement; + } + const rootNode = element.getRootNode(); + return isShadowRoot(rootNode) ? rootNode.host : null; +} +function getDetailsSummary(details) { + for (const child of Array.from(details.children)) { + if (getNodeName(child) === "summary") { + return child; + } + } + return null; +} +function isWithinOpenDetailsSummary(element, details) { + const summary = getDetailsSummary(details); + return !!summary && (element === summary || contains(summary, element)); +} +function isFocusableCandidate(element) { + const nodeName = element ? getNodeName(element) : ""; + return element != null && element.matches(CANDIDATE_SELECTOR) && (nodeName !== "summary" || element.parentElement != null && getNodeName(element.parentElement) === "details" && getDetailsSummary(element.parentElement) === element) && (nodeName !== "details" || getDetailsSummary(element) == null) && (nodeName !== "input" || element.type !== "hidden"); +} +function isFocusableElement(element) { + if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { + return false; + } + for (let current = element; current; current = getParentElement(current)) { + const isAncestor = current !== element; + const isSlot = getNodeName(current) === "slot"; + if (current.hasAttribute("inert")) { + return false; + } + if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { + return false; + } + } + return true; +} +function isVisibleInTabbableTree(element, isAncestor) { + const styles = getComputedStyle2(element); + if (!isAncestor) { + return isElementVisible(element, styles); + } + return styles.display !== "none"; +} +function getTabIndex(element) { + const tabIndex = element.tabIndex; + if (tabIndex < 0) { + const nodeName = getNodeName(element); + if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { + return 0; + } + } + return tabIndex; +} +function getNamedRadioInput(element) { + if (getNodeName(element) !== "input") { + return null; + } + const input = element; + return input.type === "radio" && input.name !== "" ? input : null; +} +function isTabbableRadio(element, candidates) { + const input = getNamedRadioInput(element); + if (!input) { + return true; + } + const checkedRadio = candidates.find((candidate) => { + const radio = getNamedRadioInput(candidate); + return radio?.name === input.name && radio.form === input.form && radio.checked; + }); + if (checkedRadio) { + return checkedRadio === input; + } + return candidates.find((candidate) => { + const radio = getNamedRadioInput(candidate); + return radio?.name === input.name && radio.form === input.form; + }) === input; +} +function getComposedChildren(container) { + if (isHTMLElement(container) && getNodeName(container) === "slot") { + const assignedElements = container.assignedElements({ + flatten: true + }); + if (assignedElements.length > 0) { + return assignedElements; + } + } + if (isHTMLElement(container) && container.shadowRoot) { + return Array.from(container.shadowRoot.children); + } + return Array.from(container.children); +} +function appendCandidates(container, list) { + getComposedChildren(container).forEach((child) => { + if (isFocusableCandidate(child)) { + list.push(child); + } + appendCandidates(child, list); + }); +} +function appendMatchingElements(container, selector, list) { + getComposedChildren(container).forEach((child) => { + if (isHTMLElement(child) && child.matches(selector)) { + list.push(child); + } + appendMatchingElements(child, selector, list); + }); +} +function focusable(container) { + const candidates = []; + appendCandidates(container, candidates); + return candidates.filter(isFocusableElement); +} +function tabbable(container) { + const candidates = focusable(container); + return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); +} +function getTabbableIn(container, dir) { + const list = tabbable(container); + const len = list.length; + if (len === 0) { + return void 0; + } + const active = activeElement(ownerDocument(container)); + const index2 = list.indexOf(active); + const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir; + return list[nextIndex]; +} +function getNextTabbable(referenceElement) { + return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; +} +function getPreviousTabbable(referenceElement) { + return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; +} +function isOutsideEvent(event, container) { + const containerElement = container || event.currentTarget; + const relatedTarget = event.relatedTarget; + return !relatedTarget || !contains(containerElement, relatedTarget); +} +function disableFocusInside(container) { + const tabbableElements = tabbable(container); + tabbableElements.forEach((element) => { + element.dataset.tabindex = element.getAttribute("tabindex") || ""; + element.setAttribute("tabindex", "-1"); + }); +} +function enableFocusInside(container) { + const elements2 = []; + appendMatchingElements(container, "[data-tabindex]", elements2); + elements2.forEach((element) => { + const tabindex = element.dataset.tabindex; + delete element.dataset.tabindex; + if (tabindex) { + element.setAttribute("tabindex", tabindex); + } else { + element.removeAttribute("tabindex"); + } + }); +} + +// node_modules/@base-ui/utils/esm/addEventListener.js +function addEventListener(target, type, listener, options) { + target.addEventListener(type, listener, options); + return () => { + target.removeEventListener(type, listener, options); + }; +} + +// node_modules/@base-ui/utils/esm/useValueAsRef.js +function useValueAsRef(value) { + const latest = useRefWithInit(createLatestRef, value).current; + latest.next = value; + useIsoLayoutEffect(latest.effect); + return latest; +} +function createLatestRef(value) { + const latest = { + current: value, + next: value, + effect: () => { + latest.current = latest.next; + } + }; + return latest; +} + +// node_modules/@base-ui/react/esm/internals/useOpenChangeComplete.js +var React12 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/internals/useAnimationsFinished.js +var ReactDOM = __toESM(require_react_dom(), 1); + +// node_modules/@base-ui/react/esm/utils/resolveRef.js +function resolveRef(maybeRef) { + if (maybeRef == null) { + return maybeRef; + } + return "current" in maybeRef ? maybeRef.current : maybeRef; +} + +// node_modules/@base-ui/react/esm/internals/useAnimationsFinished.js +function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, treatAbortedAsFinished = true) { + const frame = useAnimationFrame(); + return useStableCallback((fnToExecute, signal = null) => { + frame.cancel(); + const element = resolveRef(elementOrRef); + if (element == null) { + return; + } + const resolvedElement = element; + const done = () => { + ReactDOM.flushSync(fnToExecute); + }; + if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { + fnToExecute(); + return; + } + function exec() { + Promise.all(resolvedElement.getAnimations().map((animation) => animation.finished)).then(() => { + if (!signal?.aborted) { + done(); + } + }).catch(() => { + if (treatAbortedAsFinished) { + if (!signal?.aborted) { + done(); + } + return; + } + const currentAnimations = resolvedElement.getAnimations(); + if (!signal?.aborted && currentAnimations.length > 0 && currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { + exec(); + } + }); + } + if (waitForStartingStyleRemoved) { + const startingStyleAttribute = TransitionStatusDataAttributes.startingStyle; + if (!resolvedElement.hasAttribute(startingStyleAttribute)) { + frame.request(exec); + return; + } + const attributeObserver = new MutationObserver(() => { + if (!resolvedElement.hasAttribute(startingStyleAttribute)) { + attributeObserver.disconnect(); + exec(); + } + }); + attributeObserver.observe(resolvedElement, { + attributes: true, + attributeFilter: [startingStyleAttribute] + }); + signal?.addEventListener("abort", () => attributeObserver.disconnect(), { + once: true + }); + return; + } + frame.request(exec); + }); +} + +// node_modules/@base-ui/react/esm/internals/useOpenChangeComplete.js +function useOpenChangeComplete(parameters) { + const { + enabled = true, + open, + ref, + onComplete: onCompleteParam + } = parameters; + const onComplete = useStableCallback(onCompleteParam); + const runOnceAnimationsFinish = useAnimationsFinished(ref, open, false); + React12.useEffect(() => { + if (!enabled) { + return void 0; + } + const abortController = new AbortController(); + runOnceAnimationsFinish(onComplete, abortController.signal); + return () => { + abortController.abort(); + }; + }, [enabled, open, onComplete, runOnceAnimationsFinish]); +} + +// node_modules/@base-ui/utils/esm/useOnFirstRender.js +var React13 = __toESM(require_react(), 1); +function useOnFirstRender(fn) { + const ref = React13.useRef(true); + if (ref.current) { + ref.current = false; + fn(); + } +} + +// node_modules/@base-ui/utils/esm/useTimeout.js +var EMPTY3 = 0; +var Timeout = class _Timeout { + static create() { + return new _Timeout(); + } + currentId = EMPTY3; + /** + * Executes `fn` after `delay`, clearing any previously scheduled call. + */ + start(delay, fn) { + this.clear(); + this.currentId = setTimeout(() => { + this.currentId = EMPTY3; + fn(); + }, delay); + } + isStarted() { + return this.currentId !== EMPTY3; + } + clear = () => { + if (this.currentId !== EMPTY3) { + clearTimeout(this.currentId); + this.currentId = EMPTY3; + } + }; + disposeEffect = () => { + return this.clear; + }; +}; +function useTimeout() { + const timeout = useRefWithInit(Timeout.create).current; + useOnMount(timeout.disposeEffect); + return timeout; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingDelayGroup.js +var React14 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverShared.js +function resolveValue(value, pointerType) { + if (pointerType != null && !isMouseLikePointerType(pointerType)) { + return 0; + } + if (typeof value === "function") { + return value(); + } + return value; +} +function getDelay(value, prop, pointerType) { + const result = resolveValue(value, pointerType); + if (typeof result === "number") { + return result; + } + return result?.[prop]; +} +function getRestMs(value) { + if (typeof value === "function") { + return value(); + } + return value; +} +function isClickLikeOpenEvent(openEventType, interactedInside) { + return interactedInside || openEventType === "click" || openEventType === "mousedown"; +} +function isHoverOpenEvent(openEventType) { + return openEventType?.includes("mouse") && openEventType !== "mousedown"; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingDelayGroup.js +var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); +var FloatingDelayGroupContext = /* @__PURE__ */ React14.createContext({ + hasProvider: false, + timeoutMs: 0, + delayRef: { + current: 0 + }, + initialDelayRef: { + current: 0 + }, + timeout: new Timeout(), + currentIdRef: { + current: null + }, + currentContextRef: { + current: null + } +}); +if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext"; +function FloatingDelayGroup(props) { + const { + children, + delay, + timeoutMs = 0 + } = props; + const delayRef = React14.useRef(delay); + const initialDelayRef = React14.useRef(delay); + const currentIdRef = React14.useRef(null); + const currentContextRef = React14.useRef(null); + const timeout = useTimeout(); + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FloatingDelayGroupContext.Provider, { + value: React14.useMemo(() => ({ + hasProvider: true, + delayRef, + initialDelayRef, + currentIdRef, + timeoutMs, + currentContextRef, + timeout + }), [timeoutMs, timeout]), + children + }); +} +function useDelayGroup(context, options = { + open: false +}) { + const { + open + } = options; + const store = "rootStore" in context ? context.rootStore : context; + const floatingId = store.useState("floatingId"); + const groupContext = React14.useContext(FloatingDelayGroupContext); + const { + currentIdRef, + delayRef, + timeoutMs, + initialDelayRef, + currentContextRef, + hasProvider, + timeout + } = groupContext; + const [isInstantPhase, setIsInstantPhase] = React14.useState(false); + useIsoLayoutEffect(() => { + function unset() { + setIsInstantPhase(false); + currentContextRef.current?.setIsInstantPhase(false); + currentIdRef.current = null; + currentContextRef.current = null; + delayRef.current = initialDelayRef.current; + } + if (!currentIdRef.current) { + return void 0; + } + if (!open && currentIdRef.current === floatingId) { + setIsInstantPhase(false); + if (timeoutMs) { + const closingId = floatingId; + timeout.start(timeoutMs, () => { + if (store.select("open") || currentIdRef.current && currentIdRef.current !== closingId) { + return; + } + unset(); + }); + return () => { + timeout.clear(); + }; + } + unset(); + } + return void 0; + }, [open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store]); + useIsoLayoutEffect(() => { + if (!open) { + return; + } + const prevContext = currentContextRef.current; + const prevId = currentIdRef.current; + timeout.clear(); + currentContextRef.current = { + onOpenChange: store.setOpen, + setIsInstantPhase + }; + currentIdRef.current = floatingId; + delayRef.current = { + open: 0, + close: getDelay(initialDelayRef.current, "close") + }; + if (prevId !== null && prevId !== floatingId) { + setIsInstantPhase(true); + prevContext?.setIsInstantPhase(true); + prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none)); + } else { + setIsInstantPhase(false); + prevContext?.setIsInstantPhase(false); + } + }, [open, floatingId, store, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]); + useIsoLayoutEffect(() => { + return () => { + currentContextRef.current = null; + }; + }, [currentContextRef]); + return React14.useMemo(() => ({ + hasProvider, + delayRef, + isInstantPhase + }), [hasProvider, delayRef, isInstantPhase]); +} + +// node_modules/@base-ui/utils/esm/mergeCleanups.js +function mergeCleanups(...cleanups) { + return () => { + for (let i2 = 0; i2 < cleanups.length; i2 += 1) { + const cleanup = cleanups[i2]; + if (cleanup) { + cleanup(); + } + } + }; +} + +// node_modules/@base-ui/react/esm/utils/FocusGuard.js +var React15 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/visuallyHidden.js +var visuallyHiddenBase = { + clipPath: "inset(50%)", + overflow: "hidden", + whiteSpace: "nowrap", + border: 0, + padding: 0, + width: 1, + height: 1, + margin: -1 +}; +var visuallyHidden = { + ...visuallyHiddenBase, + position: "fixed", + top: 0, + left: 0 +}; +var visuallyHiddenInput = { + ...visuallyHiddenBase, + position: "absolute" +}; + +// node_modules/@base-ui/react/esm/utils/FocusGuard.js +var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); +var FocusGuard = /* @__PURE__ */ React15.forwardRef(function FocusGuard2(props, ref) { + const [role, setRole] = React15.useState(); + useIsoLayoutEffect(() => { + if (isSafari) { + setRole("button"); + } + }, []); + const restProps = { + tabIndex: 0, + // Role is only for VoiceOver + role + }; + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { + ...props, + ref, + style: visuallyHidden, + "aria-hidden": role ? void 0 : true, + ...restProps, + "data-base-ui-focus-guard": "" + }); +}); +if (true) FocusGuard.displayName = "FocusGuard"; + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/createAttribute.js +function createAttribute(name2) { + return `data-base-ui-${name2}`; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingPortal.js +var React16 = __toESM(require_react(), 1); +var ReactDOM2 = __toESM(require_react_dom(), 1); + +// node_modules/@base-ui/react/esm/internals/constants.js +var DISABLED_TRANSITIONS_STYLE = { + style: { + transition: "none" + } +}; +var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; +var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; +var BASE_UI_SWIPE_IGNORE_SELECTOR = `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; +var LEGACY_SWIPE_IGNORE_SELECTOR = `[${LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; +var POPUP_COLLISION_AVOIDANCE = { + fallbackAxisSide: "end" +}; +var ownerVisuallyHidden = { + clipPath: "inset(50%)", + position: "fixed", + top: 0, + left: 0 +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingPortal.js +var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); +var PortalContext = /* @__PURE__ */ React16.createContext(null); +if (true) PortalContext.displayName = "PortalContext"; +var usePortalContext = () => React16.useContext(PortalContext); +var attr = createAttribute("portal"); +function useFloatingPortalNode(props = {}) { + const { + ref, + container: containerProp, + componentProps = EMPTY_OBJECT, + elementProps + } = props; + const uniqueId = useId(); + const portalContext = usePortalContext(); + const parentPortalNode = portalContext?.portalNode; + const [containerElement, setContainerElement] = React16.useState(null); + const [portalNode, setPortalNode] = React16.useState(null); + const setPortalNodeRef = useStableCallback((node) => { + if (node !== null) { + setPortalNode(node); + } + }); + const containerRef = React16.useRef(null); + useIsoLayoutEffect(() => { + if (containerProp === null) { + if (containerRef.current) { + containerRef.current = null; + setPortalNode(null); + setContainerElement(null); + } + return; + } + if (uniqueId == null) { + return; + } + const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; + if (resolvedContainer == null) { + if (containerRef.current) { + containerRef.current = null; + setPortalNode(null); + setContainerElement(null); + } + return; + } + if (containerRef.current !== resolvedContainer) { + containerRef.current = resolvedContainer; + setPortalNode(null); + setContainerElement(resolvedContainer); + } + }, [containerProp, parentPortalNode, uniqueId]); + const portalElement = useRenderElement("div", componentProps, { + ref: [ref, setPortalNodeRef], + props: [{ + id: uniqueId, + [attr]: "" + }, elementProps] + }); + const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; + return { + portalNode, + portalSubtree + }; +} +var FloatingPortal = /* @__PURE__ */ React16.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { + const { + render, + className, + style, + children, + container, + renderGuards, + ...elementProps + } = componentProps; + const { + portalNode, + portalSubtree + } = useFloatingPortalNode({ + container, + ref: forwardedRef, + componentProps, + elementProps + }); + const beforeOutsideRef = React16.useRef(null); + const afterOutsideRef = React16.useRef(null); + const beforeInsideRef = React16.useRef(null); + const afterInsideRef = React16.useRef(null); + const [focusManagerState, setFocusManagerState] = React16.useState(null); + const focusInsideDisabledRef = React16.useRef(false); + const modal = focusManagerState?.modal; + const open = focusManagerState?.open; + const shouldRenderGuards = typeof renderGuards === "boolean" ? renderGuards : !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; + React16.useEffect(() => { + if (!portalNode || modal) { + return void 0; + } + function onFocus(event) { + if (portalNode && event.relatedTarget && isOutsideEvent(event)) { + if (event.type === "focusin") { + if (focusInsideDisabledRef.current) { + enableFocusInside(portalNode); + focusInsideDisabledRef.current = false; + } + } else { + disableFocusInside(portalNode); + focusInsideDisabledRef.current = true; + } + } + } + return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); + }, [portalNode, modal]); + React16.useEffect(() => { + if (!portalNode || open !== false) { + return; + } + enableFocusInside(portalNode); + focusInsideDisabledRef.current = false; + }, [open, portalNode]); + const portalContextValue = React16.useMemo(() => ({ + beforeOutsideRef, + afterOutsideRef, + beforeInsideRef, + afterInsideRef, + portalNode, + setFocusManagerState + }), [portalNode]); + return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(React16.Fragment, { + children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(PortalContext.Provider, { + value: portalContextValue, + children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FocusGuard, { + "data-type": "outside", + ref: beforeOutsideRef, + onFocus: (event) => { + if (isOutsideEvent(event, portalNode)) { + beforeInsideRef.current?.focus(); + } else { + const domReference = focusManagerState ? focusManagerState.domReference : null; + const prevTabbable = getPreviousTabbable(domReference); + prevTabbable?.focus(); + } + } + }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { + "aria-owns": portalNode.id, + style: ownerVisuallyHidden + }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FocusGuard, { + "data-type": "outside", + ref: afterOutsideRef, + onFocus: (event) => { + if (isOutsideEvent(event, portalNode)) { + afterInsideRef.current?.focus(); + } else { + const domReference = focusManagerState ? focusManagerState.domReference : null; + const nextTabbable = getNextTabbable(domReference); + nextTabbable?.focus(); + if (focusManagerState?.closeOnFocusOut) { + focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); + } + } + } + })] + })] + }); +}); +if (true) FloatingPortal.displayName = "FloatingPortal"; + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingTree.js +var React17 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/createEventEmitter.js +function createEventEmitter() { + const map = /* @__PURE__ */ new Map(); + return { + emit(event, data) { + map.get(event)?.forEach((listener) => listener(data)); + }, + on(event, listener) { + if (!map.has(event)) { + map.set(event, /* @__PURE__ */ new Set()); + } + map.get(event).add(listener); + }, + off(event, listener) { + map.get(event)?.delete(listener); + } + }; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingTree.js +var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); +var FloatingNodeContext = /* @__PURE__ */ React17.createContext(null); +if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; +var FloatingTreeContext = /* @__PURE__ */ React17.createContext(null); +if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; +var useFloatingParentNodeId = () => React17.useContext(FloatingNodeContext)?.id || null; +var useFloatingTree = (externalTree) => { + const contextTree = React17.useContext(FloatingTreeContext); + return externalTree ?? contextTree; +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useClientPoint.js +var React18 = __toESM(require_react(), 1); +function createVirtualElement(domElement, data) { + let offsetX = null; + let offsetY = null; + let isAutoUpdateEvent = false; + return { + contextElement: domElement || void 0, + getBoundingClientRect() { + const domRect = domElement?.getBoundingClientRect() || { + width: 0, + height: 0, + x: 0, + y: 0 + }; + const isXAxis = data.axis === "x" || data.axis === "both"; + const isYAxis = data.axis === "y" || data.axis === "both"; + const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch"; + let width = domRect.width; + let height = domRect.height; + let x2 = domRect.x; + let y2 = domRect.y; + if (offsetX == null && data.x && isXAxis) { + offsetX = domRect.x - data.x; + } + if (offsetY == null && data.y && isYAxis) { + offsetY = domRect.y - data.y; + } + x2 -= offsetX || 0; + y2 -= offsetY || 0; + width = 0; + height = 0; + if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) { + width = data.axis === "y" ? domRect.width : 0; + height = data.axis === "x" ? domRect.height : 0; + x2 = isXAxis && data.x != null ? data.x : x2; + y2 = isYAxis && data.y != null ? data.y : y2; + } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) { + height = data.axis === "x" ? domRect.height : height; + width = data.axis === "y" ? domRect.width : width; + } + isAutoUpdateEvent = true; + return { + width, + height, + x: x2, + y: y2, + top: y2, + right: x2 + width, + bottom: y2 + height, + left: x2 + }; + } + }; +} +function isMouseBasedEvent(event) { + return event != null && event.clientX != null; +} +function useClientPoint(context, props = {}) { + const { + enabled = true, + axis = "both" + } = props; + const store = "rootStore" in context ? context.rootStore : context; + const open = store.useState("open"); + const floating = store.useState("floatingElement"); + const domReference = store.useState("domReferenceElement"); + const dataRef = store.context.dataRef; + const initialRef = React18.useRef(false); + const cleanupListenerRef = React18.useRef(null); + const [pointerType, setPointerType] = React18.useState(); + const [reactive, setReactive] = React18.useState([]); + const resetReference = useStableCallback((reference2) => { + store.set("positionReference", reference2); + }); + const setReference = useStableCallback((newX, newY, referenceElement) => { + if (initialRef.current) { + return; + } + if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) { + return; + } + store.set("positionReference", createVirtualElement(referenceElement ?? domReference, { + x: newX, + y: newY, + axis, + dataRef, + pointerType + })); + }); + const handleReferenceEnterOrMove = useStableCallback((event) => { + if (!open) { + setReference(event.clientX, event.clientY, event.currentTarget); + } else if (!cleanupListenerRef.current) { + setReference(event.clientX, event.clientY, event.currentTarget); + setReactive([]); + } + }); + const openCheck = isMouseLikePointerType(pointerType) ? floating : open; + React18.useEffect(() => { + if (!enabled) { + resetReference(domReference); + return void 0; + } + if (!openCheck) { + return void 0; + } + function cleanupListener() { + cleanupListenerRef.current?.(); + cleanupListenerRef.current = null; + } + const win = getWindow(floating); + function handleMouseMove(event) { + const target = getTarget(event); + if (!contains(floating, target)) { + setReference(event.clientX, event.clientY); + } else { + cleanupListener(); + } + } + if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) { + cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove); + } else { + resetReference(domReference); + } + return cleanupListener; + }, [openCheck, enabled, floating, dataRef, domReference, store, setReference, resetReference, reactive]); + React18.useEffect(() => () => { + store.set("positionReference", null); + }, [store]); + React18.useEffect(() => { + if (enabled && !floating) { + initialRef.current = false; + } + }, [enabled, floating]); + React18.useEffect(() => { + if (!enabled && open) { + initialRef.current = true; + } + }, [enabled, open]); + const reference = React18.useMemo(() => { + function setPointerTypeRef(event) { + setPointerType(event.pointerType); + } + return { + onPointerDown: setPointerTypeRef, + onPointerEnter: setPointerTypeRef, + onMouseMove: handleReferenceEnterOrMove, + onMouseEnter: handleReferenceEnterOrMove + }; + }, [handleReferenceEnterOrMove]); + return React18.useMemo(() => enabled ? { + reference, + trigger: reference + } : {}, [enabled, reference]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useDismiss.js +var React19 = __toESM(require_react(), 1); +var bubbleHandlerKeys = { + intentional: "onClick", + sloppy: "onPointerDown" +}; +function alwaysFalse() { + return false; +} +function normalizeProp(normalizable) { + return { + escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, + outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true + }; +} +function useDismiss(context, props = {}) { + const { + enabled = true, + escapeKey: escapeKey2 = true, + outsidePress: outsidePressProp = true, + outsidePressEvent = "sloppy", + referencePress = alwaysFalse, + referencePressEvent = "sloppy", + bubbles, + externalTree + } = props; + const store = "rootStore" in context ? context.rootStore : context; + const open = store.useState("open"); + const floatingElement = store.useState("floatingElement"); + const { + dataRef + } = store.context; + const tree = useFloatingTree(externalTree); + const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); + const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; + const outsidePressEnabled = outsidePress2 !== false; + const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); + const { + escapeKey: escapeKeyBubbles, + outsidePress: outsidePressBubbles + } = normalizeProp(bubbles); + const pressStartedInsideRef = React19.useRef(false); + const pressStartPreventedRef = React19.useRef(false); + const suppressNextOutsideClickRef = React19.useRef(false); + const isComposingRef = React19.useRef(false); + const currentPointerTypeRef = React19.useRef(""); + const touchStateRef = React19.useRef(null); + const cancelDismissOnEndTimeout = useTimeout(); + const clearInsideReactTreeTimeout = useTimeout(); + const clearInsideReactTree = useStableCallback(() => { + clearInsideReactTreeTimeout.clear(); + dataRef.current.insideReactTree = false; + }); + const hasBlockingChild = useStableCallback((bubbleKey) => { + const nodeId = dataRef.current.floatingContext?.nodeId; + const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; + return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); + }); + const isEventWithinOwnElements = useStableCallback((event) => { + return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement")); + }); + const closeOnReferencePress = useStableCallback((event) => { + if (!referencePress()) { + return; + } + store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); + }); + const closeOnEscapeKeyDown = useStableCallback((event) => { + if (!open || !enabled || !escapeKey2 || event.key !== "Escape") { + return; + } + if (isComposingRef.current) { + return; + } + if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { + return; + } + const native = isReactEvent(event) ? event.nativeEvent : event; + const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); + store.setOpen(false, eventDetails); + if (!eventDetails.isCanceled) { + event.preventDefault(); + } + if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { + event.stopPropagation(); + } + }); + const markInsideReactTree = useStableCallback(() => { + dataRef.current.insideReactTree = true; + clearInsideReactTreeTimeout.start(0, clearInsideReactTree); + }); + const markPressStartedInsideReactTree = useStableCallback((event) => { + if (!open || !enabled || event.button !== 0) { + return; + } + const target = getTarget(event.nativeEvent); + if (!contains(store.select("floatingElement"), target)) { + return; + } + if (!pressStartedInsideRef.current) { + pressStartedInsideRef.current = true; + pressStartPreventedRef.current = false; + } + }); + const markInsidePressStartPrevented = useStableCallback((event) => { + if (!open || !enabled) { + return; + } + if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { + return; + } + if (pressStartedInsideRef.current) { + pressStartPreventedRef.current = true; + } + }); + React19.useEffect(() => { + if (!open || !enabled) { + return void 0; + } + dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; + dataRef.current.__outsidePressBubbles = outsidePressBubbles; + const compositionTimeout = new Timeout(); + const preventedPressSuppressionTimeout = new Timeout(); + function handleCompositionStart() { + compositionTimeout.clear(); + isComposingRef.current = true; + } + function handleCompositionEnd() { + compositionTimeout.start( + // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. + // Only apply to WebKit for the test to remain 0ms. + isWebKit() ? 5 : 0, + () => { + isComposingRef.current = false; + } + ); + } + function suppressImmediateOutsideClickAfterPreventedStart() { + suppressNextOutsideClickRef.current = true; + preventedPressSuppressionTimeout.start(0, () => { + suppressNextOutsideClickRef.current = false; + }); + } + function resetPressStartState() { + pressStartedInsideRef.current = false; + pressStartPreventedRef.current = false; + } + function getOutsidePressEvent() { + const type = currentPointerTypeRef.current; + const computedType = type === "pen" || !type ? "mouse" : type; + const outsidePressEventValue = getOutsidePressEventProp(); + const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; + if (typeof resolved === "string") { + return resolved; + } + return resolved[computedType]; + } + function shouldIgnoreEvent(event) { + const computedOutsidePressEvent = getOutsidePressEvent(); + return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; + } + function isEventWithinFloatingTree(event) { + const nodeId = dataRef.current.floatingContext?.nodeId; + const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); + return isEventWithinOwnElements(event) || targetIsInsideChildren; + } + function closeOnPressOutside(event) { + if (shouldIgnoreEvent(event)) { + if (event.type !== "click" && !isEventWithinOwnElements(event)) { + preventedPressSuppressionTimeout.clear(); + suppressNextOutsideClickRef.current = false; + } + clearInsideReactTree(); + return; + } + if (dataRef.current.insideReactTree) { + clearInsideReactTree(); + return; + } + const target = getTarget(event); + const inertSelector = `[${createAttribute("inert")}]`; + const targetRoot = isElement(target) ? target.getRootNode() : null; + const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select("floatingElement"))).querySelectorAll(inertSelector)); + const triggers = store.context.triggerElements; + if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { + return; + } + let targetRootAncestor = isElement(target) ? target : null; + while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { + const nextParent = getParentNode(targetRootAncestor); + if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { + break; + } + targetRootAncestor = nextParent; + } + if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). + !contains(target, store.select("floatingElement")) && // If the target root element contains none of the markers, then the + // element was injected after the floating element rendered. + markers.every((marker) => !contains(targetRootAncestor, marker))) { + return; + } + if (isHTMLElement(target) && !("touches" in event)) { + const lastTraversableNode = isLastTraversableNode(target); + const style = getComputedStyle2(target); + const scrollRe = /auto|scroll/; + const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); + const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY); + const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; + const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; + const isRTL12 = style.direction === "rtl"; + const pressedVerticalScrollbar = canScrollY && (isRTL12 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); + const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; + if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { + return; + } + } + if (isEventWithinFloatingTree(event)) { + return; + } + if (getOutsidePressEvent() === "intentional" && suppressNextOutsideClickRef.current) { + preventedPressSuppressionTimeout.clear(); + suppressNextOutsideClickRef.current = false; + return; + } + if (typeof outsidePress2 === "function" && !outsidePress2(event)) { + return; + } + if (hasBlockingChild("__outsidePressBubbles")) { + return; + } + store.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); + clearInsideReactTree(); + } + function handlePointerDown(event) { + if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { + return; + } + closeOnPressOutside(event); + } + function handleTouchStart(event) { + if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { + return; + } + const touch = event.touches[0]; + if (touch) { + touchStateRef.current = { + startTime: Date.now(), + startX: touch.clientX, + startY: touch.clientY, + dismissOnTouchEnd: false, + dismissOnMouseDown: true + }; + cancelDismissOnEndTimeout.start(1e3, () => { + if (touchStateRef.current) { + touchStateRef.current.dismissOnTouchEnd = false; + touchStateRef.current.dismissOnMouseDown = false; + } + }); + } + } + function addTargetEventListenerOnce(event, listener) { + const target = getTarget(event); + if (!target) { + return; + } + const unsubscribe2 = addEventListener(target, event.type, () => { + listener(event); + unsubscribe2(); + }); + } + function handleTouchStartCapture(event) { + currentPointerTypeRef.current = "touch"; + addTargetEventListenerOnce(event, handleTouchStart); + } + function closeOnPressOutsideCapture(event) { + cancelDismissOnEndTimeout.clear(); + if (event.type === "pointerdown") { + currentPointerTypeRef.current = event.pointerType; + } + if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { + return; + } + addTargetEventListenerOnce(event, (targetEvent) => { + if (targetEvent.type === "pointerdown") { + handlePointerDown(targetEvent); + } else { + closeOnPressOutside(targetEvent); + } + }); + } + function handlePressEndCapture(event) { + if (!pressStartedInsideRef.current) { + return; + } + const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; + resetPressStartState(); + if (getOutsidePressEvent() !== "intentional") { + return; + } + if (event.type === "pointercancel") { + if (pressStartedInsideDefaultPrevented) { + suppressImmediateOutsideClickAfterPreventedStart(); + } + return; + } + if (isEventWithinFloatingTree(event)) { + return; + } + if (pressStartedInsideDefaultPrevented) { + suppressImmediateOutsideClickAfterPreventedStart(); + return; + } + if (typeof outsidePress2 === "function" && !outsidePress2(event)) { + return; + } + preventedPressSuppressionTimeout.clear(); + suppressNextOutsideClickRef.current = true; + clearInsideReactTree(); + } + function handleTouchMove(event) { + if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { + return; + } + const touch = event.touches[0]; + if (!touch) { + return; + } + const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); + const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); + const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); + if (distance > 5) { + touchStateRef.current.dismissOnTouchEnd = true; + } + if (distance > 10) { + closeOnPressOutside(event); + cancelDismissOnEndTimeout.clear(); + touchStateRef.current = null; + } + } + function handleTouchMoveCapture(event) { + addTargetEventListenerOnce(event, handleTouchMove); + } + function handleTouchEnd(event) { + if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { + return; + } + if (touchStateRef.current.dismissOnTouchEnd) { + closeOnPressOutside(event); + } + cancelDismissOnEndTimeout.clear(); + touchStateRef.current = null; + } + function handleTouchEndCapture(event) { + addTargetEventListenerOnce(event, handleTouchEnd); + } + const doc = ownerDocument(floatingElement); + const unsubscribe = mergeCleanups(escapeKey2 && mergeCleanups(addEventListener(doc, "keydown", closeOnEscapeKeyDown), addEventListener(doc, "compositionstart", handleCompositionStart), addEventListener(doc, "compositionend", handleCompositionEnd)), outsidePressEnabled && mergeCleanups(addEventListener(doc, "click", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerdown", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerup", handlePressEndCapture, true), addEventListener(doc, "pointercancel", handlePressEndCapture, true), addEventListener(doc, "mousedown", closeOnPressOutsideCapture, true), addEventListener(doc, "mouseup", handlePressEndCapture, true), addEventListener(doc, "touchstart", handleTouchStartCapture, true), addEventListener(doc, "touchmove", handleTouchMoveCapture, true), addEventListener(doc, "touchend", handleTouchEndCapture, true))); + return () => { + unsubscribe(); + compositionTimeout.clear(); + preventedPressSuppressionTimeout.clear(); + resetPressStartState(); + suppressNextOutsideClickRef.current = false; + }; + }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store, cancelDismissOnEndTimeout]); + React19.useEffect(clearInsideReactTree, [outsidePress2, clearInsideReactTree]); + const reference = React19.useMemo(() => ({ + onKeyDown: closeOnEscapeKeyDown, + [bubbleHandlerKeys[referencePressEvent]]: closeOnReferencePress, + ...referencePressEvent !== "intentional" && { + onClick: closeOnReferencePress + } + }), [closeOnEscapeKeyDown, closeOnReferencePress, referencePressEvent]); + const floating = React19.useMemo(() => ({ + onKeyDown: closeOnEscapeKeyDown, + // `onMouseDown` may be blocked if `event.preventDefault()` is called in + // `onPointerDown`, such as with <NumberField.ScrubArea>. + // See https://github.com/mui/base-ui/pull/3379 + onPointerDown: markInsidePressStartPrevented, + onMouseDown: markInsidePressStartPrevented, + onClickCapture: markInsideReactTree, + onMouseDownCapture(event) { + markInsideReactTree(); + markPressStartedInsideReactTree(event); + }, + onPointerDownCapture(event) { + markInsideReactTree(); + markPressStartedInsideReactTree(event); + }, + onMouseUpCapture: markInsideReactTree, + onTouchEndCapture: markInsideReactTree, + onTouchMoveCapture: markInsideReactTree + }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); + return React19.useMemo(() => enabled ? { + reference, + floating, + trigger: reference + } : {}, [enabled, reference, floating]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloating.js +var React26 = __toESM(require_react(), 1); + +// node_modules/@floating-ui/core/dist/floating-ui.core.mjs +function computeCoordsFromPlacement(_ref, placement, rtl) { + let { + reference, + floating + } = _ref; + const sideAxis = getSideAxis(placement); + const alignmentAxis = getAlignmentAxis(placement); + const alignLength = getAxisLength(alignmentAxis); + const side = getSide(placement); + const isVertical = sideAxis === "y"; + const commonX = reference.x + reference.width / 2 - floating.width / 2; + const commonY = reference.y + reference.height / 2 - floating.height / 2; + const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; + let coords; + switch (side) { + case "top": + coords = { + x: commonX, + y: reference.y - floating.height + }; + break; + case "bottom": + coords = { + x: commonX, + y: reference.y + reference.height + }; + break; + case "right": + coords = { + x: reference.x + reference.width, + y: commonY + }; + break; + case "left": + coords = { + x: reference.x - floating.width, + y: commonY + }; + break; + default: + coords = { + x: reference.x, + y: reference.y + }; + } + switch (getAlignment(placement)) { + case "start": + coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); + break; + case "end": + coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1); + break; + } + return coords; +} +async function detectOverflow(state, options) { + var _await$platform$isEle; + if (options === void 0) { + options = {}; + } + const { + x: x2, + y: y2, + platform: platform3, + rects, + elements: elements2, + strategy + } = state; + const { + boundary = "clippingAncestors", + rootBoundary = "viewport", + elementContext = "floating", + altBoundary = false, + padding = 0 + } = evaluate(options, state); + const paddingObject = getPaddingObject(padding); + const altContext = elementContext === "floating" ? "reference" : "floating"; + const element = elements2[altBoundary ? altContext : elementContext]; + const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ + element: ((_await$platform$isEle = await (platform3.isElement == null ? void 0 : platform3.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform3.getDocumentElement == null ? void 0 : platform3.getDocumentElement(elements2.floating)), + boundary, + rootBoundary, + strategy + })); + const rect = elementContext === "floating" ? { + x: x2, + y: y2, + width: rects.floating.width, + height: rects.floating.height + } : rects.reference; + const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements2.floating)); + const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) ? await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { + x: 1, + y: 1 + } : { + x: 1, + y: 1 + }; + const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ + elements: elements2, + rect, + offsetParent, + strategy + }) : rect); + return { + top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, + bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, + left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, + right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x + }; +} +var MAX_RESET_COUNT = 50; +var computePosition = async (reference, floating, config) => { + const { + placement = "bottom", + strategy = "absolute", + middleware = [], + platform: platform3 + } = config; + const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { + ...platform3, + detectOverflow + }; + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); + let rects = await platform3.getElementRects({ + reference, + floating, + strategy + }); + let { + x: x2, + y: y2 + } = computeCoordsFromPlacement(rects, placement, rtl); + let statefulPlacement = placement; + let resetCount = 0; + const middlewareData = {}; + for (let i2 = 0; i2 < middleware.length; i2++) { + const currentMiddleware = middleware[i2]; + if (!currentMiddleware) { + continue; + } + const { + name: name2, + fn + } = currentMiddleware; + const { + x: nextX, + y: nextY, + data, + reset + } = await fn({ + x: x2, + y: y2, + initialPlacement: placement, + placement: statefulPlacement, + strategy, + middlewareData, + rects, + platform: platformWithDetectOverflow, + elements: { + reference, + floating + } + }); + x2 = nextX != null ? nextX : x2; + y2 = nextY != null ? nextY : y2; + middlewareData[name2] = { + ...middlewareData[name2], + ...data + }; + if (reset && resetCount < MAX_RESET_COUNT) { + resetCount++; + if (typeof reset === "object") { + if (reset.placement) { + statefulPlacement = reset.placement; + } + if (reset.rects) { + rects = reset.rects === true ? await platform3.getElementRects({ + reference, + floating, + strategy + }) : reset.rects; + } + ({ + x: x2, + y: y2 + } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); + } + i2 = -1; + } + } + return { + x: x2, + y: y2, + placement: statefulPlacement, + strategy, + middlewareData + }; +}; +var flip = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "flip", + options, + async fn(state) { + var _middlewareData$arrow, _middlewareData$flip; + const { + placement, + middlewareData, + rects, + initialPlacement, + platform: platform3, + elements: elements2 + } = state; + const { + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = true, + fallbackPlacements: specifiedFallbackPlacements, + fallbackStrategy = "bestFit", + fallbackAxisSideDirection = "none", + flipAlignment = true, + ...detectOverflowOptions + } = evaluate(options, state); + if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { + return {}; + } + const side = getSide(placement); + const initialSideAxis = getSideAxis(initialPlacement); + const isBasePlacement = getSide(initialPlacement) === initialPlacement; + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements2.floating)); + const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); + const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; + if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { + fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); + } + const placements2 = [initialPlacement, ...fallbackPlacements]; + const overflow = await platform3.detectOverflow(state, detectOverflowOptions); + const overflows = []; + let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; + if (checkMainAxis) { + overflows.push(overflow[side]); + } + if (checkCrossAxis) { + const sides2 = getAlignmentSides(placement, rects, rtl); + overflows.push(overflow[sides2[0]], overflow[sides2[1]]); + } + overflowsData = [...overflowsData, { + placement, + overflows + }]; + if (!overflows.every((side2) => side2 <= 0)) { + var _middlewareData$flip2, _overflowsData$filter; + const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; + const nextPlacement = placements2[nextIndex]; + if (nextPlacement) { + const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; + if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis + // overflows the main axis. + overflowsData.every((d2) => getSideAxis(d2.placement) === initialSideAxis ? d2.overflows[0] > 0 : true)) { + return { + data: { + index: nextIndex, + overflows: overflowsData + }, + reset: { + placement: nextPlacement + } + }; + } + } + let resetPlacement = (_overflowsData$filter = overflowsData.filter((d2) => d2.overflows[0] <= 0).sort((a2, b2) => a2.overflows[1] - b2.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement; + if (!resetPlacement) { + switch (fallbackStrategy) { + case "bestFit": { + var _overflowsData$filter2; + const placement2 = (_overflowsData$filter2 = overflowsData.filter((d2) => { + if (hasFallbackAxisSideDirection) { + const currentSideAxis = getSideAxis(d2.placement); + return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal + // reading directions favoring greater width. + currentSideAxis === "y"; + } + return true; + }).map((d2) => [d2.placement, d2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$filter2[0]; + if (placement2) { + resetPlacement = placement2; + } + break; + } + case "initialPlacement": + resetPlacement = initialPlacement; + break; + } + } + if (placement !== resetPlacement) { + return { + reset: { + placement: resetPlacement + } + }; + } + } + return {}; + } + }; +}; +function getSideOffsets(overflow, rect) { + return { + top: overflow.top - rect.height, + right: overflow.right - rect.width, + bottom: overflow.bottom - rect.height, + left: overflow.left - rect.width + }; +} +function isAnySideFullyClipped(overflow) { + return sides.some((side) => overflow[side] >= 0); +} +var hide = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "hide", + options, + async fn(state) { + const { + rects, + platform: platform3 + } = state; + const { + strategy = "referenceHidden", + ...detectOverflowOptions + } = evaluate(options, state); + switch (strategy) { + case "referenceHidden": { + const overflow = await platform3.detectOverflow(state, { + ...detectOverflowOptions, + elementContext: "reference" + }); + const offsets = getSideOffsets(overflow, rects.reference); + return { + data: { + referenceHiddenOffsets: offsets, + referenceHidden: isAnySideFullyClipped(offsets) + } + }; + } + case "escaped": { + const overflow = await platform3.detectOverflow(state, { + ...detectOverflowOptions, + altBoundary: true + }); + const offsets = getSideOffsets(overflow, rects.floating); + return { + data: { + escapedOffsets: offsets, + escaped: isAnySideFullyClipped(offsets) + } + }; + } + default: { + return {}; + } + } + } + }; +}; +var originSides = /* @__PURE__ */ new Set(["left", "top"]); +async function convertValueToCoords(state, options) { + const { + placement, + platform: platform3, + elements: elements2 + } = state; + const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements2.floating)); + const side = getSide(placement); + const alignment = getAlignment(placement); + const isVertical = getSideAxis(placement) === "y"; + const mainAxisMulti = originSides.has(side) ? -1 : 1; + const crossAxisMulti = rtl && isVertical ? -1 : 1; + const rawValue = evaluate(options, state); + let { + mainAxis, + crossAxis, + alignmentAxis + } = typeof rawValue === "number" ? { + mainAxis: rawValue, + crossAxis: 0, + alignmentAxis: null + } : { + mainAxis: rawValue.mainAxis || 0, + crossAxis: rawValue.crossAxis || 0, + alignmentAxis: rawValue.alignmentAxis + }; + if (alignment && typeof alignmentAxis === "number") { + crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; + } + return isVertical ? { + x: crossAxis * crossAxisMulti, + y: mainAxis * mainAxisMulti + } : { + x: mainAxis * mainAxisMulti, + y: crossAxis * crossAxisMulti + }; +} +var offset = function(options) { + if (options === void 0) { + options = 0; + } + return { + name: "offset", + options, + async fn(state) { + var _middlewareData$offse, _middlewareData$arrow; + const { + x: x2, + y: y2, + placement, + middlewareData + } = state; + const diffCoords = await convertValueToCoords(state, options); + if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { + return {}; + } + return { + x: x2 + diffCoords.x, + y: y2 + diffCoords.y, + data: { + ...diffCoords, + placement + } + }; + } + }; +}; +var shift = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "shift", + options, + async fn(state) { + const { + x: x2, + y: y2, + placement, + platform: platform3 + } = state; + const { + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = false, + limiter = { + fn: (_ref) => { + let { + x: x3, + y: y3 + } = _ref; + return { + x: x3, + y: y3 + }; + } + }, + ...detectOverflowOptions + } = evaluate(options, state); + const coords = { + x: x2, + y: y2 + }; + const overflow = await platform3.detectOverflow(state, detectOverflowOptions); + const crossAxis = getSideAxis(getSide(placement)); + const mainAxis = getOppositeAxis(crossAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + if (checkMainAxis) { + const minSide = mainAxis === "y" ? "top" : "left"; + const maxSide = mainAxis === "y" ? "bottom" : "right"; + const min2 = mainAxisCoord + overflow[minSide]; + const max2 = mainAxisCoord - overflow[maxSide]; + mainAxisCoord = clamp(min2, mainAxisCoord, max2); + } + if (checkCrossAxis) { + const minSide = crossAxis === "y" ? "top" : "left"; + const maxSide = crossAxis === "y" ? "bottom" : "right"; + const min2 = crossAxisCoord + overflow[minSide]; + const max2 = crossAxisCoord - overflow[maxSide]; + crossAxisCoord = clamp(min2, crossAxisCoord, max2); + } + const limitedCoords = limiter.fn({ + ...state, + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + }); + return { + ...limitedCoords, + data: { + x: limitedCoords.x - x2, + y: limitedCoords.y - y2, + enabled: { + [mainAxis]: checkMainAxis, + [crossAxis]: checkCrossAxis + } + } + }; + } + }; +}; +var limitShift = function(options) { + if (options === void 0) { + options = {}; + } + return { + options, + fn(state) { + const { + x: x2, + y: y2, + placement, + rects, + middlewareData + } = state; + const { + offset: offset4 = 0, + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = true + } = evaluate(options, state); + const coords = { + x: x2, + y: y2 + }; + const crossAxis = getSideAxis(placement); + const mainAxis = getOppositeAxis(crossAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + const rawOffset = evaluate(offset4, state); + const computedOffset = typeof rawOffset === "number" ? { + mainAxis: rawOffset, + crossAxis: 0 + } : { + mainAxis: 0, + crossAxis: 0, + ...rawOffset + }; + if (checkMainAxis) { + const len = mainAxis === "y" ? "height" : "width"; + const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; + const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; + if (mainAxisCoord < limitMin) { + mainAxisCoord = limitMin; + } else if (mainAxisCoord > limitMax) { + mainAxisCoord = limitMax; + } + } + if (checkCrossAxis) { + var _middlewareData$offse, _middlewareData$offse2; + const len = mainAxis === "y" ? "width" : "height"; + const isOriginSide = originSides.has(getSide(placement)); + const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis); + const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0); + if (crossAxisCoord < limitMin) { + crossAxisCoord = limitMin; + } else if (crossAxisCoord > limitMax) { + crossAxisCoord = limitMax; + } + } + return { + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + }; + } + }; +}; +var size = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "size", + options, + async fn(state) { + var _state$middlewareData, _state$middlewareData2; + const { + placement, + rects, + platform: platform3, + elements: elements2 + } = state; + const { + apply = () => { + }, + ...detectOverflowOptions + } = evaluate(options, state); + const overflow = await platform3.detectOverflow(state, detectOverflowOptions); + const side = getSide(placement); + const alignment = getAlignment(placement); + const isYAxis = getSideAxis(placement) === "y"; + const { + width, + height + } = rects.floating; + let heightSide; + let widthSide; + if (side === "top" || side === "bottom") { + heightSide = side; + widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements2.floating)) ? "start" : "end") ? "left" : "right"; + } else { + widthSide = side; + heightSide = alignment === "end" ? "top" : "bottom"; + } + const maximumClippingHeight = height - overflow.top - overflow.bottom; + const maximumClippingWidth = width - overflow.left - overflow.right; + const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); + const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); + const noShift = !state.middlewareData.shift; + let availableHeight = overflowAvailableHeight; + let availableWidth = overflowAvailableWidth; + if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) { + availableWidth = maximumClippingWidth; + } + if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) { + availableHeight = maximumClippingHeight; + } + if (noShift && !alignment) { + const xMin = max(overflow.left, 0); + const xMax = max(overflow.right, 0); + const yMin = max(overflow.top, 0); + const yMax = max(overflow.bottom, 0); + if (isYAxis) { + availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)); + } else { + availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)); + } + } + await apply({ + ...state, + availableWidth, + availableHeight + }); + const nextDimensions = await platform3.getDimensions(elements2.floating); + if (width !== nextDimensions.width || height !== nextDimensions.height) { + return { + reset: { + rects: true + } + }; + } + return {}; + } + }; +}; + +// node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +function getCssDimensions(element) { + const css = getComputedStyle2(element); + let width = parseFloat(css.width) || 0; + let height = parseFloat(css.height) || 0; + const hasOffset = isHTMLElement(element); + const offsetWidth = hasOffset ? element.offsetWidth : width; + const offsetHeight = hasOffset ? element.offsetHeight : height; + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; + if (shouldFallback) { + width = offsetWidth; + height = offsetHeight; + } + return { + width, + height, + $: shouldFallback + }; +} +function unwrapElement(element) { + return !isElement(element) ? element.contextElement : element; +} +function getScale(element) { + const domElement = unwrapElement(element); + if (!isHTMLElement(domElement)) { + return createCoords(1); + } + const rect = domElement.getBoundingClientRect(); + const { + width, + height, + $: $2 + } = getCssDimensions(domElement); + let x2 = ($2 ? round(rect.width) : rect.width) / width; + let y2 = ($2 ? round(rect.height) : rect.height) / height; + if (!x2 || !Number.isFinite(x2)) { + x2 = 1; + } + if (!y2 || !Number.isFinite(y2)) { + y2 = 1; + } + return { + x: x2, + y: y2 + }; +} +var noOffsets = /* @__PURE__ */ createCoords(0); +function getVisualOffsets(element) { + const win = getWindow(element); + if (!isWebKit() || !win.visualViewport) { + return noOffsets; + } + return { + x: win.visualViewport.offsetLeft, + y: win.visualViewport.offsetTop + }; +} +function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { + if (isFixed === void 0) { + isFixed = false; + } + if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) { + return false; + } + return isFixed; +} +function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { + if (includeScale === void 0) { + includeScale = false; + } + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + const clientRect = element.getBoundingClientRect(); + const domElement = unwrapElement(element); + let scale = createCoords(1); + if (includeScale) { + if (offsetParent) { + if (isElement(offsetParent)) { + scale = getScale(offsetParent); + } + } else { + scale = getScale(element); + } + } + const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); + let x2 = (clientRect.left + visualOffsets.x) / scale.x; + let y2 = (clientRect.top + visualOffsets.y) / scale.y; + let width = clientRect.width / scale.x; + let height = clientRect.height / scale.y; + if (domElement) { + const win = getWindow(domElement); + const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; + let currentWin = win; + let currentIFrame = getFrameElement(currentWin); + while (currentIFrame && offsetParent && offsetWin !== currentWin) { + const iframeScale = getScale(currentIFrame); + const iframeRect = currentIFrame.getBoundingClientRect(); + const css = getComputedStyle2(currentIFrame); + const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; + const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; + x2 *= iframeScale.x; + y2 *= iframeScale.y; + width *= iframeScale.x; + height *= iframeScale.y; + x2 += left; + y2 += top; + currentWin = getWindow(currentIFrame); + currentIFrame = getFrameElement(currentWin); + } + } + return rectToClientRect({ + width, + height, + x: x2, + y: y2 + }); +} +function getWindowScrollBarX(element, rect) { + const leftScroll = getNodeScroll(element).scrollLeft; + if (!rect) { + return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; + } + return rect.left + leftScroll; +} +function getHTMLOffset(documentElement, scroll) { + const htmlRect = documentElement.getBoundingClientRect(); + const x2 = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); + const y2 = htmlRect.top + scroll.scrollTop; + return { + x: x2, + y: y2 + }; +} +function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { + let { + elements: elements2, + rect, + offsetParent, + strategy + } = _ref; + const isFixed = strategy === "fixed"; + const documentElement = getDocumentElement(offsetParent); + const topLayer = elements2 ? isTopLayer(elements2.floating) : false; + if (offsetParent === documentElement || topLayer && isFixed) { + return rect; + } + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + let scale = createCoords(1); + const offsets = createCoords(0); + const isOffsetParentAnElement = isHTMLElement(offsetParent); + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isOffsetParentAnElement) { + const offsetRect = getBoundingClientRect(offsetParent); + scale = getScale(offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } + } + const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); + return { + width: rect.width * scale.x, + height: rect.height * scale.y, + x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, + y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y + }; +} +function getClientRects(element) { + return Array.from(element.getClientRects()); +} +function getDocumentRect(element) { + const html = getDocumentElement(element); + const scroll = getNodeScroll(element); + const body = element.ownerDocument.body; + const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); + const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); + let x2 = -scroll.scrollLeft + getWindowScrollBarX(element); + const y2 = -scroll.scrollTop; + if (getComputedStyle2(body).direction === "rtl") { + x2 += max(html.clientWidth, body.clientWidth) - width; + } + return { + width, + height, + x: x2, + y: y2 + }; +} +var SCROLLBAR_MAX = 25; +function getViewportRect(element, strategy) { + const win = getWindow(element); + const html = getDocumentElement(element); + const visualViewport = win.visualViewport; + let width = html.clientWidth; + let height = html.clientHeight; + let x2 = 0; + let y2 = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + const visualViewportBased = isWebKit(); + if (!visualViewportBased || visualViewportBased && strategy === "fixed") { + x2 = visualViewport.offsetLeft; + y2 = visualViewport.offsetTop; + } + } + const windowScrollbarX = getWindowScrollBarX(html); + if (windowScrollbarX <= 0) { + const doc = html.ownerDocument; + const body = doc.body; + const bodyStyles = getComputedStyle(body); + const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; + const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); + if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) { + width -= clippingStableScrollbarWidth; + } + } else if (windowScrollbarX <= SCROLLBAR_MAX) { + width += windowScrollbarX; + } + return { + width, + height, + x: x2, + y: y2 + }; +} +function getInnerBoundingClientRect(element, strategy) { + const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); + const top = clientRect.top + element.clientTop; + const left = clientRect.left + element.clientLeft; + const scale = isHTMLElement(element) ? getScale(element) : createCoords(1); + const width = element.clientWidth * scale.x; + const height = element.clientHeight * scale.y; + const x2 = left * scale.x; + const y2 = top * scale.y; + return { + width, + height, + x: x2, + y: y2 + }; +} +function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { + let rect; + if (clippingAncestor === "viewport") { + rect = getViewportRect(element, strategy); + } else if (clippingAncestor === "document") { + rect = getDocumentRect(getDocumentElement(element)); + } else if (isElement(clippingAncestor)) { + rect = getInnerBoundingClientRect(clippingAncestor, strategy); + } else { + const visualOffsets = getVisualOffsets(element); + rect = { + x: clippingAncestor.x - visualOffsets.x, + y: clippingAncestor.y - visualOffsets.y, + width: clippingAncestor.width, + height: clippingAncestor.height + }; + } + return rectToClientRect(rect); +} +function hasFixedPositionAncestor(element, stopNode) { + const parentNode = getParentNode(element); + if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) { + return false; + } + return getComputedStyle2(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode); +} +function getClippingElementAncestors(element, cache) { + const cachedResult = cache.get(element); + if (cachedResult) { + return cachedResult; + } + let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); + let currentContainingBlockComputedStyle = null; + const elementIsFixed = getComputedStyle2(element).position === "fixed"; + let currentNode = elementIsFixed ? getParentNode(element) : element; + while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { + const computedStyle = getComputedStyle2(currentNode); + const currentNodeIsContaining = isContainingBlock(currentNode); + if (!currentNodeIsContaining && computedStyle.position === "fixed") { + currentContainingBlockComputedStyle = null; + } + const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === "absolute" || currentContainingBlockComputedStyle.position === "fixed") || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode); + if (shouldDropCurrentNode) { + result = result.filter((ancestor) => ancestor !== currentNode); + } else { + currentContainingBlockComputedStyle = computedStyle; + } + currentNode = getParentNode(currentNode); + } + cache.set(element, result); + return result; +} +function getClippingRect(_ref) { + let { + element, + boundary, + rootBoundary, + strategy + } = _ref; + const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); + const clippingAncestors = [...elementClippingAncestors, rootBoundary]; + const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); + let top = firstRect.top; + let right = firstRect.right; + let bottom = firstRect.bottom; + let left = firstRect.left; + for (let i2 = 1; i2 < clippingAncestors.length; i2++) { + const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i2], strategy); + top = max(rect.top, top); + right = min(rect.right, right); + bottom = min(rect.bottom, bottom); + left = max(rect.left, left); + } + return { + width: right - left, + height: bottom - top, + x: left, + y: top + }; +} +function getDimensions(element) { + const { + width, + height + } = getCssDimensions(element); + return { + width, + height + }; +} +function getRectRelativeToOffsetParent(element, offsetParent, strategy) { + const isOffsetParentAnElement = isHTMLElement(offsetParent); + const documentElement = getDocumentElement(offsetParent); + const isFixed = strategy === "fixed"; + const rect = getBoundingClientRect(element, true, isFixed, offsetParent); + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + const offsets = createCoords(0); + function setLeftRTLScrollbarOffset() { + offsets.x = getWindowScrollBarX(documentElement); + } + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isOffsetParentAnElement) { + const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } else if (documentElement) { + setLeftRTLScrollbarOffset(); + } + } + if (isFixed && !isOffsetParentAnElement && documentElement) { + setLeftRTLScrollbarOffset(); + } + const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); + const x2 = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; + const y2 = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; + return { + x: x2, + y: y2, + width: rect.width, + height: rect.height + }; +} +function isStaticPositioned(element) { + return getComputedStyle2(element).position === "static"; +} +function getTrueOffsetParent(element, polyfill) { + if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { + return null; + } + if (polyfill) { + return polyfill(element); + } + let rawOffsetParent = element.offsetParent; + if (getDocumentElement(element) === rawOffsetParent) { + rawOffsetParent = rawOffsetParent.ownerDocument.body; + } + return rawOffsetParent; +} +function getOffsetParent(element, polyfill) { + const win = getWindow(element); + if (isTopLayer(element)) { + return win; + } + if (!isHTMLElement(element)) { + let svgOffsetParent = getParentNode(element); + while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { + if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { + return svgOffsetParent; + } + svgOffsetParent = getParentNode(svgOffsetParent); + } + return win; + } + let offsetParent = getTrueOffsetParent(element, polyfill); + while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { + offsetParent = getTrueOffsetParent(offsetParent, polyfill); + } + if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { + return win; + } + return offsetParent || getContainingBlock(element) || win; +} +var getElementRects = async function(data) { + const getOffsetParentFn = this.getOffsetParent || getOffsetParent; + const getDimensionsFn = this.getDimensions; + const floatingDimensions = await getDimensionsFn(data.floating); + return { + reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), + floating: { + x: 0, + y: 0, + width: floatingDimensions.width, + height: floatingDimensions.height + } + }; +}; +function isRTL(element) { + return getComputedStyle2(element).direction === "rtl"; +} +var platform2 = { + convertOffsetParentRelativeRectToViewportRelativeRect, + getDocumentElement, + getClippingRect, + getOffsetParent, + getElementRects, + getClientRects, + getDimensions, + getScale, + isElement, + isRTL +}; +function rectsAreEqual(a2, b2) { + return a2.x === b2.x && a2.y === b2.y && a2.width === b2.width && a2.height === b2.height; +} +function observeMove(element, onMove) { + let io = null; + let timeoutId; + const root = getDocumentElement(element); + function cleanup() { + var _io; + clearTimeout(timeoutId); + (_io = io) == null || _io.disconnect(); + io = null; + } + function refresh(skip, threshold) { + if (skip === void 0) { + skip = false; + } + if (threshold === void 0) { + threshold = 1; + } + cleanup(); + const elementRectForRootMargin = element.getBoundingClientRect(); + const { + left, + top, + width, + height + } = elementRectForRootMargin; + if (!skip) { + onMove(); + } + if (!width || !height) { + return; + } + const insetTop = floor(top); + const insetRight = floor(root.clientWidth - (left + width)); + const insetBottom = floor(root.clientHeight - (top + height)); + const insetLeft = floor(left); + const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; + const options = { + rootMargin, + threshold: max(0, min(1, threshold)) || 1 + }; + let isFirstUpdate = true; + function handleObserve(entries) { + const ratio = entries[0].intersectionRatio; + if (ratio !== threshold) { + if (!isFirstUpdate) { + return refresh(); + } + if (!ratio) { + timeoutId = setTimeout(() => { + refresh(false, 1e-7); + }, 1e3); + } else { + refresh(false, ratio); + } + } + if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { + refresh(); + } + isFirstUpdate = false; + } + try { + io = new IntersectionObserver(handleObserve, { + ...options, + // Handle <iframe>s + root: root.ownerDocument + }); + } catch (_e) { + io = new IntersectionObserver(handleObserve, options); + } + io.observe(element); + } + refresh(true); + return cleanup; +} +function autoUpdate(reference, floating, update2, options) { + if (options === void 0) { + options = {}; + } + const { + ancestorScroll = true, + ancestorResize = true, + elementResize = typeof ResizeObserver === "function", + layoutShift = typeof IntersectionObserver === "function", + animationFrame = false + } = options; + const referenceEl = unwrapElement(reference); + const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; + ancestors.forEach((ancestor) => { + ancestorScroll && ancestor.addEventListener("scroll", update2, { + passive: true + }); + ancestorResize && ancestor.addEventListener("resize", update2); + }); + const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2) : null; + let reobserveFrame = -1; + let resizeObserver = null; + if (elementResize) { + resizeObserver = new ResizeObserver((_ref) => { + let [firstEntry] = _ref; + if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { + resizeObserver.unobserve(floating); + cancelAnimationFrame(reobserveFrame); + reobserveFrame = requestAnimationFrame(() => { + var _resizeObserver; + (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); + }); + } + update2(); + }); + if (referenceEl && !animationFrame) { + resizeObserver.observe(referenceEl); + } + if (floating) { + resizeObserver.observe(floating); + } + } + let frameId; + let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; + if (animationFrame) { + frameLoop(); + } + function frameLoop() { + const nextRefRect = getBoundingClientRect(reference); + if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { + update2(); + } + prevRefRect = nextRefRect; + frameId = requestAnimationFrame(frameLoop); + } + update2(); + return () => { + var _resizeObserver2; + ancestors.forEach((ancestor) => { + ancestorScroll && ancestor.removeEventListener("scroll", update2); + ancestorResize && ancestor.removeEventListener("resize", update2); + }); + cleanupIo == null || cleanupIo(); + (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); + resizeObserver = null; + if (animationFrame) { + cancelAnimationFrame(frameId); + } + }; +} +var offset2 = offset; +var shift2 = shift; +var flip2 = flip; +var size2 = size; +var hide2 = hide; +var limitShift2 = limitShift; +var computePosition2 = (reference, floating, options) => { + const cache = /* @__PURE__ */ new Map(); + const mergedOptions = { + platform: platform2, + ...options + }; + const platformWithCache = { + ...mergedOptions.platform, + _c: cache + }; + return computePosition(reference, floating, { + ...mergedOptions, + platform: platformWithCache + }); +}; + +// node_modules/@base-ui/react/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs +var React20 = __toESM(require_react(), 1); +var import_react2 = __toESM(require_react(), 1); +var ReactDOM3 = __toESM(require_react_dom(), 1); +var isClient = typeof document !== "undefined"; +var noop2 = function noop3() { +}; +var index = isClient ? import_react2.useLayoutEffect : noop2; +function deepEqual(a2, b2) { + if (a2 === b2) { + return true; + } + if (typeof a2 !== typeof b2) { + return false; + } + if (typeof a2 === "function" && a2.toString() === b2.toString()) { + return true; + } + let length; + let i2; + let keys; + if (a2 && b2 && typeof a2 === "object") { + if (Array.isArray(a2)) { + length = a2.length; + if (length !== b2.length) return false; + for (i2 = length; i2-- !== 0; ) { + if (!deepEqual(a2[i2], b2[i2])) { + return false; + } + } + return true; + } + keys = Object.keys(a2); + length = keys.length; + if (length !== Object.keys(b2).length) { + return false; + } + for (i2 = length; i2-- !== 0; ) { + if (!{}.hasOwnProperty.call(b2, keys[i2])) { + return false; + } + } + for (i2 = length; i2-- !== 0; ) { + const key = keys[i2]; + if (key === "_owner" && a2.$$typeof) { + continue; + } + if (!deepEqual(a2[key], b2[key])) { + return false; + } + } + return true; + } + return a2 !== a2 && b2 !== b2; +} +function getDPR(element) { + if (typeof window === "undefined") { + return 1; + } + const win = element.ownerDocument.defaultView || window; + return win.devicePixelRatio || 1; +} +function roundByDPR(element, value) { + const dpr = getDPR(element); + return Math.round(value * dpr) / dpr; +} +function useLatestRef(value) { + const ref = React20.useRef(value); + index(() => { + ref.current = value; + }); + return ref; +} +function useFloating(options) { + if (options === void 0) { + options = {}; + } + const { + placement = "bottom", + strategy = "absolute", + middleware = [], + platform: platform3, + elements: { + reference: externalReference, + floating: externalFloating + } = {}, + transform = true, + whileElementsMounted, + open + } = options; + const [data, setData] = React20.useState({ + x: 0, + y: 0, + strategy, + placement, + middlewareData: {}, + isPositioned: false + }); + const [latestMiddleware, setLatestMiddleware] = React20.useState(middleware); + if (!deepEqual(latestMiddleware, middleware)) { + setLatestMiddleware(middleware); + } + const [_reference, _setReference] = React20.useState(null); + const [_floating, _setFloating] = React20.useState(null); + const setReference = React20.useCallback((node) => { + if (node !== referenceRef.current) { + referenceRef.current = node; + _setReference(node); + } + }, []); + const setFloating = React20.useCallback((node) => { + if (node !== floatingRef.current) { + floatingRef.current = node; + _setFloating(node); + } + }, []); + const referenceEl = externalReference || _reference; + const floatingEl = externalFloating || _floating; + const referenceRef = React20.useRef(null); + const floatingRef = React20.useRef(null); + const dataRef = React20.useRef(data); + const hasWhileElementsMounted = whileElementsMounted != null; + const whileElementsMountedRef = useLatestRef(whileElementsMounted); + const platformRef = useLatestRef(platform3); + const openRef = useLatestRef(open); + const update2 = React20.useCallback(() => { + if (!referenceRef.current || !floatingRef.current) { + return; + } + const config = { + placement, + strategy, + middleware: latestMiddleware + }; + if (platformRef.current) { + config.platform = platformRef.current; + } + computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { + const fullData = { + ...data2, + // The floating element's position may be recomputed while it's closed + // but still mounted (such as when transitioning out). To ensure + // `isPositioned` will be `false` initially on the next open, avoid + // setting it to `true` when `open === false` (must be specified). + isPositioned: openRef.current !== false + }; + if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { + dataRef.current = fullData; + ReactDOM3.flushSync(() => { + setData(fullData); + }); + } + }); + }, [latestMiddleware, placement, strategy, platformRef, openRef]); + index(() => { + if (open === false && dataRef.current.isPositioned) { + dataRef.current.isPositioned = false; + setData((data2) => ({ + ...data2, + isPositioned: false + })); + } + }, [open]); + const isMountedRef = React20.useRef(false); + index(() => { + isMountedRef.current = true; + return () => { + isMountedRef.current = false; + }; + }, []); + index(() => { + if (referenceEl) referenceRef.current = referenceEl; + if (floatingEl) floatingRef.current = floatingEl; + if (referenceEl && floatingEl) { + if (whileElementsMountedRef.current) { + return whileElementsMountedRef.current(referenceEl, floatingEl, update2); + } + update2(); + } + }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); + const refs = React20.useMemo(() => ({ + reference: referenceRef, + floating: floatingRef, + setReference, + setFloating + }), [setReference, setFloating]); + const elements2 = React20.useMemo(() => ({ + reference: referenceEl, + floating: floatingEl + }), [referenceEl, floatingEl]); + const floatingStyles = React20.useMemo(() => { + const initialStyles = { + position: strategy, + left: 0, + top: 0 + }; + if (!elements2.floating) { + return initialStyles; + } + const x2 = roundByDPR(elements2.floating, data.x); + const y2 = roundByDPR(elements2.floating, data.y); + if (transform) { + return { + ...initialStyles, + transform: "translate(" + x2 + "px, " + y2 + "px)", + ...getDPR(elements2.floating) >= 1.5 && { + willChange: "transform" + } + }; + } + return { + position: strategy, + left: x2, + top: y2 + }; + }, [strategy, transform, elements2.floating, data.x, data.y]); + return React20.useMemo(() => ({ + ...data, + update: update2, + refs, + elements: elements2, + floatingStyles + }), [data, update2, refs, elements2, floatingStyles]); +} +var offset3 = (options, deps) => { + const result = offset2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; +var shift3 = (options, deps) => { + const result = shift2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; +var limitShift3 = (options, deps) => { + const result = limitShift2(options); + return { + fn: result.fn, + options: [options, deps] + }; +}; +var flip3 = (options, deps) => { + const result = flip2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; +var size3 = (options, deps) => { + const result = size2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; +var hide3 = (options, deps) => { + const result = hide2(options); + return { + name: result.name, + fn: result.fn, + options: [options, deps] + }; +}; + +// node_modules/@base-ui/react/esm/utils/popups/popupStoreUtils.js +var React25 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +var React24 = __toESM(require_react(), 1); + +// node_modules/@base-ui/utils/esm/store/createSelector.js +var createSelector = (a2, b2, c2, d2, e2, f2, ...other) => { + if (other.length > 0) { + throw new Error(true ? "Unsupported number of selectors" : formatErrorMessage_default(1)); + } + let selector; + if (a2 && b2 && c2 && d2 && e2 && f2) { + selector = (state, a1, a22, a3) => { + const va = a2(state, a1, a22, a3); + const vb = b2(state, a1, a22, a3); + const vc = c2(state, a1, a22, a3); + const vd = d2(state, a1, a22, a3); + const ve = e2(state, a1, a22, a3); + return f2(va, vb, vc, vd, ve, a1, a22, a3); + }; + } else if (a2 && b2 && c2 && d2 && e2) { + selector = (state, a1, a22, a3) => { + const va = a2(state, a1, a22, a3); + const vb = b2(state, a1, a22, a3); + const vc = c2(state, a1, a22, a3); + const vd = d2(state, a1, a22, a3); + return e2(va, vb, vc, vd, a1, a22, a3); + }; + } else if (a2 && b2 && c2 && d2) { + selector = (state, a1, a22, a3) => { + const va = a2(state, a1, a22, a3); + const vb = b2(state, a1, a22, a3); + const vc = c2(state, a1, a22, a3); + return d2(va, vb, vc, a1, a22, a3); + }; + } else if (a2 && b2 && c2) { + selector = (state, a1, a22, a3) => { + const va = a2(state, a1, a22, a3); + const vb = b2(state, a1, a22, a3); + return c2(va, vb, a1, a22, a3); + }; + } else if (a2 && b2) { + selector = (state, a1, a22, a3) => { + const va = a2(state, a1, a22, a3); + return b2(va, a1, a22, a3); + }; + } else if (a2) { + selector = a2; + } else { + throw ( + /* minify-error-disabled */ + new Error("Missing arguments") + ); + } + return selector; +}; + +// node_modules/@base-ui/utils/esm/store/useStore.js +var React22 = __toESM(require_react(), 1); +var import_shim = __toESM(require_shim(), 1); +var import_with_selector = __toESM(require_with_selector(), 1); + +// node_modules/@base-ui/utils/esm/fastHooks.js +var React21 = __toESM(require_react(), 1); +var hooks = []; +var currentInstance = void 0; +function getInstance() { + return currentInstance; +} +function register(hook) { + hooks.push(hook); +} +function fastComponent(fn) { + const FastComponent = (props, forwardedRef) => { + const instance = useRefWithInit(createInstance).current; + let result; + try { + currentInstance = instance; + for (const hook of hooks) { + hook.before(instance); + } + result = fn(props, forwardedRef); + for (const hook of hooks) { + hook.after(instance); + } + instance.didInitialize = true; + } finally { + currentInstance = void 0; + } + return result; + }; + FastComponent.displayName = fn.displayName || fn.name; + return FastComponent; +} +function fastComponentRef(fn) { + return /* @__PURE__ */ React21.forwardRef(fastComponent(fn)); +} +function createInstance() { + return { + didInitialize: false + }; +} + +// node_modules/@base-ui/utils/esm/store/useStore.js +var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); +var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; +function useStore(store, selector, a1, a2, a3) { + return useStoreImplementation(store, selector, a1, a2, a3); +} +function useStoreR19(store, selector, a1, a2, a3) { + const getSelection = React22.useCallback(() => selector(store.getSnapshot(), a1, a2, a3), [store, selector, a1, a2, a3]); + return (0, import_shim.useSyncExternalStore)(store.subscribe, getSelection, getSelection); +} +register({ + before(instance) { + instance.syncIndex = 0; + if (!instance.didInitialize) { + instance.syncTick = 1; + instance.syncHooks = []; + instance.didChangeStore = true; + instance.getSnapshot = () => { + let didChange2 = false; + for (let i2 = 0; i2 < instance.syncHooks.length; i2 += 1) { + const hook = instance.syncHooks[i2]; + const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); + if (hook.didChange || !Object.is(hook.value, value)) { + didChange2 = true; + hook.value = value; + hook.didChange = false; + } + } + if (didChange2) { + instance.syncTick += 1; + } + return instance.syncTick; + }; + } + }, + after(instance) { + if (instance.syncHooks.length > 0) { + if (instance.didChangeStore) { + instance.didChangeStore = false; + instance.subscribe = (onStoreChange) => { + const stores = /* @__PURE__ */ new Set(); + for (const hook of instance.syncHooks) { + stores.add(hook.store); + } + const unsubscribes = []; + for (const store of stores) { + unsubscribes.push(store.subscribe(onStoreChange)); + } + return () => { + for (const unsubscribe of unsubscribes) { + unsubscribe(); + } + }; + }; + } + (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); + } + } +}); +function useStoreFast(store, selector, a1, a2, a3) { + const instance = getInstance(); + if (!instance) { + return useStoreR19(store, selector, a1, a2, a3); + } + const index2 = instance.syncIndex; + instance.syncIndex += 1; + let hook; + if (!instance.didInitialize) { + hook = { + store, + selector, + a1, + a2, + a3, + value: selector(store.getSnapshot(), a1, a2, a3), + didChange: false + }; + instance.syncHooks.push(hook); + } else { + hook = instance.syncHooks[index2]; + if (hook.store !== store || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { + if (hook.store !== store) { + instance.didChangeStore = true; + } + hook.store = store; + hook.selector = selector; + hook.a1 = a1; + hook.a2 = a2; + hook.a3 = a3; + hook.didChange = true; + } + } + return hook.value; +} +function useStoreLegacy(store, selector, a1, a2, a3) { + return (0, import_with_selector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, (state) => selector(state, a1, a2, a3)); +} + +// node_modules/@base-ui/utils/esm/store/Store.js +var Store = class { + /** + * The current state of the store. + * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. + * To subscribe to state changes, use the {@link useState} method. The value returned by {@link useState} is updated after the component renders (similarly to React's useState). + * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. + * + * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. + */ + // Internal state to handle recursive `setState()` calls + constructor(state) { + this.state = state; + this.listeners = /* @__PURE__ */ new Set(); + this.updateTick = 0; + } + /** + * Registers a listener that will be called whenever the store's state changes. + * + * @param fn The listener function to be called on state changes. + * @returns A function to unsubscribe the listener. + */ + subscribe = (fn) => { + this.listeners.add(fn); + return () => { + this.listeners.delete(fn); + }; + }; + /** + * Returns the current state of the store. + */ + getSnapshot = () => { + return this.state; + }; + /** + * Updates the entire store's state and notifies all registered listeners. + * + * @param newState The new state to set for the store. + */ + setState(newState) { + if (this.state === newState) { + return; + } + this.state = newState; + this.updateTick += 1; + const currentTick = this.updateTick; + for (const listener of this.listeners) { + if (currentTick !== this.updateTick) { + return; + } + listener(newState); + } + } + /** + * Merges the provided changes into the current state and notifies listeners if there are changes. + * + * @param changes An object containing the changes to apply to the current state. + */ + update(changes) { + for (const key in changes) { + if (!Object.is(this.state[key], changes[key])) { + this.setState({ + ...this.state, + ...changes + }); + return; + } + } + } + /** + * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. + * + * @param key The key in the store's state to update. + * @param value The new value to set for the specified key. + */ + set(key, value) { + if (!Object.is(this.state[key], value)) { + this.setState({ + ...this.state, + [key]: value + }); + } + } + /** + * Gives the state a new reference and updates all registered listeners. + */ + notifyAll() { + const newState = { + ...this.state + }; + this.setState(newState); + } + use(selector, a1, a2, a3) { + return useStore(this, selector, a1, a2, a3); + } +}; + +// node_modules/@base-ui/utils/esm/store/ReactStore.js +var React23 = __toESM(require_react(), 1); +var ReactStore = class extends Store { + /** + * Creates a new ReactStore instance. + * + * @param state Initial state of the store. + * @param context Non-reactive context values. + * @param selectors Optional selectors for use with `useState`. + */ + constructor(state, context = {}, selectors3) { + super(state); + this.context = context; + this.selectors = selectors3; + } + /** + * Non-reactive values such as refs, callbacks, etc. + */ + /** + * Synchronizes a single external value into the store. + * + * Note that the while the value in `state` is updated immediately, the value returned + * by `useState` is updated before the next render (similarly to React's `useState`). + */ + useSyncedValue(key, value) { + React23.useDebugValue(key); + const store = this; + useIsoLayoutEffect(() => { + if (store.state[key] !== value) { + store.set(key, value); + } + }, [store, key, value]); + } + /** + * Synchronizes a single external value into the store and + * cleans it up (sets to `undefined`) on unmount. + * + * Note that the while the value in `state` is updated immediately, the value returned + * by `useState` is updated before the next render (similarly to React's `useState`). + */ + useSyncedValueWithCleanup(key, value) { + const store = this; + useIsoLayoutEffect(() => { + if (store.state[key] !== value) { + store.set(key, value); + } + return () => { + store.set(key, void 0); + }; + }, [store, key, value]); + } + /** + * Synchronizes multiple external values into the store. + * + * Note that the while the values in `state` are updated immediately, the values returned + * by `useState` are updated before the next render (similarly to React's `useState`). + */ + useSyncedValues(statePart) { + const store = this; + if (true) { + React23.useDebugValue(statePart, (p3) => Object.keys(p3)); + const keys = React23.useRef(Object.keys(statePart)).current; + const nextKeys = Object.keys(statePart); + if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { + console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); + } + } + const dependencies = Object.values(statePart); + useIsoLayoutEffect(() => { + store.update(statePart); + }, [store, ...dependencies]); + } + /** + * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` + * is non-undefined, the store's state at `key` is updated to match `controlled`. + */ + useControlledProp(key, controlled) { + React23.useDebugValue(key); + const store = this; + const isControlled = controlled !== void 0; + useIsoLayoutEffect(() => { + if (isControlled && !Object.is(store.state[key], controlled)) { + store.setState({ + ...store.state, + [key]: controlled + }); + } + }, [store, key, controlled, isControlled]); + if (true) { + const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); + if (!cache.has(key)) { + cache.set(key, isControlled); + } + const previouslyControlled = cache.get(key); + if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { + console.error(`A component is changing the ${isControlled ? "" : "un"}controlled state of ${key.toString()} to be ${isControlled ? "un" : ""}controlled. Elements should not switch from uncontrolled to controlled (or vice versa).`); + } + } + } + /** Gets the current value from the store using a selector with the provided key. + * + * @param key Key of the selector to use. + */ + select(key, a1, a2, a3) { + const selector = this.selectors[key]; + return selector(this.state, a1, a2, a3); + } + /** + * Returns a value from the store's state using a selector function. + * Used to subscribe to specific parts of the state. + * This methods causes a rerender whenever the selected state changes. + * + * @param key Key of the selector to use. + */ + useState(key, a1, a2, a3) { + React23.useDebugValue(key); + return useStore(this, this.selectors[key], a1, a2, a3); + } + /** + * Wraps a function with `useStableCallback` to ensure it has a stable reference + * and assigns it to the context. + * + * @param key Key of the event callback. Must be a function in the context. + * @param fn Function to assign. + */ + useContextCallback(key, fn) { + React23.useDebugValue(key); + const stableFunction = useStableCallback(fn ?? NOOP); + this.context[key] = stableFunction; + } + /** + * Returns a stable setter function for a specific key in the store's state. + * It's commonly used to pass as a ref callback to React elements. + * + * @param key Key of the state to set. + */ + useStateSetter(key) { + const ref = React23.useRef(void 0); + if (ref.current === void 0) { + ref.current = (value) => { + this.set(key, value); + }; + } + return ref.current; + } + /** + * Observes changes derived from the store's selectors and calls the listener when the selected value changes. + * + * @param key Key of the selector to observe. + * @param listener Listener function called when the selector result changes. + */ + observe(selector, listener) { + let selectFn; + if (typeof selector === "function") { + selectFn = selector; + } else { + selectFn = this.selectors[selector]; + } + let prevValue = selectFn(this.state); + listener(prevValue, prevValue, this); + return this.subscribe((nextState) => { + const nextValue = selectFn(nextState); + if (!Object.is(prevValue, nextValue)) { + const oldValue = prevValue; + prevValue = nextValue; + listener(nextValue, oldValue, this); + } + }); + } +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingRootStore.js +var selectors = { + open: createSelector((state) => state.open), + transitionStatus: createSelector((state) => state.transitionStatus), + domReferenceElement: createSelector((state) => state.domReferenceElement), + referenceElement: createSelector((state) => state.positionReference ?? state.referenceElement), + floatingElement: createSelector((state) => state.floatingElement), + floatingId: createSelector((state) => state.floatingId) +}; +var FloatingRootStore = class extends ReactStore { + constructor(options) { + const { + syncOnly, + nested, + onOpenChange, + triggerElements, + ...initialState + } = options; + super({ + ...initialState, + positionReference: initialState.referenceElement, + domReferenceElement: initialState.referenceElement + }, { + onOpenChange, + dataRef: { + current: {} + }, + events: createEventEmitter(), + nested, + triggerElements + }, selectors); + this.syncOnly = syncOnly; + } + /** + * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. + */ + syncOpenEvent = (newOpen, event) => { + if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing + // click events to upgrade a hover-open. + event != null && isClickLikeEvent(event)) { + this.context.dataRef.current.openEvent = newOpen ? event : void 0; + } + }; + /** + * Runs the root-owned side effects for an open state change. + */ + dispatchOpenChange = (newOpen, eventDetails) => { + this.syncOpenEvent(newOpen, eventDetails.event); + const details = { + open: newOpen, + reason: eventDetails.reason, + nativeEvent: eventDetails.event, + nested: this.context.nested, + triggerElement: eventDetails.trigger + }; + this.context.events.emit("openchange", details); + }; + /** + * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. + * + * @param newOpen The new open state. + * @param eventDetails Details about the event that triggered the open state change. + */ + setOpen = (newOpen, eventDetails) => { + if (this.syncOnly) { + this.context.onOpenChange?.(newOpen, eventDetails); + return; + } + this.dispatchOpenChange(newOpen, eventDetails); + this.context.onOpenChange?.(newOpen, eventDetails); + }; +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +function useSyncedFloatingRootContext(options) { + const { + popupStore, + treatPopupAsFloatingElement = false, + floatingRootContext: floatingRootContextProp, + floatingId, + nested, + onOpenChange + } = options; + const open = popupStore.useState("open"); + const referenceElement = popupStore.useState("activeTriggerElement"); + const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement"); + const triggerElements = popupStore.context.triggerElements; + const handleOpenChange = onOpenChange; + const internalStoreRef = React24.useRef(null); + if (floatingRootContextProp === void 0 && internalStoreRef.current === null) { + internalStoreRef.current = new FloatingRootStore({ + open, + transitionStatus: void 0, + referenceElement, + floatingElement, + triggerElements, + onOpenChange: handleOpenChange, + floatingId, + syncOnly: true, + nested + }); + } + const store = floatingRootContextProp ?? internalStoreRef.current; + popupStore.useSyncedValue("floatingId", floatingId); + useIsoLayoutEffect(() => { + const valuesToSync = { + open, + floatingId, + referenceElement, + floatingElement + }; + if (isElement(referenceElement)) { + valuesToSync.domReferenceElement = referenceElement; + } + if (store.state.positionReference === store.state.referenceElement) { + valuesToSync.positionReference = referenceElement; + } + store.update(valuesToSync); + }, [open, floatingId, referenceElement, floatingElement, store]); + store.context.onOpenChange = handleOpenChange; + store.context.nested = nested; + return store; +} + +// node_modules/@base-ui/react/esm/utils/popups/popupStoreUtils.js +var FOCUSABLE_POPUP_PROPS = { + tabIndex: -1, + [FOCUSABLE_ATTRIBUTE]: "" +}; +function usePopupStore(externalStore, createStore, treatPopupAsFloatingElement = false) { + const floatingId = useId(); + const nested = useFloatingParentNodeId() != null; + const internalStoreRef = React25.useRef(null); + if (externalStore === void 0 && internalStoreRef.current === null) { + internalStoreRef.current = createStore(floatingId, nested); + } + const store = externalStore ?? internalStoreRef.current; + useSyncedFloatingRootContext({ + popupStore: store, + treatPopupAsFloatingElement, + floatingRootContext: store.state.floatingRootContext, + floatingId, + nested, + onOpenChange: store.setOpen + }); + return { + store, + internalStore: internalStoreRef.current + }; +} +function useTriggerRegistration(id, store) { + const registeredElementIdRef = React25.useRef(null); + const registeredElementRef = React25.useRef(null); + return React25.useCallback((element) => { + if (id === void 0) { + return; + } + let shouldSyncTriggerCount = false; + if (registeredElementIdRef.current !== null) { + const registeredId = registeredElementIdRef.current; + const registeredElement = registeredElementRef.current; + const currentElement = store.context.triggerElements.getById(registeredId); + if (registeredElement && currentElement === registeredElement) { + store.context.triggerElements.delete(registeredId); + shouldSyncTriggerCount = true; + } + registeredElementIdRef.current = null; + registeredElementRef.current = null; + } + if (element !== null) { + registeredElementIdRef.current = id; + registeredElementRef.current = element; + store.context.triggerElements.add(id, element); + shouldSyncTriggerCount = true; + } + if (shouldSyncTriggerCount) { + const triggerCount = store.context.triggerElements.size; + if (store.select("open") && store.state.triggerCount !== triggerCount) { + store.set("triggerCount", triggerCount); + } + } + }, [store, id]); +} +function setOpenTriggerState(state, open, trigger) { + const triggerId = trigger?.id ?? null; + if (triggerId || open) { + state.activeTriggerId = triggerId; + state.activeTriggerElement = trigger ?? null; + } +} +function useTriggerDataForwarding(triggerId, triggerElementRef, store, stateUpdates) { + const isMountedByThisTrigger = store.useState("isMountedByTrigger", triggerId); + const baseRegisterTrigger = useTriggerRegistration(triggerId, store); + const registerTrigger = useStableCallback((element) => { + baseRegisterTrigger(element); + if (!element) { + return; + } + const open = store.select("open"); + const activeTriggerId = store.select("activeTriggerId"); + if (activeTriggerId === triggerId) { + store.update({ + activeTriggerElement: element, + ...open ? stateUpdates : null + }); + return; + } + if (activeTriggerId == null && open) { + store.update({ + activeTriggerId: triggerId, + activeTriggerElement: element, + ...stateUpdates + }); + } + }); + useIsoLayoutEffect(() => { + if (isMountedByThisTrigger) { + store.update({ + activeTriggerElement: triggerElementRef.current, + ...stateUpdates + }); + } + }, [isMountedByThisTrigger, store, triggerElementRef, ...Object.values(stateUpdates)]); + return { + registerTrigger, + isMountedByThisTrigger + }; +} +function useImplicitActiveTrigger(store) { + const open = store.useState("open"); + const reactiveTriggerCount = store.useState("triggerCount"); + useIsoLayoutEffect(() => { + if (!open) { + if (store.state.triggerCount !== 0) { + store.set("triggerCount", 0); + } + return; + } + const triggerCount = store.context.triggerElements.size; + const stateUpdates = {}; + if (store.state.triggerCount !== triggerCount) { + stateUpdates.triggerCount = triggerCount; + } + if (!store.select("activeTriggerId") && triggerCount === 1) { + const iteratorResult = store.context.triggerElements.entries().next(); + if (!iteratorResult.done) { + const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value; + stateUpdates.activeTriggerId = implicitTriggerId; + stateUpdates.activeTriggerElement = implicitTriggerElement; + } + } + if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0) { + store.update(stateUpdates); + } + }, [open, store, reactiveTriggerCount]); +} +function useOpenStateTransitions(open, store, onUnmount) { + const { + mounted, + setMounted, + transitionStatus + } = useTransitionStatus(open); + store.useSyncedValues({ + mounted, + transitionStatus + }); + const forceUnmount = useStableCallback(() => { + setMounted(false); + store.update({ + activeTriggerId: null, + activeTriggerElement: null, + mounted: false, + preventUnmountingOnClose: false + }); + onUnmount?.(); + store.context.onOpenChangeComplete?.(false); + }); + const preventUnmountingOnClose = store.useState("preventUnmountingOnClose"); + useOpenChangeComplete({ + enabled: mounted && !open && !preventUnmountingOnClose, + open, + ref: store.context.popupRef, + onComplete() { + if (!open) { + forceUnmount(); + } + } + }); + return { + forceUnmount, + transitionStatus + }; +} +function usePopupInteractionProps(store, statePart) { + store.useSyncedValues(statePart); + useIsoLayoutEffect(() => () => { + store.update({ + activeTriggerProps: EMPTY_OBJECT, + inactiveTriggerProps: EMPTY_OBJECT, + popupProps: EMPTY_OBJECT + }); + }, [store]); +} + +// node_modules/@base-ui/react/esm/utils/popups/popupTriggerMap.js +var PopupTriggerMap = class { + constructor() { + this.elementsSet = /* @__PURE__ */ new Set(); + this.idMap = /* @__PURE__ */ new Map(); + } + /** + * Adds a trigger element with the given ID. + * + * Note: The provided element is assumed to not be registered under multiple IDs. + */ + add(id, element) { + const existingElement = this.idMap.get(id); + if (existingElement === element) { + return; + } + if (existingElement !== void 0) { + this.elementsSet.delete(existingElement); + } + this.elementsSet.add(element); + this.idMap.set(id, element); + if (true) { + if (this.elementsSet.size !== this.idMap.size) { + throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); + } + } + } + /** + * Removes the trigger element with the given ID. + */ + delete(id) { + const element = this.idMap.get(id); + if (element) { + this.elementsSet.delete(element); + this.idMap.delete(id); + } + } + /** + * Whether the given element is registered as a trigger. + */ + hasElement(element) { + return this.elementsSet.has(element); + } + /** + * Whether there is a registered trigger element matching the given predicate. + */ + hasMatchingElement(predicate) { + for (const element of this.elementsSet) { + if (predicate(element)) { + return true; + } + } + return false; + } + /** + * Returns the trigger element associated with the given ID, or undefined if no such element exists. + */ + getById(id) { + return this.idMap.get(id); + } + /** + * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. + */ + entries() { + return this.idMap.entries(); + } + /** + * Returns an iterable of all registered trigger elements. + */ + elements() { + return this.elementsSet.values(); + } + /** + * Returns the number of registered trigger elements. + */ + get size() { + return this.idMap.size; + } +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/utils/getEmptyRootContext.js +function getEmptyRootContext() { + return new FloatingRootStore({ + open: false, + transitionStatus: void 0, + floatingElement: null, + referenceElement: null, + triggerElements: new PopupTriggerMap(), + floatingId: void 0, + syncOnly: false, + nested: false, + onOpenChange: void 0 + }); +} + +// node_modules/@base-ui/react/esm/utils/popups/store.js +function createInitialPopupStoreState() { + return { + open: false, + openProp: void 0, + mounted: false, + transitionStatus: void 0, + floatingRootContext: getEmptyRootContext(), + floatingId: void 0, + triggerCount: 0, + preventUnmountingOnClose: false, + payload: void 0, + activeTriggerId: null, + activeTriggerElement: null, + triggerIdProp: void 0, + popupElement: null, + positionerElement: null, + activeTriggerProps: EMPTY_OBJECT, + inactiveTriggerProps: EMPTY_OBJECT, + popupProps: EMPTY_OBJECT + }; +} +function createPopupFloatingRootContext(triggerElements, floatingId, nested = false) { + return new FloatingRootStore({ + open: false, + transitionStatus: void 0, + floatingElement: null, + referenceElement: null, + triggerElements, + floatingId, + syncOnly: true, + nested, + onOpenChange: void 0 + }); +} +var activeTriggerIdSelector = createSelector((state) => state.triggerIdProp ?? state.activeTriggerId); +var openSelector = createSelector((state) => state.openProp ?? state.open); +var popupIdSelector = createSelector((state) => { + const popupId = state.popupElement?.id ?? state.floatingId; + return popupId || void 0; +}); +function triggerOwnsOpenPopup(state, triggerId) { + return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId; +} +function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) { + if (triggerOwnsOpenPopup(state, triggerId)) { + return true; + } + return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && state.triggerCount === 1; +} +var popupStoreSelectors = { + open: openSelector, + mounted: createSelector((state) => state.mounted), + transitionStatus: createSelector((state) => state.transitionStatus), + floatingRootContext: createSelector((state) => state.floatingRootContext), + triggerCount: createSelector((state) => state.triggerCount), + preventUnmountingOnClose: createSelector((state) => state.preventUnmountingOnClose), + payload: createSelector((state) => state.payload), + activeTriggerId: activeTriggerIdSelector, + activeTriggerElement: createSelector((state) => state.mounted ? state.activeTriggerElement : null), + popupId: popupIdSelector, + /** + * Whether the trigger with the given ID was used to open the popup. + */ + isTriggerActive: createSelector((state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId), + /** + * Whether the popup is open and was activated by a trigger with the given ID. + */ + isOpenedByTrigger: createSelector((state, triggerId) => triggerOwnsOpenPopup(state, triggerId)), + /** + * Whether the popup is mounted and was activated by a trigger with the given ID. + */ + isMountedByTrigger: createSelector((state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted), + triggerProps: createSelector((state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps), + /** + * Popup id for the trigger that currently owns the open popup. + */ + triggerPopupId: createSelector((state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0), + popupProps: createSelector((state) => state.popupProps), + popupElement: createSelector((state) => state.popupElement), + positionerElement: createSelector((state) => state.positionerElement) +}; + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloatingRootContext.js +function useFloatingRootContext(options) { + const { + open = false, + onOpenChange, + elements: elements2 = {} + } = options; + const floatingId = useId(); + const nested = useFloatingParentNodeId() != null; + if (true) { + const optionDomReference = elements2.reference; + if (optionDomReference && !isElement(optionDomReference)) { + console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead."); + } + } + const store = useRefWithInit(() => new FloatingRootStore({ + open, + transitionStatus: void 0, + onOpenChange, + referenceElement: elements2.reference ?? null, + floatingElement: elements2.floating ?? null, + triggerElements: new PopupTriggerMap(), + floatingId, + syncOnly: false, + nested + })).current; + useIsoLayoutEffect(() => { + const valuesToSync = { + open, + floatingId + }; + if (elements2.reference !== void 0) { + valuesToSync.referenceElement = elements2.reference; + valuesToSync.domReferenceElement = isElement(elements2.reference) ? elements2.reference : null; + } + if (elements2.floating !== void 0) { + valuesToSync.floatingElement = elements2.floating; + } + store.update(valuesToSync); + }, [open, floatingId, elements2.reference, elements2.floating, store]); + store.context.onOpenChange = onOpenChange; + store.context.nested = nested; + return store; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloating.js +function useFloating2(options = {}) { + const { + nodeId, + externalTree + } = options; + const internalStore = useFloatingRootContext(options); + const store = options.rootContext || internalStore; + const referenceElement = store.useState("referenceElement"); + const floatingElement = store.useState("floatingElement"); + const domReferenceElement = store.useState("domReferenceElement"); + const open = store.useState("open"); + const floatingId = store.useState("floatingId"); + const [positionReference, setPositionReferenceRaw] = React26.useState(null); + const [localDomReference, setLocalDomReference] = React26.useState(void 0); + const [localFloatingElement, setLocalFloatingElement] = React26.useState(void 0); + const domReferenceRef = React26.useRef(null); + const tree = useFloatingTree(externalTree); + const storeElements = React26.useMemo(() => ({ + reference: referenceElement, + floating: floatingElement, + domReference: domReferenceElement + }), [referenceElement, floatingElement, domReferenceElement]); + const position = useFloating({ + ...options, + elements: { + ...storeElements, + ...positionReference && { + reference: positionReference + } + } + }); + const localDomReferenceElement = isElement(localDomReference) ? localDomReference : null; + const syncedFloatingElement = localFloatingElement === void 0 ? store.state.floatingElement : localFloatingElement; + store.useSyncedValue("referenceElement", localDomReference ?? null); + store.useSyncedValue("domReferenceElement", localDomReference === void 0 ? domReferenceElement : localDomReferenceElement); + store.useSyncedValue("floatingElement", syncedFloatingElement); + const setPositionReference = React26.useCallback((node) => { + const computedPositionReference = isElement(node) ? { + getBoundingClientRect: () => node.getBoundingClientRect(), + getClientRects: () => node.getClientRects(), + contextElement: node + } : node; + setPositionReferenceRaw(computedPositionReference); + position.refs.setReference(computedPositionReference); + }, [position.refs]); + const setReference = React26.useCallback((node) => { + if (isElement(node) || node === null) { + domReferenceRef.current = node; + setLocalDomReference(node); + } + if (isElement(position.refs.reference.current) || position.refs.reference.current === null || // Don't allow setting virtual elements using the old technique back to + // `null` to support `positionReference` + an unstable `reference` + // callback ref. + node !== null && !isElement(node)) { + position.refs.setReference(node); + } + }, [position.refs, setLocalDomReference]); + const setFloating = React26.useCallback((node) => { + setLocalFloatingElement(node); + position.refs.setFloating(node); + }, [position.refs]); + const refs = React26.useMemo(() => ({ + ...position.refs, + setReference, + setFloating, + setPositionReference, + domReference: domReferenceRef + }), [position.refs, setReference, setFloating, setPositionReference]); + const elements2 = React26.useMemo(() => ({ + ...position.elements, + domReference: domReferenceElement + }), [position.elements, domReferenceElement]); + const context = React26.useMemo(() => ({ + ...position, + dataRef: store.context.dataRef, + open, + onOpenChange: store.setOpen, + events: store.context.events, + floatingId, + refs, + elements: elements2, + nodeId, + rootStore: store + }), [position, refs, elements2, nodeId, store, open, floatingId]); + useIsoLayoutEffect(() => { + if (domReferenceElement) { + domReferenceRef.current = domReferenceElement; + } + }, [domReferenceElement]); + useIsoLayoutEffect(() => { + store.context.dataRef.current.floatingContext = context; + const node = tree?.nodesRef.current.find((n2) => n2.id === nodeId); + if (node) { + node.context = context; + } + }); + return React26.useMemo(() => ({ + ...position, + context, + refs, + elements: elements2, + rootStore: store + }), [position, refs, elements2, context, store]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFocus.js +var React27 = __toESM(require_react(), 1); +var isMacSafari = isMac && isSafari; +function useFocus(context, props = {}) { + const { + enabled = true, + delay + } = props; + const store = "rootStore" in context ? context.rootStore : context; + const { + events, + dataRef + } = store.context; + const blockFocusRef = React27.useRef(false); + const blockedReferenceRef = React27.useRef(null); + const keyboardModalityRef = React27.useRef(true); + const timeout = useTimeout(); + React27.useEffect(() => { + const domReference = store.select("domReferenceElement"); + if (!enabled) { + return void 0; + } + const win = getWindow(domReference); + function onBlur() { + const currentDomReference = store.select("domReferenceElement"); + if (!store.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) { + blockFocusRef.current = true; + } + } + function onKeyDown() { + keyboardModalityRef.current = true; + } + function onPointerDown() { + keyboardModalityRef.current = false; + } + return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true)); + }, [store, enabled]); + React27.useEffect(() => { + if (!enabled) { + return void 0; + } + function onOpenChangeLocal(details) { + if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) { + const referenceElement = store.select("domReferenceElement"); + if (isElement(referenceElement)) { + blockedReferenceRef.current = referenceElement; + blockFocusRef.current = true; + } + } + } + events.on("openchange", onOpenChangeLocal); + return () => { + events.off("openchange", onOpenChangeLocal); + }; + }, [events, enabled, store]); + const reference = React27.useMemo(() => { + function resetBlockedFocus() { + blockFocusRef.current = false; + blockedReferenceRef.current = null; + } + return { + onMouseLeave() { + resetBlockedFocus(); + }, + onFocus(event) { + const focusTarget = event.currentTarget; + if (blockFocusRef.current) { + if (blockedReferenceRef.current === focusTarget) { + return; + } + resetBlockedFocus(); + } + const target = getTarget(event.nativeEvent); + if (isElement(target)) { + if (isMacSafari && !event.relatedTarget) { + if (!keyboardModalityRef.current && !isTypeableElement(target)) { + return; + } + } else if (!matchesFocusVisible(target)) { + return; + } + } + const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements); + const { + nativeEvent, + currentTarget + } = event; + const delayValue = typeof delay === "function" ? delay() : delay; + if (store.select("open") && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === void 0) { + store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); + return; + } + timeout.start(delayValue, () => { + if (blockFocusRef.current) { + return; + } + store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); + }); + }, + onBlur(event) { + resetBlockedFocus(); + const relatedTarget = event.relatedTarget; + const nativeEvent = event.nativeEvent; + const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside"; + timeout.start(0, () => { + const domReference = store.select("domReferenceElement"); + const activeEl = activeElement(ownerDocument(domReference)); + if (!relatedTarget && activeEl === domReference) { + return; + } + if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) { + return; + } + const nextFocusedElement = relatedTarget ?? activeEl; + if (isTargetInsideEnabledTrigger(nextFocusedElement, store.context.triggerElements)) { + return; + } + store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent)); + }); + } + }; + }, [dataRef, delay, store, timeout]); + return React27.useMemo(() => enabled ? { + reference, + trigger: reference + } : {}, [enabled, reference]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +var React28 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverInteractionSharedState.js +var HoverInteraction = class _HoverInteraction { + constructor() { + this.pointerType = void 0; + this.interactedInside = false; + this.handler = void 0; + this.blockMouseMove = true; + this.performedPointerEventsMutation = false; + this.pointerEventsScopeElement = null; + this.pointerEventsReferenceElement = null; + this.pointerEventsFloatingElement = null; + this.restTimeoutPending = false; + this.openChangeTimeout = new Timeout(); + this.restTimeout = new Timeout(); + this.handleCloseOptions = void 0; + } + static create() { + return new _HoverInteraction(); + } + dispose = () => { + this.openChangeTimeout.clear(); + this.restTimeout.clear(); + }; + disposeEffect = () => { + return this.dispose; + }; +}; +var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap(); +function clearSafePolygonPointerEventsMutation(instance) { + if (!instance.performedPointerEventsMutation) { + return; + } + const scopeElement = instance.pointerEventsScopeElement; + if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) { + instance.pointerEventsScopeElement?.style.removeProperty("pointer-events"); + instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events"); + instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events"); + pointerEventsMutationOwnerByScopeElement.delete(scopeElement); + } + instance.performedPointerEventsMutation = false; + instance.pointerEventsScopeElement = null; + instance.pointerEventsReferenceElement = null; + instance.pointerEventsFloatingElement = null; +} +function applySafePolygonPointerEventsMutation(instance, options) { + const { + scopeElement, + referenceElement, + floatingElement + } = options; + const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement); + if (existingOwner && existingOwner !== instance) { + clearSafePolygonPointerEventsMutation(existingOwner); + } + clearSafePolygonPointerEventsMutation(instance); + instance.performedPointerEventsMutation = true; + instance.pointerEventsScopeElement = scopeElement; + instance.pointerEventsReferenceElement = referenceElement; + instance.pointerEventsFloatingElement = floatingElement; + pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance); + scopeElement.style.pointerEvents = "none"; + referenceElement.style.pointerEvents = "auto"; + floatingElement.style.pointerEvents = "auto"; +} +function useHoverInteractionSharedState(store) { + const data = store.context.dataRef.current; + const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current; + if (!data.hoverInteractionState) { + data.hoverInteractionState = instance; + } + useOnMount(data.hoverInteractionState.disposeEffect); + return data.hoverInteractionState; +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +function useHoverFloatingInteraction(context, parameters = {}) { + const { + enabled = true, + closeDelay: closeDelayProp = 0, + nodeId: nodeIdProp + } = parameters; + const store = "rootStore" in context ? context.rootStore : context; + const open = store.useState("open"); + const floatingElement = store.useState("floatingElement"); + const domReferenceElement = store.useState("domReferenceElement"); + const { + dataRef + } = store.context; + const tree = useFloatingTree(); + const parentId = useFloatingParentNodeId(); + const instance = useHoverInteractionSharedState(store); + const childClosedTimeout = useTimeout(); + const isClickLikeOpenEvent2 = useStableCallback(() => { + return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); + }); + const isHoverOpen = useStableCallback(() => { + return isHoverOpenEvent(dataRef.current.openEvent?.type); + }); + const clearPointerEvents = useStableCallback(() => { + clearSafePolygonPointerEventsMutation(instance); + }); + useIsoLayoutEffect(() => { + if (!open) { + instance.pointerType = void 0; + instance.restTimeoutPending = false; + instance.interactedInside = false; + clearPointerEvents(); + } + }, [open, instance, clearPointerEvents]); + React28.useEffect(() => { + return clearPointerEvents; + }, [clearPointerEvents]); + useIsoLayoutEffect(() => { + if (!enabled) { + return void 0; + } + if (open && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) { + const ref = domReferenceElement; + const floatingEl = floatingElement; + const doc = ownerDocument(floatingElement); + const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating; + if (parentFloating) { + parentFloating.style.pointerEvents = ""; + } + const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null; + const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null; + const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? ref.closest("[data-rootownerid]") ?? doc.body; + applySafePolygonPointerEventsMutation(instance, { + scopeElement, + referenceElement: ref, + floatingElement: floatingEl + }); + return () => { + clearPointerEvents(); + }; + } + return void 0; + }, [enabled, open, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]); + React28.useEffect(() => { + if (!enabled) { + return void 0; + } + function hasParentChildren() { + return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0); + } + function closeWithDelay(event) { + const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType); + const close = () => { + store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + }; + if (closeDelay) { + instance.openChangeTimeout.start(closeDelay, close); + } else { + instance.openChangeTimeout.clear(); + close(); + } + } + function handleInteractInside(event) { + const target = getTarget(event); + if (!isInteractiveElement(target)) { + instance.interactedInside = false; + return; + } + instance.interactedInside = target?.closest("[aria-haspopup]") != null; + } + function onFloatingMouseEnter() { + instance.openChangeTimeout.clear(); + childClosedTimeout.clear(); + tree?.events.off("floating.closed", onNodeClosed); + clearPointerEvents(); + } + function onFloatingMouseLeave(event) { + if (hasParentChildren() && tree) { + tree.events.on("floating.closed", onNodeClosed); + return; + } + if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) { + return; + } + const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp; + const relatedTarget = event.relatedTarget; + const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget)); + if (isMovingIntoDescendantFloating) { + return; + } + if (instance.handler) { + instance.handler(event); + return; + } + clearPointerEvents(); + if (!isClickLikeOpenEvent2()) { + closeWithDelay(event); + } + } + function onNodeClosed(event) { + if (!tree || !parentId || hasParentChildren()) { + return; + } + childClosedTimeout.start(0, () => { + tree.events.off("floating.closed", onNodeClosed); + store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree.events.emit("floating.closed", event); + }); + } + const floating = floatingElement; + return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => { + tree?.events.off("floating.closed", onNodeClosed); + }); + }, [enabled, floatingElement, store, dataRef, closeDelayProp, nodeIdProp, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +var React29 = __toESM(require_react(), 1); +var ReactDOM4 = __toESM(require_react_dom(), 1); +var EMPTY_REF = { + current: null +}; +function useHoverReferenceInteraction(context, props = {}) { + const { + enabled = true, + delay = 0, + handleClose = null, + mouseOnly = false, + restMs = 0, + move = true, + triggerElementRef = EMPTY_REF, + externalTree, + isActiveTrigger = true, + getHandleCloseContext, + isClosing, + shouldOpen: shouldOpenProp + } = props; + const store = "rootStore" in context ? context.rootStore : context; + const { + dataRef, + events + } = store.context; + const tree = useFloatingTree(externalTree); + const instance = useHoverInteractionSharedState(store); + const isHoverCloseActiveRef = React29.useRef(false); + const handleCloseRef = useValueAsRef(handleClose); + const delayRef = useValueAsRef(delay); + const restMsRef = useValueAsRef(restMs); + const enabledRef = useValueAsRef(enabled); + const shouldOpenRef = useValueAsRef(shouldOpenProp); + const isClosingRef = useValueAsRef(isClosing); + const isClickLikeOpenEvent2 = useStableCallback(() => { + return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); + }); + const checkShouldOpen = useStableCallback(() => { + return shouldOpenRef.current?.() !== false; + }); + const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => { + const allTriggers = store.context.triggerElements; + if (allTriggers.hasElement(currentTarget)) { + return !currentDomReference || !contains(currentDomReference, currentTarget); + } + if (!isElement(target)) { + return false; + } + const targetElement = target; + return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement)); + }); + const cleanupMouseMoveHandler = useStableCallback(() => { + if (!instance.handler) { + return; + } + const doc = ownerDocument(store.select("domReferenceElement")); + doc.removeEventListener("mousemove", instance.handler); + instance.handler = void 0; + }); + const clearPointerEvents = useStableCallback(() => { + clearSafePolygonPointerEventsMutation(instance); + }); + if (isActiveTrigger) { + instance.handleCloseOptions = handleCloseRef.current?.__options; + } + React29.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]); + React29.useEffect(() => { + if (!enabled) { + return void 0; + } + function onOpenChangeLocal(details) { + if (!details.open) { + isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover; + cleanupMouseMoveHandler(); + instance.openChangeTimeout.clear(); + instance.restTimeout.clear(); + instance.blockMouseMove = true; + instance.restTimeoutPending = false; + } else { + isHoverCloseActiveRef.current = false; + } + } + events.on("openchange", onOpenChangeLocal); + return () => { + events.off("openchange", onOpenChangeLocal); + }; + }, [enabled, events, instance, cleanupMouseMoveHandler]); + React29.useEffect(() => { + if (!enabled) { + return void 0; + } + function closeWithDelay(event, runElseBranch = true) { + const closeDelay = getDelay(delayRef.current, "close", instance.pointerType); + if (closeDelay) { + instance.openChangeTimeout.start(closeDelay, () => { + store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + }); + } else if (runElseBranch) { + instance.openChangeTimeout.clear(); + store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + tree?.events.emit("floating.closed", event); + } + } + const trigger = triggerElementRef.current ?? (isActiveTrigger ? store.select("domReferenceElement") : null); + if (!isElement(trigger)) { + return void 0; + } + function onMouseEnter(event) { + instance.openChangeTimeout.clear(); + instance.blockMouseMove = false; + if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { + return; + } + const restMsValue = getRestMs(restMsRef.current); + const openDelay = getDelay(delayRef.current, "open", instance.pointerType); + const eventTarget = getTarget(event); + const currentTarget = event.currentTarget ?? null; + const currentDomReference = store.select("domReferenceElement"); + let triggerNode = currentTarget; + if (isElement(eventTarget) && !store.context.triggerElements.hasElement(eventTarget)) { + for (const triggerElement of store.context.triggerElements.elements()) { + if (contains(triggerElement, eventTarget)) { + triggerNode = triggerElement; + break; + } + } + } + if (isElement(currentTarget) && isElement(currentDomReference) && !store.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) { + triggerNode = currentDomReference; + } + const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget); + const isOpen = store.select("open"); + const isInClosingTransition = isClosingRef.current?.() ?? store.select("transitionStatus") === "ending"; + const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current; + const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition; + const isRestOnlyDelay = restMsValue > 0 && !openDelay; + const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition; + const shouldOpen = !isOpen || isOverInactive; + if (shouldOpenImmediately) { + if (checkShouldOpen()) { + store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + } + return; + } + if (isRestOnlyDelay) { + return; + } + if (openDelay) { + instance.openChangeTimeout.start(openDelay, () => { + if (shouldOpen && checkShouldOpen()) { + store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + } + }); + } else if (shouldOpen) { + if (checkShouldOpen()) { + store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); + } + } + } + function onMouseLeave(event) { + if (isClickLikeOpenEvent2()) { + clearPointerEvents(); + return; + } + cleanupMouseMoveHandler(); + const domReferenceElement = store.select("domReferenceElement"); + const doc = ownerDocument(domReferenceElement); + instance.restTimeout.clear(); + instance.restTimeoutPending = false; + const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.(); + if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) { + return; + } + if (handleCloseRef.current && handleCloseContextBase) { + if (!store.select("open")) { + instance.openChangeTimeout.clear(); + } + const currentTrigger = triggerElementRef.current; + instance.handler = handleCloseRef.current({ + ...handleCloseContextBase, + tree, + x: event.clientX, + y: event.clientY, + onClose() { + clearPointerEvents(); + cleanupMouseMoveHandler(); + if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store.select("domReferenceElement")) { + closeWithDelay(event, true); + } + } + }); + doc.addEventListener("mousemove", instance.handler); + instance.handler(event); + return; + } + const shouldClose = instance.pointerType === "touch" ? !contains(store.select("floatingElement"), event.relatedTarget) : true; + if (shouldClose) { + closeWithDelay(event); + } + } + if (move) { + return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, { + once: true + }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave)); + } + return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave)); + }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen]); + return React29.useMemo(() => { + if (!enabled) { + return void 0; + } + function setPointerRef(event) { + instance.pointerType = event.pointerType; + } + return { + onPointerDown: setPointerRef, + onPointerEnter: setPointerRef, + onMouseMove(event) { + const { + nativeEvent + } = event; + const trigger = event.currentTarget; + const currentDomReference = store.select("domReferenceElement"); + const currentOpen = store.select("open"); + const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target); + if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { + return; + } + if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) { + const floatingElement = store.select("floatingElement"); + if (floatingElement) { + const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body; + applySafePolygonPointerEventsMutation(instance, { + scopeElement, + referenceElement: trigger, + floatingElement + }); + } + } + const restMsValue = getRestMs(restMsRef.current); + if (currentOpen && !isOverInactive || restMsValue === 0) { + return; + } + if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) { + return; + } + instance.restTimeout.clear(); + function handleMouseMove() { + instance.restTimeoutPending = false; + if (isClickLikeOpenEvent2()) { + return; + } + const latestOpen = store.select("open"); + if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) { + store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger)); + } + } + if (instance.pointerType === "touch") { + ReactDOM4.flushSync(() => { + handleMouseMove(); + }); + } else if (isOverInactive && currentOpen) { + handleMouseMove(); + } else { + instance.restTimeoutPending = true; + instance.restTimeout.start(restMsValue, handleMouseMove); + } + } + }; + }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store, restMsRef, checkShouldOpen]); +} + +// node_modules/@base-ui/react/esm/floating-ui-react/safePolygon.js +var CURSOR_SPEED_THRESHOLD = 0.1; +var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD; +var POLYGON_BUFFER = 0.5; +function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) { + return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi; +} +function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) { + let isInsideValue = false; + if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) { + isInsideValue = !isInsideValue; + } + if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) { + isInsideValue = !isInsideValue; + } + if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) { + isInsideValue = !isInsideValue; + } + if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) { + isInsideValue = !isInsideValue; + } + return isInsideValue; +} +function isInsideRect(pointX, pointY, rect) { + return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height; +} +function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) { + const minX = Math.min(x1, x2); + const maxX = Math.max(x1, x2); + const minY = Math.min(y1, y2); + const maxY = Math.max(y1, y2); + return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY; +} +function safePolygon(options = {}) { + const { + blockPointerEvents = false + } = options; + const timeout = new Timeout(); + const fn = ({ + x: x2, + y: y2, + placement, + elements: elements2, + onClose, + nodeId, + tree + }) => { + const side = placement?.split("-")[0]; + let hasLanded = false; + let lastX = null; + let lastY = null; + let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0; + function isCursorMovingSlowly(nextX, nextY) { + const currentTime = performance.now(); + const elapsedTime = currentTime - lastCursorTime; + if (lastX === null || lastY === null || elapsedTime === 0) { + lastX = nextX; + lastY = nextY; + lastCursorTime = currentTime; + return false; + } + const deltaX = nextX - lastX; + const deltaY = nextY - lastY; + const distanceSquared = deltaX * deltaX + deltaY * deltaY; + const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED; + lastX = nextX; + lastY = nextY; + lastCursorTime = currentTime; + return distanceSquared < thresholdSquared; + } + function close() { + timeout.clear(); + onClose(); + } + return function onMouseMove(event) { + timeout.clear(); + const domReference = elements2.domReference; + const floating = elements2.floating; + if (!domReference || !floating || side == null || x2 == null || y2 == null) { + return void 0; + } + const { + clientX, + clientY + } = event; + const target = getTarget(event); + const isLeave = event.type === "mouseleave"; + const isOverFloatingEl = contains(floating, target); + const isOverReferenceEl = contains(domReference, target); + if (isOverFloatingEl) { + hasLanded = true; + if (!isLeave) { + return void 0; + } + } + if (isOverReferenceEl) { + hasLanded = false; + if (!isLeave) { + hasLanded = true; + return void 0; + } + } + if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) { + return void 0; + } + function hasOpenChildNode() { + return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0); + } + function closeIfNoOpenChild() { + if (!hasOpenChildNode()) { + close(); + } + } + if (hasOpenChildNode()) { + return void 0; + } + const refRect = domReference.getBoundingClientRect(); + const rect = floating.getBoundingClientRect(); + const cursorLeaveFromRight = x2 > rect.right - rect.width / 2; + const cursorLeaveFromBottom = y2 > rect.bottom - rect.height / 2; + const isFloatingWider = rect.width > refRect.width; + const isFloatingTaller = rect.height > refRect.height; + const left = (isFloatingWider ? refRect : rect).left; + const right = (isFloatingWider ? refRect : rect).right; + const top = (isFloatingTaller ? refRect : rect).top; + const bottom = (isFloatingTaller ? refRect : rect).bottom; + if (side === "top" && y2 >= refRect.bottom - 1 || side === "bottom" && y2 <= refRect.top + 1 || side === "left" && x2 >= refRect.right - 1 || side === "right" && x2 <= refRect.left + 1) { + closeIfNoOpenChild(); + return void 0; + } + let isInsideTroughRect = false; + switch (side) { + case "top": + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1); + break; + case "bottom": + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1); + break; + case "left": + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top); + break; + case "right": + isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top); + break; + default: + } + if (isInsideTroughRect) { + return void 0; + } + if (hasLanded && !isInsideRect(clientX, clientY, refRect)) { + closeIfNoOpenChild(); + return void 0; + } + if (!isLeave && isCursorMovingSlowly(clientX, clientY)) { + closeIfNoOpenChild(); + return void 0; + } + let isInsidePolygon = false; + switch (side) { + case "top": { + const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; + const cursorPointOneX = isFloatingWider ? x2 + cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset; + const cursorPointTwoX = isFloatingWider ? x2 - cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset; + const cursorPointY = y2 + POLYGON_BUFFER + 1; + const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top; + const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER; + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); + break; + } + case "bottom": { + const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; + const cursorPointOneX = isFloatingWider ? x2 + cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset; + const cursorPointTwoX = isFloatingWider ? x2 - cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset; + const cursorPointY = y2 - POLYGON_BUFFER; + const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom; + const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER; + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); + break; + } + case "left": { + const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; + const cursorPointOneY = isFloatingTaller ? y2 + cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset; + const cursorPointTwoY = isFloatingTaller ? y2 - cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset; + const cursorPointX = x2 + POLYGON_BUFFER + 1; + const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left; + const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER; + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY); + break; + } + case "right": { + const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; + const cursorPointOneY = isFloatingTaller ? y2 + cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset; + const cursorPointTwoY = isFloatingTaller ? y2 - cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset; + const cursorPointX = x2 - POLYGON_BUFFER; + const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right; + const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER; + isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom); + break; + } + default: + } + if (!isInsidePolygon) { + closeIfNoOpenChild(); + } else if (!hasLanded) { + timeout.start(40, closeIfNoOpenChild); + } + return void 0; + }; + }; + fn.__options = { + ...options, + blockPointerEvents + }; + return fn; +} + +// node_modules/@base-ui/react/esm/utils/popupStateMapping.js +var CommonPopupDataAttributes = (function(CommonPopupDataAttributes2) { + CommonPopupDataAttributes2["open"] = "data-open"; + CommonPopupDataAttributes2["closed"] = "data-closed"; + CommonPopupDataAttributes2[CommonPopupDataAttributes2["startingStyle"] = TransitionStatusDataAttributes.startingStyle] = "startingStyle"; + CommonPopupDataAttributes2[CommonPopupDataAttributes2["endingStyle"] = TransitionStatusDataAttributes.endingStyle] = "endingStyle"; + CommonPopupDataAttributes2["anchorHidden"] = "data-anchor-hidden"; + CommonPopupDataAttributes2["side"] = "data-side"; + CommonPopupDataAttributes2["align"] = "data-align"; + return CommonPopupDataAttributes2; +})({}); +var CommonTriggerDataAttributes = /* @__PURE__ */ (function(CommonTriggerDataAttributes2) { + CommonTriggerDataAttributes2["popupOpen"] = "data-popup-open"; + CommonTriggerDataAttributes2["pressed"] = "data-pressed"; + return CommonTriggerDataAttributes2; +})({}); +var TRIGGER_HOOK = { + [CommonTriggerDataAttributes.popupOpen]: "" +}; +var PRESSABLE_TRIGGER_HOOK = { + [CommonTriggerDataAttributes.popupOpen]: "", + [CommonTriggerDataAttributes.pressed]: "" +}; +var POPUP_OPEN_HOOK = { + [CommonPopupDataAttributes.open]: "" +}; +var POPUP_CLOSED_HOOK = { + [CommonPopupDataAttributes.closed]: "" +}; +var ANCHOR_HIDDEN_HOOK = { + [CommonPopupDataAttributes.anchorHidden]: "" +}; +var triggerOpenStateMapping = { + open(value) { + if (value) { + return TRIGGER_HOOK; + } + return null; + } +}; +var popupStateMapping = { + open(value) { + if (value) { + return POPUP_OPEN_HOOK; + } + return POPUP_CLOSED_HOOK; + }, + anchorHidden(value) { + if (value) { + return ANCHOR_HIDDEN_HOOK; + } + return null; + } +}; + +// node_modules/@base-ui/utils/esm/inertValue.js +function inertValue(value) { + if (isReactVersionAtLeast(19)) { + return value; + } + return value ? "true" : void 0; +} + +// node_modules/@base-ui/react/esm/utils/useAnchorPositioning.js +var React30 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/floating-ui-react/middleware/arrow.js +var baseArrow = (options) => ({ + name: "arrow", + options, + async fn(state) { + const { + x: x2, + y: y2, + placement, + rects, + platform: platform3, + elements: elements2, + middlewareData + } = state; + const { + element, + padding = 0, + offsetParent = "real" + } = evaluate(options, state) || {}; + if (element == null) { + return {}; + } + const paddingObject = getPaddingObject(padding); + const coords = { + x: x2, + y: y2 + }; + const axis = getAlignmentAxis(placement); + const length = getAxisLength(axis); + const arrowDimensions = await platform3.getDimensions(element); + const isYAxis = axis === "y"; + const minProp = isYAxis ? "top" : "left"; + const maxProp = isYAxis ? "bottom" : "right"; + const clientProp = isYAxis ? "clientHeight" : "clientWidth"; + const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; + const startDiff = coords[axis] - rects.reference[axis]; + const arrowOffsetParent = offsetParent === "real" ? await platform3.getOffsetParent?.(element) : elements2.floating; + let clientSize = elements2.floating[clientProp] || rects.floating[length]; + if (!clientSize || !await platform3.isElement?.(arrowOffsetParent)) { + clientSize = elements2.floating[clientProp] || rects.floating[length]; + } + const centerToReference = endDiff / 2 - startDiff / 2; + const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; + const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); + const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); + const min2 = minPadding; + const max2 = clientSize - arrowDimensions[length] - maxPadding; + const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; + const offset4 = clamp(min2, center, max2); + const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; + const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; + return { + [axis]: coords[axis] + alignmentOffset, + data: { + [axis]: offset4, + centerOffset: center - offset4 - alignmentOffset, + ...shouldAddOffset && { + alignmentOffset + } + }, + reset: shouldAddOffset + }; + } +}); +var arrow4 = (options, deps) => ({ + ...baseArrow(options), + options: [options, deps] +}); + +// node_modules/@base-ui/react/esm/utils/hideMiddleware.js +var hide4 = { + name: "hide", + async fn(state) { + const { + width, + height, + x: x2, + y: y2 + } = state.rects.reference; + const anchorHidden = width === 0 && height === 0 && x2 === 0 && y2 === 0; + const nativeHideResult = await hide3().fn(state); + return { + data: { + referenceHidden: nativeHideResult.data?.referenceHidden || anchorHidden + } + }; + } +}; + +// node_modules/@base-ui/react/esm/utils/adaptiveOriginMiddleware.js +var DEFAULT_SIDES = { + sideX: "left", + sideY: "top" +}; +var adaptiveOrigin = { + name: "adaptiveOrigin", + async fn(state) { + const { + x: rawX, + y: rawY, + rects: { + floating: floatRect + }, + elements: { + floating + }, + platform: platform3, + strategy, + placement + } = state; + const win = getWindow(floating); + const styles = win.getComputedStyle(floating); + const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== ""; + if (!hasTransition) { + return { + x: rawX, + y: rawY, + data: DEFAULT_SIDES + }; + } + const offsetParent = await platform3.getOffsetParent?.(floating); + let offsetDimensions = { + width: 0, + height: 0 + }; + if (strategy === "fixed" && win?.visualViewport) { + offsetDimensions = { + width: win.visualViewport.width, + height: win.visualViewport.height + }; + } else if (offsetParent === win) { + const doc = ownerDocument(floating); + offsetDimensions = { + width: doc.documentElement.clientWidth, + height: doc.documentElement.clientHeight + }; + } else if (await platform3.isElement?.(offsetParent)) { + offsetDimensions = await platform3.getDimensions(offsetParent); + } + const currentSide = getSide(placement); + let x2 = rawX; + let y2 = rawY; + if (currentSide === "left") { + x2 = offsetDimensions.width - (rawX + floatRect.width); + } + if (currentSide === "top") { + y2 = offsetDimensions.height - (rawY + floatRect.height); + } + const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX; + const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY; + return { + x: x2, + y: y2, + data: { + sideX, + sideY + } + }; + } +}; + +// node_modules/@base-ui/react/esm/utils/useAnchorPositioning.js +function getLogicalSide(sideParam, renderedSide, isRtl) { + const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; + const logicalRight = isRtl ? "inline-start" : "inline-end"; + const logicalLeft = isRtl ? "inline-end" : "inline-start"; + return { + top: "top", + right: isLogicalSideParam ? logicalRight : "right", + bottom: "bottom", + left: isLogicalSideParam ? logicalLeft : "left" + }[renderedSide]; +} +function getOffsetData(state, sideParam, isRtl) { + const { + rects, + placement + } = state; + const data = { + side: getLogicalSide(sideParam, getSide(placement), isRtl), + align: getAlignment(placement) || "center", + anchor: { + width: rects.reference.width, + height: rects.reference.height + }, + positioner: { + width: rects.floating.width, + height: rects.floating.height + } + }; + return data; +} +function useAnchorPositioning(params) { + const { + // Public parameters + anchor, + positionMethod = "absolute", + side: sideParam = "bottom", + sideOffset = 0, + align = "center", + alignOffset = 0, + collisionBoundary, + collisionPadding: collisionPaddingParam = 5, + sticky = false, + arrowPadding = 5, + disableAnchorTracking = false, + inline: inlineMiddleware, + // Private parameters + keepMounted = false, + floatingRootContext, + mounted, + collisionAvoidance, + shiftCrossAxis = false, + nodeId, + adaptiveOrigin: adaptiveOrigin2, + lazyFlip = false, + externalTree + } = params; + const [mountSide, setMountSide] = React30.useState(null); + if (!mounted && mountSide !== null) { + setMountSide(null); + } + const collisionAvoidanceSide = collisionAvoidance.side || "flip"; + const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; + const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; + const anchorFn = typeof anchor === "function" ? anchor : void 0; + const anchorFnCallback = useStableCallback(anchorFn); + const anchorDep = anchorFn ? anchorFnCallback : anchor; + const anchorValueRef = useValueAsRef(anchor); + const mountedRef = useValueAsRef(mounted); + const direction = useDirection(); + const isRtl = direction === "rtl"; + const side = mountSide || { + top: "top", + right: "right", + bottom: "bottom", + left: "left", + "inline-end": isRtl ? "left" : "right", + "inline-start": isRtl ? "right" : "left" + }[sideParam]; + const placement = align === "center" ? side : `${side}-${align}`; + let collisionPadding = collisionPaddingParam; + const bias = 1; + const biasTop = sideParam === "bottom" ? bias : 0; + const biasBottom = sideParam === "top" ? bias : 0; + const biasLeft = sideParam === "right" ? bias : 0; + const biasRight = sideParam === "left" ? bias : 0; + if (typeof collisionPadding === "number") { + collisionPadding = { + top: collisionPadding + biasTop, + right: collisionPadding + biasRight, + bottom: collisionPadding + biasBottom, + left: collisionPadding + biasLeft + }; + } else if (collisionPadding) { + collisionPadding = { + top: (collisionPadding.top || 0) + biasTop, + right: (collisionPadding.right || 0) + biasRight, + bottom: (collisionPadding.bottom || 0) + biasBottom, + left: (collisionPadding.left || 0) + biasLeft + }; + } + const commonCollisionProps = { + boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, + padding: collisionPadding + }; + const arrowRef = React30.useRef(null); + const sideOffsetRef = useValueAsRef(sideOffset); + const alignOffsetRef = useValueAsRef(alignOffset); + const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; + const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; + const middleware = []; + if (inlineMiddleware) { + middleware.push(inlineMiddleware); + } + middleware.push(offset3((state) => { + const data = getOffsetData(state, sideParam, isRtl); + const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; + const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; + return { + mainAxis: sideAxis, + crossAxis: alignAxis, + alignmentAxis: alignAxis + }; + }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); + const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; + const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); + const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ + ...commonCollisionProps, + // Ensure the popup flips if it's been limited by its --available-height and it resizes. + // Since the size() padding is smaller than the flip() padding, flip() will take precedence. + padding: { + top: collisionPadding.top + bias, + right: collisionPadding.right + bias, + bottom: collisionPadding.bottom + bias, + left: collisionPadding.left + bias + }, + mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", + crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, + fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide + }); + const shiftMiddleware = shiftDisabled ? null : shift3((data) => { + const html = ownerDocument(data.elements.floating).documentElement; + return { + ...commonCollisionProps, + // Use the Layout Viewport to avoid shifting around when pinch-zooming + // for context menus. + rootBoundary: shiftCrossAxis ? { + x: 0, + y: 0, + width: html.clientWidth, + height: html.clientHeight + } : void 0, + mainAxis: collisionAvoidanceAlign !== "none", + crossAxis: crossAxisShiftEnabled, + limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { + if (!arrowRef.current) { + return {}; + } + const { + width, + height + } = arrowRef.current.getBoundingClientRect(); + const sideAxis = getSideAxis(getSide(limitData.placement)); + const arrowSize = sideAxis === "y" ? width : height; + const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; + return { + offset: arrowSize / 2 + offsetAmount / 2 + }; + }) + }; + }, [commonCollisionProps, sticky, shiftCrossAxis, collisionPadding, collisionAvoidanceAlign]); + if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || align === "center") { + middleware.push(shiftMiddleware, flipMiddleware); + } else { + middleware.push(flipMiddleware, shiftMiddleware); + } + middleware.push(size3({ + ...commonCollisionProps, + apply({ + elements: { + floating + }, + availableWidth, + availableHeight, + rects + }) { + if (!mountedRef.current) { + return; + } + const floatingStyle = floating.style; + floatingStyle.setProperty("--available-width", `${availableWidth}px`); + floatingStyle.setProperty("--available-height", `${availableHeight}px`); + const dpr = getWindow(floating).devicePixelRatio || 1; + const { + x: x3, + y: y3, + width, + height + } = rects.reference; + const anchorWidth = (Math.round((x3 + width) * dpr) - Math.round(x3 * dpr)) / dpr; + const anchorHeight = (Math.round((y3 + height) * dpr) - Math.round(y3 * dpr)) / dpr; + floatingStyle.setProperty("--anchor-width", `${anchorWidth}px`); + floatingStyle.setProperty("--anchor-height", `${anchorHeight}px`); + } + }), arrow4((state) => ({ + // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, + // we'll create a fake element. + element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), + padding: arrowPadding, + offsetParent: "floating" + }), [arrowPadding]), { + name: "transformOrigin", + fn(state) { + const { + elements: elements3, + middlewareData: middlewareData2, + placement: renderedPlacement2, + rects, + y: y3 + } = state; + const currentRenderedSide = getSide(renderedPlacement2); + const currentRenderedAxis = getSideAxis(currentRenderedSide); + const arrowEl = arrowRef.current; + const arrowX = middlewareData2.arrow?.x || 0; + const arrowY = middlewareData2.arrow?.y || 0; + const arrowWidth = arrowEl?.clientWidth || 0; + const arrowHeight = arrowEl?.clientHeight || 0; + const transformX = arrowX + arrowWidth / 2; + const transformY = arrowY + arrowHeight / 2; + const shiftY = Math.abs(middlewareData2.shift?.y || 0); + const halfAnchorHeight = rects.reference.height / 2; + const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; + const isOverlappingAnchor = shiftY > sideOffsetValue; + const adjacentTransformOrigin = { + top: `${transformX}px calc(100% + ${sideOffsetValue}px)`, + bottom: `${transformX}px ${-sideOffsetValue}px`, + left: `calc(100% + ${sideOffsetValue}px) ${transformY}px`, + right: `${-sideOffsetValue}px ${transformY}px` + }[currentRenderedSide]; + const overlapTransformOrigin = `${transformX}px ${rects.reference.y + halfAnchorHeight - y3}px`; + elements3.floating.style.setProperty("--transform-origin", crossAxisShiftEnabled && currentRenderedAxis === "y" && isOverlappingAnchor ? overlapTransformOrigin : adjacentTransformOrigin); + return {}; + } + }, hide4, adaptiveOrigin2); + useIsoLayoutEffect(() => { + if (!mounted && floatingRootContext) { + floatingRootContext.update({ + referenceElement: null, + floatingElement: null, + domReferenceElement: null, + positionReference: null + }); + } + }, [mounted, floatingRootContext]); + const autoUpdateOptions = React30.useMemo(() => ({ + elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", + layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" + }), [disableAnchorTracking]); + const { + refs, + elements: elements2, + x: x2, + y: y2, + middlewareData, + update: update2, + placement: renderedPlacement, + context, + isPositioned, + floatingStyles: originalFloatingStyles + } = useFloating2({ + rootContext: floatingRootContext, + open: keepMounted ? mounted : void 0, + placement, + middleware, + strategy: positionMethod, + whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), + nodeId, + externalTree + }); + const { + sideX, + sideY + } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; + const resolvedPosition = isPositioned ? positionMethod : "fixed"; + const floatingStyles = React30.useMemo(() => { + const base = adaptiveOrigin2 ? { + position: resolvedPosition, + [sideX]: x2, + [sideY]: y2 + } : { + position: resolvedPosition, + ...originalFloatingStyles + }; + if (!isPositioned) { + base.opacity = 0; + } + return base; + }, [adaptiveOrigin2, resolvedPosition, sideX, x2, sideY, y2, originalFloatingStyles, isPositioned]); + const registeredPositionReferenceRef = React30.useRef(null); + useIsoLayoutEffect(() => { + if (!mounted) { + return; + } + const anchorValue = anchorValueRef.current; + const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; + const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; + const finalAnchor = unwrappedElement || null; + if (finalAnchor !== registeredPositionReferenceRef.current) { + refs.setPositionReference(finalAnchor); + registeredPositionReferenceRef.current = finalAnchor; + } + }, [mounted, refs, anchorDep, anchorValueRef]); + React30.useEffect(() => { + if (!mounted) { + return; + } + const anchorValue = anchorValueRef.current; + if (typeof anchorValue === "function") { + return; + } + if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { + refs.setPositionReference(anchorValue.current); + registeredPositionReferenceRef.current = anchorValue.current; + } + }, [mounted, refs, anchorDep, anchorValueRef]); + React30.useEffect(() => { + if (keepMounted && mounted && elements2.domReference && elements2.floating) { + return autoUpdate(elements2.domReference, elements2.floating, update2, autoUpdateOptions); + } + return void 0; + }, [keepMounted, mounted, elements2, update2, autoUpdateOptions]); + const renderedSide = getSide(renderedPlacement); + const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); + const renderedAlign = getAlignment(renderedPlacement) || "center"; + const anchorHidden = Boolean(middlewareData.hide?.referenceHidden); + useIsoLayoutEffect(() => { + if (lazyFlip && mounted && isPositioned) { + setMountSide(renderedSide); + } + }, [lazyFlip, mounted, isPositioned, renderedSide]); + const arrowStyles = React30.useMemo(() => ({ + position: "absolute", + top: middlewareData.arrow?.y, + left: middlewareData.arrow?.x + }), [middlewareData.arrow]); + const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; + return React30.useMemo(() => ({ + positionerStyles: floatingStyles, + arrowStyles, + arrowRef, + arrowUncentered, + side: logicalRenderedSide, + align: renderedAlign, + physicalSide: renderedSide, + anchorHidden, + refs, + context, + isPositioned, + update: update2 + }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden, refs, context, isPositioned, update2]); +} +function isRef(param) { + return param != null && "current" in param; +} + +// node_modules/@base-ui/react/esm/utils/getDisabledMountTransitionStyles.js +function getDisabledMountTransitionStyles(transitionStatus) { + return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; +} + +// node_modules/@base-ui/react/esm/utils/usePositioner.js +function usePositioner(componentProps, state, { + styles, + transitionStatus, + props, + refs, + hidden, + inert = false +}) { + const style = { + ...styles + }; + if (inert) { + style.pointerEvents = "none"; + } + return useRenderElement("div", componentProps, { + state, + ref: refs, + props: [{ + role: "presentation", + hidden, + style + }, getDisabledMountTransitionStyles(transitionStatus), props], + stateAttributesMapping: popupStateMapping + }); +} + +// node_modules/@base-ui/react/esm/utils/usePopupViewport.js +var React33 = __toESM(require_react(), 1); +var ReactDOM5 = __toESM(require_react_dom(), 1); + +// node_modules/@base-ui/utils/esm/usePreviousValue.js +var React31 = __toESM(require_react(), 1); +function usePreviousValue(value) { + const [state, setState] = React31.useState({ + current: value, + previous: null + }); + if (value !== state.current) { + setState({ + current: value, + previous: state.current + }); + } + return state.previous; +} + +// node_modules/@base-ui/react/esm/utils/usePopupAutoResize.js +var React32 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/utils/getCssDimensions.js +function getCssDimensions2(element) { + const css = getComputedStyle2(element); + let width = parseFloat(css.width) || 0; + let height = parseFloat(css.height) || 0; + const hasOffset = isHTMLElement(element); + const offsetWidth = hasOffset ? element.offsetWidth : width; + const offsetHeight = hasOffset ? element.offsetHeight : height; + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; + if (shouldFallback) { + width = offsetWidth; + height = offsetHeight; + } + return { + width, + height + }; +} + +// node_modules/@base-ui/react/esm/utils/usePopupAutoResize.js +var DEFAULT_ENABLED = () => true; +function usePopupAutoResize(parameters) { + const { + popupElement, + positionerElement, + content, + mounted, + enabled = DEFAULT_ENABLED, + onMeasureLayout: onMeasureLayoutParam, + onMeasureLayoutComplete: onMeasureLayoutCompleteParam, + side, + direction + } = parameters; + const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true, false); + const animationFrame = useAnimationFrame(); + const committedDimensionsRef = React32.useRef(null); + const liveDimensionsRef = React32.useRef(null); + const isInitialRenderRef = React32.useRef(true); + const restoreAnchoringStylesRef = React32.useRef(NOOP); + const onMeasureLayout = useStableCallback(onMeasureLayoutParam); + const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam); + const anchoringStyles = React32.useMemo(() => { + let isOriginSide = side === "top"; + let isPhysicalLeft = side === "left"; + if (direction === "rtl") { + isOriginSide = isOriginSide || side === "inline-end"; + isPhysicalLeft = isPhysicalLeft || side === "inline-end"; + } else { + isOriginSide = isOriginSide || side === "inline-start"; + isPhysicalLeft = isPhysicalLeft || side === "inline-start"; + } + return isOriginSide ? { + position: "absolute", + [side === "top" ? "bottom" : "top"]: "0", + [isPhysicalLeft ? "right" : "left"]: "0" + } : EMPTY_OBJECT; + }, [side, direction]); + useIsoLayoutEffect(() => { + if (!mounted || !enabled() || typeof ResizeObserver !== "function") { + restoreAnchoringStylesRef.current = NOOP; + isInitialRenderRef.current = true; + committedDimensionsRef.current = null; + liveDimensionsRef.current = null; + return void 0; + } + if (!popupElement || !positionerElement) { + return void 0; + } + restoreAnchoringStylesRef.current = applyElementStyles(popupElement, anchoringStyles); + const observer = new ResizeObserver((entries) => { + const entry = entries[0]; + if (entry) { + liveDimensionsRef.current = { + width: Math.ceil(entry.borderBoxSize[0].inlineSize), + height: Math.ceil(entry.borderBoxSize[0].blockSize) + }; + } + }); + observer.observe(popupElement); + setPopupCssSize(popupElement, "auto"); + const restorePopupPosition = overrideElementStyle(popupElement, "position", "static"); + const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none"); + const restorePopupScale = overrideElementStyle(popupElement, "scale", "1"); + const restorePositionerAvailableSize = applyElementStyles(positionerElement, { + "--available-width": "max-content", + "--available-height": "max-content" + }); + function restoreMeasurementOverrides() { + restorePopupPosition(); + restorePopupTransform(); + restorePositionerAvailableSize(); + } + function restoreMeasurementOverridesIncludingScale() { + restoreMeasurementOverrides(); + restorePopupScale(); + } + onMeasureLayout?.(); + if (isInitialRenderRef.current || committedDimensionsRef.current === null) { + setPositionerCssSize(positionerElement, "max-content"); + const dimensions = getCssDimensions2(popupElement); + committedDimensionsRef.current = dimensions; + setPositionerCssSize(positionerElement, dimensions); + restoreMeasurementOverridesIncludingScale(); + onMeasureLayoutComplete?.(null, dimensions); + isInitialRenderRef.current = false; + return () => { + observer.disconnect(); + restoreAnchoringStylesRef.current(); + restoreAnchoringStylesRef.current = NOOP; + }; + } + setPopupCssSize(popupElement, "auto"); + setPositionerCssSize(positionerElement, "max-content"); + const previousDimensions = committedDimensionsRef.current ?? liveDimensionsRef.current; + const newDimensions = getCssDimensions2(popupElement); + committedDimensionsRef.current = newDimensions; + if (!previousDimensions) { + setPositionerCssSize(positionerElement, newDimensions); + restoreMeasurementOverridesIncludingScale(); + onMeasureLayoutComplete?.(null, newDimensions); + return () => { + observer.disconnect(); + animationFrame.cancel(); + restoreAnchoringStylesRef.current(); + restoreAnchoringStylesRef.current = NOOP; + }; + } + setPopupCssSize(popupElement, previousDimensions); + restoreMeasurementOverridesIncludingScale(); + onMeasureLayoutComplete?.(previousDimensions, newDimensions); + setPositionerCssSize(positionerElement, newDimensions); + const abortController = new AbortController(); + animationFrame.request(() => { + setPopupCssSize(popupElement, newDimensions); + runOnceAnimationsFinish(() => { + popupElement.style.setProperty("--popup-width", "auto"); + popupElement.style.setProperty("--popup-height", "auto"); + }, abortController.signal); + }); + return () => { + observer.disconnect(); + abortController.abort(); + animationFrame.cancel(); + restoreAnchoringStylesRef.current(); + restoreAnchoringStylesRef.current = NOOP; + }; + }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, enabled, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]); +} +function overrideElementStyle(element, property, value) { + const originalValue = element.style.getPropertyValue(property); + element.style.setProperty(property, value); + return () => { + element.style.setProperty(property, originalValue); + }; +} +function applyElementStyles(element, styles) { + const restorers = []; + for (const [key, value] of Object.entries(styles)) { + restorers.push(overrideElementStyle(element, key, value)); + } + return restorers.length ? () => { + restorers.forEach((restore) => restore()); + } : NOOP; +} +function setPopupCssSize(popupElement, size4) { + const width = size4 === "auto" ? "auto" : `${size4.width}px`; + const height = size4 === "auto" ? "auto" : `${size4.height}px`; + popupElement.style.setProperty("--popup-width", width); + popupElement.style.setProperty("--popup-height", height); +} +function setPositionerCssSize(positionerElement, size4) { + const width = size4 === "max-content" ? "max-content" : `${size4.width}px`; + const height = size4 === "max-content" ? "max-content" : `${size4.height}px`; + positionerElement.style.setProperty("--positioner-width", width); + positionerElement.style.setProperty("--positioner-height", height); +} + +// node_modules/@base-ui/react/esm/utils/usePopupViewport.js +var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); +function usePopupViewport(parameters) { + const { + store, + side, + cssVars, + children + } = parameters; + const direction = useDirection(); + const activeTrigger = store.useState("activeTriggerElement"); + const activeTriggerId = store.useState("activeTriggerId"); + const open = store.useState("open"); + const payload = store.useState("payload"); + const mounted = store.useState("mounted"); + const popupElement = store.useState("popupElement"); + const positionerElement = store.useState("positionerElement"); + const previousActiveTrigger = usePreviousValue(open ? activeTrigger : null); + const currentContentKey = usePopupContentKey(activeTriggerId, payload); + const capturedNodeRef = React33.useRef(null); + const [previousContentNode, setPreviousContentNode] = React33.useState(null); + const [newTriggerOffset, setNewTriggerOffset] = React33.useState(null); + const currentContainerRef = React33.useRef(null); + const previousContainerRef = React33.useRef(null); + const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true, false); + const cleanupFrame = useAnimationFrame(); + const [previousContentDimensions, setPreviousContentDimensions] = React33.useState(null); + const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React33.useState(false); + useIsoLayoutEffect(() => { + store.set("hasViewport", true); + return () => { + store.set("hasViewport", false); + }; + }, [store]); + const handleMeasureLayout = useStableCallback(() => { + currentContainerRef.current?.style.setProperty("animation", "none"); + currentContainerRef.current?.style.setProperty("transition", "none"); + previousContainerRef.current?.style.setProperty("display", "none"); + }); + const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => { + currentContainerRef.current?.style.removeProperty("animation"); + currentContainerRef.current?.style.removeProperty("transition"); + previousContainerRef.current?.style.removeProperty("display"); + if (previousDimensions) { + setPreviousContentDimensions(previousDimensions); + } + }); + const lastHandledTriggerRef = React33.useRef(null); + useIsoLayoutEffect(() => { + if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) { + setPreviousContentNode(capturedNodeRef.current); + setShowStartingStyleAttribute(true); + const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger); + setNewTriggerOffset(offset4); + cleanupFrame.request(() => { + ReactDOM5.flushSync(() => { + setShowStartingStyleAttribute(false); + }); + onAnimationsFinished(() => { + setPreviousContentNode(null); + setPreviousContentDimensions(null); + capturedNodeRef.current = null; + }); + }); + lastHandledTriggerRef.current = activeTrigger; + } + }, [activeTrigger, previousActiveTrigger, previousContentNode, onAnimationsFinished, cleanupFrame]); + useIsoLayoutEffect(() => { + const source = currentContainerRef.current; + if (!source) { + return; + } + const wrapper = ownerDocument(source).createElement("div"); + for (const child of Array.from(source.childNodes)) { + wrapper.appendChild(child.cloneNode(true)); + } + capturedNodeRef.current = wrapper; + }); + const isTransitioning = previousContentNode != null; + let childrenToRender; + if (!isTransitioning) { + childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { + "data-current": true, + ref: currentContainerRef, + children + }, currentContentKey); + } else { + childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(React33.Fragment, { + children: [/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { + "data-previous": true, + inert: inertValue(true), + ref: previousContainerRef, + style: { + ...previousContentDimensions ? { + [cssVars.popupWidth]: `${previousContentDimensions.width}px`, + [cssVars.popupHeight]: `${previousContentDimensions.height}px` + } : null, + position: "absolute" + }, + "data-ending-style": showStartingStyleAttribute ? void 0 : "" + }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { + "data-current": true, + ref: currentContainerRef, + "data-starting-style": showStartingStyleAttribute ? "" : void 0, + children + }, currentContentKey)] + }); + } + useIsoLayoutEffect(() => { + const container = previousContainerRef.current; + if (!container || !previousContentNode) { + return; + } + container.replaceChildren(...Array.from(previousContentNode.childNodes)); + }, [previousContentNode]); + usePopupAutoResize({ + popupElement, + positionerElement, + mounted, + content: payload, + onMeasureLayout: handleMeasureLayout, + onMeasureLayoutComplete: handleMeasureLayoutComplete, + side, + direction + }); + const state = { + activationDirection: getActivationDirection(newTriggerOffset), + transitioning: isTransitioning + }; + return { + children: childrenToRender, + state + }; +} +function getActivationDirection(offset4) { + if (!offset4) { + return void 0; + } + return `${getValueWithTolerance(offset4.horizontal, 5, "right", "left")} ${getValueWithTolerance(offset4.vertical, 5, "down", "up")}`; +} +function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) { + if (value > tolerance) { + return positiveLabel; + } + if (value < -tolerance) { + return negativeLabel; + } + return ""; +} +function calculateRelativePosition(from, to) { + const fromRect = from.getBoundingClientRect(); + const toRect = to.getBoundingClientRect(); + const fromCenter = { + x: fromRect.left + fromRect.width / 2, + y: fromRect.top + fromRect.height / 2 + }; + const toCenter = { + x: toRect.left + toRect.width / 2, + y: toRect.top + toRect.height / 2 + }; + return { + horizontal: toCenter.x - fromCenter.x, + vertical: toCenter.y - fromCenter.y + }; +} +function usePopupContentKey(activeTriggerId, payload) { + const [contentKey, setContentKey] = React33.useState(0); + const previousActiveTriggerIdRef = React33.useRef(activeTriggerId); + const previousPayloadRef = React33.useRef(payload); + const pendingPayloadUpdateRef = React33.useRef(false); + useIsoLayoutEffect(() => { + const previousActiveTriggerId = previousActiveTriggerIdRef.current; + const previousPayload = previousPayloadRef.current; + const triggerIdChanged = activeTriggerId !== previousActiveTriggerId; + const payloadChanged = payload !== previousPayload; + if (triggerIdChanged) { + setContentKey((value) => value + 1); + pendingPayloadUpdateRef.current = !payloadChanged; + } else if (pendingPayloadUpdateRef.current && payloadChanged) { + setContentKey((value) => value + 1); + pendingPayloadUpdateRef.current = false; + } + previousActiveTriggerIdRef.current = activeTriggerId; + previousPayloadRef.current = payload; + }, [activeTriggerId, payload]); + return `${activeTriggerId ?? "current"}-${contentKey}`; +} + +// node_modules/@base-ui/react/esm/utils/FloatingPortalLite.js +var React34 = __toESM(require_react(), 1); +var ReactDOM6 = __toESM(require_react_dom(), 1); +var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); +var FloatingPortalLite = /* @__PURE__ */ React34.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) { + const { + children, + container, + className, + render, + style, + ...elementProps + } = componentProps; + const { + portalNode, + portalSubtree + } = useFloatingPortalNode({ + container, + ref: forwardedRef, + componentProps, + elementProps + }); + if (!portalSubtree && !portalNode) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(React34.Fragment, { + children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM6.createPortal(children, portalNode)] + }); +}); +if (true) FloatingPortalLite.displayName = "FloatingPortalLite"; + +// node_modules/@base-ui/react/esm/tooltip/index.parts.js +var index_parts_exports = {}; +__export(index_parts_exports, { + Arrow: () => TooltipArrow, + Handle: () => TooltipHandle, + Popup: () => TooltipPopup, + Portal: () => TooltipPortal, + Positioner: () => TooltipPositioner, + Provider: () => TooltipProvider, + Root: () => TooltipRoot, + Trigger: () => TooltipTrigger, + Viewport: () => TooltipViewport, + createHandle: () => createTooltipHandle +}); + +// node_modules/@base-ui/react/esm/tooltip/root/TooltipRoot.js +var React37 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/root/TooltipRootContext.js +var React35 = __toESM(require_react(), 1); +var TooltipRootContext = /* @__PURE__ */ React35.createContext(void 0); +if (true) TooltipRootContext.displayName = "TooltipRootContext"; +function useTooltipRootContext(optional) { + const context = React35.useContext(TooltipRootContext); + if (context === void 0 && !optional) { + throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72)); + } + return context; +} + +// node_modules/@base-ui/react/esm/tooltip/store/TooltipStore.js +var React36 = __toESM(require_react(), 1); +var ReactDOM7 = __toESM(require_react_dom(), 1); +var selectors2 = { + ...popupStoreSelectors, + disabled: createSelector((state) => state.disabled), + instantType: createSelector((state) => state.instantType), + isInstantPhase: createSelector((state) => state.isInstantPhase), + trackCursorAxis: createSelector((state) => state.trackCursorAxis), + disableHoverablePopup: createSelector((state) => state.disableHoverablePopup), + lastOpenChangeReason: createSelector((state) => state.openChangeReason), + closeOnClick: createSelector((state) => state.closeOnClick), + closeDelay: createSelector((state) => state.closeDelay), + hasViewport: createSelector((state) => state.hasViewport) +}; +var TooltipStore = class _TooltipStore extends ReactStore { + constructor(initialState, floatingId, nested = false) { + const triggerElements = new PopupTriggerMap(); + const state = { + ...createInitialState(), + ...initialState + }; + state.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested); + super(state, { + popupRef: /* @__PURE__ */ React36.createRef(), + onOpenChange: void 0, + onOpenChangeComplete: void 0, + triggerElements + }, selectors2); + } + setOpen = (nextOpen, eventDetails) => { + const reason = eventDetails.reason; + const isHover = reason === reason_parts_exports.triggerHover; + const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus; + const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey); + eventDetails.preventUnmountOnClose = () => { + this.set("preventUnmountingOnClose", true); + }; + this.context.onOpenChange?.(nextOpen, eventDetails); + if (eventDetails.isCanceled) { + return; + } + this.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails); + const changeState = () => { + const updatedState = { + open: nextOpen, + openChangeReason: reason + }; + if (isFocusOpen) { + updatedState.instantType = "focus"; + } else if (isDismissClose) { + updatedState.instantType = "dismiss"; + } else if (reason === reason_parts_exports.triggerHover) { + updatedState.instantType = void 0; + } + setOpenTriggerState(updatedState, nextOpen, eventDetails.trigger); + this.update(updatedState); + }; + if (isHover) { + ReactDOM7.flushSync(changeState); + } else { + changeState(); + } + }; + // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change. + cancelPendingOpen(event) { + this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event)); + } + static useStore(externalStore, initialState) { + const store = usePopupStore(externalStore, (floatingId, nested) => new _TooltipStore(initialState, floatingId, nested)).store; + return store; + } +}; +function createInitialState() { + return { + ...createInitialPopupStoreState(), + disabled: false, + instantType: void 0, + isInstantPhase: false, + trackCursorAxis: "none", + disableHoverablePopup: false, + openChangeReason: null, + closeOnClick: true, + closeDelay: 0, + hasViewport: false + }; +} + +// node_modules/@base-ui/react/esm/tooltip/root/TooltipRoot.js +var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); +var TooltipRoot = fastComponent(function TooltipRoot2(props) { + const { + disabled: disabled2 = false, + defaultOpen = false, + open: openProp, + disableHoverablePopup = false, + trackCursorAxis = "none", + actionsRef, + onOpenChange, + onOpenChangeComplete, + handle, + triggerId: triggerIdProp, + defaultTriggerId: defaultTriggerIdProp = null, + children + } = props; + const store = TooltipStore.useStore(handle?.store, { + open: defaultOpen, + openProp, + activeTriggerId: defaultTriggerIdProp, + triggerIdProp + }); + useOnFirstRender(() => { + if (openProp === void 0 && store.state.open === false && defaultOpen === true) { + store.update({ + open: true, + activeTriggerId: defaultTriggerIdProp + }); + } + }); + store.useControlledProp("openProp", openProp); + store.useControlledProp("triggerIdProp", triggerIdProp); + store.useContextCallback("onOpenChange", onOpenChange); + store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); + const openState = store.useState("open"); + const open = !disabled2 && openState; + const activeTriggerId = store.useState("activeTriggerId"); + const mounted = store.useState("mounted"); + const payload = store.useState("payload"); + store.useSyncedValues({ + trackCursorAxis, + disableHoverablePopup + }); + store.useSyncedValue("disabled", disabled2); + useImplicitActiveTrigger(store); + const { + forceUnmount, + transitionStatus + } = useOpenStateTransitions(open, store); + const isInstantPhase = store.useState("isInstantPhase"); + const instantType = store.useState("instantType"); + const lastOpenChangeReason = store.useState("lastOpenChangeReason"); + const previousInstantTypeRef = React37.useRef(null); + useIsoLayoutEffect(() => { + if (openState && disabled2) { + store.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled)); + } + }, [openState, disabled2, store]); + useIsoLayoutEffect(() => { + if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) { + if (instantType !== "delay") { + previousInstantTypeRef.current = instantType; + } + store.set("instantType", "delay"); + } else if (previousInstantTypeRef.current !== null) { + store.set("instantType", previousInstantTypeRef.current); + previousInstantTypeRef.current = null; + } + }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store]); + useIsoLayoutEffect(() => { + if (open) { + if (activeTriggerId == null) { + store.set("payload", void 0); + } + } + }, [store, activeTriggerId, open]); + const handleImperativeClose = React37.useCallback(() => { + store.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); + }, [store]); + React37.useImperativeHandle(actionsRef, () => ({ + unmount: forceUnmount, + close: handleImperativeClose + }), [forceUnmount, handleImperativeClose]); + const shouldRenderInteractions = open || mounted || !disabled2 && trackCursorAxis !== "none"; + return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(TooltipRootContext.Provider, { + value: store, + children: [shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TooltipInteractions, { + store, + disabled: disabled2, + trackCursorAxis + }), typeof children === "function" ? children({ + payload + }) : children] + }); +}); +if (true) TooltipRoot.displayName = "TooltipRoot"; +function TooltipInteractions({ + store, + disabled: disabled2, + trackCursorAxis +}) { + const floatingRootContext = store.useState("floatingRootContext"); + const dismiss = useDismiss(floatingRootContext, { + enabled: !disabled2, + referencePress: () => store.select("closeOnClick") + }); + const clientPoint = useClientPoint(floatingRootContext, { + enabled: !disabled2 && trackCursorAxis !== "none", + axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis + }); + const activeTriggerProps = React37.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]); + const inactiveTriggerProps = React37.useMemo(() => mergeProps(clientPoint.trigger, dismiss.trigger), [clientPoint.trigger, dismiss.trigger]); + const popupProps = React37.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, clientPoint.floating, dismiss.floating), [clientPoint.floating, dismiss.floating]); + usePopupInteractionProps(store, { + activeTriggerProps, + inactiveTriggerProps, + popupProps + }); + return null; +} + +// node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTrigger.js +var React39 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/provider/TooltipProviderContext.js +var React38 = __toESM(require_react(), 1); +var TooltipProviderContext = /* @__PURE__ */ React38.createContext(void 0); +if (true) TooltipProviderContext.displayName = "TooltipProviderContext"; +function useTooltipProviderContext() { + return React38.useContext(TooltipProviderContext); +} + +// node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTriggerDataAttributes.js +var TooltipTriggerDataAttributes = (function(TooltipTriggerDataAttributes2) { + TooltipTriggerDataAttributes2[TooltipTriggerDataAttributes2["popupOpen"] = CommonTriggerDataAttributes.popupOpen] = "popupOpen"; + TooltipTriggerDataAttributes2["triggerDisabled"] = "data-trigger-disabled"; + return TooltipTriggerDataAttributes2; +})({}); + +// node_modules/@base-ui/react/esm/tooltip/utils/constants.js +var OPEN_DELAY = 600; + +// node_modules/@base-ui/react/esm/tooltip/trigger/TooltipTrigger.js +var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger"; +function getTargetElement(event) { + if ("composedPath" in event) { + const path = event.composedPath(); + for (let i2 = 0; i2 < path.length; i2 += 1) { + const element = path[i2]; + if (isElement(element)) { + return element; + } + } + } + const target = event.target; + if (isElement(target)) { + return target; + } + return null; +} +function closestEnabledTooltipTrigger(element) { + let current = element; + while (current) { + if (current.hasAttribute(TOOLTIP_TRIGGER_IDENTIFIER)) { + return current; + } + const parentElement = current.parentElement; + if (parentElement) { + current = parentElement; + continue; + } + const root = current.getRootNode(); + current = "host" in root && isElement(root.host) ? root.host : null; + } + return null; +} +var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) { + const { + render, + className, + style, + handle, + payload, + disabled: disabledProp, + delay, + closeOnClick = true, + closeDelay, + id: idProp, + ...elementProps + } = componentProps; + const rootContext = useTooltipRootContext(true); + const store = handle?.store ?? rootContext; + if (!store) { + throw new Error(true ? "Base UI: <Tooltip.Trigger> must be either used within a <Tooltip.Root> component or provided with a handle." : formatErrorMessage_default(82)); + } + const thisTriggerId = useBaseUiId(idProp); + const isTriggerActive = store.useState("isTriggerActive", thisTriggerId); + const isOpenedByThisTrigger = store.useState("isOpenedByTrigger", thisTriggerId); + const floatingRootContext = store.useState("floatingRootContext"); + const triggerElementRef = React39.useRef(null); + const delayWithDefault = delay ?? OPEN_DELAY; + const closeDelayWithDefault = closeDelay ?? 0; + const { + registerTrigger, + isMountedByThisTrigger + } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, { + payload, + closeOnClick, + closeDelay: closeDelayWithDefault + }); + const providerContext = useTooltipProviderContext(); + const { + delayRef, + isInstantPhase, + hasProvider + } = useDelayGroup(floatingRootContext, { + open: isOpenedByThisTrigger + }); + const hoverInteraction = useHoverInteractionSharedState(floatingRootContext); + store.useSyncedValue("isInstantPhase", isInstantPhase); + const rootDisabled = store.useState("disabled"); + const disabled2 = disabledProp ?? rootDisabled; + const disabledRef = useValueAsRef(disabled2); + const trackCursorAxis = store.useState("trackCursorAxis"); + const disableHoverablePopup = store.useState("disableHoverablePopup"); + const isNestedTriggerHoveredRef = React39.useRef(false); + const nestedTriggerOpenTimeout = useTimeout(); + const pointerTypeRef = React39.useRef(void 0); + function getOpenDelay() { + const providerDelay = providerContext?.delay; + const groupOpenValue = typeof delayRef.current === "object" ? delayRef.current.open : void 0; + let computedOpenDelay = delayWithDefault; + if (hasProvider) { + if (groupOpenValue !== 0) { + computedOpenDelay = delay ?? providerDelay ?? delayWithDefault; + } else { + computedOpenDelay = 0; + } + } + return computedOpenDelay; + } + function isEnabledNestedTriggerTarget(target) { + const triggerEl = triggerElementRef.current; + if (!triggerEl || !target) { + return false; + } + const nearestTrigger = closestEnabledTooltipTrigger(target); + return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger); + } + function detectNestedTriggerHover(target) { + const nestedTriggerHovered = isEnabledNestedTriggerTarget(target); + isNestedTriggerHoveredRef.current = nestedTriggerHovered; + if (nestedTriggerHovered) { + hoverInteraction.openChangeTimeout.clear(); + hoverInteraction.restTimeout.clear(); + hoverInteraction.restTimeoutPending = false; + nestedTriggerOpenTimeout.clear(); + } + return nestedTriggerHovered; + } + const hoverProps = useHoverReferenceInteraction(floatingRootContext, { + enabled: !disabled2, + mouseOnly: true, + move: false, + handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null, + restMs: getOpenDelay, + delay() { + const closeValue = typeof delayRef.current === "object" ? delayRef.current.close : void 0; + let computedCloseDelay = closeDelayWithDefault; + if (closeDelay == null && hasProvider) { + computedCloseDelay = closeValue; + } + return { + close: computedCloseDelay + }; + }, + triggerElementRef, + isActiveTrigger: isTriggerActive, + isClosing: () => store.select("transitionStatus") === "ending", + shouldOpen() { + return !isNestedTriggerHoveredRef.current; + } + }); + const focusProps = useFocus(floatingRootContext, { + enabled: !disabled2 + }).reference; + const handleNestedTriggerHover = (event) => { + const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current; + const target = getTargetElement(event); + const nestedTriggerHovered = detectNestedTriggerHover(target); + const triggerEl = triggerElementRef.current; + const targetInsideTrigger = triggerEl && target && contains(triggerEl, target); + if (nestedTriggerHovered && store.select("open") && store.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) { + store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); + return; + } + if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences. + isMouseLikePointerType(pointerTypeRef.current)) { + const open = () => { + if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store.select("open")) { + store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl)); + } + }; + const openDelay = getOpenDelay(); + if (openDelay === 0) { + nestedTriggerOpenTimeout.clear(); + open(); + } else { + nestedTriggerOpenTimeout.start(openDelay, open); + } + } + }; + const rootTriggerProps = store.useState("triggerProps", isMountedByThisTrigger); + const shouldApplyRootTriggerProps = isMountedByThisTrigger || trackCursorAxis !== "none"; + const state = { + open: isOpenedByThisTrigger + }; + const element = useRenderElement("button", componentProps, { + state, + ref: [forwardedRef, registerTrigger, triggerElementRef], + props: [hoverProps, focusProps, shouldApplyRootTriggerProps ? rootTriggerProps : void 0, { + onMouseOver(event) { + handleNestedTriggerHover(event.nativeEvent); + }, + onFocus(event) { + if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) { + event.preventBaseUIHandler(); + } + }, + onMouseLeave() { + isNestedTriggerHoveredRef.current = false; + nestedTriggerOpenTimeout.clear(); + pointerTypeRef.current = void 0; + }, + onPointerEnter(event) { + pointerTypeRef.current = event.pointerType; + }, + onPointerDown(event) { + pointerTypeRef.current = event.pointerType; + store.set("closeOnClick", closeOnClick); + if (closeOnClick && !store.select("open")) { + store.cancelPendingOpen(event.nativeEvent); + } + }, + onClick(event) { + if (closeOnClick && !store.select("open")) { + store.cancelPendingOpen(event.nativeEvent); + } + }, + id: thisTriggerId, + [TooltipTriggerDataAttributes.triggerDisabled]: disabled2 ? "" : void 0, + [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : "" + }, elementProps], + stateAttributesMapping: triggerOpenStateMapping + }); + return element; +}); +if (true) TooltipTrigger.displayName = "TooltipTrigger"; + +// node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortal.js +var React41 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortalContext.js +var React40 = __toESM(require_react(), 1); +var TooltipPortalContext = /* @__PURE__ */ React40.createContext(void 0); +if (true) TooltipPortalContext.displayName = "TooltipPortalContext"; +function useTooltipPortalContext() { + const value = React40.useContext(TooltipPortalContext); + if (value === void 0) { + throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70)); + } + return value; +} + +// node_modules/@base-ui/react/esm/tooltip/portal/TooltipPortal.js +var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); +var TooltipPortal = /* @__PURE__ */ React41.forwardRef(function TooltipPortal2(props, forwardedRef) { + const { + keepMounted = false, + ...portalProps + } = props; + const store = useTooltipRootContext(); + const mounted = store.useState("mounted"); + const shouldRender = mounted || keepMounted; + if (!shouldRender) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TooltipPortalContext.Provider, { + value: keepMounted, + children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(FloatingPortalLite, { + ref: forwardedRef, + ...portalProps + }) + }); +}); +if (true) TooltipPortal.displayName = "TooltipPortal"; + +// node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositioner.js +var React43 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositionerContext.js +var React42 = __toESM(require_react(), 1); +var TooltipPositionerContext = /* @__PURE__ */ React42.createContext(void 0); +if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext"; +function useTooltipPositionerContext() { + const context = React42.useContext(TooltipPositionerContext); + if (context === void 0) { + throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71)); + } + return context; +} + +// node_modules/@base-ui/react/esm/tooltip/positioner/TooltipPositioner.js +var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var TooltipPositioner = /* @__PURE__ */ React43.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) { + const { + render, + className, + anchor, + positionMethod = "absolute", + side = "top", + align = "center", + sideOffset = 0, + alignOffset = 0, + collisionBoundary = "clipping-ancestors", + collisionPadding = 5, + arrowPadding = 5, + sticky = false, + disableAnchorTracking = false, + collisionAvoidance = POPUP_COLLISION_AVOIDANCE, + style, + ...elementProps + } = componentProps; + const store = useTooltipRootContext(); + const keepMounted = useTooltipPortalContext(); + const open = store.useState("open"); + const mounted = store.useState("mounted"); + const trackCursorAxis = store.useState("trackCursorAxis"); + const disableHoverablePopup = store.useState("disableHoverablePopup"); + const floatingRootContext = store.useState("floatingRootContext"); + const instantType = store.useState("instantType"); + const transitionStatus = store.useState("transitionStatus"); + const hasViewport = store.useState("hasViewport"); + const positioning = useAnchorPositioning({ + anchor, + positionMethod, + floatingRootContext, + mounted, + side, + sideOffset, + align, + alignOffset, + collisionBoundary, + collisionPadding, + sticky, + arrowPadding, + disableAnchorTracking, + keepMounted, + collisionAvoidance, + adaptiveOrigin: hasViewport ? adaptiveOrigin : void 0 + }); + const state = React43.useMemo(() => ({ + open, + side: positioning.side, + align: positioning.align, + anchorHidden: positioning.anchorHidden, + instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType + }), [open, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]); + const element = usePositioner(componentProps, state, { + styles: positioning.positionerStyles, + transitionStatus, + props: elementProps, + refs: [forwardedRef, store.useStateSetter("positionerElement")], + hidden: !mounted, + inert: !open || trackCursorAxis === "both" || disableHoverablePopup + }); + return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipPositionerContext.Provider, { + value: positioning, + children: element + }); +}); +if (true) TooltipPositioner.displayName = "TooltipPositioner"; + +// node_modules/@base-ui/react/esm/tooltip/popup/TooltipPopup.js +var React44 = __toESM(require_react(), 1); +var stateAttributesMapping = { + ...popupStateMapping, + ...transitionStatusMapping +}; +var TooltipPopup = /* @__PURE__ */ React44.forwardRef(function TooltipPopup2(componentProps, forwardedRef) { + const { + render, + className, + style, + ...elementProps + } = componentProps; + const store = useTooltipRootContext(); + const { + side, + align + } = useTooltipPositionerContext(); + const open = store.useState("open"); + const instantType = store.useState("instantType"); + const transitionStatus = store.useState("transitionStatus"); + const popupProps = store.useState("popupProps"); + const floatingContext = store.useState("floatingRootContext"); + const disabled2 = store.useState("disabled"); + const closeDelay = store.useState("closeDelay"); + useOpenChangeComplete({ + open, + ref: store.context.popupRef, + onComplete() { + if (open) { + store.context.onOpenChangeComplete?.(true); + } + } + }); + useHoverFloatingInteraction(floatingContext, { + enabled: !disabled2, + closeDelay + }); + const setPopupElement = store.useStateSetter("popupElement"); + const state = { + open, + side, + align, + instant: instantType, + transitionStatus + }; + const element = useRenderElement("div", componentProps, { + state, + ref: [forwardedRef, store.context.popupRef, setPopupElement], + props: [popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps], + stateAttributesMapping + }); + return element; +}); +if (true) TooltipPopup.displayName = "TooltipPopup"; + +// node_modules/@base-ui/react/esm/tooltip/arrow/TooltipArrow.js +var React45 = __toESM(require_react(), 1); +var TooltipArrow = /* @__PURE__ */ React45.forwardRef(function TooltipArrow2(componentProps, forwardedRef) { + const { + render, + className, + style, + ...elementProps + } = componentProps; + const store = useTooltipRootContext(); + const { + arrowRef, + side, + align, + arrowUncentered, + arrowStyles + } = useTooltipPositionerContext(); + const open = store.useState("open"); + const instantType = store.useState("instantType"); + const state = { + open, + side, + align, + uncentered: arrowUncentered, + instant: instantType + }; + const element = useRenderElement("div", componentProps, { + state, + ref: [forwardedRef, arrowRef], + props: [{ + style: arrowStyles, + "aria-hidden": true + }, elementProps], + stateAttributesMapping: popupStateMapping + }); + return element; +}); +if (true) TooltipArrow.displayName = "TooltipArrow"; + +// node_modules/@base-ui/react/esm/tooltip/provider/TooltipProvider.js +var React46 = __toESM(require_react(), 1); +var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var TooltipProvider = function TooltipProvider2(props) { + const { + delay, + closeDelay, + timeout = 400 + } = props; + const contextValue = React46.useMemo(() => ({ + delay, + closeDelay + }), [delay, closeDelay]); + const delayValue = React46.useMemo(() => ({ + open: delay, + close: closeDelay + }), [delay, closeDelay]); + return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TooltipProviderContext.Provider, { + value: contextValue, + children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FloatingDelayGroup, { + delay: delayValue, + timeoutMs: timeout, + children: props.children + }) + }); +}; +if (true) TooltipProvider.displayName = "TooltipProvider"; + +// node_modules/@base-ui/react/esm/tooltip/viewport/TooltipViewport.js +var React47 = __toESM(require_react(), 1); + +// node_modules/@base-ui/react/esm/tooltip/viewport/TooltipViewportCssVars.js +var TooltipViewportCssVars = /* @__PURE__ */ (function(TooltipViewportCssVars2) { + TooltipViewportCssVars2["popupWidth"] = "--popup-width"; + TooltipViewportCssVars2["popupHeight"] = "--popup-height"; + return TooltipViewportCssVars2; +})({}); + +// node_modules/@base-ui/react/esm/tooltip/viewport/TooltipViewport.js +var stateAttributesMapping2 = { + activationDirection: (value) => value ? { + "data-activation-direction": value + } : null +}; +var TooltipViewport = /* @__PURE__ */ React47.forwardRef(function TooltipViewport2(componentProps, forwardedRef) { + const { + render, + className, + style, + children, + ...elementProps + } = componentProps; + const store = useTooltipRootContext(); + const positioner = useTooltipPositionerContext(); + const instantType = store.useState("instantType"); + const { + children: childrenToRender, + state: viewportState + } = usePopupViewport({ + store, + side: positioner.side, + cssVars: TooltipViewportCssVars, + children + }); + const state = { + activationDirection: viewportState.activationDirection, + transitioning: viewportState.transitioning, + instant: instantType + }; + return useRenderElement("div", componentProps, { + state, + ref: forwardedRef, + props: [elementProps, { + children: childrenToRender + }], + stateAttributesMapping: stateAttributesMapping2 + }); +}); +if (true) TooltipViewport.displayName = "TooltipViewport"; + +// node_modules/@base-ui/react/esm/tooltip/store/TooltipHandle.js +var TooltipHandle = class { + /** + * Internal store holding the tooltip state. + * @internal + */ + constructor() { + this.store = new TooltipStore(); + } + /** + * Opens the tooltip and associates it with the trigger with the given ID. + * The trigger must be a Tooltip.Trigger component with this handle passed as a prop. + * + * This method should only be called in an event handler or an effect (not during rendering). + * + * @param triggerId ID of the trigger to associate with the tooltip. + */ + open(triggerId) { + const triggerElement = triggerId ? this.store.context.triggerElements.getById(triggerId) : void 0; + if (triggerId && !triggerElement) { + throw new Error(true ? `Base UI: TooltipHandle.open: No trigger found with id "${triggerId}".` : formatErrorMessage_default(81, triggerId)); + } + this.store.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement)); + } + /** + * Closes the tooltip. + */ + close() { + this.store.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, void 0)); + } + /** + * Indicates whether the tooltip is currently open. + */ + get isOpen() { + return this.store.select("open"); + } +}; +function createTooltipHandle() { + return new TooltipHandle(); +} + +// node_modules/@base-ui/react/esm/use-render/useRender.js +function useRender(params) { + return useRenderElement(params.defaultTagName ?? "div", params, params); +} + +// packages/ui/build-module/text/text.mjs +var import_element10 = __toESM(require_element(), 1); +var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; +function getRuntime() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { + return true; + } + } + return false; +} +function injectStyle(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument(targetDocument) { + const runtime = getRuntime(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle(hash, css) { + const runtime = getRuntime(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle("0c5702ddca", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); +} +var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; +if (typeof process === "undefined" || true) { + registerStyle("d5c1b736fd", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}"); +} +var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; +var Text = (0, import_element10.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { + const element = useRender({ + render, + defaultTagName: "span", + ref, + props: mergeProps(props, { + className: clsx_default( + style_default.text, + global_css_defense_default.heading, + global_css_defense_default.p, + style_default[variant], + className + ) + }) + }); + return element; +}); + +// packages/icons/build-module/icon/index.mjs +var import_element11 = __toESM(require_element(), 1); +var icon_default = (0, import_element11.forwardRef)( + ({ icon, size: size4 = 24, ...props }, ref) => { + return (0, import_element11.cloneElement)(icon, { + width: size4, + height: size4, + ...props, + ref + }); + } +); + +// packages/icons/build-module/library/chevron-left.mjs +var import_primitives = __toESM(require_primitives(), 1); +var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); +var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) }); + +// packages/icons/build-module/library/chevron-right.mjs +var import_primitives2 = __toESM(require_primitives(), 1); +var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); +var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives2.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) }); + +// packages/icons/build-module/library/more-vertical.mjs +var import_primitives3 = __toESM(require_primitives(), 1); +var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); +var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives3.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); + +// packages/icons/build-module/library/next.mjs +var import_primitives4 = __toESM(require_primitives(), 1); +var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); +var next_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives4.Path, { d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" }) }); + +// packages/icons/build-module/library/previous.mjs +var import_primitives5 = __toESM(require_primitives(), 1); +var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); +var previous_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives5.Path, { d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" }) }); + +// packages/ui/build-module/utils/render-slot-with-children.mjs +var import_element12 = __toESM(require_element(), 1); +function renderSlotWithChildren(slot, defaultSlot, children) { + return (0, import_element12.cloneElement)(slot ?? defaultSlot, { children }); +} + +// packages/ui/build-module/lock-unlock.mjs +var import_private_apis = __toESM(require_private_apis(), 1); +var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( + "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", + "@wordpress/ui" +); + +// packages/ui/build-module/stack/stack.mjs +var import_element13 = __toESM(require_element(), 1); +var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; +function getRuntime2() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument2(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash2(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE2}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { + return true; + } + } + return false; +} +function injectStyle2(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime2(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash2(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument2(targetDocument) { + const runtime = getRuntime2(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle2(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle2(hash, css) { + const runtime = getRuntime2(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle2(targetDocument, hash, css); + } +} +if (typeof process === "undefined" || true) { + registerStyle2("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}"); +} +var style_default2 = { "stack": "_19ce0419607e1896__stack" }; +var gapTokens = { + xs: "var(--wpds-dimension-gap-xs, 4px)", + sm: "var(--wpds-dimension-gap-sm, 8px)", + md: "var(--wpds-dimension-gap-md, 12px)", + lg: "var(--wpds-dimension-gap-lg, 16px)", + xl: "var(--wpds-dimension-gap-xl, 24px)", + "2xl": "var(--wpds-dimension-gap-2xl, 32px)", + "3xl": "var(--wpds-dimension-gap-3xl, 40px)" +}; +var Stack = (0, import_element13.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { + const style = { + gap: gap && gapTokens[gap], + alignItems: align, + justifyContent: justify, + flexDirection: direction, + flexWrap: wrap + }; + const element = useRender({ + render, + ref, + props: mergeProps(props, { style, className: style_default2.stack }) + }); + return element; +}); + +// packages/ui/build-module/tooltip/index.mjs +var tooltip_exports = {}; +__export(tooltip_exports, { + Popup: () => Popup, + Portal: () => Portal, + Positioner: () => Positioner, + Provider: () => Provider, + Root: () => Root, + Trigger: () => Trigger +}); + +// packages/ui/build-module/tooltip/popup.mjs +var import_element16 = __toESM(require_element(), 1); +var import_theme = __toESM(require_theme(), 1); + +// packages/ui/build-module/tooltip/portal.mjs +var import_element14 = __toESM(require_element(), 1); + +// packages/ui/build-module/utils/wp-compat-overlay-slot.mjs +var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; +function getRuntime3() { + const globalScope = globalThis; + if (globalScope.__wpStyleRuntime) { + return globalScope.__wpStyleRuntime; + } + globalScope.__wpStyleRuntime = { + documents: /* @__PURE__ */ new Map(), + styles: /* @__PURE__ */ new Map(), + injectedStyles: /* @__PURE__ */ new WeakMap() + }; + if (typeof document !== "undefined") { + registerDocument3(document); + } + return globalScope.__wpStyleRuntime; +} +function documentContainsStyleHash3(targetDocument, hash) { + if (!targetDocument.head) { + return false; + } + for (const style of targetDocument.head.querySelectorAll( + `style[${STYLE_HASH_ATTRIBUTE3}]` + )) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { + return true; + } + } + return false; +} +function injectStyle3(targetDocument, hash, css) { + if (!targetDocument.head) { + return; + } + const runtime = getRuntime3(); + let injectedStyles = runtime.injectedStyles.get(targetDocument); + if (!injectedStyles) { + injectedStyles = /* @__PURE__ */ new Set(); + runtime.injectedStyles.set(targetDocument, injectedStyles); + } + if (injectedStyles.has(hash)) { + return; + } + if (documentContainsStyleHash3(targetDocument, hash)) { + injectedStyles.add(hash); + return; + } + const style = targetDocument.createElement("style"); + style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); + style.appendChild(targetDocument.createTextNode(css)); + targetDocument.head.appendChild(style); + injectedStyles.add(hash); +} +function registerDocument3(targetDocument) { + const runtime = getRuntime3(); + runtime.documents.set( + targetDocument, + (runtime.documents.get(targetDocument) ?? 0) + 1 + ); + for (const [hash, css] of runtime.styles) { + injectStyle3(targetDocument, hash, css); + } + return () => { + const count = runtime.documents.get(targetDocument); + if (count === void 0) { + return; + } + if (count <= 1) { + runtime.documents.delete(targetDocument); + return; + } + runtime.documents.set(targetDocument, count - 1); + }; +} +function registerStyle3(hash, css) { + const runtime = getRuntime3(); + runtime.styles.set(hash, css); + for (const targetDocument of runtime.documents.keys()) { + injectStyle3(targetDocument, hash, css); + } } -function warnIfRenderPropLooksLikeComponent(renderFn) { - const functionName = renderFn.name; - if (functionName.length === 0) { - return; +if (typeof process === "undefined" || true) { + registerStyle3("be37f31c1e", "._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}"); +} +var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; +var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; +function resolveOwnerDocument() { + return typeof document === "undefined" ? null : document; +} +function isInWordPressEnvironment() { + let topWp; + try { + topWp = window.top?.wp; + } catch { + } + const wp = topWp ?? window.wp; + return typeof wp?.components === "object" && wp.components !== null; +} +var cachedSlot = null; +function createSlot(ownerDocument2) { + const element = ownerDocument2.createElement("div"); + element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); + if (wp_compat_overlay_slot_default.slot) { + element.classList.add(wp_compat_overlay_slot_default.slot); + } + ownerDocument2.body.appendChild(element); + return element; +} +function getWpCompatOverlaySlot() { + if (typeof window === "undefined") { + return void 0; } - if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { - return; + if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { + return void 0; } - if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { - return; + const ownerDocument2 = resolveOwnerDocument(); + if (!ownerDocument2 || !ownerDocument2.body) { + return void 0; } - warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop"); -} -function renderTag(Tag, props) { - if (Tag === "button") { - return /* @__PURE__ */ (0, import_react.createElement)("button", { - type: "button", - ...props, - key: props.key - }); + if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { + return cachedSlot; } - if (Tag === "img") { - return /* @__PURE__ */ (0, import_react.createElement)("img", { - alt: "", - ...props, - key: props.key - }); + const existing = ownerDocument2.querySelector( + `[${WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` + ); + if (existing instanceof HTMLDivElement) { + cachedSlot = existing; + return existing; } - return /* @__PURE__ */ React5.createElement(Tag, props); + if (cachedSlot?.isConnected) { + cachedSlot.remove(); + } + cachedSlot = createSlot(ownerDocument2); + return cachedSlot; } -// node_modules/@base-ui/react/esm/use-render/useRender.js -function useRender(params) { - return useRenderElement(params.defaultTagName ?? "div", params, params); -} +// packages/ui/build-module/tooltip/portal.mjs +var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); +var Portal = (0, import_element14.forwardRef)( + function TooltipPortal3({ container, ...restProps }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + index_parts_exports.Portal, + { + container: container ?? getWpCompatOverlaySlot(), + ...restProps, + ref + } + ); + } +); -// packages/ui/build-module/text/text.mjs -var import_element = __toESM(require_element(), 1); -var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; -function getRuntime() { +// packages/ui/build-module/tooltip/positioner.mjs +var import_element15 = __toESM(require_element(), 1); +var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; +function getRuntime4() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -806,28 +8938,28 @@ function getRuntime() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument(document); + registerDocument4(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash(targetDocument, hash) { +function documentContainsStyleHash4(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE}]` + `style[${STYLE_HASH_ATTRIBUTE4}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { return true; } } return false; } -function injectStyle(targetDocument, hash, css) { +function injectStyle4(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime(); + const runtime = getRuntime4(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -836,24 +8968,24 @@ function injectStyle(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash(targetDocument, hash)) { + if (documentContainsStyleHash4(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument(targetDocument) { - const runtime = getRuntime(); +function registerDocument4(targetDocument) { + const runtime = getRuntime4(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle(targetDocument, hash, css); + injectStyle4(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -867,84 +8999,45 @@ function registerDocument(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle(hash, css) { - const runtime = getRuntime(); +function registerStyle4(hash, css) { + const runtime = getRuntime4(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle(targetDocument, hash, css); + injectStyle4(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle("0c8601dd83", '@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}'); + registerStyle4("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); } -var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; +var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; if (typeof process === "undefined" || true) { - registerStyle("1fb29d3a3c", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}"); + registerStyle4("4811d023d1", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}'); } -var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a" }; -var Text = (0, import_element.forwardRef)(function Text2({ variant = "body-md", render, className, ...props }, ref) { - const element = useRender({ - render, - defaultTagName: "span", - ref, - props: mergeProps(props, { - className: clsx_default( - style_default.text, - global_css_defense_default.heading, - global_css_defense_default.p, - style_default[variant], - className - ) - }) - }); - return element; -}); - -// packages/icons/build-module/icon/index.mjs -var import_element2 = __toESM(require_element(), 1); -var icon_default = (0, import_element2.forwardRef)( - ({ icon, size = 24, ...props }, ref) => { - return (0, import_element2.cloneElement)( - icon, +var style_default3 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; +var Positioner = (0, import_element15.forwardRef)( + function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)( + index_parts_exports.Positioner, { - width: size, - height: size, + ref, + align, + side, + sideOffset, ...props, - ref + className: clsx_default( + resets_default["box-sizing"], + style_default3.positioner, + className + ) } ); } ); -// packages/icons/build-module/library/chevron-left.mjs -var import_primitives = __toESM(require_primitives(), 1); -var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); -var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) }); - -// packages/icons/build-module/library/chevron-right.mjs -var import_primitives2 = __toESM(require_primitives(), 1); -var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); -var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) }); - -// packages/icons/build-module/library/more-vertical.mjs -var import_primitives3 = __toESM(require_primitives(), 1); -var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); -var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); - -// packages/icons/build-module/library/next.mjs -var import_primitives4 = __toESM(require_primitives(), 1); -var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); -var next_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" }) }); - -// packages/icons/build-module/library/previous.mjs -var import_primitives5 = __toESM(require_primitives(), 1); -var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); -var previous_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" }) }); - -// packages/ui/build-module/stack/stack.mjs -var import_element3 = __toESM(require_element(), 1); -var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; -function getRuntime2() { +// packages/ui/build-module/tooltip/popup.mjs +var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; +function getRuntime5() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -955,28 +9048,28 @@ function getRuntime2() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument2(document); + registerDocument5(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash2(targetDocument, hash) { +function documentContainsStyleHash5(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE2}]` + `style[${STYLE_HASH_ATTRIBUTE5}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { return true; } } return false; } -function injectStyle2(targetDocument, hash, css) { +function injectStyle5(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime2(); + const runtime = getRuntime5(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -985,24 +9078,24 @@ function injectStyle2(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash2(targetDocument, hash)) { + if (documentContainsStyleHash5(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument2(targetDocument) { - const runtime = getRuntime2(); +function registerDocument5(targetDocument) { + const runtime = getRuntime5(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle2(targetDocument, hash, css); + injectStyle5(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -1016,48 +9109,64 @@ function registerDocument2(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle2(hash, css) { - const runtime = getRuntime2(); +function registerStyle5(hash, css) { + const runtime = getRuntime5(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle2(targetDocument, hash, css); + injectStyle5(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle2("b51ff41489", "@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}"); + registerStyle5("4811d023d1", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}'); } -var style_default2 = { "stack": "_19ce0419607e1896__stack" }; -var gapTokens = { - xs: "var(--wpds-dimension-gap-xs, 4px)", - sm: "var(--wpds-dimension-gap-sm, 8px)", - md: "var(--wpds-dimension-gap-md, 12px)", - lg: "var(--wpds-dimension-gap-lg, 16px)", - xl: "var(--wpds-dimension-gap-xl, 24px)", - "2xl": "var(--wpds-dimension-gap-2xl, 32px)", - "3xl": "var(--wpds-dimension-gap-3xl, 40px)" -}; -var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) { - const style = { - gap: gap && gapTokens[gap], - alignItems: align, - justifyContent: justify, - flexDirection: direction, - flexWrap: wrap - }; - const element = useRender({ - render, - ref, - props: mergeProps(props, { style, className: style_default2.stack }) - }); - return element; +var style_default4 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; +var ThemeProvider = unlock(import_theme.privateApis).ThemeProvider; +var POPUP_COLOR = { background: "#1e1e1e" }; +var Popup = (0, import_element16.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { + const popupContent = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)( + index_parts_exports.Popup, + { + ref, + className: clsx_default(style_default4.popup, className), + ...props, + children + } + ) }); + const positionedPopup = renderSlotWithChildren( + positioner, + /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Positioner, {}), + popupContent + ); + return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Portal, {}), positionedPopup); }); +// packages/ui/build-module/tooltip/trigger.mjs +var import_element17 = __toESM(require_element(), 1); +var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); +var Trigger = (0, import_element17.forwardRef)( + function TooltipTrigger3(props, ref) { + return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(index_parts_exports.Trigger, { ref, ...props }); + } +); + +// packages/ui/build-module/tooltip/root.mjs +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +function Root(props) { + return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(index_parts_exports.Root, { ...props }); +} + +// packages/ui/build-module/tooltip/provider.mjs +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +function Provider({ ...props }) { + return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(index_parts_exports.Provider, { ...props }); +} + // packages/admin-ui/build-module/navigable-region/index.mjs -var import_element4 = __toESM(require_element(), 1); -var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); -var NavigableRegion = (0, import_element4.forwardRef)( +var import_element18 = __toESM(require_element(), 1); +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element18.forwardRef)( ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { - return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( Tag, { ref, @@ -1079,9 +9188,9 @@ var import_components = __toESM(require_components(), 1); var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); // packages/admin-ui/build-module/page/header.mjs -var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; -function getRuntime3() { +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; +function getRuntime6() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -1092,28 +9201,28 @@ function getRuntime3() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument3(document); + registerDocument6(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash3(targetDocument, hash) { +function documentContainsStyleHash6(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE3}]` + `style[${STYLE_HASH_ATTRIBUTE6}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { return true; } } return false; } -function injectStyle3(targetDocument, hash, css) { +function injectStyle6(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime3(); + const runtime = getRuntime6(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -1122,24 +9231,24 @@ function injectStyle3(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash3(targetDocument, hash)) { + if (documentContainsStyleHash6(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument3(targetDocument) { - const runtime = getRuntime3(); +function registerDocument6(targetDocument) { + const runtime = getRuntime6(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle3(targetDocument, hash, css); + injectStyle6(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -1153,17 +9262,17 @@ function registerDocument3(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle3(hash, css) { - const runtime = getRuntime3(); +function registerStyle6(hash, css) { + const runtime = getRuntime6(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle3(targetDocument, hash, css); + injectStyle6(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle3("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); + registerStyle6("683dd16f2c", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } -var style_default3 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; +var style_default5 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Header({ headingLevel = 1, breadcrumbs, @@ -1175,36 +9284,36 @@ function Header({ showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; - return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "column", className: style_default3.header, children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Stack, { direction: "column", className: style_default5.header, children: [ + /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)( Stack, { - className: style_default3["header-content"], + className: style_default5["header-content"], direction: "row", gap: "sm", justify: "space-between", children: [ - /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ - showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( SidebarToggleSlot, { bubblesVirtually: true, - className: style_default3["sidebar-toggle-slot"] + className: style_default5["sidebar-toggle-slot"] } ), - visual && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + visual && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( "div", { - className: style_default3["header-visual"], + className: style_default5["header-visual"], "aria-hidden": "true", children: visual } ), - title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + title && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( Text, { - className: style_default3["header-title"], - render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, {}), + className: style_default5["header-title"], + render: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(HeadingTag, {}), variant: "heading-lg", children: title } @@ -1212,11 +9321,11 @@ function Header({ breadcrumbs, badges ] }), - actions && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + actions && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( Stack, { align: "center", - className: style_default3["header-actions"], + className: style_default5["header-actions"], direction: "row", gap: "sm", children: actions @@ -1225,12 +9334,12 @@ function Header({ ] } ), - subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( + subTitle && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( Text, { - render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", {}), + render: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", {}), variant: "body-md", - className: style_default3["header-subtitle"], + className: style_default5["header-subtitle"], children: subTitle } ) @@ -1238,9 +9347,9 @@ function Header({ } // packages/admin-ui/build-module/page/index.mjs -var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); -var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; -function getRuntime4() { +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; +function getRuntime7() { const globalScope = globalThis; if (globalScope.__wpStyleRuntime) { return globalScope.__wpStyleRuntime; @@ -1251,28 +9360,28 @@ function getRuntime4() { injectedStyles: /* @__PURE__ */ new WeakMap() }; if (typeof document !== "undefined") { - registerDocument4(document); + registerDocument7(document); } return globalScope.__wpStyleRuntime; } -function documentContainsStyleHash4(targetDocument, hash) { +function documentContainsStyleHash7(targetDocument, hash) { if (!targetDocument.head) { return false; } for (const style of targetDocument.head.querySelectorAll( - `style[${STYLE_HASH_ATTRIBUTE4}]` + `style[${STYLE_HASH_ATTRIBUTE7}]` )) { - if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { + if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { return true; } } return false; } -function injectStyle4(targetDocument, hash, css) { +function injectStyle7(targetDocument, hash, css) { if (!targetDocument.head) { return; } - const runtime = getRuntime4(); + const runtime = getRuntime7(); let injectedStyles = runtime.injectedStyles.get(targetDocument); if (!injectedStyles) { injectedStyles = /* @__PURE__ */ new Set(); @@ -1281,24 +9390,24 @@ function injectStyle4(targetDocument, hash, css) { if (injectedStyles.has(hash)) { return; } - if (documentContainsStyleHash4(targetDocument, hash)) { + if (documentContainsStyleHash7(targetDocument, hash)) { injectedStyles.add(hash); return; } const style = targetDocument.createElement("style"); - style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); + style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); style.appendChild(targetDocument.createTextNode(css)); targetDocument.head.appendChild(style); injectedStyles.add(hash); } -function registerDocument4(targetDocument) { - const runtime = getRuntime4(); +function registerDocument7(targetDocument) { + const runtime = getRuntime7(); runtime.documents.set( targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1 ); for (const [hash, css] of runtime.styles) { - injectStyle4(targetDocument, hash, css); + injectStyle7(targetDocument, hash, css); } return () => { const count = runtime.documents.get(targetDocument); @@ -1312,17 +9421,17 @@ function registerDocument4(targetDocument) { runtime.documents.set(targetDocument, count - 1); }; } -function registerStyle4(hash, css) { - const runtime = getRuntime4(); +function registerStyle7(hash, css) { + const runtime = getRuntime7(); runtime.styles.set(hash, css); for (const targetDocument of runtime.documents.keys()) { - injectStyle4(targetDocument, hash, css); + injectStyle7(targetDocument, hash, css); } } if (typeof process === "undefined" || true) { - registerStyle4("aa9c241ccc", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); + registerStyle7("683dd16f2c", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); } -var style_default4 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; +var style_default6 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; function Page({ headingLevel, breadcrumbs, @@ -1337,10 +9446,10 @@ function Page({ hasPadding = false, showSidebarToggle = true }) { - const classes = clsx_default(style_default4.page, className); + const classes = clsx_default(style_default6.page, className); const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); - return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ - (title || breadcrumbs || badges || actions || visual) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ + (title || breadcrumbs || badges || actions || visual) && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( Header, { headingLevel, @@ -1353,12 +9462,12 @@ function Page({ showSidebarToggle } ), - hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( "div", { className: clsx_default( - style_default4.content, - style_default4["has-padding"] + style_default6.content, + style_default6["has-padding"] ), children } @@ -1370,18 +9479,18 @@ var page_default = Page; // routes/font-list/stage.tsx var import_i18n47 = __toESM(require_i18n()); -var import_components62 = __toESM(require_components()); +var import_components61 = __toESM(require_components()); var import_editor = __toESM(require_editor()); var import_core_data12 = __toESM(require_core_data()); var import_data13 = __toESM(require_data()); -var import_element36 = __toESM(require_element()); +var import_element51 = __toESM(require_element()); // packages/global-styles-ui/build-module/global-styles-ui.mjs -var import_components61 = __toESM(require_components(), 1); +var import_components60 = __toESM(require_components(), 1); var import_blocks5 = __toESM(require_blocks(), 1); var import_data12 = __toESM(require_data(), 1); var import_block_editor14 = __toESM(require_block_editor(), 1); -var import_element35 = __toESM(require_element(), 1); +var import_element50 = __toESM(require_element(), 1); var import_compose6 = __toESM(require_compose(), 1); // packages/global-styles-engine/build-module/utils/object.mjs @@ -1759,7 +9868,7 @@ var PRESET_METADATA = [ path: ["spacing", "spacingSizes"], valueKey: "size", cssVarInfix: "spacing", - valueFunc: ({ size }) => size, + valueFunc: ({ size: size4 }) => size4, classes: [] }, { @@ -2136,11 +10245,11 @@ var k = function(r3) { }; // packages/global-styles-ui/build-module/provider.mjs -var import_element6 = __toESM(require_element(), 1); +var import_element20 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/context.mjs -var import_element5 = __toESM(require_element(), 1); -var GlobalStylesContext = (0, import_element5.createContext)({ +var import_element19 = __toESM(require_element(), 1); +var GlobalStylesContext = (0, import_element19.createContext)({ user: { styles: {}, settings: {} }, base: { styles: {}, settings: {} }, merged: { styles: {}, settings: {} }, @@ -2150,7 +10259,7 @@ var GlobalStylesContext = (0, import_element5.createContext)({ }); // packages/global-styles-ui/build-module/provider.mjs -var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); function GlobalStylesProvider({ children, value, @@ -2158,10 +10267,10 @@ function GlobalStylesProvider({ onChange, fontLibraryEnabled }) { - const merged = (0, import_element6.useMemo)(() => { + const merged = (0, import_element20.useMemo)(() => { return mergeGlobalStyles(baseValue, value); }, [baseValue, value]); - const contextValue = (0, import_element6.useMemo)( + const contextValue = (0, import_element20.useMemo)( () => ({ user: value, base: baseValue, @@ -2171,7 +10280,7 @@ function GlobalStylesProvider({ }), [value, baseValue, merged, onChange, fontLibraryEnabled] ); - return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(GlobalStylesContext.Provider, { value: contextValue, children }); + return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GlobalStylesContext.Provider, { value: contextValue, children }); } // packages/global-styles-ui/build-module/screen-root.mjs @@ -2181,12 +10290,12 @@ var import_data2 = __toESM(require_data(), 1); var import_core_data2 = __toESM(require_core_data(), 1); // packages/global-styles-ui/build-module/icon-with-current-color.mjs -var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); function IconWithCurrentColor({ className, ...props }) { - return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( icon_default, { className: clsx_default( @@ -2200,22 +10309,22 @@ function IconWithCurrentColor({ // packages/global-styles-ui/build-module/navigation-button.mjs var import_components2 = __toESM(require_components(), 1); -var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); function GenericNavigationButton({ icon, children, ...props }) { - return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_components2.__experimentalItem, { ...props, children: [ - icon && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_components2.__experimentalHStack, { justify: "flex-start", children: [ - /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(IconWithCurrentColor, { icon, size: 24 }), - /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components2.FlexItem, { children }) + return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_components2.__experimentalItem, { ...props, children: [ + icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_components2.__experimentalHStack, { justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(IconWithCurrentColor, { icon, size: 24 }), + /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components2.FlexItem, { children }) ] }), !icon && children ] }); } function NavigationButtonAsItem(props) { - return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components2.Navigator.Button, { as: GenericNavigationButton, ...props }); + return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components2.Navigator.Button, { as: GenericNavigationButton, ...props }); } // packages/global-styles-ui/build-module/root-menu.mjs @@ -2246,7 +10355,7 @@ function a11y_default(o3) { } // packages/global-styles-ui/build-module/hooks.mjs -var import_element7 = __toESM(require_element(), 1); +var import_element21 = __toESM(require_element(), 1); var import_data = __toESM(require_data(), 1); var import_core_data = __toESM(require_core_data(), 1); var import_i18n2 = __toESM(require_i18n(), 1); @@ -2370,7 +10479,7 @@ function getFontFamilies(themeJson) { // packages/global-styles-ui/build-module/hooks.mjs k([a11y_default]); function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true, state) { - const { user, base, merged, onChange } = (0, import_element7.useContext)(GlobalStylesContext); + const { user, base, merged, onChange } = (0, import_element21.useContext)(GlobalStylesContext); const statePathParts = state?.split(".").filter(Boolean) ?? []; const pseudoSelectorState = statePathParts.find( (value) => value.startsWith(":") @@ -2383,7 +10492,7 @@ function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = tru } else if (readFrom === "user") { sourceValue = user; } - const styleValue = (0, import_element7.useMemo)(() => { + const styleValue = (0, import_element21.useMemo)(() => { const rawValue = getStyle( sourceValue, stylePath, @@ -2401,7 +10510,7 @@ function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = tru shouldDecodeEncode, pseudoSelectorState ]); - const setStyleValue = (0, import_element7.useCallback)( + const setStyleValue = (0, import_element21.useCallback)( (newValue) => { let valueToSet = newValue; if (pseudoSelectorState) { @@ -2429,18 +10538,18 @@ function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = tru return [styleValue, setStyleValue]; } function useSetting(path, blockName, readFrom = "merged") { - const { user, base, merged, onChange } = (0, import_element7.useContext)(GlobalStylesContext); + const { user, base, merged, onChange } = (0, import_element21.useContext)(GlobalStylesContext); let sourceValue = merged; if (readFrom === "base") { sourceValue = base; } else if (readFrom === "user") { sourceValue = user; } - const settingValue = (0, import_element7.useMemo)( + const settingValue = (0, import_element21.useMemo)( () => getSetting(sourceValue, path, blockName), [sourceValue, path, blockName] ); - const setSettingValue = (0, import_element7.useCallback)( + const setSettingValue = (0, import_element21.useCallback)( (newValue) => { const newGlobalStyles = setSetting( user, @@ -2471,8 +10580,8 @@ function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) { variationsFromTheme: _variationsFromTheme || EMPTY_ARRAY2 }; }, []); - const { user: userVariation } = (0, import_element7.useContext)(GlobalStylesContext); - return (0, import_element7.useMemo)(() => { + const { user: userVariation } = (0, import_element21.useContext)(GlobalStylesContext); + return (0, import_element21.useMemo)(() => { const clonedUserVariation = structuredClone(userVariation); const userVariationWithoutProperties = removePropertiesFromObject( clonedUserVariation, @@ -2496,21 +10605,21 @@ function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) { } // packages/global-styles-ui/build-module/lock-unlock.mjs -var import_private_apis = __toESM(require_private_apis(), 1); -var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( +var import_private_apis2 = __toESM(require_private_apis(), 1); +var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/global-styles-ui" ); // packages/global-styles-ui/build-module/root-menu.mjs -var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); var { useHasDimensionsPanel, useHasTypographyPanel, useHasColorPanel, useSettingsForBlockElement, useHasBackgroundPanel -} = unlock(import_block_editor.privateApis); +} = unlock2(import_block_editor.privateApis); // packages/global-styles-ui/build-module/preview-styles.mjs var import_components7 = __toESM(require_components(), 1); @@ -2549,7 +10658,7 @@ function useStylesPreviewColors() { } // packages/global-styles-ui/build-module/typography-example.mjs -var import_element8 = __toESM(require_element(), 1); +var import_element22 = __toESM(require_element(), 1); var import_components4 = __toESM(require_components(), 1); var import_i18n4 = __toESM(require_i18n(), 1); @@ -2641,12 +10750,12 @@ function getFacePreviewStyle(face) { } // packages/global-styles-ui/build-module/typography-example.mjs -var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); function PreviewTypography({ fontSize, variation }) { - const { base } = (0, import_element8.useContext)(GlobalStylesContext); + const { base } = (0, import_element22.useContext)(GlobalStylesContext); let config = base; if (variation) { config = { ...base, ...variation }; @@ -2663,7 +10772,7 @@ function PreviewTypography({ bodyPreviewStyle.fontSize = fontSize; headingPreviewStyle.fontSize = fontSize; } - return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)( import_components4.__unstableMotion.div, { animate: { @@ -2683,8 +10792,8 @@ function PreviewTypography({ lineHeight: 1 }, children: [ - /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n4._x)("A", "Uppercase letter A") }), - /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n4._x)("a", "Lowercase letter A") }) + /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n4._x)("A", "Uppercase letter A") }), + /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n4._x)("a", "Lowercase letter A") }) ] } ); @@ -2692,14 +10801,14 @@ function PreviewTypography({ // packages/global-styles-ui/build-module/highlighted-colors.mjs var import_components5 = __toESM(require_components(), 1); -var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); function HighlightedColors({ normalizedColorSwatchSize, ratio }) { const { highlightedColors } = useStylesPreviewColors(); const scaledSwatchSize = normalizedColorSwatchSize * ratio; - return highlightedColors.map(({ slug, color }, index) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( + return highlightedColors.map(({ slug, color }, index2) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( import_components5.__unstableMotion.div, { style: { @@ -2717,18 +10826,18 @@ function HighlightedColors({ opacity: 0 }, transition: { - delay: index === 1 ? 0.2 : 0.1 + delay: index2 === 1 ? 0.2 : 0.1 } }, - `${slug}-${index}` + `${slug}-${index2}` )); } // packages/global-styles-ui/build-module/preview-wrapper.mjs var import_components6 = __toESM(require_components(), 1); var import_compose = __toESM(require_compose(), 1); -var import_element9 = __toESM(require_element(), 1); -var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); +var import_element23 = __toESM(require_element(), 1); +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); var normalizedWidth = 248; var normalizedHeight = 152; var THROTTLE_OPTIONS = { @@ -2744,21 +10853,21 @@ function PreviewWrapper({ const [backgroundColor = "white"] = useStyle("color.background"); const [gradientValue] = useStyle("color.gradient"); const disableMotion = (0, import_compose.useReducedMotion)(); - const [isHovered, setIsHovered] = (0, import_element9.useState)(false); + const [isHovered, setIsHovered] = (0, import_element23.useState)(false); const [containerResizeListener, { width }] = (0, import_compose.useResizeObserver)(); - const [throttledWidth, setThrottledWidthState] = (0, import_element9.useState)(width); - const [ratioState, setRatioState] = (0, import_element9.useState)(); + const [throttledWidth, setThrottledWidthState] = (0, import_element23.useState)(width); + const [ratioState, setRatioState] = (0, import_element23.useState)(); const setThrottledWidth = (0, import_compose.useThrottle)( setThrottledWidthState, 250, THROTTLE_OPTIONS ); - (0, import_element9.useLayoutEffect)(() => { + (0, import_element23.useLayoutEffect)(() => { if (width) { setThrottledWidth(width); } }, [width, setThrottledWidth]); - (0, import_element9.useLayoutEffect)(() => { + (0, import_element23.useLayoutEffect)(() => { const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1; const ratioDiff = newRatio - (ratioState || 0); const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1; @@ -2769,9 +10878,9 @@ function PreviewWrapper({ const fallbackRatio = width ? width / normalizedWidth : 1; const ratio = ratioState ? ratioState : fallbackRatio; const isReady = !!width; - return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { position: "relative" }, children: containerResizeListener }), - isReady && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { style: { position: "relative" }, children: containerResizeListener }), + isReady && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( "div", { className: clsx_default("global-styles-ui-preview__wrapper", { @@ -2783,7 +10892,7 @@ function PreviewWrapper({ onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), tabIndex: -1, - children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( import_components6.__unstableMotion.div, { style: { @@ -2805,7 +10914,7 @@ function PreviewWrapper({ var preview_wrapper_default = PreviewWrapper; // packages/global-styles-ui/build-module/preview-styles.mjs -var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); var firstFrameVariants = { start: { scale: 1, @@ -2855,14 +10964,14 @@ function PreviewStyles({ "elements.h1.color.text" ); const { paletteColors } = useStylesPreviewColors(); - return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)( preview_wrapper_default, { label, isFocused, withHoverView, children: [ - ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( import_components7.__unstableMotion.div, { variants: firstFrameVariants, @@ -2870,7 +10979,7 @@ function PreviewStyles({ height: "100%", overflow: "hidden" }, - children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)( + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)( import_components7.__experimentalHStack, { spacing: 10 * ratio, @@ -2880,14 +10989,14 @@ function PreviewStyles({ overflow: "hidden" }, children: [ - /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( PreviewTypography, { fontSize: 65 * ratio, variation } ), - /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_components7.__experimentalVStack, { spacing: 4 * ratio, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_components7.__experimentalVStack, { spacing: 4 * ratio, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( HighlightedColors, { normalizedColorSwatchSize: 32, @@ -2900,7 +11009,7 @@ function PreviewStyles({ }, key ), - ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( import_components7.__unstableMotion.div, { variants: withHoverView ? midFrameVariants : void 0, @@ -2913,7 +11022,7 @@ function PreviewStyles({ filter: "blur(60px)", opacity: 0.1 }, - children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( import_components7.__experimentalHStack, { spacing: 0, @@ -2922,7 +11031,7 @@ function PreviewStyles({ height: "100%", overflow: "hidden" }, - children: paletteColors.slice(0, 4).map(({ color }, index) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + children: paletteColors.slice(0, 4).map(({ color }, index2) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( "div", { style: { @@ -2931,14 +11040,14 @@ function PreviewStyles({ flexGrow: 1 } }, - index + index2 )) } ) }, key ), - ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( import_components7.__unstableMotion.div, { variants: secondFrameVariants, @@ -2949,7 +11058,7 @@ function PreviewStyles({ position: "absolute", top: 0 }, - children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( import_components7.__experimentalVStack, { spacing: 3 * ratio, @@ -2960,7 +11069,7 @@ function PreviewStyles({ padding: 10 * ratio, boxSizing: "border-box" }, - children: label && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( + children: label && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( "div", { style: { @@ -2986,14 +11095,14 @@ function PreviewStyles({ var preview_styles_default = PreviewStyles; // packages/global-styles-ui/build-module/screen-root.mjs -var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-block-list.mjs var import_blocks2 = __toESM(require_blocks(), 1); var import_i18n7 = __toESM(require_i18n(), 1); var import_components11 = __toESM(require_components(), 1); var import_data4 = __toESM(require_data(), 1); -var import_element10 = __toESM(require_element(), 1); +var import_element24 = __toESM(require_element(), 1); var import_block_editor3 = __toESM(require_block_editor(), 1); var import_compose2 = __toESM(require_compose(), 1); import { speak } from "@wordpress/a11y"; @@ -3002,7 +11111,7 @@ import { speak } from "@wordpress/a11y"; var import_blocks = __toESM(require_blocks(), 1); var import_data3 = __toESM(require_data(), 1); var import_components9 = __toESM(require_components(), 1); -var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); function getFilteredBlockStyles(blockStyles, variations) { return blockStyles?.filter( (style) => style.source === "block" || variations.includes(style.name) @@ -3025,18 +11134,18 @@ function useBlockVariations(name2) { var import_components10 = __toESM(require_components(), 1); var import_i18n6 = __toESM(require_i18n(), 1); var import_block_editor2 = __toESM(require_block_editor(), 1); -var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); -var { StateControl, StateControlBadges } = unlock(import_block_editor2.privateApis); +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +var { StateControl, StateControlBadges } = unlock2(import_block_editor2.privateApis); // packages/global-styles-ui/build-module/screen-block-list.mjs -var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); var { useHasDimensionsPanel: useHasDimensionsPanel2, useHasTypographyPanel: useHasTypographyPanel2, useHasBorderPanel, useSettingsForBlockElement: useSettingsForBlockElement2, useHasColorPanel: useHasColorPanel2 -} = unlock(import_block_editor3.privateApis); +} = unlock2(import_block_editor3.privateApis); function useSortedBlockTypes() { const blockItems = (0, import_data4.useSelect)( (select) => select(import_blocks2.store).getBlockTypes(), @@ -3071,13 +11180,13 @@ function BlockMenuItem({ block }) { if (!hasBlockMenuItem) { return null; } - return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( NavigationButtonAsItem, { path: "/blocks/" + encodeURIComponent(block.name), - children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_components11.__experimentalHStack, { justify: "flex-start", children: [ - /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_block_editor3.BlockIcon, { icon: block.icon }), - /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components11.FlexItem, { children: block.title }) + children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components11.__experimentalHStack, { justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_block_editor3.BlockIcon, { icon: block.icon }), + /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components11.FlexItem, { children: block.title }) ] }) } ); @@ -3089,8 +11198,8 @@ function BlockList({ filterValue }) { const filteredBlockTypes = !filterValue ? sortedBlockTypes : sortedBlockTypes.filter( (blockType) => isMatchingSearchTerm(blockType, filterValue) ); - const blockTypesListRef = (0, import_element10.useRef)(null); - (0, import_element10.useEffect)(() => { + const blockTypesListRef = (0, import_element24.useRef)(null); + (0, import_element24.useEffect)(() => { if (!filterValue) { return; } @@ -3102,13 +11211,13 @@ function BlockList({ filterValue }) { ); debouncedSpeak(resultsFoundMessage, "polite"); }, [filterValue, debouncedSpeak]); - return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( "div", { ref: blockTypesListRef, className: "global-styles-ui-block-types-item-list", role: "list", - children: filteredBlockTypes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components11.__experimentalText, { align: "center", as: "p", children: (0, import_i18n7.__)("No blocks found.") }) : filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( + children: filteredBlockTypes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components11.__experimentalText, { align: "center", as: "p", children: (0, import_i18n7.__)("No blocks found.") }) : filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( BlockMenuItem, { block @@ -3118,12 +11227,12 @@ function BlockList({ filterValue }) { } ); } -var MemoizedBlockList = (0, import_element10.memo)(BlockList); +var MemoizedBlockList = (0, import_element24.memo)(BlockList); // packages/global-styles-ui/build-module/screen-block.mjs var import_blocks4 = __toESM(require_blocks(), 1); var import_block_editor5 = __toESM(require_block_editor(), 1); -var import_element12 = __toESM(require_element(), 1); +var import_element26 = __toESM(require_element(), 1); var import_data5 = __toESM(require_data(), 1); var import_core_data3 = __toESM(require_core_data(), 1); var import_components14 = __toESM(require_components(), 1); @@ -3133,18 +11242,18 @@ var import_i18n8 = __toESM(require_i18n(), 1); var import_block_editor4 = __toESM(require_block_editor(), 1); var import_blocks3 = __toESM(require_blocks(), 1); var import_components12 = __toESM(require_components(), 1); -var import_element11 = __toESM(require_element(), 1); -var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var import_element25 = __toESM(require_element(), 1); +var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/subtitle.mjs var import_components13 = __toESM(require_components(), 1); -var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); function Subtitle({ children, level = 2 }) { - return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_components13.__experimentalHeading, { className: "global-styles-ui-subtitle", level, children }); + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components13.__experimentalHeading, { className: "global-styles-ui-subtitle", level, children }); } // packages/global-styles-ui/build-module/screen-block.mjs -var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); var { useHasDimensionsPanel: useHasDimensionsPanel3, useHasTypographyPanel: useHasTypographyPanel3, @@ -3162,40 +11271,40 @@ var { FiltersPanel: StylesFiltersPanel, ImageSettingsPanel, AdvancedPanel: StylesAdvancedPanel -} = unlock(import_block_editor5.privateApis); +} = unlock2(import_block_editor5.privateApis); // packages/global-styles-ui/build-module/screen-typography.mjs var import_i18n22 = __toESM(require_i18n(), 1); -var import_components34 = __toESM(require_components(), 1); -var import_element23 = __toESM(require_element(), 1); +var import_components33 = __toESM(require_components(), 1); +var import_element38 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-body.mjs var import_components15 = __toESM(require_components(), 1); -var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/typography-elements.mjs var import_i18n9 = __toESM(require_i18n(), 1); var import_components16 = __toESM(require_components(), 1); -var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/variations/variations-typography.mjs -var import_components19 = __toESM(require_components(), 1); +var import_components18 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/preview-typography.mjs var import_components17 = __toESM(require_components(), 1); -var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); var StylesPreviewTypography = ({ variation, isFocused, withHoverView }) => { - return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( preview_wrapper_default, { label: variation.title, isFocused, withHoverView, - children: ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + children: ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( import_components17.__experimentalHStack, { spacing: 10 * ratio, @@ -3204,7 +11313,7 @@ var StylesPreviewTypography = ({ height: "100%", overflow: "hidden" }, - children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( PreviewTypography, { variation, @@ -3220,11 +11329,10 @@ var StylesPreviewTypography = ({ var preview_typography_default = StylesPreviewTypography; // packages/global-styles-ui/build-module/variations/variation.mjs -var import_components18 = __toESM(require_components(), 1); -var import_element13 = __toESM(require_element(), 1); +var import_element27 = __toESM(require_element(), 1); var import_keycodes = __toESM(require_keycodes(), 1); var import_i18n10 = __toESM(require_i18n(), 1); -var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); function Variation({ variation, children, @@ -3232,13 +11340,13 @@ function Variation({ properties, showTooltip = false }) { - const [isFocused, setIsFocused] = (0, import_element13.useState)(false); + const [isFocused, setIsFocused] = (0, import_element27.useState)(false); const { base, user, onChange: setUserConfig - } = (0, import_element13.useContext)(GlobalStylesContext); - const context = (0, import_element13.useMemo)(() => { + } = (0, import_element27.useContext)(GlobalStylesContext); + const context = (0, import_element27.useMemo)(() => { let merged = mergeGlobalStyles(base, variation); if (properties) { merged = filterObjectByProperties(merged, properties); @@ -3258,7 +11366,7 @@ function Variation({ selectVariation(); } }; - const isActive = (0, import_element13.useMemo)( + const isActive = (0, import_element27.useMemo)( () => areGlobalStylesEqual(user, variation), [user, variation] ); @@ -3271,7 +11379,7 @@ function Variation({ variation?.description ); } - const content = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + const content = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( "div", { className: clsx_default("global-styles-ui-variations_item", { @@ -3285,7 +11393,7 @@ function Variation({ "aria-current": isActive, onFocus: () => setIsFocused(true), onBlur: () => setIsFocused(false), - children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( "div", { className: clsx_default("global-styles-ui-variations_item-preview", { @@ -3296,11 +11404,14 @@ function Variation({ ) } ); - return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(GlobalStylesContext.Provider, { value: context, children: showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components18.Tooltip, { text: variation?.title, children: content }) : content }); + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(GlobalStylesContext.Provider, { value: context, children: showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(tooltip_exports.Root, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(tooltip_exports.Trigger, { render: content }), + /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(tooltip_exports.Popup, { children: variation?.title }) + ] }) : content }); } // packages/global-styles-ui/build-module/variations/variations-typography.mjs -var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); var propertiesToFilter = ["typography"]; function TypographyVariations({ title, @@ -3310,30 +11421,30 @@ function TypographyVariations({ if (typographyVariations?.length <= 1) { return null; } - return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_components19.__experimentalVStack, { spacing: 3, children: [ - title && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Subtitle, { level: 3, children: title }), - /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( - import_components19.__experimentalGrid, + return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_components18.__experimentalVStack, { spacing: 3, children: [ + title && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Subtitle, { level: 3, children: title }), + /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( + import_components18.__experimentalGrid, { columns: 3, gap, className: "global-styles-ui-style-variations-container", children: typographyVariations.map( - (variation, index) => { - return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( + (variation, index2) => { + return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( Variation, { variation, properties: propertiesToFilter, showTooltip: true, - children: () => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( + children: () => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( preview_typography_default, { variation } ) }, - index + index2 ); } ) @@ -3344,11 +11455,11 @@ function TypographyVariations({ // packages/global-styles-ui/build-module/font-families.mjs var import_i18n20 = __toESM(require_i18n(), 1); -var import_components32 = __toESM(require_components(), 1); -var import_element22 = __toESM(require_element(), 1); +var import_components31 = __toESM(require_components(), 1); +var import_element37 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-library/context.mjs -var import_element14 = __toESM(require_element(), 1); +var import_element28 = __toESM(require_element(), 1); var import_data6 = __toESM(require_data(), 1); var import_core_data5 = __toESM(require_core_data(), 1); var import_i18n12 = __toESM(require_i18n(), 1); @@ -3397,7 +11508,7 @@ async function fetchInstallFontFace(fontFamilyId, data, registry) { } // packages/global-styles-ui/build-module/font-library/utils/index.mjs -var import_components20 = __toESM(require_components(), 1); +var import_components19 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/font-library/utils/constants.mjs var import_i18n11 = __toESM(require_i18n(), 1); @@ -3420,7 +11531,7 @@ var FONT_STYLES = { // packages/global-styles-ui/build-module/font-library/utils/index.mjs var { File } = window; -var { kebabCase } = unlock(import_components20.privateApis); +var { kebabCase } = unlock2(import_components19.privateApis); function setUIValuesNeeded(font2, extraValues = {}) { if (!font2.name && (font2.fontFamily || font2.slug)) { font2.name = font2.fontFamily || font2.slug; @@ -3597,13 +11708,13 @@ async function batchInstallFontFaces(fontFamilyId, fontFacesData, registry) { errors: [], successes: [] }; - responses.forEach((result, index) => { + responses.forEach((result, index2) => { if (result.status === "fulfilled" && result.value) { const response = result.value; results.successes.push(response); } else if (result.reason) { results.errors.push({ - data: fontFacesData[index], + data: fontFacesData[index2], message: result.reason.message }); } @@ -3694,8 +11805,8 @@ function toggleFont(font2, face, initialfonts = []) { } // packages/global-styles-ui/build-module/font-library/context.mjs -var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); -var FontLibraryContext = (0, import_element14.createContext)( +var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); +var FontLibraryContext = (0, import_element28.createContext)( {} ); FontLibraryContext.displayName = "FontLibraryContext"; @@ -3711,7 +11822,7 @@ function FontLibraryProvider({ children }) { "globalStyles", globalStylesId ); - const [isInstalling, setIsInstalling] = (0, import_element14.useState)(false); + const [isInstalling, setIsInstalling] = (0, import_element28.useState)(false); const { records: libraryPosts = [], isResolving: isResolvingLibrary } = (0, import_core_data5.useEntityRecords)( "postType", "wp_font_family", @@ -3741,12 +11852,12 @@ function FontLibraryProvider({ children }) { ); await saveEntityRecord("root", "globalStyles", finalGlobalStyles); }; - const [modalTabOpen, setModalTabOpen] = (0, import_element14.useState)(""); - const [libraryFontSelected, setLibraryFontSelected] = (0, import_element14.useState)(void 0); + const [modalTabOpen, setModalTabOpen] = (0, import_element28.useState)(""); + const [libraryFontSelected, setLibraryFontSelected] = (0, import_element28.useState)(void 0); const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : []; const customFonts = fontFamilies?.custom ? fontFamilies.custom.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : []; const baseCustomFonts = libraryFonts ? libraryFonts.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : []; - (0, import_element14.useEffect)(() => { + (0, import_element28.useEffect)(() => { if (!modalTabOpen) { setLibraryFontSelected(void 0); } @@ -3763,7 +11874,7 @@ function FontLibraryProvider({ children }) { source: font2.source }); }; - const [loadedFontUrls] = (0, import_element14.useState)(/* @__PURE__ */ new Set()); + const [loadedFontUrls] = (0, import_element28.useState)(/* @__PURE__ */ new Set()); const getAvailableFontsOutline = (availableFontFamilies) => { const outline = availableFontFamilies.reduce( (acc, font2) => { @@ -4006,7 +12117,7 @@ function FontLibraryProvider({ children }) { loadFontFaceInBrowser(fontFace, src, "document"); loadedFontUrls.add(src); }; - return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( FontLibraryContext.Provider, { value: { @@ -4035,25 +12146,26 @@ var context_default = FontLibraryProvider; // packages/global-styles-ui/build-module/font-library/modal.mjs var import_i18n18 = __toESM(require_i18n(), 1); -var import_components30 = __toESM(require_components(), 1); +var import_components29 = __toESM(require_components(), 1); var import_core_data8 = __toESM(require_core_data(), 1); var import_data8 = __toESM(require_data(), 1); // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs -var import_components24 = __toESM(require_components(), 1); +var import_components23 = __toESM(require_components(), 1); var import_core_data6 = __toESM(require_core_data(), 1); var import_data7 = __toESM(require_data(), 1); -var import_element17 = __toESM(require_element(), 1); +var import_element32 = __toESM(require_element(), 1); var import_i18n14 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/font-library/font-card.mjs var import_i18n13 = __toESM(require_i18n(), 1); -var import_components22 = __toESM(require_components(), 1); +var import_element30 = __toESM(require_element(), 1); +var import_components21 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/font-library/font-demo.mjs -var import_components21 = __toESM(require_components(), 1); -var import_element15 = __toESM(require_element(), 1); -var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); +var import_components20 = __toESM(require_components(), 1); +var import_element29 = __toESM(require_element(), 1); +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); function getPreviewUrl(fontFace) { if (fontFace.preview) { return fontFace.preview; @@ -4079,14 +12191,14 @@ function getDisplayFontFace(font2) { }; } function FontDemo({ font: font2, text }) { - const ref = (0, import_element15.useRef)(null); + const ref = (0, import_element29.useRef)(null); const fontFace = getDisplayFontFace(font2); const style = getFamilyPreviewStyle(font2); text = text || ("name" in font2 ? font2.name : ""); const customPreviewUrl = font2.preview; - const [isIntersecting, setIsIntersecting] = (0, import_element15.useState)(false); - const [isAssetLoaded, setIsAssetLoaded] = (0, import_element15.useState)(false); - const { loadFontFaceAsset } = (0, import_element15.useContext)(FontLibraryContext); + const [isIntersecting, setIsIntersecting] = (0, import_element29.useState)(false); + const [isAssetLoaded, setIsAssetLoaded] = (0, import_element29.useState)(false); + const { loadFontFaceAsset } = (0, import_element29.useContext)(FontLibraryContext); const previewUrl = customPreviewUrl ?? getPreviewUrl(fontFace); const isPreviewImage = previewUrl && previewUrl.match(/\.(png|jpg|jpeg|gif|svg)$/i); const faceStyles = getFacePreviewStyle(fontFace); @@ -4097,7 +12209,7 @@ function FontDemo({ font: font2, text }) { ...style, ...faceStyles }; - (0, import_element15.useEffect)(() => { + (0, import_element29.useEffect)(() => { const observer = new window.IntersectionObserver(([entry]) => { setIsIntersecting(entry.isIntersecting); }, {}); @@ -4106,7 +12218,7 @@ function FontDemo({ font: font2, text }) { } return () => observer.disconnect(); }, [ref]); - (0, import_element15.useEffect)(() => { + (0, import_element29.useEffect)(() => { const loadAsset = async () => { if (isIntersecting) { if (!isPreviewImage && fontFace.src) { @@ -4117,7 +12229,7 @@ function FontDemo({ font: font2, text }) { }; loadAsset(); }, [fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage]); - return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { ref, children: isPreviewImage ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { ref, children: isPreviewImage ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( "img", { src: previewUrl, @@ -4125,8 +12237,8 @@ function FontDemo({ font: font2, text }) { alt: text, className: "font-library__font-variant_demo-image" } - ) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( - import_components21.__experimentalText, + ) : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( + import_components20.__experimentalText, { style: textDemoStyle, className: "font-library__font-variant_demo-text", @@ -4137,34 +12249,42 @@ function FontDemo({ font: font2, text }) { var font_demo_default = FontDemo; // packages/global-styles-ui/build-module/font-library/font-card.mjs -var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); function FontCard({ font: font2, onClick, variantsText, - navigatorPath + navigatorPath, + shouldFocus }) { const variantsCount = font2.fontFace?.length || 1; const style = { cursor: !!onClick ? "pointer" : "default" }; - const navigator = (0, import_components22.useNavigator)(); - return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( - import_components22.Button, + const navigator2 = (0, import_components21.useNavigator)(); + const ref = (0, import_element30.useRef)(null); + (0, import_element30.useEffect)(() => { + if (shouldFocus) { + ref.current?.focus(); + } + }, [shouldFocus]); + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + import_components21.Button, { + ref, __next40pxDefaultSize: true, onClick: () => { onClick(); if (navigatorPath) { - navigator.goTo(navigatorPath); + navigator2.goTo(navigatorPath); } }, style, className: "font-library__font-card", - children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_components22.Flex, { justify: "space-between", wrap: false, children: [ - /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(font_demo_default, { font: font2 }), - /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_components22.Flex, { justify: "flex-end", children: [ - /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.__experimentalText, { className: "font-library__font-card__count", children: variantsText || (0, import_i18n13.sprintf)( + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_components21.Flex, { justify: "space-between", wrap: false, children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(font_demo_default, { font: font2 }), + /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_components21.Flex, { justify: "flex-end", children: [ + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components21.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components21.__experimentalText, { className: "font-library__font-card__count", children: variantsText || (0, import_i18n13.sprintf)( /* translators: %d: Number of font variants. */ (0, import_i18n13._n)( "%d variant", @@ -4173,7 +12293,7 @@ function FontCard({ ), variantsCount ) }) }), - /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(icon_default, { icon: (0, import_i18n13.isRTL)() ? chevron_left_default : chevron_right_default }) }) + /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components21.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(icon_default, { icon: (0, import_i18n13.isRTL)() ? chevron_left_default : chevron_right_default }) }) ] }) ] }) } @@ -4182,14 +12302,14 @@ function FontCard({ var font_card_default = FontCard; // packages/global-styles-ui/build-module/font-library/library-font-variant.mjs -var import_element16 = __toESM(require_element(), 1); -var import_components23 = __toESM(require_components(), 1); -var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); +var import_element31 = __toESM(require_element(), 1); +var import_components22 = __toESM(require_components(), 1); +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); function LibraryFontVariant({ face, font: font2 }) { - const { isFontActivated, toggleActivateFont } = (0, import_element16.useContext)(FontLibraryContext); + const { isFontActivated, toggleActivateFont } = (0, import_element31.useContext)(FontLibraryContext); const isInstalled = (font2?.fontFace?.length ?? 0) > 0 ? isFontActivated( font2.slug, face.fontStyle, @@ -4204,17 +12324,17 @@ function LibraryFontVariant({ toggleActivateFont(font2); }; const displayName = font2.name + " " + getFontFaceVariantName(face); - const checkboxId = (0, import_element16.useId)(); - return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_components23.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [ - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( - import_components23.CheckboxControl, + const checkboxId = (0, import_element31.useId)(); + return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_components22.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [ + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( + import_components22.CheckboxControl, { checked: isInstalled, onChange: handleToggleActivation, id: checkboxId } ), - /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( font_demo_default, { font: face, @@ -4260,7 +12380,22 @@ function sortFontFaces(faces) { } // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs -var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +function getFontFamiliesKey(fontFamilies) { + if (!fontFamilies) { + return ""; + } + const normalized = {}; + for (const source of Object.keys(fontFamilies).sort()) { + normalized[source] = (fontFamilies[source] ?? []).map((family) => ({ + slug: family.slug, + fontFace: (family.fontFace ?? []).map( + (face) => `${face.fontStyle}-${face.fontWeight}` + ).sort() + })).sort((a2, b2) => a2.slug.localeCompare(b2.slug)); + } + return JSON.stringify(normalized); +} function InstalledFonts() { const { baseCustomFonts, @@ -4271,10 +12406,11 @@ function InstalledFonts() { isInstalling, saveFontFamilies, getFontFacesActivated - } = (0, import_element17.useContext)(FontLibraryContext); + } = (0, import_element32.useContext)(FontLibraryContext); const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies"); - const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, import_element17.useState)(false); - const [notice, setNotice] = (0, import_element17.useState)(null); + const [lastSelectedFontSlug, setLastSelectedFontSlug] = (0, import_element32.useState)(void 0); + const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, import_element32.useState)(false); + const [notice, setNotice] = (0, import_element32.useState)(null); const [baseFontFamilies] = useSetting("typography.fontFamilies", void 0, "base"); const globalStylesId = (0, import_data7.useSelect)((select) => { const { __experimentalGetCurrentGlobalStylesId } = select(import_core_data6.store); @@ -4285,7 +12421,14 @@ function InstalledFonts() { "globalStyles", globalStylesId ); - const fontFamiliesHasChanges = !!globalStyles?.edits?.settings?.typography?.fontFamilies; + const editedFontFamilies = globalStyles?.edits?.settings?.typography?.fontFamilies; + const savedFontFamilies = globalStyles?.record?.settings?.typography?.fontFamilies; + const fontFamiliesHasChanges = (0, import_element32.useMemo)(() => { + if (editedFontFamilies === void 0) { + return false; + } + return getFontFamiliesKey(editedFontFamilies) !== getFontFamiliesKey(savedFontFamilies); + }, [editedFontFamilies, savedFontFamilies]); const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : []; const themeFontsSlugs = new Set(themeFonts.map((f2) => f2.slug)); const baseThemeFonts = baseFontFamilies?.theme ? themeFonts.concat( @@ -4354,7 +12497,7 @@ function InstalledFonts() { variantsInstalled ); }; - (0, import_element17.useEffect)(() => { + (0, import_element32.useEffect)(() => { handleSetLibraryFontSelected(libraryFontSelected); }, []); const activeFontsCount = libraryFontSelected ? getFontFacesActivated( @@ -4392,40 +12535,40 @@ function InstalledFonts() { } }; const hasFonts = baseThemeFonts.length > 0 || baseCustomFonts.length > 0; - return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ - isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.ProgressBar, {}) }), - !isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)( - import_components24.Navigator, + return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ + isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.ProgressBar, {}) }), + !isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)( + import_components23.Navigator, { initialPath: libraryFontSelected ? "/fontFamily" : "/", children: [ - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.Navigator.Screen, { path: "/", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { spacing: "8", children: [ - notice && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( - import_components24.Notice, + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.Navigator.Screen, { path: "/", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_components23.__experimentalVStack, { spacing: "8", children: [ + notice && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components23.Notice, { status: notice.type, onRemove: () => setNotice(null), children: notice.message } ), - !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalText, { as: "p", children: (0, import_i18n14.__)("No fonts installed.") }), - baseThemeFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", { + !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.__experimentalText, { as: "p", children: (0, import_i18n14.__)("No fonts installed.") }), + baseThemeFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_components23.__experimentalVStack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h2", { className: "font-library__fonts-title", /* translators: Heading for a list of fonts provided by the theme. */ children: (0, import_i18n14._x)("Theme", "font source") }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( "ul", { role: "list", className: "font-library__fonts-list", - children: baseThemeFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + children: baseThemeFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( "li", { className: "font-library__fonts-list-item", - children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( font_card_default, { font: font2, @@ -4433,6 +12576,7 @@ function InstalledFonts() { variantsText: getFontCardVariantsText( font2 ), + shouldFocus: font2.slug === lastSelectedFontSlug, onClick: () => { setNotice(null); handleSetLibraryFontSelected( @@ -4447,22 +12591,22 @@ function InstalledFonts() { } ) ] }), - baseCustomFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", { + baseCustomFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_components23.__experimentalVStack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h2", { className: "font-library__fonts-title", /* translators: Heading for a list of fonts installed by the user. */ children: (0, import_i18n14._x)("Custom", "font source") }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( "ul", { role: "list", className: "font-library__fonts-list", - children: baseCustomFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + children: baseCustomFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( "li", { className: "font-library__fonts-list-item", - children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( font_card_default, { font: font2, @@ -4470,6 +12614,7 @@ function InstalledFonts() { variantsText: getFontCardVariantsText( font2 ), + shouldFocus: font2.slug === lastSelectedFontSlug, onClick: () => { setNotice(null); handleSetLibraryFontSelected( @@ -4485,8 +12630,8 @@ function InstalledFonts() { ) ] }) ] }) }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.Navigator.Screen, { path: "/fontFamily", children: [ - libraryFontSelected && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_components23.Navigator.Screen, { path: "/fontFamily", children: [ + libraryFontSelected && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( ConfirmDeleteDialog, { font: libraryFontSelected, @@ -4497,13 +12642,16 @@ function InstalledFonts() { handleSetLibraryFontSelected } ), - /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.Flex, { justify: "flex-start", children: [ - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( - import_components24.Navigator.BackButton, + /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_components23.Flex, { justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components23.Navigator.BackButton, { icon: (0, import_i18n14.isRTL)() ? chevron_right_default : chevron_left_default, size: "small", onClick: () => { + setLastSelectedFontSlug( + libraryFontSelected?.slug + ); handleSetLibraryFontSelected( void 0 ); @@ -4512,8 +12660,8 @@ function InstalledFonts() { label: (0, import_i18n14.__)("Back") } ), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( - import_components24.__experimentalHeading, + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components23.__experimentalHeading, { level: 2, size: 13, @@ -4522,26 +12670,26 @@ function InstalledFonts() { } ) ] }), - notice && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 1 }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( - import_components24.Notice, + notice && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.__experimentalSpacer, { margin: 1 }), + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components23.Notice, { status: notice.type, onRemove: () => setNotice(null), children: notice.message } ), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 1 }) + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.__experimentalSpacer, { margin: 1 }) ] }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 4 }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalText, { children: (0, import_i18n14.__)( + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.__experimentalSpacer, { margin: 4 }), + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.__experimentalText, { children: (0, import_i18n14.__)( "Choose font variants. Keep in mind that too many variants could make your site slower." ) }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 4 }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { spacing: 0, children: [ - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( - import_components24.CheckboxControl, + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.__experimentalSpacer, { margin: 4 }), + /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_components23.__experimentalVStack, { spacing: 0, children: [ + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components23.CheckboxControl, { className: "font-library__select-all", label: (0, import_i18n14.__)("Select all"), @@ -4550,19 +12698,19 @@ function InstalledFonts() { indeterminate: isIndeterminate } ), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 8 }), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.__experimentalSpacer, { margin: 8 }), + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( "ul", { role: "list", className: "font-library__fonts-list", children: libraryFontSelected && getFontFacesToDisplay( libraryFontSelected - ).map((face, i2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + ).map((face, i2) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( "li", { className: "font-library__fonts-list-item", - children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( library_font_variant_default, { font: libraryFontSelected, @@ -4580,10 +12728,10 @@ function InstalledFonts() { ] } ), - /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalHStack, { justify: "flex-end", className: "font-library__footer", children: [ - isInstalling && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.ProgressBar, {}), - shouldDisplayDeleteButton && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( - import_components24.Button, + /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_components23.__experimentalHStack, { justify: "flex-end", className: "font-library__footer", children: [ + isInstalling && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_components23.ProgressBar, {}), + shouldDisplayDeleteButton && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components23.Button, { __next40pxDefaultSize: true, isDestructive: true, @@ -4592,8 +12740,8 @@ function InstalledFonts() { children: (0, import_i18n14.__)("Delete") } ), - /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( - import_components24.Button, + /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components23.Button, { __next40pxDefaultSize: true, variant: "primary", @@ -4615,13 +12763,13 @@ function ConfirmDeleteDialog({ uninstallFontFamily, handleSetLibraryFontSelected }) { - const navigator = (0, import_components24.useNavigator)(); + const navigator2 = (0, import_components23.useNavigator)(); const handleConfirmUninstall = async () => { setNotice(null); setIsOpen(false); try { await uninstallFontFamily(font2); - navigator.goBack(); + navigator2.goBack(); handleSetLibraryFontSelected(void 0); setNotice({ type: "success", @@ -4637,8 +12785,8 @@ function ConfirmDeleteDialog({ const handleCancelUninstall = () => { setIsOpen(false); }; - return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( - import_components24.__experimentalConfirmDialog, + return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + import_components23.__experimentalConfirmDialog, { isOpen, cancelButtonText: (0, import_i18n14.__)("Cancel"), @@ -4659,8 +12807,8 @@ function ConfirmDeleteDialog({ var installed_fonts_default = InstalledFonts; // packages/global-styles-ui/build-module/font-library/font-collection.mjs -var import_element19 = __toESM(require_element(), 1); -var import_components27 = __toESM(require_components(), 1); +var import_element34 = __toESM(require_element(), 1); +var import_components26 = __toESM(require_components(), 1); var import_compose3 = __toESM(require_compose(), 1); var import_i18n16 = __toESM(require_i18n(), 1); var import_core_data7 = __toESM(require_core_data(), 1); @@ -4707,8 +12855,8 @@ function isFontFontFaceInOutline(slug, face, outline) { // packages/global-styles-ui/build-module/font-library/google-fonts-confirm-dialog.mjs var import_i18n15 = __toESM(require_i18n(), 1); -var import_components25 = __toESM(require_components(), 1); -var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); +var import_components24 = __toESM(require_components(), 1); +var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); function GoogleFontsConfirmDialog() { const handleConfirm = () => { window.localStorage.setItem( @@ -4717,19 +12865,19 @@ function GoogleFontsConfirmDialog() { ); window.dispatchEvent(new Event("storage")); }; - return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "font-library__google-fonts-confirm", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_components25.CardBody, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalHeading, { level: 2, children: (0, import_i18n15.__)("Connect to Google Fonts") }), - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 6 }), - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n15.__)( + return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "font-library__google-fonts-confirm", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components24.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_components24.CardBody, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components24.__experimentalHeading, { level: 2, children: (0, import_i18n15.__)("Connect to Google Fonts") }), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components24.__experimentalSpacer, { margin: 6 }), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components24.__experimentalText, { as: "p", children: (0, import_i18n15.__)( "To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts." ) }), - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 3 }), - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n15.__)( + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components24.__experimentalSpacer, { margin: 3 }), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components24.__experimentalText, { as: "p", children: (0, import_i18n15.__)( "You can alternatively upload files directly on the Upload tab." ) }), - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 6 }), - /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( - import_components25.Button, + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components24.__experimentalSpacer, { margin: 6 }), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + import_components24.Button, { __next40pxDefaultSize: true, variant: "primary", @@ -4742,9 +12890,9 @@ function GoogleFontsConfirmDialog() { var google_fonts_confirm_dialog_default = GoogleFontsConfirmDialog; // packages/global-styles-ui/build-module/font-library/collection-font-variant.mjs -var import_element18 = __toESM(require_element(), 1); -var import_components26 = __toESM(require_components(), 1); -var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +var import_element33 = __toESM(require_element(), 1); +var import_components25 = __toESM(require_components(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); function CollectionFontVariant({ face, font: font2, @@ -4759,17 +12907,17 @@ function CollectionFontVariant({ handleToggleVariant(font2); }; const displayName = font2.name + " " + getFontFaceVariantName(face); - const checkboxId = (0, import_element18.useId)(); - return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_components26.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [ - /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( - import_components26.CheckboxControl, + const checkboxId = (0, import_element33.useId)(); + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_components25.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [ + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + import_components25.CheckboxControl, { checked: selected, onChange: handleToggleActivation, id: checkboxId } ), - /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( font_demo_default, { font: face, @@ -4782,7 +12930,7 @@ function CollectionFontVariant({ var collection_font_variant_default = CollectionFontVariant; // packages/global-styles-ui/build-module/font-library/font-collection.mjs -var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); var DEFAULT_CATEGORY = { slug: "all", name: (0, import_i18n16._x)("All", "font categories") @@ -4794,21 +12942,22 @@ function FontCollection({ slug }) { const getGoogleFontsPermissionFromStorage = () => { return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === "true"; }; - const [selectedFont, setSelectedFont] = (0, import_element19.useState)( + const [selectedFont, setSelectedFont] = (0, import_element34.useState)( null ); - const [notice, setNotice] = (0, import_element19.useState)(null); - const [fontsToInstall, setFontsToInstall] = (0, import_element19.useState)( + const [lastSelectedFontSlug, setLastSelectedFontSlug] = (0, import_element34.useState)(void 0); + const [notice, setNotice] = (0, import_element34.useState)(null); + const [fontsToInstall, setFontsToInstall] = (0, import_element34.useState)( [] ); - const [page, setPage] = (0, import_element19.useState)(1); - const [filters, setFilters] = (0, import_element19.useState)({}); - const [renderConfirmDialog, setRenderConfirmDialog] = (0, import_element19.useState)( + const [page, setPage] = (0, import_element34.useState)(1); + const [filters, setFilters] = (0, import_element34.useState)({}); + const [renderConfirmDialog, setRenderConfirmDialog] = (0, import_element34.useState)( requiresPermission && !getGoogleFontsPermissionFromStorage() ); - const { installFonts, isInstalling } = (0, import_element19.useContext)(FontLibraryContext); + const { installFonts, isInstalling } = (0, import_element34.useContext)(FontLibraryContext); const { record: selectedCollection, isResolving: isLoading } = (0, import_core_data7.useEntityRecord)("root", "fontCollection", slug); - (0, import_element19.useEffect)(() => { + (0, import_element34.useEffect)(() => { const handleStorage = () => { setRenderConfirmDialog( requiresPermission && !getGoogleFontsPermissionFromStorage() @@ -4822,19 +12971,19 @@ function FontCollection({ slug }) { window.localStorage.setItem(LOCAL_STORAGE_ITEM, "false"); window.dispatchEvent(new Event("storage")); }; - (0, import_element19.useEffect)(() => { + (0, import_element34.useEffect)(() => { setSelectedFont(null); }, [slug]); - (0, import_element19.useEffect)(() => { + (0, import_element34.useEffect)(() => { setFontsToInstall([]); }, [selectedFont]); - const collectionFonts = (0, import_element19.useMemo)( + const collectionFonts = (0, import_element34.useMemo)( () => selectedCollection?.font_families ?? [], [selectedCollection] ); const collectionCategories = selectedCollection?.categories ?? []; const categories = [DEFAULT_CATEGORY, ...collectionCategories]; - const fonts = (0, import_element19.useMemo)( + const fonts = (0, import_element34.useMemo)( () => filterFonts(collectionFonts, filters), [collectionFonts, filters] ); @@ -4925,26 +13074,26 @@ function FontCollection({ slug }) { return sortFontFaces(fontFamily.fontFace); }; if (renderConfirmDialog) { - return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(google_fonts_confirm_dialog_default, {}); + return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(google_fonts_confirm_dialog_default, {}); } const showActions = slug === "google-fonts" && !renderConfirmDialog && !selectedFont; - return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ - isLoading && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.ProgressBar, {}) }), - !isLoading && selectedCollection && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( - import_components27.Navigator, + return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ + isLoading && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.ProgressBar, {}) }), + !isLoading && selectedCollection && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)( + import_components26.Navigator, { initialPath: "/", className: "font-library__tabpanel-layout", children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.Navigator.Screen, { path: "/", children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalHStack, { justify: "space-between", children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalVStack, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalHeading, { level: 2, size: 13, children: selectedCollection.name }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: selectedCollection.description }) + /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_components26.Navigator.Screen, { path: "/", children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_components26.__experimentalHStack, { justify: "space-between", children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_components26.__experimentalVStack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalHeading, { level: 2, size: 13, children: selectedCollection.name }), + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalText, { children: selectedCollection.description }) ] }), - showActions && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.DropdownMenu, + showActions && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.DropdownMenu, { icon: more_vertical_default, label: (0, import_i18n16.__)("Actions"), @@ -4962,10 +13111,10 @@ function FontCollection({ slug }) { } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalHStack, { spacing: 4, justify: "space-between", children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.SearchControl, + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalSpacer, { margin: 4 }), + /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_components26.__experimentalHStack, { spacing: 4, justify: "space-between", children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.SearchControl, { value: filters.search, placeholder: (0, import_i18n16.__)("Font name\u2026"), @@ -4974,14 +13123,14 @@ function FontCollection({ slug }) { hideLabelFromVision: false } ), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.SelectControl, + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.SelectControl, { __next40pxDefaultSize: true, label: (0, import_i18n16.__)("Category"), value: filters.category, onChange: handleCategoryFilter, - children: categories && categories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + children: categories && categories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( "option", { value: category.slug, @@ -4992,24 +13141,25 @@ function FontCollection({ slug }) { } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }), - !!selectedCollection?.font_families?.length && !fonts.length && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: (0, import_i18n16.__)( + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalSpacer, { margin: 4 }), + !!selectedCollection?.font_families?.length && !fonts.length && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalText, { children: (0, import_i18n16.__)( "No fonts found. Try with a different search term." ) }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "font-library__fonts-grid__main", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "font-library__fonts-grid__main", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( "ul", { role: "list", className: "font-library__fonts-list", - children: items.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + children: items.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( "li", { className: "font-library__fonts-list-item", - children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( font_card_default, { font: font2.font_family_settings, navigatorPath: "/fontFamily", + shouldFocus: font2.font_family_settings.slug === lastSelectedFontSlug, onClick: () => { setSelectedFont( font2.font_family_settings @@ -5023,22 +13173,25 @@ function FontCollection({ slug }) { } ) }) ] }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.Navigator.Screen, { path: "/fontFamily", children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.Flex, { justify: "flex-start", children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.Navigator.BackButton, + /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_components26.Navigator.Screen, { path: "/fontFamily", children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_components26.Flex, { justify: "flex-start", children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.Navigator.BackButton, { icon: (0, import_i18n16.isRTL)() ? chevron_right_default : chevron_left_default, size: "small", onClick: () => { + setLastSelectedFontSlug( + selectedFont?.slug + ); setSelectedFont(null); setNotice(null); }, label: (0, import_i18n16.__)("Back") } ), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.__experimentalHeading, + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.__experimentalHeading, { level: 2, size: 13, @@ -5047,23 +13200,23 @@ function FontCollection({ slug }) { } ) ] }), - notice && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 1 }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.Notice, + notice && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalSpacer, { margin: 1 }), + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.Notice, { status: notice.type, onRemove: () => setNotice(null), children: notice.message } ), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 1 }) + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalSpacer, { margin: 1 }) ] }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: (0, import_i18n16.__)("Select font variants to install.") }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.CheckboxControl, + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalSpacer, { margin: 4 }), + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalText, { children: (0, import_i18n16.__)("Select font variants to install.") }), + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalSpacer, { margin: 4 }), + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.CheckboxControl, { className: "font-library__select-all", label: (0, import_i18n16.__)("Select all"), @@ -5072,17 +13225,17 @@ function FontCollection({ slug }) { indeterminate: isIndeterminate } ), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalVStack, { spacing: 0, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalVStack, { spacing: 0, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( "ul", { role: "list", className: "font-library__fonts-list", children: selectedFont && getSortedFontFaces(selectedFont).map( - (face, i2) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + (face, i2) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( "li", { className: "font-library__fonts-list-item", - children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( collection_font_variant_default, { font: selectedFont, @@ -5102,18 +13255,18 @@ function FontCollection({ slug }) { ) } ) }), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 16 }) + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components26.__experimentalSpacer, { margin: 16 }) ] }) ] } ), - selectedFont && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.Flex, + selectedFont && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.Flex, { justify: "flex-end", className: "font-library__footer", - children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.Button, + children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.Button, { __next40pxDefaultSize: true, variant: "primary", @@ -5126,22 +13279,22 @@ function FontCollection({ slug }) { ) } ), - !selectedFont && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( - import_components27.__experimentalHStack, + !selectedFont && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)( + import_components26.__experimentalHStack, { expanded: false, className: "font-library__footer", justify: "end", spacing: 6, children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.__experimentalHStack, + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.__experimentalHStack, { justify: "flex-start", expanded: false, spacing: 1, className: "font-library__page-selection", - children: (0, import_element19.createInterpolateElement)( + children: (0, import_element34.createInterpolateElement)( (0, import_i18n16.sprintf)( // translators: 1: Current page number, 2: Total number of pages. (0, import_i18n16._x)( @@ -5152,10 +13305,10 @@ function FontCollection({ slug }) { totalPages ), { - div: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { "aria-hidden": true }), + div: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { "aria-hidden": true }), // @ts-expect-error — Tag injected via sprintf argument, not visible in format string. - CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.SelectControl, + CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.SelectControl, { "aria-label": (0, import_i18n16.__)( "Current page" @@ -5180,9 +13333,9 @@ function FontCollection({ slug }) { ) } ), - /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalHStack, { expanded: false, spacing: 1, children: [ - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.Button, + /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_components26.__experimentalHStack, { expanded: false, spacing: 1, children: [ + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.Button, { onClick: () => setPage(page - 1), disabled: page === 1, @@ -5194,8 +13347,8 @@ function FontCollection({ slug }) { tooltipPosition: "top" } ), - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( - import_components27.Button, + /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( + import_components26.Button, { onClick: () => setPage(page + 1), disabled: page === totalPages, @@ -5218,8 +13371,8 @@ var font_collection_default = FontCollection; // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs var import_i18n17 = __toESM(require_i18n(), 1); -var import_components29 = __toESM(require_components(), 1); -var import_element20 = __toESM(require_element(), 1); +var import_components28 = __toESM(require_components(), 1); +var import_element35 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-library/lib/unbrotli.mjs var __require2 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, { @@ -7367,19 +15520,19 @@ var unbrotli_default = (function() { } return out; } - function ReadSymbol(table, index, br) { - var start_index = index; + function ReadSymbol(table, index2, br) { + var start_index = index2; var nbits; br.fillBitWindow(); - index += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK; - nbits = table[index].bits - HUFFMAN_TABLE_BITS; + index2 += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK; + nbits = table[index2].bits - HUFFMAN_TABLE_BITS; if (nbits > 0) { br.bit_pos_ += HUFFMAN_TABLE_BITS; - index += table[index].value; - index += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1; + index2 += table[index2].value; + index2 += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1; } - br.bit_pos_ += table[index].bits; - return table[index].value; + br.bit_pos_ += table[index2].bits; + return table[index2].value; } function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) { var symbol = 0; @@ -7569,27 +15722,27 @@ var unbrotli_default = (function() { } return table_size; } - function ReadBlockLength(table, index, br) { + function ReadBlockLength(table, index2, br) { var code; var nbits; - code = ReadSymbol(table, index, br); + code = ReadSymbol(table, index2, br); nbits = Prefix.kBlockLengthPrefixCode[code].nbits; return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits); } - function TranslateShortCodes(code, ringbuffer, index) { + function TranslateShortCodes(code, ringbuffer, index2) { var val; if (code < NUM_DISTANCE_SHORT_CODES) { - index += kDistanceShortCodeIndexOffset[code]; - index &= 3; - val = ringbuffer[index] + kDistanceShortCodeValueOffset[code]; + index2 += kDistanceShortCodeIndexOffset[code]; + index2 &= 3; + val = ringbuffer[index2] + kDistanceShortCodeValueOffset[code]; } else { val = code - NUM_DISTANCE_SHORT_CODES + 1; } return val; } - function MoveToFront(v2, index) { - var value = v2[index]; - var i2 = index; + function MoveToFront(v2, index2) { + var value = v2[index2]; + var i2 = index2; for (; i2; --i2) v2[i2] = v2[i2 - 1]; v2[0] = value; } @@ -7600,9 +15753,9 @@ var unbrotli_default = (function() { mtf[i2] = i2; } for (i2 = 0; i2 < v_len; ++i2) { - var index = v2[i2]; - v2[i2] = mtf[index]; - if (index) MoveToFront(mtf, index); + var index2 = v2[i2]; + v2[i2] = mtf[index2]; + if (index2) MoveToFront(mtf, index2); } } function HuffmanTreeGroup(alphabet_size, num_htrees) { @@ -7689,7 +15842,7 @@ var unbrotli_default = (function() { } function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) { var ringbuffer = tree_type * 2; - var index = tree_type; + var index2 = tree_type; var type_code = ReadSymbol( trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, @@ -7697,9 +15850,9 @@ var unbrotli_default = (function() { ); var block_type; if (type_code === 0) { - block_type = ringbuffers[ringbuffer + (indexes[index] & 1)]; + block_type = ringbuffers[ringbuffer + (indexes[index2] & 1)]; } else if (type_code === 1) { - block_type = ringbuffers[ringbuffer + (indexes[index] - 1 & 1)] + 1; + block_type = ringbuffers[ringbuffer + (indexes[index2] - 1 & 1)] + 1; } else { block_type = type_code - 2; } @@ -7707,8 +15860,8 @@ var unbrotli_default = (function() { block_type -= max_block_type; } block_types[tree_type] = block_type; - ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type; - ++indexes[index]; + ringbuffers[ringbuffer + (indexes[index2] & 1)] = block_type; + ++indexes[index2]; } function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) { var rb_size = ringbuffer_mask + 1; @@ -8107,13 +16260,13 @@ var unbrotli_default = (function() { if (distance_code >= num_direct_distance_codes) { var nbits; var postfix; - var offset; + var offset4; distance_code -= num_direct_distance_codes; postfix = distance_code & distance_postfix_mask; distance_code >>= distance_postfix_bits; nbits = (distance_code >> 1) + 1; - offset = (2 + (distance_code & 1) << nbits) - 4; - distance_code = num_direct_distance_codes + (offset + br.readBits(nbits) << distance_postfix_bits) + postfix; + offset4 = (2 + (distance_code & 1) << nbits) - 4; + distance_code = num_direct_distance_codes + (offset4 + br.readBits(nbits) << distance_postfix_bits) + postfix; } } distance = TranslateShortCodes( @@ -8134,18 +16287,18 @@ var unbrotli_default = (function() { copy_dst = pos & ringbuffer_mask; if (distance > max_distance) { if (copy_length >= BrotliDictionary.minDictionaryWordLength && copy_length <= BrotliDictionary.maxDictionaryWordLength) { - var offset = BrotliDictionary.offsetsByLength[copy_length]; + var offset4 = BrotliDictionary.offsetsByLength[copy_length]; var word_id = distance - max_distance - 1; - var shift = BrotliDictionary.sizeBitsByLength[copy_length]; - var mask = (1 << shift) - 1; + var shift4 = BrotliDictionary.sizeBitsByLength[copy_length]; + var mask = (1 << shift4) - 1; var word_idx = word_id & mask; - var transform_idx = word_id >> shift; - offset += word_idx * copy_length; + var transform_idx = word_id >> shift4; + offset4 += word_idx * copy_length; if (transform_idx < Transform.kNumTransforms) { var len = Transform.transformDictionaryWord( ringbuffer, copy_dst, - offset, + offset4, copy_length, transform_idx ); @@ -8346,26 +16499,26 @@ var unbrotli_default = (function() { var count = new Int32Array( MAX_LENGTH + 1 ); - var offset = new Int32Array( + var offset4 = new Int32Array( MAX_LENGTH + 1 ); sorted = new Int32Array(code_lengths_size); for (symbol = 0; symbol < code_lengths_size; symbol++) { count[code_lengths[symbol]]++; } - offset[1] = 0; + offset4[1] = 0; for (len = 1; len < MAX_LENGTH; len++) { - offset[len + 1] = offset[len] + count[len]; + offset4[len + 1] = offset4[len] + count[len]; } for (symbol = 0; symbol < code_lengths_size; symbol++) { if (code_lengths[symbol] !== 0) { - sorted[offset[code_lengths[symbol]]++] = symbol; + sorted[offset4[code_lengths[symbol]]++] = symbol; } } table_bits = root_bits; table_size = 1 << table_bits; total_size = table_size; - if (offset[MAX_LENGTH] === 1) { + if (offset4[MAX_LENGTH] === 1) { for (key = 0; key < total_size; ++key) { root_table[table + key] = new HuffmanCode( 0, @@ -8539,8 +16692,8 @@ var unbrotli_default = (function() { ], 9: [ function(require2, module2, exports2) { - function PrefixCodeRange(offset, nbits) { - this.offset = offset; + function PrefixCodeRange(offset4, nbits) { + this.offset = offset4; this.nbits = nbits; } exports2.kBlockLengthPrefixCode = [ @@ -8961,14 +17114,14 @@ var inflate_default = (function() { } return obj; }; - exports2.shrinkBuf = function(buf, size) { - if (buf.length === size) { + exports2.shrinkBuf = function(buf, size4) { + if (buf.length === size4) { return buf; } if (buf.subarray) { - return buf.subarray(0, size); + return buf.subarray(0, size4); } - buf.length = size; + buf.length = size4; return buf; }; var fnTyped = { @@ -9116,9 +17269,9 @@ var inflate_default = (function() { } return buf; }; - exports2.buf2string = function(buf, max) { + exports2.buf2string = function(buf, max2) { var i2, out, c2, c_len; - var len = max || buf.length; + var len = max2 || buf.length; var utf16buf = new Array(len * 2); for (out = 0, i2 = 0; i2 < len; ) { c2 = buf[i2++]; @@ -9151,23 +17304,23 @@ var inflate_default = (function() { } return buf2binstring(utf16buf, out); }; - exports2.utf8border = function(buf, max) { + exports2.utf8border = function(buf, max2) { var pos; - max = max || buf.length; - if (max > buf.length) { - max = buf.length; + max2 = max2 || buf.length; + if (max2 > buf.length) { + max2 = buf.length; } - pos = max - 1; + pos = max2 - 1; while (pos >= 0 && (buf[pos] & 192) === 128) { pos--; } if (pos < 0) { - return max; + return max2; } if (pos === 0) { - return max; + return max2; } - return pos + _utf8len[buf[pos]] > max ? pos : max; + return pos + _utf8len[buf[pos]] > max2 ? pos : max2; }; }, { "./common": 1 } @@ -11079,7 +19232,7 @@ var inflate_default = (function() { var bits = opts.bits; var len = 0; var sym = 0; - var min = 0, max = 0; + var min2 = 0, max2 = 0; var root = 0; var curr = 0; var drop = 0; @@ -11106,27 +19259,27 @@ var inflate_default = (function() { count[lens[lens_index + sym]]++; } root = bits; - for (max = MAXBITS; max >= 1; max--) { - if (count[max] !== 0) { + for (max2 = MAXBITS; max2 >= 1; max2--) { + if (count[max2] !== 0) { break; } } - if (root > max) { - root = max; + if (root > max2) { + root = max2; } - if (max === 0) { + if (max2 === 0) { table[table_index++] = 1 << 24 | 64 << 16 | 0; table[table_index++] = 1 << 24 | 64 << 16 | 0; opts.bits = 1; return 0; } - for (min = 1; min < max; min++) { - if (count[min] !== 0) { + for (min2 = 1; min2 < max2; min2++) { + if (count[min2] !== 0) { break; } } - if (root < min) { - root = min; + if (root < min2) { + root = min2; } left = 1; for (len = 1; len <= MAXBITS; len++) { @@ -11136,7 +19289,7 @@ var inflate_default = (function() { return -1; } } - if (left > 0 && (type === CODES || max !== 1)) { + if (left > 0 && (type === CODES || max2 !== 1)) { return -1; } offs[1] = 0; @@ -11164,7 +19317,7 @@ var inflate_default = (function() { } huff = 0; sym = 0; - len = min; + len = min2; next = table_index; curr = root; drop = 0; @@ -11188,7 +19341,7 @@ var inflate_default = (function() { } incr = 1 << len - drop; fill = 1 << curr; - min = fill; + min2 = fill; do { fill -= incr; table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0; @@ -11205,7 +19358,7 @@ var inflate_default = (function() { } sym++; if (--count[len] === 0) { - if (len === max) { + if (len === max2) { break; } len = lens[lens_index + work[sym]]; @@ -11214,10 +19367,10 @@ var inflate_default = (function() { if (drop === 0) { drop = root; } - next += min; + next += min2; curr = len - drop; left = 1 << curr; - while (curr + drop < max) { + while (curr + drop < max2) { left -= count[curr + drop]; if (left <= 0) { break; @@ -11799,7 +19952,7 @@ function buildWoffLazyLookups(woff, dataview, createTable2) { woff.tables = {}; woff.directory.forEach((entry) => { lazy$1(woff.tables, entry.tag.trim(), () => { - let offset = 0; + let offset4 = 0; let view = dataview; if (entry.compLength !== entry.origLength) { const data = dataview.buffer.slice( @@ -11818,11 +19971,11 @@ function buildWoffLazyLookups(woff, dataview, createTable2) { } view = new DataView(unpacked.buffer); } else { - offset = entry.offset; + offset4 = entry.offset; } return createTable2( woff.tables, - { tag: entry.tag, offset, length: entry.origLength }, + { tag: entry.tag, offset: offset4, length: entry.origLength }, view ); }); @@ -12285,7 +20438,7 @@ var Font = class extends EventManager { supportsVariation(variation) { return this.opentype.tables.cmap.supportsVariation(variation) !== false; } - measureText(text, size = 16) { + measureText(text, size4 = 16) { if (this.__unloaded) throw new Error( "Cannot measure text: font was unloaded. Please reload before calling measureText()" @@ -12293,7 +20446,7 @@ var Font = class extends EventManager { let d2 = document.createElement("div"); d2.textContent = text; d2.style.fontFamily = this.name; - d2.style.fontSize = `${size}px`; + d2.style.fontSize = `${size4}px`; d2.style.color = `transparent`; d2.style.background = `transparent`; d2.style.top = `0`; @@ -12303,7 +20456,7 @@ var Font = class extends EventManager { let bbox = d2.getBoundingClientRect(); document.body.removeChild(d2); const OS22 = this.opentype.tables["OS/2"]; - bbox.fontSize = size; + bbox.fontSize = size4; bbox.ascender = OS22.sTypoAscender; bbox.descender = OS22.sTypoDescender; return bbox; @@ -12845,9 +20998,9 @@ var EncodingRecord = class { constructor(p22, tableStart) { const platformID = this.platformID = p22.uint16; const encodingID = this.encodingID = p22.uint16; - const offset = this.offset = p22.Offset32; + const offset4 = this.offset = p22.Offset32; lazy$1(this, `table`, () => { - p22.currentPosition = tableStart + offset; + p22.currentPosition = tableStart + offset4; return createSubTable(p22, platformID, encodingID); }); } @@ -12983,9 +21136,9 @@ var name = class extends SimpleTable { } }; var LangTagRecord = class { - constructor(length, offset) { + constructor(length, offset4) { this.length = length; - this.offset = offset; + this.offset = offset4; } }; var NameRecord = class { @@ -13089,8 +21242,8 @@ var post = class extends SimpleTable { this.namesOffset = p22.currentPosition; this.glyphNameOffsets = [1]; for (let i2 = 0; i2 < this.numGlyphs; i2++) { - let index = this.glyphNameIndex[i2]; - if (index < macStrings.length) { + let index2 = this.glyphNameIndex[i2]; + if (index2 < macStrings.length) { this.glyphNameOffsets.push(this.glyphNameOffsets[i2]); continue; } @@ -13114,16 +21267,16 @@ var post = class extends SimpleTable { ); return ``; } - let index = this.glyphNameIndex[glyphid]; - if (index < 258) return macStrings[index]; - let offset = this.glyphNameOffsets[glyphid]; + let index2 = this.glyphNameIndex[glyphid]; + if (index2 < 258) return macStrings[index2]; + let offset4 = this.glyphNameOffsets[glyphid]; let next = this.glyphNameOffsets[glyphid + 1]; - let len = next - offset - 1; + let len = next - offset4 - 1; if (len === 0) return `.notdef.`; - this.parser.currentPosition = this.namesOffset + offset; + this.parser.currentPosition = this.namesOffset + offset4; const data = this.parser.readBytes( len, - this.namesOffset + offset, + this.namesOffset + offset4, 8, true ); @@ -13898,9 +22051,9 @@ var LookupType2$1 = class extends LookupType$1 { (_) => p22.Offset16 ); } - getSequence(index) { + getSequence(index2) { let p22 = this.parser; - p22.currentPosition = this.start + this.sequenceOffsets[index]; + p22.currentPosition = this.start + this.sequenceOffsets[index2]; return new SequenceTable(p22); } }; @@ -13920,9 +22073,9 @@ var LookupType3$1 = class extends LookupType$1 { ...new Array(this.alternateSetCount) ].map((_) => p22.Offset16); } - getAlternateSet(index) { + getAlternateSet(index2) { let p22 = this.parser; - p22.currentPosition = this.start + this.alternateSetOffsets[index]; + p22.currentPosition = this.start + this.alternateSetOffsets[index2]; return new AlternateSetTable(p22); } }; @@ -13942,9 +22095,9 @@ var LookupType4$1 = class extends LookupType$1 { (_) => p22.Offset16 ); } - getLigatureSet(index) { + getLigatureSet(index2) { let p22 = this.parser; - p22.currentPosition = this.start + this.ligatureSetOffsets[index]; + p22.currentPosition = this.start + this.ligatureSetOffsets[index2]; return new LigatureSetTable(p22); } }; @@ -13956,9 +22109,9 @@ var LigatureSetTable = class extends ParsedData { (_) => p22.Offset16 ); } - getLigature(index) { + getLigature(index2) { let p22 = this.parser; - p22.currentPosition = this.start + this.ligatureOffsets[index]; + p22.currentPosition = this.start + this.ligatureOffsets[index2]; return new LigatureTable(p22); } }; @@ -13999,33 +22152,33 @@ var LookupType5$1 = class extends LookupType$1 { ].map((_) => new SubstLookupRecord(p22)); } } - getSubRuleSet(index) { + getSubRuleSet(index2) { if (this.substFormat !== 1) throw new Error( `lookup type 5.${this.substFormat} has no subrule sets.` ); let p22 = this.parser; - p22.currentPosition = this.start + this.subRuleSetOffsets[index]; + p22.currentPosition = this.start + this.subRuleSetOffsets[index2]; return new SubRuleSetTable(p22); } - getSubClassSet(index) { + getSubClassSet(index2) { if (this.substFormat !== 2) throw new Error( `lookup type 5.${this.substFormat} has no subclass sets.` ); let p22 = this.parser; - p22.currentPosition = this.start + this.subClassSetOffsets[index]; + p22.currentPosition = this.start + this.subClassSetOffsets[index2]; return new SubClassSetTable(p22); } - getCoverageTable(index) { - if (this.substFormat !== 3 && !index) + getCoverageTable(index2) { + if (this.substFormat !== 3 && !index2) return super.getCoverageTable(); - if (!index) + if (!index2) throw new Error( `lookup type 5.${this.substFormat} requires an coverage table index.` ); let p22 = this.parser; - p22.currentPosition = this.start + this.coverageOffsets[index]; + p22.currentPosition = this.start + this.coverageOffsets[index2]; return new CoverageTable(p22); } }; @@ -14037,9 +22190,9 @@ var SubRuleSetTable = class extends ParsedData { (_) => p22.Offset16 ); } - getSubRule(index) { + getSubRule(index2) { let p22 = this.parser; - p22.currentPosition = this.start + this.subRuleOffsets[index]; + p22.currentPosition = this.start + this.subRuleOffsets[index2]; return new SubRuleTable(p22); } }; @@ -14063,9 +22216,9 @@ var SubClassSetTable = class extends ParsedData { ...new Array(this.subClassRuleCount) ].map((_) => p22.Offset16); } - getSubClass(index) { + getSubClass(index2) { let p22 = this.parser; - p22.currentPosition = this.start + this.subClassRuleOffsets[index]; + p22.currentPosition = this.start + this.subClassRuleOffsets[index2]; return new SubClassRuleTable(p22); } }; @@ -14112,31 +22265,31 @@ var LookupType6$1 = class extends LookupType$1 { ].map((_) => new SequenceLookupRecord(p22)); } } - getChainSubRuleSet(index) { + getChainSubRuleSet(index2) { if (this.substFormat !== 1) throw new Error( `lookup type 6.${this.substFormat} has no chainsubrule sets.` ); let p22 = this.parser; - p22.currentPosition = this.start + this.chainSubRuleSetOffsets[index]; + p22.currentPosition = this.start + this.chainSubRuleSetOffsets[index2]; return new ChainSubRuleSetTable(p22); } - getChainSubClassSet(index) { + getChainSubClassSet(index2) { if (this.substFormat !== 2) throw new Error( `lookup type 6.${this.substFormat} has no chainsubclass sets.` ); let p22 = this.parser; - p22.currentPosition = this.start + this.chainSubClassSetOffsets[index]; + p22.currentPosition = this.start + this.chainSubClassSetOffsets[index2]; return new ChainSubClassSetTable(p22); } - getCoverageFromOffset(offset) { + getCoverageFromOffset(offset4) { if (this.substFormat !== 3) throw new Error( `lookup type 6.${this.substFormat} does not use contextual coverage offsets.` ); let p22 = this.parser; - p22.currentPosition = this.start + offset; + p22.currentPosition = this.start + offset4; return new CoverageTable(p22); } }; @@ -14148,9 +22301,9 @@ var ChainSubRuleSetTable = class extends ParsedData { ...new Array(this.chainSubRuleCount) ].map((_) => p22.Offset16); } - getSubRule(index) { + getSubRule(index2) { let p22 = this.parser; - p22.currentPosition = this.start + this.chainSubRuleOffsets[index]; + p22.currentPosition = this.start + this.chainSubRuleOffsets[index2]; return new ChainSubRuleTable(p22); } }; @@ -14182,9 +22335,9 @@ var ChainSubClassSetTable = class extends ParsedData { ...new Array(this.chainSubClassRuleCount) ].map((_) => p22.Offset16); } - getSubClass(index) { + getSubClass(index2) { let p22 = this.parser; - p22.currentPosition = this.start + this.chainSubRuleOffsets[index]; + p22.currentPosition = this.start + this.chainSubRuleOffsets[index2]; return new ChainSubClassRuleTable(p22); } }; @@ -14374,9 +22527,9 @@ var LookupTable = class extends ParsedData { get markAttachmentType() { return this.lookupFlag & true; } - getSubTable(index) { + getSubTable(index2) { const builder = this.ctType === `GSUB` ? GSUBtables : GPOStables; - this.parser.currentPosition = this.start + this.subtableOffsets[index]; + this.parser.currentPosition = this.start + this.subtableOffsets[index2]; return builder.buildSubtable(this.lookupType, this.parser); } }; @@ -14444,9 +22597,9 @@ var CommonLayoutTable = class extends SimpleTable { } getDefaultLangSysTable(scriptTable) { scriptTable = this.ensureScriptTable(scriptTable); - let offset = scriptTable.defaultLangSys; - if (offset !== 0) { - this.parser.currentPosition = scriptTable.start + offset; + let offset4 = scriptTable.defaultLangSys; + if (offset4 !== 0) { + this.parser.currentPosition = scriptTable.start + offset4; let table = new LangSysTable(this.parser); table.langSysTag = ``; table.defaultForScript = scriptTable.scriptTag; @@ -14467,7 +22620,7 @@ var CommonLayoutTable = class extends SimpleTable { } getFeatures(langSysTable) { return langSysTable.featureIndices.map( - (index) => this.getFeature(index) + (index2) => this.getFeature(index2) ); } getFeature(indexOrTag) { @@ -14487,7 +22640,7 @@ var CommonLayoutTable = class extends SimpleTable { } getLookups(featureTable) { return featureTable.lookupListIndices.map( - (index) => this.getLookup(index) + (index2) => this.getLookup(index2) ); } getLookup(lookupIndex, type) { @@ -14534,8 +22687,8 @@ var SVGDocumentList = class extends ParsedData { getDocument(documentID) { let record = this.documentRecords[documentID]; if (!record) return ""; - let offset = this.start + record.svgDocOffset; - this.parser.currentPosition = offset; + let offset4 = this.start + record.svgDocOffset; + this.parser.currentPosition = offset4; return this.parser.readBytes(record.svgDocLength); } getDocumentForGlyph(glyphID) { @@ -14603,14 +22756,14 @@ var VariationAxisRecord = class { } }; var InstanceRecord = class { - constructor(p22, axisCount, size) { + constructor(p22, axisCount, size4) { let start = p22.currentPosition; this.subfamilyNameID = p22.uint16; p22.uint16; this.coordinates = [...new Array(axisCount)].map( (_) => p22.fixed ); - if (p22.currentPosition - start < size) { + if (p22.currentPosition - start < size4) { this.postScriptNameID = p22.uint16; } } @@ -14661,8 +22814,8 @@ var glyf = class extends SimpleTable { constructor(dict, dataview) { super(dict, dataview); } - getGlyphData(offset, length) { - this.parser.currentPosition = this.tableStart + offset; + getGlyphData(offset4, length) { + this.parser.currentPosition = this.tableStart + offset4; return this.parser.readBytes(length); } }; @@ -14687,9 +22840,9 @@ var loca = class extends SimpleTable { } } getGlyphDataOffsetAndLength(glyphID) { - let offset = this.offsets[glyphID] * this.x2 ? 2 : 1; + let offset4 = this.offsets[glyphID] * this.x2 ? 2 : 1; let nextOffset = this.offsets[glyphID + 1] * this.x2 ? 2 : 1; - return { offset, length: nextOffset - offset }; + return { offset: offset4, length: nextOffset - offset4 }; } }; var loca$1 = Object.freeze({ __proto__: null, loca }); @@ -15030,13 +23183,13 @@ var kern = class extends SimpleTable { this.version = p22.uint16; this.nTables = p22.uint16; lazy$1(this, `tables`, () => { - let offset = this.tableStart + 4; + let offset4 = this.tableStart + 4; const tables = []; for (let i2 = 0; i2 < this.nTables; i2++) { - p22.currentPosition = offset; + p22.currentPosition = offset4; let subtable = new KernSubTable(p22); tables.push(subtable); - offset += subtable; + offset4 += subtable; } return tables; }); @@ -15254,8 +23407,8 @@ var LongVertMetric = class { var vmtx$1 = Object.freeze({ __proto__: null, vmtx }); // packages/global-styles-ui/build-module/font-library/utils/make-families-from-faces.mjs -var import_components28 = __toESM(require_components(), 1); -var { kebabCase: kebabCase2 } = unlock(import_components28.privateApis); +var import_components27 = __toESM(require_components(), 1); +var { kebabCase: kebabCase2 } = unlock2(import_components27.privateApis); function makeFamiliesFromFaces(fontFaces) { const fontFamiliesObject = fontFaces.reduce( (acc, item) => { @@ -15276,11 +23429,11 @@ function makeFamiliesFromFaces(fontFaces) { } // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs -var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); function UploadFonts() { - const { installFonts } = (0, import_element20.useContext)(FontLibraryContext); - const [isUploading, setIsUploading] = (0, import_element20.useState)(false); - const [notice, setNotice] = (0, import_element20.useState)(null); + const { installFonts } = (0, import_element35.useContext)(FontLibraryContext); + const [isUploading, setIsUploading] = (0, import_element35.useState)(false); + const [notice, setNotice] = (0, import_element35.useState)(null); const handleDropZone = (files) => { handleFilesUpload(files); }; @@ -15398,32 +23551,32 @@ function UploadFonts() { } setIsUploading(false); }; - return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ - /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.DropZone, { onFilesDrop: handleDropZone }), - /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_components29.__experimentalVStack, { className: "font-library__local-fonts", justify: "start", children: [ - notice && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)( - import_components29.Notice, + return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components28.DropZone, { onFilesDrop: handleDropZone }), + /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_components28.__experimentalVStack, { className: "font-library__local-fonts", justify: "start", children: [ + notice && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)( + import_components28.Notice, { status: notice.type, __unstableHTML: true, onRemove: () => setNotice(null), children: [ notice.message, - notice.errors && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("ul", { children: notice.errors.map((error, index) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { children: error }, index)) }) + notice.errors && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("ul", { children: notice.errors.map((error, index2) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("li", { children: error }, index2)) }) ] } ), - isUploading && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "font-library__upload-area", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.ProgressBar, {}) }) }), - !isUploading && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( - import_components29.FormFileUpload, + isUploading && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components28.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "font-library__upload-area", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components28.ProgressBar, {}) }) }), + !isUploading && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + import_components28.FormFileUpload, { accept: ALLOWED_FILE_EXTENSIONS.map( (ext) => `.${ext}` ).join(","), multiple: true, onChange: onFilesUpload, - render: ({ openFileDialog }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( - import_components29.Button, + render: ({ openFileDialog }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( + import_components28.Button, { __next40pxDefaultSize: true, className: "font-library__upload-area", @@ -15433,7 +23586,7 @@ function UploadFonts() { ) } ), - /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.__experimentalText, { className: "font-library__upload-area__text", children: (0, import_i18n17.__)( + /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components28.__experimentalText, { className: "font-library__upload-area__text", children: (0, import_i18n17.__)( "Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2." ) }) ] }) @@ -15442,8 +23595,8 @@ function UploadFonts() { var upload_fonts_default = UploadFonts; // packages/global-styles-ui/build-module/font-library/modal.mjs -var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); -var { Tabs } = unlock(import_components30.privateApis); +var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); +var { Tabs } = unlock2(import_components29.privateApis); var DEFAULT_TAB = { id: "installed-fonts", title: (0, import_i18n18._x)("Library", "Font library") @@ -15455,36 +23608,36 @@ var UPLOAD_TAB = { // packages/global-styles-ui/build-module/font-family-item.mjs var import_i18n19 = __toESM(require_i18n(), 1); -var import_components31 = __toESM(require_components(), 1); -var import_element21 = __toESM(require_element(), 1); -var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); +var import_components30 = __toESM(require_components(), 1); +var import_element36 = __toESM(require_element(), 1); +var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-families.mjs -var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes-count.mjs var import_i18n21 = __toESM(require_i18n(), 1); -var import_components33 = __toESM(require_components(), 1); -var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); +var import_components32 = __toESM(require_components(), 1); +var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-typography.mjs -var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-typography-element.mjs var import_i18n23 = __toESM(require_i18n(), 1); -var import_components35 = __toESM(require_components(), 1); -var import_element24 = __toESM(require_element(), 1); +var import_components34 = __toESM(require_components(), 1); +var import_element39 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/typography-panel.mjs var import_block_editor6 = __toESM(require_block_editor(), 1); -var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); -var { useSettingsForBlockElement: useSettingsForBlockElement4, TypographyPanel: StylesTypographyPanel2 } = unlock(import_block_editor6.privateApis); +var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); +var { useSettingsForBlockElement: useSettingsForBlockElement4, TypographyPanel: StylesTypographyPanel2 } = unlock2(import_block_editor6.privateApis); // packages/global-styles-ui/build-module/typography-preview.mjs -var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-typography-element.mjs -var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); var elements = { text: { description: (0, import_i18n23.__)("Manage the fonts used on the site."), @@ -15510,47 +23663,47 @@ var elements = { // packages/global-styles-ui/build-module/screen-colors.mjs var import_i18n25 = __toESM(require_i18n(), 1); -var import_components38 = __toESM(require_components(), 1); +var import_components37 = __toESM(require_components(), 1); var import_block_editor7 = __toESM(require_block_editor(), 1); // packages/global-styles-ui/build-module/palette.mjs -var import_components37 = __toESM(require_components(), 1); +var import_components36 = __toESM(require_components(), 1); var import_i18n24 = __toESM(require_i18n(), 1); -var import_element25 = __toESM(require_element(), 1); +var import_element40 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/color-indicator-wrapper.mjs -var import_components36 = __toESM(require_components(), 1); -var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); +var import_components35 = __toESM(require_components(), 1); +var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/palette.mjs -var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-colors.mjs -var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); -var { useSettingsForBlockElement: useSettingsForBlockElement5, ColorPanel: StylesColorPanel2 } = unlock( +var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); +var { useSettingsForBlockElement: useSettingsForBlockElement5, ColorPanel: StylesColorPanel2 } = unlock2( import_block_editor7.privateApis ); // packages/global-styles-ui/build-module/screen-color-palette.mjs var import_i18n28 = __toESM(require_i18n(), 1); -var import_components43 = __toESM(require_components(), 1); +var import_components42 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/color-palette-panel.mjs var import_compose4 = __toESM(require_compose(), 1); -var import_components41 = __toESM(require_components(), 1); +var import_components40 = __toESM(require_components(), 1); var import_i18n26 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/variations/variations-color.mjs -var import_components40 = __toESM(require_components(), 1); +var import_components39 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/preview-colors.mjs -var import_components39 = __toESM(require_components(), 1); +var import_components38 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/preset-colors.mjs -var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); function PresetColors() { const { paletteColors } = useStylesPreviewColors(); - return paletteColors.slice(0, 4).map(({ slug, color }, index) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( + return paletteColors.slice(0, 4).map(({ slug, color }, index2) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( "div", { style: { @@ -15559,12 +23712,12 @@ function PresetColors() { background: color } }, - `${slug}-${index}` + `${slug}-${index2}` )); } // packages/global-styles-ui/build-module/preview-colors.mjs -var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); var firstFrameVariants2 = { start: { scale: 1, @@ -15580,22 +23733,22 @@ var StylesPreviewColors = ({ isFocused, withHoverView }) => { - return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( preview_wrapper_default, { label, isFocused, withHoverView, - children: ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( - import_components39.__unstableMotion.div, + children: ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + import_components38.__unstableMotion.div, { variants: firstFrameVariants2, style: { height: "100%", overflow: "hidden" }, - children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( - import_components39.__experimentalHStack, + children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + import_components38.__experimentalHStack, { spacing: 0, justify: "center", @@ -15603,7 +23756,7 @@ var StylesPreviewColors = ({ height: "100%", overflow: "hidden" }, - children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PresetColors, {}) + children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PresetColors, {}) } ) }, @@ -15615,7 +23768,7 @@ var StylesPreviewColors = ({ var preview_colors_default = StylesPreviewColors; // packages/global-styles-ui/build-module/variations/variations-color.mjs -var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); var propertiesToFilter2 = ["color"]; function ColorVariations({ title, @@ -15625,71 +23778,71 @@ function ColorVariations({ if (colorVariations?.length <= 1) { return null; } - return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_components40.__experimentalVStack, { spacing: 3, children: [ - title && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Subtitle, { level: 3, children: title }), - /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components40.__experimentalGrid, { gap, children: colorVariations.map((variation, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_components39.__experimentalVStack, { spacing: 3, children: [ + title && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Subtitle, { level: 3, children: title }), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_components39.__experimentalGrid, { gap, children: colorVariations.map((variation, index2) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( Variation, { variation, isPill: true, properties: propertiesToFilter2, showTooltip: true, - children: () => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(preview_colors_default, {}) + children: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(preview_colors_default, {}) }, - index + index2 )) }) ] }); } // packages/global-styles-ui/build-module/color-palette-panel.mjs -var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/gradients-palette-panel.mjs var import_compose5 = __toESM(require_compose(), 1); -var import_components42 = __toESM(require_components(), 1); +var import_components41 = __toESM(require_components(), 1); var import_i18n27 = __toESM(require_i18n(), 1); -var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-color-palette.mjs -var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); -var { Tabs: Tabs2 } = unlock(import_components43.privateApis); +var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); +var { Tabs: Tabs2 } = unlock2(import_components42.privateApis); // packages/global-styles-ui/build-module/screen-background.mjs var import_i18n29 = __toESM(require_i18n(), 1); var import_block_editor9 = __toESM(require_block_editor(), 1); -var import_components44 = __toESM(require_components(), 1); +var import_components43 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/background-panel.mjs var import_block_editor8 = __toESM(require_block_editor(), 1); -var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); -var { BackgroundPanel: StylesBackgroundPanel2 } = unlock( +var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); +var { BackgroundPanel: StylesBackgroundPanel2 } = unlock2( import_block_editor8.privateApis ); // packages/global-styles-ui/build-module/screen-background.mjs -var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); -var { useHasBackgroundPanel: useHasBackgroundPanel3 } = unlock(import_block_editor9.privateApis); +var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); +var { useHasBackgroundPanel: useHasBackgroundPanel3 } = unlock2(import_block_editor9.privateApis); // packages/global-styles-ui/build-module/shadows-panel.mjs -var import_components46 = __toESM(require_components(), 1); +var import_components45 = __toESM(require_components(), 1); var import_i18n31 = __toESM(require_i18n(), 1); -var import_element26 = __toESM(require_element(), 1); +var import_element41 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/confirm-reset-shadow-dialog.mjs -var import_components45 = __toESM(require_components(), 1); +var import_components44 = __toESM(require_components(), 1); var import_i18n30 = __toESM(require_i18n(), 1); -var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/shadows-panel.mjs -var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); -var { Menu } = unlock(import_components46.privateApis); +var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +var { Menu } = unlock2(import_components45.privateApis); // packages/global-styles-ui/build-module/shadows-edit-panel.mjs -var import_components47 = __toESM(require_components(), 1); +var import_components46 = __toESM(require_components(), 1); var import_i18n32 = __toESM(require_i18n(), 1); -var import_element27 = __toESM(require_element(), 1); -var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); -var { Menu: Menu2 } = unlock(import_components47.privateApis); +var import_element42 = __toESM(require_element(), 1); +var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu2 } = unlock2(import_components46.privateApis); var customShadowMenuItems = [ { label: (0, import_i18n32.__)("Rename"), @@ -15708,7 +23861,7 @@ var presetShadowMenuItems = [ ]; // packages/global-styles-ui/build-module/screen-shadows.mjs -var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-layout.mjs var import_i18n33 = __toESM(require_i18n(), 1); @@ -15716,35 +23869,35 @@ var import_block_editor11 = __toESM(require_block_editor(), 1); // packages/global-styles-ui/build-module/dimensions-panel.mjs var import_block_editor10 = __toESM(require_block_editor(), 1); -var import_element28 = __toESM(require_element(), 1); -var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); -var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock(import_block_editor10.privateApis); +var import_element43 = __toESM(require_element(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock2(import_block_editor10.privateApis); // packages/global-styles-ui/build-module/screen-layout.mjs -var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); -var { useHasDimensionsPanel: useHasDimensionsPanel4, useSettingsForBlockElement: useSettingsForBlockElement7 } = unlock( +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +var { useHasDimensionsPanel: useHasDimensionsPanel4, useSettingsForBlockElement: useSettingsForBlockElement7 } = unlock2( import_block_editor11.privateApis ); // packages/global-styles-ui/build-module/screen-style-variations.mjs -var import_components50 = __toESM(require_components(), 1); +var import_components49 = __toESM(require_components(), 1); var import_i18n36 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/style-variations-content.mjs var import_i18n35 = __toESM(require_i18n(), 1); -var import_components49 = __toESM(require_components(), 1); +var import_components48 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/style-variations-container.mjs var import_core_data9 = __toESM(require_core_data(), 1); var import_data9 = __toESM(require_data(), 1); -var import_element29 = __toESM(require_element(), 1); -var import_components48 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_components47 = __toESM(require_components(), 1); var import_i18n34 = __toESM(require_i18n(), 1); -var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); function StyleVariationsContainer({ gap = 2 }) { - const { user } = (0, import_element29.useContext)(GlobalStylesContext); + const { user } = (0, import_element44.useContext)(GlobalStylesContext); const userStyles = user?.styles; const variations = (0, import_data9.useSelect)((select) => { const result = select( @@ -15760,7 +23913,7 @@ function StyleVariationsContainer({ ]); } ); - const themeVariations = (0, import_element29.useMemo)(() => { + const themeVariations = (0, import_element44.useMemo)(() => { const withEmptyVariation = [ { title: (0, import_i18n34.__)("Default"), @@ -15806,14 +23959,14 @@ function StyleVariationsContainer({ if (!fullStyleVariations || fullStyleVariations.length < 1) { return null; } - return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( - import_components48.__experimentalGrid, + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + import_components47.__experimentalGrid, { columns: 2, className: "global-styles-ui-style-variations-container", gap, children: themeVariations.map( - (variation, index) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Variation, { variation, children: (isFocused) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( + (variation, index2) => /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Variation, { variation, children: (isFocused) => /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( preview_styles_default, { label: variation?.title, @@ -15821,7 +23974,7 @@ function StyleVariationsContainer({ isFocused, variation } - ) }, index) + ) }, index2) ) } ); @@ -15829,94 +23982,94 @@ function StyleVariationsContainer({ var style_variations_container_default = StyleVariationsContainer; // packages/global-styles-ui/build-module/style-variations-content.mjs -var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-style-variations.mjs -var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-css.mjs var import_i18n37 = __toESM(require_i18n(), 1); -var import_components51 = __toESM(require_components(), 1); +var import_components50 = __toESM(require_components(), 1); var import_block_editor12 = __toESM(require_block_editor(), 1); -var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); -var { AdvancedPanel: StylesAdvancedPanel2 } = unlock(import_block_editor12.privateApis); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +var { AdvancedPanel: StylesAdvancedPanel2 } = unlock2(import_block_editor12.privateApis); // packages/global-styles-ui/build-module/screen-revisions/index.mjs var import_i18n40 = __toESM(require_i18n(), 1); -var import_components54 = __toESM(require_components(), 1); -var import_element31 = __toESM(require_element(), 1); +var import_components53 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-revisions/use-global-styles-revisions.mjs var import_data10 = __toESM(require_data(), 1); var import_core_data10 = __toESM(require_core_data(), 1); -var import_element30 = __toESM(require_element(), 1); +var import_element45 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-revisions/revisions-buttons.mjs var import_i18n38 = __toESM(require_i18n(), 1); -var import_components52 = __toESM(require_components(), 1); +var import_components51 = __toESM(require_components(), 1); var import_date = __toESM(require_date(), 1); var import_core_data11 = __toESM(require_core_data(), 1); var import_data11 = __toESM(require_data(), 1); var import_keycodes2 = __toESM(require_keycodes(), 1); -var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); var DAY_IN_MILLISECONDS = 60 * 60 * 1e3 * 24; // packages/global-styles-ui/build-module/pagination/index.mjs -var import_components53 = __toESM(require_components(), 1); +var import_components52 = __toESM(require_components(), 1); var import_i18n39 = __toESM(require_i18n(), 1); -var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-revisions/index.mjs -var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs var import_i18n42 = __toESM(require_i18n(), 1); -var import_components56 = __toESM(require_components(), 1); -var import_element32 = __toESM(require_element(), 1); +var import_components55 = __toESM(require_components(), 1); +var import_element47 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-sizes/confirm-reset-font-sizes-dialog.mjs -var import_components55 = __toESM(require_components(), 1); +var import_components54 = __toESM(require_components(), 1); var import_i18n41 = __toESM(require_i18n(), 1); -var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs -var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); -var { Menu: Menu3 } = unlock(import_components56.privateApis); +var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu3 } = unlock2(import_components55.privateApis); // packages/global-styles-ui/build-module/font-sizes/font-size.mjs var import_i18n46 = __toESM(require_i18n(), 1); -var import_components60 = __toESM(require_components(), 1); -var import_element34 = __toESM(require_element(), 1); +var import_components59 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-sizes/font-size-preview.mjs var import_block_editor13 = __toESM(require_block_editor(), 1); var import_i18n43 = __toESM(require_i18n(), 1); -var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/confirm-delete-font-size-dialog.mjs -var import_components57 = __toESM(require_components(), 1); +var import_components56 = __toESM(require_components(), 1); var import_i18n44 = __toESM(require_i18n(), 1); -var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/rename-font-size-dialog.mjs -var import_components58 = __toESM(require_components(), 1); +var import_components57 = __toESM(require_components(), 1); var import_i18n45 = __toESM(require_i18n(), 1); -var import_element33 = __toESM(require_element(), 1); -var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/size-control/index.mjs -var import_components59 = __toESM(require_components(), 1); -var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +var import_components58 = __toESM(require_components(), 1); +var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-size.mjs -var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); -var { Menu: Menu4 } = unlock(import_components60.privateApis); +var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); +var { Menu: Menu4 } = unlock2(import_components59.privateApis); // packages/global-styles-ui/build-module/global-styles-ui.mjs -var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/with-global-styles-provider.mjs -var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); function withGlobalStylesProvider(Component) { return function WrappedComponent({ value, @@ -15924,13 +24077,13 @@ function withGlobalStylesProvider(Component) { onChange, ...props }) { - return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( GlobalStylesProvider, { value, baseValue, onChange, - children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Component, { ...props }) + children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Component, { ...props }) } ); }; @@ -15946,7 +24099,7 @@ var ColorVariations2 = withGlobalStylesProvider(ColorVariations); var TypographyVariations2 = withGlobalStylesProvider(TypographyVariations); // packages/global-styles-ui/build-module/font-library/font-library.mjs -var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); function FontLibrary({ value, baseValue, @@ -15956,48 +24109,48 @@ function FontLibrary({ let content; switch (activeTab) { case "upload-fonts": - content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(upload_fonts_default, {}); + content = /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(upload_fonts_default, {}); break; case "installed-fonts": - content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(installed_fonts_default, {}); + content = /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(installed_fonts_default, {}); break; default: - content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(font_collection_default, { slug: activeTab }); + content = /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(font_collection_default, { slug: activeTab }); } - return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( GlobalStylesProvider, { value, baseValue, onChange, - children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(context_default, { children: content }) + children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(context_default, { children: content }) } ); } // routes/font-list/lock-unlock.ts -var import_private_apis2 = __toESM(require_private_apis()); -var { unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( +var import_private_apis3 = __toESM(require_private_apis()); +var { unlock: unlock3 } = (0, import_private_apis3.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/font-list-route" ); // routes/font-list/style.scss -if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='7667192f29']")) { +if (typeof document !== "undefined" && true && !document.head.querySelector("style[data-wp-hash='511950e422']")) { const style = document.createElement("style"); - style.setAttribute("data-wp-hash", "7667192f29"); - style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); + style.setAttribute("data-wp-hash", "511950e422"); + style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid transparent}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid transparent;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid transparent;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid rgba(0,0,0,.1);outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:rgba(0,0,0,.3)}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel{flex:1 1 auto}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input textarea{flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')); document.head.appendChild(style); } // routes/font-list/stage.tsx -var { Tabs: Tabs3 } = unlock2(import_components62.privateApis); -var { useGlobalStyles } = unlock2(import_editor.privateApis); +var { Tabs: Tabs3 } = unlock3(import_components61.privateApis); +var { useGlobalStyles } = unlock3(import_editor.privateApis); function FontLibraryPage() { const { records: collections = [] } = (0, import_core_data12.useEntityRecords)("root", "fontCollection", { _fields: "slug,name,description" }); - const [activeTab, setActiveTab] = (0, import_element36.useState)("installed-fonts"); + const [activeTab, setActiveTab] = (0, import_element51.useState)("installed-fonts"); const { base, user, setUser, isReady } = useGlobalStyles(); const canUserCreate = (0, import_data13.useSelect)((select) => { return select(import_core_data12.store).canUser("create", { @@ -16062,6 +24215,28 @@ export { }; /*! Bundled license information: +use-sync-external-store/cjs/use-sync-external-store-shim.development.js: + (** + * @license React + * use-sync-external-store-shim.development.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: + (** + * @license React + * use-sync-external-store-shim/with-selector.development.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + is-plain-object/dist/is-plain-object.mjs: (*! * is-plain-object <https://github.com/jonschlinkert/is-plain-object> diff --git a/src/wp-includes/build/routes/font-list/content.min.asset.php b/src/wp-includes/build/routes/font-list/content.min.asset.php index 5b49ca4c61012..b9f65705e3eff 100644 --- a/src/wp-includes/build/routes/font-list/content.min.asset.php +++ b/src/wp-includes/build/routes/font-list/content.min.asset.php @@ -1 +1 @@ -<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '16885948849bd50299be'); \ No newline at end of file +<?php return array('dependencies' => array('react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-date', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-primitives', 'wp-private-apis', 'wp-style-engine', 'wp-theme'), 'module_dependencies' => array(array('id' => '@wordpress/a11y', 'import' => 'static'), array('id' => '@wordpress/route', 'import' => 'static')), 'version' => '24d63f2a81bdf5c46a29'); \ No newline at end of file diff --git a/src/wp-includes/build/routes/font-list/content.min.js b/src/wp-includes/build/routes/font-list/content.min.js index be1be4cf3a141..d6d5cabb743fd 100644 --- a/src/wp-includes/build/routes/font-list/content.min.js +++ b/src/wp-includes/build/routes/font-list/content.min.js @@ -1,14 +1,36 @@ -var Sf=Object.create;var ga=Object.defineProperty;var Cf=Object.getOwnPropertyDescriptor;var _f=Object.getOwnPropertyNames;var Ff=Object.getPrototypeOf,kf=Object.prototype.hasOwnProperty;var dt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var He=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Of=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of _f(t))!kf.call(e,s)&&s!==r&&ga(e,s,{get:()=>t[s],enumerable:!(o=Cf(t,s))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?Sf(Ff(e)):{},Of(t||!e||!e.__esModule?ga(r,"default",{value:e,enumerable:!0}):r,e));var ie=He((By,ya)=>{ya.exports=window.wp.i18n});var ve=He((Ny,ba)=>{ba.exports=window.wp.element});var Rr=He((zy,wa)=>{wa.exports=window.React});var D=He((My,Ca)=>{Ca.exports=window.ReactJSXRuntime});var Ir=He((vv,qa)=>{qa.exports=window.wp.primitives});var pr=He((Lv,Ya)=>{Ya.exports=window.wp.compose});var Ws=He((Bv,Za)=>{Za.exports=window.wp.privateApis});var X=He((Gv,ti)=>{ti.exports=window.wp.components});var fi=He((e1,ui)=>{ui.exports=window.wp.editor});var wt=He((t1,ci)=>{ci.exports=window.wp.coreData});var pt=He((r1,di)=>{di.exports=window.wp.data});var Br=He((o1,pi)=>{pi.exports=window.wp.blocks});var it=He((s1,mi)=>{mi.exports=window.wp.blockEditor});var gi=He((f1,hi)=>{hi.exports=window.wp.styleEngine});var xi=He((S1,wi)=>{"use strict";wi.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var o,s,n;if(Array.isArray(t)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(!e(t[s],r[s]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;for(s of t.entries())if(!e(s[1],r.get(s[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(s of t.entries())if(!r.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(o=t.length,o!=r.length)return!1;for(s=o;s--!==0;)if(t[s]!==r[s])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(n=Object.keys(t),o=n.length,o!==Object.keys(r).length)return!1;for(s=o;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,n[s]))return!1;for(s=o;s--!==0;){var a=n[s];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Fi=He((_1,_i)=>{"use strict";var pc=function(t){return mc(t)&&!hc(t)};function mc(e){return!!e&&typeof e=="object"}function hc(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||vc(e)}var gc=typeof Symbol=="function"&&Symbol.for,yc=gc?Symbol.for("react.element"):60103;function vc(e){return e.$$typeof===yc}function bc(e){return Array.isArray(e)?[]:{}}function lo(e,t){return t.clone!==!1&&t.isMergeableObject(e)?Nr(bc(e),e,t):e}function wc(e,t,r){return e.concat(t).map(function(o){return lo(o,r)})}function xc(e,t){if(!t.customMerge)return Nr;var r=t.customMerge(e);return typeof r=="function"?r:Nr}function Sc(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function Si(e){return Object.keys(e).concat(Sc(e))}function Ci(e,t){try{return t in e}catch{return!1}}function Cc(e,t){return Ci(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function _c(e,t,r){var o={};return r.isMergeableObject(e)&&Si(e).forEach(function(s){o[s]=lo(e[s],r)}),Si(t).forEach(function(s){Cc(e,s)||(Ci(e,s)&&r.isMergeableObject(t[s])?o[s]=xc(s,r)(e[s],t[s],r):o[s]=lo(t[s],r))}),o}function Nr(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||wc,r.isMergeableObject=r.isMergeableObject||pc,r.cloneUnlessOtherwiseSpecified=lo;var o=Array.isArray(t),s=Array.isArray(e),n=o===s;return n?o?r.arrayMerge(e,t,r):_c(e,t,r):lo(t,r)}Nr.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(o,s){return Nr(o,s,r)},{})};var Fc=Nr;_i.exports=Fc});var kn=He((Gb,Sl)=>{Sl.exports=window.wp.keycodes});var Ol=He(($b,kl)=>{kl.exports=window.wp.apiFetch});var ef=He((S_,$u)=>{$u.exports=window.wp.date});function va(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(r=va(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function Tf(){for(var e,t,r=0,o="",s=arguments.length;r<s;r++)(e=arguments[r])&&(t=va(e))&&(o&&(o+=" "),o+=t);return o}var Ze=Tf;var Sa=u(Rr(),1),xa={};function Ps(e,t){let r=Sa.useRef(xa);return r.current===xa&&(r.current=e(t)),r}function Pf(e,t){return function(o,...s){let n=new URL(e);return n.searchParams.set("code",o.toString()),s.forEach(a=>n.searchParams.append("args[]",a)),`${t} error #${o}; visit ${n} for the full message.`}}var Af=Pf("https://base-ui.com/production-error","Base UI"),_a=Af;var fr=u(Rr(),1);function As(e,t,r,o){let s=Ps(ka).current;return Rf(s,e,t,r,o)&&Oa(s,[e,t,r,o]),s.callback}function Fa(e){let t=Ps(ka).current;return Ef(t,e)&&Oa(t,e),t.callback}function ka(){return{callback:null,cleanup:null,refs:[]}}function Rf(e,t,r,o,s){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==s}function Ef(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Oa(e,t){if(e.refs=t,t.every(r=>r==null)){e.callback=null;return}e.callback=r=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),r!=null){let o=Array(t.length).fill(null);for(let s=0;s<t.length;s+=1){let n=t[s];if(n!=null)switch(typeof n){case"function":{let a=n(r);typeof a=="function"&&(o[s]=a);break}case"object":{n.current=r;break}default:}}e.cleanup=()=>{for(let s=0;s<t.length;s+=1){let n=t[s];if(n!=null)switch(typeof n){case"function":{let a=o[s];typeof a=="function"?a():n(null);break}case"object":{n.current=null;break}default:}}}}}}var Aa=u(Rr(),1);var Ta=u(Rr(),1),If=parseInt(Ta.version,10);function Pa(e){return If>=e}function Rs(e){if(!Aa.isValidElement(e))return null;let t=e,r=t.props;return(Pa(19)?r?.ref:t.ref)??null}function ro(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}var Zy=Object.freeze([]),Er=Object.freeze({});function Ra(e,t){let r={};for(let o in e){let s=e[o];if(t?.hasOwnProperty(o)){let n=t[o](s);n!=null&&Object.assign(r,n);continue}s===!0?r[`data-${o.toLowerCase()}`]="":s&&(r[`data-${o.toLowerCase()}`]=s.toString())}return r}function Ea(e,t){return typeof e=="function"?e(t):e}function Ia(e,t){return typeof e=="function"?e(t):e}var Es={};function ur(e,t,r,o,s){if(!r&&!o&&!s&&!e)return To(t);let n=To(e);return t&&(n=oo(n,t)),r&&(n=oo(n,r)),o&&(n=oo(n,o)),s&&(n=oo(n,s)),n}function La(e){if(e.length===0)return Es;if(e.length===1)return To(e[0]);let t=To(e[0]);for(let r=1;r<e.length;r+=1)t=oo(t,e[r]);return t}function To(e){return Is(e)?{...Va(e,Es)}:Lf(e)}function oo(e,t){return Is(t)?Va(t,e):Bf(e,t)}function Lf(e){let t={...e};for(let r in t){let o=t[r];Ba(r,o)&&(t[r]=Na(o))}return t}function Bf(e,t){if(!t)return e;for(let r in t){let o=t[r];switch(r){case"style":{e[r]=ro(e.style,o);break}case"className":{e[r]=Ls(e.className,o);break}default:Ba(r,o)?e[r]=Vf(e[r],o):e[r]=o}}return e}function Ba(e,t){let r=e.charCodeAt(0),o=e.charCodeAt(1),s=e.charCodeAt(2);return r===111&&o===110&&s>=65&&s<=90&&(typeof t=="function"||typeof t>"u")}function Is(e){return typeof e=="function"}function Va(e,t){return Is(e)?e(t):e??Es}function Vf(e,t){return t?e?(...r)=>{let o=r[0];if(Da(o)){let n=o;za(n);let a=t(...r);return n.baseUIHandlerPrevented||e?.(...r),a}let s=t(...r);return e?.(...r),s}:Na(t):e}function Na(e){return e&&((...t)=>{let r=t[0];return Da(r)&&za(r),e(...t)})}function za(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Ls(e,t){return t?e?t+" "+e:t:e}function Da(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Bs=u(Rr(),1);function Ma(e,t,r={}){let o=t.render,s=Nf(t,r);if(r.enabled===!1)return null;let n=r.state??Er;return Mf(e,o,s,n)}function Nf(e,t={}){let{className:r,style:o,render:s}=e,{state:n=Er,ref:a,props:l,stateAttributesMapping:h,enabled:f=!0}=t,c=f?Ea(r,n):void 0,d=f?Ia(o,n):void 0,m=f?Ra(n,h):Er,g=f&&l?zf(l):void 0,y=f?ro(m,g)??{}:Er;return typeof document<"u"&&(f?Array.isArray(a)?y.ref=Fa([y.ref,Rs(s),...a]):y.ref=As(y.ref,Rs(s),a):As(null,null)),f?(c!==void 0&&(y.className=Ls(y.className,c)),d!==void 0&&(y.style=ro(y.style,d)),y):Er}function zf(e){return Array.isArray(e)?La(e):ur(void 0,e)}var Df=Symbol.for("react.lazy");function Mf(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let s=ur(r,t.props);s.ref=r.ref;let n=t;return n?.$$typeof===Df&&(n=fr.Children.toArray(t)[0]),fr.cloneElement(n,s)}if(e&&typeof e=="string")return jf(e,r);throw new Error(_a(8))}function jf(e,t){return e==="button"?(0,Bs.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Bs.createElement)("img",{alt:"",...t,key:t.key}):fr.createElement(e,t)}function Po(e){return Ma(e.defaultTagName??"div",e,e)}var Ua=u(ve(),1),Vs="data-wp-hash";function Ns(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Uf(document)),e.__wpStyleRuntime}function Gf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Vs}]`))if(r.getAttribute(Vs)===t)return!0;return!1}function Wa(e,t,r){if(!e.head)return;let o=Ns(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Gf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Vs,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Uf(e){let t=Ns();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Wa(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Ha(e,t){let r=Ns();r.styles.set(e,t);for(let o of r.documents.keys())Wa(o,e,t)}typeof process>"u",Ha("0c8601dd83",'@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}');var ja={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",Ha("1fb29d3a3c","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,#0000);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 #0000);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,#0000);border-color:var(--_gcd-input-border-color-disabled,#0000);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid #0000)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid #0000);transition:var(--_gcd-a-transition,none)}");var Ga={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},Ao=(0,Ua.forwardRef)(function({variant:t="body-md",render:r,className:o,...s},n){return Po({render:r,defaultTagName:"span",ref:n,props:ur(s,{className:Ze(ja.text,Ga.heading,Ga.p,ja[t],o)})})});var Ro=u(ve(),1),so=(0,Ro.forwardRef)(({icon:e,size:t=24,...r},o)=>(0,Ro.cloneElement)(e,{width:t,height:t,...r,ref:o}));var Eo=u(Ir(),1),zs=u(D(),1),cr=(0,zs.jsx)(Eo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,zs.jsx)(Eo.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var Io=u(Ir(),1),Ds=u(D(),1),dr=(0,Ds.jsx)(Io.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ds.jsx)(Io.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Lo=u(Ir(),1),Ms=u(D(),1),js=(0,Ms.jsx)(Lo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ms.jsx)(Lo.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Bo=u(Ir(),1),Gs=u(D(),1),Vo=(0,Gs.jsx)(Bo.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Gs.jsx)(Bo.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var No=u(Ir(),1),Us=u(D(),1),zo=(0,Us.jsx)(No.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Us.jsx)(No.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var Xa=u(ve(),1),Hs="data-wp-hash";function qs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Hf(document)),e.__wpStyleRuntime}function Wf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Hs}]`))if(r.getAttribute(Hs)===t)return!0;return!1}function Ka(e,t,r){if(!e.head)return;let o=qs(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Wf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Hs,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Hf(e){let t=qs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Ka(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function qf(e,t){let r=qs();r.styles.set(e,t);for(let o of r.documents.keys())Ka(o,e,t)}typeof process>"u",qf("b51ff41489","@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}");var Yf={stack:"_19ce0419607e1896__stack"},Zf={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},Lr=(0,Xa.forwardRef)(function({direction:t,gap:r,align:o,justify:s,wrap:n,render:a,...l},h){let f={gap:r&&Zf[r],alignItems:o,justifyContent:s,flexDirection:t,flexWrap:n};return Po({render:a,ref:h,props:ur(l,{style:f,className:Yf.stack})})});var Ja=u(ve(),1),Qa=u(D(),1),$a=(0,Ja.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...s},n)=>(0,Qa.jsx)(o,{ref:n,className:Ze("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...s,children:e}));$a.displayName="NavigableRegion";var ei=$a;var ri=u(X(),1),{Fill:oi,Slot:si}=(0,ri.createSlotFill)("SidebarToggle");var Ft=u(D(),1),Ys="data-wp-hash";function Zs(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&Kf(document)),e.__wpStyleRuntime}function Xf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ys}]`))if(r.getAttribute(Ys)===t)return!0;return!1}function ni(e,t,r){if(!e.head)return;let o=Zs(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Xf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Ys,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function Kf(e){let t=Zs();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)ni(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Jf(e,t){let r=Zs();r.styles.set(e,t);for(let o of r.documents.keys())ni(o,e,t)}typeof process>"u",Jf("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var mr={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function ai({headingLevel:e=1,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,actions:a,showSidebarToggle:l=!0}){let h=`h${e}`;return(0,Ft.jsxs)(Lr,{direction:"column",className:mr.header,children:[(0,Ft.jsxs)(Lr,{className:mr["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,Ft.jsxs)(Lr,{direction:"row",gap:"sm",align:"center",justify:"start",children:[l&&(0,Ft.jsx)(si,{bubblesVirtually:!0,className:mr["sidebar-toggle-slot"]}),o&&(0,Ft.jsx)("div",{className:mr["header-visual"],"aria-hidden":"true",children:o}),s&&(0,Ft.jsx)(Ao,{className:mr["header-title"],render:(0,Ft.jsx)(h,{}),variant:"heading-lg",children:s}),t,r]}),a&&(0,Ft.jsx)(Lr,{align:"center",className:mr["header-actions"],direction:"row",gap:"sm",children:a})]}),n&&(0,Ft.jsx)(Ao,{render:(0,Ft.jsx)("p",{}),variant:"body-md",className:mr["header-subtitle"],children:n})]})}var no=u(D(),1),Ks="data-wp-hash";function Js(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&$f(document)),e.__wpStyleRuntime}function Qf(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ks}]`))if(r.getAttribute(Ks)===t)return!0;return!1}function ii(e,t,r){if(!e.head)return;let o=Js(),s=o.injectedStyles.get(e);if(s||(s=new Set,o.injectedStyles.set(e,s)),s.has(t))return;if(Qf(e,t)){s.add(t);return}let n=e.createElement("style");n.setAttribute(Ks,t),n.appendChild(e.createTextNode(r)),e.head.appendChild(n),s.add(t)}function $f(e){let t=Js();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)ii(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function ec(e,t){let r=Js();r.styles.set(e,t);for(let o of r.documents.keys())ii(o,e,t)}typeof process>"u",ec("aa9c241ccc","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#e4e4e4);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Xs={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function li({headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,children:a,className:l,actions:h,ariaLabel:f,hasPadding:c=!1,showSidebarToggle:d=!0}){let m=Ze(Xs.page,l);return(0,no.jsxs)(ei,{className:m,ariaLabel:f??(typeof s=="string"?s:""),children:[(s||t||r||h||o)&&(0,no.jsx)(ai,{headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:s,subTitle:n,actions:h,showSidebarToggle:d}),c?(0,no.jsx)("div",{className:Ze(Xs.content,Xs["has-padding"]),children:a}):a]})}li.SidebarToggleFill=oi;var Qs=li;var Jr=u(ie()),gf=u(X()),yf=u(fi()),Fs=u(wt()),vf=u(pt()),bf=u(ve());var pf=u(X(),1),mf=u(Br(),1),_y=u(pt(),1),Fy=u(it(),1),ia=u(ve(),1),ky=u(pr(),1);function Vr(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let n of t){let a=s[n];s=s[n]=Array.isArray(a)?[...a]:{...a}}return s[o]=r,e}var xt=(e,t,r)=>{let o=Array.isArray(t)?t:t.split("."),s=e;return o.forEach(n=>{s=s?.[n]}),s??r};var tc=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.minWidth","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function $s(e,t,r){let o=r?".blocks."+r:"",s=t?"."+t:"",n=`settings${o}${s}`,a=`settings${s}`;if(t)return xt(e,n)??xt(e,a);let l={};return tc.forEach(h=>{let f=xt(e,`settings${o}.${h}`)??xt(e,`settings.${h}`);f!==void 0&&(l=Vr(l,h.split("."),f))}),l}function en(e,t,r,o){let s=o?".blocks."+o:"",n=t?"."+t:"",a=`settings${s}${n}`;return Vr(e,a.split("."),r)}var uc=u(gi(),1);var rc="1600px",oc="320px",sc=1,nc=.25,ac=.75,ic="14px";function yi({minimumFontSize:e,maximumFontSize:t,fontSize:r,minimumViewportWidth:o=oc,maximumViewportWidth:s=rc,scaleFactor:n=sc,minimumFontSizeLimit:a}){if(a=It(a)?a:ic,r){let b=It(r);if(!b?.unit||!b?.value)return null;let P=It(a,{coerceTo:b.unit});if(P?.value&&!e&&!t&&b?.value<=P?.value)return null;if(t||(t=`${b.value}${b.unit}`),!e){let q=b.unit==="px"?b.value:b.value*16,I=Math.min(Math.max(1-.075*Math.log2(q),nc),ac),N=ao(b.value*I,3);P?.value&&N<P?.value?e=`${P.value}${P.unit}`:e=`${N}${b.unit}`}}let l=It(e),h=l?.unit||"rem",f=It(t,{coerceTo:h});if(!l||!f)return null;let c=It(e,{coerceTo:"rem"}),d=It(s,{coerceTo:h}),m=It(o,{coerceTo:h});if(!d||!m||!c)return null;let g=d.value-m.value;if(!g)return null;let y=ao(m.value/100,3),T=ao(y,3)+h,O=100*((f.value-l.value)/g),_=ao((O||1)*n,3),S=`${c.value}${c.unit} + ((1vw - ${T}) * ${_})`;return`clamp(${e}, ${S}, ${t})`}function It(e,t={}){if(typeof e!="string"&&typeof e!="number")return null;isFinite(e)&&(e=`${e}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:s}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...t},n=s?.join("|"),a=new RegExp(`^(\\d*\\.?\\d+)(${n}){1,1}$`),l=e.toString().match(a);if(!l||l.length<3)return null;let[,h,f]=l,c=parseFloat(h);return r==="px"&&(f==="em"||f==="rem")&&(c=c*o,f=r),f==="px"&&(r==="em"||r==="rem")&&(c=c/o,f=r),(r==="em"||r==="rem")&&(f==="em"||f==="rem")&&(f=r),f?{value:ao(c,3),unit:f}:null}function ao(e,t=3){let r=Math.pow(10,t);return Math.round(e*r)/r}function tn(e){let t=e?.fluid;return t===!0||t&&typeof t=="object"&&Object.keys(t).length>0}function lc(e){let t=e?.typography??{},r=e?.layout,o=It(r?.wideSize)?r?.wideSize:null;return tn(t)&&o?{fluid:{maxViewportWidth:o,...typeof t.fluid=="object"?t.fluid:{}}}:{fluid:t?.fluid}}function vi(e,t){let{size:r}=e;if(!r||r==="0"||e?.fluid===!1||!tn(t?.typography)&&!tn(e))return r;let o=lc(t)?.fluid??{},s=yi({minimumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.min,maximumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return s||r}var fc=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:e})=>`url( '#wp-duotone-${e}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(e,t)=>vi(e,t),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:e})=>e,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function bi(e,t,r=[],o="slug",s){let n=[t?xt(e,["blocks",t,...r]):void 0,xt(e,r)].filter(Boolean);for(let a of n)if(a){let l=["custom","theme","default"];for(let h of l){let f=a[h];if(f){let c=f.find(d=>d[o]===s);if(c)return o==="slug"||bi(e,t,r,"slug",c.slug)[o]===c[o]?c:void 0}}}}function cc(e,t,r,[o,s]=[]){let n=fc.find(l=>l.cssVarInfix===o);if(!n||!e.settings)return r;let a=bi(e.settings,t,n.path,"slug",s);if(a){let{valueKey:l}=n,h=a[l];return Do(e,t,h)}return r}function dc(e,t,r,o=[]){let s=(t?xt(e?.settings??{},["blocks",t,"custom",...o]):void 0)??xt(e?.settings??{},["custom",...o]);return s?Do(e,t,s):r}function Do(e,t,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let f=xt(e,r.ref);if(!f||typeof f=="object"&&"ref"in f)return f;r=f}else return r;let o="var:",s="var(--wp--",n=")",a;if(r.startsWith(o))a=r.slice(o.length).split("|");else if(r.startsWith(s)&&r.endsWith(n))a=r.slice(s.length,-n.length).split("--");else return r;let[l,...h]=a;return l==="preset"?cc(e,t,r,h):l==="custom"?dc(e,t,r,h):r}function Mo(e,t,r,o=!0){let s=t?"."+t:"",n=r?`styles.blocks.${r}${s}`:`styles${s}`;if(!e)return;let a=xt(e,n);return o?Do(e,r,a):a}function rn(e,t,r,o){let s=t?"."+t:"",n=o?`styles.blocks.${o}${s}`:`styles${s}`;return Vr(e,n.split("."),r)}var on=u(xi(),1);function io(e,t){return typeof e!="object"||typeof t!="object"?e===t:(0,on.default)(e?.styles,t?.styles)&&(0,on.default)(e?.settings,t?.settings)}var Ti=u(Fi(),1);function ki(e){return Object.prototype.toString.call(e)==="[object Object]"}function Oi(e){var t,r;return ki(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(ki(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function hr(e,t){return(0,Ti.default)(e,t,{isMergeableObject:Oi,customMerge:r=>{if(r==="backgroundImage")return(o,s)=>s??o}})}var kc={grad:.9,turn:360,rad:360/(2*Math.PI)},Ut=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Xe=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},kt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Vi=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},Pi=function(e){return{r:kt(e.r,0,255),g:kt(e.g,0,255),b:kt(e.b,0,255),a:kt(e.a)}},sn=function(e){return{r:Xe(e.r),g:Xe(e.g),b:Xe(e.b),a:Xe(e.a,3)}},Oc=/^#([0-9a-f]{3,8})$/i,jo=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Ni=function(e){var t=e.r,r=e.g,o=e.b,s=e.a,n=Math.max(t,r,o),a=n-Math.min(t,r,o),l=a?n===t?(r-o)/a:n===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(l<0?l+6:l),s:n?a/n*100:0,v:n/255*100,a:s}},zi=function(e){var t=e.h,r=e.s,o=e.v,s=e.a;t=t/360*6,r/=100,o/=100;var n=Math.floor(t),a=o*(1-r),l=o*(1-(t-n)*r),h=o*(1-(1-t+n)*r),f=n%6;return{r:255*[o,l,a,a,h,o][f],g:255*[h,o,o,l,a,a][f],b:255*[a,a,h,o,o,l][f],a:s}},Ai=function(e){return{h:Vi(e.h),s:kt(e.s,0,100),l:kt(e.l,0,100),a:kt(e.a)}},Ri=function(e){return{h:Xe(e.h),s:Xe(e.s),l:Xe(e.l),a:Xe(e.a,3)}},Ei=function(e){return zi((r=(t=e).s,{h:t.h,s:(r*=((o=t.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:t.a}));var t,r,o},uo=function(e){return{h:(t=Ni(e)).h,s:(s=(200-(r=t.s))*(o=t.v)/100)>0&&s<200?r*o/100/(s<=100?s:200-s)*100:0,l:s/2,a:t.a};var t,r,o,s},Tc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Pc=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ac=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Rc=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ln={string:[[function(e){var t=Oc.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Xe(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Xe(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=Ac.exec(e)||Rc.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:Pi({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=Tc.exec(e)||Pc.exec(e);if(!t)return null;var r,o,s=Ai({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(kc[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Ei(s)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,s=e.a,n=s===void 0?1:s;return Ut(t)&&Ut(r)&&Ut(o)?Pi({r:Number(t),g:Number(r),b:Number(o),a:Number(n)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,s=e.a,n=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var a=Ai({h:Number(t),s:Number(r),l:Number(o),a:Number(n)});return Ei(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,s=e.a,n=s===void 0?1:s;if(!Ut(t)||!Ut(r)||!Ut(o))return null;var a=(function(l){return{h:Vi(l.h),s:kt(l.s,0,100),v:kt(l.v,0,100),a:kt(l.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(n)});return zi(a)},"hsv"]]},Ii=function(e,t){for(var r=0;r<t.length;r++){var o=t[r][0](e);if(o)return[o,t[r][1]]}return[null,void 0]},Ec=function(e){return typeof e=="string"?Ii(e.trim(),ln.string):typeof e=="object"&&e!==null?Ii(e,ln.object):[null,void 0]};var nn=function(e,t){var r=uo(e);return{h:r.h,s:kt(r.s+100*t,0,100),l:r.l,a:r.a}},an=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},Li=function(e,t){var r=uo(e);return{h:r.h,s:r.s,l:kt(r.l+100*t,0,100),a:r.a}},un=(function(){function e(t){this.parsed=Ec(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return Xe(an(this.rgba),2)},e.prototype.isDark=function(){return an(this.rgba)<.5},e.prototype.isLight=function(){return an(this.rgba)>=.5},e.prototype.toHex=function(){return t=sn(this.rgba),r=t.r,o=t.g,s=t.b,a=(n=t.a)<1?jo(Xe(255*n)):"","#"+jo(r)+jo(o)+jo(s)+a;var t,r,o,s,n,a},e.prototype.toRgb=function(){return sn(this.rgba)},e.prototype.toRgbString=function(){return t=sn(this.rgba),r=t.r,o=t.g,s=t.b,(n=t.a)<1?"rgba("+r+", "+o+", "+s+", "+n+")":"rgb("+r+", "+o+", "+s+")";var t,r,o,s,n},e.prototype.toHsl=function(){return Ri(uo(this.rgba))},e.prototype.toHslString=function(){return t=Ri(uo(this.rgba)),r=t.h,o=t.s,s=t.l,(n=t.a)<1?"hsla("+r+", "+o+"%, "+s+"%, "+n+")":"hsl("+r+", "+o+"%, "+s+"%)";var t,r,o,s,n},e.prototype.toHsv=function(){return t=Ni(this.rgba),{h:Xe(t.h),s:Xe(t.s),v:Xe(t.v),a:Xe(t.a,3)};var t},e.prototype.invert=function(){return Lt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),Lt(nn(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),Lt(nn(this.rgba,-t))},e.prototype.grayscale=function(){return Lt(nn(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),Lt(Li(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),Lt(Li(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?Lt({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Xe(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=uo(this.rgba);return typeof t=="number"?Lt({h:t,s:r.s,l:r.l,a:r.a}):Xe(r.h)},e.prototype.isEqual=function(t){return this.toHex()===Lt(t).toHex()},e})(),Lt=function(e){return e instanceof un?e:new un(e)},Bi=[],Di=function(e){e.forEach(function(t){Bi.indexOf(t)<0&&(t(un,ln),Bi.push(t))})};var fn=u(ve(),1);var Mi=u(ve(),1),Je=(0,Mi.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var ji=u(D(),1);function fo({children:e,value:t,baseValue:r,onChange:o,fontLibraryEnabled:s}){let n=(0,fn.useMemo)(()=>hr(r,t),[r,t]),a=(0,fn.useMemo)(()=>({user:t,base:r,merged:n,onChange:o,fontLibraryEnabled:s}),[t,r,n,o,s]);return(0,ji.jsx)(Je.Provider,{value:a,children:e})}var Wt=u(X(),1),al=u(ie(),1);var qc=u(pt(),1),Yc=u(wt(),1);var Gi=u(D(),1);function cn({className:e,...t}){return(0,Gi.jsx)(so,{className:Ze(e,"global-styles-ui-icon-with-current-color"),...t})}var Jt=u(X(),1);var gr=u(D(),1);function Ic({icon:e,children:t,...r}){return(0,gr.jsxs)(Jt.__experimentalItem,{...r,children:[e&&(0,gr.jsxs)(Jt.__experimentalHStack,{justify:"flex-start",children:[(0,gr.jsx)(cn,{icon:e,size:24}),(0,gr.jsx)(Jt.FlexItem,{children:t})]}),!e&&t]})}function Bt(e){return(0,gr.jsx)(Jt.Navigator.Button,{as:Ic,...e})}var Vc=u(X(),1);var Nc=u(ie(),1),Xi=u(it(),1);var dn=function(e){var t=e/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},pn=function(e){return .2126*dn(e.r)+.7152*dn(e.g)+.0722*dn(e.b)};function Ui(e){e.prototype.luminance=function(){return t=pn(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*t)/o+0;var t,r,o},e.prototype.contrast=function(t){t===void 0&&(t="#FFF");var r,o,s,n,a,l,h,f=t instanceof e?t:new e(t);return n=this.rgba,a=f.toRgb(),l=pn(n),h=pn(a),r=l>h?(l+.05)/(h+.05):(h+.05)/(l+.05),(o=2)===void 0&&(o=0),s===void 0&&(s=Math.pow(10,o)),Math.floor(s*r)/s+0},e.prototype.isReadable=function(t,r){return t===void 0&&(t="#FFF"),r===void 0&&(r={}),this.contrast(t)>=(l=(a=(o=r).size)===void 0?"normal":a,(n=(s=o.level)===void 0?"AA":s)==="AAA"&&l==="normal"?7:n==="AA"&&l==="large"?3:4.5);var o,s,n,a,l}}var Rt=u(ve(),1),qi=u(pt(),1),Yi=u(wt(),1),hn=u(ie(),1);var De=u(ie(),1),Y1={link:[{value:":link",label:(0,De.__)("Link")},{value:":any-link",label:(0,De.__)("Any Link")},{value:":visited",label:(0,De.__)("Visited")},{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}],button:[{value:":link",label:(0,De.__)("Link")},{value:":any-link",label:(0,De.__)("Any Link")},{value:":visited",label:(0,De.__)("Visited")},{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}]},Z1={"core/button":[{value:":hover",label:(0,De.__)("Hover")},{value:":focus",label:(0,De.__)("Focus")},{value:":focus-visible",label:(0,De.__)("Focus-visible")},{value:":active",label:(0,De.__)("Active")}]},X1=[{value:"tablet",label:(0,De.__)("Tablet")},{value:"mobile",label:(0,De.__)("Mobile")}];function mn(e,t){if(!t?.length||typeof e!="object"||!e||!Object.keys(e).length)return e;for(let r in e)t.includes(r)?delete e[r]:typeof e[r]=="object"&&mn(e[r],t);return e}var Go=(e,t)=>{if(!e||!t?.length)return{};let r={};return Object.keys(e).forEach(o=>{if(t.includes(o))r[o]=e[o];else if(typeof e[o]=="object"){let s=Go(e[o],t);Object.keys(s).length&&(r[o]=s)}}),r};function co(e,t){let r=Go(structuredClone(e),t);return io(r,e)}function Wi(e,t){if(!Array.isArray(e)||!t)return null;let o=t.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return e.find(s=>s.slug===o)}function Hi(e){let t=e?.settings?.typography?.fontFamilies?.theme,r=e?.settings?.typography?.fontFamilies?.custom,o=[];t&&r?o=[...t,...r]:t?o=t:r&&(o=r);let s=e?.styles?.typography?.fontFamily,n=Wi(o,s),a=e?.styles?.elements?.heading?.typography?.fontFamily,l;return a?l=Wi(o,e?.styles?.elements?.heading?.typography?.fontFamily):l=n,[n,l]}Di([Ui]);function Fe(e,t,r="merged",o=!0,s){let{user:n,base:a,merged:l,onChange:h}=(0,Rt.useContext)(Je),f=s?.split(".").filter(Boolean)??[],c=f.find(O=>O.startsWith(":")),d=f.filter(O=>!O.startsWith(":")).join("."),m=[e,d].filter(Boolean).join("."),g=l;r==="base"?g=a:r==="user"&&(g=n);let y=(0,Rt.useMemo)(()=>{let O=Mo(g,m,t,o);return c?O?.[c]??{}:O},[g,m,t,o,c]),T=(0,Rt.useCallback)(O=>{let _=O;c&&(_={...Mo(n,m,t,!1),[c]:O});let S=rn(n,m,_,t);h(S)},[n,h,m,t,c]);return[y,T]}function Te(e,t,r="merged"){let{user:o,base:s,merged:n,onChange:a}=(0,Rt.useContext)(Je),l=n;r==="base"?l=s:r==="user"&&(l=o);let h=(0,Rt.useMemo)(()=>$s(l,e,t),[l,e,t]),f=(0,Rt.useCallback)(c=>{let d=en(o,e,c,t);a(d)},[o,a,e,t]);return[h,f]}var Lc=[];function Bc({title:e,settings:t,styles:r}){return e===(0,hn.__)("Default")||Object.keys(t||{}).length>0||Object.keys(r||{}).length>0}function Uo(e=[]){let{variationsFromTheme:t}=(0,qi.useSelect)(o=>({variationsFromTheme:o(Yi.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||Lc}),[]),{user:r}=(0,Rt.useContext)(Je);return(0,Rt.useMemo)(()=>{let o=structuredClone(r),s=mn(o,e);s.title=(0,hn.__)("Default");let n=t.filter(l=>co(l,e)).map(l=>hr(s,l)),a=[s,...n];return a?.length?a.filter(Bc):[]},[e,r,t])}var Zi=u(Ws(),1),{lock:o0,unlock:ye}=(0,Zi.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var gn=u(D(),1),{useHasDimensionsPanel:l0,useHasTypographyPanel:u0,useHasColorPanel:f0,useSettingsForBlockElement:c0,useHasBackgroundPanel:d0}=ye(Xi.privateApis);var Vt=u(X(),1);function zr(){let[e="black"]=Fe("color.text"),[t="white"]=Fe("color.background"),[r=e]=Fe("elements.h1.color.text"),[o=r]=Fe("elements.link.color.text"),[s=o]=Fe("elements.button.color.background"),[n]=Te("color.palette.core")||[],[a]=Te("color.palette.theme")||[],[l]=Te("color.palette.custom")||[],h=(a??[]).concat(l??[]).concat(n??[]),f=h.filter(({color:m})=>m===e),c=h.filter(({color:m})=>m===s),d=f.concat(c).concat(h).filter(({color:m})=>m!==t).slice(0,2);return{paletteColors:h,highlightedColors:d}}var Qi=u(ve(),1),$i=u(X(),1),vn=u(ie(),1);function zc(e,t){return t.length===0?null:(t.sort((r,o)=>Math.abs(e-r)-Math.abs(e-o)),t[0])}function Dc(e){let t=[];return e.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let s=parseInt(o[0]),n=parseInt(o[1]);for(let a=s;a<=n;a+=100)t.push(a)}else o.length===1&&t.push(parseInt(o[0]))}),t}function Ki(e){let t=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=e.trim(),o=s=>(s=s.trim(),s.match(t)?(s=s.replace(/^["']|["']$/g,""),`"${s}"`):s);return r.includes(",")?r.split(",").map(o).filter(s=>s!=="").join(", "):o(r)}function yn(e){if(!e)return"";let t=e.trim();return t.includes(",")&&(t=(t.split(",").find(r=>r.trim()!=="")??"").trim()),t=t.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(t=`"${t}"`),t}function Dr(e){let t={fontFamily:Ki(e.fontFamily)};if(!("fontFace"in e)||!Array.isArray(e.fontFace))return t.fontWeight="400",t.fontStyle="normal",t;if(e.fontFace){let r=e.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){t.fontStyle="normal";let o=Dc(r),s=zc(400,o);t.fontWeight=String(s)||"400"}else t.fontStyle=e.fontFace.length&&e.fontFace[0].fontStyle||"normal",t.fontWeight=e.fontFace.length&&String(e.fontFace[0].fontWeight)||"400"}return t}function Ji(e){return{fontFamily:Ki(e.fontFamily),fontStyle:e.fontStyle||"normal",fontWeight:e.fontWeight||"400"}}var po=u(D(),1);function Wo({fontSize:e,variation:t}){let{base:r}=(0,Qi.useContext)(Je),o=r;t&&(o={...r,...t});let[s]=Fe("color.text"),[n,a]=Hi(o),l=n?Dr(n):{},h=a?Dr(a):{};return s&&(l.color=s,h.color=s),e&&(l.fontSize=e,h.fontSize=e),(0,po.jsxs)($i.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,po.jsx)("span",{style:h,children:(0,vn._x)("A","Uppercase letter A")}),(0,po.jsx)("span",{style:l,children:(0,vn._x)("a","Lowercase letter A")})]})}var el=u(X(),1);var tl=u(D(),1);function rl({normalizedColorSwatchSize:e,ratio:t}){let{highlightedColors:r}=zr(),o=e*t;return r.map(({slug:s,color:n},a)=>(0,tl.jsx)(el.__unstableMotion.div,{style:{height:o,width:o,background:n,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:a===1?.2:.1}},`${s}-${a}`))}var nl=u(X(),1),Mr=u(pr(),1),yr=u(ve(),1);var Qt=u(D(),1),ol=248,sl=152,Mc={leading:!0,trailing:!0};function jc({children:e,label:t,isFocused:r,withHoverView:o}){let[s="white"]=Fe("color.background"),[n]=Fe("color.gradient"),a=(0,Mr.useReducedMotion)(),[l,h]=(0,yr.useState)(!1),[f,{width:c}]=(0,Mr.useResizeObserver)(),[d,m]=(0,yr.useState)(c),[g,y]=(0,yr.useState)(),T=(0,Mr.useThrottle)(m,250,Mc);(0,yr.useLayoutEffect)(()=>{c&&T(c)},[c,T]),(0,yr.useLayoutEffect)(()=>{let b=d?d/ol:1,P=b-(g||0);(Math.abs(P)>.1||!g)&&y(b)},[d,g]);let O=c?c/ol:1,_=g||O;return(0,Qt.jsxs)(Qt.Fragment,{children:[(0,Qt.jsx)("div",{style:{position:"relative"},children:f}),!!c&&(0,Qt.jsx)("div",{className:Ze("global-styles-ui-preview__wrapper",{"is-hoverable":o}),style:{height:sl*_},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),tabIndex:-1,children:(0,Qt.jsx)(nl.__unstableMotion.div,{style:{height:sl*_,width:"100%",background:n??s},initial:"start",animate:(l||r)&&!a&&t?"hover":"start",children:[].concat(e).map((b,P)=>b({ratio:_,key:P}))})})]})}var jr=jc;var mt=u(D(),1),Gc={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},Uc={hover:{opacity:1},start:{opacity:.5}},Wc={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function Hc({label:e,isFocused:t,withHoverView:r,variation:o}){let[s]=Fe("typography.fontWeight"),[n="serif"]=Fe("typography.fontFamily"),[a=n]=Fe("elements.h1.typography.fontFamily"),[l=s]=Fe("elements.h1.typography.fontWeight"),[h="black"]=Fe("color.text"),[f=h]=Fe("elements.h1.color.text"),{paletteColors:c}=zr();return(0,mt.jsxs)(jr,{label:e,isFocused:t,withHoverView:r,children:[({ratio:d,key:m})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:Gc,style:{height:"100%",overflow:"hidden"},children:(0,mt.jsxs)(Vt.__experimentalHStack,{spacing:10*d,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,mt.jsx)(Wo,{fontSize:65*d,variation:o}),(0,mt.jsx)(Vt.__experimentalVStack,{spacing:4*d,children:(0,mt.jsx)(rl,{normalizedColorSwatchSize:32,ratio:d})})]})},m),({key:d})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:r?Uc:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,mt.jsx)(Vt.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:c.slice(0,4).map(({color:m},g)=>(0,mt.jsx)("div",{style:{height:"100%",background:m,flexGrow:1}},g))})},d),({ratio:d,key:m})=>(0,mt.jsx)(Vt.__unstableMotion.div,{variants:Wc,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,mt.jsx)(Vt.__experimentalVStack,{spacing:3*d,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*d,boxSizing:"border-box"},children:e&&(0,mt.jsx)("div",{style:{fontSize:40*d,fontFamily:a,color:f,fontWeight:l,lineHeight:"1em",textAlign:"center"},children:e})})},m)]})}var bn=Hc;var il=u(D(),1);var xn=u(Br(),1),Gr=u(ie(),1),br=u(X(),1),Sn=u(pt(),1),$t=u(ve(),1),Ho=u(it(),1),pl=u(pr(),1);import{speak as Jc}from"@wordpress/a11y";var ll=u(Br(),1),ul=u(pt(),1),Zc=u(X(),1);var Xc=u(D(),1);function Kc(e,t){return e?.filter(r=>r.source==="block"||t.includes(r.name))||[]}function wn(e){let t=(0,ul.useSelect)(s=>{let{getBlockStyles:n}=s(ll.store);return n(e)},[e]),[r]=Fe("variations",e),o=Object.keys(r??{});return Kc(t,o)}var vr=u(X(),1),fl=u(ie(),1);var cl=u(it(),1);var dl=u(D(),1),{StateControl:U0,StateControlBadges:W0}=ye(cl.privateApis);var Nt=u(D(),1),{useHasDimensionsPanel:Qc,useHasTypographyPanel:$c,useHasBorderPanel:ed,useSettingsForBlockElement:td,useHasColorPanel:rd}=ye(Ho.privateApis);function od(){let e=(0,Sn.useSelect)(s=>s(xn.store).getBlockTypes(),[]),t=(s,n)=>{let{core:a,noncore:l}=s;return(n.name.startsWith("core/")?a:l).push(n),s},{core:r,noncore:o}=e.reduce(t,{core:[],noncore:[]});return[...r,...o]}function sd(e){let[t]=Te("",e),r=td(t,e),o=$c(r),s=rd(r),n=ed(r),a=Qc(r),l=n||a,h=!!wn(e)?.length;return o||s||l||h}function nd({block:e}){return sd(e.name)?(0,Nt.jsx)(Bt,{path:"/blocks/"+encodeURIComponent(e.name),children:(0,Nt.jsxs)(br.__experimentalHStack,{justify:"flex-start",children:[(0,Nt.jsx)(Ho.BlockIcon,{icon:e.icon}),(0,Nt.jsx)(br.FlexItem,{children:e.title})]})}):null}function ad({filterValue:e}){let t=od(),r=(0,pl.useDebounce)(Jc,500),{isMatchingSearchTerm:o}=(0,Sn.useSelect)(xn.store),s=e?t.filter(a=>o(a,e)):t,n=(0,$t.useRef)(null);return(0,$t.useEffect)(()=>{if(!e)return;let a=n.current?.childElementCount||0,l=(0,Gr.sprintf)((0,Gr._n)("%d result found.","%d results found.",a),a);r(l,"polite")},[e,r]),(0,Nt.jsx)("div",{ref:n,className:"global-styles-ui-block-types-item-list",role:"list",children:s.length===0?(0,Nt.jsx)(br.__experimentalText,{align:"center",as:"p",children:(0,Gr.__)("No blocks found.")}):s.map(a=>(0,Nt.jsx)(nd,{block:a},"menu-itemblock-"+a.name))})}var Q0=(0,$t.memo)(ad);var cd=u(Br(),1),yl=u(it(),1),Cn=u(ve(),1),dd=u(pt(),1),pd=u(wt(),1),_n=u(X(),1),vl=u(ie(),1);var id=u(it(),1),ml=u(Br(),1),ld=u(X(),1),ud=u(ve(),1);var fd=u(D(),1);var hl=u(X(),1),gl=u(D(),1);function St({children:e,level:t=2}){return(0,gl.jsx)(hl.__experimentalHeading,{className:"global-styles-ui-subtitle",level:t,children:e})}var Fn=u(D(),1);var{useHasDimensionsPanel:gb,useHasTypographyPanel:yb,useHasBorderPanel:vb,useSettingsForBlockElement:bb,useHasColorPanel:wb,useHasFiltersPanel:xb,useHasImageSettingsPanel:Sb,useHasBackgroundPanel:Cb,BackgroundPanel:_b,BorderPanel:Fb,ColorPanel:kb,TypographyPanel:Ob,DimensionsPanel:Tb,FiltersPanel:Pb,ImageSettingsPanel:Ab,AdvancedPanel:Rb}=ye(yl.privateApis);var kg=u(ie(),1),Og=u(X(),1),Tg=u(ve(),1);var md=u(X(),1);var hd=u(D(),1);var gd=u(ie(),1),qo=u(X(),1);var bl=u(D(),1);var Xo=u(X(),1);var wl=u(X(),1);var Yo=u(D(),1),yd=({variation:e,isFocused:t,withHoverView:r})=>(0,Yo.jsx)(jr,{label:e.title,isFocused:t,withHoverView:r,children:({ratio:o,key:s})=>(0,Yo.jsx)(wl.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Yo.jsx)(Wo,{variation:e,fontSize:85*o})},s)}),xl=yd;var Cl=u(X(),1),wr=u(ve(),1),_l=u(kn(),1),Zo=u(ie(),1);var mo=u(D(),1);function Ur({variation:e,children:t,isPill:r=!1,properties:o,showTooltip:s=!1}){let[n,a]=(0,wr.useState)(!1),{base:l,user:h,onChange:f}=(0,wr.useContext)(Je),c=(0,wr.useMemo)(()=>{let O=hr(l,e);return o&&(O=Go(O,o)),{user:e,base:l,merged:O,onChange:()=>{}}},[e,l,o]),d=()=>f(e),m=O=>{O.keyCode===_l.ENTER&&(O.preventDefault(),d())},g=(0,wr.useMemo)(()=>io(h,e),[h,e]),y=e?.title;e?.description&&(y=(0,Zo.sprintf)((0,Zo._x)("%1$s (%2$s)","variation label"),e?.title,e?.description));let T=(0,mo.jsx)("div",{className:Ze("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:d,onKeyDown:m,tabIndex:0,"aria-label":y,"aria-current":g,onFocus:()=>a(!0),onBlur:()=>a(!1),children:(0,mo.jsx)("div",{className:Ze("global-styles-ui-variations_item-preview",{"is-pill":r}),children:t(n)})});return(0,mo.jsx)(Je.Provider,{value:c,children:s?(0,mo.jsx)(Cl.Tooltip,{text:e?.title,children:T}):T})}var xr=u(D(),1),Fl=["typography"];function Ko({title:e,gap:t=2}){let r=Uo(Fl);return r?.length<=1?null:(0,xr.jsxs)(Xo.__experimentalVStack,{spacing:3,children:[e&&(0,xr.jsx)(St,{level:3,children:e}),(0,xr.jsx)(Xo.__experimentalGrid,{columns:3,gap:t,className:"global-styles-ui-style-variations-container",children:r.map((o,s)=>(0,xr.jsx)(Ur,{variation:o,properties:Fl,showTooltip:!0,children:()=>(0,xr.jsx)(xl,{variation:o})},s))})]})}var _g=u(ie(),1),xo=u(X(),1);var Fg=u(ve(),1);var Ht=u(ve(),1),or=u(pt(),1),rr=u(wt(),1),An=u(ie(),1);var On=u(Ol(),1),Tl=u(wt(),1),Pl="/wp/v2/font-families";function Al(e){let{receiveEntityRecords:t}=e.dispatch(Tl.store);t("postType","wp_font_family",[],void 0,!0)}async function Rl(e,t){let o=await(0,On.default)({path:Pl,method:"POST",body:e});return Al(t),{id:o.id,...o.font_family_settings,fontFace:[]}}async function El(e,t,r){let o={path:`${Pl}/${e}/font-faces`,method:"POST",body:t},s=await(0,On.default)(o);return Al(r),{id:s.id,...s.font_face_settings}}var Bl=u(X(),1);var Ot=u(ie(),1),Tn=["otf","ttf","woff","woff2"],Il={100:(0,Ot._x)("Thin","font weight"),200:(0,Ot._x)("Extra-light","font weight"),300:(0,Ot._x)("Light","font weight"),400:(0,Ot._x)("Normal","font weight"),500:(0,Ot._x)("Medium","font weight"),600:(0,Ot._x)("Semi-bold","font weight"),700:(0,Ot._x)("Bold","font weight"),800:(0,Ot._x)("Extra-bold","font weight"),900:(0,Ot._x)("Black","font weight")},Ll={normal:(0,Ot._x)("Normal","font style"),italic:(0,Ot._x)("Italic","font style")};var{File:Vl}=window,{kebabCase:vd}=ye(Bl.privateApis);function er(e,t={}){return!e.name&&(e.fontFamily||e.slug)&&(e.name=e.fontFamily||e.slug),{...e,...t}}function bd(e){return typeof e!="string"?!1:e!==decodeURIComponent(e)}function Jo(e){let t=Il[e.fontWeight??""]||e.fontWeight,r=e.fontStyle==="normal"?"":Ll[e.fontStyle??""]||e.fontStyle;return`${t} ${r}`}function wd(e=[],t=[]){let r=new Map;for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function Nl(e=[],t=[]){let r=new Map;for(let o of e)r.set(o.slug,{...o});for(let o of t)if(r.has(o.slug)){let{fontFace:s,...n}=o,a=r.get(o.slug),l=wd(a.fontFace,s);r.set(o.slug,{...n,fontFace:l})}else r.set(o.slug,{...o});return Array.from(r.values())}async function tr(e,t,r="all"){let o;if(typeof t=="string")o=`url(${t})`;else if(t instanceof Vl)o=await t.arrayBuffer();else return;let n=await new window.FontFace(yn(e.fontFamily),o,{style:e.fontStyle,weight:String(e.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(n),r==="iframe"||r==="all"){let a=document.querySelector('iframe[name="editor-canvas"]');a?.contentDocument&&a.contentDocument.fonts.add(n)}}function ho(e,t="all"){let r=o=>{o.forEach(s=>{s.family===yn(e?.fontFamily)&&s.weight===e?.fontWeight&&s.style===e?.fontStyle&&o.delete(s)})};if((t==="document"||t==="all")&&r(document.fonts),t==="iframe"||t==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Wr(e){if(!e)return;let t;if(Array.isArray(e)?t=e[0]:t=e,!t.startsWith("file:."))return bd(t)||(t=encodeURI(t)),t}function zl(e){let t=new FormData,{fontFace:r,category:o,...s}=e,n={...s,slug:vd(e.slug)};return t.append("font_family_settings",JSON.stringify(n)),t}function Dl(e){return(e?.fontFace??[]).map((r,o)=>{let s={...r},n=new FormData;if(s.file){let a=Array.isArray(s.file)?s.file:[s.file],l=[];a.forEach((h,f)=>{let c=`file-${o}-${f}`;n.append(c,h,h.name),l.push(c)}),s.src=l.length===1?l[0]:l,delete s.file,n.append("font_face_settings",JSON.stringify(s))}else n.append("font_face_settings",JSON.stringify(s));return n})}async function Ml(e,t,r){let o=[];for(let n of t)try{let a=await El(e,n,r);o.push({status:"fulfilled",value:a})}catch(a){o.push({status:"rejected",reason:a})}let s={errors:[],successes:[]};return o.forEach((n,a)=>{if(n.status==="fulfilled"&&n.value){let l=n.value;s.successes.push(l)}else n.reason&&s.errors.push({data:t[a],message:n.reason.message})}),s}async function jl(e){e=Array.isArray(e)?e:[e];let t=await Promise.all(e.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let s=r.split("/").pop();return new Vl([o],s,{type:o.type})})));return t.length===1?t[0]:t}function Pn(e,t){return t.findIndex(r=>r.fontWeight===e.fontWeight&&r.fontStyle===e.fontStyle)!==-1}function Gl(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),s=e;for(let n of t){let a=s[n];s=s[n]=Array.isArray(a)?[...a]:{...a}}return s[o]=r,e}function Qo(e,t,r=[]){let o=h=>h.slug===e.slug,s=h=>h.find(o),n=h=>h?r.filter(f=>!o(f)):[...r,e],a=h=>{let f=d=>d.fontWeight===t.fontWeight&&d.fontStyle===t.fontStyle;if(!h)return[...r,{...e,fontFace:[t]}];let c=h.fontFace||[];return c.find(f)?c=c.filter(d=>!f(d)):c=[...c,t],c.length===0?r.filter(d=>!o(d)):r.map(d=>o(d)?{...d,fontFace:c}:d)},l=s(r);return t?a(l):n(l)}var Ul=u(D(),1),lt=(0,Ht.createContext)({});lt.displayName="FontLibraryContext";function xd({children:e}){let t=(0,or.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,or.useDispatch)(rr.store),{globalStylesId:s}=(0,or.useSelect)(x=>{let{__experimentalGetCurrentGlobalStylesId:E}=x(rr.store);return{globalStylesId:E()}},[]),n=(0,rr.useEntityRecord)("root","globalStyles",s),[a,l]=(0,Ht.useState)(!1),{records:h=[],isResolving:f}=(0,rr.useEntityRecords)("postType","wp_font_family",{_embed:!0}),c=(h||[]).map(x=>({id:x.id,...x.font_family_settings||{},fontFace:x?._embedded?.font_faces?.map(E=>E.font_face_settings)||[]}))||[],[d,m]=Te("typography.fontFamilies"),g=async x=>{if(!n.record)return;let E=n.record,te=Gl(E??{},["settings","typography","fontFamilies"],x);await r("root","globalStyles",te)},[y,T]=(0,Ht.useState)(""),[O,_]=(0,Ht.useState)(void 0),S=d?.theme?d.theme.map(x=>er(x,{source:"theme"})).sort((x,E)=>x.name.localeCompare(E.name)):[],b=d?.custom?d.custom.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[],P=c?c.map(x=>er(x,{source:"custom"})).sort((x,E)=>x.name.localeCompare(E.name)):[];(0,Ht.useEffect)(()=>{y||_(void 0)},[y]);let q=x=>{if(!x){_(void 0);return}let te=(x.source==="theme"?S:P).find(ce=>ce.slug===x.slug);_({...te||x,source:x.source})},[I]=(0,Ht.useState)(new Set),N=x=>x.reduce((te,ce)=>{let ae=ce?.fontFace&&ce.fontFace?.length>0?ce?.fontFace.map(Ce=>`${Ce.fontStyle??""}${Ce.fontWeight??""}`):["normal400"];return te[ce.slug]=ae,te},{}),W=x=>N(x==="theme"?S:b),$=(x,E,te,ce)=>!E&&!te?!!W(ce)[x]:!!W(ce)[x]?.includes((E??"")+(te??"")),be=(x,E)=>W(E)[x]||[];async function H(x){l(!0);try{let E=[],te=[];for(let ae of x){let Ce=!1,qe=await(0,or.resolveSelect)(rr.store).getEntityRecords("postType","wp_font_family",{slug:ae.slug,per_page:1,_embed:!0}),ke=qe&&qe.length>0?qe[0]:null,J=ke?{id:ke.id,...ke.font_family_settings,fontFace:(ke?._embedded?.font_faces??[]).map(Me=>Me.font_face_settings)||[]}:null;J||(Ce=!0,J=await Rl(zl(ae),t));let Se=J.fontFace&&ae.fontFace?J.fontFace.filter(Me=>Me&&ae.fontFace&&Pn(Me,ae.fontFace)):[];J.fontFace&&ae.fontFace&&(ae.fontFace=ae.fontFace.filter(Me=>!Pn(Me,J.fontFace)));let Ae=[],Ct=[];if(ae?.fontFace?.length??!1){let Me=await Ml(J.id,Dl(ae),t);Ae=Me?.successes,Ct=Me?.errors}(Ae?.length>0||Se?.length>0)&&(J.fontFace=[...Ae],E.push(J)),J&&!ae?.fontFace?.length&&E.push(J),Ce&&(ae?.fontFace?.length??0)>0&&Ae?.length===0&&await o("postType","wp_font_family",J.id,{force:!0}),te=te.concat(Ct)}let ce=te.reduce((ae,Ce)=>ae.includes(Ce.message)?ae:[...ae,Ce.message],[]);if(E.length>0){let ae=le(E);await g(ae)}if(ce.length>0){let ae=new Error((0,An.__)("There was an error installing fonts."));throw ae.installationErrors=ce,ae}}finally{l(!1)}}async function v(x){if(!x?.id)throw new Error((0,An.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",x.id,{force:!0});let E=L(x);return await g(E),{deleted:!0}}catch(E){throw console.error("There was an error uninstalling the font family:",E),E}}let L=x=>{let te=(d?.[x.source??""]??[]).filter(ae=>ae.slug!==x.slug),ce={...d,[x.source??""]:te};return m(ce),x.fontFace&&x.fontFace.forEach(ae=>{ho(ae,"all")}),ce},le=x=>{let E=oe(x),te={...d,custom:Nl(d?.custom,E)};return m(te),K(E),te},oe=x=>x.map(({id:E,fontFace:te,...ce})=>({...ce,...te&&te.length>0?{fontFace:te.map(({id:ae,...Ce})=>Ce)}:{}})),K=x=>{x.forEach(E=>{E.fontFace&&E.fontFace.forEach(te=>{let ce=Wr(te?.src??"");ce&&tr(te,ce,"all")})})},ge=(x,E)=>{let te=d?.[x.source??""]??[],ce=Qo(x,E,te);m({...d,[x.source??""]:ce});let ae=$(x.slug,E?.fontStyle??"",E?.fontWeight??"",x.source??"custom");if(E&&ae)ho(E,"all");else{let Ce=Wr(E?.src??"");E&&Ce&&tr(E,Ce,"all")}},R=async x=>{if(!x.src)return;let E=Wr(x.src);!E||I.has(E)||(tr(x,E,"document"),I.add(E))};return(0,Ul.jsx)(lt.Provider,{value:{libraryFontSelected:O,handleSetLibraryFontSelected:q,fontFamilies:d??{},baseCustomFonts:P,isFontActivated:$,getFontFacesActivated:be,loadFontFaceAsset:R,installFonts:H,uninstallFontFamily:v,toggleActivateFont:ge,getAvailableFontsOutline:N,modalTabOpen:y,setModalTabOpen:T,saveFontFamilies:g,isResolvingLibrary:f,isInstalling:a},children:e})}var $o=xd;var ms=u(ie(),1),Bn=u(X(),1),Fu=u(wt(),1),Sg=u(pt(),1);var he=u(X(),1),yo=u(wt(),1),Rn=u(pt(),1),Cr=u(ve(),1),Ee=u(ie(),1);var qr=u(ie(),1),Tt=u(X(),1);var Wl=u(X(),1),zt=u(ve(),1);var es=u(D(),1);function Sd(e){if(e.preview)return e.preview;if(e.src)return Array.isArray(e.src)?e.src[0]:e.src}function Cd(e){return"fontStyle"in e&&e.fontStyle||"fontWeight"in e&&e.fontWeight?e:"fontFace"in e&&e.fontFace&&e.fontFace.length?e.fontFace.find(t=>t.fontStyle==="normal"&&t.fontWeight==="400")||e.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:e.fontFamily}}function _d({font:e,text:t}){let r=(0,zt.useRef)(null),o=Cd(e),s=Dr(e);t=t||("name"in e?e.name:"");let n=e.preview,[a,l]=(0,zt.useState)(!1),[h,f]=(0,zt.useState)(!1),{loadFontFaceAsset:c}=(0,zt.useContext)(lt),d=n??Sd(o),m=d&&d.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Ji(o),y={fontSize:"18px",lineHeight:1,opacity:h?"1":"0",...s,...g};return(0,zt.useEffect)(()=>{let T=new window.IntersectionObserver(([O])=>{l(O.isIntersecting)},{});return r.current&&T.observe(r.current),()=>T.disconnect()},[r]),(0,zt.useEffect)(()=>{(async()=>a&&(!m&&o.src&&await c(o),f(!0)))()},[o,a,c,m]),(0,es.jsx)("div",{ref:r,children:m?(0,es.jsx)("img",{src:d,loading:"lazy",alt:t,className:"font-library__font-variant_demo-image"}):(0,es.jsx)(Wl.__experimentalText,{style:y,className:"font-library__font-variant_demo-text",children:t})})}var Hr=_d;var Dt=u(D(),1);function Fd({font:e,onClick:t,variantsText:r,navigatorPath:o}){let s=e.fontFace?.length||1,n={cursor:t?"pointer":"default"},a=(0,Tt.useNavigator)();return(0,Dt.jsx)(Tt.Button,{__next40pxDefaultSize:!0,onClick:()=>{t(),o&&a.goTo(o)},style:n,className:"font-library__font-card",children:(0,Dt.jsxs)(Tt.Flex,{justify:"space-between",wrap:!1,children:[(0,Dt.jsx)(Hr,{font:e}),(0,Dt.jsxs)(Tt.Flex,{justify:"flex-end",children:[(0,Dt.jsx)(Tt.FlexItem,{children:(0,Dt.jsx)(Tt.__experimentalText,{className:"font-library__font-card__count",children:r||(0,qr.sprintf)((0,qr._n)("%d variant","%d variants",s),s)})}),(0,Dt.jsx)(Tt.FlexItem,{children:(0,Dt.jsx)(so,{icon:(0,qr.isRTL)()?cr:dr})})]})]})})}var go=Fd;var ts=u(ve(),1),rs=u(X(),1);var Sr=u(D(),1);function kd({face:e,font:t}){let{isFontActivated:r,toggleActivateFont:o}=(0,ts.useContext)(lt),s=(t?.fontFace?.length??0)>0?r(t.slug,e.fontStyle,e.fontWeight,t.source):r(t.slug,void 0,void 0,t.source),n=()=>{if((t?.fontFace?.length??0)>0){o(t,e);return}o(t)},a=t.name+" "+Jo(e),l=(0,ts.useId)();return(0,Sr.jsx)("div",{className:"font-library__font-card",children:(0,Sr.jsxs)(rs.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Sr.jsx)(rs.CheckboxControl,{checked:s,onChange:n,id:l}),(0,Sr.jsx)("label",{htmlFor:l,children:(0,Sr.jsx)(Hr,{font:e,text:a,onClick:n})})]})})}var Hl=kd;function ql(e){switch(e){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(e,10)}}function os(e){return e.sort((t,r)=>t.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&t.fontStyle!=="normal"?1:t.fontStyle===r.fontStyle?ql(t.fontWeight?.toString()??"normal")-ql(r.fontWeight?.toString()??"normal"):!t.fontStyle||!r.fontStyle?t.fontStyle?-1:1:t.fontStyle.localeCompare(r.fontStyle))}var fe=u(D(),1);function Od(){let{baseCustomFonts:e,libraryFontSelected:t,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:s,isInstalling:n,saveFontFamilies:a,getFontFacesActivated:l}=(0,Cr.useContext)(lt),[h,f]=Te("typography.fontFamilies"),[c,d]=(0,Cr.useState)(!1),[m,g]=(0,Cr.useState)(null),[y]=Te("typography.fontFamilies",void 0,"base"),T=(0,Rn.useSelect)(R=>{let{__experimentalGetCurrentGlobalStylesId:x}=R(yo.store);return x()},[]),_=!!(0,yo.useEntityRecord)("root","globalStyles",T)?.edits?.settings?.typography?.fontFamilies,S=h?.theme?h.theme.map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name)):[],b=new Set(S.map(R=>R.slug)),P=y?.theme?S.concat(y.theme.filter(R=>!b.has(R.slug)).map(R=>er(R,{source:"theme"})).sort((R,x)=>R.name.localeCompare(x.name))):[],q=t?.source==="custom"&&t?.id,I=(0,Rn.useSelect)(R=>{let{canUser:x}=R(yo.store);return q&&x("delete",{kind:"postType",name:"wp_font_family",id:q})},[q]),N=!!t&&t?.source!=="theme"&&I,W=()=>{d(!0)},$=async()=>{g(null);try{await a(h),g({type:"success",message:(0,Ee.__)("Font family updated successfully.")})}catch(R){g({type:"error",message:(0,Ee.sprintf)((0,Ee.__)("There was an error updating the font family. %s"),R.message)})}},be=R=>R?!R.fontFace||!R.fontFace.length?[{fontFamily:R.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(R.fontFace):[],H=R=>{let x=R?.fontFace&&(R?.fontFace?.length??0)>0?R.fontFace.length:1,E=l(R.slug,R.source).length;return(0,Ee.sprintf)((0,Ee.__)("%1$d of %2$d active"),E,x)};(0,Cr.useEffect)(()=>{r(t)},[]);let v=t?l(t.slug,t.source).length:0,L=t?.fontFace?.length??(t?.fontFamily?1:0),le=v>0&&v!==L,oe=v===L,K=()=>{if(!t||!t?.source)return;let R=h?.[t.source]?.filter(E=>E.slug!==t.slug)??[],x=oe?R:[...R,t];f({...h,[t.source]:x}),t.fontFace&&t.fontFace.forEach(E=>{if(oe)ho(E,"all");else{let te=Wr(E?.src??"");te&&tr(E,te,"all")}})},ge=P.length>0||e.length>0;return(0,fe.jsxs)("div",{className:"font-library__tabpanel-layout",children:[s&&(0,fe.jsx)("div",{className:"font-library__loading",children:(0,fe.jsx)(he.ProgressBar,{})}),!s&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsxs)(he.Navigator,{initialPath:t?"/fontFamily":"/",children:[(0,fe.jsx)(he.Navigator.Screen,{path:"/",children:(0,fe.jsxs)(he.__experimentalVStack,{spacing:"8",children:[m&&(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),!ge&&(0,fe.jsx)(he.__experimentalText,{as:"p",children:(0,Ee.__)("No fonts installed.")}),P.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Theme","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:P.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]}),e.length>0&&(0,fe.jsxs)(he.__experimentalVStack,{children:[(0,fe.jsx)("h2",{className:"font-library__fonts-title",children:(0,Ee._x)("Custom","font source")}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e.map(R=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(go,{font:R,navigatorPath:"/fontFamily",variantsText:H(R),onClick:()=>{g(null),r(R)}})},R.slug))})]})]})}),(0,fe.jsxs)(he.Navigator.Screen,{path:"/fontFamily",children:[t&&(0,fe.jsx)(Td,{font:t,isOpen:c,setIsOpen:d,setNotice:g,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,fe.jsxs)(he.Flex,{justify:"flex-start",children:[(0,fe.jsx)(he.Navigator.BackButton,{icon:(0,Ee.isRTL)()?dr:cr,size:"small",onClick:()=>{r(void 0),g(null)},label:(0,Ee.__)("Back")}),(0,fe.jsx)(he.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:t?.name})]}),m&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsx)(he.__experimentalSpacer,{margin:1}),(0,fe.jsx)(he.Notice,{status:m.type,onRemove:()=>g(null),children:m.message}),(0,fe.jsx)(he.__experimentalSpacer,{margin:1})]}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsx)(he.__experimentalText,{children:(0,Ee.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,fe.jsx)(he.__experimentalSpacer,{margin:4}),(0,fe.jsxs)(he.__experimentalVStack,{spacing:0,children:[(0,fe.jsx)(he.CheckboxControl,{className:"font-library__select-all",label:(0,Ee.__)("Select all"),checked:oe,onChange:K,indeterminate:le}),(0,fe.jsx)(he.__experimentalSpacer,{margin:8}),(0,fe.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t&&be(t).map((R,x)=>(0,fe.jsx)("li",{className:"font-library__fonts-list-item",children:(0,fe.jsx)(Hl,{font:t,face:R},`face${x}`)},`face${x}`))})]})]})]}),(0,fe.jsxs)(he.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[n&&(0,fe.jsx)(he.ProgressBar,{}),N&&(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:W,children:(0,Ee.__)("Delete")}),(0,fe.jsx)(he.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:$,disabled:!_,accessibleWhenDisabled:!0,children:(0,Ee.__)("Update")})]})]})]})}function Td({font:e,isOpen:t,setIsOpen:r,setNotice:o,uninstallFontFamily:s,handleSetLibraryFontSelected:n}){let a=(0,he.useNavigator)(),l=async()=>{o(null),r(!1);try{await s(e),a.goBack(),n(void 0),o({type:"success",message:(0,Ee.__)("Font family uninstalled successfully.")})}catch(f){o({type:"error",message:(0,Ee.__)("There was an error uninstalling the font family.")+f.message})}},h=()=>{r(!1)};return(0,fe.jsx)(he.__experimentalConfirmDialog,{isOpen:t,cancelButtonText:(0,Ee.__)("Cancel"),confirmButtonText:(0,Ee.__)("Delete"),onCancel:h,onConfirm:l,size:"medium",children:e&&(0,Ee.sprintf)((0,Ee.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),e.name)})}var ss=Od;var Ke=u(ve(),1),ne=u(X(),1),eu=u(pr(),1),Re=u(ie(),1);var tu=u(wt(),1);function Yl(e,t){let{category:r,search:o}=t,s=e||[];return r&&r!=="all"&&(s=s.filter(n=>n.categories&&n.categories.indexOf(r)!==-1)),o&&(s=s.filter(n=>n.font_family_settings&&n.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),s}function Zl(e){return e.reduce((t,r)=>({...t,[r.slug]:(r?.fontFace||[]).reduce((o,s)=>({...o,[`${s.fontStyle}-${s.fontWeight}`]:!0}),{})}),{})}function Xl(e,t,r){return t?!!r[e]?.[`${t.fontStyle}-${t.fontWeight}`]:!!r[e]}var vo=u(ie(),1),ut=u(X(),1),Pt=u(D(),1);function Pd(){let e=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,Pt.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,Pt.jsx)(ut.Card,{children:(0,Pt.jsxs)(ut.CardBody,{children:[(0,Pt.jsx)(ut.__experimentalHeading,{level:2,children:(0,vo.__)("Connect to Google Fonts")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:3}),(0,Pt.jsx)(ut.__experimentalText,{as:"p",children:(0,vo.__)("You can alternatively upload files directly on the Upload tab.")}),(0,Pt.jsx)(ut.__experimentalSpacer,{margin:6}),(0,Pt.jsx)(ut.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:e,children:(0,vo.__)("Allow access to Google Fonts")})]})})})}var Kl=Pd;var Jl=u(ve(),1),ns=u(X(),1);var _r=u(D(),1);function Ad({face:e,font:t,handleToggleVariant:r,selected:o}){let s=()=>{if(t?.fontFace){r(t,e);return}r(t)},n=t.name+" "+Jo(e),a=(0,Jl.useId)();return(0,_r.jsx)("div",{className:"font-library__font-card",children:(0,_r.jsxs)(ns.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,_r.jsx)(ns.CheckboxControl,{checked:o,onChange:s,id:a}),(0,_r.jsx)("label",{htmlFor:a,children:(0,_r.jsx)(Hr,{font:e,text:n,onClick:s})})]})})}var Ql=Ad;var ee=u(D(),1),Rd={slug:"all",name:(0,Re._x)("All","font categories")},$l="wp-font-library-google-fonts-permission",Ed=500;function Id({slug:e}){let t=e==="google-fonts",r=()=>window.localStorage.getItem($l)==="true",[o,s]=(0,Ke.useState)(null),[n,a]=(0,Ke.useState)(null),[l,h]=(0,Ke.useState)([]),[f,c]=(0,Ke.useState)(1),[d,m]=(0,Ke.useState)({}),[g,y]=(0,Ke.useState)(t&&!r()),{installFonts:T,isInstalling:O}=(0,Ke.useContext)(lt),{record:_,isResolving:S}=(0,tu.useEntityRecord)("root","fontCollection",e);(0,Ke.useEffect)(()=>{let J=()=>{y(t&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[e,t]);let b=()=>{window.localStorage.setItem($l,"false"),window.dispatchEvent(new Event("storage"))};(0,Ke.useEffect)(()=>{s(null)},[e]),(0,Ke.useEffect)(()=>{h([])},[o]);let P=(0,Ke.useMemo)(()=>_?.font_families??[],[_]),q=_?.categories??[],I=[Rd,...q],N=(0,Ke.useMemo)(()=>Yl(P,d),[P,d]),W=Math.max(window.innerHeight,Ed),$=Math.floor((W-417)/61),be=Math.ceil(N.length/$),H=(f-1)*$,v=f*$,L=N.slice(H,v),le=J=>{m({...d,category:J}),c(1)},K=(0,eu.debounce)(J=>{m({...d,search:J}),c(1)},300),ge=(J,Se)=>{let Ae=Qo(J,Se,l);h(Ae)},R=Zl(l),x=()=>{h([])},E=l.length>0?l[0]?.fontFace?.length??0:0,te=E>0&&E!==o?.fontFace?.length,ce=E===o?.fontFace?.length,ae=()=>{let J=[];!ce&&o&&J.push(o),h(J)},Ce=async()=>{a(null);let J=l[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async Se=>{Se.src&&(Se.file=await jl(Se.src))}))}catch{a({type:"error",message:(0,Re.__)("Error installing the fonts, could not be downloaded.")});return}try{await T([J]),a({type:"success",message:(0,Re.__)("Fonts were installed successfully.")})}catch(Se){a({type:"error",message:Se.message})}x()},qe=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:os(J.fontFace):[];if(g)return(0,ee.jsx)(Kl,{});let ke=e==="google-fonts"&&!g&&!o;return(0,ee.jsxs)("div",{className:"font-library__tabpanel-layout",children:[S&&(0,ee.jsx)("div",{className:"font-library__loading",children:(0,ee.jsx)(ne.ProgressBar,{})}),!S&&_&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsxs)(ne.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,ee.jsxs)(ne.Navigator.Screen,{path:"/",children:[(0,ee.jsxs)(ne.__experimentalHStack,{justify:"space-between",children:[(0,ee.jsxs)(ne.__experimentalVStack,{children:[(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,children:_.name}),(0,ee.jsx)(ne.__experimentalText,{children:_.description})]}),ke&&(0,ee.jsx)(ne.DropdownMenu,{icon:js,label:(0,Re.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,Re.__)("Revoke access to Google Fonts"),onClick:b}]})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsxs)(ne.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,ee.jsx)(ne.SearchControl,{value:d.search,placeholder:(0,Re.__)("Font name\u2026"),label:(0,Re.__)("Search"),onChange:K,hideLabelFromVision:!1}),(0,ee.jsx)(ne.SelectControl,{__next40pxDefaultSize:!0,label:(0,Re.__)("Category"),value:d.category,onChange:le,children:I&&I.map(J=>(0,ee.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),!!_?.font_families?.length&&!N.length&&(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("No fonts found. Try with a different search term.")}),(0,ee.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:L.map(J=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(go,{font:J.font_family_settings,navigatorPath:"/fontFamily",onClick:()=>{s(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,ee.jsxs)(ne.Navigator.Screen,{path:"/fontFamily",children:[(0,ee.jsxs)(ne.Flex,{justify:"flex-start",children:[(0,ee.jsx)(ne.Navigator.BackButton,{icon:(0,Re.isRTL)()?dr:cr,size:"small",onClick:()=>{s(null),a(null)},label:(0,Re.__)("Back")}),(0,ee.jsx)(ne.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),n&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(ne.__experimentalSpacer,{margin:1}),(0,ee.jsx)(ne.Notice,{status:n.type,onRemove:()=>a(null),children:n.message}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:1})]}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.__experimentalText,{children:(0,Re.__)("Select font variants to install.")}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:4}),(0,ee.jsx)(ne.CheckboxControl,{className:"font-library__select-all",label:(0,Re.__)("Select all"),checked:ce,onChange:ae,indeterminate:te}),(0,ee.jsx)(ne.__experimentalVStack,{spacing:0,children:(0,ee.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&qe(o).map((J,Se)=>(0,ee.jsx)("li",{className:"font-library__fonts-list-item",children:(0,ee.jsx)(Ql,{font:o,face:J,handleToggleVariant:ge,selected:Xl(o.slug,o.fontFace?J:null,R)})},`face${Se}`))})}),(0,ee.jsx)(ne.__experimentalSpacer,{margin:16})]})]}),o&&(0,ee.jsx)(ne.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,ee.jsx)(ne.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:Ce,isBusy:O,disabled:l.length===0||O,accessibleWhenDisabled:!0,children:(0,Re.__)("Install")})}),!o&&(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,ee.jsx)(ne.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,Ke.createInterpolateElement)((0,Re.sprintf)((0,Re._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",be),{div:(0,ee.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,ee.jsx)(ne.SelectControl,{"aria-label":(0,Re.__)("Current page"),value:f.toString(),options:[...Array(be)].map((J,Se)=>({label:(Se+1).toString(),value:(Se+1).toString()})),onChange:J=>c(parseInt(J)),size:"small",variant:"minimal"})})}),(0,ee.jsxs)(ne.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,ee.jsx)(ne.Button,{onClick:()=>c(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,Re.__)("Previous page"),icon:(0,Re.isRTL)()?Vo:zo,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,ee.jsx)(ne.Button,{onClick:()=>c(f+1),disabled:f===be,accessibleWhenDisabled:!0,label:(0,Re.__)("Next page"),icon:(0,Re.isRTL)()?zo:Vo,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var as=Id;var Yr=u(ie(),1),tt=u(X(),1),wo=u(ve(),1);var is=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),ru=(function(){var e,t,r;return(function(){function o(s,n,a){function l(c,d){if(!n[c]){if(!s[c]){var m=typeof is=="function"&&is;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=n[c]={exports:{}};s[c][0].call(y.exports,function(T){var O=s[c][1][T];return l(O||T)},y,y.exports,o,s,n,a)}return n[c].exports}for(var h=typeof is=="function"&&is,f=0;f<a.length;f++)l(a[f]);return l}return o})()({1:[function(o,s,n){var a=4096,l=2*a+32,h=2*a-1,f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function c(d){this.buf_=new Uint8Array(l),this.input_=d,this.reset()}c.READ_SIZE=a,c.IBUF_MASK=h,c.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var d=0;d<4;d++)this.val_|=this.buf_[this.pos_]<<8*d,++this.pos_;return this.bit_end_pos_>0},c.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var d=this.buf_ptr_,m=this.input_.read(this.buf_,d,a);if(m<0)throw new Error("Unexpected end of input");if(m<a){this.eos_=1;for(var g=0;g<32;g++)this.buf_[d+m+g]=0}if(d===0){for(var g=0;g<32;g++)this.buf_[(a<<1)+g]=this.buf_[g];this.buf_ptr_=a}else this.buf_ptr_=0;this.bit_end_pos_+=m<<3}},c.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&h]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},c.prototype.readBits=function(d){32-this.bit_pos_<d&&this.fillBitWindow();var m=this.val_>>>this.bit_pos_&f[d];return this.bit_pos_+=d,m},s.exports=c},{}],2:[function(o,s,n){var a=0,l=1,h=2,f=3;n.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),n.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,s,n){var a=o("./streams").BrotliInput,l=o("./streams").BrotliOutput,h=o("./bit_reader"),f=o("./dictionary"),c=o("./huffman").HuffmanCode,d=o("./huffman").BrotliBuildHuffmanTable,m=o("./context"),g=o("./prefix"),y=o("./transform"),T=8,O=16,_=256,S=704,b=26,P=6,q=2,I=8,N=255,W=1080,$=18,be=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),H=16,v=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),L=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),le=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function oe(z){var k;return z.readBits(1)===0?16:(k=z.readBits(3),k>0?17+k:(k=z.readBits(3),k>0?8+k:17))}function K(z){if(z.readBits(1)){var k=z.readBits(3);return k===0?1:z.readBits(k)+(1<<k)}return 0}function ge(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function R(z){var k=new ge,B,A,V;if(k.input_end=z.readBits(1),k.input_end&&z.readBits(1))return k;if(B=z.readBits(2)+4,B===7){if(k.is_metadata=!0,z.readBits(1)!==0)throw new Error("Invalid reserved bit");if(A=z.readBits(2),A===0)return k;for(V=0;V<A;V++){var de=z.readBits(8);if(V+1===A&&A>1&&de===0)throw new Error("Invalid size byte");k.meta_block_length|=de<<V*8}}else for(V=0;V<B;++V){var re=z.readBits(4);if(V+1===B&&B>4&&re===0)throw new Error("Invalid size nibble");k.meta_block_length|=re<<V*4}return++k.meta_block_length,!k.input_end&&!k.is_metadata&&(k.is_uncompressed=z.readBits(1)),k}function x(z,k,B){var A=k,V;return B.fillBitWindow(),k+=B.val_>>>B.bit_pos_&N,V=z[k].bits-I,V>0&&(B.bit_pos_+=I,k+=z[k].value,k+=B.val_>>>B.bit_pos_&(1<<V)-1),B.bit_pos_+=z[k].bits,z[k].value}function E(z,k,B,A){for(var V=0,de=T,re=0,se=0,we=32768,ue=[],Y=0;Y<32;Y++)ue.push(new c(0,0));for(d(ue,0,5,z,$);V<k&&we>0;){var _e=0,Qe;if(A.readMoreInput(),A.fillBitWindow(),_e+=A.val_>>>A.bit_pos_&31,A.bit_pos_+=ue[_e].bits,Qe=ue[_e].value&255,Qe<O)re=0,B[V++]=Qe,Qe!==0&&(de=Qe,we-=32768>>Qe);else{var yt=Qe-14,rt,$e,Ve=0;if(Qe===O&&(Ve=de),se!==Ve&&(re=0,se=Ve),rt=re,re>0&&(re-=2,re<<=yt),re+=A.readBits(yt)+3,$e=re-rt,V+$e>k)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var et=0;et<$e;et++)B[V+et]=se;V+=$e,se!==0&&(we-=$e<<15-se)}}if(we!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+we);for(;V<k;V++)B[V]=0}function te(z,k,B,A){var V=0,de,re=new Uint8Array(z);if(A.readMoreInput(),de=A.readBits(2),de===1){for(var se,we=z-1,ue=0,Y=new Int32Array(4),_e=A.readBits(2)+1;we;)we>>=1,++ue;for(se=0;se<_e;++se)Y[se]=A.readBits(ue)%z,re[Y[se]]=2;switch(re[Y[0]]=1,_e){case 1:break;case 3:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[1]===Y[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(Y[0]===Y[1])throw new Error("[ReadHuffmanCode] invalid symbols");re[Y[1]]=1;break;case 4:if(Y[0]===Y[1]||Y[0]===Y[2]||Y[0]===Y[3]||Y[1]===Y[2]||Y[1]===Y[3]||Y[2]===Y[3])throw new Error("[ReadHuffmanCode] invalid symbols");A.readBits(1)?(re[Y[2]]=3,re[Y[3]]=3):re[Y[0]]=2;break}}else{var se,Qe=new Uint8Array($),yt=32,rt=0,$e=[new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,1),new c(2,0),new c(2,4),new c(2,3),new c(3,2),new c(2,0),new c(2,4),new c(2,3),new c(4,5)];for(se=de;se<$&&yt>0;++se){var Ve=be[se],et=0,ot;A.fillBitWindow(),et+=A.val_>>>A.bit_pos_&15,A.bit_pos_+=$e[et].bits,ot=$e[et].value,Qe[Ve]=ot,ot!==0&&(yt-=32>>ot,++rt)}if(!(rt===1||yt===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");E(Qe,z,re,A)}if(V=d(k,B,I,re,z),V===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return V}function ce(z,k,B){var A,V;return A=x(z,k,B),V=g.kBlockLengthPrefixCode[A].nbits,g.kBlockLengthPrefixCode[A].offset+B.readBits(V)}function ae(z,k,B){var A;return z<H?(B+=v[z],B&=3,A=k[B]+L[z]):A=z-H+1,A}function Ce(z,k){for(var B=z[k],A=k;A;--A)z[A]=z[A-1];z[0]=B}function qe(z,k){var B=new Uint8Array(256),A;for(A=0;A<256;++A)B[A]=A;for(A=0;A<k;++A){var V=z[A];z[A]=B[V],V&&Ce(B,V)}}function ke(z,k){this.alphabet_size=z,this.num_htrees=k,this.codes=new Array(k+k*le[z+31>>>5]),this.htrees=new Uint32Array(k)}ke.prototype.decode=function(z){var k,B,A=0;for(k=0;k<this.num_htrees;++k)this.htrees[k]=A,B=te(this.alphabet_size,this.codes,A,z),A+=B};function J(z,k){var B={num_htrees:null,context_map:null},A,V=0,de,re;k.readMoreInput();var se=B.num_htrees=K(k)+1,we=B.context_map=new Uint8Array(z);if(se<=1)return B;for(A=k.readBits(1),A&&(V=k.readBits(4)+1),de=[],re=0;re<W;re++)de[re]=new c(0,0);for(te(se+V,de,0,k),re=0;re<z;){var ue;if(k.readMoreInput(),ue=x(de,0,k),ue===0)we[re]=0,++re;else if(ue<=V)for(var Y=1+(1<<ue)+k.readBits(ue);--Y;){if(re>=z)throw new Error("[DecodeContextMap] i >= context_map_size");we[re]=0,++re}else we[re]=ue-V,++re}return k.readBits(1)&&qe(we,z),B}function Se(z,k,B,A,V,de,re){var se=B*2,we=B,ue=x(k,B*W,re),Y;ue===0?Y=V[se+(de[we]&1)]:ue===1?Y=V[se+(de[we]-1&1)]+1:Y=ue-2,Y>=z&&(Y-=z),A[B]=Y,V[se+(de[we]&1)]=Y,++de[we]}function Ae(z,k,B,A,V,de){var re=V+1,se=B&V,we=de.pos_&h.IBUF_MASK,ue;if(k<8||de.bit_pos_+(k<<3)<de.bit_end_pos_){for(;k-- >0;)de.readMoreInput(),A[se++]=de.readBits(8),se===re&&(z.write(A,re),se=0);return}if(de.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;de.bit_pos_<32;)A[se]=de.val_>>>de.bit_pos_,de.bit_pos_+=8,++se,--k;if(ue=de.bit_end_pos_-de.bit_pos_>>3,we+ue>h.IBUF_MASK){for(var Y=h.IBUF_MASK+1-we,_e=0;_e<Y;_e++)A[se+_e]=de.buf_[we+_e];ue-=Y,se+=Y,k-=Y,we=0}for(var _e=0;_e<ue;_e++)A[se+_e]=de.buf_[we+_e];if(se+=ue,k-=ue,se>=re){z.write(A,re),se-=re;for(var _e=0;_e<se;_e++)A[_e]=A[re+_e]}for(;se+k>=re;){if(ue=re-se,de.input_.read(A,se,ue)<ue)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");z.write(A,re),k-=ue,se=0}if(de.input_.read(A,se,k)<k)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");de.reset()}function Ct(z){var k=z.bit_pos_+7&-8,B=z.readBits(k-z.bit_pos_);return B==0}function Me(z){var k=new a(z),B=new h(k);oe(B);var A=R(B);return A.meta_block_length}n.BrotliDecompressedSize=Me;function sr(z,k){var B=new a(z);k==null&&(k=Me(z));var A=new Uint8Array(k),V=new l(A);return Kt(B,V),V.pos<V.buffer.length&&(V.buffer=V.buffer.subarray(0,V.pos)),V.buffer}n.BrotliDecompressBuffer=sr;function Kt(z,k){var B,A=0,V=0,de=0,re,se=0,we,ue,Y,_e,Qe=[16,15,11,4],yt=0,rt=0,$e=0,Ve=[new ke(0,0),new ke(0,0),new ke(0,0)],et,ot,me,Qr=128+h.READ_SIZE;me=new h(z),de=oe(me),re=(1<<de)-16,we=1<<de,ue=we-1,Y=new Uint8Array(we+Qr+f.maxDictionaryWordLength),_e=we,et=[],ot=[];for(var Tr=0;Tr<3*W;Tr++)et[Tr]=new c(0,0),ot[Tr]=new c(0,0);for(;!V;){var je=0,ko,_t=[1<<28,1<<28,1<<28],Et=[0],vt=[1,1,1],w=[0,1,0,1,0,1],M=[0],i,U,Pe,j,st=null,G=null,Ne,F=null,C,nr=0,Oe=null,Q=0,ar=0,ir=null,Ie=0,xe=0,Ge=0,Ue,Ye;for(B=0;B<3;++B)Ve[B].codes=null,Ve[B].htrees=null;me.readMoreInput();var jt=R(me);if(je=jt.meta_block_length,A+je>k.buffer.length){var lr=new Uint8Array(A+je);lr.set(k.buffer),k.buffer=lr}if(V=jt.input_end,ko=jt.is_uncompressed,jt.is_metadata){for(Ct(me);je>0;--je)me.readMoreInput(),me.readBits(8);continue}if(je!==0){if(ko){me.bit_pos_=me.bit_pos_+7&-8,Ae(k,je,A,Y,ue,me),A+=je;continue}for(B=0;B<3;++B)vt[B]=K(me)+1,vt[B]>=2&&(te(vt[B]+2,et,B*W,me),te(b,ot,B*W,me),_t[B]=ce(ot,B*W,me),M[B]=1);for(me.readMoreInput(),i=me.readBits(2),U=H+(me.readBits(4)<<i),Pe=(1<<i)-1,j=U+(48<<i),G=new Uint8Array(vt[0]),B=0;B<vt[0];++B)me.readMoreInput(),G[B]=me.readBits(2)<<1;var Le=J(vt[0]<<P,me);Ne=Le.num_htrees,st=Le.context_map;var nt=J(vt[2]<<q,me);for(C=nt.num_htrees,F=nt.context_map,Ve[0]=new ke(_,Ne),Ve[1]=new ke(S,vt[1]),Ve[2]=new ke(j,C),B=0;B<3;++B)Ve[B].decode(me);for(Oe=0,ir=0,Ue=G[Et[0]],xe=m.lookupOffsets[Ue],Ge=m.lookupOffsets[Ue+1],Ye=Ve[1].htrees[0];je>0;){var ze,at,ft,Pr,ks,ct,bt,Gt,$r,Ar,eo;for(me.readMoreInput(),_t[1]===0&&(Se(vt[1],et,1,Et,w,M,me),_t[1]=ce(ot,W,me),Ye=Ve[1].htrees[Et[1]]),--_t[1],ze=x(Ve[1].codes,Ye,me),at=ze>>6,at>=2?(at-=2,bt=-1):bt=0,ft=g.kInsertRangeLut[at]+(ze>>3&7),Pr=g.kCopyRangeLut[at]+(ze&7),ks=g.kInsertLengthPrefixCode[ft].offset+me.readBits(g.kInsertLengthPrefixCode[ft].nbits),ct=g.kCopyLengthPrefixCode[Pr].offset+me.readBits(g.kCopyLengthPrefixCode[Pr].nbits),rt=Y[A-1&ue],$e=Y[A-2&ue],Ar=0;Ar<ks;++Ar)me.readMoreInput(),_t[0]===0&&(Se(vt[0],et,0,Et,w,M,me),_t[0]=ce(ot,0,me),nr=Et[0]<<P,Oe=nr,Ue=G[Et[0]],xe=m.lookupOffsets[Ue],Ge=m.lookupOffsets[Ue+1]),$r=m.lookup[xe+rt]|m.lookup[Ge+$e],Q=st[Oe+$r],--_t[0],$e=rt,rt=x(Ve[0].codes,Ve[0].htrees[Q],me),Y[A&ue]=rt,(A&ue)===ue&&k.write(Y,we),++A;if(je-=ks,je<=0)break;if(bt<0){var $r;if(me.readMoreInput(),_t[2]===0&&(Se(vt[2],et,2,Et,w,M,me),_t[2]=ce(ot,2*W,me),ar=Et[2]<<q,ir=ar),--_t[2],$r=(ct>4?3:ct-2)&255,Ie=F[ir+$r],bt=x(Ve[2].codes,Ve[2].htrees[Ie],me),bt>=U){var Os,da,to;bt-=U,da=bt&Pe,bt>>=i,Os=(bt>>1)+1,to=(2+(bt&1)<<Os)-4,bt=U+(to+me.readBits(Os)<<i)+da}}if(Gt=ae(bt,Qe,yt),Gt<0)throw new Error("[BrotliDecompress] invalid distance");if(A<re&&se!==re?se=A:se=re,eo=A&ue,Gt>se)if(ct>=f.minDictionaryWordLength&&ct<=f.maxDictionaryWordLength){var to=f.offsetsByLength[ct],pa=Gt-se-1,ma=f.sizeBitsByLength[ct],wf=(1<<ma)-1,xf=pa&wf,ha=pa>>ma;if(to+=xf*ct,ha<y.kNumTransforms){var Ts=y.transformDictionaryWord(Y,eo,to,ct,ha);if(eo+=Ts,A+=Ts,je-=Ts,eo>=_e){k.write(Y,we);for(var Oo=0;Oo<eo-_e;Oo++)Y[Oo]=Y[_e+Oo]}}else throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je)}else throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je);else{if(bt>0&&(Qe[yt&3]=Gt,++yt),ct>je)throw new Error("Invalid backward reference. pos: "+A+" distance: "+Gt+" len: "+ct+" bytes left: "+je);for(Ar=0;Ar<ct;++Ar)Y[A&ue]=Y[A-Gt&ue],(A&ue)===ue&&k.write(Y,we),++A,--je}rt=Y[A-1&ue],$e=Y[A-2&ue]}A&=1073741823}}k.write(Y,A&ue)}n.BrotliDecompress=Kt,f.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,s,n){var a=o("base64-js");n.init=function(){var l=o("./decode").BrotliDecompressBuffer,h=a.toByteArray(o("./dictionary.bin.js"));return l(h)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,s,n){s.exports="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"},{}],6:[function(o,s,n){var a=o("./dictionary-browser");n.init=function(){n.dictionary=a.init()},n.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),n.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),n.minDictionaryWordLength=4,n.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,s,n){function a(d,m){this.bits=d,this.value=m}n.HuffmanCode=a;var l=15;function h(d,m){for(var g=1<<m-1;d&g;)g>>=1;return(d&g-1)+g}function f(d,m,g,y,T){do y-=g,d[m+y]=new a(T.bits,T.value);while(y>0)}function c(d,m,g){for(var y=1<<m-g;m<l&&(y-=d[m],!(y<=0));)++m,y<<=1;return m-g}n.BrotliBuildHuffmanTable=function(d,m,g,y,T){var O=m,_,S,b,P,q,I,N,W,$,be,H,v=new Int32Array(l+1),L=new Int32Array(l+1);for(H=new Int32Array(T),b=0;b<T;b++)v[y[b]]++;for(L[1]=0,S=1;S<l;S++)L[S+1]=L[S]+v[S];for(b=0;b<T;b++)y[b]!==0&&(H[L[y[b]]++]=b);if(W=g,$=1<<W,be=$,L[l]===1){for(P=0;P<be;++P)d[m+P]=new a(0,H[0]&65535);return be}for(P=0,b=0,S=1,q=2;S<=g;++S,q<<=1)for(;v[S]>0;--v[S])_=new a(S&255,H[b++]&65535),f(d,m+P,q,$,_),P=h(P,S);for(N=be-1,I=-1,S=g+1,q=2;S<=l;++S,q<<=1)for(;v[S]>0;--v[S])(P&N)!==I&&(m+=$,W=c(v,S,g),$=1<<W,be+=$,I=P&N,d[O+I]=new a(W+g&255,m-O-I&65535)),_=new a(S-g&255,H[b++]&65535),f(d,m+(P>>g),q,$,_),P=h(P,S);return be}},{}],8:[function(o,s,n){"use strict";n.byteLength=g,n.toByteArray=T,n.fromByteArray=S;for(var a=[],l=[],h=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,d=f.length;c<d;++c)a[c]=f[c],l[f.charCodeAt(c)]=c;l[45]=62,l[95]=63;function m(b){var P=b.length;if(P%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var q=b.indexOf("=");q===-1&&(q=P);var I=q===P?0:4-q%4;return[q,I]}function g(b){var P=m(b),q=P[0],I=P[1];return(q+I)*3/4-I}function y(b,P,q){return(P+q)*3/4-q}function T(b){for(var P,q=m(b),I=q[0],N=q[1],W=new h(y(b,I,N)),$=0,be=N>0?I-4:I,H=0;H<be;H+=4)P=l[b.charCodeAt(H)]<<18|l[b.charCodeAt(H+1)]<<12|l[b.charCodeAt(H+2)]<<6|l[b.charCodeAt(H+3)],W[$++]=P>>16&255,W[$++]=P>>8&255,W[$++]=P&255;return N===2&&(P=l[b.charCodeAt(H)]<<2|l[b.charCodeAt(H+1)]>>4,W[$++]=P&255),N===1&&(P=l[b.charCodeAt(H)]<<10|l[b.charCodeAt(H+1)]<<4|l[b.charCodeAt(H+2)]>>2,W[$++]=P>>8&255,W[$++]=P&255),W}function O(b){return a[b>>18&63]+a[b>>12&63]+a[b>>6&63]+a[b&63]}function _(b,P,q){for(var I,N=[],W=P;W<q;W+=3)I=(b[W]<<16&16711680)+(b[W+1]<<8&65280)+(b[W+2]&255),N.push(O(I));return N.join("")}function S(b){for(var P,q=b.length,I=q%3,N=[],W=16383,$=0,be=q-I;$<be;$+=W)N.push(_(b,$,$+W>be?be:$+W));return I===1?(P=b[q-1],N.push(a[P>>2]+a[P<<4&63]+"==")):I===2&&(P=(b[q-2]<<8)+b[q-1],N.push(a[P>>10]+a[P>>4&63]+a[P<<2&63]+"=")),N.join("")}},{}],9:[function(o,s,n){function a(l,h){this.offset=l,this.nbits=h}n.kBlockLengthPrefixCode=[new a(1,2),new a(5,2),new a(9,2),new a(13,2),new a(17,3),new a(25,3),new a(33,3),new a(41,3),new a(49,4),new a(65,4),new a(81,4),new a(97,4),new a(113,5),new a(145,5),new a(177,5),new a(209,5),new a(241,6),new a(305,6),new a(369,7),new a(497,8),new a(753,9),new a(1265,10),new a(2289,11),new a(4337,12),new a(8433,13),new a(16625,24)],n.kInsertLengthPrefixCode=[new a(0,0),new a(1,0),new a(2,0),new a(3,0),new a(4,0),new a(5,0),new a(6,1),new a(8,1),new a(10,2),new a(14,2),new a(18,3),new a(26,3),new a(34,4),new a(50,4),new a(66,5),new a(98,5),new a(130,6),new a(194,7),new a(322,8),new a(578,9),new a(1090,10),new a(2114,12),new a(6210,14),new a(22594,24)],n.kCopyLengthPrefixCode=[new a(2,0),new a(3,0),new a(4,0),new a(5,0),new a(6,0),new a(7,0),new a(8,0),new a(9,0),new a(10,1),new a(12,1),new a(14,2),new a(18,2),new a(22,3),new a(30,3),new a(38,4),new a(54,4),new a(70,5),new a(102,5),new a(134,6),new a(198,7),new a(326,8),new a(582,9),new a(1094,10),new a(2118,24)],n.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],n.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,s,n){function a(h){this.buffer=h,this.pos=0}a.prototype.read=function(h,f,c){this.pos+c>this.buffer.length&&(c=this.buffer.length-this.pos);for(var d=0;d<c;d++)h[f+d]=this.buffer[this.pos+d];return this.pos+=c,c},n.BrotliInput=a;function l(h){this.buffer=h,this.pos=0}l.prototype.write=function(h,f){if(this.pos+f>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(h.subarray(0,f),this.pos),this.pos+=f,f},n.BrotliOutput=l},{}],11:[function(o,s,n){var a=o("./dictionary"),l=0,h=1,f=2,c=3,d=4,m=5,g=6,y=7,T=8,O=9,_=10,S=11,b=12,P=13,q=14,I=15,N=16,W=17,$=18,be=19,H=20;function v(oe,K,ge){this.prefix=new Uint8Array(oe.length),this.transform=K,this.suffix=new Uint8Array(ge.length);for(var R=0;R<oe.length;R++)this.prefix[R]=oe.charCodeAt(R);for(var R=0;R<ge.length;R++)this.suffix[R]=ge.charCodeAt(R)}var L=[new v("",l,""),new v("",l," "),new v(" ",l," "),new v("",b,""),new v("",_," "),new v("",l," the "),new v(" ",l,""),new v("s ",l," "),new v("",l," of "),new v("",_,""),new v("",l," and "),new v("",P,""),new v("",h,""),new v(", ",l," "),new v("",l,", "),new v(" ",_," "),new v("",l," in "),new v("",l," to "),new v("e ",l," "),new v("",l,'"'),new v("",l,"."),new v("",l,'">'),new v("",l,` -`),new v("",c,""),new v("",l,"]"),new v("",l," for "),new v("",q,""),new v("",f,""),new v("",l," a "),new v("",l," that "),new v(" ",_,""),new v("",l,". "),new v(".",l,""),new v(" ",l,", "),new v("",I,""),new v("",l," with "),new v("",l,"'"),new v("",l," from "),new v("",l," by "),new v("",N,""),new v("",W,""),new v(" the ",l,""),new v("",d,""),new v("",l,". The "),new v("",S,""),new v("",l," on "),new v("",l," as "),new v("",l," is "),new v("",y,""),new v("",h,"ing "),new v("",l,` - `),new v("",l,":"),new v(" ",l,". "),new v("",l,"ed "),new v("",H,""),new v("",$,""),new v("",g,""),new v("",l,"("),new v("",_,", "),new v("",T,""),new v("",l," at "),new v("",l,"ly "),new v(" the ",l," of "),new v("",m,""),new v("",O,""),new v(" ",_,", "),new v("",_,'"'),new v(".",l,"("),new v("",S," "),new v("",_,'">'),new v("",l,'="'),new v(" ",l,"."),new v(".com/",l,""),new v(" the ",l," of the "),new v("",_,"'"),new v("",l,". This "),new v("",l,","),new v(".",l," "),new v("",_,"("),new v("",_,"."),new v("",l," not "),new v(" ",l,'="'),new v("",l,"er "),new v(" ",S," "),new v("",l,"al "),new v(" ",S,""),new v("",l,"='"),new v("",S,'"'),new v("",_,". "),new v(" ",l,"("),new v("",l,"ful "),new v(" ",_,". "),new v("",l,"ive "),new v("",l,"less "),new v("",S,"'"),new v("",l,"est "),new v(" ",_,"."),new v("",S,'">'),new v(" ",l,"='"),new v("",_,","),new v("",l,"ize "),new v("",S,"."),new v("\xC2\xA0",l,""),new v(" ",l,","),new v("",_,'="'),new v("",S,'="'),new v("",l,"ous "),new v("",S,", "),new v("",_,"='"),new v(" ",_,","),new v(" ",S,'="'),new v(" ",S,", "),new v("",S,","),new v("",S,"("),new v("",S,". "),new v(" ",S,"."),new v("",S,"='"),new v(" ",S,". "),new v(" ",_,'="'),new v(" ",S,"='"),new v(" ",_,"='")];n.kTransforms=L,n.kNumTransforms=L.length;function le(oe,K){return oe[K]<192?(oe[K]>=97&&oe[K]<=122&&(oe[K]^=32),1):oe[K]<224?(oe[K+1]^=32,2):(oe[K+2]^=5,3)}n.transformDictionaryWord=function(oe,K,ge,R,x){var E=L[x].prefix,te=L[x].suffix,ce=L[x].transform,ae=ce<b?0:ce-(b-1),Ce=0,qe=K,ke;ae>R&&(ae=R);for(var J=0;J<E.length;)oe[K++]=E[J++];for(ge+=ae,R-=ae,ce<=O&&(R-=ce),Ce=0;Ce<R;Ce++)oe[K++]=a.dictionary[ge+Ce];if(ke=K-R,ce===_)le(oe,ke);else if(ce===S)for(;R>0;){var Se=le(oe,ke);ke+=Se,R-=Se}for(var Ae=0;Ae<te.length;)oe[K++]=te[Ae++];return K-qe}},{"./dictionary":6}],12:[function(o,s,n){s.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var ls=(e=>typeof dt<"u"?dt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof dt<"u"?dt:t)[r]}):e)(function(e){if(typeof dt<"u")return dt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),ou=(function(){var e,t,r;return(function(){function o(s,n,a){function l(c,d){if(!n[c]){if(!s[c]){var m=typeof ls=="function"&&ls;if(!d&&m)return m(c,!0);if(h)return h(c,!0);var g=new Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g}var y=n[c]={exports:{}};s[c][0].call(y.exports,function(T){var O=s[c][1][T];return l(O||T)},y,y.exports,o,s,n,a)}return n[c].exports}for(var h=typeof ls=="function"&&ls,f=0;f<a.length;f++)l(a[f]);return l}return o})()({1:[function(o,s,n){"use strict";var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function l(c,d){return Object.prototype.hasOwnProperty.call(c,d)}n.assign=function(c){for(var d=Array.prototype.slice.call(arguments,1);d.length;){var m=d.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var g in m)l(m,g)&&(c[g]=m[g])}}return c},n.shrinkBuf=function(c,d){return c.length===d?c:c.subarray?c.subarray(0,d):(c.length=d,c)};var h={arraySet:function(c,d,m,g,y){if(d.subarray&&c.subarray){c.set(d.subarray(m,m+g),y);return}for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){var d,m,g,y,T,O;for(g=0,d=0,m=c.length;d<m;d++)g+=c[d].length;for(O=new Uint8Array(g),y=0,d=0,m=c.length;d<m;d++)T=c[d],O.set(T,y),y+=T.length;return O}},f={arraySet:function(c,d,m,g,y){for(var T=0;T<g;T++)c[y+T]=d[m+T]},flattenChunks:function(c){return[].concat.apply([],c)}};n.setTyped=function(c){c?(n.Buf8=Uint8Array,n.Buf16=Uint16Array,n.Buf32=Int32Array,n.assign(n,h)):(n.Buf8=Array,n.Buf16=Array,n.Buf32=Array,n.assign(n,f))},n.setTyped(a)},{}],2:[function(o,s,n){"use strict";var a=o("./common"),l=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{h=!1}for(var f=new a.Buf8(256),c=0;c<256;c++)f[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;f[254]=f[254]=1,n.string2buf=function(m){var g,y,T,O,_,S=m.length,b=0;for(O=0;O<S;O++)y=m.charCodeAt(O),(y&64512)===55296&&O+1<S&&(T=m.charCodeAt(O+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),O++)),b+=y<128?1:y<2048?2:y<65536?3:4;for(g=new a.Buf8(b),_=0,O=0;_<b;O++)y=m.charCodeAt(O),(y&64512)===55296&&O+1<S&&(T=m.charCodeAt(O+1),(T&64512)===56320&&(y=65536+(y-55296<<10)+(T-56320),O++)),y<128?g[_++]=y:y<2048?(g[_++]=192|y>>>6,g[_++]=128|y&63):y<65536?(g[_++]=224|y>>>12,g[_++]=128|y>>>6&63,g[_++]=128|y&63):(g[_++]=240|y>>>18,g[_++]=128|y>>>12&63,g[_++]=128|y>>>6&63,g[_++]=128|y&63);return g};function d(m,g){if(g<65534&&(m.subarray&&h||!m.subarray&&l))return String.fromCharCode.apply(null,a.shrinkBuf(m,g));for(var y="",T=0;T<g;T++)y+=String.fromCharCode(m[T]);return y}n.buf2binstring=function(m){return d(m,m.length)},n.binstring2buf=function(m){for(var g=new a.Buf8(m.length),y=0,T=g.length;y<T;y++)g[y]=m.charCodeAt(y);return g},n.buf2string=function(m,g){var y,T,O,_,S=g||m.length,b=new Array(S*2);for(T=0,y=0;y<S;){if(O=m[y++],O<128){b[T++]=O;continue}if(_=f[O],_>4){b[T++]=65533,y+=_-1;continue}for(O&=_===2?31:_===3?15:7;_>1&&y<S;)O=O<<6|m[y++]&63,_--;if(_>1){b[T++]=65533;continue}O<65536?b[T++]=O:(O-=65536,b[T++]=55296|O>>10&1023,b[T++]=56320|O&1023)}return d(b,T)},n.utf8border=function(m,g){var y;for(g=g||m.length,g>m.length&&(g=m.length),y=g-1;y>=0&&(m[y]&192)===128;)y--;return y<0||y===0?g:y+f[m[y]]>g?y:g}},{"./common":1}],3:[function(o,s,n){"use strict";function a(l,h,f,c){for(var d=l&65535|0,m=l>>>16&65535|0,g=0;f!==0;){g=f>2e3?2e3:f,f-=g;do d=d+h[c++]|0,m=m+d|0;while(--g);d%=65521,m%=65521}return d|m<<16|0}s.exports=a},{}],4:[function(o,s,n){"use strict";s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,s,n){"use strict";function a(){for(var f,c=[],d=0;d<256;d++){f=d;for(var m=0;m<8;m++)f=f&1?3988292384^f>>>1:f>>>1;c[d]=f}return c}var l=a();function h(f,c,d,m){var g=l,y=m+d;f^=-1;for(var T=m;T<y;T++)f=f>>>8^g[(f^c[T])&255];return f^-1}s.exports=h},{}],6:[function(o,s,n){"use strict";function a(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}s.exports=a},{}],7:[function(o,s,n){"use strict";var a=30,l=12;s.exports=function(f,c){var d,m,g,y,T,O,_,S,b,P,q,I,N,W,$,be,H,v,L,le,oe,K,ge,R,x;d=f.state,m=f.next_in,R=f.input,g=m+(f.avail_in-5),y=f.next_out,x=f.output,T=y-(c-f.avail_out),O=y+(f.avail_out-257),_=d.dmax,S=d.wsize,b=d.whave,P=d.wnext,q=d.window,I=d.hold,N=d.bits,W=d.lencode,$=d.distcode,be=(1<<d.lenbits)-1,H=(1<<d.distbits)-1;e:do{N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=W[I&be];t:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L===0)x[y++]=v&65535;else if(L&16){le=v&65535,L&=15,L&&(N<L&&(I+=R[m++]<<N,N+=8),le+=I&(1<<L)-1,I>>>=L,N-=L),N<15&&(I+=R[m++]<<N,N+=8,I+=R[m++]<<N,N+=8),v=$[I&H];r:for(;;){if(L=v>>>24,I>>>=L,N-=L,L=v>>>16&255,L&16){if(oe=v&65535,L&=15,N<L&&(I+=R[m++]<<N,N+=8,N<L&&(I+=R[m++]<<N,N+=8)),oe+=I&(1<<L)-1,oe>_){f.msg="invalid distance too far back",d.mode=a;break e}if(I>>>=L,N-=L,L=y-T,oe>L){if(L=oe-L,L>b&&d.sane){f.msg="invalid distance too far back",d.mode=a;break e}if(K=0,ge=q,P===0){if(K+=S-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}else if(P<L){if(K+=S+P-L,L-=P,L<le){le-=L;do x[y++]=q[K++];while(--L);if(K=0,P<le){L=P,le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}}}else if(K+=P-L,L<le){le-=L;do x[y++]=q[K++];while(--L);K=y-oe,ge=x}for(;le>2;)x[y++]=ge[K++],x[y++]=ge[K++],x[y++]=ge[K++],le-=3;le&&(x[y++]=ge[K++],le>1&&(x[y++]=ge[K++]))}else{K=y-oe;do x[y++]=x[K++],x[y++]=x[K++],x[y++]=x[K++],le-=3;while(le>2);le&&(x[y++]=x[K++],le>1&&(x[y++]=x[K++]))}}else if((L&64)===0){v=$[(v&65535)+(I&(1<<L)-1)];continue r}else{f.msg="invalid distance code",d.mode=a;break e}break}}else if((L&64)===0){v=W[(v&65535)+(I&(1<<L)-1)];continue t}else if(L&32){d.mode=l;break e}else{f.msg="invalid literal/length code",d.mode=a;break e}break}}while(m<g&&y<O);le=N>>3,m-=le,N-=le<<3,I&=(1<<N)-1,f.next_in=m,f.next_out=y,f.avail_in=m<g?5+(g-m):5-(m-g),f.avail_out=y<O?257+(O-y):257-(y-O),d.hold=I,d.bits=N}},{}],8:[function(o,s,n){"use strict";var a=o("../utils/common"),l=o("./adler32"),h=o("./crc32"),f=o("./inffast"),c=o("./inftrees"),d=0,m=1,g=2,y=4,T=5,O=6,_=0,S=1,b=2,P=-2,q=-3,I=-4,N=-5,W=8,$=1,be=2,H=3,v=4,L=5,le=6,oe=7,K=8,ge=9,R=10,x=11,E=12,te=13,ce=14,ae=15,Ce=16,qe=17,ke=18,J=19,Se=20,Ae=21,Ct=22,Me=23,sr=24,Kt=25,z=26,k=27,B=28,A=29,V=30,de=31,re=32,se=852,we=592,ue=15,Y=ue;function _e(w){return(w>>>24&255)+(w>>>8&65280)+((w&65280)<<8)+((w&255)<<24)}function Qe(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function yt(w){var M;return!w||!w.state?P:(M=w.state,w.total_in=w.total_out=M.total=0,w.msg="",M.wrap&&(w.adler=M.wrap&1),M.mode=$,M.last=0,M.havedict=0,M.dmax=32768,M.head=null,M.hold=0,M.bits=0,M.lencode=M.lendyn=new a.Buf32(se),M.distcode=M.distdyn=new a.Buf32(we),M.sane=1,M.back=-1,_)}function rt(w){var M;return!w||!w.state?P:(M=w.state,M.wsize=0,M.whave=0,M.wnext=0,yt(w))}function $e(w,M){var i,U;return!w||!w.state||(U=w.state,M<0?(i=0,M=-M):(i=(M>>4)+1,M<48&&(M&=15)),M&&(M<8||M>15))?P:(U.window!==null&&U.wbits!==M&&(U.window=null),U.wrap=i,U.wbits=M,rt(w))}function Ve(w,M){var i,U;return w?(U=new Qe,w.state=U,U.window=null,i=$e(w,M),i!==_&&(w.state=null),i):P}function et(w){return Ve(w,Y)}var ot=!0,me,Qr;function Tr(w){if(ot){var M;for(me=new a.Buf32(512),Qr=new a.Buf32(32),M=0;M<144;)w.lens[M++]=8;for(;M<256;)w.lens[M++]=9;for(;M<280;)w.lens[M++]=7;for(;M<288;)w.lens[M++]=8;for(c(m,w.lens,0,288,me,0,w.work,{bits:9}),M=0;M<32;)w.lens[M++]=5;c(g,w.lens,0,32,Qr,0,w.work,{bits:5}),ot=!1}w.lencode=me,w.lenbits=9,w.distcode=Qr,w.distbits=5}function je(w,M,i,U){var Pe,j=w.state;return j.window===null&&(j.wsize=1<<j.wbits,j.wnext=0,j.whave=0,j.window=new a.Buf8(j.wsize)),U>=j.wsize?(a.arraySet(j.window,M,i-j.wsize,j.wsize,0),j.wnext=0,j.whave=j.wsize):(Pe=j.wsize-j.wnext,Pe>U&&(Pe=U),a.arraySet(j.window,M,i-U,Pe,j.wnext),U-=Pe,U?(a.arraySet(j.window,M,i-U,U,0),j.wnext=U,j.whave=j.wsize):(j.wnext+=Pe,j.wnext===j.wsize&&(j.wnext=0),j.whave<j.wsize&&(j.whave+=Pe))),0}function ko(w,M){var i,U,Pe,j,st,G,Ne,F,C,nr,Oe,Q,ar,ir,Ie=0,xe,Ge,Ue,Ye,jt,lr,Le,nt,ze=new a.Buf8(4),at,ft,Pr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return P;i=w.state,i.mode===E&&(i.mode=te),st=w.next_out,Pe=w.output,Ne=w.avail_out,j=w.next_in,U=w.input,G=w.avail_in,F=i.hold,C=i.bits,nr=G,Oe=Ne,nt=_;e:for(;;)switch(i.mode){case $:if(i.wrap===0){i.mode=te;break}for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.wrap&2&&F===35615){i.check=0,ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0),F=0,C=0,i.mode=be;break}if(i.flags=0,i.head&&(i.head.done=!1),!(i.wrap&1)||(((F&255)<<8)+(F>>8))%31){w.msg="incorrect header check",i.mode=V;break}if((F&15)!==W){w.msg="unknown compression method",i.mode=V;break}if(F>>>=4,C-=4,Le=(F&15)+8,i.wbits===0)i.wbits=Le;else if(Le>i.wbits){w.msg="invalid window size",i.mode=V;break}i.dmax=1<<Le,w.adler=i.check=1,i.mode=F&512?R:E,F=0,C=0;break;case be:for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.flags=F,(i.flags&255)!==W){w.msg="unknown compression method",i.mode=V;break}if(i.flags&57344){w.msg="unknown header flags set",i.mode=V;break}i.head&&(i.head.text=F>>8&1),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0,i.mode=H;case H:for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.head&&(i.head.time=F),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,ze[2]=F>>>16&255,ze[3]=F>>>24&255,i.check=h(i.check,ze,4,0)),F=0,C=0,i.mode=v;case v:for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.head&&(i.head.xflags=F&255,i.head.os=F>>8),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0,i.mode=L;case L:if(i.flags&1024){for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.length=F,i.head&&(i.head.extra_len=F),i.flags&512&&(ze[0]=F&255,ze[1]=F>>>8&255,i.check=h(i.check,ze,2,0)),F=0,C=0}else i.head&&(i.head.extra=null);i.mode=le;case le:if(i.flags&1024&&(Q=i.length,Q>G&&(Q=G),Q&&(i.head&&(Le=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),a.arraySet(i.head.extra,U,j,Q,Le)),i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,i.length-=Q),i.length))break e;i.length=0,i.mode=oe;case oe:if(i.flags&2048){if(G===0)break e;Q=0;do Le=U[j+Q++],i.head&&Le&&i.length<65536&&(i.head.name+=String.fromCharCode(Le));while(Le&&Q<G);if(i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,Le)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=K;case K:if(i.flags&4096){if(G===0)break e;Q=0;do Le=U[j+Q++],i.head&&Le&&i.length<65536&&(i.head.comment+=String.fromCharCode(Le));while(Le&&Q<G);if(i.flags&512&&(i.check=h(i.check,U,Q,j)),G-=Q,j+=Q,Le)break e}else i.head&&(i.head.comment=null);i.mode=ge;case ge:if(i.flags&512){for(;C<16;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F!==(i.check&65535)){w.msg="header crc mismatch",i.mode=V;break}F=0,C=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),w.adler=i.check=0,i.mode=E;break;case R:for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}w.adler=i.check=_e(F),F=0,C=0,i.mode=x;case x:if(i.havedict===0)return w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,b;w.adler=i.check=1,i.mode=E;case E:if(M===T||M===O)break e;case te:if(i.last){F>>>=C&7,C-=C&7,i.mode=k;break}for(;C<3;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}switch(i.last=F&1,F>>>=1,C-=1,F&3){case 0:i.mode=ce;break;case 1:if(Tr(i),i.mode=Se,M===O){F>>>=2,C-=2;break e}break;case 2:i.mode=qe;break;case 3:w.msg="invalid block type",i.mode=V}F>>>=2,C-=2;break;case ce:for(F>>>=C&7,C-=C&7;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if((F&65535)!==(F>>>16^65535)){w.msg="invalid stored block lengths",i.mode=V;break}if(i.length=F&65535,F=0,C=0,i.mode=ae,M===O)break e;case ae:i.mode=Ce;case Ce:if(Q=i.length,Q){if(Q>G&&(Q=G),Q>Ne&&(Q=Ne),Q===0)break e;a.arraySet(Pe,U,j,Q,st),G-=Q,j+=Q,Ne-=Q,st+=Q,i.length-=Q;break}i.mode=E;break;case qe:for(;C<14;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(i.nlen=(F&31)+257,F>>>=5,C-=5,i.ndist=(F&31)+1,F>>>=5,C-=5,i.ncode=(F&15)+4,F>>>=4,C-=4,i.nlen>286||i.ndist>30){w.msg="too many length or distance symbols",i.mode=V;break}i.have=0,i.mode=ke;case ke:for(;i.have<i.ncode;){for(;C<3;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.lens[Pr[i.have++]]=F&7,F>>>=3,C-=3}for(;i.have<19;)i.lens[Pr[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,at={bits:i.lenbits},nt=c(d,i.lens,0,19,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid code lengths set",i.mode=V;break}i.have=0,i.mode=J;case J:for(;i.have<i.nlen+i.ndist;){for(;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(Ue<16)F>>>=xe,C-=xe,i.lens[i.have++]=Ue;else{if(Ue===16){for(ft=xe+2;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F>>>=xe,C-=xe,i.have===0){w.msg="invalid bit length repeat",i.mode=V;break}Le=i.lens[i.have-1],Q=3+(F&3),F>>>=2,C-=2}else if(Ue===17){for(ft=xe+3;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=3+(F&7),F>>>=3,C-=3}else{for(ft=xe+7;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=xe,C-=xe,Le=0,Q=11+(F&127),F>>>=7,C-=7}if(i.have+Q>i.nlen+i.ndist){w.msg="invalid bit length repeat",i.mode=V;break}for(;Q--;)i.lens[i.have++]=Le}}if(i.mode===V)break;if(i.lens[256]===0){w.msg="invalid code -- missing end-of-block",i.mode=V;break}if(i.lenbits=9,at={bits:i.lenbits},nt=c(m,i.lens,0,i.nlen,i.lencode,0,i.work,at),i.lenbits=at.bits,nt){w.msg="invalid literal/lengths set",i.mode=V;break}if(i.distbits=6,i.distcode=i.distdyn,at={bits:i.distbits},nt=c(g,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,at),i.distbits=at.bits,nt){w.msg="invalid distances set",i.mode=V;break}if(i.mode=Se,M===O)break e;case Se:i.mode=Ae;case Ae:if(G>=6&&Ne>=258){w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,f(w,Oe),st=w.next_out,Pe=w.output,Ne=w.avail_out,j=w.next_in,U=w.input,G=w.avail_in,F=i.hold,C=i.bits,i.mode===E&&(i.back=-1);break}for(i.back=0;Ie=i.lencode[F&(1<<i.lenbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(Ge&&(Ge&240)===0){for(Ye=xe,jt=Ge,lr=Ue;Ie=i.lencode[lr+((F&(1<<Ye+jt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(Ye+xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,i.length=Ue,Ge===0){i.mode=z;break}if(Ge&32){i.back=-1,i.mode=E;break}if(Ge&64){w.msg="invalid literal/length code",i.mode=V;break}i.extra=Ge&15,i.mode=Ct;case Ct:if(i.extra){for(ft=i.extra;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.length+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=Me;case Me:for(;Ie=i.distcode[F&(1<<i.distbits)-1],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if((Ge&240)===0){for(Ye=xe,jt=Ge,lr=Ue;Ie=i.distcode[lr+((F&(1<<Ye+jt)-1)>>Ye)],xe=Ie>>>24,Ge=Ie>>>16&255,Ue=Ie&65535,!(Ye+xe<=C);){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}F>>>=Ye,C-=Ye,i.back+=Ye}if(F>>>=xe,C-=xe,i.back+=xe,Ge&64){w.msg="invalid distance code",i.mode=V;break}i.offset=Ue,i.extra=Ge&15,i.mode=sr;case sr:if(i.extra){for(ft=i.extra;C<ft;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}i.offset+=F&(1<<i.extra)-1,F>>>=i.extra,C-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){w.msg="invalid distance too far back",i.mode=V;break}i.mode=Kt;case Kt:if(Ne===0)break e;if(Q=Oe-Ne,i.offset>Q){if(Q=i.offset-Q,Q>i.whave&&i.sane){w.msg="invalid distance too far back",i.mode=V;break}Q>i.wnext?(Q-=i.wnext,ar=i.wsize-Q):ar=i.wnext-Q,Q>i.length&&(Q=i.length),ir=i.window}else ir=Pe,ar=st-i.offset,Q=i.length;Q>Ne&&(Q=Ne),Ne-=Q,i.length-=Q;do Pe[st++]=ir[ar++];while(--Q);i.length===0&&(i.mode=Ae);break;case z:if(Ne===0)break e;Pe[st++]=i.length,Ne--,i.mode=Ae;break;case k:if(i.wrap){for(;C<32;){if(G===0)break e;G--,F|=U[j++]<<C,C+=8}if(Oe-=Ne,w.total_out+=Oe,i.total+=Oe,Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,st-Oe):l(i.check,Pe,Oe,st-Oe)),Oe=Ne,(i.flags?F:_e(F))!==i.check){w.msg="incorrect data check",i.mode=V;break}F=0,C=0}i.mode=B;case B:if(i.wrap&&i.flags){for(;C<32;){if(G===0)break e;G--,F+=U[j++]<<C,C+=8}if(F!==(i.total&4294967295)){w.msg="incorrect length check",i.mode=V;break}F=0,C=0}i.mode=A;case A:nt=S;break e;case V:nt=q;break e;case de:return I;case re:default:return P}return w.next_out=st,w.avail_out=Ne,w.next_in=j,w.avail_in=G,i.hold=F,i.bits=C,(i.wsize||Oe!==w.avail_out&&i.mode<V&&(i.mode<k||M!==y))&&je(w,w.output,w.next_out,Oe-w.avail_out)?(i.mode=de,I):(nr-=w.avail_in,Oe-=w.avail_out,w.total_in+=nr,w.total_out+=Oe,i.total+=Oe,i.wrap&&Oe&&(w.adler=i.check=i.flags?h(i.check,Pe,Oe,w.next_out-Oe):l(i.check,Pe,Oe,w.next_out-Oe)),w.data_type=i.bits+(i.last?64:0)+(i.mode===E?128:0)+(i.mode===Se||i.mode===ae?256:0),(nr===0&&Oe===0||M===y)&&nt===_&&(nt=N),nt)}function _t(w){if(!w||!w.state)return P;var M=w.state;return M.window&&(M.window=null),w.state=null,_}function Et(w,M){var i;return!w||!w.state||(i=w.state,(i.wrap&2)===0)?P:(i.head=M,M.done=!1,_)}function vt(w,M){var i=M.length,U,Pe,j;return!w||!w.state||(U=w.state,U.wrap!==0&&U.mode!==x)?P:U.mode===x&&(Pe=1,Pe=l(Pe,M,i,0),Pe!==U.check)?q:(j=je(w,M,i,i),j?(U.mode=de,I):(U.havedict=1,_))}n.inflateReset=rt,n.inflateReset2=$e,n.inflateResetKeep=yt,n.inflateInit=et,n.inflateInit2=Ve,n.inflate=ko,n.inflateEnd=_t,n.inflateGetHeader=Et,n.inflateSetDictionary=vt,n.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,s,n){"use strict";var a=o("../utils/common"),l=15,h=852,f=592,c=0,d=1,m=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],O=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(S,b,P,q,I,N,W,$){var be=$.bits,H=0,v=0,L=0,le=0,oe=0,K=0,ge=0,R=0,x=0,E=0,te,ce,ae,Ce,qe,ke=null,J=0,Se,Ae=new a.Buf16(l+1),Ct=new a.Buf16(l+1),Me=null,sr=0,Kt,z,k;for(H=0;H<=l;H++)Ae[H]=0;for(v=0;v<q;v++)Ae[b[P+v]]++;for(oe=be,le=l;le>=1&&Ae[le]===0;le--);if(oe>le&&(oe=le),le===0)return I[N++]=1<<24|64<<16|0,I[N++]=1<<24|64<<16|0,$.bits=1,0;for(L=1;L<le&&Ae[L]===0;L++);for(oe<L&&(oe=L),R=1,H=1;H<=l;H++)if(R<<=1,R-=Ae[H],R<0)return-1;if(R>0&&(S===c||le!==1))return-1;for(Ct[1]=0,H=1;H<l;H++)Ct[H+1]=Ct[H]+Ae[H];for(v=0;v<q;v++)b[P+v]!==0&&(W[Ct[b[P+v]]++]=v);if(S===c?(ke=Me=W,Se=19):S===d?(ke=g,J-=257,Me=y,sr-=257,Se=256):(ke=T,Me=O,Se=-1),E=0,v=0,H=L,qe=N,K=oe,ge=0,ae=-1,x=1<<oe,Ce=x-1,S===d&&x>h||S===m&&x>f)return 1;for(;;){Kt=H-ge,W[v]<Se?(z=0,k=W[v]):W[v]>Se?(z=Me[sr+W[v]],k=ke[J+W[v]]):(z=96,k=0),te=1<<H-ge,ce=1<<K,L=ce;do ce-=te,I[qe+(E>>ge)+ce]=Kt<<24|z<<16|k|0;while(ce!==0);for(te=1<<H-1;E&te;)te>>=1;if(te!==0?(E&=te-1,E+=te):E=0,v++,--Ae[H]===0){if(H===le)break;H=b[P+W[v]]}if(H>oe&&(E&Ce)!==ae){for(ge===0&&(ge=oe),qe+=L,K=H-ge,R=1<<K;K+ge<le&&(R-=Ae[K+ge],!(R<=0));)K++,R<<=1;if(x+=1<<K,S===d&&x>h||S===m&&x>f)return 1;ae=E&Ce,I[ae]=oe<<24|K<<16|qe-N|0}}return E!==0&&(I[qe+E]=H-ge<<24|64<<16|0),$.bits=oe,0}},{"../utils/common":1}],10:[function(o,s,n){"use strict";s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,s,n){"use strict";function a(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}s.exports=a},{}],"/lib/inflate.js":[function(o,s,n){"use strict";var a=o("./zlib/inflate"),l=o("./utils/common"),h=o("./utils/strings"),f=o("./zlib/constants"),c=o("./zlib/messages"),d=o("./zlib/zstream"),m=o("./zlib/gzheader"),g=Object.prototype.toString;function y(_){if(!(this instanceof y))return new y(_);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},_||{});var S=this.options;S.raw&&S.windowBits>=0&&S.windowBits<16&&(S.windowBits=-S.windowBits,S.windowBits===0&&(S.windowBits=-15)),S.windowBits>=0&&S.windowBits<16&&!(_&&_.windowBits)&&(S.windowBits+=32),S.windowBits>15&&S.windowBits<48&&(S.windowBits&15)===0&&(S.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var b=a.inflateInit2(this.strm,S.windowBits);if(b!==f.Z_OK)throw new Error(c[b]);if(this.header=new m,a.inflateGetHeader(this.strm,this.header),S.dictionary&&(typeof S.dictionary=="string"?S.dictionary=h.string2buf(S.dictionary):g.call(S.dictionary)==="[object ArrayBuffer]"&&(S.dictionary=new Uint8Array(S.dictionary)),S.raw&&(b=a.inflateSetDictionary(this.strm,S.dictionary),b!==f.Z_OK)))throw new Error(c[b])}y.prototype.push=function(_,S){var b=this.strm,P=this.options.chunkSize,q=this.options.dictionary,I,N,W,$,be,H=!1;if(this.ended)return!1;N=S===~~S?S:S===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof _=="string"?b.input=h.binstring2buf(_):g.call(_)==="[object ArrayBuffer]"?b.input=new Uint8Array(_):b.input=_,b.next_in=0,b.avail_in=b.input.length;do{if(b.avail_out===0&&(b.output=new l.Buf8(P),b.next_out=0,b.avail_out=P),I=a.inflate(b,f.Z_NO_FLUSH),I===f.Z_NEED_DICT&&q&&(I=a.inflateSetDictionary(this.strm,q)),I===f.Z_BUF_ERROR&&H===!0&&(I=f.Z_OK,H=!1),I!==f.Z_STREAM_END&&I!==f.Z_OK)return this.onEnd(I),this.ended=!0,!1;b.next_out&&(b.avail_out===0||I===f.Z_STREAM_END||b.avail_in===0&&(N===f.Z_FINISH||N===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=h.utf8border(b.output,b.next_out),$=b.next_out-W,be=h.buf2string(b.output,W),b.next_out=$,b.avail_out=P-$,$&&l.arraySet(b.output,b.output,W,$,0),this.onData(be)):this.onData(l.shrinkBuf(b.output,b.next_out))),b.avail_in===0&&b.avail_out===0&&(H=!0)}while((b.avail_in>0||b.avail_out===0)&&I!==f.Z_STREAM_END);return I===f.Z_STREAM_END&&(N=f.Z_FINISH),N===f.Z_FINISH?(I=a.inflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===f.Z_OK):(N===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),b.avail_out=0),!0)},y.prototype.onData=function(_){this.chunks.push(_)},y.prototype.onEnd=function(_){_===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=_,this.msg=this.strm.msg};function T(_,S){var b=new y(S);if(b.push(_,!0),b.err)throw b.msg||c[b.err];return b.result}function O(_,S){return S=S||{},S.raw=!0,T(_,S)}n.Inflate=y,n.inflate=T,n.inflateRaw=O,n.ungzip=T},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var ox=globalThis.fetch,us=class{constructor(e,t={},r){this.type=e,this.detail=t,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},Ld=class{constructor(){this.listeners={}}addEventListener(e,t,r){let o=this.listeners[e]||[];r?o.unshift(t):o.push(t),this.listeners[e]=o}removeEventListener(e,t){let r=this.listeners[e]||[],o=r.findIndex(s=>s===t);o>-1&&(r.splice(o,1),this.listeners[e]=r)}dispatch(e){let t=this.listeners[e.type];if(t)for(let r=0,o=t.length;r<o&&e.__mayPropagate;r++)t[r](e)}},Bd=new Date("1904-01-01T00:00:00+0000").getTime();function Vd(e){return Array.from(e).map(t=>String.fromCharCode(t)).join("")}var Nd=class{constructor(e,t,r){this.name=(r||e.tag||"").trim(),this.length=e.length,this.start=e.offset,this.offset=0,this.data=t,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let s=o.replace(/get(Big)?/,"").toLowerCase(),n=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,s,{get:()=>this.getValue(o,n)})})}get currentPosition(){return this.start+this.offset}set currentPosition(e){this.start=e,this.offset=0}skip(e=0,t=8){this.offset+=e*t/8}getValue(e,t){let r=this.start+this.offset;this.offset+=t;try{return this.data[e](r)}catch(o){throw console.error("parser",e,t,this),console.error("parser",this.start,this.offset),o}}flags(e){if(e===8||e===16||e===32||e===64)return this[`uint${e}`].toString(2).padStart(e,0).split("").map(t=>t==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let e=this.uint32;return Vd([e>>24&255,e>>16&255,e>>8&255,e&255])}get fixed(){let e=this.int16,t=Math.round(1e3*this.uint16/65356);return e+t/1e3}get legacyFixed(){let e=this.uint16,t=this.uint16.toString(16).padStart(4,0);return parseFloat(`${e}.${t}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let e=0;for(let t=0;t<5;t++){let r=this.uint8;if(e=e*128+(r&127),r<128)break}return e}get longdatetime(){return new Date(Bd+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let e=p.uint16,t=[0,1,-2,-1][e>>14],r=e&16383;return t+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(e=0,t=0,r=8,o=!1){if(e=e||this.length,e===0)return[];t&&(this.currentPosition=t);let s=`${o?"":"u"}int${r}`,n=[];for(;e--;)n.push(this[s]);return n}},Be=class{constructor(e){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>e});let r=e.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(e){Object.keys(e).forEach(t=>{let r=Object.getOwnPropertyDescriptor(e,t);r.get?this[t]=r.get.bind(this):r.value!==void 0&&(this[t]=r.value)}),this.parser.length&&this.parser.verifyLength()}},pe=class extends Be{constructor(e,t,r){let{parser:o,start:s}=super(new Nd(e,t,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>s})}};function Z(e,t,r){let o;Object.defineProperty(e,t,{get:()=>o||(o=r(),o),enumerable:!0})}var zd=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:12},t,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new Dd(o)),this.tables={},this.directory.forEach(s=>{let n=()=>r(this.tables,{tag:s.tag,offset:s.offset,length:s.length},t);Z(this.tables,s.tag.trim(),n)})}},Dd=class{constructor(e){this.tag=e.tag,this.checksum=e.uint32,this.offset=e.uint32,this.length=e.uint32}},su=ou.inflate||void 0,nu=void 0,Md=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:44},t,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(s=>new jd(o)),Gd(this,t,r)}},jd=class{constructor(e){this.tag=e.tag,this.offset=e.uint32,this.compLength=e.uint32,this.origLength=e.uint32,this.origChecksum=e.uint32}};function Gd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=0,n=t;if(o.compLength!==o.origLength){let a=t.buffer.slice(o.offset,o.offset+o.compLength),l;if(su)l=su(new Uint8Array(a));else if(nu)l=nu(new Uint8Array(a));else{let h="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(h),new Error(h)}n=new DataView(l.buffer)}else s=o.offset;return r(e.tables,{tag:o.tag,offset:s,length:o.origLength},n)})})}var au=ru,iu=void 0,Ud=class extends pe{constructor(e,t,r){let{p:o}=super({offset:0,length:48},t,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(l=>new Wd(o));let s=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((l,h)=>{let f=this.directory[h+1];f&&(f.offset=l.offset+(l.transformLength!==void 0?l.transformLength:l.origLength))});let n,a=t.buffer.slice(s);if(au)n=au(new Uint8Array(a));else if(iu)n=new Uint8Array(iu(a));else{let l="no brotli decoder available to decode WOFF2 font";throw e.onerror&&e.onerror(l),new Error(l)}Hd(this,n,r)}},Wd=class{constructor(e){this.flags=e.uint8;let t=this.tagNumber=this.flags&63;t===63?this.tag=e.tag:this.tag=qd(t);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=e.uint128,o&&(this.transformLength=e.uint128)}};function Hd(e,t,r){e.tables={},e.directory.forEach(o=>{Z(e.tables,o.tag.trim(),()=>{let s=o.offset,n=s+(o.transformLength?o.transformLength:o.origLength),a=new DataView(t.slice(s,n).buffer);try{return r(e.tables,{tag:o.tag,offset:0,length:o.origLength},a)}catch(l){console.error(l)}})})}function qd(e){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][e&63]}var mu={},hu=!1;Promise.all([Promise.resolve().then(function(){return wp}),Promise.resolve().then(function(){return Sp}),Promise.resolve().then(function(){return _p}),Promise.resolve().then(function(){return Op}),Promise.resolve().then(function(){return Pp}),Promise.resolve().then(function(){return Lp}),Promise.resolve().then(function(){return Vp}),Promise.resolve().then(function(){return zp}),Promise.resolve().then(function(){return Zp}),Promise.resolve().then(function(){return nm}),Promise.resolve().then(function(){return qm}),Promise.resolve().then(function(){return Zm}),Promise.resolve().then(function(){return Qm}),Promise.resolve().then(function(){return rh}),Promise.resolve().then(function(){return sh}),Promise.resolve().then(function(){return ah}),Promise.resolve().then(function(){return uh}),Promise.resolve().then(function(){return ch}),Promise.resolve().then(function(){return ph}),Promise.resolve().then(function(){return hh}),Promise.resolve().then(function(){return yh}),Promise.resolve().then(function(){return bh}),Promise.resolve().then(function(){return Sh}),Promise.resolve().then(function(){return Fh}),Promise.resolve().then(function(){return kh}),Promise.resolve().then(function(){return Th}),Promise.resolve().then(function(){return Ah}),Promise.resolve().then(function(){return Eh}),Promise.resolve().then(function(){return Lh}),Promise.resolve().then(function(){return Nh}),Promise.resolve().then(function(){return Uh}),Promise.resolve().then(function(){return Yh}),Promise.resolve().then(function(){return Kh}),Promise.resolve().then(function(){return eg}),Promise.resolve().then(function(){return rg}),Promise.resolve().then(function(){return sg}),Promise.resolve().then(function(){return ig}),Promise.resolve().then(function(){return ug}),Promise.resolve().then(function(){return mg}),Promise.resolve().then(function(){return gg}),Promise.resolve().then(function(){return bg})]).then(e=>{e.forEach(t=>{let r=Object.keys(t)[0];mu[r]=t[r]}),hu=!0});function Yd(e,t,r){let o=t.tag.replace(/[^\w\d]/g,""),s=mu[o];return s?new s(t,r,e):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Zd(){let e=0;function t(r,o){if(!hu)return e>10?o(new Error("loading took too long")):(e++,setTimeout(()=>t(r),250));r(Yd)}return new Promise((r,o)=>t(r))}function Xd(e,t){let r=e.lastIndexOf("."),o=(e.substring(r+1)||"").toLowerCase(),s={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(s)return s;let n={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(n||(n=`${e} is not a known webfont format.`),t)throw new Error(n);console.warn(`Could not load font: ${n}`)}async function Kd(e,t,r={}){if(!globalThis.document)return;let o=Xd(t,r.errorOnStyle);if(!o)return;let s=document.createElement("style");s.className="injected-by-Font-js";let n=[];return r.styleRules&&(n=Object.entries(r.styleRules).map(([a,l])=>`${a}: ${l};`)),s.textContent=` +var py=Object.create;var ha=Object.defineProperty;var my=Object.getOwnPropertyDescriptor;var hy=Object.getOwnPropertyNames;var gy=Object.getPrototypeOf,yy=Object.prototype.hasOwnProperty;var jt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var nt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ga=(e,t)=>{for(var r in t)ha(e,r,{get:t[r],enumerable:!0})},vy=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of hy(t))!yy.call(e,n)&&n!==r&&ha(e,n,{get:()=>t[n],enumerable:!(o=my(t,n))||o.enumerable});return e};var m=(e,t,r)=>(r=e!=null?py(gy(e)):{},vy(t||!e||!e.__esModule?ha(r,"default",{value:e,enumerable:!0}):r,e));var Se=nt((d2,ru)=>{ru.exports=window.wp.i18n});var Pe=nt((m2,nu)=>{nu.exports=window.wp.element});var be=nt((h2,su)=>{su.exports=window.React});var Z=nt((S2,cu)=>{cu.exports=window.ReactJSXRuntime});var lo=nt((LE,Zu)=>{Zu.exports=window.ReactDOM});var Uf=nt(Hf=>{"use strict";var ln=be();function pb(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var mb=typeof Object.is=="function"?Object.is:pb,hb=ln.useState,gb=ln.useEffect,yb=ln.useLayoutEffect,vb=ln.useDebugValue;function bb(e,t){var r=t(),o=hb({inst:{value:r,getSnapshot:t}}),n=o[0].inst,s=o[1];return yb(function(){n.value=r,n.getSnapshot=t,qa(n)&&s({inst:n})},[e,r,t]),gb(function(){return qa(n)&&s({inst:n}),e(function(){qa(n)&&s({inst:n})})},[e]),vb(r),r}function qa(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!mb(e,r)}catch{return!0}}function xb(e,t){return t()}var wb=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?xb:bb;Hf.useSyncExternalStore=ln.useSyncExternalStore!==void 0?ln.useSyncExternalStore:wb});var Za=nt((n_,Wf)=>{"use strict";Wf.exports=Uf()});var Yf=nt(Gf=>{"use strict";var Ys=be(),Sb=Za();function Cb(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Rb=typeof Object.is=="function"?Object.is:Cb,Eb=Sb.useSyncExternalStore,Tb=Ys.useRef,_b=Ys.useEffect,Ob=Ys.useMemo,Pb=Ys.useDebugValue;Gf.useSyncExternalStoreWithSelector=function(e,t,r,o,n){var s=Tb(null);if(s.current===null){var i={hasValue:!1,value:null};s.current=i}else i=s.current;s=Ob(function(){function c(g){if(!u){if(u=!0,l=g,g=o(g),n!==void 0&&i.hasValue){var d=i.value;if(n(d,g))return f=d}return f=g}if(d=f,Rb(l,g))return d;var b=o(g);return n!==void 0&&n(d,b)?(l=g,d):(l=g,f=b)}var u=!1,l,f,h=r===void 0?null:r;return[function(){return c(t())},h===null?void 0:function(){return c(h())}]},[t,r,o,n]);var a=Eb(e,s[0],s[1]);return _b(function(){i.hasValue=!0,i.value=a},[a]),Pb(a),a}});var Zf=nt((i_,qf)=>{"use strict";qf.exports=Yf()});var yn=nt((yk,dp)=>{dp.exports=window.wp.primitives});var Lo=nt((Ik,pp)=>{pp.exports=window.wp.compose});var hp=nt((Lk,mp)=>{mp.exports=window.wp.theme});var wi=nt((Dk,yp)=>{yp.exports=window.wp.privateApis});var ue=nt((_3,qp)=>{qp.exports=window.wp.components});var rm=nt((B3,tm)=>{tm.exports=window.wp.editor});var sr=nt((z3,om)=>{om.exports=window.wp.coreData});var Kt=nt((j3,nm)=>{nm.exports=window.wp.data});var xn=nt((H3,sm)=>{sm.exports=window.wp.blocks});var Dt=nt((U3,im)=>{im.exports=window.wp.blockEditor});var lm=nt((X3,am)=>{am.exports=window.wp.styleEngine});var pm=nt((a4,dm)=>{"use strict";dm.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var o,n,s;if(Array.isArray(t)){if(o=t.length,o!=r.length)return!1;for(n=o;n--!==0;)if(!e(t[n],r[n]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(n of t.entries())if(!r.has(n[0]))return!1;for(n of t.entries())if(!e(n[1],r.get(n[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(n of t.entries())if(!r.has(n[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(o=t.length,o!=r.length)return!1;for(n=o;n--!==0;)if(t[n]!==r[n])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(s=Object.keys(t),o=s.length,o!==Object.keys(r).length)return!1;for(n=o;n--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[n]))return!1;for(n=o;n--!==0;){var i=s[n];if(!e(t[i],r[i]))return!1}return!0}return t!==t&&r!==r}});var ym=nt((c4,gm)=>{"use strict";var W0=function(t){return G0(t)&&!Y0(t)};function G0(e){return!!e&&typeof e=="object"}function Y0(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||X0(e)}var q0=typeof Symbol=="function"&&Symbol.for,Z0=q0?Symbol.for("react.element"):60103;function X0(e){return e.$$typeof===Z0}function K0(e){return Array.isArray(e)?[]:{}}function ls(e,t){return t.clone!==!1&&t.isMergeableObject(e)?Sn(K0(e),e,t):e}function J0(e,t,r){return e.concat(t).map(function(o){return ls(o,r)})}function Q0(e,t){if(!t.customMerge)return Sn;var r=t.customMerge(e);return typeof r=="function"?r:Sn}function $0(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function mm(e){return Object.keys(e).concat($0(e))}function hm(e,t){try{return t in e}catch{return!1}}function e1(e,t){return hm(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function t1(e,t,r){var o={};return r.isMergeableObject(e)&&mm(e).forEach(function(n){o[n]=ls(e[n],r)}),mm(t).forEach(function(n){e1(e,n)||(hm(e,n)&&r.isMergeableObject(t[n])?o[n]=Q0(n,r)(e[n],t[n],r):o[n]=ls(t[n],r))}),o}function Sn(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||J0,r.isMergeableObject=r.isMergeableObject||W0,r.cloneUnlessOtherwiseSpecified=ls;var o=Array.isArray(t),n=Array.isArray(e),s=o===n;return s?o?r.arrayMerge(e,t,r):t1(e,t,r):ls(t,r)}Sn.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(o,n){return Sn(o,n,r)},{})};var r1=Sn;gm.exports=r1});var dc=nt((_A,mh)=>{mh.exports=window.wp.keycodes});var vh=nt((BA,yh)=>{yh.exports=window.wp.apiFetch});var Yg=nt((lB,Gg)=>{Gg.exports=window.wp.date});function ou(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t<n;t++)e[t]&&(r=ou(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function by(){for(var e,t,r=0,o="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=ou(e))&&(o&&(o+=" "),o+=t);return o}var dt=by;var xy=m(be(),1),zn={...xy};var au=m(be(),1),iu={};function Et(e,t){let r=au.useRef(iu);return r.current===iu&&(r.current=e(t)),r}var ya=zn.useInsertionEffect,wy=ya&&ya!==zn.useLayoutEffect?ya:e=>e();function Te(e){let t=Et(Sy).current;return t.next=e,wy(t.effect),t.trampoline}function Sy(){let e={next:void 0,callback:Cy,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function Cy(){}var lu=m(be(),1),Ry=()=>{},Ce=typeof document<"u"?lu.useLayoutEffect:Ry;var Es=m(be(),1),Ey=Es.createContext(void 0);function Ko(){return Es.useContext(Ey)?.direction??"ltr"}function Ty(e,t){return function(o,...n){let s=new URL(e);return s.searchParams.set("code",o.toString()),n.forEach(i=>s.searchParams.append("args[]",i)),`${t} error #${o}; visit ${s} for the full message.`}}var _y=Ty("https://base-ui.com/production-error","Base UI"),Ht=_y;var So=m(be(),1);function va(e,t,r,o){let n=Et(fu).current;return Oy(n,e,t,r,o)&&du(n,[e,t,r,o]),n.callback}function uu(e){let t=Et(fu).current;return Py(t,e)&&du(t,e),t.callback}function fu(){return{callback:null,cleanup:null,refs:[]}}function Oy(e,t,r,o,n){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==n}function Py(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function du(e,t){if(e.refs=t,t.every(r=>r==null)){e.callback=null;return}e.callback=r=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),r!=null){let o=Array(t.length).fill(null);for(let n=0;n<t.length;n+=1){let s=t[n];if(s!=null)switch(typeof s){case"function":{let i=s(r);typeof i=="function"&&(o[n]=i);break}case"object":{s.current=r;break}default:}}e.cleanup=()=>{for(let n=0;n<t.length;n+=1){let s=t[n];if(s!=null)switch(typeof s){case"function":{let i=o[n];typeof i=="function"?i():s(null);break}case"object":{s.current=null;break}default:}}}}}}var mu=m(be(),1);var pu=m(be(),1),Fy=parseInt(pu.version,10);function Jo(e){return Fy>=e}function ba(e){if(!mu.isValidElement(e))return null;let t=e,r=t.props;return(Jo(19)?r?.ref:t.ref)??null}function jn(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function Gr(){}var k2=Object.freeze([]),pt=Object.freeze({});function hu(e,t){let r={};for(let o in e){let n=e[o];if(t?.hasOwnProperty(o)){let s=t[o](n);s!=null&&Object.assign(r,s);continue}n===!0?r[`data-${o.toLowerCase()}`]="":n&&(r[`data-${o.toLowerCase()}`]=n.toString())}return r}function gu(e,t){return typeof e=="function"?e(t):e}function yu(e,t){return typeof e=="function"?e(t):e}var xa={};function vr(e,t,r,o,n){if(!r&&!o&&!n&&!e)return Ts(t);let s=Ts(e);return t&&(s=Hn(s,t)),r&&(s=Hn(s,r)),o&&(s=Hn(s,o)),n&&(s=Hn(s,n)),s}function vu(e){if(e.length===0)return xa;if(e.length===1)return Ts(e[0]);let t=Ts(e[0]);for(let r=1;r<e.length;r+=1)t=Hn(t,e[r]);return t}function Ts(e){return wa(e)?{...xu(e,xa)}:ky(e)}function Hn(e,t){return wa(t)?xu(t,e):Ay(e,t)}function ky(e){let t={...e};for(let r in t){let o=t[r];bu(r,o)&&(t[r]=wu(o))}return t}function Ay(e,t){if(!t)return e;for(let r in t){let o=t[r];switch(r){case"style":{e[r]=jn(e.style,o);break}case"className":{e[r]=Sa(e.className,o);break}default:bu(r,o)?e[r]=Iy(e[r],o):e[r]=o}}return e}function bu(e,t){let r=e.charCodeAt(0),o=e.charCodeAt(1),n=e.charCodeAt(2);return r===111&&o===110&&n>=65&&n<=90&&(typeof t=="function"||typeof t>"u")}function wa(e){return typeof e=="function"}function xu(e,t){return wa(e)?e(t):e??xa}function Iy(e,t){return t?e?(...r)=>{let o=r[0];if(Cu(o)){let s=o;Su(s);let i=t(...r);return s.baseUIHandlerPrevented||e?.(...r),i}let n=t(...r);return e?.(...r),n}:wu(t):e}function wu(e){return e&&((...t)=>{let r=t[0];return Cu(r)&&Su(r),e(...t)})}function Su(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function Sa(e,t){return t?e?t+" "+e:t:e}function Cu(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var Ca=m(be(),1);function Ut(e,t,r={}){let o=t.render,n=Ly(t,r);if(r.enabled===!1)return null;let s=r.state??pt;return My(e,o,n,s)}function Ly(e,t={}){let{className:r,style:o,render:n}=e,{state:s=pt,ref:i,props:a,stateAttributesMapping:c,enabled:u=!0}=t,l=u?gu(r,s):void 0,f=u?yu(o,s):void 0,h=u?hu(s,c):pt,g=u&&a?Ny(a):void 0,d=u?jn(h,g)??{}:pt;return typeof document<"u"&&(u?Array.isArray(i)?d.ref=uu([d.ref,ba(n),...i]):d.ref=va(d.ref,ba(n),i):va(null,null)),u?(l!==void 0&&(d.className=Sa(d.className,l)),f!==void 0&&(d.style=jn(d.style,f)),d):pt}function Ny(e){return Array.isArray(e)?vu(e):vr(void 0,e)}var Dy=Symbol.for("react.lazy");function My(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let n=vr(r,t.props);n.ref=r.ref;let s=t;return s?.$$typeof===Dy&&(s=So.Children.toArray(t)[0]),So.cloneElement(s,n)}if(e&&typeof e=="string")return Vy(e,r);throw new Error(Ht(8))}function Vy(e,t){return e==="button"?(0,Ca.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Ca.createElement)("img",{alt:"",...t,key:t.key}):So.createElement(e,t)}var Fe={};ga(Fe,{cancelOpen:()=>dv,chipRemovePress:()=>Zy,clearPress:()=>qy,closePress:()=>Gy,closeWatcher:()=>sv,decrementPress:()=>Jy,disabled:()=>mv,drag:()=>cv,escapeKey:()=>nv,focusOut:()=>ov,imperativeAction:()=>yv,incrementPress:()=>Ky,initial:()=>gv,inputBlur:()=>ev,inputChange:()=>Qy,inputClear:()=>$y,inputPaste:()=>tv,inputPress:()=>rv,itemPress:()=>Wy,keyboard:()=>av,linkPress:()=>Yy,listNavigation:()=>iv,missing:()=>hv,none:()=>By,outsidePress:()=>Uy,pointer:()=>lv,scrub:()=>fv,siblingOpen:()=>pv,swipe:()=>vv,trackPress:()=>Xy,triggerFocus:()=>Hy,triggerHover:()=>jy,triggerPress:()=>zy,wheel:()=>uv,windowResize:()=>bv});var By="none",zy="trigger-press",jy="trigger-hover",Hy="trigger-focus",Uy="outside-press",Wy="item-press",Gy="close-press",Yy="link-press",qy="clear-press",Zy="chip-remove-press",Xy="track-press",Ky="increment-press",Jy="decrement-press",Qy="input-change",$y="input-clear",ev="input-blur",tv="input-paste",rv="input-press",ov="focus-out",nv="escape-key",sv="close-watcher",iv="list-navigation",av="keyboard",lv="pointer",cv="drag",uv="wheel",fv="scrub",dv="cancel-open",pv="sibling-open",mv="disabled",hv="missing",gv="initial",yv="imperative-action",vv="swipe",bv="window-resize";function Ue(e,t,r,o){let n=!1,s=!1,i=o??pt;return{reason:e,event:t??new Event("base-ui"),cancel(){n=!0},allowPropagation(){s=!0},get isCanceled(){return n},get isPropagationAllowed(){return s},trigger:r,...i}}var _s=m(be(),1);var Ru=0;function xv(e,t="mui"){let[r,o]=_s.useState(e),n=e||r;return _s.useEffect(()=>{r==null&&(Ru+=1,o(`${t}-${Ru}`))},[r,t]),n}var Eu=zn.useId;function ro(e,t){if(Eu!==void 0){let r=Eu();return e??(t?`${t}-${r}`:r)}return xv(e,t)}function Tu(e){return ro(e,"base-ui")}var Ea=m(be(),1);var _u=m(be(),1),wv=[];function Qo(e){_u.useEffect(e,wv)}var Os=null,nE=globalThis.requestAnimationFrame,Ra=class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=t=>{this.isScheduled=!1;let r=this.callbacks,o=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,o>0)for(let n=0;n<r.length;n+=1)r[n]?.(t)};request(t){let r=this.nextId;return this.nextId+=1,this.callbacks.push(t),this.callbacksCount+=1,!this.isScheduled&&(requestAnimationFrame(this.tick),this.isScheduled=!0),r}cancel(t){let r=t-this.startId;r<0||r>=this.callbacks.length||(this.callbacks[r]=null,this.callbacksCount-=1)}},Ps=new Ra,Or=class e{static create(){return new e}static request(t){return Ps.request(t)}static cancel(t){return Ps.cancel(t)}currentId=Os;request(t){this.cancel(),this.currentId=Ps.request(()=>{this.currentId=Os,t()})}cancel=()=>{this.currentId!==Os&&(Ps.cancel(this.currentId),this.currentId=Os)};disposeEffect=()=>this.cancel};function $o(){let e=Et(Or.create).current;return Qo(e.disposeEffect),e}function Ou(e,t=!1,r=!1){let[o,n]=Ea.useState(e&&t?"idle":void 0),[s,i]=Ea.useState(e);return e&&!s&&(i(!0),n("starting")),!e&&s&&o!=="ending"&&!r&&n("ending"),!e&&!s&&o==="ending"&&n(void 0),Ce(()=>{if(!e&&s&&o!=="ending"&&r){let a=Or.request(()=>{n("ending")});return()=>{Or.cancel(a)}}},[e,s,o,r]),Ce(()=>{if(!e||t)return;let a=Or.request(()=>{n(void 0)});return()=>{Or.cancel(a)}},[t,e]),Ce(()=>{if(!e||!t)return;e&&s&&o!=="idle"&&n("starting");let a=Or.request(()=>{n("idle")});return()=>{Or.cancel(a)}},[t,e,s,o]),{mounted:s,setMounted:i,transitionStatus:o}}var Co=(function(e){return e.startingStyle="data-starting-style",e.endingStyle="data-ending-style",e})({}),Sv={[Co.startingStyle]:""},Cv={[Co.endingStyle]:""},Pu={transitionStatus(e){return e==="starting"?Sv:e==="ending"?Cv:null}};function Fs(){return typeof window<"u"}function Eo(e){return ks(e)?(e.nodeName||"").toLowerCase():"#document"}function lt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function xr(e){var t;return(t=(ks(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function ks(e){return Fs()?e instanceof Node||e instanceof lt(e).Node:!1}function xe(e){return Fs()?e instanceof Element||e instanceof lt(e).Element:!1}function wt(e){return Fs()?e instanceof HTMLElement||e instanceof lt(e).HTMLElement:!1}function en(e){return!Fs()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof lt(e).ShadowRoot}function tn(e){let{overflow:t,overflowX:r,overflowY:o,display:n}=Ot(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+r)&&n!=="inline"&&n!=="contents"}function Fu(e){return/^(table|td|th)$/.test(Eo(e))}function Un(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}var Rv=/transform|translate|scale|rotate|perspective|filter/,Ev=/paint|layout|strict|content/,Ro=e=>!!e&&e!=="none",Ta;function As(e){let t=xe(e)?Ot(e):e;return Ro(t.transform)||Ro(t.translate)||Ro(t.scale)||Ro(t.rotate)||Ro(t.perspective)||!rn()&&(Ro(t.backdropFilter)||Ro(t.filter))||Rv.test(t.willChange||"")||Ev.test(t.contain||"")}function ku(e){let t=br(e);for(;wt(t)&&!wr(t);){if(As(t))return t;if(Un(t))return null;t=br(t)}return null}function rn(){return Ta==null&&(Ta=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),Ta}function wr(e){return/^(html|body|#document)$/.test(Eo(e))}function Ot(e){return lt(e).getComputedStyle(e)}function Wn(e){return xe(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function br(e){if(Eo(e)==="html")return e;let t=e.assignedSlot||e.parentNode||en(e)&&e.host||xr(e);return en(t)?t.host:t}function Au(e){let t=br(e);return wr(t)?e.ownerDocument?e.ownerDocument.body:e.body:wt(t)&&tn(t)?t:Au(t)}function oo(e,t,r){var o;t===void 0&&(t=[]),r===void 0&&(r=!0);let n=Au(e),s=n===((o=e.ownerDocument)==null?void 0:o.body),i=lt(n);if(s){let a=Is(i);return t.concat(i,i.visualViewport||[],tn(n)?n:[],a&&r?oo(a):[])}else return t.concat(n,oo(n,[],r))}function Is(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var no=typeof navigator<"u",_a=Tv(),Iu=Ov(),Ls=_v(),fE=typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter:none"),dE=_a.platform==="MacIntel"&&_a.maxTouchPoints>1?!0:/iP(hone|ad|od)|iOS/.test(_a.platform),pE=no&&/firefox/i.test(Ls),Lu=no&&/apple/i.test(navigator.vendor),mE=no&&/Edg/i.test(Ls),hE=no&&/android/i.test(Iu)||/android/i.test(Ls),Nu=no&&Iu.toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints,Du=Ls.includes("jsdom/");function Tv(){if(!no)return{platform:"",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??-1}}function _v(){if(!no)return"";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:t,version:r})=>`${t}/${r}`).join(" "):navigator.userAgent}function Ov(){if(!no)return"";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??""}var Oa="data-base-ui-focusable";var Pa="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function Ns(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function Xe(e,t){if(!e||!t)return!1;let r=t.getRootNode?.();if(e.contains(t))return!0;if(r&&en(r)){let o=t;for(;o;){if(e===o)return!0;o=o.parentNode||o.host}}return!1}function Lt(e){return"composedPath"in e?e.composedPath()[0]:e.target}function so(e,t){if(!xe(e))return!1;let r=e;if(t.hasElement(r))return!r.hasAttribute("data-trigger-disabled");for(let[,o]of t.entries())if(Xe(o,r))return!o.hasAttribute("data-trigger-disabled");return!1}function Ds(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);let r=e;return r.target!=null&&t.contains(r.target)}function Mu(e){return e.matches("html,body")}function Vu(e){return wt(e)&&e.matches(Pa)}function Fa(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${Pa}`)!=null}function Bu(e){if(!e||Du)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function Yr(e,t,r=!0){return e.filter(n=>n.parentId===t).flatMap(n=>[...!r||n.context?.open?[n]:[],...Yr(e,n.id,r)])}function zu(e){return"nativeEvent"in e}function qr(e,t){let r=["mouse","pen"];return t||r.push("",void 0),r.includes(e)}function ju(e){let t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}var Wu=["top","right","bottom","left"];var io=Math.min,Nt=Math.max,ao=Math.round,Yn=Math.floor,Sr=e=>({x:e,y:e}),Pv={left:"right",right:"left",bottom:"top",top:"bottom"};function qn(e,t,r){return Nt(e,io(t,r))}function Cr(e,t){return typeof e=="function"?e(t):e}function Tt(e){return e.split("-")[0]}function Rr(e){return e.split("-")[1]}function Vs(e){return e==="x"?"y":"x"}function Zn(e){return e==="y"?"height":"width"}function Wt(e){let t=e[0];return t==="t"||t==="b"?"y":"x"}function Xn(e){return Vs(Wt(e))}function Gu(e,t,r){r===void 0&&(r=!1);let o=Rr(e),n=Xn(e),s=Zn(n),i=n==="x"?o===(r?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(i=Gn(i)),[i,Gn(i)]}function Yu(e){let t=Gn(e);return[Ms(e),t,Ms(t)]}function Ms(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var Hu=["left","right"],Uu=["right","left"],Fv=["top","bottom"],kv=["bottom","top"];function Av(e,t,r){switch(e){case"top":case"bottom":return r?t?Uu:Hu:t?Hu:Uu;case"left":case"right":return t?Fv:kv;default:return[]}}function qu(e,t,r,o){let n=Rr(e),s=Av(Tt(e),r==="start",o);return n&&(s=s.map(i=>i+"-"+n),t&&(s=s.concat(s.map(Ms)))),s}function Gn(e){let t=Tt(e);return Pv[t]+e.slice(t.length)}function Iv(e){return{top:0,right:0,bottom:0,left:0,...e}}function Bs(e){return typeof e!="number"?Iv(e):{top:e,right:e,bottom:e,left:e}}function To(e){let{x:t,y:r,width:o,height:n}=e;return{width:o,height:n,top:r,left:t,right:t+o,bottom:r+n,x:t,y:r}}function St(e){return e?.ownerDocument||document}function Ye(e,t,r,o){return e.addEventListener(t,r,o),()=>{e.removeEventListener(t,r,o)}}function Gt(e){let t=Et(Lv,e).current;return t.next=e,Ce(t.effect),t}function Lv(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}var Ju=m(be(),1);var Ku=m(lo(),1);function Xu(e){return e==null?e:"current"in e?e.current:e}function on(e,t=!1,r=!0){let o=$o();return Te((n,s=null)=>{o.cancel();let i=Xu(e);if(i==null)return;let a=i,c=()=>{Ku.flushSync(n)};if(typeof a.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){n();return}function u(){Promise.all(a.getAnimations().map(l=>l.finished)).then(()=>{s?.aborted||c()}).catch(()=>{if(r){s?.aborted||c();return}let l=a.getAnimations();!s?.aborted&&l.length>0&&l.some(f=>f.pending||f.playState!=="finished")&&u()})}if(t){let l=Co.startingStyle;if(!a.hasAttribute(l)){o.request(u);return}let f=new MutationObserver(()=>{a.hasAttribute(l)||(f.disconnect(),u())});f.observe(a,{attributes:!0,attributeFilter:[l]}),s?.addEventListener("abort",()=>f.disconnect(),{once:!0});return}o.request(u)})}function zs(e){let{enabled:t=!0,open:r,ref:o,onComplete:n}=e,s=Te(n),i=on(o,r,!1);Ju.useEffect(()=>{if(!t)return;let a=new AbortController;return i(s,a.signal),()=>{a.abort()}},[t,r,s,i])}var Qu=m(be(),1);function $u(e){let t=Qu.useRef(!0);t.current&&(t.current=!1,e())}var Kn=0,rr=class e{static create(){return new e}currentId=Kn;start(t,r){this.clear(),this.currentId=setTimeout(()=>{this.currentId=Kn,r()},t)}isStarted(){return this.currentId!==Kn}clear=()=>{this.currentId!==Kn&&(clearTimeout(this.currentId),this.currentId=Kn)};disposeEffect=()=>this.clear};function Er(){let e=Et(rr.create).current;return Qo(e.disposeEffect),e}var Yt=m(be(),1);function Nv(e,t){return t!=null&&!qr(t)?0:typeof e=="function"?e():e}function _o(e,t,r){let o=Nv(e,r);return typeof o=="number"?o:o?.[t]}function ka(e){return typeof e=="function"?e():e}function js(e,t){return t||e==="click"||e==="mousedown"}function ef(e){return e?.includes("mouse")&&e!=="mousedown"}var tf=m(Z(),1),rf=Yt.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new rr,currentIdRef:{current:null},currentContextRef:{current:null}});function Aa(e){let{children:t,delay:r,timeoutMs:o=0}=e,n=Yt.useRef(r),s=Yt.useRef(r),i=Yt.useRef(null),a=Yt.useRef(null),c=Er();return(0,tf.jsx)(rf.Provider,{value:Yt.useMemo(()=>({hasProvider:!0,delayRef:n,initialDelayRef:s,currentIdRef:i,timeoutMs:o,currentContextRef:a,timeout:c}),[o,c]),children:t})}function Ia(e,t={open:!1}){let{open:r}=t,o="rootStore"in e?e.rootStore:e,n=o.useState("floatingId"),s=Yt.useContext(rf),{currentIdRef:i,delayRef:a,timeoutMs:c,initialDelayRef:u,currentContextRef:l,hasProvider:f,timeout:h}=s,[g,d]=Yt.useState(!1);return Ce(()=>{function b(){d(!1),l.current?.setIsInstantPhase(!1),i.current=null,l.current=null,a.current=u.current}if(i.current&&!r&&i.current===n){if(d(!1),c){let S=n;return h.start(c,()=>{o.select("open")||i.current&&i.current!==S||b()}),()=>{h.clear()}}b()}},[r,n,i,a,c,u,l,h,o]),Ce(()=>{if(!r)return;let b=l.current,S=i.current;h.clear(),l.current={onOpenChange:o.setOpen,setIsInstantPhase:d},i.current=n,a.current={open:0,close:_o(u.current,"close")},S!==null&&S!==n?(d(!0),b?.setIsInstantPhase(!0),b?.onOpenChange(!1,Ue(Fe.none))):(d(!1),b?.setIsInstantPhase(!1))},[r,n,o,i,a,u,l,h]),Ce(()=>()=>{l.current=null},[l]),Yt.useMemo(()=>({hasProvider:f,delayRef:a,isInstantPhase:g}),[f,a,g])}function Tr(...e){return()=>{for(let t=0;t<e.length;t+=1){let r=e[t];r&&r()}}}function nn(e){return`data-base-ui-${e}`}var or=m(be(),1),sf=m(lo(),1);var of={style:{transition:"none"}};var Dv="data-base-ui-swipe-ignore",Mv="data-swipe-ignore",sT=`[${Dv}]`,iT=`[${Mv}]`;var nf={fallbackAxisSide:"end"};var af=m(Z(),1),Vv=or.createContext(null),Bv=()=>or.useContext(Vv),zv=nn("portal");function La(e={}){let{ref:t,container:r,componentProps:o=pt,elementProps:n}=e,s=ro(),a=Bv()?.portalNode,[c,u]=or.useState(null),[l,f]=or.useState(null),h=Te(S=>{S!==null&&f(S)}),g=or.useRef(null);Ce(()=>{if(r===null){g.current&&(g.current=null,f(null),u(null));return}if(s==null)return;let S=(r&&(ks(r)?r:r.current))??a??document.body;if(S==null){g.current&&(g.current=null,f(null),u(null));return}g.current!==S&&(g.current=S,f(null),u(S))},[r,a,s]);let d=Ut("div",o,{ref:[t,h],props:[{id:s,[zv]:""},n]});return{portalNode:l,portalSubtree:c&&d?sf.createPortal(d,c):null}}var Oo=m(be(),1);function lf(){let e=new Map;return{emit(t,r){e.get(t)?.forEach(o=>o(r))},on(t,r){e.has(t)||e.set(t,new Set),e.get(t).add(r)},off(t,r){e.get(t)?.delete(r)}}}var jv=m(Z(),1),Hv=Oo.createContext(null),Uv=Oo.createContext(null),sn=()=>Oo.useContext(Hv)?.id||null,co=e=>{let t=Oo.useContext(Uv);return e??t};var qt=m(be(),1);function Wv(e,t){let r=null,o=null,n=!1;return{contextElement:e||void 0,getBoundingClientRect(){let s=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},i=t.axis==="x"||t.axis==="both",a=t.axis==="y"||t.axis==="both",c=["mouseenter","mousemove"].includes(t.dataRef.current.openEvent?.type||"")&&t.pointerType!=="touch",u=s.width,l=s.height,f=s.x,h=s.y;return r==null&&t.x&&i&&(r=s.x-t.x),o==null&&t.y&&a&&(o=s.y-t.y),f-=r||0,h-=o||0,u=0,l=0,!n||c?(u=t.axis==="y"?s.width:0,l=t.axis==="x"?s.height:0,f=i&&t.x!=null?t.x:f,h=a&&t.y!=null?t.y:h):n&&!c&&(l=t.axis==="x"?s.height:l,u=t.axis==="y"?s.width:u),n=!0,{width:u,height:l,x:f,y:h,top:h,right:f+u,bottom:h+l,left:f}}}}function cf(e){return e!=null&&e.clientX!=null}function Na(e,t={}){let{enabled:r=!0,axis:o="both"}=t,n="rootStore"in e?e.rootStore:e,s=n.useState("open"),i=n.useState("floatingElement"),a=n.useState("domReferenceElement"),c=n.context.dataRef,u=qt.useRef(!1),l=qt.useRef(null),[f,h]=qt.useState(),[g,d]=qt.useState([]),b=Te(C=>{n.set("positionReference",C)}),S=Te((C,k,T)=>{u.current||c.current.openEvent&&!cf(c.current.openEvent)||n.set("positionReference",Wv(T??a,{x:C,y:k,axis:o,dataRef:c,pointerType:f}))}),R=Te(C=>{s?l.current||(S(C.clientX,C.clientY,C.currentTarget),d([])):S(C.clientX,C.clientY,C.currentTarget)}),x=qr(f)?i:s;qt.useEffect(()=>{if(!r){b(a);return}if(!x)return;function C(){l.current?.(),l.current=null}let k=lt(i);function T(_){let A=Lt(_);Xe(i,A)?C():S(_.clientX,_.clientY)}return!c.current.openEvent||cf(c.current.openEvent)?l.current=Ye(k,"mousemove",T):b(a),C},[x,r,i,c,a,n,S,b,g]),qt.useEffect(()=>()=>{n.set("positionReference",null)},[n]),qt.useEffect(()=>{r&&!i&&(u.current=!1)},[r,i]),qt.useEffect(()=>{!r&&s&&(u.current=!0)},[r,s]);let v=qt.useMemo(()=>{function C(k){h(k.pointerType)}return{onPointerDown:C,onPointerEnter:C,onMouseMove:R,onMouseEnter:R}},[R]);return qt.useMemo(()=>r?{reference:v,trigger:v}:{},[r,v])}var Zt=m(be(),1);var Gv={intentional:"onClick",sloppy:"onPointerDown"};function Yv(){return!1}function qv(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Da(e,t={}){let{enabled:r=!0,escapeKey:o=!0,outsidePress:n=!0,outsidePressEvent:s="sloppy",referencePress:i=Yv,referencePressEvent:a="sloppy",bubbles:c,externalTree:u}=t,l="rootStore"in e?e.rootStore:e,f=l.useState("open"),h=l.useState("floatingElement"),{dataRef:g}=l.context,d=co(u),b=Te(typeof n=="function"?n:()=>!1),S=typeof n=="function"?b:n,R=S!==!1,x=Te(()=>s),{escapeKey:v,outsidePress:C}=qv(c),k=Zt.useRef(!1),T=Zt.useRef(!1),_=Zt.useRef(!1),A=Zt.useRef(!1),D=Zt.useRef(""),W=Zt.useRef(null),M=Er(),w=Er(),O=Te(()=>{w.clear(),g.current.insideReactTree=!1}),G=Te(U=>{let oe=g.current.floatingContext?.nodeId;return(d?Yr(d.nodesRef.current,oe):[]).some(ie=>ie.context?.open&&!ie.context.dataRef.current[U])}),P=Te(U=>Ds(U,l.select("floatingElement"))||Ds(U,l.select("domReferenceElement"))),N=Te(U=>{i()&&l.setOpen(!1,Ue(Fe.triggerPress,U.nativeEvent))}),K=Te(U=>{if(!f||!r||!o||U.key!=="Escape"||A.current||!v&&G("__escapeKeyBubbles"))return;let oe=zu(U)?U.nativeEvent:U,ge=Ue(Fe.escapeKey,oe);l.setOpen(!1,ge),ge.isCanceled||U.preventDefault(),!v&&!ge.isPropagationAllowed&&U.stopPropagation()}),L=Te(()=>{g.current.insideReactTree=!0,w.start(0,O)}),E=Te(U=>{if(!f||!r||U.button!==0)return;let oe=Lt(U.nativeEvent);Xe(l.select("floatingElement"),oe)&&(k.current||(k.current=!0,T.current=!1))}),I=Te(U=>{!f||!r||(U.defaultPrevented||U.nativeEvent.defaultPrevented)&&k.current&&(T.current=!0)});Zt.useEffect(()=>{if(!f||!r)return;g.current.__escapeKeyBubbles=v,g.current.__outsidePressBubbles=C;let U=new rr,oe=new rr;function ge(){U.clear(),A.current=!0}function ie(){U.start(rn()?5:0,()=>{A.current=!1})}function ve(){_.current=!0,oe.start(0,()=>{_.current=!1})}function ke(){k.current=!1,T.current=!1}function J(){let ee=D.current,se=ee==="pen"||!ee?"mouse":ee,We=x(),ze=typeof We=="function"?We():We;return typeof ze=="string"?ze:ze[se]}function Ae(ee){let se=J();return se==="intentional"&&ee.type!=="click"||se==="sloppy"&&ee.type==="click"}function Ne(ee){let se=g.current.floatingContext?.nodeId,We=d&&Yr(d.nodesRef.current,se).some(ze=>Ds(ee,ze.context?.elements.floating));return P(ee)||We}function Ee(ee){if(Ae(ee)){ee.type!=="click"&&!P(ee)&&(oe.clear(),_.current=!1),O();return}if(g.current.insideReactTree){O();return}let se=Lt(ee),We=`[${nn("inert")}]`,ze=xe(se)?se.getRootNode():null,et=Array.from((en(ze)?ze:St(l.select("floatingElement"))).querySelectorAll(We)),qe=l.context.triggerElements;if(se&&(qe.hasElement(se)||qe.hasMatchingElement(He=>Xe(He,se))))return;let tt=xe(se)?se:null;for(;tt&&!wr(tt);){let He=br(tt);if(wr(He)||!xe(He))break;tt=He}if(!(et.length&&xe(se)&&!Mu(se)&&!Xe(se,l.select("floatingElement"))&&et.every(He=>!Xe(tt,He)))){if(wt(se)&&!("touches"in ee)){let He=wr(se),ye=Ot(se),hr=/auto|scroll/,gr=He||hr.test(ye.overflowX),rt=He||hr.test(ye.overflowY),jr=gr&&se.clientWidth>0&&se.scrollWidth>se.clientWidth,Rt=rt&&se.clientHeight>0&&se.scrollHeight>se.clientHeight,Le=ye.direction==="rtl",Ze=Rt&&(Le?ee.offsetX<=se.offsetWidth-se.clientWidth:ee.offsetX>se.clientWidth),F=jr&&ee.offsetY>se.clientHeight;if(Ze||F)return}if(!Ne(ee)){if(J()==="intentional"&&_.current){oe.clear(),_.current=!1;return}typeof S=="function"&&!S(ee)||G("__outsidePressBubbles")||(l.setOpen(!1,Ue(Fe.outsidePress,ee)),O())}}}function je(ee){J()!=="sloppy"||ee.pointerType==="touch"||!l.select("open")||!r||P(ee)||Ee(ee)}function Y(ee){if(J()!=="sloppy"||!l.select("open")||!r||P(ee))return;let se=ee.touches[0];se&&(W.current={startTime:Date.now(),startX:se.clientX,startY:se.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},M.start(1e3,()=>{W.current&&(W.current.dismissOnTouchEnd=!1,W.current.dismissOnMouseDown=!1)}))}function z(ee,se){let We=Lt(ee);if(!We)return;let ze=Ye(We,ee.type,()=>{se(ee),ze()})}function X(ee){D.current="touch",z(ee,Y)}function H(ee){M.clear(),ee.type==="pointerdown"&&(D.current=ee.pointerType),!(ee.type==="mousedown"&&W.current&&!W.current.dismissOnMouseDown)&&z(ee,se=>{se.type==="pointerdown"?je(se):Ee(se)})}function q(ee){if(!k.current)return;let se=T.current;if(ke(),J()==="intentional"){if(ee.type==="pointercancel"){se&&ve();return}if(!Ne(ee)){if(se){ve();return}typeof S=="function"&&!S(ee)||(oe.clear(),_.current=!0,O())}}}function pe(ee){if(J()!=="sloppy"||!W.current||P(ee))return;let se=ee.touches[0];if(!se)return;let We=Math.abs(se.clientX-W.current.startX),ze=Math.abs(se.clientY-W.current.startY),et=Math.sqrt(We*We+ze*ze);et>5&&(W.current.dismissOnTouchEnd=!0),et>10&&(Ee(ee),M.clear(),W.current=null)}function de(ee){z(ee,pe)}function me(ee){J()!=="sloppy"||!W.current||P(ee)||(W.current.dismissOnTouchEnd&&Ee(ee),M.clear(),W.current=null)}function Oe(ee){z(ee,me)}let le=St(h),ae=Tr(o&&Tr(Ye(le,"keydown",K),Ye(le,"compositionstart",ge),Ye(le,"compositionend",ie)),R&&Tr(Ye(le,"click",H,!0),Ye(le,"pointerdown",H,!0),Ye(le,"pointerup",q,!0),Ye(le,"pointercancel",q,!0),Ye(le,"mousedown",H,!0),Ye(le,"mouseup",q,!0),Ye(le,"touchstart",X,!0),Ye(le,"touchmove",de,!0),Ye(le,"touchend",Oe,!0)));return()=>{ae(),U.clear(),oe.clear(),ke(),_.current=!1}},[g,h,o,R,S,f,r,v,C,K,O,x,G,P,d,l,M]),Zt.useEffect(O,[S,O]);let $=Zt.useMemo(()=>({onKeyDown:K,[Gv[a]]:N,...a!=="intentional"&&{onClick:N}}),[K,N,a]),B=Zt.useMemo(()=>({onKeyDown:K,onPointerDown:I,onMouseDown:I,onClickCapture:L,onMouseDownCapture(U){L(),E(U)},onPointerDownCapture(U){L(),E(U)},onMouseUpCapture:L,onTouchEndCapture:L,onTouchMoveCapture:L}),[K,L,E,I]);return Zt.useMemo(()=>r?{reference:$,floating:B,trigger:$}:{},[r,$,B])}var Pt=m(be(),1);function uf(e,t,r){let{reference:o,floating:n}=e,s=Wt(t),i=Xn(t),a=Zn(i),c=Tt(t),u=s==="y",l=o.x+o.width/2-n.width/2,f=o.y+o.height/2-n.height/2,h=o[a]/2-n[a]/2,g;switch(c){case"top":g={x:l,y:o.y-n.height};break;case"bottom":g={x:l,y:o.y+o.height};break;case"right":g={x:o.x+o.width,y:f};break;case"left":g={x:o.x-n.width,y:f};break;default:g={x:o.x,y:o.y}}switch(Rr(t)){case"start":g[i]-=h*(r&&u?-1:1);break;case"end":g[i]+=h*(r&&u?-1:1);break}return g}async function pf(e,t){var r;t===void 0&&(t={});let{x:o,y:n,platform:s,rects:i,elements:a,strategy:c}=e,{boundary:u="clippingAncestors",rootBoundary:l="viewport",elementContext:f="floating",altBoundary:h=!1,padding:g=0}=Cr(t,e),d=Bs(g),S=a[h?f==="floating"?"reference":"floating":f],R=To(await s.getClippingRect({element:(r=await(s.isElement==null?void 0:s.isElement(S)))==null||r?S:S.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(a.floating)),boundary:u,rootBoundary:l,strategy:c})),x=f==="floating"?{x:o,y:n,width:i.floating.width,height:i.floating.height}:i.reference,v=await(s.getOffsetParent==null?void 0:s.getOffsetParent(a.floating)),C=await(s.isElement==null?void 0:s.isElement(v))?await(s.getScale==null?void 0:s.getScale(v))||{x:1,y:1}:{x:1,y:1},k=To(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:x,offsetParent:v,strategy:c}):x);return{top:(R.top-k.top+d.top)/C.y,bottom:(k.bottom-R.bottom+d.bottom)/C.y,left:(R.left-k.left+d.left)/C.x,right:(k.right-R.right+d.right)/C.x}}var Zv=50,mf=async(e,t,r)=>{let{placement:o="bottom",strategy:n="absolute",middleware:s=[],platform:i}=r,a=i.detectOverflow?i:{...i,detectOverflow:pf},c=await(i.isRTL==null?void 0:i.isRTL(t)),u=await i.getElementRects({reference:e,floating:t,strategy:n}),{x:l,y:f}=uf(u,o,c),h=o,g=0,d={};for(let b=0;b<s.length;b++){let S=s[b];if(!S)continue;let{name:R,fn:x}=S,{x:v,y:C,data:k,reset:T}=await x({x:l,y:f,initialPlacement:o,placement:h,strategy:n,middlewareData:d,rects:u,platform:a,elements:{reference:e,floating:t}});l=v??l,f=C??f,d[R]={...d[R],...k},T&&g<Zv&&(g++,typeof T=="object"&&(T.placement&&(h=T.placement),T.rects&&(u=T.rects===!0?await i.getElementRects({reference:e,floating:t,strategy:n}):T.rects),{x:l,y:f}=uf(u,h,c)),b=-1)}return{x:l,y:f,placement:h,strategy:n,middlewareData:d}};var hf=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var r,o;let{placement:n,middlewareData:s,rects:i,initialPlacement:a,platform:c,elements:u}=t,{mainAxis:l=!0,crossAxis:f=!0,fallbackPlacements:h,fallbackStrategy:g="bestFit",fallbackAxisSideDirection:d="none",flipAlignment:b=!0,...S}=Cr(e,t);if((r=s.arrow)!=null&&r.alignmentOffset)return{};let R=Tt(n),x=Wt(a),v=Tt(a)===a,C=await(c.isRTL==null?void 0:c.isRTL(u.floating)),k=h||(v||!b?[Gn(a)]:Yu(a)),T=d!=="none";!h&&T&&k.push(...qu(a,b,d,C));let _=[a,...k],A=await c.detectOverflow(t,S),D=[],W=((o=s.flip)==null?void 0:o.overflows)||[];if(l&&D.push(A[R]),f){let G=Gu(n,i,C);D.push(A[G[0]],A[G[1]])}if(W=[...W,{placement:n,overflows:D}],!D.every(G=>G<=0)){var M,w;let G=(((M=s.flip)==null?void 0:M.index)||0)+1,P=_[G];if(P&&(!(f==="alignment"?x!==Wt(P):!1)||W.every(L=>Wt(L.placement)===x?L.overflows[0]>0:!0)))return{data:{index:G,overflows:W},reset:{placement:P}};let N=(w=W.filter(K=>K.overflows[0]<=0).sort((K,L)=>K.overflows[1]-L.overflows[1])[0])==null?void 0:w.placement;if(!N)switch(g){case"bestFit":{var O;let K=(O=W.filter(L=>{if(T){let E=Wt(L.placement);return E===x||E==="y"}return!0}).map(L=>[L.placement,L.overflows.filter(E=>E>0).reduce((E,I)=>E+I,0)]).sort((L,E)=>L[1]-E[1])[0])==null?void 0:O[0];K&&(N=K);break}case"initialPlacement":N=a;break}if(n!==N)return{reset:{placement:N}}}return{}}}};function ff(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function df(e){return Wu.some(t=>e[t]>=0)}var gf=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){let{rects:r,platform:o}=t,{strategy:n="referenceHidden",...s}=Cr(e,t);switch(n){case"referenceHidden":{let i=await o.detectOverflow(t,{...s,elementContext:"reference"}),a=ff(i,r.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:df(a)}}}case"escaped":{let i=await o.detectOverflow(t,{...s,altBoundary:!0}),a=ff(i,r.floating);return{data:{escapedOffsets:a,escaped:df(a)}}}default:return{}}}}};var yf=new Set(["left","top"]);async function Xv(e,t){let{placement:r,platform:o,elements:n}=e,s=await(o.isRTL==null?void 0:o.isRTL(n.floating)),i=Tt(r),a=Rr(r),c=Wt(r)==="y",u=yf.has(i)?-1:1,l=s&&c?-1:1,f=Cr(t,e),{mainAxis:h,crossAxis:g,alignmentAxis:d}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof d=="number"&&(g=a==="end"?d*-1:d),c?{x:g*l,y:h*u}:{x:h*u,y:g*l}}var vf=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var r,o;let{x:n,y:s,placement:i,middlewareData:a}=t,c=await Xv(t,e);return i===((r=a.offset)==null?void 0:r.placement)&&(o=a.arrow)!=null&&o.alignmentOffset?{}:{x:n+c.x,y:s+c.y,data:{...c,placement:i}}}}},bf=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:r,y:o,placement:n,platform:s}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:c={fn:R=>{let{x,y:v}=R;return{x,y:v}}},...u}=Cr(e,t),l={x:r,y:o},f=await s.detectOverflow(t,u),h=Wt(Tt(n)),g=Vs(h),d=l[g],b=l[h];if(i){let R=g==="y"?"top":"left",x=g==="y"?"bottom":"right",v=d+f[R],C=d-f[x];d=qn(v,d,C)}if(a){let R=h==="y"?"top":"left",x=h==="y"?"bottom":"right",v=b+f[R],C=b-f[x];b=qn(v,b,C)}let S=c.fn({...t,[g]:d,[h]:b});return{...S,data:{x:S.x-r,y:S.y-o,enabled:{[g]:i,[h]:a}}}}}},xf=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:r,y:o,placement:n,rects:s,middlewareData:i}=t,{offset:a=0,mainAxis:c=!0,crossAxis:u=!0}=Cr(e,t),l={x:r,y:o},f=Wt(n),h=Vs(f),g=l[h],d=l[f],b=Cr(a,t),S=typeof b=="number"?{mainAxis:b,crossAxis:0}:{mainAxis:0,crossAxis:0,...b};if(c){let v=h==="y"?"height":"width",C=s.reference[h]-s.floating[v]+S.mainAxis,k=s.reference[h]+s.reference[v]-S.mainAxis;g<C?g=C:g>k&&(g=k)}if(u){var R,x;let v=h==="y"?"width":"height",C=yf.has(Tt(n)),k=s.reference[f]-s.floating[v]+(C&&((R=i.offset)==null?void 0:R[f])||0)+(C?0:S.crossAxis),T=s.reference[f]+s.reference[v]+(C?0:((x=i.offset)==null?void 0:x[f])||0)-(C?S.crossAxis:0);d<k?d=k:d>T&&(d=T)}return{[h]:g,[f]:d}}}},wf=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var r,o;let{placement:n,rects:s,platform:i,elements:a}=t,{apply:c=()=>{},...u}=Cr(e,t),l=await i.detectOverflow(t,u),f=Tt(n),h=Rr(n),g=Wt(n)==="y",{width:d,height:b}=s.floating,S,R;f==="top"||f==="bottom"?(S=f,R=h===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?"start":"end")?"left":"right"):(R=f,S=h==="end"?"top":"bottom");let x=b-l.top-l.bottom,v=d-l.left-l.right,C=io(b-l[S],x),k=io(d-l[R],v),T=!t.middlewareData.shift,_=C,A=k;if((r=t.middlewareData.shift)!=null&&r.enabled.x&&(A=v),(o=t.middlewareData.shift)!=null&&o.enabled.y&&(_=x),T&&!h){let W=Nt(l.left,0),M=Nt(l.right,0),w=Nt(l.top,0),O=Nt(l.bottom,0);g?A=d-2*(W!==0||M!==0?W+M:Nt(l.left,l.right)):_=b-2*(w!==0||O!==0?w+O:Nt(l.top,l.bottom))}await c({...t,availableWidth:A,availableHeight:_});let D=await i.getDimensions(a.floating);return d!==D.width||b!==D.height?{reset:{rects:!0}}:{}}}};function Ef(e){let t=Ot(e),r=parseFloat(t.width)||0,o=parseFloat(t.height)||0,n=wt(e),s=n?e.offsetWidth:r,i=n?e.offsetHeight:o,a=ao(r)!==s||ao(o)!==i;return a&&(r=s,o=i),{width:r,height:o,$:a}}function Va(e){return xe(e)?e:e.contextElement}function an(e){let t=Va(e);if(!wt(t))return Sr(1);let r=t.getBoundingClientRect(),{width:o,height:n,$:s}=Ef(t),i=(s?ao(r.width):r.width)/o,a=(s?ao(r.height):r.height)/n;return(!i||!Number.isFinite(i))&&(i=1),(!a||!Number.isFinite(a))&&(a=1),{x:i,y:a}}var Kv=Sr(0);function Tf(e){let t=lt(e);return!rn()||!t.visualViewport?Kv:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Jv(e,t,r){return t===void 0&&(t=!1),!r||t&&r!==lt(e)?!1:t}function Po(e,t,r,o){t===void 0&&(t=!1),r===void 0&&(r=!1);let n=e.getBoundingClientRect(),s=Va(e),i=Sr(1);t&&(o?xe(o)&&(i=an(o)):i=an(e));let a=Jv(s,r,o)?Tf(s):Sr(0),c=(n.left+a.x)/i.x,u=(n.top+a.y)/i.y,l=n.width/i.x,f=n.height/i.y;if(s){let h=lt(s),g=o&&xe(o)?lt(o):o,d=h,b=Is(d);for(;b&&o&&g!==d;){let S=an(b),R=b.getBoundingClientRect(),x=Ot(b),v=R.left+(b.clientLeft+parseFloat(x.paddingLeft))*S.x,C=R.top+(b.clientTop+parseFloat(x.paddingTop))*S.y;c*=S.x,u*=S.y,l*=S.x,f*=S.y,c+=v,u+=C,d=lt(b),b=Is(d)}}return To({width:l,height:f,x:c,y:u})}function Hs(e,t){let r=Wn(e).scrollLeft;return t?t.left+r:Po(xr(e)).left+r}function _f(e,t){let r=e.getBoundingClientRect(),o=r.left+t.scrollLeft-Hs(e,r),n=r.top+t.scrollTop;return{x:o,y:n}}function Qv(e){let{elements:t,rect:r,offsetParent:o,strategy:n}=e,s=n==="fixed",i=xr(o),a=t?Un(t.floating):!1;if(o===i||a&&s)return r;let c={scrollLeft:0,scrollTop:0},u=Sr(1),l=Sr(0),f=wt(o);if((f||!f&&!s)&&((Eo(o)!=="body"||tn(i))&&(c=Wn(o)),f)){let g=Po(o);u=an(o),l.x=g.x+o.clientLeft,l.y=g.y+o.clientTop}let h=i&&!f&&!s?_f(i,c):Sr(0);return{width:r.width*u.x,height:r.height*u.y,x:r.x*u.x-c.scrollLeft*u.x+l.x+h.x,y:r.y*u.y-c.scrollTop*u.y+l.y+h.y}}function $v(e){return Array.from(e.getClientRects())}function eb(e){let t=xr(e),r=Wn(e),o=e.ownerDocument.body,n=Nt(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),s=Nt(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight),i=-r.scrollLeft+Hs(e),a=-r.scrollTop;return Ot(o).direction==="rtl"&&(i+=Nt(t.clientWidth,o.clientWidth)-n),{width:n,height:s,x:i,y:a}}var Sf=25;function tb(e,t){let r=lt(e),o=xr(e),n=r.visualViewport,s=o.clientWidth,i=o.clientHeight,a=0,c=0;if(n){s=n.width,i=n.height;let l=rn();(!l||l&&t==="fixed")&&(a=n.offsetLeft,c=n.offsetTop)}let u=Hs(o);if(u<=0){let l=o.ownerDocument,f=l.body,h=getComputedStyle(f),g=l.compatMode==="CSS1Compat"&&parseFloat(h.marginLeft)+parseFloat(h.marginRight)||0,d=Math.abs(o.clientWidth-f.clientWidth-g);d<=Sf&&(s-=d)}else u<=Sf&&(s+=u);return{width:s,height:i,x:a,y:c}}function rb(e,t){let r=Po(e,!0,t==="fixed"),o=r.top+e.clientTop,n=r.left+e.clientLeft,s=wt(e)?an(e):Sr(1),i=e.clientWidth*s.x,a=e.clientHeight*s.y,c=n*s.x,u=o*s.y;return{width:i,height:a,x:c,y:u}}function Cf(e,t,r){let o;if(t==="viewport")o=tb(e,r);else if(t==="document")o=eb(xr(e));else if(xe(t))o=rb(t,r);else{let n=Tf(e);o={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return To(o)}function Of(e,t){let r=br(e);return r===t||!xe(r)||wr(r)?!1:Ot(r).position==="fixed"||Of(r,t)}function ob(e,t){let r=t.get(e);if(r)return r;let o=oo(e,[],!1).filter(a=>xe(a)&&Eo(a)!=="body"),n=null,s=Ot(e).position==="fixed",i=s?br(e):e;for(;xe(i)&&!wr(i);){let a=Ot(i),c=As(i);!c&&a.position==="fixed"&&(n=null),(s?!c&&!n:!c&&a.position==="static"&&!!n&&(n.position==="absolute"||n.position==="fixed")||tn(i)&&!c&&Of(e,i))?o=o.filter(l=>l!==i):n=a,i=br(i)}return t.set(e,o),o}function nb(e){let{element:t,boundary:r,rootBoundary:o,strategy:n}=e,i=[...r==="clippingAncestors"?Un(t)?[]:ob(t,this._c):[].concat(r),o],a=Cf(t,i[0],n),c=a.top,u=a.right,l=a.bottom,f=a.left;for(let h=1;h<i.length;h++){let g=Cf(t,i[h],n);c=Nt(g.top,c),u=io(g.right,u),l=io(g.bottom,l),f=Nt(g.left,f)}return{width:u-f,height:l-c,x:f,y:c}}function sb(e){let{width:t,height:r}=Ef(e);return{width:t,height:r}}function ib(e,t,r){let o=wt(t),n=xr(t),s=r==="fixed",i=Po(e,!0,s,t),a={scrollLeft:0,scrollTop:0},c=Sr(0);function u(){c.x=Hs(n)}if(o||!o&&!s)if((Eo(t)!=="body"||tn(n))&&(a=Wn(t)),o){let g=Po(t,!0,s,t);c.x=g.x+t.clientLeft,c.y=g.y+t.clientTop}else n&&u();s&&!o&&n&&u();let l=n&&!o&&!s?_f(n,a):Sr(0),f=i.left+a.scrollLeft-c.x-l.x,h=i.top+a.scrollTop-c.y-l.y;return{x:f,y:h,width:i.width,height:i.height}}function Ma(e){return Ot(e).position==="static"}function Rf(e,t){if(!wt(e)||Ot(e).position==="fixed")return null;if(t)return t(e);let r=e.offsetParent;return xr(e)===r&&(r=r.ownerDocument.body),r}function Pf(e,t){let r=lt(e);if(Un(e))return r;if(!wt(e)){let n=br(e);for(;n&&!wr(n);){if(xe(n)&&!Ma(n))return n;n=br(n)}return r}let o=Rf(e,t);for(;o&&Fu(o)&&Ma(o);)o=Rf(o,t);return o&&wr(o)&&Ma(o)&&!As(o)?r:o||ku(e)||r}var ab=async function(e){let t=this.getOffsetParent||Pf,r=this.getDimensions,o=await r(e.floating);return{reference:ib(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function lb(e){return Ot(e).direction==="rtl"}var Ba={convertOffsetParentRelativeRectToViewportRelativeRect:Qv,getDocumentElement:xr,getClippingRect:nb,getOffsetParent:Pf,getElementRects:ab,getClientRects:$v,getDimensions:sb,getScale:an,isElement:xe,isRTL:lb};function Ff(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function cb(e,t){let r=null,o,n=xr(e);function s(){var a;clearTimeout(o),(a=r)==null||a.disconnect(),r=null}function i(a,c){a===void 0&&(a=!1),c===void 0&&(c=1),s();let u=e.getBoundingClientRect(),{left:l,top:f,width:h,height:g}=u;if(a||t(),!h||!g)return;let d=Yn(f),b=Yn(n.clientWidth-(l+h)),S=Yn(n.clientHeight-(f+g)),R=Yn(l),v={rootMargin:-d+"px "+-b+"px "+-S+"px "+-R+"px",threshold:Nt(0,io(1,c))||1},C=!0;function k(T){let _=T[0].intersectionRatio;if(_!==c){if(!C)return i();_?i(!1,_):o=setTimeout(()=>{i(!1,1e-7)},1e3)}_===1&&!Ff(u,e.getBoundingClientRect())&&i(),C=!1}try{r=new IntersectionObserver(k,{...v,root:n.ownerDocument})}catch{r=new IntersectionObserver(k,v)}r.observe(e)}return i(!0),s}function Jn(e,t,r,o){o===void 0&&(o={});let{ancestorScroll:n=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:c=!1}=o,u=Va(e),l=n||s?[...u?oo(u):[],...t?oo(t):[]]:[];l.forEach(R=>{n&&R.addEventListener("scroll",r,{passive:!0}),s&&R.addEventListener("resize",r)});let f=u&&a?cb(u,r):null,h=-1,g=null;i&&(g=new ResizeObserver(R=>{let[x]=R;x&&x.target===u&&g&&t&&(g.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var v;(v=g)==null||v.observe(t)})),r()}),u&&!c&&g.observe(u),t&&g.observe(t));let d,b=c?Po(e):null;c&&S();function S(){let R=Po(e);b&&!Ff(b,R)&&r(),b=R,d=requestAnimationFrame(S)}return r(),()=>{var R;l.forEach(x=>{n&&x.removeEventListener("scroll",r),s&&x.removeEventListener("resize",r)}),f?.(),(R=g)==null||R.disconnect(),g=null,c&&cancelAnimationFrame(d)}}var kf=vf;var Af=bf,If=hf,Lf=wf,Nf=gf;var Df=xf,Us=(e,t,r)=>{let o=new Map,n={platform:Ba,...r},s={...n.platform,_c:o};return mf(e,t,{...n,platform:s})};var yt=m(be(),1),Vf=m(be(),1),Bf=m(lo(),1),fb=typeof document<"u",db=function(){},Ws=fb?Vf.useLayoutEffect:db;function Gs(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let r,o,n;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(r=e.length,r!==t.length)return!1;for(o=r;o--!==0;)if(!Gs(e[o],t[o]))return!1;return!0}if(n=Object.keys(e),r=n.length,r!==Object.keys(t).length)return!1;for(o=r;o--!==0;)if(!{}.hasOwnProperty.call(t,n[o]))return!1;for(o=r;o--!==0;){let s=n[o];if(!(s==="_owner"&&e.$$typeof)&&!Gs(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function zf(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Mf(e,t){let r=zf(e);return Math.round(t*r)/r}function za(e){let t=yt.useRef(e);return Ws(()=>{t.current=e}),t}function jf(e){e===void 0&&(e={});let{placement:t="bottom",strategy:r="absolute",middleware:o=[],platform:n,elements:{reference:s,floating:i}={},transform:a=!0,whileElementsMounted:c,open:u}=e,[l,f]=yt.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[h,g]=yt.useState(o);Gs(h,o)||g(o);let[d,b]=yt.useState(null),[S,R]=yt.useState(null),x=yt.useCallback(L=>{L!==T.current&&(T.current=L,b(L))},[]),v=yt.useCallback(L=>{L!==_.current&&(_.current=L,R(L))},[]),C=s||d,k=i||S,T=yt.useRef(null),_=yt.useRef(null),A=yt.useRef(l),D=c!=null,W=za(c),M=za(n),w=za(u),O=yt.useCallback(()=>{if(!T.current||!_.current)return;let L={placement:t,strategy:r,middleware:h};M.current&&(L.platform=M.current),Us(T.current,_.current,L).then(E=>{let I={...E,isPositioned:w.current!==!1};G.current&&!Gs(A.current,I)&&(A.current=I,Bf.flushSync(()=>{f(I)}))})},[h,t,r,M,w]);Ws(()=>{u===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,f(L=>({...L,isPositioned:!1})))},[u]);let G=yt.useRef(!1);Ws(()=>(G.current=!0,()=>{G.current=!1}),[]),Ws(()=>{if(C&&(T.current=C),k&&(_.current=k),C&&k){if(W.current)return W.current(C,k,O);O()}},[C,k,O,W,D]);let P=yt.useMemo(()=>({reference:T,floating:_,setReference:x,setFloating:v}),[x,v]),N=yt.useMemo(()=>({reference:C,floating:k}),[C,k]),K=yt.useMemo(()=>{let L={position:r,left:0,top:0};if(!N.floating)return L;let E=Mf(N.floating,l.x),I=Mf(N.floating,l.y);return a?{...L,transform:"translate("+E+"px, "+I+"px)",...zf(N.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:E,top:I}},[r,a,N.floating,l.x,l.y]);return yt.useMemo(()=>({...l,update:O,refs:P,elements:N,floatingStyles:K}),[l,O,P,N,K])}var ja=(e,t)=>{let r=kf(e);return{name:r.name,fn:r.fn,options:[e,t]}},Ha=(e,t)=>{let r=Af(e);return{name:r.name,fn:r.fn,options:[e,t]}},Ua=(e,t)=>({fn:Df(e).fn,options:[e,t]}),Wa=(e,t)=>{let r=If(e);return{name:r.name,fn:r.fn,options:[e,t]}},Ga=(e,t)=>{let r=Lf(e);return{name:r.name,fn:r.fn,options:[e,t]}};var Ya=(e,t)=>{let r=Nf(e);return{name:r.name,fn:r.fn,options:[e,t]}};var un=m(be(),1);var td=m(be(),1);var Me=(e,t,r,o,n,s,...i)=>{if(i.length>0)throw new Error(Ht(1));let a;if(e&&t&&r&&o&&n&&s)a=(c,u,l,f)=>{let h=e(c,u,l,f),g=t(c,u,l,f),d=r(c,u,l,f),b=o(c,u,l,f),S=n(c,u,l,f);return s(h,g,d,b,S,u,l,f)};else if(e&&t&&r&&o&&n)a=(c,u,l,f)=>{let h=e(c,u,l,f),g=t(c,u,l,f),d=r(c,u,l,f),b=o(c,u,l,f);return n(h,g,d,b,u,l,f)};else if(e&&t&&r&&o)a=(c,u,l,f)=>{let h=e(c,u,l,f),g=t(c,u,l,f),d=r(c,u,l,f);return o(h,g,d,u,l,f)};else if(e&&t&&r)a=(c,u,l,f)=>{let h=e(c,u,l,f),g=t(c,u,l,f);return r(h,g,u,l,f)};else if(e&&t)a=(c,u,l,f)=>{let h=e(c,u,l,f);return t(h,u,l,f)};else if(e)a=e;else throw new Error("Missing arguments");return a};var $f=m(be(),1),Qa=m(Za(),1),ed=m(Zf(),1);var Xf=m(be(),1);var Xa=[],Ka;function Kf(){return Ka}function Jf(e){Xa.push(e)}function Ja(e){let t=(r,o)=>{let n=Et(Fb).current,s;try{Ka=n;for(let i of Xa)i.before(n);s=e(r,o);for(let i of Xa)i.after(n);n.didInitialize=!0}finally{Ka=void 0}return s};return t.displayName=e.displayName||e.name,t}function Qf(e){return Xf.forwardRef(Ja(e))}function Fb(){return{didInitialize:!1}}var kb=Jo(19),Ab=kb?Lb:Nb;function qs(e,t,r,o,n){return Ab(e,t,r,o,n)}function Ib(e,t,r,o,n){let s=$f.useCallback(()=>t(e.getSnapshot(),r,o,n),[e,t,r,o,n]);return(0,Qa.useSyncExternalStore)(e.subscribe,s,s)}Jf({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let r=0;r<e.syncHooks.length;r+=1){let o=e.syncHooks[r],n=o.selector(o.store.state,o.a1,o.a2,o.a3);(o.didChange||!Object.is(o.value,n))&&(t=!0,o.value=n,o.didChange=!1)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let r=new Set;for(let n of e.syncHooks)r.add(n.store);let o=[];for(let n of r)o.push(n.subscribe(t));return()=>{for(let n of o)n()}}),(0,Qa.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function Lb(e,t,r,o,n){let s=Kf();if(!s)return Ib(e,t,r,o,n);let i=s.syncIndex;s.syncIndex+=1;let a;return s.didInitialize?(a=s.syncHooks[i],(a.store!==e||a.selector!==t||!Object.is(a.a1,r)||!Object.is(a.a2,o)||!Object.is(a.a3,n))&&(a.store!==e&&(s.didChangeStore=!0),a.store=e,a.selector=t,a.a1=r,a.a2=o,a.a3=n,a.didChange=!0)):(a={store:e,selector:t,a1:r,a2:o,a3:n,value:t(e.getSnapshot(),r,o,n),didChange:!1},s.syncHooks.push(a)),a.value}function Nb(e,t,r,o,n){return(0,ed.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,s=>t(s,r,o,n))}var Zs=class{constructor(t){this.state=t,this.listeners=new Set,this.updateTick=0}subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});getSnapshot=()=>this.state;setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;let r=this.updateTick;for(let o of this.listeners){if(r!==this.updateTick)return;o(t)}}update(t){for(let r in t)if(!Object.is(this.state[r],t[r])){this.setState({...this.state,...t});return}}set(t,r){Object.is(this.state[t],r)||this.setState({...this.state,[t]:r})}notifyAll(){let t={...this.state};this.setState(t)}use(t,r,o,n){return qs(this,t,r,o,n)}};var Fo=m(be(),1);var cn=class extends Zs{constructor(t,r={},o){super(t),this.context=r,this.selectors=o}useSyncedValue(t,r){Fo.useDebugValue(t);let o=this;Ce(()=>{o.state[t]!==r&&o.set(t,r)},[o,t,r])}useSyncedValueWithCleanup(t,r){let o=this;Ce(()=>(o.state[t]!==r&&o.set(t,r),()=>{o.set(t,void 0)}),[o,t,r])}useSyncedValues(t){let r=this,o=Object.values(t);Ce(()=>{r.update(t)},[r,...o])}useControlledProp(t,r){Fo.useDebugValue(t);let o=this,n=r!==void 0;Ce(()=>{n&&!Object.is(o.state[t],r)&&o.setState({...o.state,[t]:r})},[o,t,r,n])}select(t,r,o,n){let s=this.selectors[t];return s(this.state,r,o,n)}useState(t,r,o,n){return Fo.useDebugValue(t),qs(this,this.selectors[t],r,o,n)}useContextCallback(t,r){Fo.useDebugValue(t);let o=Te(r??Gr);this.context[t]=o}useStateSetter(t){let r=Fo.useRef(void 0);return r.current===void 0&&(r.current=o=>{this.set(t,o)}),r.current}observe(t,r){let o;typeof t=="function"?o=t:o=this.selectors[t];let n=o(this.state);return r(n,n,this),this.subscribe(s=>{let i=o(s);if(!Object.is(n,i)){let a=n;n=i,r(i,a,this)}})}};var Db={open:Me(e=>e.open),transitionStatus:Me(e=>e.transitionStatus),domReferenceElement:Me(e=>e.domReferenceElement),referenceElement:Me(e=>e.positionReference??e.referenceElement),floatingElement:Me(e=>e.floatingElement),floatingId:Me(e=>e.floatingId)},Pr=class extends cn{constructor(t){let{syncOnly:r,nested:o,onOpenChange:n,triggerElements:s,...i}=t;super({...i,positionReference:i.referenceElement,domReferenceElement:i.referenceElement},{onOpenChange:n,dataRef:{current:{}},events:lf(),nested:o,triggerElements:s},Db),this.syncOnly=r}syncOpenEvent=(t,r)=>{(!t||!this.state.open||r!=null&&ju(r))&&(this.context.dataRef.current.openEvent=t?r:void 0)};dispatchOpenChange=(t,r)=>{this.syncOpenEvent(t,r.event);let o={open:t,reason:r.reason,nativeEvent:r.event,nested:this.context.nested,triggerElement:r.trigger};this.context.events.emit("openchange",o)};setOpen=(t,r)=>{if(this.syncOnly){this.context.onOpenChange?.(t,r);return}this.dispatchOpenChange(t,r),this.context.onOpenChange?.(t,r)}};function rd(e){let{popupStore:t,treatPopupAsFloatingElement:r=!1,floatingRootContext:o,floatingId:n,nested:s,onOpenChange:i}=e,a=t.useState("open"),c=t.useState("activeTriggerElement"),u=t.useState(r?"popupElement":"positionerElement"),l=t.context.triggerElements,f=i,h=td.useRef(null);o===void 0&&h.current===null&&(h.current=new Pr({open:a,transitionStatus:void 0,referenceElement:c,floatingElement:u,triggerElements:l,onOpenChange:f,floatingId:n,syncOnly:!0,nested:s}));let g=o??h.current;return t.useSyncedValue("floatingId",n),Ce(()=>{let d={open:a,floatingId:n,referenceElement:c,floatingElement:u};xe(c)&&(d.domReferenceElement=c),g.state.positionReference===g.state.referenceElement&&(d.positionReference=c),g.update(d)},[a,n,c,u,g]),g.context.onOpenChange=f,g.context.nested=s,g}var od={tabIndex:-1,[Oa]:""};function nd(e,t,r=!1){let o=ro(),n=sn()!=null,s=un.useRef(null);e===void 0&&s.current===null&&(s.current=t(o,n));let i=e??s.current;return rd({popupStore:i,treatPopupAsFloatingElement:r,floatingRootContext:i.state.floatingRootContext,floatingId:o,nested:n,onOpenChange:i.setOpen}),{store:i,internalStore:s.current}}function Mb(e,t){let r=un.useRef(null),o=un.useRef(null);return un.useCallback(n=>{if(e===void 0)return;let s=!1;if(r.current!==null){let i=r.current,a=o.current,c=t.context.triggerElements.getById(i);a&&c===a&&(t.context.triggerElements.delete(i),s=!0),r.current=null,o.current=null}if(n!==null&&(r.current=e,o.current=n,t.context.triggerElements.add(e,n),s=!0),s){let i=t.context.triggerElements.size;t.select("open")&&t.state.triggerCount!==i&&t.set("triggerCount",i)}},[t,e])}function sd(e,t,r){let o=r?.id??null;(o||t)&&(e.activeTriggerId=o,e.activeTriggerElement=r??null)}function id(e,t,r,o){let n=r.useState("isMountedByTrigger",e),s=Mb(e,r),i=Te(a=>{if(s(a),!a)return;let c=r.select("open"),u=r.select("activeTriggerId");if(u===e){r.update({activeTriggerElement:a,...c?o:null});return}u==null&&c&&r.update({activeTriggerId:e,activeTriggerElement:a,...o})});return Ce(()=>{n&&r.update({activeTriggerElement:t.current,...o})},[n,r,t,...Object.values(o)]),{registerTrigger:i,isMountedByThisTrigger:n}}function ad(e){let t=e.useState("open"),r=e.useState("triggerCount");Ce(()=>{if(!t){e.state.triggerCount!==0&&e.set("triggerCount",0);return}let o=e.context.triggerElements.size,n={};if(e.state.triggerCount!==o&&(n.triggerCount=o),!e.select("activeTriggerId")&&o===1){let s=e.context.triggerElements.entries().next();if(!s.done){let[i,a]=s.value;n.activeTriggerId=i,n.activeTriggerElement=a}}(n.triggerCount!==void 0||n.activeTriggerId!==void 0)&&e.update(n)},[t,e,r])}function ld(e,t,r){let{mounted:o,setMounted:n,transitionStatus:s}=Ou(e);t.useSyncedValues({mounted:o,transitionStatus:s});let i=Te(()=>{n(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1,preventUnmountingOnClose:!1}),r?.(),t.context.onOpenChangeComplete?.(!1)}),a=t.useState("preventUnmountingOnClose");return zs({enabled:o&&!e&&!a,open:e,ref:t.context.popupRef,onComplete(){e||i()}}),{forceUnmount:i,transitionStatus:s}}function cd(e,t){e.useSyncedValues(t),Ce(()=>()=>{e.update({activeTriggerProps:pt,inactiveTriggerProps:pt,popupProps:pt})},[e])}var uo=class{constructor(){this.elementsSet=new Set,this.idMap=new Map}add(t,r){let o=this.idMap.get(t);o!==r&&(o!==void 0&&this.elementsSet.delete(o),this.elementsSet.add(r),this.idMap.set(t,r))}delete(t){let r=this.idMap.get(t);r&&(this.elementsSet.delete(r),this.idMap.delete(t))}hasElement(t){return this.elementsSet.has(t)}hasMatchingElement(t){for(let r of this.elementsSet)if(t(r))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}elements(){return this.elementsSet.values()}get size(){return this.idMap.size}};function ud(){return new Pr({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:new uo,floatingId:void 0,syncOnly:!1,nested:!1,onOpenChange:void 0})}function dd(){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:ud(),floatingId:void 0,triggerCount:0,preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:pt,inactiveTriggerProps:pt,popupProps:pt}}function pd(e,t,r=!1){return new Pr({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:e,floatingId:t,syncOnly:!0,nested:r,onOpenChange:void 0})}var Qn=Me(e=>e.triggerIdProp??e.activeTriggerId),$a=Me(e=>e.openProp??e.open),fd=Me(e=>(e.popupElement?.id??e.floatingId)||void 0);function md(e,t){return t!==void 0&&$a(e)&&Qn(e)===t}function Vb(e,t){return md(e,t)?!0:t!==void 0&&$a(e)&&Qn(e)==null&&e.triggerCount===1}var hd={open:$a,mounted:Me(e=>e.mounted),transitionStatus:Me(e=>e.transitionStatus),floatingRootContext:Me(e=>e.floatingRootContext),triggerCount:Me(e=>e.triggerCount),preventUnmountingOnClose:Me(e=>e.preventUnmountingOnClose),payload:Me(e=>e.payload),activeTriggerId:Qn,activeTriggerElement:Me(e=>e.mounted?e.activeTriggerElement:null),popupId:fd,isTriggerActive:Me((e,t)=>t!==void 0&&Qn(e)===t),isOpenedByTrigger:Me((e,t)=>md(e,t)),isMountedByTrigger:Me((e,t)=>t!==void 0&&Qn(e)===t&&e.mounted),triggerProps:Me((e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps),triggerPopupId:Me((e,t)=>Vb(e,t)?fd(e):void 0),popupProps:Me(e=>e.popupProps),popupElement:Me(e=>e.popupElement),positionerElement:Me(e=>e.positionerElement)};function gd(e){let{open:t=!1,onOpenChange:r,elements:o={}}=e,n=ro(),s=sn()!=null,i=Et(()=>new Pr({open:t,transitionStatus:void 0,onOpenChange:r,referenceElement:o.reference??null,floatingElement:o.floating??null,triggerElements:new uo,floatingId:n,syncOnly:!1,nested:s})).current;return Ce(()=>{let a={open:t,floatingId:n};o.reference!==void 0&&(a.referenceElement=o.reference,a.domReferenceElement=xe(o.reference)?o.reference:null),o.floating!==void 0&&(a.floatingElement=o.floating),i.update(a)},[t,n,o.reference,o.floating,i]),i.context.onOpenChange=r,i.context.nested=s,i}function el(e={}){let{nodeId:t,externalTree:r}=e,o=gd(e),n=e.rootContext||o,s=n.useState("referenceElement"),i=n.useState("floatingElement"),a=n.useState("domReferenceElement"),c=n.useState("open"),u=n.useState("floatingId"),[l,f]=Pt.useState(null),[h,g]=Pt.useState(void 0),[d,b]=Pt.useState(void 0),S=Pt.useRef(null),R=co(r),x=Pt.useMemo(()=>({reference:s,floating:i,domReference:a}),[s,i,a]),v=jf({...e,elements:{...x,...l&&{reference:l}}}),C=xe(h)?h:null,k=d===void 0?n.state.floatingElement:d;n.useSyncedValue("referenceElement",h??null),n.useSyncedValue("domReferenceElement",h===void 0?a:C),n.useSyncedValue("floatingElement",k);let T=Pt.useCallback(w=>{let O=xe(w)?{getBoundingClientRect:()=>w.getBoundingClientRect(),getClientRects:()=>w.getClientRects(),contextElement:w}:w;f(O),v.refs.setReference(O)},[v.refs]),_=Pt.useCallback(w=>{(xe(w)||w===null)&&(S.current=w,g(w)),(xe(v.refs.reference.current)||v.refs.reference.current===null||w!==null&&!xe(w))&&v.refs.setReference(w)},[v.refs,g]),A=Pt.useCallback(w=>{b(w),v.refs.setFloating(w)},[v.refs]),D=Pt.useMemo(()=>({...v.refs,setReference:_,setFloating:A,setPositionReference:T,domReference:S}),[v.refs,_,A,T]),W=Pt.useMemo(()=>({...v.elements,domReference:a}),[v.elements,a]),M=Pt.useMemo(()=>({...v,dataRef:n.context.dataRef,open:c,onOpenChange:n.setOpen,events:n.context.events,floatingId:u,refs:D,elements:W,nodeId:t,rootStore:n}),[v,D,W,t,n,c,u]);return Ce(()=>{a&&(S.current=a)},[a]),Ce(()=>{n.context.dataRef.current.floatingContext=M;let w=R?.nodesRef.current.find(O=>O.id===t);w&&(w.context=M)}),Pt.useMemo(()=>({...v,context:M,refs:D,elements:W,rootStore:n}),[v,D,W,M,n])}var Fr=m(be(),1);var tl=Nu&&Lu;function rl(e,t={}){let{enabled:r=!0,delay:o}=t,n="rootStore"in e?e.rootStore:e,{events:s,dataRef:i}=n.context,a=Fr.useRef(!1),c=Fr.useRef(null),u=Fr.useRef(!0),l=Er();Fr.useEffect(()=>{let h=n.select("domReferenceElement");if(!r)return;let g=lt(h);function d(){let R=n.select("domReferenceElement");!n.select("open")&&wt(R)&&R===Ns(St(R))&&(a.current=!0)}function b(){u.current=!0}function S(){u.current=!1}return Tr(Ye(g,"blur",d),tl&&Ye(g,"keydown",b,!0),tl&&Ye(g,"pointerdown",S,!0))},[n,r]),Fr.useEffect(()=>{if(!r)return;function h(g){if(g.reason===Fe.triggerPress||g.reason===Fe.escapeKey){let d=n.select("domReferenceElement");xe(d)&&(c.current=d,a.current=!0)}}return s.on("openchange",h),()=>{s.off("openchange",h)}},[s,r,n]);let f=Fr.useMemo(()=>{function h(){a.current=!1,c.current=null}return{onMouseLeave(){h()},onFocus(g){let d=g.currentTarget;if(a.current){if(c.current===d)return;h()}let b=Lt(g.nativeEvent);if(xe(b)){if(tl&&!g.relatedTarget){if(!u.current&&!Vu(b))return}else if(!Bu(b))return}let S=so(g.relatedTarget,n.context.triggerElements),{nativeEvent:R,currentTarget:x}=g,v=typeof o=="function"?o():o;if(n.select("open")&&S||v===0||v===void 0){n.setOpen(!0,Ue(Fe.triggerFocus,R,x));return}l.start(v,()=>{a.current||n.setOpen(!0,Ue(Fe.triggerFocus,R,x))})},onBlur(g){h();let d=g.relatedTarget,b=g.nativeEvent,S=xe(d)&&d.hasAttribute(nn("focus-guard"))&&d.getAttribute("data-type")==="outside";l.start(0,()=>{let R=n.select("domReferenceElement"),x=Ns(St(R));!d&&x===R||Xe(i.current.floatingContext?.refs.floating.current,x)||Xe(R,x)||S||so(d??x,n.context.triggerElements)||n.setOpen(!1,Ue(Fe.triggerFocus,b))})}}},[i,o,n,l]);return Fr.useMemo(()=>r?{reference:f,trigger:f}:{},[r,f])}var nl=m(be(),1);var ol=class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new rr,this.restTimeout=new rr,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose},Xs=new WeakMap;function fn(e){if(!e.performedPointerEventsMutation)return;let t=e.pointerEventsScopeElement;t&&Xs.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),Xs.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function Ks(e,t){let{scopeElement:r,referenceElement:o,floatingElement:n}=t,s=Xs.get(r);s&&s!==e&&fn(s),fn(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=r,e.pointerEventsReferenceElement=o,e.pointerEventsFloatingElement=n,Xs.set(r,e),r.style.pointerEvents="none",o.style.pointerEvents="auto",n.style.pointerEvents="auto"}function dn(e){let t=e.context.dataRef.current,r=Et(()=>t.hoverInteractionState??ol.create()).current;return t.hoverInteractionState||(t.hoverInteractionState=r),Qo(t.hoverInteractionState.disposeEffect),t.hoverInteractionState}function sl(e,t={}){let{enabled:r=!0,closeDelay:o=0,nodeId:n}=t,s="rootStore"in e?e.rootStore:e,i=s.useState("open"),a=s.useState("floatingElement"),c=s.useState("domReferenceElement"),{dataRef:u}=s.context,l=co(),f=sn(),h=dn(s),g=Er(),d=Te(()=>js(u.current.openEvent?.type,h.interactedInside)),b=Te(()=>ef(u.current.openEvent?.type)),S=Te(()=>{fn(h)});Ce(()=>{i||(h.pointerType=void 0,h.restTimeoutPending=!1,h.interactedInside=!1,S())},[i,h,S]),nl.useEffect(()=>S,[S]),Ce(()=>{if(r&&i&&h.handleCloseOptions?.blockPointerEvents&&b()&&xe(c)&&a){let R=c,x=a,v=St(a),C=l?.nodesRef.current.find(A=>A.id===f)?.context?.elements.floating;C&&(C.style.pointerEvents="");let k=h.pointerEventsScopeElement!==x?h.pointerEventsScopeElement:null,T=C!==x?C:null,_=h.handleCloseOptions?.getScope?.()??k??T??R.closest("[data-rootownerid]")??v.body;return Ks(h,{scopeElement:_,referenceElement:R,floatingElement:x}),()=>{S()}}},[r,i,c,a,h,b,l,f,S]),nl.useEffect(()=>{if(!r)return;function R(){return!!(l&&f&&Yr(l.nodesRef.current,f).length>0)}function x(A){let D=_o(o,"close",h.pointerType),W=()=>{s.setOpen(!1,Ue(Fe.triggerHover,A)),l?.events.emit("floating.closed",A)};D?h.openChangeTimeout.start(D,W):(h.openChangeTimeout.clear(),W())}function v(A){let D=Lt(A);if(!Fa(D)){h.interactedInside=!1;return}h.interactedInside=D?.closest("[aria-haspopup]")!=null}function C(){h.openChangeTimeout.clear(),g.clear(),l?.events.off("floating.closed",T),S()}function k(A){if(R()&&l){l.events.on("floating.closed",T);return}if(so(A.relatedTarget,s.context.triggerElements))return;let D=u.current.floatingContext?.nodeId??n,W=A.relatedTarget;if(!(l&&D&&xe(W)&&Yr(l.nodesRef.current,D,!1).some(w=>Xe(w.context?.elements.floating,W)))){if(h.handler){h.handler(A);return}S(),d()||x(A)}}function T(A){!l||!f||R()||g.start(0,()=>{l.events.off("floating.closed",T),s.setOpen(!1,Ue(Fe.triggerHover,A)),l.events.emit("floating.closed",A)})}let _=a;return Tr(_&&Ye(_,"mouseenter",C),_&&Ye(_,"mouseleave",k),_&&Ye(_,"pointerdown",v,!0),()=>{l?.events.off("floating.closed",T)})},[r,a,s,u,o,n,d,S,h,l,f,g])}var fo=m(be(),1),yd=m(lo(),1);var Bb={current:null};function il(e,t={}){let{enabled:r=!0,delay:o=0,handleClose:n=null,mouseOnly:s=!1,restMs:i=0,move:a=!0,triggerElementRef:c=Bb,externalTree:u,isActiveTrigger:l=!0,getHandleCloseContext:f,isClosing:h,shouldOpen:g}=t,d="rootStore"in e?e.rootStore:e,{dataRef:b,events:S}=d.context,R=co(u),x=dn(d),v=fo.useRef(!1),C=Gt(n),k=Gt(o),T=Gt(i),_=Gt(r),A=Gt(g),D=Gt(h),W=Te(()=>js(b.current.openEvent?.type,x.interactedInside)),M=Te(()=>A.current?.()!==!1),w=Te((P,N,K)=>{let L=d.context.triggerElements;if(L.hasElement(N))return!P||!Xe(P,N);if(!xe(K))return!1;let E=K;return L.hasMatchingElement(I=>Xe(I,E))&&(!P||!Xe(P,E))}),O=Te(()=>{if(!x.handler)return;St(d.select("domReferenceElement")).removeEventListener("mousemove",x.handler),x.handler=void 0}),G=Te(()=>{fn(x)});return l&&(x.handleCloseOptions=C.current?.__options),fo.useEffect(()=>O,[O]),fo.useEffect(()=>{if(!r)return;function P(N){N.open?v.current=!1:(v.current=N.reason===Fe.triggerHover,O(),x.openChangeTimeout.clear(),x.restTimeout.clear(),x.blockMouseMove=!0,x.restTimeoutPending=!1)}return S.on("openchange",P),()=>{S.off("openchange",P)}},[r,S,x,O]),fo.useEffect(()=>{if(!r)return;function P(E,I=!0){let $=_o(k.current,"close",x.pointerType);$?x.openChangeTimeout.start($,()=>{d.setOpen(!1,Ue(Fe.triggerHover,E)),R?.events.emit("floating.closed",E)}):I&&(x.openChangeTimeout.clear(),d.setOpen(!1,Ue(Fe.triggerHover,E)),R?.events.emit("floating.closed",E))}let N=c.current??(l?d.select("domReferenceElement"):null);if(!xe(N))return;function K(E){if(x.openChangeTimeout.clear(),x.blockMouseMove=!1,s&&!qr(x.pointerType))return;let I=ka(T.current),$=_o(k.current,"open",x.pointerType),B=Lt(E),U=E.currentTarget??null,oe=d.select("domReferenceElement"),ge=U;if(xe(B)&&!d.context.triggerElements.hasElement(B)){for(let Y of d.context.triggerElements.elements())if(Xe(Y,B)){ge=Y;break}}xe(U)&&xe(oe)&&!d.context.triggerElements.hasElement(U)&&Xe(U,oe)&&(ge=oe);let ie=ge==null?!1:w(oe,ge,B),ve=d.select("open"),ke=D.current?.()??d.select("transitionStatus")==="ending",J=!ve&&ke&&v.current,Ae=!ie&&xe(ge)&&xe(oe)&&Xe(oe,ge)&&J,Ne=I>0&&!$,Ee=ie&&(ve||J)||Ae,je=!ve||ie;if(Ee){M()&&d.setOpen(!0,Ue(Fe.triggerHover,E,ge));return}Ne||($?x.openChangeTimeout.start($,()=>{je&&M()&&d.setOpen(!0,Ue(Fe.triggerHover,E,ge))}):je&&M()&&d.setOpen(!0,Ue(Fe.triggerHover,E,ge)))}function L(E){if(W()){G();return}O();let I=d.select("domReferenceElement"),$=St(I);x.restTimeout.clear(),x.restTimeoutPending=!1;let B=b.current.floatingContext??f?.();if(so(E.relatedTarget,d.context.triggerElements))return;if(C.current&&B){d.select("open")||x.openChangeTimeout.clear();let oe=c.current;x.handler=C.current({...B,tree:R,x:E.clientX,y:E.clientY,onClose(){G(),O(),_.current&&!W()&&oe===d.select("domReferenceElement")&&P(E,!0)}}),$.addEventListener("mousemove",x.handler),x.handler(E);return}(x.pointerType!=="touch"||!Xe(d.select("floatingElement"),E.relatedTarget))&&P(E)}return a?Tr(Ye(N,"mousemove",K,{once:!0}),Ye(N,"mouseenter",K),Ye(N,"mouseleave",L)):Tr(Ye(N,"mouseenter",K),Ye(N,"mouseleave",L))},[O,G,b,k,d,r,C,x,l,w,W,s,a,T,c,R,_,f,D,M]),fo.useMemo(()=>{if(!r)return;function P(N){x.pointerType=N.pointerType}return{onPointerDown:P,onPointerEnter:P,onMouseMove(N){let{nativeEvent:K}=N,L=N.currentTarget,E=d.select("domReferenceElement"),I=d.select("open"),$=w(E,L,N.target);if(s&&!qr(x.pointerType))return;if(I&&$&&x.handleCloseOptions?.blockPointerEvents){let oe=d.select("floatingElement");if(oe){let ge=x.handleCloseOptions?.getScope?.()??L.ownerDocument.body;Ks(x,{scopeElement:ge,referenceElement:L,floatingElement:oe})}}let B=ka(T.current);if(I&&!$||B===0||!$&&x.restTimeoutPending&&N.movementX**2+N.movementY**2<2)return;x.restTimeout.clear();function U(){if(x.restTimeoutPending=!1,W())return;let oe=d.select("open");!x.blockMouseMove&&(!oe||$)&&M()&&d.setOpen(!0,Ue(Fe.triggerHover,K,L))}x.pointerType==="touch"?yd.flushSync(()=>{U()}):$&&I?U():(x.restTimeoutPending=!0,x.restTimeout.start(B,U))}}},[r,x,W,w,s,d,T,M])}var vd=.1,zb=vd*vd,Je=.5;function Js(e,t,r,o,n,s){return o>=t!=s>=t&&e<=(n-r)*(t-o)/(s-o)+r}function Qs(e,t,r,o,n,s,i,a,c,u){let l=!1;return Js(e,t,r,o,n,s)&&(l=!l),Js(e,t,n,s,i,a)&&(l=!l),Js(e,t,i,a,c,u)&&(l=!l),Js(e,t,c,u,r,o)&&(l=!l),l}function jb(e,t,r){return e>=r.x&&e<=r.x+r.width&&t>=r.y&&t<=r.y+r.height}function $s(e,t,r,o,n,s){let i=Math.min(r,n),a=Math.max(r,n),c=Math.min(o,s),u=Math.max(o,s);return e>=i&&e<=a&&t>=c&&t<=u}function al(e={}){let{blockPointerEvents:t=!1}=e,r=new rr,o=({x:n,y:s,placement:i,elements:a,onClose:c,nodeId:u,tree:l})=>{let f=i?.split("-")[0],h=!1,g=null,d=null,b=typeof performance<"u"?performance.now():0;function S(x,v){let C=performance.now(),k=C-b;if(g===null||d===null||k===0)return g=x,d=v,b=C,!1;let T=x-g,_=v-d,A=T*T+_*_,D=k*k*zb;return g=x,d=v,b=C,A<D}function R(){r.clear(),c()}return function(v){r.clear();let C=a.domReference,k=a.floating;if(!C||!k||f==null||n==null||s==null)return;let{clientX:T,clientY:_}=v,A=Lt(v),D=v.type==="mouseleave",W=Xe(k,A),M=Xe(C,A);if(W&&(h=!0,!D))return;if(M&&(h=!1,!D)){h=!0;return}if(D&&xe(v.relatedTarget)&&Xe(k,v.relatedTarget))return;function w(){return!!(l&&Yr(l.nodesRef.current,u).length>0)}function O(){w()||R()}if(w())return;let G=C.getBoundingClientRect(),P=k.getBoundingClientRect(),N=n>P.right-P.width/2,K=s>P.bottom-P.height/2,L=P.width>G.width,E=P.height>G.height,I=(L?G:P).left,$=(L?G:P).right,B=(E?G:P).top,U=(E?G:P).bottom;if(f==="top"&&s>=G.bottom-1||f==="bottom"&&s<=G.top+1||f==="left"&&n>=G.right-1||f==="right"&&n<=G.left+1){O();return}let oe=!1;switch(f){case"top":oe=$s(T,_,I,G.top+1,$,P.bottom-1);break;case"bottom":oe=$s(T,_,I,P.top+1,$,G.bottom-1);break;case"left":oe=$s(T,_,P.right-1,U,G.left+1,B);break;case"right":oe=$s(T,_,G.right-1,U,P.left+1,B);break;default:}if(oe)return;if(h&&!jb(T,_,G)){O();return}if(!D&&S(T,_)){O();return}let ge=!1;switch(f){case"top":{let ie=L?Je/2:Je*4,ve=L||N?n+ie:n-ie,ke=L?n-ie:N?n+ie:n-ie,J=s+Je+1,Ae=N||L?P.bottom-Je:P.top,Ne=N?L?P.bottom-Je:P.top:P.bottom-Je;ge=Qs(T,_,ve,J,ke,J,P.left,Ae,P.right,Ne);break}case"bottom":{let ie=L?Je/2:Je*4,ve=L||N?n+ie:n-ie,ke=L?n-ie:N?n+ie:n-ie,J=s-Je,Ae=N||L?P.top+Je:P.bottom,Ne=N?L?P.top+Je:P.bottom:P.top+Je;ge=Qs(T,_,ve,J,ke,J,P.left,Ae,P.right,Ne);break}case"left":{let ie=E?Je/2:Je*4,ve=E||K?s+ie:s-ie,ke=E?s-ie:K?s+ie:s-ie,J=n+Je+1,Ae=K||E?P.right-Je:P.left,Ne=K?E?P.right-Je:P.left:P.right-Je;ge=Qs(T,_,Ae,P.top,Ne,P.bottom,J,ve,J,ke);break}case"right":{let ie=E?Je/2:Je*4,ve=E||K?s+ie:s-ie,ke=E?s-ie:K?s+ie:s-ie,J=n-Je,Ae=K||E?P.left+Je:P.right,Ne=K?E?P.left+Je:P.right:P.left+Je;ge=Qs(T,_,J,ve,J,ke,Ae,P.top,Ne,P.bottom);break}default:}ge?h||r.start(40,O):O()}};return o.__options={...e,blockPointerEvents:t},o}var ll=(function(e){return e.open="data-open",e.closed="data-closed",e[e.startingStyle=Co.startingStyle]="startingStyle",e[e.endingStyle=Co.endingStyle]="endingStyle",e.anchorHidden="data-anchor-hidden",e.side="data-side",e.align="data-align",e})({}),$n=(function(e){return e.popupOpen="data-popup-open",e.pressed="data-pressed",e})({}),Hb={[$n.popupOpen]:""},bP={[$n.popupOpen]:"",[$n.pressed]:""},Ub={[ll.open]:""},Wb={[ll.closed]:""},Gb={[ll.anchorHidden]:""},bd={open(e){return e?Hb:null}};var pn={open(e){return e?Ub:Wb},anchorHidden(e){return e?Gb:null}};function xd(e){return Jo(19)?e:e?"true":void 0}var nr=m(be(),1);var Yb=e=>({name:"arrow",options:e,async fn(t){let{x:r,y:o,placement:n,rects:s,platform:i,elements:a,middlewareData:c}=t,{element:u,padding:l=0,offsetParent:f="real"}=Cr(e,t)||{};if(u==null)return{};let h=Bs(l),g={x:r,y:o},d=Xn(n),b=Zn(d),S=await i.getDimensions(u),R=d==="y",x=R?"top":"left",v=R?"bottom":"right",C=R?"clientHeight":"clientWidth",k=s.reference[b]+s.reference[d]-g[d]-s.floating[b],T=g[d]-s.reference[d],_=f==="real"?await i.getOffsetParent?.(u):a.floating,A=a.floating[C]||s.floating[b];(!A||!await i.isElement?.(_))&&(A=a.floating[C]||s.floating[b]);let D=k/2-T/2,W=A/2-S[b]/2-1,M=Math.min(h[x],W),w=Math.min(h[v],W),O=M,G=A-S[b]-w,P=A/2-S[b]/2+D,N=qn(O,P,G),K=!c.arrow&&Rr(n)!=null&&P!==N&&s.reference[b]/2-(P<O?M:w)-S[b]/2<0,L=K?P<O?P-O:P-G:0;return{[d]:g[d]+L,data:{[d]:N,centerOffset:P-N-L,...K&&{alignmentOffset:L}},reset:K}}}),wd=(e,t)=>({...Yb(e),options:[e,t]});var Sd={name:"hide",async fn(e){let{width:t,height:r,x:o,y:n}=e.rects.reference,s=t===0&&r===0&&o===0&&n===0;return{data:{referenceHidden:(await Ya().fn(e)).data?.referenceHidden||s}}}};var es={sideX:"left",sideY:"top"},Cd={name:"adaptiveOrigin",async fn(e){let{x:t,y:r,rects:{floating:o},elements:{floating:n},platform:s,strategy:i,placement:a}=e,c=lt(n),u=c.getComputedStyle(n);if(!(u.transitionDuration!=="0s"&&u.transitionDuration!==""))return{x:t,y:r,data:es};let f=await s.getOffsetParent?.(n),h={width:0,height:0};if(i==="fixed"&&c?.visualViewport)h={width:c.visualViewport.width,height:c.visualViewport.height};else if(f===c){let x=St(n);h={width:x.documentElement.clientWidth,height:x.documentElement.clientHeight}}else await s.isElement?.(f)&&(h=await s.getDimensions(f));let g=Tt(a),d=t,b=r;g==="left"&&(d=h.width-(t+o.width)),g==="top"&&(b=h.height-(r+o.height));let S=g==="left"?"right":es.sideX,R=g==="top"?"bottom":es.sideY;return{x:d,y:b,data:{sideX:S,sideY:R}}}};function Td(e,t,r){let o=e==="inline-start"||e==="inline-end";return{top:"top",right:o?r?"inline-start":"inline-end":"right",bottom:"bottom",left:o?r?"inline-end":"inline-start":"left"}[t]}function Rd(e,t,r){let{rects:o,placement:n}=e;return{side:Td(t,Tt(n),r),align:Rr(n)||"center",anchor:{width:o.reference.width,height:o.reference.height},positioner:{width:o.floating.width,height:o.floating.height}}}function _d(e){let{anchor:t,positionMethod:r="absolute",side:o="bottom",sideOffset:n=0,align:s="center",alignOffset:i=0,collisionBoundary:a,collisionPadding:c=5,sticky:u=!1,arrowPadding:l=5,disableAnchorTracking:f=!1,inline:h,keepMounted:g=!1,floatingRootContext:d,mounted:b,collisionAvoidance:S,shiftCrossAxis:R=!1,nodeId:x,adaptiveOrigin:v,lazyFlip:C=!1,externalTree:k}=e,[T,_]=nr.useState(null);!b&&T!==null&&_(null);let A=S.side||"flip",D=S.align||"flip",W=S.fallbackAxisSide||"end",M=typeof t=="function"?t:void 0,w=Te(M),O=M?w:t,G=Gt(t),P=Gt(b),K=Ko()==="rtl",L=T||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":K?"left":"right","inline-start":K?"right":"left"}[o],E=s==="center"?L:`${L}-${s}`,I=c,$=1,B=o==="bottom"?$:0,U=o==="top"?$:0,oe=o==="right"?$:0,ge=o==="left"?$:0;typeof I=="number"?I={top:I+B,right:I+ge,bottom:I+U,left:I+oe}:I&&(I={top:(I.top||0)+B,right:(I.right||0)+ge,bottom:(I.bottom||0)+U,left:(I.left||0)+oe});let ie={boundary:a==="clipping-ancestors"?"clippingAncestors":a,padding:I},ve=nr.useRef(null),ke=Gt(n),J=Gt(i),Ae=typeof n!="function"?n:0,Ne=typeof i!="function"?i:0,Ee=[];h&&Ee.push(h),Ee.push(ja(Le=>{let Ze=Rd(Le,o,K),F=typeof ke.current=="function"?ke.current(Ze):ke.current,Q=typeof J.current=="function"?J.current(Ze):J.current;return{mainAxis:F,crossAxis:Q,alignmentAxis:Q}},[Ae,Ne,K,o]));let je=D==="none"&&A!=="shift",Y=!je&&(u||R||A==="shift"),z=A==="none"?null:Wa({...ie,padding:{top:I.top+$,right:I.right+$,bottom:I.bottom+$,left:I.left+$},mainAxis:!R&&A==="flip",crossAxis:D==="flip"?"alignment":!1,fallbackAxisSideDirection:W}),X=je?null:Ha(Le=>{let Ze=St(Le.elements.floating).documentElement;return{...ie,rootBoundary:R?{x:0,y:0,width:Ze.clientWidth,height:Ze.clientHeight}:void 0,mainAxis:D!=="none",crossAxis:Y,limiter:u||R?void 0:Ua(F=>{if(!ve.current)return{};let{width:Q,height:y}=ve.current.getBoundingClientRect(),re=Wt(Tt(F.placement)),Be=re==="y"?Q:y,te=re==="y"?I.left+I.right:I.top+I.bottom;return{offset:Be/2+te/2}})}},[ie,u,R,I,D]);A==="shift"||D==="shift"||s==="center"?Ee.push(X,z):Ee.push(z,X),Ee.push(Ga({...ie,apply({elements:{floating:Le},availableWidth:Ze,availableHeight:F,rects:Q}){if(!P.current)return;let y=Le.style;y.setProperty("--available-width",`${Ze}px`),y.setProperty("--available-height",`${F}px`);let re=lt(Le).devicePixelRatio||1,{x:Be,y:te,width:ht,height:ne}=Q.reference,$e=(Math.round((Be+ht)*re)-Math.round(Be*re))/re,V=(Math.round((te+ne)*re)-Math.round(te*re))/re;y.setProperty("--anchor-width",`${$e}px`),y.setProperty("--anchor-height",`${V}px`)}}),wd(Le=>({element:ve.current||St(Le.elements.floating).createElement("div"),padding:l,offsetParent:"floating"}),[l]),{name:"transformOrigin",fn(Le){let{elements:Ze,middlewareData:F,placement:Q,rects:y,y:re}=Le,Be=Tt(Q),te=Wt(Be),ht=ve.current,ne=F.arrow?.x||0,$e=F.arrow?.y||0,V=ht?.clientWidth||0,j=ht?.clientHeight||0,yr=ne+V/2,Ge=$e+j/2,fe=Math.abs(F.shift?.y||0),Hr=y.reference.height/2,er=typeof n=="function"?n(Rd(Le,o,K)):n,ot=fe>er,Ve={top:`${yr}px calc(100% + ${er}px)`,bottom:`${yr}px ${-er}px`,left:`calc(100% + ${er}px) ${Ge}px`,right:`${-er}px ${Ge}px`}[Be],ut=`${yr}px ${y.reference.y+Hr-re}px`;return Ze.floating.style.setProperty("--transform-origin",Y&&te==="y"&&ot?ut:Ve),{}}},Sd,v),Ce(()=>{!b&&d&&d.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[b,d]);let H=nr.useMemo(()=>({elementResize:!f&&typeof ResizeObserver<"u",layoutShift:!f&&typeof IntersectionObserver<"u"}),[f]),{refs:q,elements:pe,x:de,y:me,middlewareData:Oe,update:le,placement:ae,context:ee,isPositioned:se,floatingStyles:We}=el({rootContext:d,open:g?b:void 0,placement:E,middleware:Ee,strategy:r,whileElementsMounted:g?void 0:(...Le)=>Jn(...Le,H),nodeId:x,externalTree:k}),{sideX:ze,sideY:et}=Oe.adaptiveOrigin||es,qe=se?r:"fixed",tt=nr.useMemo(()=>{let Le=v?{position:qe,[ze]:de,[et]:me}:{position:qe,...We};return se||(Le.opacity=0),Le},[v,qe,ze,de,et,me,We,se]),He=nr.useRef(null);Ce(()=>{if(!b)return;let Le=G.current,Ze=typeof Le=="function"?Le():Le,Q=(Ed(Ze)?Ze.current:Ze)||null||null;Q!==He.current&&(q.setPositionReference(Q),He.current=Q)},[b,q,O,G]),nr.useEffect(()=>{if(!b)return;let Le=G.current;typeof Le!="function"&&Ed(Le)&&Le.current!==He.current&&(q.setPositionReference(Le.current),He.current=Le.current)},[b,q,O,G]),nr.useEffect(()=>{if(g&&b&&pe.domReference&&pe.floating)return Jn(pe.domReference,pe.floating,le,H)},[g,b,pe,le,H]);let ye=Tt(ae),hr=Td(o,ye,K),gr=Rr(ae)||"center",rt=!!Oe.hide?.referenceHidden;Ce(()=>{C&&b&&se&&_(ye)},[C,b,se,ye]);let jr=nr.useMemo(()=>({position:"absolute",top:Oe.arrow?.y,left:Oe.arrow?.x}),[Oe.arrow]),Rt=Oe.arrow?.centerOffset!==0;return nr.useMemo(()=>({positionerStyles:tt,arrowStyles:jr,arrowRef:ve,arrowUncentered:Rt,side:hr,align:gr,physicalSide:ye,anchorHidden:rt,refs:q,context:ee,isPositioned:se,update:le}),[tt,jr,ve,Rt,hr,gr,ye,rt,q,ee,se,le])}function Ed(e){return e!=null&&"current"in e}function ei(e){return e==="starting"?of:pt}function Od(e,t,{styles:r,transitionStatus:o,props:n,refs:s,hidden:i,inert:a=!1}){let c={...r};return a&&(c.pointerEvents="none"),Ut("div",e,{state:t,ref:s,props:[{role:"presentation",hidden:i,style:c},ei(o),n],stateAttributesMapping:pn})}var Ft=m(be(),1),Ld=m(lo(),1);var Pd=m(be(),1);function Fd(e){let[t,r]=Pd.useState({current:e,previous:null});return e!==t.current&&r({current:e,previous:t.current}),t.previous}var ko=m(be(),1);function cl(e){let t=Ot(e),r=parseFloat(t.width)||0,o=parseFloat(t.height)||0,n=wt(e),s=n?e.offsetWidth:r,i=n?e.offsetHeight:o;return(ao(r)!==s||ao(o)!==i)&&(r=s,o=i),{width:r,height:o}}var qb=()=>!0;function Ad(e){let{popupElement:t,positionerElement:r,content:o,mounted:n,enabled:s=qb,onMeasureLayout:i,onMeasureLayoutComplete:a,side:c,direction:u}=e,l=on(t,!0,!1),f=$o(),h=ko.useRef(null),g=ko.useRef(null),d=ko.useRef(!0),b=ko.useRef(Gr),S=Te(i),R=Te(a),x=ko.useMemo(()=>{let v=c==="top",C=c==="left";return u==="rtl"?(v=v||c==="inline-end",C=C||c==="inline-end"):(v=v||c==="inline-start",C=C||c==="inline-start"),v?{position:"absolute",[c==="top"?"bottom":"top"]:"0",[C?"right":"left"]:"0"}:pt},[c,u]);Ce(()=>{if(!n||!s()||typeof ResizeObserver!="function"){b.current=Gr,d.current=!0,h.current=null,g.current=null;return}if(!t||!r)return;b.current=kd(t,x);let v=new ResizeObserver(O=>{let G=O[0];G&&(g.current={width:Math.ceil(G.borderBoxSize[0].inlineSize),height:Math.ceil(G.borderBoxSize[0].blockSize)})});v.observe(t),ti(t,"auto");let C=ri(t,"position","static"),k=ri(t,"transform","none"),T=ri(t,"scale","1"),_=kd(r,{"--available-width":"max-content","--available-height":"max-content"});function A(){C(),k(),_()}function D(){A(),T()}if(S?.(),d.current||h.current===null){ts(r,"max-content");let O=cl(t);return h.current=O,ts(r,O),D(),R?.(null,O),d.current=!1,()=>{v.disconnect(),b.current(),b.current=Gr}}ti(t,"auto"),ts(r,"max-content");let W=h.current??g.current,M=cl(t);if(h.current=M,!W)return ts(r,M),D(),R?.(null,M),()=>{v.disconnect(),f.cancel(),b.current(),b.current=Gr};ti(t,W),D(),R?.(W,M),ts(r,M);let w=new AbortController;return f.request(()=>{ti(t,M),l(()=>{t.style.setProperty("--popup-width","auto"),t.style.setProperty("--popup-height","auto")},w.signal)}),()=>{v.disconnect(),w.abort(),f.cancel(),b.current(),b.current=Gr}},[o,t,r,l,f,s,n,S,R,x])}function ri(e,t,r){let o=e.style.getPropertyValue(t);return e.style.setProperty(t,r),()=>{e.style.setProperty(t,o)}}function kd(e,t){let r=[];for(let[o,n]of Object.entries(t))r.push(ri(e,o,n));return r.length?()=>{r.forEach(o=>o())}:Gr}function ti(e,t){let r=t==="auto"?"auto":`${t.width}px`,o=t==="auto"?"auto":`${t.height}px`;e.style.setProperty("--popup-width",r),e.style.setProperty("--popup-height",o)}function ts(e,t){let r=t==="max-content"?"max-content":`${t.width}px`,o=t==="max-content"?"max-content":`${t.height}px`;e.style.setProperty("--positioner-width",r),e.style.setProperty("--positioner-height",o)}var mn=m(Z(),1);function Nd(e){let{store:t,side:r,cssVars:o,children:n}=e,s=Ko(),i=t.useState("activeTriggerElement"),a=t.useState("activeTriggerId"),c=t.useState("open"),u=t.useState("payload"),l=t.useState("mounted"),f=t.useState("popupElement"),h=t.useState("positionerElement"),g=Fd(c?i:null),d=Kb(a,u),b=Ft.useRef(null),[S,R]=Ft.useState(null),[x,v]=Ft.useState(null),C=Ft.useRef(null),k=Ft.useRef(null),T=on(C,!0,!1),_=$o(),[A,D]=Ft.useState(null),[W,M]=Ft.useState(!1);Ce(()=>(t.set("hasViewport",!0),()=>{t.set("hasViewport",!1)}),[t]);let w=Te(()=>{C.current?.style.setProperty("animation","none"),C.current?.style.setProperty("transition","none"),k.current?.style.setProperty("display","none")}),O=Te(L=>{C.current?.style.removeProperty("animation"),C.current?.style.removeProperty("transition"),k.current?.style.removeProperty("display"),L&&D(L)}),G=Ft.useRef(null);Ce(()=>{if(i&&g&&i!==g&&G.current!==i&&b.current){R(b.current),M(!0);let L=Xb(g,i);v(L),_.request(()=>{Ld.flushSync(()=>{M(!1)}),T(()=>{R(null),D(null),b.current=null})}),G.current=i}},[i,g,S,T,_]),Ce(()=>{let L=C.current;if(!L)return;let E=St(L).createElement("div");for(let I of Array.from(L.childNodes))E.appendChild(I.cloneNode(!0));b.current=E});let P=S!=null,N;P?N=(0,mn.jsxs)(Ft.Fragment,{children:[(0,mn.jsx)("div",{"data-previous":!0,inert:xd(!0),ref:k,style:{...A?{[o.popupWidth]:`${A.width}px`,[o.popupHeight]:`${A.height}px`}:null,position:"absolute"},"data-ending-style":W?void 0:""},"previous"),(0,mn.jsx)("div",{"data-current":!0,ref:C,"data-starting-style":W?"":void 0,children:n},d)]}):N=(0,mn.jsx)("div",{"data-current":!0,ref:C,children:n},d),Ce(()=>{let L=k.current;!L||!S||L.replaceChildren(...Array.from(S.childNodes))},[S]),Ad({popupElement:f,positionerElement:h,mounted:l,content:u,onMeasureLayout:w,onMeasureLayoutComplete:O,side:r,direction:s});let K={activationDirection:Zb(x),transitioning:P};return{children:N,state:K}}function Zb(e){if(e)return`${Id(e.horizontal,5,"right","left")} ${Id(e.vertical,5,"down","up")}`}function Id(e,t,r,o){return e>t?r:e<-t?o:""}function Xb(e,t){let r=e.getBoundingClientRect(),o=t.getBoundingClientRect(),n={x:r.left+r.width/2,y:r.top+r.height/2},s={x:o.left+o.width/2,y:o.top+o.height/2};return{horizontal:s.x-n.x,vertical:s.y-n.y}}function Kb(e,t){let[r,o]=Ft.useState(0),n=Ft.useRef(e),s=Ft.useRef(t),i=Ft.useRef(!1);return Ce(()=>{let a=n.current,c=s.current,u=e!==a,l=t!==c;u?(o(f=>f+1),i.current=!l):i.current&&l&&(o(f=>f+1),i.current=!1),n.current=e,s.current=t},[e,t]),`${e??"current"}-${r}`}var oi=m(be(),1),Dd=m(lo(),1);var Md=m(Z(),1),Vd=oi.forwardRef(function(t,r){let{children:o,container:n,className:s,render:i,style:a,...c}=t,{portalNode:u,portalSubtree:l}=La({container:n,ref:r,componentProps:t,elementProps:c});return!l&&!u?null:(0,Md.jsxs)(oi.Fragment,{children:[l,u&&Dd.createPortal(o,u)]})});var Xt={};ga(Xt,{Arrow:()=>tp,Handle:()=>rs,Popup:()=>$d,Portal:()=>Xd,Positioner:()=>Jd,Provider:()=>rp,Root:()=>jd,Trigger:()=>Yd,Viewport:()=>sp,createHandle:()=>ip});var kr=m(be(),1);var ni=m(be(),1),ul=ni.createContext(void 0);function lr(e){let t=ni.useContext(ul);if(t===void 0&&!e)throw new Error(Ht(72));return t}var Bd=m(be(),1),zd=m(lo(),1);var Jb={...hd,disabled:Me(e=>e.disabled),instantType:Me(e=>e.instantType),isInstantPhase:Me(e=>e.isInstantPhase),trackCursorAxis:Me(e=>e.trackCursorAxis),disableHoverablePopup:Me(e=>e.disableHoverablePopup),lastOpenChangeReason:Me(e=>e.openChangeReason),closeOnClick:Me(e=>e.closeOnClick),closeDelay:Me(e=>e.closeDelay),hasViewport:Me(e=>e.hasViewport)},hn=class e extends cn{constructor(t,r,o=!1){let n=new uo,s={...Qb(),...t};s.floatingRootContext=pd(n,r,o),super(s,{popupRef:Bd.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:n},Jb)}setOpen=(t,r)=>{let o=r.reason,n=o===Fe.triggerHover,s=t&&o===Fe.triggerFocus,i=!t&&(o===Fe.triggerPress||o===Fe.escapeKey);if(r.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},this.context.onOpenChange?.(t,r),r.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(t,r);let a=()=>{let c={open:t,openChangeReason:o};s?c.instantType="focus":i?c.instantType="dismiss":o===Fe.triggerHover&&(c.instantType=void 0),sd(c,t,r.trigger),this.update(c)};n?zd.flushSync(a):a()};cancelPendingOpen(t){this.state.floatingRootContext.dispatchOpenChange(!1,Ue(Fe.triggerPress,t))}static useStore(t,r){return nd(t,(n,s)=>new e(r,n,s)).store}};function Qb(){return{...dd(),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,hasViewport:!1}}var si=m(Z(),1),jd=Ja(function(t){let{disabled:r=!1,defaultOpen:o=!1,open:n,disableHoverablePopup:s=!1,trackCursorAxis:i="none",actionsRef:a,onOpenChange:c,onOpenChangeComplete:u,handle:l,triggerId:f,defaultTriggerId:h=null,children:g}=t,d=hn.useStore(l?.store,{open:o,openProp:n,activeTriggerId:h,triggerIdProp:f});$u(()=>{n===void 0&&d.state.open===!1&&o===!0&&d.update({open:!0,activeTriggerId:h})}),d.useControlledProp("openProp",n),d.useControlledProp("triggerIdProp",f),d.useContextCallback("onOpenChange",c),d.useContextCallback("onOpenChangeComplete",u);let b=d.useState("open"),S=!r&&b,R=d.useState("activeTriggerId"),x=d.useState("mounted"),v=d.useState("payload");d.useSyncedValues({trackCursorAxis:i,disableHoverablePopup:s}),d.useSyncedValue("disabled",r),ad(d);let{forceUnmount:C,transitionStatus:k}=ld(S,d),T=d.useState("isInstantPhase"),_=d.useState("instantType"),A=d.useState("lastOpenChangeReason"),D=kr.useRef(null);Ce(()=>{b&&r&&d.setOpen(!1,Ue(Fe.disabled))},[b,r,d]),Ce(()=>{k==="ending"&&A===Fe.none||k!=="ending"&&T?(_!=="delay"&&(D.current=_),d.set("instantType","delay")):D.current!==null&&(d.set("instantType",D.current),D.current=null)},[k,T,A,_,d]),Ce(()=>{S&&R==null&&d.set("payload",void 0)},[d,R,S]);let W=kr.useCallback(()=>{d.setOpen(!1,Ue(Fe.imperativeAction))},[d]);kr.useImperativeHandle(a,()=>({unmount:C,close:W}),[C,W]);let M=S||x||!r&&i!=="none";return(0,si.jsxs)(ul.Provider,{value:d,children:[M&&(0,si.jsx)($b,{store:d,disabled:r,trackCursorAxis:i}),typeof g=="function"?g({payload:v}):g]})});function $b({store:e,disabled:t,trackCursorAxis:r}){let o=e.useState("floatingRootContext"),n=Da(o,{enabled:!t,referencePress:()=>e.select("closeOnClick")}),s=Na(o,{enabled:!t&&r!=="none",axis:r==="none"?void 0:r}),i=kr.useMemo(()=>vr(s.reference,n.reference),[s.reference,n.reference]),a=kr.useMemo(()=>vr(s.trigger,n.trigger),[s.trigger,n.trigger]),c=kr.useMemo(()=>vr(od,s.floating,n.floating),[s.floating,n.floating]);return cd(e,{activeTriggerProps:i,inactiveTriggerProps:a,popupProps:c}),null}var ai=m(be(),1);var ii=m(be(),1),fl=ii.createContext(void 0);function Hd(){return ii.useContext(fl)}var Ud=(function(e){return e[e.popupOpen=$n.popupOpen]="popupOpen",e.triggerDisabled="data-trigger-disabled",e})({});var Gd="data-base-ui-tooltip-trigger";function Wd(e){if("composedPath"in e){let r=e.composedPath();for(let o=0;o<r.length;o+=1){let n=r[o];if(xe(n))return n}}let t=e.target;return xe(t)?t:null}function e0(e){let t=e;for(;t;){if(t.hasAttribute(Gd))return t;let r=t.parentElement;if(r){t=r;continue}let o=t.getRootNode();t="host"in o&&xe(o.host)?o.host:null}return null}var Yd=Qf(function(t,r){let{render:o,className:n,style:s,handle:i,payload:a,disabled:c,delay:u,closeOnClick:l=!0,closeDelay:f,id:h,...g}=t,d=lr(!0),b=i?.store??d;if(!b)throw new Error(Ht(82));let S=Tu(h),R=b.useState("isTriggerActive",S),x=b.useState("isOpenedByTrigger",S),v=b.useState("floatingRootContext"),C=ai.useRef(null),k=u??600,T=f??0,{registerTrigger:_,isMountedByThisTrigger:A}=id(S,C,b,{payload:a,closeOnClick:l,closeDelay:T}),D=Hd(),{delayRef:W,isInstantPhase:M,hasProvider:w}=Ia(v,{open:x}),O=dn(v);b.useSyncedValue("isInstantPhase",M);let G=b.useState("disabled"),P=c??G,N=Gt(P),K=b.useState("trackCursorAxis"),L=b.useState("disableHoverablePopup"),E=ai.useRef(!1),I=Er(),$=ai.useRef(void 0);function B(){let Ee=D?.delay,je=typeof W.current=="object"?W.current.open:void 0,Y=k;return w&&(je!==0?Y=u??Ee??k:Y=0),Y}function U(Ee){let je=C.current;if(!je||!Ee)return!1;let Y=e0(Ee);return Y!==null&&Y!==je&&Xe(je,Y)}function oe(Ee){let je=U(Ee);return E.current=je,je&&(O.openChangeTimeout.clear(),O.restTimeout.clear(),O.restTimeoutPending=!1,I.clear()),je}let ge=il(v,{enabled:!P,mouseOnly:!0,move:!1,handleClose:!L&&K!=="both"?al():null,restMs:B,delay(){let Ee=typeof W.current=="object"?W.current.close:void 0,je=T;return f==null&&w&&(je=Ee),{close:je}},triggerElementRef:C,isActiveTrigger:R,isClosing:()=>b.select("transitionStatus")==="ending",shouldOpen(){return!E.current}}),ie=rl(v,{enabled:!P}).reference,ve=Ee=>{let je=E.current,Y=Wd(Ee),z=oe(Y),X=C.current,H=X&&Y&&Xe(X,Y);if(z&&b.select("open")&&b.select("lastOpenChangeReason")===Fe.triggerHover){b.setOpen(!1,Ue(Fe.triggerHover,Ee));return}if(je&&!z&&H&&!N.current&&!b.select("open")&&X&&qr($.current)){let q=()=>{!E.current&&!N.current&&!b.select("open")&&b.setOpen(!0,Ue(Fe.triggerHover,Ee,X))},pe=B();pe===0?(I.clear(),q()):I.start(pe,q)}},ke=b.useState("triggerProps",A);return Ut("button",t,{state:{open:x},ref:[r,_,C],props:[ge,ie,A||K!=="none"?ke:void 0,{onMouseOver(Ee){ve(Ee.nativeEvent)},onFocus(Ee){U(Wd(Ee.nativeEvent))&&Ee.preventBaseUIHandler()},onMouseLeave(){E.current=!1,I.clear(),$.current=void 0},onPointerEnter(Ee){$.current=Ee.pointerType},onPointerDown(Ee){$.current=Ee.pointerType,b.set("closeOnClick",l),l&&!b.select("open")&&b.cancelPendingOpen(Ee.nativeEvent)},onClick(Ee){l&&!b.select("open")&&b.cancelPendingOpen(Ee.nativeEvent)},id:S,[Ud.triggerDisabled]:P?"":void 0,[Gd]:P?void 0:""},g],stateAttributesMapping:bd})});var Zd=m(be(),1);var li=m(be(),1),dl=li.createContext(void 0);function qd(){let e=li.useContext(dl);if(e===void 0)throw new Error(Ht(70));return e}var pl=m(Z(),1),Xd=Zd.forwardRef(function(t,r){let{keepMounted:o=!1,...n}=t;return lr().useState("mounted")||o?(0,pl.jsx)(dl.Provider,{value:o,children:(0,pl.jsx)(Vd,{ref:r,...n})}):null});var ui=m(be(),1);var ci=m(be(),1),ml=ci.createContext(void 0);function gn(){let e=ci.useContext(ml);if(e===void 0)throw new Error(Ht(71));return e}var Kd=m(Z(),1),Jd=ui.forwardRef(function(t,r){let{render:o,className:n,anchor:s,positionMethod:i="absolute",side:a="top",align:c="center",sideOffset:u=0,alignOffset:l=0,collisionBoundary:f="clipping-ancestors",collisionPadding:h=5,arrowPadding:g=5,sticky:d=!1,disableAnchorTracking:b=!1,collisionAvoidance:S=nf,style:R,...x}=t,v=lr(),C=qd(),k=v.useState("open"),T=v.useState("mounted"),_=v.useState("trackCursorAxis"),A=v.useState("disableHoverablePopup"),D=v.useState("floatingRootContext"),W=v.useState("instantType"),M=v.useState("transitionStatus"),w=v.useState("hasViewport"),O=_d({anchor:s,positionMethod:i,floatingRootContext:D,mounted:T,side:a,sideOffset:u,align:c,alignOffset:l,collisionBoundary:f,collisionPadding:h,sticky:d,arrowPadding:g,disableAnchorTracking:b,keepMounted:C,collisionAvoidance:S,adaptiveOrigin:w?Cd:void 0}),G=ui.useMemo(()=>({open:k,side:O.side,align:O.align,anchorHidden:O.anchorHidden,instant:_!=="none"?"tracking-cursor":W}),[k,O.side,O.align,O.anchorHidden,_,W]),P=Od(t,G,{styles:O.positionerStyles,transitionStatus:M,props:x,refs:[r,v.useStateSetter("positionerElement")],hidden:!T,inert:!k||_==="both"||A});return(0,Kd.jsx)(ml.Provider,{value:O,children:P})});var Qd=m(be(),1);var t0={...pn,...Pu},$d=Qd.forwardRef(function(t,r){let{render:o,className:n,style:s,...i}=t,a=lr(),{side:c,align:u}=gn(),l=a.useState("open"),f=a.useState("instantType"),h=a.useState("transitionStatus"),g=a.useState("popupProps"),d=a.useState("floatingRootContext"),b=a.useState("disabled"),S=a.useState("closeDelay");zs({open:l,ref:a.context.popupRef,onComplete(){l&&a.context.onOpenChangeComplete?.(!0)}}),sl(d,{enabled:!b,closeDelay:S});let R=a.useStateSetter("popupElement");return Ut("div",t,{state:{open:l,side:c,align:u,instant:f,transitionStatus:h},ref:[r,a.context.popupRef,R],props:[g,ei(h),i],stateAttributesMapping:t0})});var ep=m(be(),1);var tp=ep.forwardRef(function(t,r){let{render:o,className:n,style:s,...i}=t,a=lr(),{arrowRef:c,side:u,align:l,arrowUncentered:f,arrowStyles:h}=gn(),g=a.useState("open"),d=a.useState("instantType");return Ut("div",t,{state:{open:g,side:u,align:l,uncentered:f,instant:d},ref:[r,c],props:[{style:h,"aria-hidden":!0},i],stateAttributesMapping:pn})});var hl=m(be(),1);var gl=m(Z(),1),rp=function(t){let{delay:r,closeDelay:o,timeout:n=400}=t,s=hl.useMemo(()=>({delay:r,closeDelay:o}),[r,o]),i=hl.useMemo(()=>({open:r,close:o}),[r,o]);return(0,gl.jsx)(fl.Provider,{value:s,children:(0,gl.jsx)(Aa,{delay:i,timeoutMs:n,children:t.children})})};var np=m(be(),1);var op=(function(e){return e.popupWidth="--popup-width",e.popupHeight="--popup-height",e})({});var r0={activationDirection:e=>e?{"data-activation-direction":e}:null},sp=np.forwardRef(function(t,r){let{render:o,className:n,style:s,children:i,...a}=t,c=lr(),u=gn(),l=c.useState("instantType"),{children:f,state:h}=Nd({store:c,side:u.side,cssVars:op,children:i}),g={activationDirection:h.activationDirection,transitioning:h.transitioning,instant:l};return Ut("div",t,{state:g,ref:r,props:[a,{children:f}],stateAttributesMapping:r0})});var rs=class{constructor(){this.store=new hn}open(t){let r=t?this.store.context.triggerElements.getById(t):void 0;if(t&&!r)throw new Error(Ht(81,t));this.store.setOpen(!0,Ue(Fe.imperativeAction,void 0,r))}close(){this.store.setOpen(!1,Ue(Fe.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}};function ip(){return new rs}function fi(e){return Ut(e.defaultTagName??"div",e,e)}var cp=m(Pe(),1),yl="data-wp-hash";function vl(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&n0(document)),e.__wpStyleRuntime}function o0(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${yl}]`))if(r.getAttribute(yl)===t)return!0;return!1}function up(e,t,r){if(!e.head)return;let o=vl(),n=o.injectedStyles.get(e);if(n||(n=new Set,o.injectedStyles.set(e,n)),n.has(t))return;if(o0(e,t)){n.add(t);return}let s=e.createElement("style");s.setAttribute(yl,t),s.appendChild(e.createTextNode(r)),e.head.appendChild(s),n.add(t)}function n0(e){let t=vl();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)up(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function fp(e,t){let r=vl();r.styles.set(e,t);for(let o of r.documents.keys())up(o,e,t)}typeof process>"u",fp("0c5702ddca",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-medium,499);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-medium,499);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-regular,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-regular,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');var ap={text:"_83ed8a8da5dd50ea__text","heading-2xl":"_14437cfb77831647__heading-2xl","heading-xl":"_3c78b7fa9b4072dd__heading-xl","heading-lg":"aa58f227716bcde2__heading-lg","heading-md":"fc4da56d8dfe52c4__heading-md","heading-sm":"a9b78c7c82e8dff7__heading-sm","body-xl":"_305ff559e52180d5__body-xl","body-lg":"ca1aa3fc2029e958__body-lg","body-md":"_131101940be12424__body-md","body-sm":"_0e8d87a42c1f75fa__body-sm"};typeof process>"u",fp("d5c1b736fd","._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-fg-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-fg-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-fg-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-medium,499));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}");var lp={button:"_6defc79820e382c6__button",input:"d2cff2e5dea83bd1__input",textarea:"_547d86373d02e108__textarea",div:"_8c15fd0ed9f28ba4__div",p:"_43cec3e1eec1066d__p",heading:"e97669c6d9a38497__heading",a:"_2c0831b0499dbd6e__a"},di=(0,cp.forwardRef)(function({variant:t="body-md",render:r,className:o,...n},s){return fi({render:r,defaultTagName:"span",ref:s,props:vr(n,{className:dt(ap.text,lp.heading,lp.p,ap[t],o)})})});var pi=m(Pe(),1),os=(0,pi.forwardRef)(({icon:e,size:t=24,...r},o)=>(0,pi.cloneElement)(e,{width:t,height:t,...r,ref:o}));var mi=m(yn(),1),bl=m(Z(),1),Ao=(0,bl.jsx)(mi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,bl.jsx)(mi.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var hi=m(yn(),1),xl=m(Z(),1),Io=(0,xl.jsx)(hi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,xl.jsx)(hi.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var gi=m(yn(),1),wl=m(Z(),1),Sl=(0,wl.jsx)(gi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,wl.jsx)(gi.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var yi=m(yn(),1),Cl=m(Z(),1),vi=(0,Cl.jsx)(yi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Cl.jsx)(yi.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var bi=m(yn(),1),Rl=m(Z(),1),xi=(0,Rl.jsx)(bi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Rl.jsx)(bi.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var gp=m(Pe(),1);function El(e,t,r){return(0,gp.cloneElement)(e??t,{children:r})}var vp=m(wi(),1),{lock:Mk,unlock:bp}=(0,vp.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/ui");var xp=m(Pe(),1),Tl="data-wp-hash";function _l(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&i0(document)),e.__wpStyleRuntime}function s0(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Tl}]`))if(r.getAttribute(Tl)===t)return!0;return!1}function wp(e,t,r){if(!e.head)return;let o=_l(),n=o.injectedStyles.get(e);if(n||(n=new Set,o.injectedStyles.set(e,n)),n.has(t))return;if(s0(e,t)){n.add(t);return}let s=e.createElement("style");s.setAttribute(Tl,t),s.appendChild(e.createTextNode(r)),e.head.appendChild(s),n.add(t)}function i0(e){let t=_l();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)wp(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function a0(e,t){let r=_l();r.styles.set(e,t);for(let o of r.documents.keys())wp(o,e,t)}typeof process>"u",a0("32aba35fe1","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}");var l0={stack:"_19ce0419607e1896__stack"},c0={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},vn=(0,xp.forwardRef)(function({direction:t,gap:r,align:o,justify:n,wrap:s,render:i,...a},c){let u={gap:r&&c0[r],alignItems:o,justifyContent:n,flexDirection:t,flexWrap:s};return fi({render:i,ref:c,props:vr(a,{style:u,className:l0.stack})})});var bn={};ga(bn,{Popup:()=>Np,Portal:()=>Si,Positioner:()=>Ci,Provider:()=>Hp,Root:()=>zp,Trigger:()=>Vp});var Ap=m(Pe(),1),Ip=m(hp(),1);var Tp=m(Pe(),1);var Ol="data-wp-hash";function Pl(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&f0(document)),e.__wpStyleRuntime}function u0(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ol}]`))if(r.getAttribute(Ol)===t)return!0;return!1}function Cp(e,t,r){if(!e.head)return;let o=Pl(),n=o.injectedStyles.get(e);if(n||(n=new Set,o.injectedStyles.set(e,n)),n.has(t))return;if(u0(e,t)){n.add(t);return}let s=e.createElement("style");s.setAttribute(Ol,t),s.appendChild(e.createTextNode(r)),e.head.appendChild(s),n.add(t)}function f0(e){let t=Pl();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Cp(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function d0(e,t){let r=Pl();r.styles.set(e,t);for(let o of r.documents.keys())Cp(o,e,t)}typeof process>"u",d0("be37f31c1e","._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}");var Sp={slot:"_11fc52b637ff8a7e__slot"},Rp="data-wp-compat-overlay-slot";function p0(){return typeof document>"u"?null:document}function m0(){let e;try{e=window.top?.wp}catch{}let t=e??window.wp;return typeof t?.components=="object"&&t.components!==null}var Zr=null;function h0(e){let t=e.createElement("div");return t.setAttribute(Rp,""),Sp.slot&&t.classList.add(Sp.slot),e.body.appendChild(t),t}function Ep(){if(typeof window>"u"||!m0()&&window.__wpUiCompatOverlaySlotEnabled!==!0)return;let e=p0();if(!e||!e.body)return;if(Zr&&Zr.ownerDocument===e&&Zr.isConnected)return Zr;let t=e.querySelector(`[${Rp}]`);return t instanceof HTMLDivElement?(Zr=t,t):(Zr?.isConnected&&Zr.remove(),Zr=h0(e),Zr)}var _p=m(Z(),1),Si=(0,Tp.forwardRef)(function({container:t,...r},o){return(0,_p.jsx)(Xt.Portal,{container:t??Ep(),...r,ref:o})});var Op=m(Pe(),1),kp=m(Z(),1),Fl="data-wp-hash";function kl(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&y0(document)),e.__wpStyleRuntime}function g0(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Fl}]`))if(r.getAttribute(Fl)===t)return!0;return!1}function Pp(e,t,r){if(!e.head)return;let o=kl(),n=o.injectedStyles.get(e);if(n||(n=new Set,o.injectedStyles.set(e,n)),n.has(t))return;if(g0(e,t)){n.add(t);return}let s=e.createElement("style");s.setAttribute(Fl,t),s.appendChild(e.createTextNode(r)),e.head.appendChild(s),n.add(t)}function y0(e){let t=kl();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Pp(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function Fp(e,t){let r=kl();r.styles.set(e,t);for(let o of r.documents.keys())Pp(o,e,t)}typeof process>"u",Fp("10f3806643","@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");var v0={"box-sizing":"_336cd3e4e743482f__box-sizing"};typeof process>"u",Fp("4811d023d1",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');var b0={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},Ci=(0,Op.forwardRef)(function({align:t="center",className:r,side:o="top",sideOffset:n=4,...s},i){return(0,kp.jsx)(Xt.Positioner,{ref:i,align:t,side:o,sideOffset:n,...s,className:dt(v0["box-sizing"],b0.positioner,r)})});var ns=m(Z(),1),Al="data-wp-hash";function Il(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&w0(document)),e.__wpStyleRuntime}function x0(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Al}]`))if(r.getAttribute(Al)===t)return!0;return!1}function Lp(e,t,r){if(!e.head)return;let o=Il(),n=o.injectedStyles.get(e);if(n||(n=new Set,o.injectedStyles.set(e,n)),n.has(t))return;if(x0(e,t)){n.add(t);return}let s=e.createElement("style");s.setAttribute(Al,t),s.appendChild(e.createTextNode(r)),e.head.appendChild(s),n.add(t)}function w0(e){let t=Il();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Lp(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function S0(e,t){let r=Il();r.styles.set(e,t);for(let o of r.documents.keys())Lp(o,e,t)}typeof process>"u",S0("4811d023d1",'@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{background-color:var(--wpds-color-bg-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--wpds-elevation-sm,0 1px 2px 0 #0000000d,0 2px 3px 0 #0000000a,0 6px 6px 0 #00000008,0 8px 8px 0 #00000005);color:var(--wpds-color-fg-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');var C0={positioner:"_480b748dd3510e64__positioner",popup:"_50096b232db7709d__popup"},R0=bp(Ip.privateApis).ThemeProvider,E0={background:"#1e1e1e"},Np=(0,Ap.forwardRef)(function({portal:t,positioner:r,children:o,className:n,...s},i){let a=(0,ns.jsx)(R0,{color:E0,children:(0,ns.jsx)(Xt.Popup,{ref:i,className:dt(C0.popup,n),...s,children:o})}),c=El(r,(0,ns.jsx)(Ci,{}),a);return El(t,(0,ns.jsx)(Si,{}),c)});var Dp=m(Pe(),1),Mp=m(Z(),1),Vp=(0,Dp.forwardRef)(function(t,r){return(0,Mp.jsx)(Xt.Trigger,{ref:r,...t})});var Bp=m(Z(),1);function zp(e){return(0,Bp.jsx)(Xt.Root,{...e})}var jp=m(Z(),1);function Hp({...e}){return(0,jp.jsx)(Xt.Provider,{...e})}var Up=m(Pe(),1),Wp=m(Z(),1),Gp=(0,Up.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...n},s)=>(0,Wp.jsx)(o,{ref:s,className:dt("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...n,children:e}));Gp.displayName="NavigableRegion";var Yp=Gp;var Zp=m(ue(),1),{Fill:Xp,Slot:Kp}=(0,Zp.createSlotFill)("SidebarToggle");var cr=m(Z(),1),Ll="data-wp-hash";function Nl(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&_0(document)),e.__wpStyleRuntime}function T0(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ll}]`))if(r.getAttribute(Ll)===t)return!0;return!1}function Jp(e,t,r){if(!e.head)return;let o=Nl(),n=o.injectedStyles.get(e);if(n||(n=new Set,o.injectedStyles.set(e,n)),n.has(t))return;if(T0(e,t)){n.add(t);return}let s=e.createElement("style");s.setAttribute(Ll,t),s.appendChild(e.createTextNode(r)),e.head.appendChild(s),n.add(t)}function _0(e){let t=Nl();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)Jp(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function O0(e,t){let r=Nl();r.styles.set(e,t);for(let o of r.documents.keys())Jp(o,e,t)}typeof process>"u",O0("683dd16f2c","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var No={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function Qp({headingLevel:e=1,breadcrumbs:t,badges:r,visual:o,title:n,subTitle:s,actions:i,showSidebarToggle:a=!0}){let c=`h${e}`;return(0,cr.jsxs)(vn,{direction:"column",className:No.header,children:[(0,cr.jsxs)(vn,{className:No["header-content"],direction:"row",gap:"sm",justify:"space-between",children:[(0,cr.jsxs)(vn,{direction:"row",gap:"sm",align:"center",justify:"start",children:[a&&(0,cr.jsx)(Kp,{bubblesVirtually:!0,className:No["sidebar-toggle-slot"]}),o&&(0,cr.jsx)("div",{className:No["header-visual"],"aria-hidden":"true",children:o}),n&&(0,cr.jsx)(di,{className:No["header-title"],render:(0,cr.jsx)(c,{}),variant:"heading-lg",children:n}),t,r]}),i&&(0,cr.jsx)(vn,{align:"center",className:No["header-actions"],direction:"row",gap:"sm",children:i})]}),s&&(0,cr.jsx)(di,{render:(0,cr.jsx)("p",{}),variant:"body-md",className:No["header-subtitle"],children:s})]})}var ss=m(Z(),1),Ml="data-wp-hash";function Vl(){let e=globalThis;return e.__wpStyleRuntime||(e.__wpStyleRuntime={documents:new Map,styles:new Map,injectedStyles:new WeakMap},typeof document<"u"&&F0(document)),e.__wpStyleRuntime}function P0(e,t){if(!e.head)return!1;for(let r of e.head.querySelectorAll(`style[${Ml}]`))if(r.getAttribute(Ml)===t)return!0;return!1}function $p(e,t,r){if(!e.head)return;let o=Vl(),n=o.injectedStyles.get(e);if(n||(n=new Set,o.injectedStyles.set(e,n)),n.has(t))return;if(P0(e,t)){n.add(t);return}let s=e.createElement("style");s.setAttribute(Ml,t),s.appendChild(e.createTextNode(r)),e.head.appendChild(s),n.add(t)}function F0(e){let t=Vl();t.documents.set(e,(t.documents.get(e)??0)+1);for(let[r,o]of t.styles)$p(e,r,o);return()=>{let r=t.documents.get(e);if(r!==void 0){if(r<=1){t.documents.delete(e);return}t.documents.set(e,r-1)}}}function k0(e,t){let r=Vl();r.styles.set(e,t);for(let o of r.documents.keys())$p(o,e,t)}typeof process>"u",k0("683dd16f2c","._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-bg-surface-neutral,#fcfcfc);color:var(--wpds-color-fg-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-bg-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:calc(var(--wpds-dimension-base, 4px)*8)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8113be94e7caf73c__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:calc(var(--wpds-dimension-base, 4px)*6);width:calc(var(--wpds-dimension-base, 4px)*6);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-fg-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}");var Dl={page:"_956b6df0898efed0__page",header:"_0625b55e82a0d93d__header","header-content":"a43c44d5ae28b2e8__header-content","header-actions":"b7cb5b9daf3a3b25__header-actions","header-title":"_8113be94e7caf73c__header-title","header-visual":"_9a776c7f70996f61__header-visual","sidebar-toggle-slot":"d5e0920cd15d35bc__sidebar-toggle-slot","header-subtitle":"_60fea2f6bf5319cd__header-subtitle",content:"be5e57d029ec4036__content","has-padding":"_128806d0b26e3a50__has-padding"};function em({headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:n,subTitle:s,children:i,className:a,actions:c,ariaLabel:u,hasPadding:l=!1,showSidebarToggle:f=!0}){let h=dt(Dl.page,a);return(0,ss.jsxs)(Yp,{className:h,ariaLabel:u??(typeof n=="string"?n:""),children:[(n||t||r||c||o)&&(0,ss.jsx)(Qp,{headingLevel:e,breadcrumbs:t,badges:r,visual:o,title:n,subTitle:s,actions:c,showSidebarToggle:f}),l?(0,ss.jsx)("div",{className:dt(Dl.content,Dl["has-padding"]),children:i}):i]})}em.SidebarToggleFill=Xp;var Bl=em;var Dn=m(Se()),ay=m(ue()),ly=m(rm()),fa=m(sr()),cy=m(Kt()),uy=m(Pe());var ny=m(ue(),1),sy=m(xn(),1),t2=m(Kt(),1),r2=m(Dt(),1),qc=m(Pe(),1),o2=m(Lo(),1);function wn(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),n=e;for(let s of t){let i=n[s];n=n[s]=Array.isArray(i)?[...i]:{...i}}return n[o]=r,e}var ir=(e,t,r)=>{let o=Array.isArray(t)?t:t.split("."),n=e;return o.forEach(s=>{n=n?.[s]}),n??r};var A0=["appearanceTools","useRootPaddingAwareAlignments","background.backgroundImage","background.backgroundRepeat","background.backgroundSize","background.backgroundPosition","background.gradient","border.color","border.radius","border.radiusSizes","border.style","border.width","shadow.presets","shadow.defaultPresets","color.background","color.button","color.caption","color.custom","color.customDuotone","color.customGradient","color.defaultDuotone","color.defaultGradients","color.defaultPalette","color.duotone","color.gradients","color.heading","color.link","color.palette","color.text","custom","dimensions.aspectRatio","dimensions.height","dimensions.minHeight","dimensions.minWidth","dimensions.width","dimensions.dimensionSizes","layout.contentSize","layout.definitions","layout.wideSize","lightbox.enabled","lightbox.allowEditing","position.fixed","position.sticky","spacing.customSpacingSize","spacing.defaultSpacingSizes","spacing.spacingSizes","spacing.spacingScale","spacing.blockGap","spacing.margin","spacing.padding","spacing.units","typography.fluid","typography.customFontSize","typography.defaultFontSizes","typography.dropCap","typography.fontFamilies","typography.fontSizes","typography.fontStyle","typography.fontWeight","typography.letterSpacing","typography.lineHeight","typography.textAlign","typography.textColumns","typography.textDecoration","typography.textIndent","typography.textTransform","typography.writingMode"];function zl(e,t,r){let o=r?".blocks."+r:"",n=t?"."+t:"",s=`settings${o}${n}`,i=`settings${n}`;if(t)return ir(e,s)??ir(e,i);let a={};return A0.forEach(c=>{let u=ir(e,`settings${o}.${c}`)??ir(e,`settings.${c}`);u!==void 0&&(a=wn(a,c.split("."),u))}),a}function jl(e,t,r,o){let n=o?".blocks."+o:"",s=t?"."+t:"",i=`settings${n}${s}`;return wn(e,i.split("."),r)}var z0=m(lm(),1);var I0="1600px",L0="320px",N0=1,D0=.25,M0=.75,V0="14px";function cm({minimumFontSize:e,maximumFontSize:t,fontSize:r,minimumViewportWidth:o=L0,maximumViewportWidth:n=I0,scaleFactor:s=N0,minimumFontSizeLimit:i}){if(i=Ar(i)?i:V0,r){let v=Ar(r);if(!v?.unit||!v?.value)return null;let C=Ar(i,{coerceTo:v.unit});if(C?.value&&!e&&!t&&v?.value<=C?.value)return null;if(t||(t=`${v.value}${v.unit}`),!e){let k=v.unit==="px"?v.value:v.value*16,T=Math.min(Math.max(1-.075*Math.log2(k),D0),M0),_=is(v.value*T,3);C?.value&&_<C?.value?e=`${C.value}${C.unit}`:e=`${_}${v.unit}`}}let a=Ar(e),c=a?.unit||"rem",u=Ar(t,{coerceTo:c});if(!a||!u)return null;let l=Ar(e,{coerceTo:"rem"}),f=Ar(n,{coerceTo:c}),h=Ar(o,{coerceTo:c});if(!f||!h||!l)return null;let g=f.value-h.value;if(!g)return null;let d=is(h.value/100,3),b=is(d,3)+c,S=100*((u.value-a.value)/g),R=is((S||1)*s,3),x=`${l.value}${l.unit} + ((1vw - ${b}) * ${R})`;return`clamp(${e}, ${x}, ${t})`}function Ar(e,t={}){if(typeof e!="string"&&typeof e!="number")return null;isFinite(e)&&(e=`${e}px`);let{coerceTo:r,rootSizeValue:o,acceptableUnits:n}={coerceTo:"",rootSizeValue:16,acceptableUnits:["rem","px","em"],...t},s=n?.join("|"),i=new RegExp(`^(\\d*\\.?\\d+)(${s}){1,1}$`),a=e.toString().match(i);if(!a||a.length<3)return null;let[,c,u]=a,l=parseFloat(c);return r==="px"&&(u==="em"||u==="rem")&&(l=l*o,u=r),u==="px"&&(r==="em"||r==="rem")&&(l=l/o,u=r),(r==="em"||r==="rem")&&(u==="em"||u==="rem")&&(u=r),u?{value:is(l,3),unit:u}:null}function is(e,t=3){let r=Math.pow(10,t);return Math.round(e*r)/r}function Hl(e){let t=e?.fluid;return t===!0||t&&typeof t=="object"&&Object.keys(t).length>0}function B0(e){let t=e?.typography??{},r=e?.layout,o=Ar(r?.wideSize)?r?.wideSize:null;return Hl(t)&&o?{fluid:{maxViewportWidth:o,...typeof t.fluid=="object"?t.fluid:{}}}:{fluid:t?.fluid}}function um(e,t){let{size:r}=e;if(!r||r==="0"||e?.fluid===!1||!Hl(t?.typography)&&!Hl(e))return r;let o=B0(t)?.fluid??{},n=cm({minimumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.min,maximumFontSize:typeof e?.fluid=="boolean"?void 0:e?.fluid?.max,fontSize:r,minimumFontSizeLimit:typeof o=="object"?o?.minFontSize:void 0,maximumViewportWidth:typeof o=="object"?o?.maxViewportWidth:void 0,minimumViewportWidth:typeof o=="object"?o?.minViewportWidth:void 0});return n||r}var j0=[{path:["color","palette"],valueKey:"color",cssVarInfix:"color",classes:[{classSuffix:"color",propertyName:"color"},{classSuffix:"background-color",propertyName:"background-color"},{classSuffix:"border-color",propertyName:"border-color"}]},{path:["color","gradients"],valueKey:"gradient",cssVarInfix:"gradient",classes:[{classSuffix:"gradient-background",propertyName:"background"}]},{path:["color","duotone"],valueKey:"colors",cssVarInfix:"duotone",valueFunc:({slug:e})=>`url( '#wp-duotone-${e}' )`,classes:[]},{path:["shadow","presets"],valueKey:"shadow",cssVarInfix:"shadow",classes:[]},{path:["typography","fontSizes"],valueFunc:(e,t)=>um(e,t),valueKey:"size",cssVarInfix:"font-size",classes:[{classSuffix:"font-size",propertyName:"font-size"}]},{path:["typography","fontFamilies"],valueKey:"fontFamily",cssVarInfix:"font-family",classes:[{classSuffix:"font-family",propertyName:"font-family"}]},{path:["spacing","spacingSizes"],valueKey:"size",cssVarInfix:"spacing",valueFunc:({size:e})=>e,classes:[]},{path:["border","radiusSizes"],valueKey:"size",cssVarInfix:"border-radius",classes:[]},{path:["dimensions","dimensionSizes"],valueKey:"size",cssVarInfix:"dimension",classes:[]}];function fm(e,t,r=[],o="slug",n){let s=[t?ir(e,["blocks",t,...r]):void 0,ir(e,r)].filter(Boolean);for(let i of s)if(i){let a=["custom","theme","default"];for(let c of a){let u=i[c];if(u){let l=u.find(f=>f[o]===n);if(l)return o==="slug"||fm(e,t,r,"slug",l.slug)[o]===l[o]?l:void 0}}}}function H0(e,t,r,[o,n]=[]){let s=j0.find(a=>a.cssVarInfix===o);if(!s||!e.settings)return r;let i=fm(e.settings,t,s.path,"slug",n);if(i){let{valueKey:a}=s,c=i[a];return Ri(e,t,c)}return r}function U0(e,t,r,o=[]){let n=(t?ir(e?.settings??{},["blocks",t,"custom",...o]):void 0)??ir(e?.settings??{},["custom",...o]);return n?Ri(e,t,n):r}function Ri(e,t,r){if(!r||typeof r!="string")if(typeof r=="object"&&r!==null&&"ref"in r&&typeof r.ref=="string"){let u=ir(e,r.ref);if(!u||typeof u=="object"&&"ref"in u)return u;r=u}else return r;let o="var:",n="var(--wp--",s=")",i;if(r.startsWith(o))i=r.slice(o.length).split("|");else if(r.startsWith(n)&&r.endsWith(s))i=r.slice(n.length,-s.length).split("--");else return r;let[a,...c]=i;return a==="preset"?H0(e,t,r,c):a==="custom"?U0(e,t,r,c):r}function Ei(e,t,r,o=!0){let n=t?"."+t:"",s=r?`styles.blocks.${r}${n}`:`styles${n}`;if(!e)return;let i=ir(e,s);return o?Ri(e,r,i):i}function Ul(e,t,r,o){let n=t?"."+t:"",s=o?`styles.blocks.${o}${n}`:`styles${n}`;return wn(e,s.split("."),r)}var Wl=m(pm(),1);function as(e,t){return typeof e!="object"||typeof t!="object"?e===t:(0,Wl.default)(e?.styles,t?.styles)&&(0,Wl.default)(e?.settings,t?.settings)}var xm=m(ym(),1);function vm(e){return Object.prototype.toString.call(e)==="[object Object]"}function bm(e){var t,r;return vm(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(vm(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}function Do(e,t){return(0,xm.default)(e,t,{isMergeableObject:bm,customMerge:r=>{if(r==="backgroundImage")return(o,n)=>n??o}})}var o1={grad:.9,turn:360,rad:360/(2*Math.PI)},Xr=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Ct=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},ur=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},Om=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},wm=function(e){return{r:ur(e.r,0,255),g:ur(e.g,0,255),b:ur(e.b,0,255),a:ur(e.a)}},Gl=function(e){return{r:Ct(e.r),g:Ct(e.g),b:Ct(e.b),a:Ct(e.a,3)}},n1=/^#([0-9a-f]{3,8})$/i,Ti=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Pm=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,s=Math.max(t,r,o),i=s-Math.min(t,r,o),a=i?s===t?(r-o)/i:s===r?2+(o-t)/i:4+(t-r)/i:0;return{h:60*(a<0?a+6:a),s:s?i/s*100:0,v:s/255*100,a:n}},Fm=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var s=Math.floor(t),i=o*(1-r),a=o*(1-(t-s)*r),c=o*(1-(1-t+s)*r),u=s%6;return{r:255*[o,a,i,i,c,o][u],g:255*[c,o,o,a,i,i][u],b:255*[i,i,c,o,o,a][u],a:n}},Sm=function(e){return{h:Om(e.h),s:ur(e.s,0,100),l:ur(e.l,0,100),a:ur(e.a)}},Cm=function(e){return{h:Ct(e.h),s:Ct(e.s),l:Ct(e.l),a:Ct(e.a,3)}},Rm=function(e){return Fm((r=(t=e).s,{h:t.h,s:(r*=((o=t.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:t.a}));var t,r,o},cs=function(e){return{h:(t=Pm(e)).h,s:(n=(200-(r=t.s))*(o=t.v)/100)>0&&n<200?r*o/100/(n<=100?n:200-n)*100:0,l:n/2,a:t.a};var t,r,o,n},s1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,i1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,a1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,l1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zl={string:[[function(e){var t=n1.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Ct(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Ct(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=a1.exec(e)||l1.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:wm({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=s1.exec(e)||i1.exec(e);if(!t)return null;var r,o,n=Sm({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(o1[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Rm(n)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,n=e.a,s=n===void 0?1:n;return Xr(t)&&Xr(r)&&Xr(o)?wm({r:Number(t),g:Number(r),b:Number(o),a:Number(s)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,n=e.a,s=n===void 0?1:n;if(!Xr(t)||!Xr(r)||!Xr(o))return null;var i=Sm({h:Number(t),s:Number(r),l:Number(o),a:Number(s)});return Rm(i)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,n=e.a,s=n===void 0?1:n;if(!Xr(t)||!Xr(r)||!Xr(o))return null;var i=(function(a){return{h:Om(a.h),s:ur(a.s,0,100),v:ur(a.v,0,100),a:ur(a.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(s)});return Fm(i)},"hsv"]]},Em=function(e,t){for(var r=0;r<t.length;r++){var o=t[r][0](e);if(o)return[o,t[r][1]]}return[null,void 0]},c1=function(e){return typeof e=="string"?Em(e.trim(),Zl.string):typeof e=="object"&&e!==null?Em(e,Zl.object):[null,void 0]};var Yl=function(e,t){var r=cs(e);return{h:r.h,s:ur(r.s+100*t,0,100),l:r.l,a:r.a}},ql=function(e){return(299*e.r+587*e.g+114*e.b)/1e3/255},Tm=function(e,t){var r=cs(e);return{h:r.h,s:r.s,l:ur(r.l+100*t,0,100),a:r.a}},Xl=(function(){function e(t){this.parsed=c1(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return e.prototype.isValid=function(){return this.parsed!==null},e.prototype.brightness=function(){return Ct(ql(this.rgba),2)},e.prototype.isDark=function(){return ql(this.rgba)<.5},e.prototype.isLight=function(){return ql(this.rgba)>=.5},e.prototype.toHex=function(){return t=Gl(this.rgba),r=t.r,o=t.g,n=t.b,i=(s=t.a)<1?Ti(Ct(255*s)):"","#"+Ti(r)+Ti(o)+Ti(n)+i;var t,r,o,n,s,i},e.prototype.toRgb=function(){return Gl(this.rgba)},e.prototype.toRgbString=function(){return t=Gl(this.rgba),r=t.r,o=t.g,n=t.b,(s=t.a)<1?"rgba("+r+", "+o+", "+n+", "+s+")":"rgb("+r+", "+o+", "+n+")";var t,r,o,n,s},e.prototype.toHsl=function(){return Cm(cs(this.rgba))},e.prototype.toHslString=function(){return t=Cm(cs(this.rgba)),r=t.h,o=t.s,n=t.l,(s=t.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+s+")":"hsl("+r+", "+o+"%, "+n+"%)";var t,r,o,n,s},e.prototype.toHsv=function(){return t=Pm(this.rgba),{h:Ct(t.h),s:Ct(t.s),v:Ct(t.v),a:Ct(t.a,3)};var t},e.prototype.invert=function(){return Ir({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),Ir(Yl(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),Ir(Yl(this.rgba,-t))},e.prototype.grayscale=function(){return Ir(Yl(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),Ir(Tm(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),Ir(Tm(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?Ir({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Ct(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=cs(this.rgba);return typeof t=="number"?Ir({h:t,s:r.s,l:r.l,a:r.a}):Ct(r.h)},e.prototype.isEqual=function(t){return this.toHex()===Ir(t).toHex()},e})(),Ir=function(e){return e instanceof Xl?e:new Xl(e)},_m=[],km=function(e){e.forEach(function(t){_m.indexOf(t)<0&&(t(Xl,Zl),_m.push(t))})};var Kl=m(Pe(),1);var Am=m(Pe(),1),_t=(0,Am.createContext)({user:{styles:{},settings:{}},base:{styles:{},settings:{}},merged:{styles:{},settings:{}},onChange:()=>{},fontLibraryEnabled:!1});var Im=m(Z(),1);function us({children:e,value:t,baseValue:r,onChange:o,fontLibraryEnabled:n}){let s=(0,Kl.useMemo)(()=>Do(r,t),[r,t]),i=(0,Kl.useMemo)(()=>({user:t,base:r,merged:s,onChange:o,fontLibraryEnabled:n}),[t,r,s,o,n]);return(0,Im.jsx)(_t.Provider,{value:i,children:e})}var Kr=m(ue(),1),Qm=m(Se(),1);var C1=m(Kt(),1),R1=m(sr(),1);var Lm=m(Z(),1);function Jl({className:e,...t}){return(0,Lm.jsx)(os,{className:dt(e,"global-styles-ui-icon-with-current-color"),...t})}var po=m(ue(),1);var Mo=m(Z(),1);function u1({icon:e,children:t,...r}){return(0,Mo.jsxs)(po.__experimentalItem,{...r,children:[e&&(0,Mo.jsxs)(po.__experimentalHStack,{justify:"flex-start",children:[(0,Mo.jsx)(Jl,{icon:e,size:24}),(0,Mo.jsx)(po.FlexItem,{children:t})]}),!e&&t]})}function Lr(e){return(0,Mo.jsx)(po.Navigator.Button,{as:u1,...e})}var p1=m(ue(),1);var m1=m(Se(),1),jm=m(Dt(),1);var Ql=function(e){var t=e/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},$l=function(e){return .2126*Ql(e.r)+.7152*Ql(e.g)+.0722*Ql(e.b)};function Nm(e){e.prototype.luminance=function(){return t=$l(this.rgba),(r=2)===void 0&&(r=0),o===void 0&&(o=Math.pow(10,r)),Math.round(o*t)/o+0;var t,r,o},e.prototype.contrast=function(t){t===void 0&&(t="#FFF");var r,o,n,s,i,a,c,u=t instanceof e?t:new e(t);return s=this.rgba,i=u.toRgb(),a=$l(s),c=$l(i),r=a>c?(a+.05)/(c+.05):(c+.05)/(a+.05),(o=2)===void 0&&(o=0),n===void 0&&(n=Math.pow(10,o)),Math.floor(n*r)/n+0},e.prototype.isReadable=function(t,r){return t===void 0&&(t="#FFF"),r===void 0&&(r={}),this.contrast(t)>=(a=(i=(o=r).size)===void 0?"normal":i,(s=(n=o.level)===void 0?"AA":n)==="AAA"&&a==="normal"?7:s==="AA"&&a==="large"?3:4.5);var o,n,s,i,a}}var _r=m(Pe(),1),Vm=m(Kt(),1),Bm=m(sr(),1),tc=m(Se(),1);var mt=m(Se(),1),A4={link:[{value:":link",label:(0,mt.__)("Link")},{value:":any-link",label:(0,mt.__)("Any Link")},{value:":visited",label:(0,mt.__)("Visited")},{value:":hover",label:(0,mt.__)("Hover")},{value:":focus",label:(0,mt.__)("Focus")},{value:":focus-visible",label:(0,mt.__)("Focus-visible")},{value:":active",label:(0,mt.__)("Active")}],button:[{value:":link",label:(0,mt.__)("Link")},{value:":any-link",label:(0,mt.__)("Any Link")},{value:":visited",label:(0,mt.__)("Visited")},{value:":hover",label:(0,mt.__)("Hover")},{value:":focus",label:(0,mt.__)("Focus")},{value:":focus-visible",label:(0,mt.__)("Focus-visible")},{value:":active",label:(0,mt.__)("Active")}]},I4={"core/button":[{value:":hover",label:(0,mt.__)("Hover")},{value:":focus",label:(0,mt.__)("Focus")},{value:":focus-visible",label:(0,mt.__)("Focus-visible")},{value:":active",label:(0,mt.__)("Active")}]},L4=[{value:"tablet",label:(0,mt.__)("Tablet")},{value:"mobile",label:(0,mt.__)("Mobile")}];function ec(e,t){if(!t?.length||typeof e!="object"||!e||!Object.keys(e).length)return e;for(let r in e)t.includes(r)?delete e[r]:typeof e[r]=="object"&&ec(e[r],t);return e}var _i=(e,t)=>{if(!e||!t?.length)return{};let r={};return Object.keys(e).forEach(o=>{if(t.includes(o))r[o]=e[o];else if(typeof e[o]=="object"){let n=_i(e[o],t);Object.keys(n).length&&(r[o]=n)}}),r};function fs(e,t){let r=_i(structuredClone(e),t);return as(r,e)}function Dm(e,t){if(!Array.isArray(e)||!t)return null;let o=t.replace("var(","").replace(")","")?.split("--").slice(-1)[0];return e.find(n=>n.slug===o)}function Mm(e){let t=e?.settings?.typography?.fontFamilies?.theme,r=e?.settings?.typography?.fontFamilies?.custom,o=[];t&&r?o=[...t,...r]:t?o=t:r&&(o=r);let n=e?.styles?.typography?.fontFamily,s=Dm(o,n),i=e?.styles?.elements?.heading?.typography?.fontFamily,a;return i?a=Dm(o,e?.styles?.elements?.heading?.typography?.fontFamily):a=s,[s,a]}km([Nm]);function Ke(e,t,r="merged",o=!0,n){let{user:s,base:i,merged:a,onChange:c}=(0,_r.useContext)(_t),u=n?.split(".").filter(Boolean)??[],l=u.find(S=>S.startsWith(":")),f=u.filter(S=>!S.startsWith(":")).join("."),h=[e,f].filter(Boolean).join("."),g=a;r==="base"?g=i:r==="user"&&(g=s);let d=(0,_r.useMemo)(()=>{let S=Ei(g,h,t,o);return l?S?.[l]??{}:S},[g,h,t,o,l]),b=(0,_r.useCallback)(S=>{let R=S;l&&(R={...Ei(s,h,t,!1),[l]:S});let x=Ul(s,h,R,t);c(x)},[s,c,h,t,l]);return[d,b]}function Qe(e,t,r="merged"){let{user:o,base:n,merged:s,onChange:i}=(0,_r.useContext)(_t),a=s;r==="base"?a=n:r==="user"&&(a=o);let c=(0,_r.useMemo)(()=>zl(a,e,t),[a,e,t]),u=(0,_r.useCallback)(l=>{let f=jl(o,e,l,t);i(f)},[o,i,e,t]);return[c,u]}var f1=[];function d1({title:e,settings:t,styles:r}){return e===(0,tc.__)("Default")||Object.keys(t||{}).length>0||Object.keys(r||{}).length>0}function Oi(e=[]){let{variationsFromTheme:t}=(0,Vm.useSelect)(o=>({variationsFromTheme:o(Bm.store).__experimentalGetCurrentThemeGlobalStylesVariations?.()||f1}),[]),{user:r}=(0,_r.useContext)(_t);return(0,_r.useMemo)(()=>{let o=structuredClone(r),n=ec(o,e);n.title=(0,tc.__)("Default");let s=t.filter(a=>fs(a,e)).map(a=>Do(n,a)),i=[n,...s];return i?.length?i.filter(d1):[]},[e,r,t])}var zm=m(wi(),1),{lock:H4,unlock:De}=(0,zm.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/global-styles-ui");var rc=m(Z(),1),{useHasDimensionsPanel:q4,useHasTypographyPanel:Z4,useHasColorPanel:X4,useSettingsForBlockElement:K4,useHasBackgroundPanel:J4}=De(jm.privateApis);var Nr=m(ue(),1);function Cn(){let[e="black"]=Ke("color.text"),[t="white"]=Ke("color.background"),[r=e]=Ke("elements.h1.color.text"),[o=r]=Ke("elements.link.color.text"),[n=o]=Ke("elements.button.color.background"),[s]=Qe("color.palette.core")||[],[i]=Qe("color.palette.theme")||[],[a]=Qe("color.palette.custom")||[],c=(i??[]).concat(a??[]).concat(s??[]),u=c.filter(({color:h})=>h===e),l=c.filter(({color:h})=>h===n),f=u.concat(l).concat(c).filter(({color:h})=>h!==t).slice(0,2);return{paletteColors:c,highlightedColors:f}}var Wm=m(Pe(),1),Gm=m(ue(),1),nc=m(Se(),1);function h1(e,t){return t.length===0?null:(t.sort((r,o)=>Math.abs(e-r)-Math.abs(e-o)),t[0])}function g1(e){let t=[];return e.forEach(r=>{let o=String(r.fontWeight).split(" ");if(o.length===2){let n=parseInt(o[0]),s=parseInt(o[1]);for(let i=n;i<=s;i+=100)t.push(i)}else o.length===1&&t.push(parseInt(o[0]))}),t}function Hm(e){let t=/^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/,r=e.trim(),o=n=>(n=n.trim(),n.match(t)?(n=n.replace(/^["']|["']$/g,""),`"${n}"`):n);return r.includes(",")?r.split(",").map(o).filter(n=>n!=="").join(", "):o(r)}function oc(e){if(!e)return"";let t=e.trim();return t.includes(",")&&(t=(t.split(",").find(r=>r.trim()!=="")??"").trim()),t=t.replace(/^["']|["']$/g,""),window.navigator.userAgent.toLowerCase().includes("firefox")&&(t=`"${t}"`),t}function Rn(e){let t={fontFamily:Hm(e.fontFamily)};if(!("fontFace"in e)||!Array.isArray(e.fontFace))return t.fontWeight="400",t.fontStyle="normal",t;if(e.fontFace){let r=e.fontFace.filter(o=>o?.fontStyle&&o.fontStyle.toLowerCase()==="normal");if(r.length>0){t.fontStyle="normal";let o=g1(r),n=h1(400,o);t.fontWeight=String(n)||"400"}else t.fontStyle=e.fontFace.length&&e.fontFace[0].fontStyle||"normal",t.fontWeight=e.fontFace.length&&String(e.fontFace[0].fontWeight)||"400"}return t}function Um(e){return{fontFamily:Hm(e.fontFamily),fontStyle:e.fontStyle||"normal",fontWeight:e.fontWeight||"400"}}var ds=m(Z(),1);function Pi({fontSize:e,variation:t}){let{base:r}=(0,Wm.useContext)(_t),o=r;t&&(o={...r,...t});let[n]=Ke("color.text"),[s,i]=Mm(o),a=s?Rn(s):{},c=i?Rn(i):{};return n&&(a.color=n,c.color=n),e&&(a.fontSize=e,c.fontSize=e),(0,ds.jsxs)(Gm.__unstableMotion.div,{animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:.3,type:"tween"},style:{textAlign:"center",lineHeight:1},children:[(0,ds.jsx)("span",{style:c,children:(0,nc._x)("A","Uppercase letter A")}),(0,ds.jsx)("span",{style:a,children:(0,nc._x)("a","Lowercase letter A")})]})}var Ym=m(ue(),1);var qm=m(Z(),1);function Zm({normalizedColorSwatchSize:e,ratio:t}){let{highlightedColors:r}=Cn(),o=e*t;return r.map(({slug:n,color:s},i)=>(0,qm.jsx)(Ym.__unstableMotion.div,{style:{height:o,width:o,background:s,borderRadius:o/2},animate:{scale:1,opacity:1},initial:{scale:.1,opacity:0},transition:{delay:i===1?.2:.1}},`${n}-${i}`))}var Jm=m(ue(),1),En=m(Lo(),1),Vo=m(Pe(),1);var mo=m(Z(),1),Xm=248,Km=152,y1={leading:!0,trailing:!0};function v1({children:e,label:t,isFocused:r,withHoverView:o}){let[n="white"]=Ke("color.background"),[s]=Ke("color.gradient"),i=(0,En.useReducedMotion)(),[a,c]=(0,Vo.useState)(!1),[u,{width:l}]=(0,En.useResizeObserver)(),[f,h]=(0,Vo.useState)(l),[g,d]=(0,Vo.useState)(),b=(0,En.useThrottle)(h,250,y1);(0,Vo.useLayoutEffect)(()=>{l&&b(l)},[l,b]),(0,Vo.useLayoutEffect)(()=>{let v=f?f/Xm:1,C=v-(g||0);(Math.abs(C)>.1||!g)&&d(v)},[f,g]);let S=l?l/Xm:1,R=g||S;return(0,mo.jsxs)(mo.Fragment,{children:[(0,mo.jsx)("div",{style:{position:"relative"},children:u}),!!l&&(0,mo.jsx)("div",{className:dt("global-styles-ui-preview__wrapper",{"is-hoverable":o}),style:{height:Km*R},onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),tabIndex:-1,children:(0,mo.jsx)(Jm.__unstableMotion.div,{style:{height:Km*R,width:"100%",background:s??n},initial:"start",animate:(a||r)&&!i&&t?"hover":"start",children:[].concat(e).map((v,C)=>v({ratio:R,key:C}))})})]})}var Tn=v1;var Jt=m(Z(),1),b1={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},x1={hover:{opacity:1},start:{opacity:.5}},w1={hover:{scale:1,opacity:1},start:{scale:0,opacity:0}};function S1({label:e,isFocused:t,withHoverView:r,variation:o}){let[n]=Ke("typography.fontWeight"),[s="serif"]=Ke("typography.fontFamily"),[i=s]=Ke("elements.h1.typography.fontFamily"),[a=n]=Ke("elements.h1.typography.fontWeight"),[c="black"]=Ke("color.text"),[u=c]=Ke("elements.h1.color.text"),{paletteColors:l}=Cn();return(0,Jt.jsxs)(Tn,{label:e,isFocused:t,withHoverView:r,children:[({ratio:f,key:h})=>(0,Jt.jsx)(Nr.__unstableMotion.div,{variants:b1,style:{height:"100%",overflow:"hidden"},children:(0,Jt.jsxs)(Nr.__experimentalHStack,{spacing:10*f,justify:"center",style:{height:"100%",overflow:"hidden"},children:[(0,Jt.jsx)(Pi,{fontSize:65*f,variation:o}),(0,Jt.jsx)(Nr.__experimentalVStack,{spacing:4*f,children:(0,Jt.jsx)(Zm,{normalizedColorSwatchSize:32,ratio:f})})]})},h),({key:f})=>(0,Jt.jsx)(Nr.__unstableMotion.div,{variants:r?x1:void 0,style:{height:"100%",width:"100%",position:"absolute",top:0,overflow:"hidden",filter:"blur(60px)",opacity:.1},children:(0,Jt.jsx)(Nr.__experimentalHStack,{spacing:0,justify:"flex-start",style:{height:"100%",overflow:"hidden"},children:l.slice(0,4).map(({color:h},g)=>(0,Jt.jsx)("div",{style:{height:"100%",background:h,flexGrow:1}},g))})},f),({ratio:f,key:h})=>(0,Jt.jsx)(Nr.__unstableMotion.div,{variants:w1,style:{height:"100%",width:"100%",overflow:"hidden",position:"absolute",top:0},children:(0,Jt.jsx)(Nr.__experimentalVStack,{spacing:3*f,justify:"center",style:{height:"100%",overflow:"hidden",padding:10*f,boxSizing:"border-box"},children:e&&(0,Jt.jsx)("div",{style:{fontSize:40*f,fontFamily:i,color:u,fontWeight:a,lineHeight:"1em",textAlign:"center"},children:e})})},h)]})}var sc=S1;var $m=m(Z(),1);var ac=m(xn(),1),_n=m(Se(),1),zo=m(ue(),1),lc=m(Kt(),1),ho=m(Pe(),1),Fi=m(Dt(),1),sh=m(Lo(),1);import{speak as O1}from"@wordpress/a11y";var eh=m(xn(),1),th=m(Kt(),1),E1=m(ue(),1);var T1=m(Z(),1);function _1(e,t){return e?.filter(r=>r.source==="block"||t.includes(r.name))||[]}function ic(e){let t=(0,th.useSelect)(n=>{let{getBlockStyles:s}=n(eh.store);return s(e)},[e]),[r]=Ke("variations",e),o=Object.keys(r??{});return _1(t,o)}var Bo=m(ue(),1),rh=m(Se(),1);var oh=m(Dt(),1);var nh=m(Z(),1),{StateControl:O5,StateControlBadges:P5}=De(oh.privateApis);var Dr=m(Z(),1),{useHasDimensionsPanel:P1,useHasTypographyPanel:F1,useHasBorderPanel:k1,useSettingsForBlockElement:A1,useHasColorPanel:I1}=De(Fi.privateApis);function L1(){let e=(0,lc.useSelect)(n=>n(ac.store).getBlockTypes(),[]),t=(n,s)=>{let{core:i,noncore:a}=n;return(s.name.startsWith("core/")?i:a).push(s),n},{core:r,noncore:o}=e.reduce(t,{core:[],noncore:[]});return[...r,...o]}function N1(e){let[t]=Qe("",e),r=A1(t,e),o=F1(r),n=I1(r),s=k1(r),i=P1(r),a=s||i,c=!!ic(e)?.length;return o||n||a||c}function D1({block:e}){return N1(e.name)?(0,Dr.jsx)(Lr,{path:"/blocks/"+encodeURIComponent(e.name),children:(0,Dr.jsxs)(zo.__experimentalHStack,{justify:"flex-start",children:[(0,Dr.jsx)(Fi.BlockIcon,{icon:e.icon}),(0,Dr.jsx)(zo.FlexItem,{children:e.title})]})}):null}function M1({filterValue:e}){let t=L1(),r=(0,sh.useDebounce)(O1,500),{isMatchingSearchTerm:o}=(0,lc.useSelect)(ac.store),n=e?t.filter(i=>o(i,e)):t,s=(0,ho.useRef)(null);return(0,ho.useEffect)(()=>{if(!e)return;let i=s.current?.childElementCount||0,a=(0,_n.sprintf)((0,_n._n)("%d result found.","%d results found.",i),i);r(a,"polite")},[e,r]),(0,Dr.jsx)("div",{ref:s,className:"global-styles-ui-block-types-item-list",role:"list",children:n.length===0?(0,Dr.jsx)(zo.__experimentalText,{align:"center",as:"p",children:(0,_n.__)("No blocks found.")}):n.map(i=>(0,Dr.jsx)(D1,{block:i},"menu-itemblock-"+i.name))})}var M5=(0,ho.memo)(M1);var H1=m(xn(),1),ch=m(Dt(),1),cc=m(Pe(),1),U1=m(Kt(),1),W1=m(sr(),1),uc=m(ue(),1),uh=m(Se(),1);var V1=m(Dt(),1),ih=m(xn(),1),B1=m(ue(),1),z1=m(Pe(),1);var j1=m(Z(),1);var ah=m(ue(),1),lh=m(Z(),1);function ar({children:e,level:t=2}){return(0,lh.jsx)(ah.__experimentalHeading,{className:"global-styles-ui-subtitle",level:t,children:e})}var fc=m(Z(),1);var{useHasDimensionsPanel:tA,useHasTypographyPanel:rA,useHasBorderPanel:oA,useSettingsForBlockElement:nA,useHasColorPanel:sA,useHasFiltersPanel:iA,useHasImageSettingsPanel:aA,useHasBackgroundPanel:lA,BackgroundPanel:cA,BorderPanel:uA,ColorPanel:fA,TypographyPanel:dA,DimensionsPanel:pA,FiltersPanel:mA,ImageSettingsPanel:hA,AdvancedPanel:gA}=De(ch.privateApis);var oR=m(Se(),1),nR=m(ue(),1),sR=m(Pe(),1);var G1=m(ue(),1);var Y1=m(Z(),1);var q1=m(Se(),1),ki=m(ue(),1);var fh=m(Z(),1);var Li=m(ue(),1);var dh=m(ue(),1);var Ai=m(Z(),1),Z1=({variation:e,isFocused:t,withHoverView:r})=>(0,Ai.jsx)(Tn,{label:e.title,isFocused:t,withHoverView:r,children:({ratio:o,key:n})=>(0,Ai.jsx)(dh.__experimentalHStack,{spacing:10*o,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,Ai.jsx)(Pi,{variation:e,fontSize:85*o})},n)}),ph=Z1;var jo=m(Pe(),1),hh=m(dc(),1),Ii=m(Se(),1);var go=m(Z(),1);function On({variation:e,children:t,isPill:r=!1,properties:o,showTooltip:n=!1}){let[s,i]=(0,jo.useState)(!1),{base:a,user:c,onChange:u}=(0,jo.useContext)(_t),l=(0,jo.useMemo)(()=>{let S=Do(a,e);return o&&(S=_i(S,o)),{user:e,base:a,merged:S,onChange:()=>{}}},[e,a,o]),f=()=>u(e),h=S=>{S.keyCode===hh.ENTER&&(S.preventDefault(),f())},g=(0,jo.useMemo)(()=>as(c,e),[c,e]),d=e?.title;e?.description&&(d=(0,Ii.sprintf)((0,Ii._x)("%1$s (%2$s)","variation label"),e?.title,e?.description));let b=(0,go.jsx)("div",{className:dt("global-styles-ui-variations_item",{"is-active":g}),role:"button",onClick:f,onKeyDown:h,tabIndex:0,"aria-label":d,"aria-current":g,onFocus:()=>i(!0),onBlur:()=>i(!1),children:(0,go.jsx)("div",{className:dt("global-styles-ui-variations_item-preview",{"is-pill":r}),children:t(s)})});return(0,go.jsx)(_t.Provider,{value:l,children:n?(0,go.jsxs)(bn.Root,{children:[(0,go.jsx)(bn.Trigger,{render:b}),(0,go.jsx)(bn.Popup,{children:e?.title})]}):b})}var Ho=m(Z(),1),gh=["typography"];function Ni({title:e,gap:t=2}){let r=Oi(gh);return r?.length<=1?null:(0,Ho.jsxs)(Li.__experimentalVStack,{spacing:3,children:[e&&(0,Ho.jsx)(ar,{level:3,children:e}),(0,Ho.jsx)(Li.__experimentalGrid,{columns:3,gap:t,className:"global-styles-ui-style-variations-container",children:r.map((o,n)=>(0,Ho.jsx)(On,{variation:o,properties:gh,showTooltip:!0,children:()=>(0,Ho.jsx)(ph,{variation:o})},n))})]})}var tR=m(Se(),1),bs=m(ue(),1);var rR=m(Pe(),1);var Jr=m(Pe(),1),xo=m(Kt(),1),bo=m(sr(),1),gc=m(Se(),1);var pc=m(vh(),1),bh=m(sr(),1),xh="/wp/v2/font-families";function wh(e){let{receiveEntityRecords:t}=e.dispatch(bh.store);t("postType","wp_font_family",[],void 0,!0)}async function Sh(e,t){let o=await(0,pc.default)({path:xh,method:"POST",body:e});return wh(t),{id:o.id,...o.font_family_settings,fontFace:[]}}async function Ch(e,t,r){let o={path:`${xh}/${e}/font-faces`,method:"POST",body:t},n=await(0,pc.default)(o);return wh(r),{id:n.id,...n.font_face_settings}}var Th=m(ue(),1);var fr=m(Se(),1),mc=["otf","ttf","woff","woff2"],Rh={100:(0,fr._x)("Thin","font weight"),200:(0,fr._x)("Extra-light","font weight"),300:(0,fr._x)("Light","font weight"),400:(0,fr._x)("Normal","font weight"),500:(0,fr._x)("Medium","font weight"),600:(0,fr._x)("Semi-bold","font weight"),700:(0,fr._x)("Bold","font weight"),800:(0,fr._x)("Extra-bold","font weight"),900:(0,fr._x)("Black","font weight")},Eh={normal:(0,fr._x)("Normal","font style"),italic:(0,fr._x)("Italic","font style")};var{File:_h}=window,{kebabCase:X1}=De(Th.privateApis);function yo(e,t={}){return!e.name&&(e.fontFamily||e.slug)&&(e.name=e.fontFamily||e.slug),{...e,...t}}function K1(e){return typeof e!="string"?!1:e!==decodeURIComponent(e)}function Di(e){let t=Rh[e.fontWeight??""]||e.fontWeight,r=e.fontStyle==="normal"?"":Eh[e.fontStyle??""]||e.fontStyle;return`${t} ${r}`}function J1(e=[],t=[]){let r=new Map;for(let o of e)r.set(`${o.fontWeight}${o.fontStyle}`,o);for(let o of t)r.set(`${o.fontWeight}${o.fontStyle}`,o);return Array.from(r.values())}function Oh(e=[],t=[]){let r=new Map;for(let o of e)r.set(o.slug,{...o});for(let o of t)if(r.has(o.slug)){let{fontFace:n,...s}=o,i=r.get(o.slug),a=J1(i.fontFace,n);r.set(o.slug,{...s,fontFace:a})}else r.set(o.slug,{...o});return Array.from(r.values())}async function vo(e,t,r="all"){let o;if(typeof t=="string")o=`url(${t})`;else if(t instanceof _h)o=await t.arrayBuffer();else return;let s=await new window.FontFace(oc(e.fontFamily),o,{style:e.fontStyle,weight:String(e.fontWeight)}).load();if((r==="document"||r==="all")&&document.fonts.add(s),r==="iframe"||r==="all"){let i=document.querySelector('iframe[name="editor-canvas"]');i?.contentDocument&&i.contentDocument.fonts.add(s)}}function ps(e,t="all"){let r=o=>{o.forEach(n=>{n.family===oc(e?.fontFamily)&&n.weight===e?.fontWeight&&n.style===e?.fontStyle&&o.delete(n)})};if((t==="document"||t==="all")&&r(document.fonts),t==="iframe"||t==="all"){let o=document.querySelector('iframe[name="editor-canvas"]');o?.contentDocument&&r(o.contentDocument.fonts)}}function Pn(e){if(!e)return;let t;if(Array.isArray(e)?t=e[0]:t=e,!t.startsWith("file:."))return K1(t)||(t=encodeURI(t)),t}function Ph(e){let t=new FormData,{fontFace:r,category:o,...n}=e,s={...n,slug:X1(e.slug)};return t.append("font_family_settings",JSON.stringify(s)),t}function Fh(e){return(e?.fontFace??[]).map((r,o)=>{let n={...r},s=new FormData;if(n.file){let i=Array.isArray(n.file)?n.file:[n.file],a=[];i.forEach((c,u)=>{let l=`file-${o}-${u}`;s.append(l,c,c.name),a.push(l)}),n.src=a.length===1?a[0]:a,delete n.file,s.append("font_face_settings",JSON.stringify(n))}else s.append("font_face_settings",JSON.stringify(n));return s})}async function kh(e,t,r){let o=[];for(let s of t)try{let i=await Ch(e,s,r);o.push({status:"fulfilled",value:i})}catch(i){o.push({status:"rejected",reason:i})}let n={errors:[],successes:[]};return o.forEach((s,i)=>{if(s.status==="fulfilled"&&s.value){let a=s.value;n.successes.push(a)}else s.reason&&n.errors.push({data:t[i],message:s.reason.message})}),n}async function Ah(e){e=Array.isArray(e)?e:[e];let t=await Promise.all(e.map(async r=>fetch(new Request(r)).then(o=>{if(!o.ok)throw new Error(`Error downloading font face asset from ${r}. Server responded with status: ${o.status}`);return o.blob()}).then(o=>{let n=r.split("/").pop();return new _h([o],n,{type:o.type})})));return t.length===1?t[0]:t}function hc(e,t){return t.findIndex(r=>r.fontWeight===e.fontWeight&&r.fontStyle===e.fontStyle)!==-1}function Ih(e,t,r){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let o=t.pop(),n=e;for(let s of t){let i=n[s];n=n[s]=Array.isArray(i)?[...i]:{...i}}return n[o]=r,e}function Mi(e,t,r=[]){let o=c=>c.slug===e.slug,n=c=>c.find(o),s=c=>c?r.filter(u=>!o(u)):[...r,e],i=c=>{let u=f=>f.fontWeight===t.fontWeight&&f.fontStyle===t.fontStyle;if(!c)return[...r,{...e,fontFace:[t]}];let l=c.fontFace||[];return l.find(u)?l=l.filter(f=>!u(f)):l=[...l,t],l.length===0?r.filter(f=>!o(f)):r.map(f=>o(f)?{...f,fontFace:l}:f)},a=n(r);return t?i(a):s(a)}var Lh=m(Z(),1),Mt=(0,Jr.createContext)({});Mt.displayName="FontLibraryContext";function Q1({children:e}){let t=(0,xo.useRegistry)(),{saveEntityRecord:r,deleteEntityRecord:o}=(0,xo.useDispatch)(bo.store),{globalStylesId:n}=(0,xo.useSelect)(E=>{let{__experimentalGetCurrentGlobalStylesId:I}=E(bo.store);return{globalStylesId:I()}},[]),s=(0,bo.useEntityRecord)("root","globalStyles",n),[i,a]=(0,Jr.useState)(!1),{records:c=[],isResolving:u}=(0,bo.useEntityRecords)("postType","wp_font_family",{_embed:!0}),l=(c||[]).map(E=>({id:E.id,...E.font_family_settings||{},fontFace:E?._embedded?.font_faces?.map(I=>I.font_face_settings)||[]}))||[],[f,h]=Qe("typography.fontFamilies"),g=async E=>{if(!s.record)return;let I=s.record,$=Ih(I??{},["settings","typography","fontFamilies"],E);await r("root","globalStyles",$)},[d,b]=(0,Jr.useState)(""),[S,R]=(0,Jr.useState)(void 0),x=f?.theme?f.theme.map(E=>yo(E,{source:"theme"})).sort((E,I)=>E.name.localeCompare(I.name)):[],v=f?.custom?f.custom.map(E=>yo(E,{source:"custom"})).sort((E,I)=>E.name.localeCompare(I.name)):[],C=l?l.map(E=>yo(E,{source:"custom"})).sort((E,I)=>E.name.localeCompare(I.name)):[];(0,Jr.useEffect)(()=>{d||R(void 0)},[d]);let k=E=>{if(!E){R(void 0);return}let $=(E.source==="theme"?x:C).find(B=>B.slug===E.slug);R({...$||E,source:E.source})},[T]=(0,Jr.useState)(new Set),_=E=>E.reduce(($,B)=>{let U=B?.fontFace&&B.fontFace?.length>0?B?.fontFace.map(oe=>`${oe.fontStyle??""}${oe.fontWeight??""}`):["normal400"];return $[B.slug]=U,$},{}),A=E=>_(E==="theme"?x:v),D=(E,I,$,B)=>!I&&!$?!!A(B)[E]:!!A(B)[E]?.includes((I??"")+($??"")),W=(E,I)=>A(I)[E]||[];async function M(E){a(!0);try{let I=[],$=[];for(let U of E){let oe=!1,ge=await(0,xo.resolveSelect)(bo.store).getEntityRecords("postType","wp_font_family",{slug:U.slug,per_page:1,_embed:!0}),ie=ge&&ge.length>0?ge[0]:null,ve=ie?{id:ie.id,...ie.font_family_settings,fontFace:(ie?._embedded?.font_faces??[]).map(Ne=>Ne.font_face_settings)||[]}:null;ve||(oe=!0,ve=await Sh(Ph(U),t));let ke=ve.fontFace&&U.fontFace?ve.fontFace.filter(Ne=>Ne&&U.fontFace&&hc(Ne,U.fontFace)):[];ve.fontFace&&U.fontFace&&(U.fontFace=U.fontFace.filter(Ne=>!hc(Ne,ve.fontFace)));let J=[],Ae=[];if(U?.fontFace?.length??!1){let Ne=await kh(ve.id,Fh(U),t);J=Ne?.successes,Ae=Ne?.errors}(J?.length>0||ke?.length>0)&&(ve.fontFace=[...J],I.push(ve)),ve&&!U?.fontFace?.length&&I.push(ve),oe&&(U?.fontFace?.length??0)>0&&J?.length===0&&await o("postType","wp_font_family",ve.id,{force:!0}),$=$.concat(Ae)}let B=$.reduce((U,oe)=>U.includes(oe.message)?U:[...U,oe.message],[]);if(I.length>0){let U=G(I);await g(U)}if(B.length>0){let U=new Error((0,gc.__)("There was an error installing fonts."));throw U.installationErrors=B,U}}finally{a(!1)}}async function w(E){if(!E?.id)throw new Error((0,gc.__)("Font family to uninstall is not defined."));try{await o("postType","wp_font_family",E.id,{force:!0});let I=O(E);return await g(I),{deleted:!0}}catch(I){throw console.error("There was an error uninstalling the font family:",I),I}}let O=E=>{let $=(f?.[E.source??""]??[]).filter(U=>U.slug!==E.slug),B={...f,[E.source??""]:$};return h(B),E.fontFace&&E.fontFace.forEach(U=>{ps(U,"all")}),B},G=E=>{let I=P(E),$={...f,custom:Oh(f?.custom,I)};return h($),N(I),$},P=E=>E.map(({id:I,fontFace:$,...B})=>({...B,...$&&$.length>0?{fontFace:$.map(({id:U,...oe})=>oe)}:{}})),N=E=>{E.forEach(I=>{I.fontFace&&I.fontFace.forEach($=>{let B=Pn($?.src??"");B&&vo($,B,"all")})})},K=(E,I)=>{let $=f?.[E.source??""]??[],B=Mi(E,I,$);h({...f,[E.source??""]:B});let U=D(E.slug,I?.fontStyle??"",I?.fontWeight??"",E.source??"custom");if(I&&U)ps(I,"all");else{let oe=Pn(I?.src??"");I&&oe&&vo(I,oe,"all")}},L=async E=>{if(!E.src)return;let I=Pn(E.src);!I||T.has(I)||(vo(E,I,"document"),T.add(I))};return(0,Lh.jsx)(Mt.Provider,{value:{libraryFontSelected:S,handleSetLibraryFontSelected:k,fontFamilies:f??{},baseCustomFonts:C,isFontActivated:D,getFontFacesActivated:W,loadFontFaceAsset:L,installFonts:M,uninstallFontFamily:w,toggleActivateFont:K,getAvailableFontsOutline:_,modalTabOpen:d,setModalTabOpen:b,saveFontFamilies:g,isResolvingLibrary:u,isInstalling:i},children:e})}var Vi=Q1;var ea=m(Se(),1),wc=m(ue(),1),yg=m(sr(),1),$C=m(Kt(),1);var Ie=m(ue(),1),hs=m(sr(),1),yc=m(Kt(),1),Br=m(Pe(),1),it=m(Se(),1);var kn=m(Se(),1),zi=m(Pe(),1),dr=m(ue(),1);var Nh=m(ue(),1),Mr=m(Pe(),1);var Bi=m(Z(),1);function $1(e){if(e.preview)return e.preview;if(e.src)return Array.isArray(e.src)?e.src[0]:e.src}function ex(e){return"fontStyle"in e&&e.fontStyle||"fontWeight"in e&&e.fontWeight?e:"fontFace"in e&&e.fontFace&&e.fontFace.length?e.fontFace.find(t=>t.fontStyle==="normal"&&t.fontWeight==="400")||e.fontFace[0]:{fontStyle:"normal",fontWeight:"400",fontFamily:e.fontFamily}}function tx({font:e,text:t}){let r=(0,Mr.useRef)(null),o=ex(e),n=Rn(e);t=t||("name"in e?e.name:"");let s=e.preview,[i,a]=(0,Mr.useState)(!1),[c,u]=(0,Mr.useState)(!1),{loadFontFaceAsset:l}=(0,Mr.useContext)(Mt),f=s??$1(o),h=f&&f.match(/\.(png|jpg|jpeg|gif|svg)$/i),g=Um(o),d={fontSize:"18px",lineHeight:1,opacity:c?"1":"0",...n,...g};return(0,Mr.useEffect)(()=>{let b=new window.IntersectionObserver(([S])=>{a(S.isIntersecting)},{});return r.current&&b.observe(r.current),()=>b.disconnect()},[r]),(0,Mr.useEffect)(()=>{(async()=>i&&(!h&&o.src&&await l(o),u(!0)))()},[o,i,l,h]),(0,Bi.jsx)("div",{ref:r,children:h?(0,Bi.jsx)("img",{src:f,loading:"lazy",alt:t,className:"font-library__font-variant_demo-image"}):(0,Bi.jsx)(Nh.__experimentalText,{style:d,className:"font-library__font-variant_demo-text",children:t})})}var Fn=tx;var Vr=m(Z(),1);function rx({font:e,onClick:t,variantsText:r,navigatorPath:o,shouldFocus:n}){let s=e.fontFace?.length||1,i={cursor:t?"pointer":"default"},a=(0,dr.useNavigator)(),c=(0,zi.useRef)(null);return(0,zi.useEffect)(()=>{n&&c.current?.focus()},[n]),(0,Vr.jsx)(dr.Button,{ref:c,__next40pxDefaultSize:!0,onClick:()=>{t(),o&&a.goTo(o)},style:i,className:"font-library__font-card",children:(0,Vr.jsxs)(dr.Flex,{justify:"space-between",wrap:!1,children:[(0,Vr.jsx)(Fn,{font:e}),(0,Vr.jsxs)(dr.Flex,{justify:"flex-end",children:[(0,Vr.jsx)(dr.FlexItem,{children:(0,Vr.jsx)(dr.__experimentalText,{className:"font-library__font-card__count",children:r||(0,kn.sprintf)((0,kn._n)("%d variant","%d variants",s),s)})}),(0,Vr.jsx)(dr.FlexItem,{children:(0,Vr.jsx)(os,{icon:(0,kn.isRTL)()?Ao:Io})})]})]})})}var ms=rx;var ji=m(Pe(),1),Hi=m(ue(),1);var Uo=m(Z(),1);function ox({face:e,font:t}){let{isFontActivated:r,toggleActivateFont:o}=(0,ji.useContext)(Mt),n=(t?.fontFace?.length??0)>0?r(t.slug,e.fontStyle,e.fontWeight,t.source):r(t.slug,void 0,void 0,t.source),s=()=>{if((t?.fontFace?.length??0)>0){o(t,e);return}o(t)},i=t.name+" "+Di(e),a=(0,ji.useId)();return(0,Uo.jsx)("div",{className:"font-library__font-card",children:(0,Uo.jsxs)(Hi.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Uo.jsx)(Hi.CheckboxControl,{checked:n,onChange:s,id:a}),(0,Uo.jsx)("label",{htmlFor:a,children:(0,Uo.jsx)(Fn,{font:e,text:i,onClick:s})})]})})}var Dh=ox;function Mh(e){switch(e){case"normal":return 400;case"bold":return 700;case"bolder":return 500;case"lighter":return 300;default:return parseInt(e,10)}}function Ui(e){return e.sort((t,r)=>t.fontStyle==="normal"&&r.fontStyle!=="normal"?-1:r.fontStyle==="normal"&&t.fontStyle!=="normal"?1:t.fontStyle===r.fontStyle?Mh(t.fontWeight?.toString()??"normal")-Mh(r.fontWeight?.toString()??"normal"):!t.fontStyle||!r.fontStyle?t.fontStyle?-1:1:t.fontStyle.localeCompare(r.fontStyle))}var Re=m(Z(),1);function Vh(e){if(!e)return"";let t={};for(let r of Object.keys(e).sort())t[r]=(e[r]??[]).map(o=>({slug:o.slug,fontFace:(o.fontFace??[]).map(n=>`${n.fontStyle}-${n.fontWeight}`).sort()})).sort((o,n)=>o.slug.localeCompare(n.slug));return JSON.stringify(t)}function nx(){let{baseCustomFonts:e,libraryFontSelected:t,handleSetLibraryFontSelected:r,uninstallFontFamily:o,isResolvingLibrary:n,isInstalling:s,saveFontFamilies:i,getFontFacesActivated:a}=(0,Br.useContext)(Mt),[c,u]=Qe("typography.fontFamilies"),[l,f]=(0,Br.useState)(void 0),[h,g]=(0,Br.useState)(!1),[d,b]=(0,Br.useState)(null),[S]=Qe("typography.fontFamilies",void 0,"base"),R=(0,yc.useSelect)(B=>{let{__experimentalGetCurrentGlobalStylesId:U}=B(hs.store);return U()},[]),x=(0,hs.useEntityRecord)("root","globalStyles",R),v=x?.edits?.settings?.typography?.fontFamilies,C=x?.record?.settings?.typography?.fontFamilies,k=(0,Br.useMemo)(()=>v===void 0?!1:Vh(v)!==Vh(C),[v,C]),T=c?.theme?c.theme.map(B=>yo(B,{source:"theme"})).sort((B,U)=>B.name.localeCompare(U.name)):[],_=new Set(T.map(B=>B.slug)),A=S?.theme?T.concat(S.theme.filter(B=>!_.has(B.slug)).map(B=>yo(B,{source:"theme"})).sort((B,U)=>B.name.localeCompare(U.name))):[],D=t?.source==="custom"&&t?.id,W=(0,yc.useSelect)(B=>{let{canUser:U}=B(hs.store);return D&&U("delete",{kind:"postType",name:"wp_font_family",id:D})},[D]),M=!!t&&t?.source!=="theme"&&W,w=()=>{g(!0)},O=async()=>{b(null);try{await i(c),b({type:"success",message:(0,it.__)("Font family updated successfully.")})}catch(B){b({type:"error",message:(0,it.sprintf)((0,it.__)("There was an error updating the font family. %s"),B.message)})}},G=B=>B?!B.fontFace||!B.fontFace.length?[{fontFamily:B.fontFamily,fontStyle:"normal",fontWeight:"400"}]:Ui(B.fontFace):[],P=B=>{let U=B?.fontFace&&(B?.fontFace?.length??0)>0?B.fontFace.length:1,oe=a(B.slug,B.source).length;return(0,it.sprintf)((0,it.__)("%1$d of %2$d active"),oe,U)};(0,Br.useEffect)(()=>{r(t)},[]);let N=t?a(t.slug,t.source).length:0,K=t?.fontFace?.length??(t?.fontFamily?1:0),L=N>0&&N!==K,E=N===K,I=()=>{if(!t||!t?.source)return;let B=c?.[t.source]?.filter(oe=>oe.slug!==t.slug)??[],U=E?B:[...B,t];u({...c,[t.source]:U}),t.fontFace&&t.fontFace.forEach(oe=>{if(E)ps(oe,"all");else{let ge=Pn(oe?.src??"");ge&&vo(oe,ge,"all")}})},$=A.length>0||e.length>0;return(0,Re.jsxs)("div",{className:"font-library__tabpanel-layout",children:[n&&(0,Re.jsx)("div",{className:"font-library__loading",children:(0,Re.jsx)(Ie.ProgressBar,{})}),!n&&(0,Re.jsxs)(Re.Fragment,{children:[(0,Re.jsxs)(Ie.Navigator,{initialPath:t?"/fontFamily":"/",children:[(0,Re.jsx)(Ie.Navigator.Screen,{path:"/",children:(0,Re.jsxs)(Ie.__experimentalVStack,{spacing:"8",children:[d&&(0,Re.jsx)(Ie.Notice,{status:d.type,onRemove:()=>b(null),children:d.message}),!$&&(0,Re.jsx)(Ie.__experimentalText,{as:"p",children:(0,it.__)("No fonts installed.")}),A.length>0&&(0,Re.jsxs)(Ie.__experimentalVStack,{children:[(0,Re.jsx)("h2",{className:"font-library__fonts-title",children:(0,it._x)("Theme","font source")}),(0,Re.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:A.map(B=>(0,Re.jsx)("li",{className:"font-library__fonts-list-item",children:(0,Re.jsx)(ms,{font:B,navigatorPath:"/fontFamily",variantsText:P(B),shouldFocus:B.slug===l,onClick:()=>{b(null),r(B)}})},B.slug))})]}),e.length>0&&(0,Re.jsxs)(Ie.__experimentalVStack,{children:[(0,Re.jsx)("h2",{className:"font-library__fonts-title",children:(0,it._x)("Custom","font source")}),(0,Re.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:e.map(B=>(0,Re.jsx)("li",{className:"font-library__fonts-list-item",children:(0,Re.jsx)(ms,{font:B,navigatorPath:"/fontFamily",variantsText:P(B),shouldFocus:B.slug===l,onClick:()=>{b(null),r(B)}})},B.slug))})]})]})}),(0,Re.jsxs)(Ie.Navigator.Screen,{path:"/fontFamily",children:[t&&(0,Re.jsx)(sx,{font:t,isOpen:h,setIsOpen:g,setNotice:b,uninstallFontFamily:o,handleSetLibraryFontSelected:r}),(0,Re.jsxs)(Ie.Flex,{justify:"flex-start",children:[(0,Re.jsx)(Ie.Navigator.BackButton,{icon:(0,it.isRTL)()?Io:Ao,size:"small",onClick:()=>{f(t?.slug),r(void 0),b(null)},label:(0,it.__)("Back")}),(0,Re.jsx)(Ie.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:t?.name})]}),d&&(0,Re.jsxs)(Re.Fragment,{children:[(0,Re.jsx)(Ie.__experimentalSpacer,{margin:1}),(0,Re.jsx)(Ie.Notice,{status:d.type,onRemove:()=>b(null),children:d.message}),(0,Re.jsx)(Ie.__experimentalSpacer,{margin:1})]}),(0,Re.jsx)(Ie.__experimentalSpacer,{margin:4}),(0,Re.jsx)(Ie.__experimentalText,{children:(0,it.__)("Choose font variants. Keep in mind that too many variants could make your site slower.")}),(0,Re.jsx)(Ie.__experimentalSpacer,{margin:4}),(0,Re.jsxs)(Ie.__experimentalVStack,{spacing:0,children:[(0,Re.jsx)(Ie.CheckboxControl,{className:"font-library__select-all",label:(0,it.__)("Select all"),checked:E,onChange:I,indeterminate:L}),(0,Re.jsx)(Ie.__experimentalSpacer,{margin:8}),(0,Re.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:t&&G(t).map((B,U)=>(0,Re.jsx)("li",{className:"font-library__fonts-list-item",children:(0,Re.jsx)(Dh,{font:t,face:B},`face${U}`)},`face${U}`))})]})]})]}),(0,Re.jsxs)(Ie.__experimentalHStack,{justify:"flex-end",className:"font-library__footer",children:[s&&(0,Re.jsx)(Ie.ProgressBar,{}),M&&(0,Re.jsx)(Ie.Button,{__next40pxDefaultSize:!0,isDestructive:!0,variant:"tertiary",onClick:w,children:(0,it.__)("Delete")}),(0,Re.jsx)(Ie.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:O,disabled:!k,accessibleWhenDisabled:!0,children:(0,it.__)("Update")})]})]})]})}function sx({font:e,isOpen:t,setIsOpen:r,setNotice:o,uninstallFontFamily:n,handleSetLibraryFontSelected:s}){let i=(0,Ie.useNavigator)(),a=async()=>{o(null),r(!1);try{await n(e),i.goBack(),s(void 0),o({type:"success",message:(0,it.__)("Font family uninstalled successfully.")})}catch(u){o({type:"error",message:(0,it.__)("There was an error uninstalling the font family.")+u.message})}},c=()=>{r(!1)};return(0,Re.jsx)(Ie.__experimentalConfirmDialog,{isOpen:t,cancelButtonText:(0,it.__)("Cancel"),confirmButtonText:(0,it.__)("Delete"),onCancel:c,onConfirm:a,size:"medium",children:e&&(0,it.sprintf)((0,it.__)('Are you sure you want to delete "%s" font and all its variants and assets?'),e.name)})}var Wi=nx;var bt=m(Pe(),1),we=m(ue(),1),Yh=m(Lo(),1),st=m(Se(),1);var qh=m(sr(),1);function Bh(e,t){let{category:r,search:o}=t,n=e||[];return r&&r!=="all"&&(n=n.filter(s=>s.categories&&s.categories.indexOf(r)!==-1)),o&&(n=n.filter(s=>s.font_family_settings&&s.font_family_settings.name.toLowerCase().includes(o.toLowerCase()))),n}function zh(e){return e.reduce((t,r)=>({...t,[r.slug]:(r?.fontFace||[]).reduce((o,n)=>({...o,[`${n.fontStyle}-${n.fontWeight}`]:!0}),{})}),{})}function jh(e,t,r){return t?!!r[e]?.[`${t.fontStyle}-${t.fontWeight}`]:!!r[e]}var gs=m(Se(),1),Vt=m(ue(),1),pr=m(Z(),1);function ix(){let e=()=>{window.localStorage.setItem("wp-font-library-google-fonts-permission","true"),window.dispatchEvent(new Event("storage"))};return(0,pr.jsx)("div",{className:"font-library__google-fonts-confirm",children:(0,pr.jsx)(Vt.Card,{children:(0,pr.jsxs)(Vt.CardBody,{children:[(0,pr.jsx)(Vt.__experimentalHeading,{level:2,children:(0,gs.__)("Connect to Google Fonts")}),(0,pr.jsx)(Vt.__experimentalSpacer,{margin:6}),(0,pr.jsx)(Vt.__experimentalText,{as:"p",children:(0,gs.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.")}),(0,pr.jsx)(Vt.__experimentalSpacer,{margin:3}),(0,pr.jsx)(Vt.__experimentalText,{as:"p",children:(0,gs.__)("You can alternatively upload files directly on the Upload tab.")}),(0,pr.jsx)(Vt.__experimentalSpacer,{margin:6}),(0,pr.jsx)(Vt.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:e,children:(0,gs.__)("Allow access to Google Fonts")})]})})})}var Hh=ix;var Uh=m(Pe(),1),Gi=m(ue(),1);var Wo=m(Z(),1);function ax({face:e,font:t,handleToggleVariant:r,selected:o}){let n=()=>{if(t?.fontFace){r(t,e);return}r(t)},s=t.name+" "+Di(e),i=(0,Uh.useId)();return(0,Wo.jsx)("div",{className:"font-library__font-card",children:(0,Wo.jsxs)(Gi.Flex,{justify:"flex-start",align:"center",gap:"1rem",children:[(0,Wo.jsx)(Gi.CheckboxControl,{checked:o,onChange:n,id:i}),(0,Wo.jsx)("label",{htmlFor:i,children:(0,Wo.jsx)(Fn,{font:e,text:s,onClick:n})})]})})}var Wh=ax;var he=m(Z(),1),lx={slug:"all",name:(0,st._x)("All","font categories")},Gh="wp-font-library-google-fonts-permission",cx=500;function ux({slug:e}){let t=e==="google-fonts",r=()=>window.localStorage.getItem(Gh)==="true",[o,n]=(0,bt.useState)(null),[s,i]=(0,bt.useState)(void 0),[a,c]=(0,bt.useState)(null),[u,l]=(0,bt.useState)([]),[f,h]=(0,bt.useState)(1),[g,d]=(0,bt.useState)({}),[b,S]=(0,bt.useState)(t&&!r()),{installFonts:R,isInstalling:x}=(0,bt.useContext)(Mt),{record:v,isResolving:C}=(0,qh.useEntityRecord)("root","fontCollection",e);(0,bt.useEffect)(()=>{let J=()=>{S(t&&!r())};return J(),window.addEventListener("storage",J),()=>window.removeEventListener("storage",J)},[e,t]);let k=()=>{window.localStorage.setItem(Gh,"false"),window.dispatchEvent(new Event("storage"))};(0,bt.useEffect)(()=>{n(null)},[e]),(0,bt.useEffect)(()=>{l([])},[o]);let T=(0,bt.useMemo)(()=>v?.font_families??[],[v]),_=v?.categories??[],A=[lx,..._],D=(0,bt.useMemo)(()=>Bh(T,g),[T,g]),W=Math.max(window.innerHeight,cx),M=Math.floor((W-417)/61),w=Math.ceil(D.length/M),O=(f-1)*M,G=f*M,P=D.slice(O,G),N=J=>{d({...g,category:J}),h(1)},L=(0,Yh.debounce)(J=>{d({...g,search:J}),h(1)},300),E=(J,Ae)=>{let Ne=Mi(J,Ae,u);l(Ne)},I=zh(u),$=()=>{l([])},B=u.length>0?u[0]?.fontFace?.length??0:0,U=B>0&&B!==o?.fontFace?.length,oe=B===o?.fontFace?.length,ge=()=>{let J=[];!oe&&o&&J.push(o),l(J)},ie=async()=>{c(null);let J=u[0];try{J?.fontFace&&await Promise.all(J.fontFace.map(async Ae=>{Ae.src&&(Ae.file=await Ah(Ae.src))}))}catch{c({type:"error",message:(0,st.__)("Error installing the fonts, could not be downloaded.")});return}try{await R([J]),c({type:"success",message:(0,st.__)("Fonts were installed successfully.")})}catch(Ae){c({type:"error",message:Ae.message})}$()},ve=J=>J?!J.fontFace||!J.fontFace.length?[{fontFamily:J.fontFamily,fontStyle:"normal",fontWeight:"400"}]:Ui(J.fontFace):[];if(b)return(0,he.jsx)(Hh,{});let ke=e==="google-fonts"&&!b&&!o;return(0,he.jsxs)("div",{className:"font-library__tabpanel-layout",children:[C&&(0,he.jsx)("div",{className:"font-library__loading",children:(0,he.jsx)(we.ProgressBar,{})}),!C&&v&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsxs)(we.Navigator,{initialPath:"/",className:"font-library__tabpanel-layout",children:[(0,he.jsxs)(we.Navigator.Screen,{path:"/",children:[(0,he.jsxs)(we.__experimentalHStack,{justify:"space-between",children:[(0,he.jsxs)(we.__experimentalVStack,{children:[(0,he.jsx)(we.__experimentalHeading,{level:2,size:13,children:v.name}),(0,he.jsx)(we.__experimentalText,{children:v.description})]}),ke&&(0,he.jsx)(we.DropdownMenu,{icon:Sl,label:(0,st.__)("Actions"),popoverProps:{position:"bottom left"},controls:[{title:(0,st.__)("Revoke access to Google Fonts"),onClick:k}]})]}),(0,he.jsx)(we.__experimentalSpacer,{margin:4}),(0,he.jsxs)(we.__experimentalHStack,{spacing:4,justify:"space-between",children:[(0,he.jsx)(we.SearchControl,{value:g.search,placeholder:(0,st.__)("Font name\u2026"),label:(0,st.__)("Search"),onChange:L,hideLabelFromVision:!1}),(0,he.jsx)(we.SelectControl,{__next40pxDefaultSize:!0,label:(0,st.__)("Category"),value:g.category,onChange:N,children:A&&A.map(J=>(0,he.jsx)("option",{value:J.slug,children:J.name},J.slug))})]}),(0,he.jsx)(we.__experimentalSpacer,{margin:4}),!!v?.font_families?.length&&!D.length&&(0,he.jsx)(we.__experimentalText,{children:(0,st.__)("No fonts found. Try with a different search term.")}),(0,he.jsx)("div",{className:"font-library__fonts-grid__main",children:(0,he.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:P.map(J=>(0,he.jsx)("li",{className:"font-library__fonts-list-item",children:(0,he.jsx)(ms,{font:J.font_family_settings,navigatorPath:"/fontFamily",shouldFocus:J.font_family_settings.slug===s,onClick:()=>{n(J.font_family_settings)}})},J.font_family_settings.slug))})})]}),(0,he.jsxs)(we.Navigator.Screen,{path:"/fontFamily",children:[(0,he.jsxs)(we.Flex,{justify:"flex-start",children:[(0,he.jsx)(we.Navigator.BackButton,{icon:(0,st.isRTL)()?Io:Ao,size:"small",onClick:()=>{i(o?.slug),n(null),c(null)},label:(0,st.__)("Back")}),(0,he.jsx)(we.__experimentalHeading,{level:2,size:13,className:"global-styles-ui-header",children:o?.name})]}),a&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)(we.__experimentalSpacer,{margin:1}),(0,he.jsx)(we.Notice,{status:a.type,onRemove:()=>c(null),children:a.message}),(0,he.jsx)(we.__experimentalSpacer,{margin:1})]}),(0,he.jsx)(we.__experimentalSpacer,{margin:4}),(0,he.jsx)(we.__experimentalText,{children:(0,st.__)("Select font variants to install.")}),(0,he.jsx)(we.__experimentalSpacer,{margin:4}),(0,he.jsx)(we.CheckboxControl,{className:"font-library__select-all",label:(0,st.__)("Select all"),checked:oe,onChange:ge,indeterminate:U}),(0,he.jsx)(we.__experimentalVStack,{spacing:0,children:(0,he.jsx)("ul",{role:"list",className:"font-library__fonts-list",children:o&&ve(o).map((J,Ae)=>(0,he.jsx)("li",{className:"font-library__fonts-list-item",children:(0,he.jsx)(Wh,{font:o,face:J,handleToggleVariant:E,selected:jh(o.slug,o.fontFace?J:null,I)})},`face${Ae}`))})}),(0,he.jsx)(we.__experimentalSpacer,{margin:16})]})]}),o&&(0,he.jsx)(we.Flex,{justify:"flex-end",className:"font-library__footer",children:(0,he.jsx)(we.Button,{__next40pxDefaultSize:!0,variant:"primary",onClick:ie,isBusy:x,disabled:u.length===0||x,accessibleWhenDisabled:!0,children:(0,st.__)("Install")})}),!o&&(0,he.jsxs)(we.__experimentalHStack,{expanded:!1,className:"font-library__footer",justify:"end",spacing:6,children:[(0,he.jsx)(we.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"font-library__page-selection",children:(0,bt.createInterpolateElement)((0,st.sprintf)((0,st._x)("<div>Page</div>%1$s<div>of %2$d</div>","paging"),"<CurrentPage />",w),{div:(0,he.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,he.jsx)(we.SelectControl,{"aria-label":(0,st.__)("Current page"),value:f.toString(),options:[...Array(w)].map((J,Ae)=>({label:(Ae+1).toString(),value:(Ae+1).toString()})),onChange:J=>h(parseInt(J)),size:"small",variant:"minimal"})})}),(0,he.jsxs)(we.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,he.jsx)(we.Button,{onClick:()=>h(f-1),disabled:f===1,accessibleWhenDisabled:!0,label:(0,st.__)("Previous page"),icon:(0,st.isRTL)()?vi:xi,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,he.jsx)(we.Button,{onClick:()=>h(f+1),disabled:f===w,accessibleWhenDisabled:!0,label:(0,st.__)("Next page"),icon:(0,st.isRTL)()?xi:vi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})]})]})}var Yi=ux;var An=m(Se(),1),kt=m(ue(),1),vs=m(Pe(),1);var qi=(e=>typeof jt<"u"?jt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof jt<"u"?jt:t)[r]}):e)(function(e){if(typeof jt<"u")return jt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),Zh=(function(){var e,t,r;return(function(){function o(n,s,i){function a(l,f){if(!s[l]){if(!n[l]){var h=typeof qi=="function"&&qi;if(!f&&h)return h(l,!0);if(c)return c(l,!0);var g=new Error("Cannot find module '"+l+"'");throw g.code="MODULE_NOT_FOUND",g}var d=s[l]={exports:{}};n[l][0].call(d.exports,function(b){var S=n[l][1][b];return a(S||b)},d,d.exports,o,n,s,i)}return s[l].exports}for(var c=typeof qi=="function"&&qi,u=0;u<i.length;u++)a(i[u]);return a}return o})()({1:[function(o,n,s){var i=4096,a=2*i+32,c=2*i-1,u=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function l(f){this.buf_=new Uint8Array(a),this.input_=f,this.reset()}l.READ_SIZE=i,l.IBUF_MASK=c,l.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var f=0;f<4;f++)this.val_|=this.buf_[this.pos_]<<8*f,++this.pos_;return this.bit_end_pos_>0},l.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var f=this.buf_ptr_,h=this.input_.read(this.buf_,f,i);if(h<0)throw new Error("Unexpected end of input");if(h<i){this.eos_=1;for(var g=0;g<32;g++)this.buf_[f+h+g]=0}if(f===0){for(var g=0;g<32;g++)this.buf_[(i<<1)+g]=this.buf_[g];this.buf_ptr_=i}else this.buf_ptr_=0;this.bit_end_pos_+=h<<3}},l.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&c]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},l.prototype.readBits=function(f){32-this.bit_pos_<f&&this.fillBitWindow();var h=this.val_>>>this.bit_pos_&u[f];return this.bit_pos_+=f,h},n.exports=l},{}],2:[function(o,n,s){var i=0,a=1,c=2,u=3;s.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),s.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(o,n,s){var i=o("./streams").BrotliInput,a=o("./streams").BrotliOutput,c=o("./bit_reader"),u=o("./dictionary"),l=o("./huffman").HuffmanCode,f=o("./huffman").BrotliBuildHuffmanTable,h=o("./context"),g=o("./prefix"),d=o("./transform"),b=8,S=16,R=256,x=704,v=26,C=6,k=2,T=8,_=255,A=1080,D=18,W=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),M=16,w=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),O=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),G=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function P(Y){var z;return Y.readBits(1)===0?16:(z=Y.readBits(3),z>0?17+z:(z=Y.readBits(3),z>0?8+z:17))}function N(Y){if(Y.readBits(1)){var z=Y.readBits(3);return z===0?1:Y.readBits(z)+(1<<z)}return 0}function K(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function L(Y){var z=new K,X,H,q;if(z.input_end=Y.readBits(1),z.input_end&&Y.readBits(1))return z;if(X=Y.readBits(2)+4,X===7){if(z.is_metadata=!0,Y.readBits(1)!==0)throw new Error("Invalid reserved bit");if(H=Y.readBits(2),H===0)return z;for(q=0;q<H;q++){var pe=Y.readBits(8);if(q+1===H&&H>1&&pe===0)throw new Error("Invalid size byte");z.meta_block_length|=pe<<q*8}}else for(q=0;q<X;++q){var de=Y.readBits(4);if(q+1===X&&X>4&&de===0)throw new Error("Invalid size nibble");z.meta_block_length|=de<<q*4}return++z.meta_block_length,!z.input_end&&!z.is_metadata&&(z.is_uncompressed=Y.readBits(1)),z}function E(Y,z,X){var H=z,q;return X.fillBitWindow(),z+=X.val_>>>X.bit_pos_&_,q=Y[z].bits-T,q>0&&(X.bit_pos_+=T,z+=Y[z].value,z+=X.val_>>>X.bit_pos_&(1<<q)-1),X.bit_pos_+=Y[z].bits,Y[z].value}function I(Y,z,X,H){for(var q=0,pe=b,de=0,me=0,Oe=32768,le=[],ae=0;ae<32;ae++)le.push(new l(0,0));for(f(le,0,5,Y,D);q<z&&Oe>0;){var ee=0,se;if(H.readMoreInput(),H.fillBitWindow(),ee+=H.val_>>>H.bit_pos_&31,H.bit_pos_+=le[ee].bits,se=le[ee].value&255,se<S)de=0,X[q++]=se,se!==0&&(pe=se,Oe-=32768>>se);else{var We=se-14,ze,et,qe=0;if(se===S&&(qe=pe),me!==qe&&(de=0,me=qe),ze=de,de>0&&(de-=2,de<<=We),de+=H.readBits(We)+3,et=de-ze,q+et>z)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var tt=0;tt<et;tt++)X[q+tt]=me;q+=et,me!==0&&(Oe-=et<<15-me)}}if(Oe!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+Oe);for(;q<z;q++)X[q]=0}function $(Y,z,X,H){var q=0,pe,de=new Uint8Array(Y);if(H.readMoreInput(),pe=H.readBits(2),pe===1){for(var me,Oe=Y-1,le=0,ae=new Int32Array(4),ee=H.readBits(2)+1;Oe;)Oe>>=1,++le;for(me=0;me<ee;++me)ae[me]=H.readBits(le)%Y,de[ae[me]]=2;switch(de[ae[0]]=1,ee){case 1:break;case 3:if(ae[0]===ae[1]||ae[0]===ae[2]||ae[1]===ae[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(ae[0]===ae[1])throw new Error("[ReadHuffmanCode] invalid symbols");de[ae[1]]=1;break;case 4:if(ae[0]===ae[1]||ae[0]===ae[2]||ae[0]===ae[3]||ae[1]===ae[2]||ae[1]===ae[3]||ae[2]===ae[3])throw new Error("[ReadHuffmanCode] invalid symbols");H.readBits(1)?(de[ae[2]]=3,de[ae[3]]=3):de[ae[0]]=2;break}}else{var me,se=new Uint8Array(D),We=32,ze=0,et=[new l(2,0),new l(2,4),new l(2,3),new l(3,2),new l(2,0),new l(2,4),new l(2,3),new l(4,1),new l(2,0),new l(2,4),new l(2,3),new l(3,2),new l(2,0),new l(2,4),new l(2,3),new l(4,5)];for(me=pe;me<D&&We>0;++me){var qe=W[me],tt=0,He;H.fillBitWindow(),tt+=H.val_>>>H.bit_pos_&15,H.bit_pos_+=et[tt].bits,He=et[tt].value,se[qe]=He,He!==0&&(We-=32>>He,++ze)}if(!(ze===1||We===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");I(se,Y,de,H)}if(q=f(z,X,T,de,Y),q===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return q}function B(Y,z,X){var H,q;return H=E(Y,z,X),q=g.kBlockLengthPrefixCode[H].nbits,g.kBlockLengthPrefixCode[H].offset+X.readBits(q)}function U(Y,z,X){var H;return Y<M?(X+=w[Y],X&=3,H=z[X]+O[Y]):H=Y-M+1,H}function oe(Y,z){for(var X=Y[z],H=z;H;--H)Y[H]=Y[H-1];Y[0]=X}function ge(Y,z){var X=new Uint8Array(256),H;for(H=0;H<256;++H)X[H]=H;for(H=0;H<z;++H){var q=Y[H];Y[H]=X[q],q&&oe(X,q)}}function ie(Y,z){this.alphabet_size=Y,this.num_htrees=z,this.codes=new Array(z+z*G[Y+31>>>5]),this.htrees=new Uint32Array(z)}ie.prototype.decode=function(Y){var z,X,H=0;for(z=0;z<this.num_htrees;++z)this.htrees[z]=H,X=$(this.alphabet_size,this.codes,H,Y),H+=X};function ve(Y,z){var X={num_htrees:null,context_map:null},H,q=0,pe,de;z.readMoreInput();var me=X.num_htrees=N(z)+1,Oe=X.context_map=new Uint8Array(Y);if(me<=1)return X;for(H=z.readBits(1),H&&(q=z.readBits(4)+1),pe=[],de=0;de<A;de++)pe[de]=new l(0,0);for($(me+q,pe,0,z),de=0;de<Y;){var le;if(z.readMoreInput(),le=E(pe,0,z),le===0)Oe[de]=0,++de;else if(le<=q)for(var ae=1+(1<<le)+z.readBits(le);--ae;){if(de>=Y)throw new Error("[DecodeContextMap] i >= context_map_size");Oe[de]=0,++de}else Oe[de]=le-q,++de}return z.readBits(1)&&ge(Oe,Y),X}function ke(Y,z,X,H,q,pe,de){var me=X*2,Oe=X,le=E(z,X*A,de),ae;le===0?ae=q[me+(pe[Oe]&1)]:le===1?ae=q[me+(pe[Oe]-1&1)]+1:ae=le-2,ae>=Y&&(ae-=Y),H[X]=ae,q[me+(pe[Oe]&1)]=ae,++pe[Oe]}function J(Y,z,X,H,q,pe){var de=q+1,me=X&q,Oe=pe.pos_&c.IBUF_MASK,le;if(z<8||pe.bit_pos_+(z<<3)<pe.bit_end_pos_){for(;z-- >0;)pe.readMoreInput(),H[me++]=pe.readBits(8),me===de&&(Y.write(H,de),me=0);return}if(pe.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;pe.bit_pos_<32;)H[me]=pe.val_>>>pe.bit_pos_,pe.bit_pos_+=8,++me,--z;if(le=pe.bit_end_pos_-pe.bit_pos_>>3,Oe+le>c.IBUF_MASK){for(var ae=c.IBUF_MASK+1-Oe,ee=0;ee<ae;ee++)H[me+ee]=pe.buf_[Oe+ee];le-=ae,me+=ae,z-=ae,Oe=0}for(var ee=0;ee<le;ee++)H[me+ee]=pe.buf_[Oe+ee];if(me+=le,z-=le,me>=de){Y.write(H,de),me-=de;for(var ee=0;ee<me;ee++)H[ee]=H[de+ee]}for(;me+z>=de;){if(le=de-me,pe.input_.read(H,me,le)<le)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");Y.write(H,de),z-=le,me=0}if(pe.input_.read(H,me,z)<z)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");pe.reset()}function Ae(Y){var z=Y.bit_pos_+7&-8,X=Y.readBits(z-Y.bit_pos_);return X==0}function Ne(Y){var z=new i(Y),X=new c(z);P(X);var H=L(X);return H.meta_block_length}s.BrotliDecompressedSize=Ne;function Ee(Y,z){var X=new i(Y);z==null&&(z=Ne(Y));var H=new Uint8Array(z),q=new a(H);return je(X,q),q.pos<q.buffer.length&&(q.buffer=q.buffer.subarray(0,q.pos)),q.buffer}s.BrotliDecompressBuffer=Ee;function je(Y,z){var X,H=0,q=0,pe=0,de,me=0,Oe,le,ae,ee,se=[16,15,11,4],We=0,ze=0,et=0,qe=[new ie(0,0),new ie(0,0),new ie(0,0)],tt,He,ye,hr=128+c.READ_SIZE;ye=new c(Y),pe=P(ye),de=(1<<pe)-16,Oe=1<<pe,le=Oe-1,ae=new Uint8Array(Oe+hr+u.maxDictionaryWordLength),ee=Oe,tt=[],He=[];for(var gr=0;gr<3*A;gr++)tt[gr]=new l(0,0),He[gr]=new l(0,0);for(;!q;){var rt=0,jr,Rt=[1<<28,1<<28,1<<28],Le=[0],Ze=[1,1,1],F=[0,1,0,1,0,1],Q=[0],y,re,Be,te,ht=null,ne=null,$e,V=null,j,yr=0,Ge=null,fe=0,Hr=0,er=null,ot=0,Ve=0,ut=0,gt,xt;for(X=0;X<3;++X)qe[X].codes=null,qe[X].htrees=null;ye.readMoreInput();var Ur=L(ye);if(rt=Ur.meta_block_length,H+rt>z.buffer.length){var wo=new Uint8Array(H+rt);wo.set(z.buffer),z.buffer=wo}if(q=Ur.input_end,jr=Ur.is_uncompressed,Ur.is_metadata){for(Ae(ye);rt>0;--rt)ye.readMoreInput(),ye.readBits(8);continue}if(rt!==0){if(jr){ye.bit_pos_=ye.bit_pos_+7&-8,J(z,rt,H,ae,le,ye),H+=rt;continue}for(X=0;X<3;++X)Ze[X]=N(ye)+1,Ze[X]>=2&&($(Ze[X]+2,tt,X*A,ye),$(v,He,X*A,ye),Rt[X]=B(He,X*A,ye),Q[X]=1);for(ye.readMoreInput(),y=ye.readBits(2),re=M+(ye.readBits(4)<<y),Be=(1<<y)-1,te=re+(48<<y),ne=new Uint8Array(Ze[0]),X=0;X<Ze[0];++X)ye.readMoreInput(),ne[X]=ye.readBits(2)<<1;var at=ve(Ze[0]<<C,ye);$e=at.num_htrees,ht=at.context_map;var At=ve(Ze[2]<<k,ye);for(j=At.num_htrees,V=At.context_map,qe[0]=new ie(R,$e),qe[1]=new ie(x,Ze[1]),qe[2]=new ie(te,j),X=0;X<3;++X)qe[X].decode(ye);for(Ge=0,er=0,gt=ne[Le[0]],Ve=h.lookupOffsets[gt],ut=h.lookupOffsets[gt+1],xt=qe[1].htrees[0];rt>0;){var ft,It,Bt,Zo,da,zt,tr,Wr,Mn,Xo,Vn;for(ye.readMoreInput(),Rt[1]===0&&(ke(Ze[1],tt,1,Le,F,Q,ye),Rt[1]=B(He,A,ye),xt=qe[1].htrees[Le[1]]),--Rt[1],ft=E(qe[1].codes,xt,ye),It=ft>>6,It>=2?(It-=2,tr=-1):tr=0,Bt=g.kInsertRangeLut[It]+(ft>>3&7),Zo=g.kCopyRangeLut[It]+(ft&7),da=g.kInsertLengthPrefixCode[Bt].offset+ye.readBits(g.kInsertLengthPrefixCode[Bt].nbits),zt=g.kCopyLengthPrefixCode[Zo].offset+ye.readBits(g.kCopyLengthPrefixCode[Zo].nbits),ze=ae[H-1&le],et=ae[H-2&le],Xo=0;Xo<da;++Xo)ye.readMoreInput(),Rt[0]===0&&(ke(Ze[0],tt,0,Le,F,Q,ye),Rt[0]=B(He,0,ye),yr=Le[0]<<C,Ge=yr,gt=ne[Le[0]],Ve=h.lookupOffsets[gt],ut=h.lookupOffsets[gt+1]),Mn=h.lookup[Ve+ze]|h.lookup[ut+et],fe=ht[Ge+Mn],--Rt[0],et=ze,ze=E(qe[0].codes,qe[0].htrees[fe],ye),ae[H&le]=ze,(H&le)===le&&z.write(ae,Oe),++H;if(rt-=da,rt<=0)break;if(tr<0){var Mn;if(ye.readMoreInput(),Rt[2]===0&&(ke(Ze[2],tt,2,Le,F,Q,ye),Rt[2]=B(He,2*A,ye),Hr=Le[2]<<k,er=Hr),--Rt[2],Mn=(zt>4?3:zt-2)&255,ot=V[er+Mn],tr=E(qe[2].codes,qe[2].htrees[ot],ye),tr>=re){var pa,Qc,Bn;tr-=re,Qc=tr&Be,tr>>=y,pa=(tr>>1)+1,Bn=(2+(tr&1)<<pa)-4,tr=re+(Bn+ye.readBits(pa)<<y)+Qc}}if(Wr=U(tr,se,We),Wr<0)throw new Error("[BrotliDecompress] invalid distance");if(H<de&&me!==de?me=H:me=de,Vn=H&le,Wr>me)if(zt>=u.minDictionaryWordLength&&zt<=u.maxDictionaryWordLength){var Bn=u.offsetsByLength[zt],$c=Wr-me-1,eu=u.sizeBitsByLength[zt],fy=(1<<eu)-1,dy=$c&fy,tu=$c>>eu;if(Bn+=dy*zt,tu<d.kNumTransforms){var ma=d.transformDictionaryWord(ae,Vn,Bn,zt,tu);if(Vn+=ma,H+=ma,rt-=ma,Vn>=ee){z.write(ae,Oe);for(var Rs=0;Rs<Vn-ee;Rs++)ae[Rs]=ae[ee+Rs]}}else throw new Error("Invalid backward reference. pos: "+H+" distance: "+Wr+" len: "+zt+" bytes left: "+rt)}else throw new Error("Invalid backward reference. pos: "+H+" distance: "+Wr+" len: "+zt+" bytes left: "+rt);else{if(tr>0&&(se[We&3]=Wr,++We),zt>rt)throw new Error("Invalid backward reference. pos: "+H+" distance: "+Wr+" len: "+zt+" bytes left: "+rt);for(Xo=0;Xo<zt;++Xo)ae[H&le]=ae[H-Wr&le],(H&le)===le&&z.write(ae,Oe),++H,--rt}ze=ae[H-1&le],et=ae[H-2&le]}H&=1073741823}}z.write(ae,H&le)}s.BrotliDecompress=je,u.init()},{"./bit_reader":1,"./context":2,"./dictionary":6,"./huffman":7,"./prefix":9,"./streams":10,"./transform":11}],4:[function(o,n,s){var i=o("base64-js");s.init=function(){var a=o("./decode").BrotliDecompressBuffer,c=i.toByteArray(o("./dictionary.bin.js"));return a(c)}},{"./decode":3,"./dictionary.bin.js":5,"base64-js":8}],5:[function(o,n,s){n.exports="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"},{}],6:[function(o,n,s){var i=o("./dictionary-browser");s.init=function(){s.dictionary=i.init()},s.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),s.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),s.minDictionaryWordLength=4,s.maxDictionaryWordLength=24},{"./dictionary-browser":4}],7:[function(o,n,s){function i(f,h){this.bits=f,this.value=h}s.HuffmanCode=i;var a=15;function c(f,h){for(var g=1<<h-1;f&g;)g>>=1;return(f&g-1)+g}function u(f,h,g,d,b){do d-=g,f[h+d]=new i(b.bits,b.value);while(d>0)}function l(f,h,g){for(var d=1<<h-g;h<a&&(d-=f[h],!(d<=0));)++h,d<<=1;return h-g}s.BrotliBuildHuffmanTable=function(f,h,g,d,b){var S=h,R,x,v,C,k,T,_,A,D,W,M,w=new Int32Array(a+1),O=new Int32Array(a+1);for(M=new Int32Array(b),v=0;v<b;v++)w[d[v]]++;for(O[1]=0,x=1;x<a;x++)O[x+1]=O[x]+w[x];for(v=0;v<b;v++)d[v]!==0&&(M[O[d[v]]++]=v);if(A=g,D=1<<A,W=D,O[a]===1){for(C=0;C<W;++C)f[h+C]=new i(0,M[0]&65535);return W}for(C=0,v=0,x=1,k=2;x<=g;++x,k<<=1)for(;w[x]>0;--w[x])R=new i(x&255,M[v++]&65535),u(f,h+C,k,D,R),C=c(C,x);for(_=W-1,T=-1,x=g+1,k=2;x<=a;++x,k<<=1)for(;w[x]>0;--w[x])(C&_)!==T&&(h+=D,A=l(w,x,g),D=1<<A,W+=D,T=C&_,f[S+T]=new i(A+g&255,h-S-T&65535)),R=new i(x-g&255,M[v++]&65535),u(f,h+(C>>g),k,D,R),C=c(C,x);return W}},{}],8:[function(o,n,s){"use strict";s.byteLength=g,s.toByteArray=b,s.fromByteArray=x;for(var i=[],a=[],c=typeof Uint8Array<"u"?Uint8Array:Array,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,f=u.length;l<f;++l)i[l]=u[l],a[u.charCodeAt(l)]=l;a[45]=62,a[95]=63;function h(v){var C=v.length;if(C%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var k=v.indexOf("=");k===-1&&(k=C);var T=k===C?0:4-k%4;return[k,T]}function g(v){var C=h(v),k=C[0],T=C[1];return(k+T)*3/4-T}function d(v,C,k){return(C+k)*3/4-k}function b(v){for(var C,k=h(v),T=k[0],_=k[1],A=new c(d(v,T,_)),D=0,W=_>0?T-4:T,M=0;M<W;M+=4)C=a[v.charCodeAt(M)]<<18|a[v.charCodeAt(M+1)]<<12|a[v.charCodeAt(M+2)]<<6|a[v.charCodeAt(M+3)],A[D++]=C>>16&255,A[D++]=C>>8&255,A[D++]=C&255;return _===2&&(C=a[v.charCodeAt(M)]<<2|a[v.charCodeAt(M+1)]>>4,A[D++]=C&255),_===1&&(C=a[v.charCodeAt(M)]<<10|a[v.charCodeAt(M+1)]<<4|a[v.charCodeAt(M+2)]>>2,A[D++]=C>>8&255,A[D++]=C&255),A}function S(v){return i[v>>18&63]+i[v>>12&63]+i[v>>6&63]+i[v&63]}function R(v,C,k){for(var T,_=[],A=C;A<k;A+=3)T=(v[A]<<16&16711680)+(v[A+1]<<8&65280)+(v[A+2]&255),_.push(S(T));return _.join("")}function x(v){for(var C,k=v.length,T=k%3,_=[],A=16383,D=0,W=k-T;D<W;D+=A)_.push(R(v,D,D+A>W?W:D+A));return T===1?(C=v[k-1],_.push(i[C>>2]+i[C<<4&63]+"==")):T===2&&(C=(v[k-2]<<8)+v[k-1],_.push(i[C>>10]+i[C>>4&63]+i[C<<2&63]+"=")),_.join("")}},{}],9:[function(o,n,s){function i(a,c){this.offset=a,this.nbits=c}s.kBlockLengthPrefixCode=[new i(1,2),new i(5,2),new i(9,2),new i(13,2),new i(17,3),new i(25,3),new i(33,3),new i(41,3),new i(49,4),new i(65,4),new i(81,4),new i(97,4),new i(113,5),new i(145,5),new i(177,5),new i(209,5),new i(241,6),new i(305,6),new i(369,7),new i(497,8),new i(753,9),new i(1265,10),new i(2289,11),new i(4337,12),new i(8433,13),new i(16625,24)],s.kInsertLengthPrefixCode=[new i(0,0),new i(1,0),new i(2,0),new i(3,0),new i(4,0),new i(5,0),new i(6,1),new i(8,1),new i(10,2),new i(14,2),new i(18,3),new i(26,3),new i(34,4),new i(50,4),new i(66,5),new i(98,5),new i(130,6),new i(194,7),new i(322,8),new i(578,9),new i(1090,10),new i(2114,12),new i(6210,14),new i(22594,24)],s.kCopyLengthPrefixCode=[new i(2,0),new i(3,0),new i(4,0),new i(5,0),new i(6,0),new i(7,0),new i(8,0),new i(9,0),new i(10,1),new i(12,1),new i(14,2),new i(18,2),new i(22,3),new i(30,3),new i(38,4),new i(54,4),new i(70,5),new i(102,5),new i(134,6),new i(198,7),new i(326,8),new i(582,9),new i(1094,10),new i(2118,24)],s.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],s.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(o,n,s){function i(c){this.buffer=c,this.pos=0}i.prototype.read=function(c,u,l){this.pos+l>this.buffer.length&&(l=this.buffer.length-this.pos);for(var f=0;f<l;f++)c[u+f]=this.buffer[this.pos+f];return this.pos+=l,l},s.BrotliInput=i;function a(c){this.buffer=c,this.pos=0}a.prototype.write=function(c,u){if(this.pos+u>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(c.subarray(0,u),this.pos),this.pos+=u,u},s.BrotliOutput=a},{}],11:[function(o,n,s){var i=o("./dictionary"),a=0,c=1,u=2,l=3,f=4,h=5,g=6,d=7,b=8,S=9,R=10,x=11,v=12,C=13,k=14,T=15,_=16,A=17,D=18,W=19,M=20;function w(P,N,K){this.prefix=new Uint8Array(P.length),this.transform=N,this.suffix=new Uint8Array(K.length);for(var L=0;L<P.length;L++)this.prefix[L]=P.charCodeAt(L);for(var L=0;L<K.length;L++)this.suffix[L]=K.charCodeAt(L)}var O=[new w("",a,""),new w("",a," "),new w(" ",a," "),new w("",v,""),new w("",R," "),new w("",a," the "),new w(" ",a,""),new w("s ",a," "),new w("",a," of "),new w("",R,""),new w("",a," and "),new w("",C,""),new w("",c,""),new w(", ",a," "),new w("",a,", "),new w(" ",R," "),new w("",a," in "),new w("",a," to "),new w("e ",a," "),new w("",a,'"'),new w("",a,"."),new w("",a,'">'),new w("",a,` +`),new w("",l,""),new w("",a,"]"),new w("",a," for "),new w("",k,""),new w("",u,""),new w("",a," a "),new w("",a," that "),new w(" ",R,""),new w("",a,". "),new w(".",a,""),new w(" ",a,", "),new w("",T,""),new w("",a," with "),new w("",a,"'"),new w("",a," from "),new w("",a," by "),new w("",_,""),new w("",A,""),new w(" the ",a,""),new w("",f,""),new w("",a,". The "),new w("",x,""),new w("",a," on "),new w("",a," as "),new w("",a," is "),new w("",d,""),new w("",c,"ing "),new w("",a,` + `),new w("",a,":"),new w(" ",a,". "),new w("",a,"ed "),new w("",M,""),new w("",D,""),new w("",g,""),new w("",a,"("),new w("",R,", "),new w("",b,""),new w("",a," at "),new w("",a,"ly "),new w(" the ",a," of "),new w("",h,""),new w("",S,""),new w(" ",R,", "),new w("",R,'"'),new w(".",a,"("),new w("",x," "),new w("",R,'">'),new w("",a,'="'),new w(" ",a,"."),new w(".com/",a,""),new w(" the ",a," of the "),new w("",R,"'"),new w("",a,". This "),new w("",a,","),new w(".",a," "),new w("",R,"("),new w("",R,"."),new w("",a," not "),new w(" ",a,'="'),new w("",a,"er "),new w(" ",x," "),new w("",a,"al "),new w(" ",x,""),new w("",a,"='"),new w("",x,'"'),new w("",R,". "),new w(" ",a,"("),new w("",a,"ful "),new w(" ",R,". "),new w("",a,"ive "),new w("",a,"less "),new w("",x,"'"),new w("",a,"est "),new w(" ",R,"."),new w("",x,'">'),new w(" ",a,"='"),new w("",R,","),new w("",a,"ize "),new w("",x,"."),new w("\xC2\xA0",a,""),new w(" ",a,","),new w("",R,'="'),new w("",x,'="'),new w("",a,"ous "),new w("",x,", "),new w("",R,"='"),new w(" ",R,","),new w(" ",x,'="'),new w(" ",x,", "),new w("",x,","),new w("",x,"("),new w("",x,". "),new w(" ",x,"."),new w("",x,"='"),new w(" ",x,". "),new w(" ",R,'="'),new w(" ",x,"='"),new w(" ",R,"='")];s.kTransforms=O,s.kNumTransforms=O.length;function G(P,N){return P[N]<192?(P[N]>=97&&P[N]<=122&&(P[N]^=32),1):P[N]<224?(P[N+1]^=32,2):(P[N+2]^=5,3)}s.transformDictionaryWord=function(P,N,K,L,E){var I=O[E].prefix,$=O[E].suffix,B=O[E].transform,U=B<v?0:B-(v-1),oe=0,ge=N,ie;U>L&&(U=L);for(var ve=0;ve<I.length;)P[N++]=I[ve++];for(K+=U,L-=U,B<=S&&(L-=B),oe=0;oe<L;oe++)P[N++]=i.dictionary[K+oe];if(ie=N-L,B===R)G(P,ie);else if(B===x)for(;L>0;){var ke=G(P,ie);ie+=ke,L-=ke}for(var J=0;J<$.length;)P[N++]=$[J++];return N-ge}},{"./dictionary":6}],12:[function(o,n,s){n.exports=o("./dec/decode").BrotliDecompressBuffer},{"./dec/decode":3}]},{},[12])(12)})();var Zi=(e=>typeof jt<"u"?jt:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof jt<"u"?jt:t)[r]}):e)(function(e){if(typeof jt<"u")return jt.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),Xh=(function(){var e,t,r;return(function(){function o(n,s,i){function a(l,f){if(!s[l]){if(!n[l]){var h=typeof Zi=="function"&&Zi;if(!f&&h)return h(l,!0);if(c)return c(l,!0);var g=new Error("Cannot find module '"+l+"'");throw g.code="MODULE_NOT_FOUND",g}var d=s[l]={exports:{}};n[l][0].call(d.exports,function(b){var S=n[l][1][b];return a(S||b)},d,d.exports,o,n,s,i)}return s[l].exports}for(var c=typeof Zi=="function"&&Zi,u=0;u<i.length;u++)a(i[u]);return a}return o})()({1:[function(o,n,s){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function a(l,f){return Object.prototype.hasOwnProperty.call(l,f)}s.assign=function(l){for(var f=Array.prototype.slice.call(arguments,1);f.length;){var h=f.shift();if(h){if(typeof h!="object")throw new TypeError(h+"must be non-object");for(var g in h)a(h,g)&&(l[g]=h[g])}}return l},s.shrinkBuf=function(l,f){return l.length===f?l:l.subarray?l.subarray(0,f):(l.length=f,l)};var c={arraySet:function(l,f,h,g,d){if(f.subarray&&l.subarray){l.set(f.subarray(h,h+g),d);return}for(var b=0;b<g;b++)l[d+b]=f[h+b]},flattenChunks:function(l){var f,h,g,d,b,S;for(g=0,f=0,h=l.length;f<h;f++)g+=l[f].length;for(S=new Uint8Array(g),d=0,f=0,h=l.length;f<h;f++)b=l[f],S.set(b,d),d+=b.length;return S}},u={arraySet:function(l,f,h,g,d){for(var b=0;b<g;b++)l[d+b]=f[h+b]},flattenChunks:function(l){return[].concat.apply([],l)}};s.setTyped=function(l){l?(s.Buf8=Uint8Array,s.Buf16=Uint16Array,s.Buf32=Int32Array,s.assign(s,c)):(s.Buf8=Array,s.Buf16=Array,s.Buf32=Array,s.assign(s,u))},s.setTyped(i)},{}],2:[function(o,n,s){"use strict";var i=o("./common"),a=!0,c=!0;try{String.fromCharCode.apply(null,[0])}catch{a=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{c=!1}for(var u=new i.Buf8(256),l=0;l<256;l++)u[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;u[254]=u[254]=1,s.string2buf=function(h){var g,d,b,S,R,x=h.length,v=0;for(S=0;S<x;S++)d=h.charCodeAt(S),(d&64512)===55296&&S+1<x&&(b=h.charCodeAt(S+1),(b&64512)===56320&&(d=65536+(d-55296<<10)+(b-56320),S++)),v+=d<128?1:d<2048?2:d<65536?3:4;for(g=new i.Buf8(v),R=0,S=0;R<v;S++)d=h.charCodeAt(S),(d&64512)===55296&&S+1<x&&(b=h.charCodeAt(S+1),(b&64512)===56320&&(d=65536+(d-55296<<10)+(b-56320),S++)),d<128?g[R++]=d:d<2048?(g[R++]=192|d>>>6,g[R++]=128|d&63):d<65536?(g[R++]=224|d>>>12,g[R++]=128|d>>>6&63,g[R++]=128|d&63):(g[R++]=240|d>>>18,g[R++]=128|d>>>12&63,g[R++]=128|d>>>6&63,g[R++]=128|d&63);return g};function f(h,g){if(g<65534&&(h.subarray&&c||!h.subarray&&a))return String.fromCharCode.apply(null,i.shrinkBuf(h,g));for(var d="",b=0;b<g;b++)d+=String.fromCharCode(h[b]);return d}s.buf2binstring=function(h){return f(h,h.length)},s.binstring2buf=function(h){for(var g=new i.Buf8(h.length),d=0,b=g.length;d<b;d++)g[d]=h.charCodeAt(d);return g},s.buf2string=function(h,g){var d,b,S,R,x=g||h.length,v=new Array(x*2);for(b=0,d=0;d<x;){if(S=h[d++],S<128){v[b++]=S;continue}if(R=u[S],R>4){v[b++]=65533,d+=R-1;continue}for(S&=R===2?31:R===3?15:7;R>1&&d<x;)S=S<<6|h[d++]&63,R--;if(R>1){v[b++]=65533;continue}S<65536?v[b++]=S:(S-=65536,v[b++]=55296|S>>10&1023,v[b++]=56320|S&1023)}return f(v,b)},s.utf8border=function(h,g){var d;for(g=g||h.length,g>h.length&&(g=h.length),d=g-1;d>=0&&(h[d]&192)===128;)d--;return d<0||d===0?g:d+u[h[d]]>g?d:g}},{"./common":1}],3:[function(o,n,s){"use strict";function i(a,c,u,l){for(var f=a&65535|0,h=a>>>16&65535|0,g=0;u!==0;){g=u>2e3?2e3:u,u-=g;do f=f+c[l++]|0,h=h+f|0;while(--g);f%=65521,h%=65521}return f|h<<16|0}n.exports=i},{}],4:[function(o,n,s){"use strict";n.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(o,n,s){"use strict";function i(){for(var u,l=[],f=0;f<256;f++){u=f;for(var h=0;h<8;h++)u=u&1?3988292384^u>>>1:u>>>1;l[f]=u}return l}var a=i();function c(u,l,f,h){var g=a,d=h+f;u^=-1;for(var b=h;b<d;b++)u=u>>>8^g[(u^l[b])&255];return u^-1}n.exports=c},{}],6:[function(o,n,s){"use strict";function i(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}n.exports=i},{}],7:[function(o,n,s){"use strict";var i=30,a=12;n.exports=function(u,l){var f,h,g,d,b,S,R,x,v,C,k,T,_,A,D,W,M,w,O,G,P,N,K,L,E;f=u.state,h=u.next_in,L=u.input,g=h+(u.avail_in-5),d=u.next_out,E=u.output,b=d-(l-u.avail_out),S=d+(u.avail_out-257),R=f.dmax,x=f.wsize,v=f.whave,C=f.wnext,k=f.window,T=f.hold,_=f.bits,A=f.lencode,D=f.distcode,W=(1<<f.lenbits)-1,M=(1<<f.distbits)-1;e:do{_<15&&(T+=L[h++]<<_,_+=8,T+=L[h++]<<_,_+=8),w=A[T&W];t:for(;;){if(O=w>>>24,T>>>=O,_-=O,O=w>>>16&255,O===0)E[d++]=w&65535;else if(O&16){G=w&65535,O&=15,O&&(_<O&&(T+=L[h++]<<_,_+=8),G+=T&(1<<O)-1,T>>>=O,_-=O),_<15&&(T+=L[h++]<<_,_+=8,T+=L[h++]<<_,_+=8),w=D[T&M];r:for(;;){if(O=w>>>24,T>>>=O,_-=O,O=w>>>16&255,O&16){if(P=w&65535,O&=15,_<O&&(T+=L[h++]<<_,_+=8,_<O&&(T+=L[h++]<<_,_+=8)),P+=T&(1<<O)-1,P>R){u.msg="invalid distance too far back",f.mode=i;break e}if(T>>>=O,_-=O,O=d-b,P>O){if(O=P-O,O>v&&f.sane){u.msg="invalid distance too far back",f.mode=i;break e}if(N=0,K=k,C===0){if(N+=x-O,O<G){G-=O;do E[d++]=k[N++];while(--O);N=d-P,K=E}}else if(C<O){if(N+=x+C-O,O-=C,O<G){G-=O;do E[d++]=k[N++];while(--O);if(N=0,C<G){O=C,G-=O;do E[d++]=k[N++];while(--O);N=d-P,K=E}}}else if(N+=C-O,O<G){G-=O;do E[d++]=k[N++];while(--O);N=d-P,K=E}for(;G>2;)E[d++]=K[N++],E[d++]=K[N++],E[d++]=K[N++],G-=3;G&&(E[d++]=K[N++],G>1&&(E[d++]=K[N++]))}else{N=d-P;do E[d++]=E[N++],E[d++]=E[N++],E[d++]=E[N++],G-=3;while(G>2);G&&(E[d++]=E[N++],G>1&&(E[d++]=E[N++]))}}else if((O&64)===0){w=D[(w&65535)+(T&(1<<O)-1)];continue r}else{u.msg="invalid distance code",f.mode=i;break e}break}}else if((O&64)===0){w=A[(w&65535)+(T&(1<<O)-1)];continue t}else if(O&32){f.mode=a;break e}else{u.msg="invalid literal/length code",f.mode=i;break e}break}}while(h<g&&d<S);G=_>>3,h-=G,_-=G<<3,T&=(1<<_)-1,u.next_in=h,u.next_out=d,u.avail_in=h<g?5+(g-h):5-(h-g),u.avail_out=d<S?257+(S-d):257-(d-S),f.hold=T,f.bits=_}},{}],8:[function(o,n,s){"use strict";var i=o("../utils/common"),a=o("./adler32"),c=o("./crc32"),u=o("./inffast"),l=o("./inftrees"),f=0,h=1,g=2,d=4,b=5,S=6,R=0,x=1,v=2,C=-2,k=-3,T=-4,_=-5,A=8,D=1,W=2,M=3,w=4,O=5,G=6,P=7,N=8,K=9,L=10,E=11,I=12,$=13,B=14,U=15,oe=16,ge=17,ie=18,ve=19,ke=20,J=21,Ae=22,Ne=23,Ee=24,je=25,Y=26,z=27,X=28,H=29,q=30,pe=31,de=32,me=852,Oe=592,le=15,ae=le;function ee(F){return(F>>>24&255)+(F>>>8&65280)+((F&65280)<<8)+((F&255)<<24)}function se(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function We(F){var Q;return!F||!F.state?C:(Q=F.state,F.total_in=F.total_out=Q.total=0,F.msg="",Q.wrap&&(F.adler=Q.wrap&1),Q.mode=D,Q.last=0,Q.havedict=0,Q.dmax=32768,Q.head=null,Q.hold=0,Q.bits=0,Q.lencode=Q.lendyn=new i.Buf32(me),Q.distcode=Q.distdyn=new i.Buf32(Oe),Q.sane=1,Q.back=-1,R)}function ze(F){var Q;return!F||!F.state?C:(Q=F.state,Q.wsize=0,Q.whave=0,Q.wnext=0,We(F))}function et(F,Q){var y,re;return!F||!F.state||(re=F.state,Q<0?(y=0,Q=-Q):(y=(Q>>4)+1,Q<48&&(Q&=15)),Q&&(Q<8||Q>15))?C:(re.window!==null&&re.wbits!==Q&&(re.window=null),re.wrap=y,re.wbits=Q,ze(F))}function qe(F,Q){var y,re;return F?(re=new se,F.state=re,re.window=null,y=et(F,Q),y!==R&&(F.state=null),y):C}function tt(F){return qe(F,ae)}var He=!0,ye,hr;function gr(F){if(He){var Q;for(ye=new i.Buf32(512),hr=new i.Buf32(32),Q=0;Q<144;)F.lens[Q++]=8;for(;Q<256;)F.lens[Q++]=9;for(;Q<280;)F.lens[Q++]=7;for(;Q<288;)F.lens[Q++]=8;for(l(h,F.lens,0,288,ye,0,F.work,{bits:9}),Q=0;Q<32;)F.lens[Q++]=5;l(g,F.lens,0,32,hr,0,F.work,{bits:5}),He=!1}F.lencode=ye,F.lenbits=9,F.distcode=hr,F.distbits=5}function rt(F,Q,y,re){var Be,te=F.state;return te.window===null&&(te.wsize=1<<te.wbits,te.wnext=0,te.whave=0,te.window=new i.Buf8(te.wsize)),re>=te.wsize?(i.arraySet(te.window,Q,y-te.wsize,te.wsize,0),te.wnext=0,te.whave=te.wsize):(Be=te.wsize-te.wnext,Be>re&&(Be=re),i.arraySet(te.window,Q,y-re,Be,te.wnext),re-=Be,re?(i.arraySet(te.window,Q,y-re,re,0),te.wnext=re,te.whave=te.wsize):(te.wnext+=Be,te.wnext===te.wsize&&(te.wnext=0),te.whave<te.wsize&&(te.whave+=Be))),0}function jr(F,Q){var y,re,Be,te,ht,ne,$e,V,j,yr,Ge,fe,Hr,er,ot=0,Ve,ut,gt,xt,Ur,wo,at,At,ft=new i.Buf8(4),It,Bt,Zo=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!F||!F.state||!F.output||!F.input&&F.avail_in!==0)return C;y=F.state,y.mode===I&&(y.mode=$),ht=F.next_out,Be=F.output,$e=F.avail_out,te=F.next_in,re=F.input,ne=F.avail_in,V=y.hold,j=y.bits,yr=ne,Ge=$e,At=R;e:for(;;)switch(y.mode){case D:if(y.wrap===0){y.mode=$;break}for(;j<16;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if(y.wrap&2&&V===35615){y.check=0,ft[0]=V&255,ft[1]=V>>>8&255,y.check=c(y.check,ft,2,0),V=0,j=0,y.mode=W;break}if(y.flags=0,y.head&&(y.head.done=!1),!(y.wrap&1)||(((V&255)<<8)+(V>>8))%31){F.msg="incorrect header check",y.mode=q;break}if((V&15)!==A){F.msg="unknown compression method",y.mode=q;break}if(V>>>=4,j-=4,at=(V&15)+8,y.wbits===0)y.wbits=at;else if(at>y.wbits){F.msg="invalid window size",y.mode=q;break}y.dmax=1<<at,F.adler=y.check=1,y.mode=V&512?L:I,V=0,j=0;break;case W:for(;j<16;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if(y.flags=V,(y.flags&255)!==A){F.msg="unknown compression method",y.mode=q;break}if(y.flags&57344){F.msg="unknown header flags set",y.mode=q;break}y.head&&(y.head.text=V>>8&1),y.flags&512&&(ft[0]=V&255,ft[1]=V>>>8&255,y.check=c(y.check,ft,2,0)),V=0,j=0,y.mode=M;case M:for(;j<32;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}y.head&&(y.head.time=V),y.flags&512&&(ft[0]=V&255,ft[1]=V>>>8&255,ft[2]=V>>>16&255,ft[3]=V>>>24&255,y.check=c(y.check,ft,4,0)),V=0,j=0,y.mode=w;case w:for(;j<16;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}y.head&&(y.head.xflags=V&255,y.head.os=V>>8),y.flags&512&&(ft[0]=V&255,ft[1]=V>>>8&255,y.check=c(y.check,ft,2,0)),V=0,j=0,y.mode=O;case O:if(y.flags&1024){for(;j<16;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}y.length=V,y.head&&(y.head.extra_len=V),y.flags&512&&(ft[0]=V&255,ft[1]=V>>>8&255,y.check=c(y.check,ft,2,0)),V=0,j=0}else y.head&&(y.head.extra=null);y.mode=G;case G:if(y.flags&1024&&(fe=y.length,fe>ne&&(fe=ne),fe&&(y.head&&(at=y.head.extra_len-y.length,y.head.extra||(y.head.extra=new Array(y.head.extra_len)),i.arraySet(y.head.extra,re,te,fe,at)),y.flags&512&&(y.check=c(y.check,re,fe,te)),ne-=fe,te+=fe,y.length-=fe),y.length))break e;y.length=0,y.mode=P;case P:if(y.flags&2048){if(ne===0)break e;fe=0;do at=re[te+fe++],y.head&&at&&y.length<65536&&(y.head.name+=String.fromCharCode(at));while(at&&fe<ne);if(y.flags&512&&(y.check=c(y.check,re,fe,te)),ne-=fe,te+=fe,at)break e}else y.head&&(y.head.name=null);y.length=0,y.mode=N;case N:if(y.flags&4096){if(ne===0)break e;fe=0;do at=re[te+fe++],y.head&&at&&y.length<65536&&(y.head.comment+=String.fromCharCode(at));while(at&&fe<ne);if(y.flags&512&&(y.check=c(y.check,re,fe,te)),ne-=fe,te+=fe,at)break e}else y.head&&(y.head.comment=null);y.mode=K;case K:if(y.flags&512){for(;j<16;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if(V!==(y.check&65535)){F.msg="header crc mismatch",y.mode=q;break}V=0,j=0}y.head&&(y.head.hcrc=y.flags>>9&1,y.head.done=!0),F.adler=y.check=0,y.mode=I;break;case L:for(;j<32;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}F.adler=y.check=ee(V),V=0,j=0,y.mode=E;case E:if(y.havedict===0)return F.next_out=ht,F.avail_out=$e,F.next_in=te,F.avail_in=ne,y.hold=V,y.bits=j,v;F.adler=y.check=1,y.mode=I;case I:if(Q===b||Q===S)break e;case $:if(y.last){V>>>=j&7,j-=j&7,y.mode=z;break}for(;j<3;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}switch(y.last=V&1,V>>>=1,j-=1,V&3){case 0:y.mode=B;break;case 1:if(gr(y),y.mode=ke,Q===S){V>>>=2,j-=2;break e}break;case 2:y.mode=ge;break;case 3:F.msg="invalid block type",y.mode=q}V>>>=2,j-=2;break;case B:for(V>>>=j&7,j-=j&7;j<32;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if((V&65535)!==(V>>>16^65535)){F.msg="invalid stored block lengths",y.mode=q;break}if(y.length=V&65535,V=0,j=0,y.mode=U,Q===S)break e;case U:y.mode=oe;case oe:if(fe=y.length,fe){if(fe>ne&&(fe=ne),fe>$e&&(fe=$e),fe===0)break e;i.arraySet(Be,re,te,fe,ht),ne-=fe,te+=fe,$e-=fe,ht+=fe,y.length-=fe;break}y.mode=I;break;case ge:for(;j<14;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if(y.nlen=(V&31)+257,V>>>=5,j-=5,y.ndist=(V&31)+1,V>>>=5,j-=5,y.ncode=(V&15)+4,V>>>=4,j-=4,y.nlen>286||y.ndist>30){F.msg="too many length or distance symbols",y.mode=q;break}y.have=0,y.mode=ie;case ie:for(;y.have<y.ncode;){for(;j<3;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}y.lens[Zo[y.have++]]=V&7,V>>>=3,j-=3}for(;y.have<19;)y.lens[Zo[y.have++]]=0;if(y.lencode=y.lendyn,y.lenbits=7,It={bits:y.lenbits},At=l(f,y.lens,0,19,y.lencode,0,y.work,It),y.lenbits=It.bits,At){F.msg="invalid code lengths set",y.mode=q;break}y.have=0,y.mode=ve;case ve:for(;y.have<y.nlen+y.ndist;){for(;ot=y.lencode[V&(1<<y.lenbits)-1],Ve=ot>>>24,ut=ot>>>16&255,gt=ot&65535,!(Ve<=j);){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if(gt<16)V>>>=Ve,j-=Ve,y.lens[y.have++]=gt;else{if(gt===16){for(Bt=Ve+2;j<Bt;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if(V>>>=Ve,j-=Ve,y.have===0){F.msg="invalid bit length repeat",y.mode=q;break}at=y.lens[y.have-1],fe=3+(V&3),V>>>=2,j-=2}else if(gt===17){for(Bt=Ve+3;j<Bt;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}V>>>=Ve,j-=Ve,at=0,fe=3+(V&7),V>>>=3,j-=3}else{for(Bt=Ve+7;j<Bt;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}V>>>=Ve,j-=Ve,at=0,fe=11+(V&127),V>>>=7,j-=7}if(y.have+fe>y.nlen+y.ndist){F.msg="invalid bit length repeat",y.mode=q;break}for(;fe--;)y.lens[y.have++]=at}}if(y.mode===q)break;if(y.lens[256]===0){F.msg="invalid code -- missing end-of-block",y.mode=q;break}if(y.lenbits=9,It={bits:y.lenbits},At=l(h,y.lens,0,y.nlen,y.lencode,0,y.work,It),y.lenbits=It.bits,At){F.msg="invalid literal/lengths set",y.mode=q;break}if(y.distbits=6,y.distcode=y.distdyn,It={bits:y.distbits},At=l(g,y.lens,y.nlen,y.ndist,y.distcode,0,y.work,It),y.distbits=It.bits,At){F.msg="invalid distances set",y.mode=q;break}if(y.mode=ke,Q===S)break e;case ke:y.mode=J;case J:if(ne>=6&&$e>=258){F.next_out=ht,F.avail_out=$e,F.next_in=te,F.avail_in=ne,y.hold=V,y.bits=j,u(F,Ge),ht=F.next_out,Be=F.output,$e=F.avail_out,te=F.next_in,re=F.input,ne=F.avail_in,V=y.hold,j=y.bits,y.mode===I&&(y.back=-1);break}for(y.back=0;ot=y.lencode[V&(1<<y.lenbits)-1],Ve=ot>>>24,ut=ot>>>16&255,gt=ot&65535,!(Ve<=j);){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if(ut&&(ut&240)===0){for(xt=Ve,Ur=ut,wo=gt;ot=y.lencode[wo+((V&(1<<xt+Ur)-1)>>xt)],Ve=ot>>>24,ut=ot>>>16&255,gt=ot&65535,!(xt+Ve<=j);){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}V>>>=xt,j-=xt,y.back+=xt}if(V>>>=Ve,j-=Ve,y.back+=Ve,y.length=gt,ut===0){y.mode=Y;break}if(ut&32){y.back=-1,y.mode=I;break}if(ut&64){F.msg="invalid literal/length code",y.mode=q;break}y.extra=ut&15,y.mode=Ae;case Ae:if(y.extra){for(Bt=y.extra;j<Bt;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}y.length+=V&(1<<y.extra)-1,V>>>=y.extra,j-=y.extra,y.back+=y.extra}y.was=y.length,y.mode=Ne;case Ne:for(;ot=y.distcode[V&(1<<y.distbits)-1],Ve=ot>>>24,ut=ot>>>16&255,gt=ot&65535,!(Ve<=j);){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if((ut&240)===0){for(xt=Ve,Ur=ut,wo=gt;ot=y.distcode[wo+((V&(1<<xt+Ur)-1)>>xt)],Ve=ot>>>24,ut=ot>>>16&255,gt=ot&65535,!(xt+Ve<=j);){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}V>>>=xt,j-=xt,y.back+=xt}if(V>>>=Ve,j-=Ve,y.back+=Ve,ut&64){F.msg="invalid distance code",y.mode=q;break}y.offset=gt,y.extra=ut&15,y.mode=Ee;case Ee:if(y.extra){for(Bt=y.extra;j<Bt;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}y.offset+=V&(1<<y.extra)-1,V>>>=y.extra,j-=y.extra,y.back+=y.extra}if(y.offset>y.dmax){F.msg="invalid distance too far back",y.mode=q;break}y.mode=je;case je:if($e===0)break e;if(fe=Ge-$e,y.offset>fe){if(fe=y.offset-fe,fe>y.whave&&y.sane){F.msg="invalid distance too far back",y.mode=q;break}fe>y.wnext?(fe-=y.wnext,Hr=y.wsize-fe):Hr=y.wnext-fe,fe>y.length&&(fe=y.length),er=y.window}else er=Be,Hr=ht-y.offset,fe=y.length;fe>$e&&(fe=$e),$e-=fe,y.length-=fe;do Be[ht++]=er[Hr++];while(--fe);y.length===0&&(y.mode=J);break;case Y:if($e===0)break e;Be[ht++]=y.length,$e--,y.mode=J;break;case z:if(y.wrap){for(;j<32;){if(ne===0)break e;ne--,V|=re[te++]<<j,j+=8}if(Ge-=$e,F.total_out+=Ge,y.total+=Ge,Ge&&(F.adler=y.check=y.flags?c(y.check,Be,Ge,ht-Ge):a(y.check,Be,Ge,ht-Ge)),Ge=$e,(y.flags?V:ee(V))!==y.check){F.msg="incorrect data check",y.mode=q;break}V=0,j=0}y.mode=X;case X:if(y.wrap&&y.flags){for(;j<32;){if(ne===0)break e;ne--,V+=re[te++]<<j,j+=8}if(V!==(y.total&4294967295)){F.msg="incorrect length check",y.mode=q;break}V=0,j=0}y.mode=H;case H:At=x;break e;case q:At=k;break e;case pe:return T;case de:default:return C}return F.next_out=ht,F.avail_out=$e,F.next_in=te,F.avail_in=ne,y.hold=V,y.bits=j,(y.wsize||Ge!==F.avail_out&&y.mode<q&&(y.mode<z||Q!==d))&&rt(F,F.output,F.next_out,Ge-F.avail_out)?(y.mode=pe,T):(yr-=F.avail_in,Ge-=F.avail_out,F.total_in+=yr,F.total_out+=Ge,y.total+=Ge,y.wrap&&Ge&&(F.adler=y.check=y.flags?c(y.check,Be,Ge,F.next_out-Ge):a(y.check,Be,Ge,F.next_out-Ge)),F.data_type=y.bits+(y.last?64:0)+(y.mode===I?128:0)+(y.mode===ke||y.mode===U?256:0),(yr===0&&Ge===0||Q===d)&&At===R&&(At=_),At)}function Rt(F){if(!F||!F.state)return C;var Q=F.state;return Q.window&&(Q.window=null),F.state=null,R}function Le(F,Q){var y;return!F||!F.state||(y=F.state,(y.wrap&2)===0)?C:(y.head=Q,Q.done=!1,R)}function Ze(F,Q){var y=Q.length,re,Be,te;return!F||!F.state||(re=F.state,re.wrap!==0&&re.mode!==E)?C:re.mode===E&&(Be=1,Be=a(Be,Q,y,0),Be!==re.check)?k:(te=rt(F,Q,y,y),te?(re.mode=pe,T):(re.havedict=1,R))}s.inflateReset=ze,s.inflateReset2=et,s.inflateResetKeep=We,s.inflateInit=tt,s.inflateInit2=qe,s.inflate=jr,s.inflateEnd=Rt,s.inflateGetHeader=Le,s.inflateSetDictionary=Ze,s.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(o,n,s){"use strict";var i=o("../utils/common"),a=15,c=852,u=592,l=0,f=1,h=2,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],d=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],b=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],S=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];n.exports=function(x,v,C,k,T,_,A,D){var W=D.bits,M=0,w=0,O=0,G=0,P=0,N=0,K=0,L=0,E=0,I=0,$,B,U,oe,ge,ie=null,ve=0,ke,J=new i.Buf16(a+1),Ae=new i.Buf16(a+1),Ne=null,Ee=0,je,Y,z;for(M=0;M<=a;M++)J[M]=0;for(w=0;w<k;w++)J[v[C+w]]++;for(P=W,G=a;G>=1&&J[G]===0;G--);if(P>G&&(P=G),G===0)return T[_++]=1<<24|64<<16|0,T[_++]=1<<24|64<<16|0,D.bits=1,0;for(O=1;O<G&&J[O]===0;O++);for(P<O&&(P=O),L=1,M=1;M<=a;M++)if(L<<=1,L-=J[M],L<0)return-1;if(L>0&&(x===l||G!==1))return-1;for(Ae[1]=0,M=1;M<a;M++)Ae[M+1]=Ae[M]+J[M];for(w=0;w<k;w++)v[C+w]!==0&&(A[Ae[v[C+w]]++]=w);if(x===l?(ie=Ne=A,ke=19):x===f?(ie=g,ve-=257,Ne=d,Ee-=257,ke=256):(ie=b,Ne=S,ke=-1),I=0,w=0,M=O,ge=_,N=P,K=0,U=-1,E=1<<P,oe=E-1,x===f&&E>c||x===h&&E>u)return 1;for(;;){je=M-K,A[w]<ke?(Y=0,z=A[w]):A[w]>ke?(Y=Ne[Ee+A[w]],z=ie[ve+A[w]]):(Y=96,z=0),$=1<<M-K,B=1<<N,O=B;do B-=$,T[ge+(I>>K)+B]=je<<24|Y<<16|z|0;while(B!==0);for($=1<<M-1;I&$;)$>>=1;if($!==0?(I&=$-1,I+=$):I=0,w++,--J[M]===0){if(M===G)break;M=v[C+A[w]]}if(M>P&&(I&oe)!==U){for(K===0&&(K=P),ge+=O,N=M-K,L=1<<N;N+K<G&&(L-=J[N+K],!(L<=0));)N++,L<<=1;if(E+=1<<N,x===f&&E>c||x===h&&E>u)return 1;U=I&oe,T[U]=P<<24|N<<16|ge-_|0}}return I!==0&&(T[ge+I]=M-K<<24|64<<16|0),D.bits=P,0}},{"../utils/common":1}],10:[function(o,n,s){"use strict";n.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(o,n,s){"use strict";function i(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}n.exports=i},{}],"/lib/inflate.js":[function(o,n,s){"use strict";var i=o("./zlib/inflate"),a=o("./utils/common"),c=o("./utils/strings"),u=o("./zlib/constants"),l=o("./zlib/messages"),f=o("./zlib/zstream"),h=o("./zlib/gzheader"),g=Object.prototype.toString;function d(R){if(!(this instanceof d))return new d(R);this.options=a.assign({chunkSize:16384,windowBits:0,to:""},R||{});var x=this.options;x.raw&&x.windowBits>=0&&x.windowBits<16&&(x.windowBits=-x.windowBits,x.windowBits===0&&(x.windowBits=-15)),x.windowBits>=0&&x.windowBits<16&&!(R&&R.windowBits)&&(x.windowBits+=32),x.windowBits>15&&x.windowBits<48&&(x.windowBits&15)===0&&(x.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var v=i.inflateInit2(this.strm,x.windowBits);if(v!==u.Z_OK)throw new Error(l[v]);if(this.header=new h,i.inflateGetHeader(this.strm,this.header),x.dictionary&&(typeof x.dictionary=="string"?x.dictionary=c.string2buf(x.dictionary):g.call(x.dictionary)==="[object ArrayBuffer]"&&(x.dictionary=new Uint8Array(x.dictionary)),x.raw&&(v=i.inflateSetDictionary(this.strm,x.dictionary),v!==u.Z_OK)))throw new Error(l[v])}d.prototype.push=function(R,x){var v=this.strm,C=this.options.chunkSize,k=this.options.dictionary,T,_,A,D,W,M=!1;if(this.ended)return!1;_=x===~~x?x:x===!0?u.Z_FINISH:u.Z_NO_FLUSH,typeof R=="string"?v.input=c.binstring2buf(R):g.call(R)==="[object ArrayBuffer]"?v.input=new Uint8Array(R):v.input=R,v.next_in=0,v.avail_in=v.input.length;do{if(v.avail_out===0&&(v.output=new a.Buf8(C),v.next_out=0,v.avail_out=C),T=i.inflate(v,u.Z_NO_FLUSH),T===u.Z_NEED_DICT&&k&&(T=i.inflateSetDictionary(this.strm,k)),T===u.Z_BUF_ERROR&&M===!0&&(T=u.Z_OK,M=!1),T!==u.Z_STREAM_END&&T!==u.Z_OK)return this.onEnd(T),this.ended=!0,!1;v.next_out&&(v.avail_out===0||T===u.Z_STREAM_END||v.avail_in===0&&(_===u.Z_FINISH||_===u.Z_SYNC_FLUSH))&&(this.options.to==="string"?(A=c.utf8border(v.output,v.next_out),D=v.next_out-A,W=c.buf2string(v.output,A),v.next_out=D,v.avail_out=C-D,D&&a.arraySet(v.output,v.output,A,D,0),this.onData(W)):this.onData(a.shrinkBuf(v.output,v.next_out))),v.avail_in===0&&v.avail_out===0&&(M=!0)}while((v.avail_in>0||v.avail_out===0)&&T!==u.Z_STREAM_END);return T===u.Z_STREAM_END&&(_=u.Z_FINISH),_===u.Z_FINISH?(T=i.inflateEnd(this.strm),this.onEnd(T),this.ended=!0,T===u.Z_OK):(_===u.Z_SYNC_FLUSH&&(this.onEnd(u.Z_OK),v.avail_out=0),!0)},d.prototype.onData=function(R){this.chunks.push(R)},d.prototype.onEnd=function(R){R===u.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=R,this.msg=this.strm.msg};function b(R,x){var v=new d(x);if(v.push(R,!0),v.err)throw v.msg||l[v.err];return v.result}function S(R,x){return x=x||{},x.raw=!0,b(R,x)}s.Inflate=d,s.inflate=b,s.inflateRaw=S,s.ungzip=b},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")})();var UI=globalThis.fetch,Xi=class{constructor(e,t={},r){this.type=e,this.detail=t,this.msg=r,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}},fx=class{constructor(){this.listeners={}}addEventListener(e,t,r){let o=this.listeners[e]||[];r?o.unshift(t):o.push(t),this.listeners[e]=o}removeEventListener(e,t){let r=this.listeners[e]||[],o=r.findIndex(n=>n===t);o>-1&&(r.splice(o,1),this.listeners[e]=r)}dispatch(e){let t=this.listeners[e.type];if(t)for(let r=0,o=t.length;r<o&&e.__mayPropagate;r++)t[r](e)}},dx=new Date("1904-01-01T00:00:00+0000").getTime();function px(e){return Array.from(e).map(t=>String.fromCharCode(t)).join("")}var mx=class{constructor(e,t,r){this.name=(r||e.tag||"").trim(),this.length=e.length,this.start=e.offset,this.offset=0,this.data=t,["getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getBigInt64","getBigUint64"].forEach(o=>{let n=o.replace(/get(Big)?/,"").toLowerCase(),s=parseInt(o.replace(/[^\d]/g,""))/8;Object.defineProperty(this,n,{get:()=>this.getValue(o,s)})})}get currentPosition(){return this.start+this.offset}set currentPosition(e){this.start=e,this.offset=0}skip(e=0,t=8){this.offset+=e*t/8}getValue(e,t){let r=this.start+this.offset;this.offset+=t;try{return this.data[e](r)}catch(o){throw console.error("parser",e,t,this),console.error("parser",this.start,this.offset),o}}flags(e){if(e===8||e===16||e===32||e===64)return this[`uint${e}`].toString(2).padStart(e,0).split("").map(t=>t==="1");console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){let e=this.uint32;return px([e>>24&255,e>>16&255,e>>8&255,e&255])}get fixed(){let e=this.int16,t=Math.round(1e3*this.uint16/65356);return e+t/1e3}get legacyFixed(){let e=this.uint16,t=this.uint16.toString(16).padStart(4,0);return parseFloat(`${e}.${t}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let e=0;for(let t=0;t<5;t++){let r=this.uint8;if(e=e*128+(r&127),r<128)break}return e}get longdatetime(){return new Date(dx+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){let e=p.uint16,t=[0,1,-2,-1][e>>14],r=e&16383;return t+r/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(e=0,t=0,r=8,o=!1){if(e=e||this.length,e===0)return[];t&&(this.currentPosition=t);let n=`${o?"":"u"}int${r}`,s=[];for(;e--;)s.push(this[n]);return s}},ct=class{constructor(e){Object.defineProperty(this,"parser",{enumerable:!1,get:()=>e});let r=e.currentPosition;Object.defineProperty(this,"start",{enumerable:!1,get:()=>r})}load(e){Object.keys(e).forEach(t=>{let r=Object.getOwnPropertyDescriptor(e,t);r.get?this[t]=r.get.bind(this):r.value!==void 0&&(this[t]=r.value)}),this.parser.length&&this.parser.verifyLength()}},_e=class extends ct{constructor(e,t,r){let{parser:o,start:n}=super(new mx(e,t,r));Object.defineProperty(this,"p",{enumerable:!1,get:()=>o}),Object.defineProperty(this,"tableStart",{enumerable:!1,get:()=>n})}};function ce(e,t,r){let o;Object.defineProperty(e,t,{get:()=>o||(o=r(),o),enumerable:!0})}var hx=class extends _e{constructor(e,t,r){let{p:o}=super({offset:0,length:12},t,"sfnt");this.version=o.uint32,this.numTables=o.uint16,this.searchRange=o.uint16,this.entrySelector=o.uint16,this.rangeShift=o.uint16,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(n=>new gx(o)),this.tables={},this.directory.forEach(n=>{let s=()=>r(this.tables,{tag:n.tag,offset:n.offset,length:n.length},t);ce(this.tables,n.tag.trim(),s)})}},gx=class{constructor(e){this.tag=e.tag,this.checksum=e.uint32,this.offset=e.uint32,this.length=e.uint32}},Kh=Xh.inflate||void 0,Jh=void 0,yx=class extends _e{constructor(e,t,r){let{p:o}=super({offset:0,length:44},t,"woff");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(n=>new vx(o)),bx(this,t,r)}},vx=class{constructor(e){this.tag=e.tag,this.offset=e.uint32,this.compLength=e.uint32,this.origLength=e.uint32,this.origChecksum=e.uint32}};function bx(e,t,r){e.tables={},e.directory.forEach(o=>{ce(e.tables,o.tag.trim(),()=>{let n=0,s=t;if(o.compLength!==o.origLength){let i=t.buffer.slice(o.offset,o.offset+o.compLength),a;if(Kh)a=Kh(new Uint8Array(i));else if(Jh)a=Jh(new Uint8Array(i));else{let c="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(c),new Error(c)}s=new DataView(a.buffer)}else n=o.offset;return r(e.tables,{tag:o.tag,offset:n,length:o.origLength},s)})})}var Qh=Zh,$h=void 0,xx=class extends _e{constructor(e,t,r){let{p:o}=super({offset:0,length:48},t,"woff2");this.signature=o.tag,this.flavor=o.uint32,this.length=o.uint32,this.numTables=o.uint16,o.uint16,this.totalSfntSize=o.uint32,this.totalCompressedSize=o.uint32,this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.metaOffset=o.uint32,this.metaLength=o.uint32,this.metaOrigLength=o.uint32,this.privOffset=o.uint32,this.privLength=o.uint32,o.verifyLength(),this.directory=[...new Array(this.numTables)].map(a=>new wx(o));let n=o.currentPosition;this.directory[0].offset=0,this.directory.forEach((a,c)=>{let u=this.directory[c+1];u&&(u.offset=a.offset+(a.transformLength!==void 0?a.transformLength:a.origLength))});let s,i=t.buffer.slice(n);if(Qh)s=Qh(new Uint8Array(i));else if($h)s=new Uint8Array($h(i));else{let a="no brotli decoder available to decode WOFF2 font";throw e.onerror&&e.onerror(a),new Error(a)}Sx(this,s,r)}},wx=class{constructor(e){this.flags=e.uint8;let t=this.tagNumber=this.flags&63;t===63?this.tag=e.tag:this.tag=Cx(t);let o=(this.transformVersion=(this.flags&192)>>6)!==0;(this.tag==="glyf"||this.tag==="loca")&&(o=this.transformVersion!==3),this.origLength=e.uint128,o&&(this.transformLength=e.uint128)}};function Sx(e,t,r){e.tables={},e.directory.forEach(o=>{ce(e.tables,o.tag.trim(),()=>{let n=o.offset,s=n+(o.transformLength?o.transformLength:o.origLength),i=new DataView(t.slice(n,s).buffer);try{return r(e.tables,{tag:o.tag,offset:0,length:o.origLength},i)}catch(a){console.error(a)}})})}function Cx(e){return["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][e&63]}var ig={},ag=!1;Promise.all([Promise.resolve().then(function(){return Jx}),Promise.resolve().then(function(){return $x}),Promise.resolve().then(function(){return tw}),Promise.resolve().then(function(){return nw}),Promise.resolve().then(function(){return iw}),Promise.resolve().then(function(){return fw}),Promise.resolve().then(function(){return pw}),Promise.resolve().then(function(){return hw}),Promise.resolve().then(function(){return Ew}),Promise.resolve().then(function(){return Dw}),Promise.resolve().then(function(){return CS}),Promise.resolve().then(function(){return ES}),Promise.resolve().then(function(){return PS}),Promise.resolve().then(function(){return IS}),Promise.resolve().then(function(){return NS}),Promise.resolve().then(function(){return MS}),Promise.resolve().then(function(){return zS}),Promise.resolve().then(function(){return HS}),Promise.resolve().then(function(){return WS}),Promise.resolve().then(function(){return YS}),Promise.resolve().then(function(){return ZS}),Promise.resolve().then(function(){return KS}),Promise.resolve().then(function(){return $S}),Promise.resolve().then(function(){return rC}),Promise.resolve().then(function(){return oC}),Promise.resolve().then(function(){return sC}),Promise.resolve().then(function(){return aC}),Promise.resolve().then(function(){return cC}),Promise.resolve().then(function(){return fC}),Promise.resolve().then(function(){return mC}),Promise.resolve().then(function(){return xC}),Promise.resolve().then(function(){return RC}),Promise.resolve().then(function(){return _C}),Promise.resolve().then(function(){return kC}),Promise.resolve().then(function(){return IC}),Promise.resolve().then(function(){return NC}),Promise.resolve().then(function(){return VC}),Promise.resolve().then(function(){return zC}),Promise.resolve().then(function(){return GC}),Promise.resolve().then(function(){return qC}),Promise.resolve().then(function(){return KC})]).then(e=>{e.forEach(t=>{let r=Object.keys(t)[0];ig[r]=t[r]}),ag=!0});function Rx(e,t,r){let o=t.tag.replace(/[^\w\d]/g,""),n=ig[o];return n?new n(t,r,e):(console.warn(`lib-font has no definition for ${o}. The table was skipped.`),{})}function Ex(){let e=0;function t(r,o){if(!ag)return e>10?o(new Error("loading took too long")):(e++,setTimeout(()=>t(r),250));r(Rx)}return new Promise((r,o)=>t(r))}function Tx(e,t){let r=e.lastIndexOf("."),o=(e.substring(r+1)||"").toLowerCase(),n={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[o];if(n)return n;let s={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[o];if(s||(s=`${e} is not a known webfont format.`),t)throw new Error(s);console.warn(`Could not load font: ${s}`)}async function _x(e,t,r={}){if(!globalThis.document)return;let o=Tx(t,r.errorOnStyle);if(!o)return;let n=document.createElement("style");n.className="injected-by-Font-js";let s=[];return r.styleRules&&(s=Object.entries(r.styleRules).map(([i,a])=>`${i}: ${a};`)),n.textContent=` @font-face { font-family: "${e}"; - ${n.join(` + ${s.join(` `)} src: url("${t}") format("${o}"); -}`,globalThis.document.head.appendChild(s),s}var Jd=[0,1,0,0],Qd=[79,84,84,79],$d=[119,79,70,70],ep=[119,79,70,50];function fs(e,t){if(e.length===t.length){for(let r=0;r<e.length;r++)if(e[r]!==t[r])return;return!0}}function tp(e){let t=[e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3)];if(fs(t,Jd)||fs(t,Qd))return"SFNT";if(fs(t,$d))return"WOFF";if(fs(t,ep))return"WOFF2"}function rp(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}var ds=class extends Ld{constructor(e,t={}){super(),this.name=e,this.options=t,this.metrics=!1}get src(){return this.__src}set src(e){this.__src=e,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await Kd(this.name,e,this.options),this.loadFont(e)))()}async loadFont(e,t){fetch(e).then(r=>rp(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,t||e)).catch(r=>{let o=new us("error",r,`Failed to load font at ${t||e}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(e,t){this.fontData=new DataView(e);let r=tp(this.fontData);if(!r)throw new Error(`${t} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new us("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(e){return Zd().then(t=>(e==="SFNT"&&(this.opentype=new zd(this,this.fontData,t)),e==="WOFF"&&(this.opentype=new Md(this,this.fontData,t)),e==="WOFF2"&&(this.opentype=new Ud(this,this.fontData,t)),this.opentype))}getGlyphId(e){return this.opentype.tables.cmap.getGlyphId(e)}reverse(e){return this.opentype.tables.cmap.reverse(e)}supports(e){return this.getGlyphId(e)!==0}supportsVariation(e){return this.opentype.tables.cmap.supportsVariation(e)!==!1}measureText(e,t=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=e,r.style.fontFamily=this.name,r.style.fontSize=`${t}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let s=this.opentype.tables["OS/2"];return o.fontSize=t,o.ascender=s.sTypoAscender,o.descender=s.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let e=new us("unload",{font:this});this.dispatch(e),this.onunload&&this.onunload(e)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let e=new us("load",{font:this});this.dispatch(e),this.onload&&this.onload(e)}}};globalThis.Font=ds;var qt=class extends Be{constructor(e,t,r){super(e),this.plaformID=t,this.encodingID=r}},op=class extends qt{constructor(e,t,r){super(e,t,r),this.format=0,this.length=e.uint16,this.language=e.uint16,this.glyphIdArray=[...new Array(256)].map(o=>e.uint8)}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=e&&e<=255}reverse(e){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},sp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=2,this.length=e.uint16,this.language=e.uint16,this.subHeaderKeys=[...new Array(256)].map(a=>e.uint16);let o=Math.max(...this.subHeaderKeys),s=e.currentPosition;Z(this,"subHeaders",()=>(e.currentPosition=s,[...new Array(o)].map(a=>new np(e))));let n=s+o*8;Z(this,"glyphIndexArray",()=>(e.currentPosition=n,[...new Array(o)].map(a=>e.uint16)))}supports(e){e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let t=e&&255,r=e&&65280,o=this.subHeaders[r],s=this.subHeaders[o],n=s.firstCode,a=n+s.entryCount;return n<=t&&t<=a}reverse(e){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(e=!1){return e?this.subHeaders.map(t=>({firstCode:t.firstCode,lastCode:t.lastCode})):this.subHeaders.map(t=>({start:t.firstCode,end:t.lastCode}))}},np=class{constructor(e){this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=e.int16,this.idRangeOffset=e.uint16}},ap=class extends qt{constructor(e,t,r){super(e,t,r),this.format=4,this.length=e.uint16,this.language=e.uint16,this.segCountX2=e.uint16,this.segCount=this.segCountX2/2,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16;let o=e.currentPosition;Z(this,"endCode",()=>e.readBytes(this.segCount,o,16));let s=o+2+this.segCountX2;Z(this,"startCode",()=>e.readBytes(this.segCount,s,16));let n=s+this.segCountX2;Z(this,"idDelta",()=>e.readBytes(this.segCount,n,16,!0));let a=n+this.segCountX2;Z(this,"idRangeOffset",()=>e.readBytes(this.segCount,a,16));let l=a+this.segCountX2,h=this.length-(l-this.tableStart);Z(this,"glyphIdArray",()=>e.readBytes(h,l,16)),Z(this,"segments",()=>this.buildSegments(a,l,e))}buildSegments(e,t,r){let o=(s,n)=>{let a=this.startCode[n],l=this.endCode[n],h=this.idDelta[n],f=this.idRangeOffset[n],c=e+2*n,d=[];if(f===0)for(let m=a+h,g=l+h;m<=g;m++)d.push(m);else for(let m=0,g=l-a;m<=g;m++)r.currentPosition=c+f+m*2,d.push(r.uint16);return{startCode:a,endCode:l,idDelta:h,idRangeOffset:f,glyphIDs:d}};return[...new Array(this.segCount)].map(o)}reverse(e){let t=this.segments.find(o=>o.glyphIDs.includes(e));if(!t)return{};let r=t.startCode+t.glyphIDs.indexOf(e);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(e){if(e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535)return 0;let t=this.segments.find(r=>r.startCode<=e&&e<=r.endCode);return t?t.glyphIDs[e-t.startCode]:0}supports(e){return this.getGlyphId(e)!==0}getSupportedCharCodes(e=!1){return e?this.segments:this.segments.map(t=>({start:t.startCode,end:t.endCode}))}},ip=class extends qt{constructor(e,t,r){super(e,t,r),this.format=6,this.length=e.uint16,this.language=e.uint16,this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.firstCode+this.entryCount-1,Z(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(s=>e.uint16))}supports(e){if(e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),e<this.firstCode)return{};if(e>this.firstCode+this.entryCount)return{};let t=e-this.firstCode;return{code:t,unicode:String.fromCodePoint(t)}}reverse(e){let t=this.glyphIdArray.indexOf(e);if(t>-1)return this.firstCode+t}getSupportedCharCodes(e=!1){return e?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},lp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=8,e.uint16,this.length=e.uint32,this.language=e.uint32,this.is32=[...new Array(8192)].map(s=>e.uint8),this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new up(e)))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(t=>t.startcharCode<=e&&e<=t.endcharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startcharCode,end:t.endcharCode}))}},up=class{constructor(e){this.startcharCode=e.uint32,this.endcharCode=e.uint32,this.startGlyphID=e.uint32}},fp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=10,e.uint16,this.length=e.uint32,this.language=e.uint32,this.startCharCode=e.uint32,this.numChars=e.uint32,this.endCharCode=this.startCharCode+this.numChars,Z(this,"glyphs",()=>[...new Array(this.numChars)].map(s=>e.uint16))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),e<this.startCharCode||e>this.startCharCode+this.numChars?!1:e-this.startCharCode}reverse(e){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(e=!1){return e?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},cp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=12,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,Z(this,"groups",()=>[...new Array(this.numGroups)].map(s=>new dp(e)))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535?0:this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){for(let t of this.groups){let r=t.startGlyphID;if(r>e)continue;if(r===e)return t.startCharCode;if(r+(t.endCharCode-t.startCharCode)<e)continue;let s=t.startCharCode+(e-r);return{code:s,unicode:String.fromCodePoint(s)}}return{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},dp=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.startGlyphID=e.uint32}},pp=class extends qt{constructor(e,t,r){super(e,t,r),this.format=13,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32;let o=[...new Array(this.numGroups)].map(s=>new mp(e));Z(this,"groups",o)}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},mp=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.glyphID=e.uint32}},hp=class extends qt{constructor(e,t,r){super(e,t,r),this.subTableStart=e.currentPosition,this.format=14,this.length=e.uint32,this.numVarSelectorRecords=e.uint32,Z(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new gp(e)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(e){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(e){let t=this.varSelector.find(r=>r.varSelector===e);return t||!1}getSupportedVariations(){return this.varSelectors.map(e=>e.varSelector)}},gp=class{constructor(e){this.varSelector=e.uint24,this.defaultUVSOffset=e.Offset32,this.nonDefaultUVSOffset=e.Offset32}};function yp(e,t,r){let o=e.uint16;return o===0?new op(e,t,r):o===2?new sp(e,t,r):o===4?new ap(e,t,r):o===6?new ip(e,t,r):o===8?new lp(e,t,r):o===10?new fp(e,t,r):o===12?new cp(e,t,r):o===13?new pp(e,t,r):o===14?new hp(e,t,r):{}}var vp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new bp(r,this.tableStart))}getSubTable(e){return this.encodingRecords[e].table}getSupportedEncodings(){return this.encodingRecords.map(e=>({platformID:e.platformID,encodingId:e.encodingID}))}getSupportedCharCodes(e,t){let r=this.encodingRecords.findIndex(s=>s.platformID===e&&s.encodingID===t);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(e){for(let t=0;t<this.numTables;t++){let r=this.getSubTable(t).reverse(e);if(r)return r}}getGlyphId(e){let t=0;return this.encodingRecords.some((r,o)=>{let s=this.getSubTable(o);return s.getGlyphId?(t=s.getGlyphId(e),t!==0):!1}),t}supports(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(e)!==!1})}supportsVariation(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(e)!==!1})}},bp=class{constructor(e,t){let r=this.platformID=e.uint16,o=this.encodingID=e.uint16,s=this.offset=e.Offset32;Z(this,"table",()=>(e.currentPosition=t+s,yp(e,r,o)))}},wp=Object.freeze({__proto__:null,cmap:vp}),xp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},Sp=Object.freeze({__proto__:null,head:xp}),Cp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},_p=Object.freeze({__proto__:null,hhea:Cp}),Fp=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.hhea.numberOfHMetrics,n=r.maxp.numGlyphs,a=o.currentPosition;if(Z(this,"hMetrics",()=>(o.currentPosition=a,[...new Array(s)].map(l=>new kp(o.uint16,o.int16)))),s<n){let l=a+s*4;Z(this,"leftSideBearings",()=>(o.currentPosition=l,[...new Array(n-s)].map(h=>o.int16)))}}},kp=class{constructor(e,t){this.advanceWidth=e,this.lsb=t}},Op=Object.freeze({__proto__:null,hmtx:Fp}),Tp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},Pp=Object.freeze({__proto__:null,maxp:Tp}),Ap=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new Ep(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new Rp(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(e){let t=this.nameRecords.find(r=>r.nameID===e);if(t)return t.string}},Rp=class{constructor(e,t){this.length=e,this.offset=t}},Ep=class{constructor(e,t){this.platformID=e.uint16,this.encodingID=e.uint16,this.languageID=e.uint16,this.nameID=e.uint16,this.length=e.uint16,this.offset=e.Offset16,Z(this,"string",()=>(e.currentPosition=t.stringStart+this.offset,Ip(e,this)))}};function Ip(e,t){let{platformID:r,length:o}=t;if(o===0)return"";if(r===0||r===3){let a=[];for(let l=0,h=o/2;l<h;l++)a[l]=String.fromCharCode(e.uint16);return a.join("")}let s=e.readBytes(o),n=[];return s.forEach(function(a,l){n[l]=String.fromCharCode(a)}),n.join("")}var Lp=Object.freeze({__proto__:null,name:Ap}),Bp=class extends pe{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},Vp=Object.freeze({__proto__:null,OS2:Bp}),Np=class extends pe{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<lu.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let n=r.int8;r.skip(n),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+n+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(e){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let t=this.glyphNameIndex[e];if(t<258)return lu[t];let r=this.glyphNameOffsets[e],s=this.glyphNameOffsets[e+1]-r-1;return s===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(s,this.namesOffset+r,8,!0).map(a=>String.fromCharCode(a)).join(""))}},lu=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],zp=Object.freeze({__proto__:null,post:Np}),Dp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,Z(this,"horizAxis",()=>new En({offset:e.offset+this.horizAxisOffset},t)),Z(this,"vertAxis",()=>new En({offset:e.offset+this.vertAxisOffset},t)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>new En({offset:e.offset+this.itemVarStoreOffset},t)))}},En=class extends pe{constructor(e,t){let{p:r}=super(e,t,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,Z(this,"baseTagList",()=>new Mp({offset:e.offset+this.baseTagListOffset},t)),Z(this,"baseScriptList",()=>new jp({offset:e.offset+this.baseScriptListOffset},t))}},Mp=class extends pe{constructor(e,t){let{p:r}=super(e,t,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},jp=class extends pe{constructor(e,t){let{p:r}=super(e,t,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;Z(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(s=>new Gp(this.start,r))))}},Gp=class{constructor(e,t){this.baseScriptTag=t.tag,this.baseScriptOffset=t.Offset16,Z(this,"baseScriptTable",()=>(t.currentPosition=e+this.baseScriptOffset,new Up(t)))}},Up=class{constructor(e){this.start=e.currentPosition,this.baseValuesOffset=e.Offset16,this.defaultMinMaxOffset=e.Offset16,this.baseLangSysCount=e.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(t=>new Wp(this.start,e)),Z(this,"baseValues",()=>(e.currentPosition=this.start+this.baseValuesOffset,new Hp(e))),Z(this,"defaultMinMax",()=>(e.currentPosition=this.start+this.defaultMinMaxOffset,new gu(e)))}},Wp=class{constructor(e,t){this.baseLangSysTag=t.tag,this.minMaxOffset=t.Offset16,Z(this,"minMax",()=>(t.currentPosition=e+this.minMaxOffset,new gu(t)))}},Hp=class{constructor(e){this.parser=e,this.start=e.currentPosition,this.defaultBaselineIndex=e.uint16,this.baseCoordCount=e.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(t=>e.Offset16)}getTable(e){return this.parser.currentPosition=this.start+this.baseCoords[e],new Yp(this.parser)}},gu=class{constructor(e){this.minCoord=e.Offset16,this.maxCoord=e.Offset16,this.featMinMaxCount=e.uint16;let t=e.currentPosition;Z(this,"featMinMaxRecords",()=>(e.currentPosition=t,[...new Array(this.featMinMaxCount)].map(r=>new qp(e))))}},qp=class{constructor(e){this.featureTableTag=e.tag,this.minCoord=e.Offset16,this.maxCoord=e.Offset16}},Yp=class{constructor(e){this.baseCoordFormat=e.uint16,this.coordinate=e.int16,this.baseCoordFormat===2&&(this.referenceGlyph=e.uint16,this.baseCoordPoint=e.uint16),this.baseCoordFormat===3&&(this.deviceTable=e.Offset16)}},Zp=Object.freeze({__proto__:null,BASE:Dp}),uu=class{constructor(e){this.classFormat=e.uint16,this.classFormat===1&&(this.startGlyphID=e.uint16,this.glyphCount=e.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.classFormat===2&&(this.classRangeCount=e.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(t=>new Xp(e)))}},Xp=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.class=e.uint16}},bo=class extends Be{constructor(e){super(e),this.coverageFormat=e.uint16,this.coverageFormat===1&&(this.glyphCount=e.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.coverageFormat===2&&(this.rangeCount=e.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(t=>new Kp(e)))}},Kp=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.startCoverageIndex=e.uint16}},Jp=class{constructor(e,t){this.table=e,this.parser=t,this.start=t.currentPosition,this.format=t.uint16,this.variationRegionListOffset=t.Offset32,this.itemVariationDataCount=t.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>t.Offset32)}},Qp=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,Z(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new uu(r)}),this.attachListOffset=r.Offset16,Z(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new $p(r)}),this.ligCaretListOffset=r.Offset16,Z(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new tm(r)}),this.markAttachClassDefOffset=r.Offset16,Z(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new uu(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,Z(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new sm(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,Z(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Jp(r)}))}},$p=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,this.glyphCount=e.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16)}getPoint(e){return this.parser.currentPosition=this.start+this.attachPointOffsets[e],new em(this.parser)}},em=class{constructor(e){this.pointCount=e.uint16,this.pointIndices=[...new Array(this.pointCount)].map(t=>e.uint16)}},tm=class extends Be{constructor(e){super(e),this.coverageOffset=e.Offset16,Z(this,"coverage",()=>(e.currentPosition=this.start+this.coverageOffset,new bo(e))),this.ligGlyphCount=e.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(t=>e.Offset16)}getLigGlyph(e){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[e],new rm(this.parser)}},rm=class extends Be{constructor(e){super(e),this.caretCount=e.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(t=>e.Offset16)}getCaretValue(e){return this.parser.currentPosition=this.start+this.caretValueOffsets[e],new om(this.parser)}},om=class{constructor(e){this.caretValueFormat=e.uint16,this.caretValueFormat===1&&(this.coordinate=e.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=e.uint16),this.caretValueFormat===3&&(this.coordinate=e.int16,this.deviceOffset=e.Offset16)}},sm=class extends Be{constructor(e){super(e),this.markGlyphSetTableFormat=e.uint16,this.markGlyphSetCount=e.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(t=>e.Offset32)}getMarkGlyphSet(e){return this.parser.currentPosition=this.start+this.coverageOffsets[e],new bo(this.parser)}},nm=Object.freeze({__proto__:null,GDEF:Qp}),fu=class extends Be{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(e){super(e),this.scriptCount=e.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(t=>new am(e))}},am=class{constructor(e){this.scriptTag=e.tag,this.scriptOffset=e.Offset16}},im=class extends Be{constructor(e){super(e),this.defaultLangSys=e.Offset16,this.langSysCount=e.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(t=>new lm(e))}},lm=class{constructor(e){this.langSysTag=e.tag,this.langSysOffset=e.Offset16}},cu=class{constructor(e){this.lookupOrder=e.Offset16,this.requiredFeatureIndex=e.uint16,this.featureIndexCount=e.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(t=>e.uint16)}},du=class extends Be{static EMPTY={featureCount:0,featureRecords:[]};constructor(e){super(e),this.featureCount=e.uint16,this.featureRecords=[...new Array(this.featureCount)].map(t=>new um(e))}},um=class{constructor(e){this.featureTag=e.tag,this.featureOffset=e.Offset16}},fm=class extends Be{constructor(e){super(e),this.featureParams=e.Offset16,this.lookupIndexCount=e.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(t=>e.uint16)}getFeatureParams(){if(this.featureParams>0){let e=this.parser;e.currentPosition=this.start+this.featureParams;let t=this.featureTag;if(t==="size")return new dm(e);if(t.startsWith("cc"))return new cm(e);if(t.startsWith("ss"))return new pm(e)}}},cm=class{constructor(e){this.format=e.uint16,this.featUiLabelNameId=e.uint16,this.featUiTooltipTextNameId=e.uint16,this.sampleTextNameId=e.uint16,this.numNamedParameters=e.uint16,this.firstParamUiLabelNameId=e.uint16,this.charCount=e.uint16,this.character=[...new Array(this.charCount)].map(t=>e.uint24)}},dm=class{constructor(e){this.designSize=e.uint16,this.subfamilyIdentifier=e.uint16,this.subfamilyNameID=e.uint16,this.smallEnd=e.uint16,this.largeEnd=e.uint16}},pm=class{constructor(e){this.version=e.uint16,this.UINameID=e.uint16}};function yu(e){e.parser.currentPosition-=2,delete e.coverageOffset,delete e.getCoverageTable}var Fr=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.coverageOffset=e.Offset16}getCoverageTable(){let e=this.parser;return e.currentPosition=this.start+this.coverageOffset,new bo(e)}},Ln=class{constructor(e){this.glyphSequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},mm=class extends Fr{constructor(e){super(e),this.deltaGlyphID=e.int16}},hm=class extends Fr{constructor(e){super(e),this.sequenceCount=e.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(t=>e.Offset16)}getSequence(e){let t=this.parser;return t.currentPosition=this.start+this.sequenceOffsets[e],new gm(t)}},gm=class{constructor(e){this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},ym=class extends Fr{constructor(e){super(e),this.alternateSetCount=e.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(t=>e.Offset16)}getAlternateSet(e){let t=this.parser;return t.currentPosition=this.start+this.alternateSetOffsets[e],new vm(t)}},vm=class{constructor(e){this.glyphCount=e.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},bm=class extends Fr{constructor(e){super(e),this.ligatureSetCount=e.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(t=>e.Offset16)}getLigatureSet(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureSetOffsets[e],new wm(t)}},wm=class extends Be{constructor(e){super(e),this.ligatureCount=e.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(t=>e.Offset16)}getLigature(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureOffsets[e],new xm(t)}},xm=class{constructor(e){this.ligatureGlyph=e.uint16,this.componentCount=e.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(t=>e.uint16)}},Sm=class extends Fr{constructor(e){super(e),this.substFormat===1&&(this.subRuleSetCount=e.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.classDefOffset=e.Offset16,this.subClassSetCount=e.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(yu(this),this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new Ln(e)))}getSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.subRuleSetOffsets[e],new Cm(t)}getSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.subClassSetOffsets[e],new _m(t)}getCoverageTable(e){if(this.substFormat!==3&&!e)return super.getCoverageTable();if(!e)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let t=this.parser;return t.currentPosition=this.start+this.coverageOffsets[e],new bo(t)}},Cm=class extends Be{constructor(e){super(e),this.subRuleCount=e.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.subRuleOffsets[e],new vu(t)}},vu=class{constructor(e){this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(t=>e.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new Ln(e))}},_m=class extends Be{constructor(e){super(e),this.subClassRuleCount=e.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.subClassRuleOffsets[e],new Fm(t)}},Fm=class extends vu{constructor(e){super(e)}},km=class extends Fr{constructor(e){super(e),this.substFormat===1&&(this.chainSubRuleSetCount=e.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=e.Offset16,this.inputClassDefOffset=e.Offset16,this.lookaheadClassDefOffset=e.Offset16,this.chainSubClassSetCount=e.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(yu(this),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.inputGlyphCount=e.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.seqLookupCount=e.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(t=>new bu(e)))}getChainSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleSetOffsets[e],new Om(t)}getChainSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubClassSetOffsets[e],new Pm(t)}getCoverageFromOffset(e){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let t=this.parser;return t.currentPosition=this.start+e,new bo(t)}},Om=class extends Be{constructor(e){super(e),this.chainSubRuleCount=e.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new Tm(t)}},Tm=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(t=>new Ln(e))}},Pm=class extends Be{constructor(e){super(e),this.chainSubClassRuleCount=e.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new Am(t)}},Am=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new bu(e))}},bu=class extends Be{constructor(e){super(e),this.sequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},Rm=class extends Be{constructor(e){super(e),this.substFormat=e.uint16,this.extensionLookupType=e.uint16,this.extensionOffset=e.Offset32}},Em=class extends Fr{constructor(e){super(e),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Im={buildSubtable:function(e,t){let r=new[void 0,mm,hm,ym,bm,Sm,km,Rm,Em][e](t);return r.type=e,r}},Yt=class extends Be{constructor(e){super(e)}},Lm=class extends Yt{constructor(e){super(e),console.log("lookup type 1")}},Bm=class extends Yt{constructor(e){super(e),console.log("lookup type 2")}},Vm=class extends Yt{constructor(e){super(e),console.log("lookup type 3")}},Nm=class extends Yt{constructor(e){super(e),console.log("lookup type 4")}},zm=class extends Yt{constructor(e){super(e),console.log("lookup type 5")}},Dm=class extends Yt{constructor(e){super(e),console.log("lookup type 6")}},Mm=class extends Yt{constructor(e){super(e),console.log("lookup type 7")}},jm=class extends Yt{constructor(e){super(e),console.log("lookup type 8")}},Gm=class extends Yt{constructor(e){super(e),console.log("lookup type 9")}},Um={buildSubtable:function(e,t){let r=new[void 0,Lm,Bm,Vm,Nm,zm,Dm,Mm,jm,Gm][e](t);return r.type=e,r}},pu=class extends Be{static EMPTY={lookupCount:0,lookups:[]};constructor(e){super(e),this.lookupCount=e.uint16,this.lookups=[...new Array(this.lookupCount)].map(t=>e.Offset16)}},Wm=class extends Be{constructor(e,t){super(e),this.ctType=t,this.lookupType=e.uint16,this.lookupFlag=e.uint16,this.subTableCount=e.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>e.Offset16),this.markFilteringSet=e.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(e){let t=this.ctType==="GSUB"?Im:Um;return this.parser.currentPosition=this.start+this.subtableOffsets[e],t.buildSubtable(this.lookupType,this.parser)}},wu=class extends pe{constructor(e,t,r){let{p:o,tableStart:s}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let n=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);Z(this,"scriptList",()=>n?fu.EMPTY:(o.currentPosition=s+this.scriptListOffset,new fu(o))),Z(this,"featureList",()=>n?du.EMPTY:(o.currentPosition=s+this.featureListOffset,new du(o))),Z(this,"lookupList",()=>n?pu.EMPTY:(o.currentPosition=s+this.lookupListOffset,new pu(o))),this.featureVariationsOffset&&Z(this,"featureVariations",()=>n?FeatureVariations.EMPTY:(o.currentPosition=s+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(e=>e.scriptTag)}getScriptTable(e){let t=this.scriptList.scriptRecords.find(o=>o.scriptTag===e);this.parser.currentPosition=this.scriptList.start+t.scriptOffset;let r=new im(this.parser);return r.scriptTag=e,r}ensureScriptTable(e){return typeof e=="string"?this.getScriptTable(e):e}getSupportedLangSys(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys!==0,r=e.langSysRecords.map(o=>o.langSysTag);return t&&r.unshift("dflt"),r}getDefaultLangSysTable(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys;if(t!==0){this.parser.currentPosition=e.start+t;let r=new cu(this.parser);return r.langSysTag="",r.defaultForScript=e.scriptTag,r}}getLangSysTable(e,t="dflt"){if(t==="dflt")return this.getDefaultLangSysTable(e);e=this.ensureScriptTable(e);let r=e.langSysRecords.find(s=>s.langSysTag===t);this.parser.currentPosition=e.start+r.langSysOffset;let o=new cu(this.parser);return o.langSysTag=t,o}getFeatures(e){return e.featureIndices.map(t=>this.getFeature(t))}getFeature(e){let t;if(parseInt(e)==e?t=this.featureList.featureRecords[e]:t=this.featureList.featureRecords.find(o=>o.featureTag===e),!t)return;this.parser.currentPosition=this.featureList.start+t.featureOffset;let r=new fm(this.parser);return r.featureTag=t.featureTag,r}getLookups(e){return e.lookupListIndices.map(t=>this.getLookup(t))}getLookup(e,t){let r=this.lookupList.lookups[e];return this.parser.currentPosition=this.lookupList.start+r,new Wm(this.parser,t)}},Hm=class extends wu{constructor(e,t){super(e,t,"GSUB")}getLookup(e){return super.getLookup(e,"GSUB")}},qm=Object.freeze({__proto__:null,GSUB:Hm}),Ym=class extends wu{constructor(e,t){super(e,t,"GPOS")}getLookup(e){return super.getLookup(e,"GPOS")}},Zm=Object.freeze({__proto__:null,GPOS:Ym}),Xm=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new Km(r)}},Km=class extends Be{constructor(e){super(e),this.numEntries=e.uint16,this.documentRecords=[...new Array(this.numEntries)].map(t=>new Jm(e))}getDocument(e){let t=this.documentRecords[e];if(!t)return"";let r=this.start+t.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(t.svgDocLength)}getDocumentForGlyph(e){let t=this.documentRecords.findIndex(r=>r.startGlyphID<=e&&e<=r.endGlyphID);return t===-1?"":this.getDocument(t)}},Jm=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.svgDocOffset=e.Offset32,this.svgDocLength=e.uint32}},Qm=Object.freeze({__proto__:null,SVG:Xm}),$m=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;Z(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(n=>new eh(r))));let s=o+this.axisCount*this.axisSize;Z(this,"instances",()=>{let n=[];for(let a=0;a<this.instanceCount;a++)r.currentPosition=s+a*this.instanceSize,n.push(new th(r,this.axisCount,this.instanceSize));return n})}getSupportedAxes(){return this.axes.map(e=>e.tag)}getAxis(e){return this.axes.find(t=>t.tag===e)}},eh=class{constructor(e){this.tag=e.tag,this.minValue=e.fixed,this.defaultValue=e.fixed,this.maxValue=e.fixed,this.flags=e.flags(16),this.axisNameID=e.uint16}},th=class{constructor(e,t,r){let o=e.currentPosition;this.subfamilyNameID=e.uint16,e.uint16,this.coordinates=[...new Array(t)].map(s=>e.fixed),e.currentPosition-o<r&&(this.postScriptNameID=e.uint16)}},rh=Object.freeze({__proto__:null,fvar:$m}),oh=class extends pe{constructor(e,t){let{p:r}=super(e,t),o=e.length/2;Z(this,"items",()=>[...new Array(o)].map(s=>r.fword))}},sh=Object.freeze({__proto__:null,cvt:oh}),nh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},ah=Object.freeze({__proto__:null,fpgm:nh}),ih=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRanges=r.uint16,Z(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(s=>new lh(r)))}},lh=class{constructor(e){this.rangeMaxPPEM=e.uint16,this.rangeGaspBehavior=e.uint16}},uh=Object.freeze({__proto__:null,gasp:ih}),fh=class extends pe{constructor(e,t){super(e,t)}getGlyphData(e,t){return this.parser.currentPosition=this.tableStart+e,this.parser.readBytes(t)}},ch=Object.freeze({__proto__:null,glyf:fh}),dh=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,Z(this,"offsets",()=>[...new Array(s)].map(n=>o.Offset16))):Z(this,"offsets",()=>[...new Array(s)].map(n=>o.Offset32))}getGlyphDataOffsetAndLength(e){let t=this.offsets[e]*this.x2?2:1,r=this.offsets[e+1]*this.x2?2:1;return{offset:t,length:r-t}}},ph=Object.freeze({__proto__:null,loca:dh}),mh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},hh=Object.freeze({__proto__:null,prep:mh}),gh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},yh=Object.freeze({__proto__:null,CFF:gh}),vh=class extends pe{constructor(e,t){let{p:r}=super(e,t);Z(this,"data",()=>r.readBytes())}},bh=Object.freeze({__proto__:null,CFF2:vh}),wh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,Z(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new xh(r)))}},xh=class{constructor(e){this.glyphIndex=e.uint16,this.vertOriginY=e.int16}},Sh=Object.freeze({__proto__:null,VORG:wh}),Ch=class{constructor(e){this.indexSubTableArrayOffset=e.Offset32,this.indexTablesSize=e.uint32,this.numberofIndexSubTables=e.uint32,this.colorRef=e.uint32,this.hori=new cs(e),this.vert=new cs(e),this.startGlyphIndex=e.uint16,this.endGlyphIndex=e.uint16,this.ppemX=e.uint8,this.ppemY=e.uint8,this.bitDepth=e.uint8,this.flags=e.int8}},_h=class{constructor(e){this.hori=new cs(e),this.vert=new cs(e),this.ppemX=e.uint8,this.ppemY=e.uint8,this.substitutePpemX=e.uint8,this.substitutePpemY=e.uint8}},cs=class{constructor(e){this.ascender=e.int8,this.descender=e.int8,this.widthMax=e.uint8,this.caretSlopeNumerator=e.int8,this.caretSlopeDenominator=e.int8,this.caretOffset=e.int8,this.minOriginSB=e.int8,this.minAdvanceSB=e.int8,this.maxBeforeBL=e.int8,this.minAfterBL=e.int8,this.pad1=e.int8,this.pad2=e.int8}},xu=class extends pe{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,Z(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(s=>new Ch(o)))}},Fh=Object.freeze({__proto__:null,EBLC:xu}),Su=class extends pe{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},kh=Object.freeze({__proto__:null,EBDT:Su}),Oh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,Z(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new _h(r)))}},Th=Object.freeze({__proto__:null,EBSC:Oh}),Ph=class extends xu{constructor(e,t){super(e,t,"CBLC")}},Ah=Object.freeze({__proto__:null,CBLC:Ph}),Rh=class extends Su{constructor(e,t){super(e,t,"CBDT")}},Eh=Object.freeze({__proto__:null,CBDT:Rh}),Ih=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,Z(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},Lh=Object.freeze({__proto__:null,sbix:Ih}),Bh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(e){let t=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=t;let r=new In(this.parser),o=r.gID,s=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=s;let n=new In(this.parser),a=n.gID;if(o===e)return r;if(a===e)return n;for(;t!==s;){let l=t+(s-t)/12;this.parser.currentPosition=l;let h=new In(this.parser),f=h.gID;if(f===e)return h;f>e?s=l:f<e&&(t=l)}return!1}getLayers(e){let t=this.getBaseGlyphRecord(e);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*t.firstLayerIndex,[...new Array(t.numLayers)].map(r=>new Vh(p))}},In=class{constructor(e){this.gID=e.uint16,this.firstLayerIndex=e.uint16,this.numLayers=e.uint16}},Vh=class{constructor(e){this.gID=e.uint16,this.paletteIndex=e.uint16}},Nh=Object.freeze({__proto__:null,COLR:Bh}),zh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(s=>r.uint16),Z(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(s=>new Dh(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,Z(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new Mh(r,o))),Z(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new jh(r,o))),Z(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new Gh(r,o))))}},Dh=class{constructor(e){this.blue=e.uint8,this.green=e.uint8,this.red=e.uint8,this.alpha=e.uint8}},Mh=class{constructor(e,t){this.paletteTypes=[...new Array(t)].map(r=>e.uint32)}},jh=class{constructor(e,t){this.paletteLabels=[...new Array(t)].map(r=>e.uint16)}},Gh=class{constructor(e,t){this.paletteEntryLabels=[...new Array(t)].map(r=>e.uint16)}},Uh=Object.freeze({__proto__:null,CPAL:zh}),Wh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new Hh(r))}getData(e){let t=this.signatureRecords[e];return this.parser.currentPosition=this.tableStart+t.offset,new qh(this.parser)}},Hh=class{constructor(e){this.format=e.uint32,this.length=e.uint32,this.offset=e.Offset32}},qh=class{constructor(e){e.uint16,e.uint16,this.signatureLength=e.uint32,this.signature=e.readBytes(this.signatureLength)}},Yh=Object.freeze({__proto__:null,DSIG:Wh}),Zh=class extends pe{constructor(e,t,r){let{p:o}=super(e,t),s=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(n=>new Xh(o,s))}},Xh=class{constructor(e,t){this.pixelSize=e.uint8,this.maxWidth=e.uint8,this.widths=e.readBytes(t)}},Kh=Object.freeze({__proto__:null,hdmx:Zh}),Jh=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.nTables=r.uint16,Z(this,"tables",()=>{let o=this.tableStart+4,s=[];for(let n=0;n<this.nTables;n++){r.currentPosition=o;let a=new Qh(r);s.push(a),o+=a}return s})}},Qh=class{constructor(e){this.version=e.uint16,this.length=e.uint16,this.coverage=e.flags(8),this.format=e.uint8,this.format===0&&(this.nPairs=e.uint16,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16,Z(this,"pairs",()=>[...new Array(this.nPairs)].map(t=>new $h(e)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},$h=class{constructor(e){this.left=e.uint16,this.right=e.uint16,this.value=e.fword}},eg=Object.freeze({__proto__:null,kern:Jh}),tg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},rg=Object.freeze({__proto__:null,LTSH:tg}),og=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,Z(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},sg=Object.freeze({__proto__:null,MERG:og}),ng=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new ag(this.tableStart,r))}},ag=class{constructor(e,t){this.tableStart=e,this.parser=t,this.tag=t.tag,this.dataOffset=t.Offset32,this.dataLength=t.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},ig=Object.freeze({__proto__:null,meta:ng}),lg=class extends pe{constructor(e,t){super(e,t),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},ug=Object.freeze({__proto__:null,PCLT:lg}),fg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new cg(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new dg(r))}},cg=class{constructor(e){this.bCharSet=e.uint8,this.xRatio=e.uint8,this.yStartRatio=e.uint8,this.yEndRatio=e.uint8}},dg=class{constructor(e){this.recs=e.uint16,this.startsz=e.uint8,this.endsz=e.uint8,this.records=[...new Array(this.recs)].map(t=>new pg(e))}},pg=class{constructor(e){this.yPelHeight=e.uint16,this.yMax=e.int16,this.yMin=e.int16}},mg=Object.freeze({__proto__:null,VDMX:fg}),hg=class extends pe{constructor(e,t){let{p:r}=super(e,t);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},gg=Object.freeze({__proto__:null,vhea:hg}),yg=class extends pe{constructor(e,t,r){super(e,t);let o=r.vhea.numOfLongVerMetrics,s=r.maxp.numGlyphs,n=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=n,[...new Array(o)].map(a=>new vg(p.uint16,p.int16)))),o<s){let a=n+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=a,[...new Array(s-o)].map(l=>p.int16)))}}},vg=class{constructor(e,t){this.advanceHeight=e,this.topSideBearing=t}},bg=Object.freeze({__proto__:null,vmtx:yg});var Cu=u(X(),1);var{kebabCase:wg}=ye(Cu.privateApis);function _u(e){let t=e.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:wg(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(t)}var gt=u(D(),1);function xg(){let{installFonts:e}=(0,wo.useContext)(lt),[t,r]=(0,wo.useState)(!1),[o,s]=(0,wo.useState)(null),n=g=>{l(g)},a=g=>{l(g.target.files)},l=async g=>{if(!g)return;s(null),r(!0);let y=new Set,T=[...g],O=!1,_=T.map(async b=>{if(!await f(b))return O=!0,null;if(y.has(b.name))return null;let q=(((b.name??"").split(".")??[]).pop()??"").toLowerCase();return Tn.includes(q)?(y.add(b.name),b):null}),S=(await Promise.all(_)).filter(b=>b!==null);if(S.length>0)h(S);else{let b=O?(0,Yr.__)("Sorry, you are not allowed to upload this file type."):(0,Yr.__)("No fonts found to install.");s({type:"error",message:b}),r(!1)}},h=async g=>{let y=await Promise.all(g.map(async T=>{let O=await d(T);return await tr(O,O.file,"all"),O}));m(y)};async function f(g){let y=new ds("Uploaded Font");try{let T=await c(g);return await y.fromDataBuffer(T,"font"),!0}catch{return!1}}async function c(g){return new Promise((y,T)=>{let O=new window.FileReader;O.readAsArrayBuffer(g),O.onload=()=>y(O.result),O.onerror=T})}let d=async g=>{let y=await c(g),T=new ds("Uploaded Font");T.fromDataBuffer(y,g.name);let _=(await new Promise($=>T.onload=$)).detail.font,{name:S}=_.opentype.tables,b=S.get(16)||S.get(1),P=S.get(2).toLowerCase().includes("italic"),q=_.opentype.tables["OS/2"].usWeightClass||"normal",N=!!_.opentype.tables.fvar&&_.opentype.tables.fvar.axes.find(({tag:$})=>$==="wght"),W=N?`${N.minValue} ${N.maxValue}`:null;return{file:g,fontFamily:b,fontStyle:P?"italic":"normal",fontWeight:W||q}},m=async g=>{let y=_u(g);try{await e(y),s({type:"success",message:(0,Yr.__)("Fonts were installed successfully.")})}catch(T){let O=T;s({type:"error",message:O.message,errors:O?.installationErrors})}r(!1)};return(0,gt.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,gt.jsx)(tt.DropZone,{onFilesDrop:n}),(0,gt.jsxs)(tt.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,gt.jsxs)(tt.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>s(null),children:[o.message,o.errors&&(0,gt.jsx)("ul",{children:o.errors.map((g,y)=>(0,gt.jsx)("li",{children:g},y))})]}),t&&(0,gt.jsx)(tt.FlexItem,{children:(0,gt.jsx)("div",{className:"font-library__upload-area",children:(0,gt.jsx)(tt.ProgressBar,{})})}),!t&&(0,gt.jsx)(tt.FormFileUpload,{accept:Tn.map(g=>`.${g}`).join(","),multiple:!0,onChange:a,render:({openFileDialog:g})=>(0,gt.jsx)(tt.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,Yr.__)("Upload font")})}),(0,gt.jsx)(tt.__experimentalText,{className:"font-library__upload-area__text",children:(0,Yr.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var ps=xg;var ku=u(D(),1),{Tabs:w6}=ye(Bn.privateApis),x6={id:"installed-fonts",title:(0,ms._x)("Library","Font library")},S6={id:"upload-fonts",title:(0,ms._x)("Upload","noun")};var Ou=u(ie(),1),Vn=u(X(),1),Cg=u(ve(),1);var Tu=u(D(),1);var Nn=u(D(),1);var Pu=u(ie(),1),hs=u(X(),1);var Au=u(D(),1);var Dn=u(D(),1);var At=u(ie(),1),Mn=u(X(),1),Rg=u(ve(),1);var Ru=u(it(),1);var Pg=u(D(),1),{useSettingsForBlockElement:Q6,TypographyPanel:$6}=ye(Ru.privateApis);var Ag=u(D(),1);var jn=u(D(),1),lC={text:{description:(0,At.__)("Manage the fonts used on the site."),title:(0,At.__)("Text")},link:{description:(0,At.__)("Manage the fonts and typography used on the links."),title:(0,At.__)("Links")},heading:{description:(0,At.__)("Manage the fonts and typography used on headings."),title:(0,At.__)("Headings")},caption:{description:(0,At.__)("Manage the fonts and typography used on captions."),title:(0,At.__)("Captions")},button:{description:(0,At.__)("Manage the fonts and typography used on buttons."),title:(0,At.__)("Buttons")}};var Bg=u(ie(),1),Vg=u(X(),1),Iu=u(it(),1);var Zr=u(X(),1),Eu=u(ie(),1);var Lg=u(ve(),1);var Eg=u(X(),1),Ig=u(D(),1);var Gn=u(D(),1);var Un=u(D(),1),{useSettingsForBlockElement:_C,ColorPanel:FC}=ye(Iu.privateApis);var Ug=u(ie(),1),Mu=u(X(),1);var Dg=u(pr(),1),Wn=u(X(),1),Mg=u(ie(),1);var ys=u(X(),1);var gs=u(X(),1);var Lu=u(D(),1);function Bu(){let{paletteColors:e}=zr();return e.slice(0,4).map(({slug:t,color:r},o)=>(0,Lu.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${t}-${o}`))}var So=u(D(),1),Ng={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},zg=({label:e,isFocused:t,withHoverView:r})=>(0,So.jsx)(jr,{label:e,isFocused:t,withHoverView:r,children:({key:o})=>(0,So.jsx)(gs.__unstableMotion.div,{variants:Ng,style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(gs.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,So.jsx)(Bu,{})})},o)}),Vu=zg;var kr=u(D(),1),Nu=["color"];function vs({title:e,gap:t=2}){let r=Uo(Nu);return r?.length<=1?null:(0,kr.jsxs)(ys.__experimentalVStack,{spacing:3,children:[e&&(0,kr.jsx)(St,{level:3,children:e}),(0,kr.jsx)(ys.__experimentalGrid,{gap:t,children:r.map((o,s)=>(0,kr.jsx)(Ur,{variation:o,isPill:!0,properties:Nu,showTooltip:!0,children:()=>(0,kr.jsx)(Vu,{})},s))})]})}var zu=u(D(),1);var jg=u(pr(),1),bs=u(X(),1),Gg=u(ie(),1);var Du=u(D(),1);var Hn=u(D(),1),{Tabs:KC}=ye(Mu.privateApis);var Hg=u(ie(),1),Gu=u(it(),1),qg=u(X(),1);var ju=u(it(),1);var Wg=u(D(),1);var{BackgroundPanel:e3}=ye(ju.privateApis);var qn=u(D(),1),{useHasBackgroundPanel:i3}=ye(Gu.privateApis);var Or=u(X(),1),Yn=u(ie(),1);var Jg=u(ve(),1);var Yg=u(X(),1),Zg=u(ie(),1),Xg=u(D(),1);var Zn=u(D(),1),{Menu:b3}=ye(Or.privateApis);var We=u(X(),1),Co=u(ie(),1);var ws=u(ve(),1);var Xn=u(D(),1),{Menu:L3}=ye(We.privateApis),B3=[{label:(0,Co.__)("Rename"),action:"rename"},{label:(0,Co.__)("Delete"),action:"delete"}],V3=[{label:(0,Co.__)("Reset"),action:"reset"}];var Qg=u(D(),1);var ty=u(ie(),1),Wu=u(it(),1);var Uu=u(it(),1),$g=u(ve(),1);var ey=u(D(),1),{useSettingsForBlockElement:H3,DimensionsPanel:q3}=ye(Uu.privateApis);var Kn=u(D(),1),{useHasDimensionsPanel:$3,useSettingsForBlockElement:e_}=ye(Wu.privateApis);var Ku=u(X(),1),ny=u(ie(),1);var oy=u(ie(),1),sy=u(X(),1);var Hu=u(wt(),1),qu=u(pt(),1),Ss=u(ve(),1),Yu=u(X(),1),Zu=u(ie(),1);var xs=u(D(),1);function ry({gap:e=2}){let{user:t}=(0,Ss.useContext)(Je),r=t?.styles,s=(0,qu.useSelect)(a=>{let l=a(Hu.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(l)?l:void 0},[])?.filter(a=>!co(a,["color"])&&!co(a,["typography","spacing"])),n=(0,Ss.useMemo)(()=>[...[{title:(0,Zu.__)("Default"),settings:{},styles:{}},...s??[]].map(l=>{let h=l?.styles?.blocks?{...l.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(m=>{if(r.blocks?.[m]?.css){let g=h[m]||{},y={css:`${h[m]?.css||""} ${r.blocks?.[m]?.css?.trim()||""}`};h[m]={...g,...y}}});let f=r?.css||l.styles?.css?{css:`${l.styles?.css||""} ${r?.css||""}`}:{},c=Object.keys(h).length>0?{blocks:h}:{},d={...l.styles,...f,...c};return{...l,settings:l.settings??{},styles:d}})],[s,r?.blocks,r?.css]);return!s||s.length<1?null:(0,xs.jsx)(Yu.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:e,children:n.map((a,l)=>(0,xs.jsx)(Ur,{variation:a,children:h=>(0,xs.jsx)(bn,{label:a?.title,withHoverView:!0,isFocused:h,variation:a})},l))})}var Jn=ry;var Xu=u(D(),1);var Qn=u(D(),1);var ay=u(ie(),1),iy=u(X(),1),Ju=u(it(),1);var $n=u(D(),1),{AdvancedPanel:v_}=ye(Ju.privateApis);var af=u(ie(),1),ta=u(X(),1),ra=u(ve(),1);var ly=u(pt(),1),uy=u(wt(),1),Qu=u(ve(),1);var tf=u(ie(),1),rf=u(X(),1),Cs=u(ef(),1),fy=u(wt(),1),cy=u(pt(),1);var of=u(kn(),1),sf=u(D(),1),C_=3600*1e3*24;var ea=u(X(),1),_o=u(ie(),1);var nf=u(D(),1);var oa=u(D(),1);var sa=u(ie(),1),Zt=u(X(),1);var gy=u(ve(),1);var py=u(X(),1),my=u(ie(),1),hy=u(D(),1);var na=u(D(),1),{Menu:W_}=ye(Zt.privateApis);var cf=u(ie(),1),Mt=u(X(),1);var df=u(ve(),1);var yy=u(it(),1),vy=u(ie(),1);var by=u(D(),1);var wy=u(X(),1),lf=u(ie(),1),xy=u(D(),1);var Fo=u(X(),1),Sy=u(ie(),1),Cy=u(ve(),1),uf=u(D(),1);var Xt=u(X(),1),ff=u(D(),1);var aa=u(D(),1),{Menu:l4}=ye(Mt.privateApis);var la=u(D(),1);var ua=u(D(),1);function Xr(e){return function({value:r,baseValue:o,onChange:s,...n}){return(0,ua.jsx)(fo,{value:r,baseValue:o,onChange:s,children:(0,ua.jsx)(e,{...n})})}}var Oy=Xr(Jn);var Ty=Xr(vs);var Py=Xr(Ko);var Kr=u(D(),1);function fa({value:e,baseValue:t,onChange:r,activeTab:o="installed-fonts"}){let s;switch(o){case"upload-fonts":s=(0,Kr.jsx)(ps,{});break;case"installed-fonts":s=(0,Kr.jsx)(ss,{});break;default:s=(0,Kr.jsx)(as,{slug:o})}return(0,Kr.jsx)(fo,{value:e,baseValue:t,onChange:r,children:(0,Kr.jsx)($o,{children:s})})}var hf=u(Ws()),{unlock:ca}=(0,hf.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='7667192f29']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","7667192f29"),e.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(e)}var{Tabs:_s}=ca(gf.privateApis),{useGlobalStyles:Ay}=ca(yf.privateApis);function Ry(){let{records:e=[]}=(0,Fs.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[t,r]=(0,bf.useState)("installed-fonts"),{base:o,user:s,setUser:n,isReady:a}=Ay(),l=(0,vf.useSelect)(f=>f(Fs.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!a)return null;let h=[{id:"installed-fonts",title:(0,Jr._x)("Library","Font library")}];return l&&(h.push({id:"upload-fonts",title:(0,Jr._x)("Upload","noun")}),h.push(...(e||[]).map(({slug:f,name:c})=>({id:f,title:e&&e.length===1&&f==="google-fonts"?(0,Jr.__)("Install Fonts"):c})))),React.createElement(Qs,{title:(0,Jr.__)("Fonts"),className:"font-library-page"},React.createElement(_s,{selectedTabId:t,onSelect:f=>r(f)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(_s.TabList,null,h.map(({id:f,title:c})=>React.createElement(_s.Tab,{key:f,tabId:f},c)))),h.map(({id:f})=>React.createElement(_s.TabPanel,{key:f,tabId:f,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(fa,{value:s,baseValue:o,onChange:n,activeTab:f})))))}function Ey(){return React.createElement(Ry,null)}var Iy=Ey;export{Iy as stage}; +}`,globalThis.document.head.appendChild(n),n}var Ox=[0,1,0,0],Px=[79,84,84,79],Fx=[119,79,70,70],kx=[119,79,70,50];function Ki(e,t){if(e.length===t.length){for(let r=0;r<e.length;r++)if(e[r]!==t[r])return;return!0}}function Ax(e){let t=[e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3)];if(Ki(t,Ox)||Ki(t,Px))return"SFNT";if(Ki(t,Fx))return"WOFF";if(Ki(t,kx))return"WOFF2"}function Ix(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}var Qi=class extends fx{constructor(e,t={}){super(),this.name=e,this.options=t,this.metrics=!1}get src(){return this.__src}set src(e){this.__src=e,(async()=>(globalThis.document&&!this.options.skipStyleSheet&&await _x(this.name,e,this.options),this.loadFont(e)))()}async loadFont(e,t){fetch(e).then(r=>Ix(r)&&r.arrayBuffer()).then(r=>this.fromDataBuffer(r,t||e)).catch(r=>{let o=new Xi("error",r,`Failed to load font at ${t||e}`);this.dispatch(o),this.onerror&&this.onerror(o)})}async fromDataBuffer(e,t){this.fontData=new DataView(e);let r=Ax(this.fontData);if(!r)throw new Error(`${t} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(r);let o=new Xi("load",{font:this});this.dispatch(o),this.onload&&this.onload(o)}async parseBasicData(e){return Ex().then(t=>(e==="SFNT"&&(this.opentype=new hx(this,this.fontData,t)),e==="WOFF"&&(this.opentype=new yx(this,this.fontData,t)),e==="WOFF2"&&(this.opentype=new xx(this,this.fontData,t)),this.opentype))}getGlyphId(e){return this.opentype.tables.cmap.getGlyphId(e)}reverse(e){return this.opentype.tables.cmap.reverse(e)}supports(e){return this.getGlyphId(e)!==0}supportsVariation(e){return this.opentype.tables.cmap.supportsVariation(e)!==!1}measureText(e,t=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let r=document.createElement("div");r.textContent=e,r.style.fontFamily=this.name,r.style.fontSize=`${t}px`,r.style.color="transparent",r.style.background="transparent",r.style.top="0",r.style.left="0",r.style.position="absolute",document.body.appendChild(r);let o=r.getBoundingClientRect();document.body.removeChild(r);let n=this.opentype.tables["OS/2"];return o.fontSize=t,o.ascender=n.sTypoAscender,o.descender=n.sTypoDescender,o}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);let e=new Xi("unload",{font:this});this.dispatch(e),this.onunload&&this.onunload(e)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);let e=new Xi("load",{font:this});this.dispatch(e),this.onload&&this.onload(e)}}};globalThis.Font=Qi;var Qr=class extends ct{constructor(e,t,r){super(e),this.plaformID=t,this.encodingID=r}},Lx=class extends Qr{constructor(e,t,r){super(e,t,r),this.format=0,this.length=e.uint16,this.language=e.uint16,this.glyphIdArray=[...new Array(256)].map(o=>e.uint8)}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=e&&e<=255}reverse(e){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}},Nx=class extends Qr{constructor(e,t,r){super(e,t,r),this.format=2,this.length=e.uint16,this.language=e.uint16,this.subHeaderKeys=[...new Array(256)].map(i=>e.uint16);let o=Math.max(...this.subHeaderKeys),n=e.currentPosition;ce(this,"subHeaders",()=>(e.currentPosition=n,[...new Array(o)].map(i=>new Dx(e))));let s=n+o*8;ce(this,"glyphIndexArray",()=>(e.currentPosition=s,[...new Array(o)].map(i=>e.uint16)))}supports(e){e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));let t=e&&255,r=e&&65280,o=this.subHeaders[r],n=this.subHeaders[o],s=n.firstCode,i=s+n.entryCount;return s<=t&&t<=i}reverse(e){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(e=!1){return e?this.subHeaders.map(t=>({firstCode:t.firstCode,lastCode:t.lastCode})):this.subHeaders.map(t=>({start:t.firstCode,end:t.lastCode}))}},Dx=class{constructor(e){this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=e.int16,this.idRangeOffset=e.uint16}},Mx=class extends Qr{constructor(e,t,r){super(e,t,r),this.format=4,this.length=e.uint16,this.language=e.uint16,this.segCountX2=e.uint16,this.segCount=this.segCountX2/2,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16;let o=e.currentPosition;ce(this,"endCode",()=>e.readBytes(this.segCount,o,16));let n=o+2+this.segCountX2;ce(this,"startCode",()=>e.readBytes(this.segCount,n,16));let s=n+this.segCountX2;ce(this,"idDelta",()=>e.readBytes(this.segCount,s,16,!0));let i=s+this.segCountX2;ce(this,"idRangeOffset",()=>e.readBytes(this.segCount,i,16));let a=i+this.segCountX2,c=this.length-(a-this.tableStart);ce(this,"glyphIdArray",()=>e.readBytes(c,a,16)),ce(this,"segments",()=>this.buildSegments(i,a,e))}buildSegments(e,t,r){let o=(n,s)=>{let i=this.startCode[s],a=this.endCode[s],c=this.idDelta[s],u=this.idRangeOffset[s],l=e+2*s,f=[];if(u===0)for(let h=i+c,g=a+c;h<=g;h++)f.push(h);else for(let h=0,g=a-i;h<=g;h++)r.currentPosition=l+u+h*2,f.push(r.uint16);return{startCode:i,endCode:a,idDelta:c,idRangeOffset:u,glyphIDs:f}};return[...new Array(this.segCount)].map(o)}reverse(e){let t=this.segments.find(o=>o.glyphIDs.includes(e));if(!t)return{};let r=t.startCode+t.glyphIDs.indexOf(e);return{code:r,unicode:String.fromCodePoint(r)}}getGlyphId(e){if(e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535)return 0;let t=this.segments.find(r=>r.startCode<=e&&e<=r.endCode);return t?t.glyphIDs[e-t.startCode]:0}supports(e){return this.getGlyphId(e)!==0}getSupportedCharCodes(e=!1){return e?this.segments:this.segments.map(t=>({start:t.startCode,end:t.endCode}))}},Vx=class extends Qr{constructor(e,t,r){super(e,t,r),this.format=6,this.length=e.uint16,this.language=e.uint16,this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.firstCode+this.entryCount-1,ce(this,"glyphIdArray",()=>[...new Array(this.entryCount)].map(n=>e.uint16))}supports(e){if(e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),e<this.firstCode)return{};if(e>this.firstCode+this.entryCount)return{};let t=e-this.firstCode;return{code:t,unicode:String.fromCodePoint(t)}}reverse(e){let t=this.glyphIdArray.indexOf(e);if(t>-1)return this.firstCode+t}getSupportedCharCodes(e=!1){return e?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}},Bx=class extends Qr{constructor(e,t,r){super(e,t,r),this.format=8,e.uint16,this.length=e.uint32,this.language=e.uint32,this.is32=[...new Array(8192)].map(n=>e.uint8),this.numGroups=e.uint32,ce(this,"groups",()=>[...new Array(this.numGroups)].map(n=>new zx(e)))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),this.groups.findIndex(t=>t.startcharCode<=e&&e<=t.endcharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startcharCode,end:t.endcharCode}))}},zx=class{constructor(e){this.startcharCode=e.uint32,this.endcharCode=e.uint32,this.startGlyphID=e.uint32}},jx=class extends Qr{constructor(e,t,r){super(e,t,r),this.format=10,e.uint16,this.length=e.uint32,this.language=e.uint32,this.startCharCode=e.uint32,this.numChars=e.uint32,this.endCharCode=this.startCharCode+this.numChars,ce(this,"glyphs",()=>[...new Array(this.numChars)].map(n=>e.uint16))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),e<this.startCharCode||e>this.startCharCode+this.numChars?!1:e-this.startCharCode}reverse(e){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(e=!1){return e?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}},Hx=class extends Qr{constructor(e,t,r){super(e,t,r),this.format=12,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,ce(this,"groups",()=>[...new Array(this.numGroups)].map(n=>new Ux(e)))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||(e&65534)===65534||(e&65535)===65535?0:this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){for(let t of this.groups){let r=t.startGlyphID;if(r>e)continue;if(r===e)return t.startCharCode;if(r+(t.endCharCode-t.startCharCode)<e)continue;let n=t.startCharCode+(e-r);return{code:n,unicode:String.fromCodePoint(n)}}return{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},Ux=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.startGlyphID=e.uint32}},Wx=class extends Qr{constructor(e,t,r){super(e,t,r),this.format=13,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32;let o=[...new Array(this.numGroups)].map(n=>new Gx(e));ce(this,"groups",o)}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),this.groups.findIndex(t=>t.startCharCode<=e&&e<=t.endCharCode)!==-1}reverse(e){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map(t=>({start:t.startCharCode,end:t.endCharCode}))}},Gx=class{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.glyphID=e.uint32}},Yx=class extends Qr{constructor(e,t,r){super(e,t,r),this.subTableStart=e.currentPosition,this.format=14,this.length=e.uint32,this.numVarSelectorRecords=e.uint32,ce(this,"varSelectors",()=>[...new Array(this.numVarSelectorRecords)].map(o=>new qx(e)))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(e){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(e){let t=this.varSelector.find(r=>r.varSelector===e);return t||!1}getSupportedVariations(){return this.varSelectors.map(e=>e.varSelector)}},qx=class{constructor(e){this.varSelector=e.uint24,this.defaultUVSOffset=e.Offset32,this.nonDefaultUVSOffset=e.Offset32}};function Zx(e,t,r){let o=e.uint16;return o===0?new Lx(e,t,r):o===2?new Nx(e,t,r):o===4?new Mx(e,t,r):o===6?new Vx(e,t,r):o===8?new Bx(e,t,r):o===10?new jx(e,t,r):o===12?new Hx(e,t,r):o===13?new Wx(e,t,r):o===14?new Yx(e,t,r):{}}var Xx=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numTables=r.uint16,this.encodingRecords=[...new Array(this.numTables)].map(o=>new Kx(r,this.tableStart))}getSubTable(e){return this.encodingRecords[e].table}getSupportedEncodings(){return this.encodingRecords.map(e=>({platformID:e.platformID,encodingId:e.encodingID}))}getSupportedCharCodes(e,t){let r=this.encodingRecords.findIndex(n=>n.platformID===e&&n.encodingID===t);return r===-1?!1:this.getSubTable(r).getSupportedCharCodes()}reverse(e){for(let t=0;t<this.numTables;t++){let r=this.getSubTable(t).reverse(e);if(r)return r}}getGlyphId(e){let t=0;return this.encodingRecords.some((r,o)=>{let n=this.getSubTable(o);return n.getGlyphId?(t=n.getGlyphId(e),t!==0):!1}),t}supports(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supports&&o.supports(e)!==!1})}supportsVariation(e){return this.encodingRecords.some((t,r)=>{let o=this.getSubTable(r);return o.supportsVariation&&o.supportsVariation(e)!==!1})}},Kx=class{constructor(e,t){let r=this.platformID=e.uint16,o=this.encodingID=e.uint16,n=this.offset=e.Offset32;ce(this,"table",()=>(e.currentPosition=t+n,Zx(e,r,o)))}},Jx=Object.freeze({__proto__:null,cmap:Xx}),Qx=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.load({majorVersion:r.uint16,minorVersion:r.uint16,fontRevision:r.fixed,checkSumAdjustment:r.uint32,magicNumber:r.uint32,flags:r.flags(16),unitsPerEm:r.uint16,created:r.longdatetime,modified:r.longdatetime,xMin:r.int16,yMin:r.int16,xMax:r.int16,yMax:r.int16,macStyle:r.flags(16),lowestRecPPEM:r.uint16,fontDirectionHint:r.uint16,indexToLocFormat:r.uint16,glyphDataFormat:r.uint16})}},$x=Object.freeze({__proto__:null,head:Qx}),ew=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.ascender=r.fword,this.descender=r.fword,this.lineGap=r.fword,this.advanceWidthMax=r.ufword,this.minLeftSideBearing=r.fword,this.minRightSideBearing=r.fword,this.xMaxExtent=r.fword,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,r.int16,r.int16,r.int16,r.int16,this.metricDataFormat=r.int16,this.numberOfHMetrics=r.uint16,r.verifyLength()}},tw=Object.freeze({__proto__:null,hhea:ew}),rw=class extends _e{constructor(e,t,r){let{p:o}=super(e,t),n=r.hhea.numberOfHMetrics,s=r.maxp.numGlyphs,i=o.currentPosition;if(ce(this,"hMetrics",()=>(o.currentPosition=i,[...new Array(n)].map(a=>new ow(o.uint16,o.int16)))),n<s){let a=i+n*4;ce(this,"leftSideBearings",()=>(o.currentPosition=a,[...new Array(s-n)].map(c=>o.int16)))}}},ow=class{constructor(e,t){this.advanceWidth=e,this.lsb=t}},nw=Object.freeze({__proto__:null,hmtx:rw}),sw=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.legacyFixed,this.numGlyphs=r.uint16,this.version===1&&(this.maxPoints=r.uint16,this.maxContours=r.uint16,this.maxCompositePoints=r.uint16,this.maxCompositeContours=r.uint16,this.maxZones=r.uint16,this.maxTwilightPoints=r.uint16,this.maxStorage=r.uint16,this.maxFunctionDefs=r.uint16,this.maxInstructionDefs=r.uint16,this.maxStackElements=r.uint16,this.maxSizeOfInstructions=r.uint16,this.maxComponentElements=r.uint16,this.maxComponentDepth=r.uint16),r.verifyLength()}},iw=Object.freeze({__proto__:null,maxp:sw}),aw=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.format=r.uint16,this.count=r.uint16,this.stringOffset=r.Offset16,this.nameRecords=[...new Array(this.count)].map(o=>new cw(r,this)),this.format===1&&(this.langTagCount=r.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map(o=>new lw(r.uint16,r.Offset16))),this.stringStart=this.tableStart+this.stringOffset}get(e){let t=this.nameRecords.find(r=>r.nameID===e);if(t)return t.string}},lw=class{constructor(e,t){this.length=e,this.offset=t}},cw=class{constructor(e,t){this.platformID=e.uint16,this.encodingID=e.uint16,this.languageID=e.uint16,this.nameID=e.uint16,this.length=e.uint16,this.offset=e.Offset16,ce(this,"string",()=>(e.currentPosition=t.stringStart+this.offset,uw(e,this)))}};function uw(e,t){let{platformID:r,length:o}=t;if(o===0)return"";if(r===0||r===3){let i=[];for(let a=0,c=o/2;a<c;a++)i[a]=String.fromCharCode(e.uint16);return i.join("")}let n=e.readBytes(o),s=[];return n.forEach(function(i,a){s[a]=String.fromCharCode(i)}),s.join("")}var fw=Object.freeze({__proto__:null,name:aw}),dw=class extends _e{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.uint16,this.xAvgCharWidth=r.int16,this.usWeightClass=r.uint16,this.usWidthClass=r.uint16,this.fsType=r.uint16,this.ySubscriptXSize=r.int16,this.ySubscriptYSize=r.int16,this.ySubscriptXOffset=r.int16,this.ySubscriptYOffset=r.int16,this.ySuperscriptXSize=r.int16,this.ySuperscriptYSize=r.int16,this.ySuperscriptXOffset=r.int16,this.ySuperscriptYOffset=r.int16,this.yStrikeoutSize=r.int16,this.yStrikeoutPosition=r.int16,this.sFamilyClass=r.int16,this.panose=[...new Array(10)].map(o=>r.uint8),this.ulUnicodeRange1=r.flags(32),this.ulUnicodeRange2=r.flags(32),this.ulUnicodeRange3=r.flags(32),this.ulUnicodeRange4=r.flags(32),this.achVendID=r.tag,this.fsSelection=r.uint16,this.usFirstCharIndex=r.uint16,this.usLastCharIndex=r.uint16,this.sTypoAscender=r.int16,this.sTypoDescender=r.int16,this.sTypoLineGap=r.int16,this.usWinAscent=r.uint16,this.usWinDescent=r.uint16,this.version===0||(this.ulCodePageRange1=r.flags(32),this.ulCodePageRange2=r.flags(32),this.version===1)||(this.sxHeight=r.int16,this.sCapHeight=r.int16,this.usDefaultChar=r.uint16,this.usBreakChar=r.uint16,this.usMaxContext=r.uint16,this.version<=4)||(this.usLowerOpticalPointSize=r.uint16,this.usUpperOpticalPointSize=r.uint16,this.version===5))return r.verifyLength()}},pw=Object.freeze({__proto__:null,OS2:dw}),mw=class extends _e{constructor(e,t){let{p:r}=super(e,t);if(this.version=r.legacyFixed,this.italicAngle=r.fixed,this.underlinePosition=r.fword,this.underlineThickness=r.fword,this.isFixedPitch=r.uint32,this.minMemType42=r.uint32,this.maxMemType42=r.uint32,this.minMemType1=r.uint32,this.maxMemType1=r.uint32,this.version===1||this.version===3)return r.verifyLength();if(this.numGlyphs=r.uint16,this.version===2){this.glyphNameIndex=[...new Array(this.numGlyphs)].map(o=>r.uint16),this.namesOffset=r.currentPosition,this.glyphNameOffsets=[1];for(let o=0;o<this.numGlyphs;o++){if(this.glyphNameIndex[o]<eg.length){this.glyphNameOffsets.push(this.glyphNameOffsets[o]);continue}let s=r.int8;r.skip(s),this.glyphNameOffsets.push(this.glyphNameOffsets[o]+s+1)}}this.version===2.5&&(this.offset=[...new Array(this.numGlyphs)].map(o=>r.int8))}getGlyphName(e){if(this.version!==2)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let t=this.glyphNameIndex[e];if(t<258)return eg[t];let r=this.glyphNameOffsets[e],n=this.glyphNameOffsets[e+1]-r-1;return n===0?".notdef.":(this.parser.currentPosition=this.namesOffset+r,this.parser.readBytes(n,this.namesOffset+r,8,!0).map(i=>String.fromCharCode(i)).join(""))}},eg=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],hw=Object.freeze({__proto__:null,post:mw}),gw=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.horizAxisOffset=r.Offset16,this.vertAxisOffset=r.Offset16,ce(this,"horizAxis",()=>new vc({offset:e.offset+this.horizAxisOffset},t)),ce(this,"vertAxis",()=>new vc({offset:e.offset+this.vertAxisOffset},t)),this.majorVersion===1&&this.minorVersion===1&&(this.itemVarStoreOffset=r.Offset32,ce(this,"itemVarStore",()=>new vc({offset:e.offset+this.itemVarStoreOffset},t)))}},vc=class extends _e{constructor(e,t){let{p:r}=super(e,t,"AxisTable");this.baseTagListOffset=r.Offset16,this.baseScriptListOffset=r.Offset16,ce(this,"baseTagList",()=>new yw({offset:e.offset+this.baseTagListOffset},t)),ce(this,"baseScriptList",()=>new vw({offset:e.offset+this.baseScriptListOffset},t))}},yw=class extends _e{constructor(e,t){let{p:r}=super(e,t,"BaseTagListTable");this.baseTagCount=r.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map(o=>r.tag)}},vw=class extends _e{constructor(e,t){let{p:r}=super(e,t,"BaseScriptListTable");this.baseScriptCount=r.uint16;let o=r.currentPosition;ce(this,"baseScriptRecords",()=>(r.currentPosition=o,[...new Array(this.baseScriptCount)].map(n=>new bw(this.start,r))))}},bw=class{constructor(e,t){this.baseScriptTag=t.tag,this.baseScriptOffset=t.Offset16,ce(this,"baseScriptTable",()=>(t.currentPosition=e+this.baseScriptOffset,new xw(t)))}},xw=class{constructor(e){this.start=e.currentPosition,this.baseValuesOffset=e.Offset16,this.defaultMinMaxOffset=e.Offset16,this.baseLangSysCount=e.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map(t=>new ww(this.start,e)),ce(this,"baseValues",()=>(e.currentPosition=this.start+this.baseValuesOffset,new Sw(e))),ce(this,"defaultMinMax",()=>(e.currentPosition=this.start+this.defaultMinMaxOffset,new lg(e)))}},ww=class{constructor(e,t){this.baseLangSysTag=t.tag,this.minMaxOffset=t.Offset16,ce(this,"minMax",()=>(t.currentPosition=e+this.minMaxOffset,new lg(t)))}},Sw=class{constructor(e){this.parser=e,this.start=e.currentPosition,this.defaultBaselineIndex=e.uint16,this.baseCoordCount=e.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map(t=>e.Offset16)}getTable(e){return this.parser.currentPosition=this.start+this.baseCoords[e],new Rw(this.parser)}},lg=class{constructor(e){this.minCoord=e.Offset16,this.maxCoord=e.Offset16,this.featMinMaxCount=e.uint16;let t=e.currentPosition;ce(this,"featMinMaxRecords",()=>(e.currentPosition=t,[...new Array(this.featMinMaxCount)].map(r=>new Cw(e))))}},Cw=class{constructor(e){this.featureTableTag=e.tag,this.minCoord=e.Offset16,this.maxCoord=e.Offset16}},Rw=class{constructor(e){this.baseCoordFormat=e.uint16,this.coordinate=e.int16,this.baseCoordFormat===2&&(this.referenceGlyph=e.uint16,this.baseCoordPoint=e.uint16),this.baseCoordFormat===3&&(this.deviceTable=e.Offset16)}},Ew=Object.freeze({__proto__:null,BASE:gw}),tg=class{constructor(e){this.classFormat=e.uint16,this.classFormat===1&&(this.startGlyphID=e.uint16,this.glyphCount=e.uint16,this.classValueArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.classFormat===2&&(this.classRangeCount=e.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map(t=>new Tw(e)))}},Tw=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.class=e.uint16}},ys=class extends ct{constructor(e){super(e),this.coverageFormat=e.uint16,this.coverageFormat===1&&(this.glyphCount=e.uint16,this.glyphArray=[...new Array(this.glyphCount)].map(t=>e.uint16)),this.coverageFormat===2&&(this.rangeCount=e.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map(t=>new _w(e)))}},_w=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.startCoverageIndex=e.uint16}},Ow=class{constructor(e,t){this.table=e,this.parser=t,this.start=t.currentPosition,this.format=t.uint16,this.variationRegionListOffset=t.Offset32,this.itemVariationDataCount=t.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map(r=>t.Offset32)}},Pw=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.glyphClassDefOffset=r.Offset16,ce(this,"glyphClassDefs",()=>{if(this.glyphClassDefOffset!==0)return r.currentPosition=this.tableStart+this.glyphClassDefOffset,new tg(r)}),this.attachListOffset=r.Offset16,ce(this,"attachList",()=>{if(this.attachListOffset!==0)return r.currentPosition=this.tableStart+this.attachListOffset,new Fw(r)}),this.ligCaretListOffset=r.Offset16,ce(this,"ligCaretList",()=>{if(this.ligCaretListOffset!==0)return r.currentPosition=this.tableStart+this.ligCaretListOffset,new Aw(r)}),this.markAttachClassDefOffset=r.Offset16,ce(this,"markAttachClassDef",()=>{if(this.markAttachClassDefOffset!==0)return r.currentPosition=this.tableStart+this.markAttachClassDefOffset,new tg(r)}),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=r.Offset16,ce(this,"markGlyphSetsDef",()=>{if(this.markGlyphSetsDefOffset!==0)return r.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Nw(r)})),this.minorVersion===3&&(this.itemVarStoreOffset=r.Offset32,ce(this,"itemVarStore",()=>{if(this.itemVarStoreOffset!==0)return r.currentPosition=this.tableStart+this.itemVarStoreOffset,new Ow(r)}))}},Fw=class extends ct{constructor(e){super(e),this.coverageOffset=e.Offset16,this.glyphCount=e.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16)}getPoint(e){return this.parser.currentPosition=this.start+this.attachPointOffsets[e],new kw(this.parser)}},kw=class{constructor(e){this.pointCount=e.uint16,this.pointIndices=[...new Array(this.pointCount)].map(t=>e.uint16)}},Aw=class extends ct{constructor(e){super(e),this.coverageOffset=e.Offset16,ce(this,"coverage",()=>(e.currentPosition=this.start+this.coverageOffset,new ys(e))),this.ligGlyphCount=e.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map(t=>e.Offset16)}getLigGlyph(e){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[e],new Iw(this.parser)}},Iw=class extends ct{constructor(e){super(e),this.caretCount=e.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map(t=>e.Offset16)}getCaretValue(e){return this.parser.currentPosition=this.start+this.caretValueOffsets[e],new Lw(this.parser)}},Lw=class{constructor(e){this.caretValueFormat=e.uint16,this.caretValueFormat===1&&(this.coordinate=e.int16),this.caretValueFormat===2&&(this.caretValuePointIndex=e.uint16),this.caretValueFormat===3&&(this.coordinate=e.int16,this.deviceOffset=e.Offset16)}},Nw=class extends ct{constructor(e){super(e),this.markGlyphSetTableFormat=e.uint16,this.markGlyphSetCount=e.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map(t=>e.Offset32)}getMarkGlyphSet(e){return this.parser.currentPosition=this.start+this.coverageOffsets[e],new ys(this.parser)}},Dw=Object.freeze({__proto__:null,GDEF:Pw}),rg=class extends ct{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(e){super(e),this.scriptCount=e.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map(t=>new Mw(e))}},Mw=class{constructor(e){this.scriptTag=e.tag,this.scriptOffset=e.Offset16}},Vw=class extends ct{constructor(e){super(e),this.defaultLangSys=e.Offset16,this.langSysCount=e.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map(t=>new Bw(e))}},Bw=class{constructor(e){this.langSysTag=e.tag,this.langSysOffset=e.Offset16}},og=class{constructor(e){this.lookupOrder=e.Offset16,this.requiredFeatureIndex=e.uint16,this.featureIndexCount=e.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map(t=>e.uint16)}},ng=class extends ct{static EMPTY={featureCount:0,featureRecords:[]};constructor(e){super(e),this.featureCount=e.uint16,this.featureRecords=[...new Array(this.featureCount)].map(t=>new zw(e))}},zw=class{constructor(e){this.featureTag=e.tag,this.featureOffset=e.Offset16}},jw=class extends ct{constructor(e){super(e),this.featureParams=e.Offset16,this.lookupIndexCount=e.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map(t=>e.uint16)}getFeatureParams(){if(this.featureParams>0){let e=this.parser;e.currentPosition=this.start+this.featureParams;let t=this.featureTag;if(t==="size")return new Uw(e);if(t.startsWith("cc"))return new Hw(e);if(t.startsWith("ss"))return new Ww(e)}}},Hw=class{constructor(e){this.format=e.uint16,this.featUiLabelNameId=e.uint16,this.featUiTooltipTextNameId=e.uint16,this.sampleTextNameId=e.uint16,this.numNamedParameters=e.uint16,this.firstParamUiLabelNameId=e.uint16,this.charCount=e.uint16,this.character=[...new Array(this.charCount)].map(t=>e.uint24)}},Uw=class{constructor(e){this.designSize=e.uint16,this.subfamilyIdentifier=e.uint16,this.subfamilyNameID=e.uint16,this.smallEnd=e.uint16,this.largeEnd=e.uint16}},Ww=class{constructor(e){this.version=e.uint16,this.UINameID=e.uint16}};function cg(e){e.parser.currentPosition-=2,delete e.coverageOffset,delete e.getCoverageTable}var Go=class extends ct{constructor(e){super(e),this.substFormat=e.uint16,this.coverageOffset=e.Offset16}getCoverageTable(){let e=this.parser;return e.currentPosition=this.start+this.coverageOffset,new ys(e)}},xc=class{constructor(e){this.glyphSequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},Gw=class extends Go{constructor(e){super(e),this.deltaGlyphID=e.int16}},Yw=class extends Go{constructor(e){super(e),this.sequenceCount=e.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map(t=>e.Offset16)}getSequence(e){let t=this.parser;return t.currentPosition=this.start+this.sequenceOffsets[e],new qw(t)}},qw=class{constructor(e){this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Zw=class extends Go{constructor(e){super(e),this.alternateSetCount=e.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map(t=>e.Offset16)}getAlternateSet(e){let t=this.parser;return t.currentPosition=this.start+this.alternateSetOffsets[e],new Xw(t)}},Xw=class{constructor(e){this.glyphCount=e.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},Kw=class extends Go{constructor(e){super(e),this.ligatureSetCount=e.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map(t=>e.Offset16)}getLigatureSet(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureSetOffsets[e],new Jw(t)}},Jw=class extends ct{constructor(e){super(e),this.ligatureCount=e.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map(t=>e.Offset16)}getLigature(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureOffsets[e],new Qw(t)}},Qw=class{constructor(e){this.ligatureGlyph=e.uint16,this.componentCount=e.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map(t=>e.uint16)}},$w=class extends Go{constructor(e){super(e),this.substFormat===1&&(this.subRuleSetCount=e.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.classDefOffset=e.Offset16,this.subClassSetCount=e.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(cg(this),this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map(t=>e.Offset16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new xc(e)))}getSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.subRuleSetOffsets[e],new eS(t)}getSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.subClassSetOffsets[e],new tS(t)}getCoverageTable(e){if(this.substFormat!==3&&!e)return super.getCoverageTable();if(!e)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let t=this.parser;return t.currentPosition=this.start+this.coverageOffsets[e],new ys(t)}},eS=class extends ct{constructor(e){super(e),this.subRuleCount=e.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.subRuleOffsets[e],new ug(t)}},ug=class{constructor(e){this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map(t=>e.uint16),this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new xc(e))}},tS=class extends ct{constructor(e){super(e),this.subClassRuleCount=e.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.subClassRuleOffsets[e],new rS(t)}},rS=class extends ug{constructor(e){super(e)}},oS=class extends Go{constructor(e){super(e),this.substFormat===1&&(this.chainSubRuleSetCount=e.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map(t=>e.Offset16)),this.substFormat===2&&(this.backtrackClassDefOffset=e.Offset16,this.inputClassDefOffset=e.Offset16,this.lookaheadClassDefOffset=e.Offset16,this.chainSubClassSetCount=e.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map(t=>e.Offset16)),this.substFormat===3&&(cg(this),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.inputGlyphCount=e.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.seqLookupCount=e.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map(t=>new fg(e)))}getChainSubRuleSet(e){if(this.substFormat!==1)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleSetOffsets[e],new nS(t)}getChainSubClassSet(e){if(this.substFormat!==2)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubClassSetOffsets[e],new iS(t)}getCoverageFromOffset(e){if(this.substFormat!==3)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let t=this.parser;return t.currentPosition=this.start+e,new ys(t)}},nS=class extends ct{constructor(e){super(e),this.chainSubRuleCount=e.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map(t=>e.Offset16)}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new sS(t)}},sS=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map(t=>new xc(e))}},iS=class extends ct{constructor(e){super(e),this.chainSubClassRuleCount=e.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map(t=>e.Offset16)}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new aS(t)}},aS=class{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map(t=>e.uint16),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map(t=>e.uint16),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map(t=>e.uint16),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map(t=>new fg(e))}},fg=class extends ct{constructor(e){super(e),this.sequenceIndex=e.uint16,this.lookupListIndex=e.uint16}},lS=class extends ct{constructor(e){super(e),this.substFormat=e.uint16,this.extensionLookupType=e.uint16,this.extensionOffset=e.Offset32}},cS=class extends Go{constructor(e){super(e),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map(t=>e.Offset16),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map(t=>e.Offset16),this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map(t=>e.uint16)}},uS={buildSubtable:function(e,t){let r=new[void 0,Gw,Yw,Zw,Kw,$w,oS,lS,cS][e](t);return r.type=e,r}},$r=class extends ct{constructor(e){super(e)}},fS=class extends $r{constructor(e){super(e),console.log("lookup type 1")}},dS=class extends $r{constructor(e){super(e),console.log("lookup type 2")}},pS=class extends $r{constructor(e){super(e),console.log("lookup type 3")}},mS=class extends $r{constructor(e){super(e),console.log("lookup type 4")}},hS=class extends $r{constructor(e){super(e),console.log("lookup type 5")}},gS=class extends $r{constructor(e){super(e),console.log("lookup type 6")}},yS=class extends $r{constructor(e){super(e),console.log("lookup type 7")}},vS=class extends $r{constructor(e){super(e),console.log("lookup type 8")}},bS=class extends $r{constructor(e){super(e),console.log("lookup type 9")}},xS={buildSubtable:function(e,t){let r=new[void 0,fS,dS,pS,mS,hS,gS,yS,vS,bS][e](t);return r.type=e,r}},sg=class extends ct{static EMPTY={lookupCount:0,lookups:[]};constructor(e){super(e),this.lookupCount=e.uint16,this.lookups=[...new Array(this.lookupCount)].map(t=>e.Offset16)}},wS=class extends ct{constructor(e,t){super(e),this.ctType=t,this.lookupType=e.uint16,this.lookupFlag=e.uint16,this.subTableCount=e.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map(r=>e.Offset16),this.markFilteringSet=e.uint16}get rightToLeft(){return this.lookupFlag&!0}get ignoreBaseGlyphs(){return this.lookupFlag&!0}get ignoreLigatures(){return this.lookupFlag&!0}get ignoreMarks(){return this.lookupFlag&!0}get useMarkFilteringSet(){return this.lookupFlag&!0}get markAttachmentType(){return this.lookupFlag&!0}getSubTable(e){let t=this.ctType==="GSUB"?uS:xS;return this.parser.currentPosition=this.start+this.subtableOffsets[e],t.buildSubtable(this.lookupType,this.parser)}},dg=class extends _e{constructor(e,t,r){let{p:o,tableStart:n}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.scriptListOffset=o.Offset16,this.featureListOffset=o.Offset16,this.lookupListOffset=o.Offset16,this.majorVersion===1&&this.minorVersion===1&&(this.featureVariationsOffset=o.Offset32);let s=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);ce(this,"scriptList",()=>s?rg.EMPTY:(o.currentPosition=n+this.scriptListOffset,new rg(o))),ce(this,"featureList",()=>s?ng.EMPTY:(o.currentPosition=n+this.featureListOffset,new ng(o))),ce(this,"lookupList",()=>s?sg.EMPTY:(o.currentPosition=n+this.lookupListOffset,new sg(o))),this.featureVariationsOffset&&ce(this,"featureVariations",()=>s?FeatureVariations.EMPTY:(o.currentPosition=n+this.featureVariationsOffset,new FeatureVariations(o)))}getSupportedScripts(){return this.scriptList.scriptRecords.map(e=>e.scriptTag)}getScriptTable(e){let t=this.scriptList.scriptRecords.find(o=>o.scriptTag===e);this.parser.currentPosition=this.scriptList.start+t.scriptOffset;let r=new Vw(this.parser);return r.scriptTag=e,r}ensureScriptTable(e){return typeof e=="string"?this.getScriptTable(e):e}getSupportedLangSys(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys!==0,r=e.langSysRecords.map(o=>o.langSysTag);return t&&r.unshift("dflt"),r}getDefaultLangSysTable(e){e=this.ensureScriptTable(e);let t=e.defaultLangSys;if(t!==0){this.parser.currentPosition=e.start+t;let r=new og(this.parser);return r.langSysTag="",r.defaultForScript=e.scriptTag,r}}getLangSysTable(e,t="dflt"){if(t==="dflt")return this.getDefaultLangSysTable(e);e=this.ensureScriptTable(e);let r=e.langSysRecords.find(n=>n.langSysTag===t);this.parser.currentPosition=e.start+r.langSysOffset;let o=new og(this.parser);return o.langSysTag=t,o}getFeatures(e){return e.featureIndices.map(t=>this.getFeature(t))}getFeature(e){let t;if(parseInt(e)==e?t=this.featureList.featureRecords[e]:t=this.featureList.featureRecords.find(o=>o.featureTag===e),!t)return;this.parser.currentPosition=this.featureList.start+t.featureOffset;let r=new jw(this.parser);return r.featureTag=t.featureTag,r}getLookups(e){return e.lookupListIndices.map(t=>this.getLookup(t))}getLookup(e,t){let r=this.lookupList.lookups[e];return this.parser.currentPosition=this.lookupList.start+r,new wS(this.parser,t)}},SS=class extends dg{constructor(e,t){super(e,t,"GSUB")}getLookup(e){return super.getLookup(e,"GSUB")}},CS=Object.freeze({__proto__:null,GSUB:SS}),RS=class extends dg{constructor(e,t){super(e,t,"GPOS")}getLookup(e){return super.getLookup(e,"GPOS")}},ES=Object.freeze({__proto__:null,GPOS:RS}),TS=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.offsetToSVGDocumentList=r.Offset32,r.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new _S(r)}},_S=class extends ct{constructor(e){super(e),this.numEntries=e.uint16,this.documentRecords=[...new Array(this.numEntries)].map(t=>new OS(e))}getDocument(e){let t=this.documentRecords[e];if(!t)return"";let r=this.start+t.svgDocOffset;return this.parser.currentPosition=r,this.parser.readBytes(t.svgDocLength)}getDocumentForGlyph(e){let t=this.documentRecords.findIndex(r=>r.startGlyphID<=e&&e<=r.endGlyphID);return t===-1?"":this.getDocument(t)}},OS=class{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.svgDocOffset=e.Offset32,this.svgDocLength=e.uint32}},PS=Object.freeze({__proto__:null,SVG:TS}),FS=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.axesArrayOffset=r.Offset16,r.uint16,this.axisCount=r.uint16,this.axisSize=r.uint16,this.instanceCount=r.uint16,this.instanceSize=r.uint16;let o=this.tableStart+this.axesArrayOffset;ce(this,"axes",()=>(r.currentPosition=o,[...new Array(this.axisCount)].map(s=>new kS(r))));let n=o+this.axisCount*this.axisSize;ce(this,"instances",()=>{let s=[];for(let i=0;i<this.instanceCount;i++)r.currentPosition=n+i*this.instanceSize,s.push(new AS(r,this.axisCount,this.instanceSize));return s})}getSupportedAxes(){return this.axes.map(e=>e.tag)}getAxis(e){return this.axes.find(t=>t.tag===e)}},kS=class{constructor(e){this.tag=e.tag,this.minValue=e.fixed,this.defaultValue=e.fixed,this.maxValue=e.fixed,this.flags=e.flags(16),this.axisNameID=e.uint16}},AS=class{constructor(e,t,r){let o=e.currentPosition;this.subfamilyNameID=e.uint16,e.uint16,this.coordinates=[...new Array(t)].map(n=>e.fixed),e.currentPosition-o<r&&(this.postScriptNameID=e.uint16)}},IS=Object.freeze({__proto__:null,fvar:FS}),LS=class extends _e{constructor(e,t){let{p:r}=super(e,t),o=e.length/2;ce(this,"items",()=>[...new Array(o)].map(n=>r.fword))}},NS=Object.freeze({__proto__:null,cvt:LS}),DS=class extends _e{constructor(e,t){let{p:r}=super(e,t);ce(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},MS=Object.freeze({__proto__:null,fpgm:DS}),VS=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRanges=r.uint16,ce(this,"gaspRanges",()=>[...new Array(this.numRanges)].map(n=>new BS(r)))}},BS=class{constructor(e){this.rangeMaxPPEM=e.uint16,this.rangeGaspBehavior=e.uint16}},zS=Object.freeze({__proto__:null,gasp:VS}),jS=class extends _e{constructor(e,t){super(e,t)}getGlyphData(e,t){return this.parser.currentPosition=this.tableStart+e,this.parser.readBytes(t)}},HS=Object.freeze({__proto__:null,glyf:jS}),US=class extends _e{constructor(e,t,r){let{p:o}=super(e,t),n=r.maxp.numGlyphs+1;r.head.indexToLocFormat===0?(this.x2=!0,ce(this,"offsets",()=>[...new Array(n)].map(s=>o.Offset16))):ce(this,"offsets",()=>[...new Array(n)].map(s=>o.Offset32))}getGlyphDataOffsetAndLength(e){let t=this.offsets[e]*this.x2?2:1,r=this.offsets[e+1]*this.x2?2:1;return{offset:t,length:r-t}}},WS=Object.freeze({__proto__:null,loca:US}),GS=class extends _e{constructor(e,t){let{p:r}=super(e,t);ce(this,"instructions",()=>[...new Array(e.length)].map(o=>r.uint8))}},YS=Object.freeze({__proto__:null,prep:GS}),qS=class extends _e{constructor(e,t){let{p:r}=super(e,t);ce(this,"data",()=>r.readBytes())}},ZS=Object.freeze({__proto__:null,CFF:qS}),XS=class extends _e{constructor(e,t){let{p:r}=super(e,t);ce(this,"data",()=>r.readBytes())}},KS=Object.freeze({__proto__:null,CFF2:XS}),JS=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.defaultVertOriginY=r.int16,this.numVertOriginYMetrics=r.uint16,ce(this,"vertORiginYMetrics",()=>[...new Array(this.numVertOriginYMetrics)].map(o=>new QS(r)))}},QS=class{constructor(e){this.glyphIndex=e.uint16,this.vertOriginY=e.int16}},$S=Object.freeze({__proto__:null,VORG:JS}),eC=class{constructor(e){this.indexSubTableArrayOffset=e.Offset32,this.indexTablesSize=e.uint32,this.numberofIndexSubTables=e.uint32,this.colorRef=e.uint32,this.hori=new Ji(e),this.vert=new Ji(e),this.startGlyphIndex=e.uint16,this.endGlyphIndex=e.uint16,this.ppemX=e.uint8,this.ppemY=e.uint8,this.bitDepth=e.uint8,this.flags=e.int8}},tC=class{constructor(e){this.hori=new Ji(e),this.vert=new Ji(e),this.ppemX=e.uint8,this.ppemY=e.uint8,this.substitutePpemX=e.uint8,this.substitutePpemY=e.uint8}},Ji=class{constructor(e){this.ascender=e.int8,this.descender=e.int8,this.widthMax=e.uint8,this.caretSlopeNumerator=e.int8,this.caretSlopeDenominator=e.int8,this.caretOffset=e.int8,this.minOriginSB=e.int8,this.minAdvanceSB=e.int8,this.maxBeforeBL=e.int8,this.minAfterBL=e.int8,this.pad1=e.int8,this.pad2=e.int8}},pg=class extends _e{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16,this.numSizes=o.uint32,ce(this,"bitMapSizes",()=>[...new Array(this.numSizes)].map(n=>new eC(o)))}},rC=Object.freeze({__proto__:null,EBLC:pg}),mg=class extends _e{constructor(e,t,r){let{p:o}=super(e,t,r);this.majorVersion=o.uint16,this.minorVersion=o.uint16}},oC=Object.freeze({__proto__:null,EBDT:mg}),nC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,ce(this,"bitmapScales",()=>[...new Array(this.numSizes)].map(o=>new tC(r)))}},sC=Object.freeze({__proto__:null,EBSC:nC}),iC=class extends pg{constructor(e,t){super(e,t,"CBLC")}},aC=Object.freeze({__proto__:null,CBLC:iC}),lC=class extends mg{constructor(e,t){super(e,t,"CBDT")}},cC=Object.freeze({__proto__:null,CBDT:lC}),uC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.flags=r.flags(16),this.numStrikes=r.uint32,ce(this,"strikeOffsets",()=>[...new Array(this.numStrikes)].map(o=>r.Offset32))}},fC=Object.freeze({__proto__:null,sbix:uC}),dC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numBaseGlyphRecords=r.uint16,this.baseGlyphRecordsOffset=r.Offset32,this.layerRecordsOffset=r.Offset32,this.numLayerRecords=r.uint16}getBaseGlyphRecord(e){let t=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=t;let r=new bc(this.parser),o=r.gID,n=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=n;let s=new bc(this.parser),i=s.gID;if(o===e)return r;if(i===e)return s;for(;t!==n;){let a=t+(n-t)/12;this.parser.currentPosition=a;let c=new bc(this.parser),u=c.gID;if(u===e)return c;u>e?n=a:u<e&&(t=a)}return!1}getLayers(e){let t=this.getBaseGlyphRecord(e);return this.parser.currentPosition=this.tableStart+this.layerRecordsOffset+4*t.firstLayerIndex,[...new Array(t.numLayers)].map(r=>new pC(p))}},bc=class{constructor(e){this.gID=e.uint16,this.firstLayerIndex=e.uint16,this.numLayers=e.uint16}},pC=class{constructor(e){this.gID=e.uint16,this.paletteIndex=e.uint16}},mC=Object.freeze({__proto__:null,COLR:dC}),hC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numPaletteEntries=r.uint16;let o=this.numPalettes=r.uint16;this.numColorRecords=r.uint16,this.offsetFirstColorRecord=r.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map(n=>r.uint16),ce(this,"colorRecords",()=>(r.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map(n=>new gC(r)))),this.version===1&&(this.offsetPaletteTypeArray=r.Offset32,this.offsetPaletteLabelArray=r.Offset32,this.offsetPaletteEntryLabelArray=r.Offset32,ce(this,"paletteTypeArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new yC(r,o))),ce(this,"paletteLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new vC(r,o))),ce(this,"paletteEntryLabelArray",()=>(r.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new bC(r,o))))}},gC=class{constructor(e){this.blue=e.uint8,this.green=e.uint8,this.red=e.uint8,this.alpha=e.uint8}},yC=class{constructor(e,t){this.paletteTypes=[...new Array(t)].map(r=>e.uint32)}},vC=class{constructor(e,t){this.paletteLabels=[...new Array(t)].map(r=>e.uint16)}},bC=class{constructor(e,t){this.paletteEntryLabels=[...new Array(t)].map(r=>e.uint16)}},xC=Object.freeze({__proto__:null,CPAL:hC}),wC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.numSignatures=r.uint16,this.flags=r.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map(o=>new SC(r))}getData(e){let t=this.signatureRecords[e];return this.parser.currentPosition=this.tableStart+t.offset,new CC(this.parser)}},SC=class{constructor(e){this.format=e.uint32,this.length=e.uint32,this.offset=e.Offset32}},CC=class{constructor(e){e.uint16,e.uint16,this.signatureLength=e.uint32,this.signature=e.readBytes(this.signatureLength)}},RC=Object.freeze({__proto__:null,DSIG:wC}),EC=class extends _e{constructor(e,t,r){let{p:o}=super(e,t),n=r.hmtx.numGlyphs;this.version=o.uint16,this.numRecords=o.int16,this.sizeDeviceRecord=o.int32,this.records=[...new Array(numRecords)].map(s=>new TC(o,n))}},TC=class{constructor(e,t){this.pixelSize=e.uint8,this.maxWidth=e.uint8,this.widths=e.readBytes(t)}},_C=Object.freeze({__proto__:null,hdmx:EC}),OC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.nTables=r.uint16,ce(this,"tables",()=>{let o=this.tableStart+4,n=[];for(let s=0;s<this.nTables;s++){r.currentPosition=o;let i=new PC(r);n.push(i),o+=i}return n})}},PC=class{constructor(e){this.version=e.uint16,this.length=e.uint16,this.coverage=e.flags(8),this.format=e.uint8,this.format===0&&(this.nPairs=e.uint16,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16,ce(this,"pairs",()=>[...new Array(this.nPairs)].map(t=>new FC(e)))),this.format===2&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}},FC=class{constructor(e){this.left=e.uint16,this.right=e.uint16,this.value=e.fword}},kC=Object.freeze({__proto__:null,kern:OC}),AC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numGlyphs=r.uint16,this.yPels=r.readBytes(this.numGlyphs)}},IC=Object.freeze({__proto__:null,LTSH:AC}),LC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.mergeClassCount=r.uint16,this.mergeDataOffset=r.Offset16,this.classDefCount=r.uint16,this.offsetToClassDefOffsets=r.Offset16,ce(this,"mergeEntryMatrix",()=>[...new Array(this.mergeClassCount)].map(o=>r.readBytes(this.mergeClassCount))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},NC=Object.freeze({__proto__:null,MERG:LC}),DC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint32,this.flags=r.uint32,r.uint32,this.dataMapsCount=r.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map(o=>new MC(this.tableStart,r))}},MC=class{constructor(e,t){this.tableStart=e,this.parser=t,this.tag=t.tag,this.dataOffset=t.Offset32,this.dataLength=t.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}},VC=Object.freeze({__proto__:null,meta:DC}),BC=class extends _e{constructor(e,t){super(e,t),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}},zC=Object.freeze({__proto__:null,PCLT:BC}),jC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.uint16,this.numRecs=r.uint16,this.numRatios=r.uint16,this.ratRanges=[...new Array(this.numRatios)].map(o=>new HC(r)),this.offsets=[...new Array(this.numRatios)].map(o=>r.Offset16),this.VDMXGroups=[...new Array(this.numRecs)].map(o=>new UC(r))}},HC=class{constructor(e){this.bCharSet=e.uint8,this.xRatio=e.uint8,this.yStartRatio=e.uint8,this.yEndRatio=e.uint8}},UC=class{constructor(e){this.recs=e.uint16,this.startsz=e.uint8,this.endsz=e.uint8,this.records=[...new Array(this.recs)].map(t=>new WC(e))}},WC=class{constructor(e){this.yPelHeight=e.uint16,this.yMax=e.int16,this.yMin=e.int16}},GC=Object.freeze({__proto__:null,VDMX:jC}),YC=class extends _e{constructor(e,t){let{p:r}=super(e,t);this.version=r.fixed,this.ascent=this.vertTypoAscender=r.int16,this.descent=this.vertTypoDescender=r.int16,this.lineGap=this.vertTypoLineGap=r.int16,this.advanceHeightMax=r.int16,this.minTopSideBearing=r.int16,this.minBottomSideBearing=r.int16,this.yMaxExtent=r.int16,this.caretSlopeRise=r.int16,this.caretSlopeRun=r.int16,this.caretOffset=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.reserved=r.int16,this.metricDataFormat=r.int16,this.numOfLongVerMetrics=r.uint16,r.verifyLength()}},qC=Object.freeze({__proto__:null,vhea:YC}),ZC=class extends _e{constructor(e,t,r){super(e,t);let o=r.vhea.numOfLongVerMetrics,n=r.maxp.numGlyphs,s=p.currentPosition;if(lazy(this,"vMetrics",()=>(p.currentPosition=s,[...new Array(o)].map(i=>new XC(p.uint16,p.int16)))),o<n){let i=s+o*4;lazy(this,"topSideBearings",()=>(p.currentPosition=i,[...new Array(n-o)].map(a=>p.int16)))}}},XC=class{constructor(e,t){this.advanceHeight=e,this.topSideBearing=t}},KC=Object.freeze({__proto__:null,vmtx:ZC});var hg=m(ue(),1);var{kebabCase:JC}=De(hg.privateApis);function gg(e){let t=e.reduce((r,o)=>(r[o.fontFamily]||(r[o.fontFamily]={name:o.fontFamily,fontFamily:o.fontFamily,slug:JC(o.fontFamily.toLowerCase()),fontFace:[]}),r[o.fontFamily].fontFace.push(o),r),{});return Object.values(t)}var $t=m(Z(),1);function QC(){let{installFonts:e}=(0,vs.useContext)(Mt),[t,r]=(0,vs.useState)(!1),[o,n]=(0,vs.useState)(null),s=g=>{a(g)},i=g=>{a(g.target.files)},a=async g=>{if(!g)return;n(null),r(!0);let d=new Set,b=[...g],S=!1,R=b.map(async v=>{if(!await u(v))return S=!0,null;if(d.has(v.name))return null;let k=(((v.name??"").split(".")??[]).pop()??"").toLowerCase();return mc.includes(k)?(d.add(v.name),v):null}),x=(await Promise.all(R)).filter(v=>v!==null);if(x.length>0)c(x);else{let v=S?(0,An.__)("Sorry, you are not allowed to upload this file type."):(0,An.__)("No fonts found to install.");n({type:"error",message:v}),r(!1)}},c=async g=>{let d=await Promise.all(g.map(async b=>{let S=await f(b);return await vo(S,S.file,"all"),S}));h(d)};async function u(g){let d=new Qi("Uploaded Font");try{let b=await l(g);return await d.fromDataBuffer(b,"font"),!0}catch{return!1}}async function l(g){return new Promise((d,b)=>{let S=new window.FileReader;S.readAsArrayBuffer(g),S.onload=()=>d(S.result),S.onerror=b})}let f=async g=>{let d=await l(g),b=new Qi("Uploaded Font");b.fromDataBuffer(d,g.name);let R=(await new Promise(D=>b.onload=D)).detail.font,{name:x}=R.opentype.tables,v=x.get(16)||x.get(1),C=x.get(2).toLowerCase().includes("italic"),k=R.opentype.tables["OS/2"].usWeightClass||"normal",_=!!R.opentype.tables.fvar&&R.opentype.tables.fvar.axes.find(({tag:D})=>D==="wght"),A=_?`${_.minValue} ${_.maxValue}`:null;return{file:g,fontFamily:v,fontStyle:C?"italic":"normal",fontWeight:A||k}},h=async g=>{let d=gg(g);try{await e(d),n({type:"success",message:(0,An.__)("Fonts were installed successfully.")})}catch(b){let S=b;n({type:"error",message:S.message,errors:S?.installationErrors})}r(!1)};return(0,$t.jsxs)("div",{className:"font-library__tabpanel-layout",children:[(0,$t.jsx)(kt.DropZone,{onFilesDrop:s}),(0,$t.jsxs)(kt.__experimentalVStack,{className:"font-library__local-fonts",justify:"start",children:[o&&(0,$t.jsxs)(kt.Notice,{status:o.type,__unstableHTML:!0,onRemove:()=>n(null),children:[o.message,o.errors&&(0,$t.jsx)("ul",{children:o.errors.map((g,d)=>(0,$t.jsx)("li",{children:g},d))})]}),t&&(0,$t.jsx)(kt.FlexItem,{children:(0,$t.jsx)("div",{className:"font-library__upload-area",children:(0,$t.jsx)(kt.ProgressBar,{})})}),!t&&(0,$t.jsx)(kt.FormFileUpload,{accept:mc.map(g=>`.${g}`).join(","),multiple:!0,onChange:i,render:({openFileDialog:g})=>(0,$t.jsx)(kt.Button,{__next40pxDefaultSize:!0,className:"font-library__upload-area",onClick:g,children:(0,An.__)("Upload font")})}),(0,$t.jsx)(kt.__experimentalText,{className:"font-library__upload-area__text",children:(0,An.__)("Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.")})]})]})}var $i=QC;var vg=m(Z(),1),{Tabs:iM}=De(wc.privateApis),aM={id:"installed-fonts",title:(0,ea._x)("Library","Font library")},lM={id:"upload-fonts",title:(0,ea._x)("Upload","noun")};var bg=m(Se(),1),Sc=m(ue(),1),eR=m(Pe(),1);var xg=m(Z(),1);var Cc=m(Z(),1);var wg=m(Se(),1),ta=m(ue(),1);var Sg=m(Z(),1);var Ec=m(Z(),1);var mr=m(Se(),1),Tc=m(ue(),1),lR=m(Pe(),1);var Cg=m(Dt(),1);var iR=m(Z(),1),{useSettingsForBlockElement:VM,TypographyPanel:BM}=De(Cg.privateApis);var aR=m(Z(),1);var _c=m(Z(),1),ZM={text:{description:(0,mr.__)("Manage the fonts used on the site."),title:(0,mr.__)("Text")},link:{description:(0,mr.__)("Manage the fonts and typography used on the links."),title:(0,mr.__)("Links")},heading:{description:(0,mr.__)("Manage the fonts and typography used on headings."),title:(0,mr.__)("Headings")},caption:{description:(0,mr.__)("Manage the fonts and typography used on captions."),title:(0,mr.__)("Captions")},button:{description:(0,mr.__)("Manage the fonts and typography used on buttons."),title:(0,mr.__)("Buttons")}};var dR=m(Se(),1),pR=m(ue(),1),Eg=m(Dt(),1);var In=m(ue(),1),Rg=m(Se(),1);var fR=m(Pe(),1);var cR=m(ue(),1),uR=m(Z(),1);var Oc=m(Z(),1);var Pc=m(Z(),1),{useSettingsForBlockElement:u8,ColorPanel:f8}=De(Eg.privateApis);var xR=m(Se(),1),Ag=m(ue(),1);var gR=m(Lo(),1),Fc=m(ue(),1),yR=m(Se(),1);var oa=m(ue(),1);var ra=m(ue(),1);var Tg=m(Z(),1);function _g(){let{paletteColors:e}=Cn();return e.slice(0,4).map(({slug:t,color:r},o)=>(0,Tg.jsx)("div",{style:{flexGrow:1,height:"100%",background:r}},`${t}-${o}`))}var xs=m(Z(),1),mR={start:{scale:1,opacity:1},hover:{scale:0,opacity:0}},hR=({label:e,isFocused:t,withHoverView:r})=>(0,xs.jsx)(Tn,{label:e,isFocused:t,withHoverView:r,children:({key:o})=>(0,xs.jsx)(ra.__unstableMotion.div,{variants:mR,style:{height:"100%",overflow:"hidden"},children:(0,xs.jsx)(ra.__experimentalHStack,{spacing:0,justify:"center",style:{height:"100%",overflow:"hidden"},children:(0,xs.jsx)(_g,{})})},o)}),Og=hR;var Yo=m(Z(),1),Pg=["color"];function na({title:e,gap:t=2}){let r=Oi(Pg);return r?.length<=1?null:(0,Yo.jsxs)(oa.__experimentalVStack,{spacing:3,children:[e&&(0,Yo.jsx)(ar,{level:3,children:e}),(0,Yo.jsx)(oa.__experimentalGrid,{gap:t,children:r.map((o,n)=>(0,Yo.jsx)(On,{variation:o,isPill:!0,properties:Pg,showTooltip:!0,children:()=>(0,Yo.jsx)(Og,{})},n))})]})}var Fg=m(Z(),1);var vR=m(Lo(),1),sa=m(ue(),1),bR=m(Se(),1);var kg=m(Z(),1);var kc=m(Z(),1),{Tabs:D8}=De(Ag.privateApis);var SR=m(Se(),1),Lg=m(Dt(),1),CR=m(ue(),1);var Ig=m(Dt(),1);var wR=m(Z(),1);var{BackgroundPanel:z8}=De(Ig.privateApis);var Ac=m(Z(),1),{useHasBackgroundPanel:q8}=De(Lg.privateApis);var qo=m(ue(),1),Ic=m(Se(),1);var OR=m(Pe(),1);var RR=m(ue(),1),ER=m(Se(),1),TR=m(Z(),1);var Lc=m(Z(),1),{Menu:sV}=De(qo.privateApis);var vt=m(ue(),1),ws=m(Se(),1);var ia=m(Pe(),1);var Nc=m(Z(),1),{Menu:xV}=De(vt.privateApis),wV=[{label:(0,ws.__)("Rename"),action:"rename"},{label:(0,ws.__)("Delete"),action:"delete"}],SV=[{label:(0,ws.__)("Reset"),action:"reset"}];var PR=m(Z(),1);var AR=m(Se(),1),Dg=m(Dt(),1);var Ng=m(Dt(),1),FR=m(Pe(),1);var kR=m(Z(),1),{useSettingsForBlockElement:kV,DimensionsPanel:AV}=De(Ng.privateApis);var Dc=m(Z(),1),{useHasDimensionsPanel:BV,useSettingsForBlockElement:zV}=De(Dg.privateApis);var Hg=m(ue(),1),DR=m(Se(),1);var LR=m(Se(),1),NR=m(ue(),1);var Mg=m(sr(),1),Vg=m(Kt(),1),la=m(Pe(),1),Bg=m(ue(),1),zg=m(Se(),1);var aa=m(Z(),1);function IR({gap:e=2}){let{user:t}=(0,la.useContext)(_t),r=t?.styles,n=(0,Vg.useSelect)(i=>{let a=i(Mg.store).__experimentalGetCurrentThemeGlobalStylesVariations();return Array.isArray(a)?a:void 0},[])?.filter(i=>!fs(i,["color"])&&!fs(i,["typography","spacing"])),s=(0,la.useMemo)(()=>[...[{title:(0,zg.__)("Default"),settings:{},styles:{}},...n??[]].map(a=>{let c=a?.styles?.blocks?{...a.styles.blocks}:{};r?.blocks&&Object.keys(r.blocks).forEach(h=>{if(r.blocks?.[h]?.css){let g=c[h]||{},d={css:`${c[h]?.css||""} ${r.blocks?.[h]?.css?.trim()||""}`};c[h]={...g,...d}}});let u=r?.css||a.styles?.css?{css:`${a.styles?.css||""} ${r?.css||""}`}:{},l=Object.keys(c).length>0?{blocks:c}:{},f={...a.styles,...u,...l};return{...a,settings:a.settings??{},styles:f}})],[n,r?.blocks,r?.css]);return!n||n.length<1?null:(0,aa.jsx)(Bg.__experimentalGrid,{columns:2,className:"global-styles-ui-style-variations-container",gap:e,children:s.map((i,a)=>(0,aa.jsx)(On,{variation:i,children:c=>(0,aa.jsx)(sc,{label:i?.title,withHoverView:!0,isFocused:c,variation:i})},a))})}var Mc=IR;var jg=m(Z(),1);var Vc=m(Z(),1);var MR=m(Se(),1),VR=m(ue(),1),Ug=m(Dt(),1);var Bc=m(Z(),1),{AdvancedPanel:nB}=De(Ug.privateApis);var Qg=m(Se(),1),jc=m(ue(),1),Hc=m(Pe(),1);var BR=m(Kt(),1),zR=m(sr(),1),Wg=m(Pe(),1);var qg=m(Se(),1),Zg=m(ue(),1),ca=m(Yg(),1),jR=m(sr(),1),HR=m(Kt(),1);var Xg=m(dc(),1),Kg=m(Z(),1),cB=3600*1e3*24;var zc=m(ue(),1),Ss=m(Se(),1);var Jg=m(Z(),1);var Uc=m(Z(),1);var Wc=m(Se(),1),eo=m(ue(),1);var qR=m(Pe(),1);var WR=m(ue(),1),GR=m(Se(),1),YR=m(Z(),1);var Gc=m(Z(),1),{Menu:FB}=De(eo.privateApis);var ry=m(Se(),1),zr=m(ue(),1);var oy=m(Pe(),1);var ZR=m(Dt(),1),XR=m(Se(),1);var KR=m(Z(),1);var JR=m(ue(),1),$g=m(Se(),1),QR=m(Z(),1);var Cs=m(ue(),1),$R=m(Se(),1),e2=m(Pe(),1),ey=m(Z(),1);var to=m(ue(),1),ty=m(Z(),1);var Yc=m(Z(),1),{Menu:ZB}=De(zr.privateApis);var Zc=m(Z(),1);var Xc=m(Z(),1);function Ln(e){return function({value:r,baseValue:o,onChange:n,...s}){return(0,Xc.jsx)(us,{value:r,baseValue:o,onChange:n,children:(0,Xc.jsx)(e,{...s})})}}var n2=Ln(Mc);var s2=Ln(na);var i2=Ln(Ni);var Nn=m(Z(),1);function Kc({value:e,baseValue:t,onChange:r,activeTab:o="installed-fonts"}){let n;switch(o){case"upload-fonts":n=(0,Nn.jsx)($i,{});break;case"installed-fonts":n=(0,Nn.jsx)(Wi,{});break;default:n=(0,Nn.jsx)(Yi,{slug:o})}return(0,Nn.jsx)(us,{value:e,baseValue:t,onChange:r,children:(0,Nn.jsx)(Vi,{children:n})})}var iy=m(wi()),{unlock:Jc}=(0,iy.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/font-list-route");if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='511950e422']")){let e=document.createElement("style");e.setAttribute("data-wp-hash","511950e422"),e.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:var(--wpds-cursor-control,pointer);display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid transparent}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid transparent;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid transparent;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid rgba(0,0,0,.1);outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:rgba(0,0,0,.3)}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel{flex:1 1 auto}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input textarea{flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.font-library-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}')),document.head.appendChild(e)}var{Tabs:ua}=Jc(ay.privateApis),{useGlobalStyles:a2}=Jc(ly.privateApis);function l2(){let{records:e=[]}=(0,fa.useEntityRecords)("root","fontCollection",{_fields:"slug,name,description"}),[t,r]=(0,uy.useState)("installed-fonts"),{base:o,user:n,setUser:s,isReady:i}=a2(),a=(0,cy.useSelect)(u=>u(fa.store).canUser("create",{kind:"postType",name:"wp_font_family"}),[]);if(!i)return null;let c=[{id:"installed-fonts",title:(0,Dn._x)("Library","Font library")}];return a&&(c.push({id:"upload-fonts",title:(0,Dn._x)("Upload","noun")}),c.push(...(e||[]).map(({slug:u,name:l})=>({id:u,title:e&&e.length===1&&u==="google-fonts"?(0,Dn.__)("Install Fonts"):l})))),React.createElement(Bl,{title:(0,Dn.__)("Fonts"),className:"font-library-page"},React.createElement(ua,{selectedTabId:t,onSelect:u=>r(u)},React.createElement("div",{className:"font-library-page__tablist"},React.createElement(ua.TabList,null,c.map(({id:u,title:l})=>React.createElement(ua.Tab,{key:u,tabId:u},l)))),c.map(({id:u})=>React.createElement(ua.TabPanel,{key:u,tabId:u,focusable:!1,className:"font-library-page__tab-panel"},React.createElement(Kc,{value:n,baseValue:o,onChange:s,activeTab:u})))))}function c2(){return React.createElement(l2,null)}var u2=c2;export{u2 as stage}; /*! Bundled license information: +use-sync-external-store/cjs/use-sync-external-store-shim.production.js: + (** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js: + (** + * @license React + * use-sync-external-store-shim/with-selector.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + is-plain-object/dist/is-plain-object.mjs: (*! * is-plain-object <https://github.com/jonschlinkert/is-plain-object> diff --git a/src/wp-includes/build/routes/registry.php b/src/wp-includes/build/routes/registry.php index 041b1369be3d1..e43f726820548 100644 --- a/src/wp-includes/build/routes/registry.php +++ b/src/wp-includes/build/routes/registry.php @@ -14,27 +14,6 @@ 'has_route' => true, 'has_content' => true, ), - array( - 'name' => 'content-types', - 'path' => '/', - 'page' => 'content-types', - 'has_route' => true, - 'has_content' => false, - ), - array( - 'name' => 'dashboard', - 'path' => '/', - 'page' => 'dashboard', - 'has_route' => false, - 'has_content' => true, - ), - array( - 'name' => 'experiments-home', - 'path' => '/', - 'page' => 'experiments', - 'has_route' => true, - 'has_content' => true, - ), array( 'name' => 'font-list', 'path' => '/font-list', @@ -48,47 +27,5 @@ 'page' => 'font-library', 'has_route' => true, 'has_content' => false, - ), - array( - 'name' => 'guidelines', - 'path' => '/', - 'page' => 'guidelines', - 'has_route' => true, - 'has_content' => true, - ), - array( - 'name' => 'media-editor', - 'path' => '/media-editor/$id', - 'page' => 'media-editor', - 'has_route' => true, - 'has_content' => true, - ), - array( - 'name' => 'post-type-edit', - 'path' => '/post-types/$id', - 'page' => 'content-types', - 'has_route' => true, - 'has_content' => true, - ), - array( - 'name' => 'post-types-list', - 'path' => '/post-types', - 'page' => 'content-types', - 'has_route' => true, - 'has_content' => true, - ), - array( - 'name' => 'taxonomies-list', - 'path' => '/taxonomies', - 'page' => 'content-types', - 'has_route' => true, - 'has_content' => true, - ), - array( - 'name' => 'taxonomy-edit', - 'path' => '/taxonomies/$id', - 'page' => 'content-types', - 'has_route' => true, - 'has_content' => true, ) ); diff --git a/src/wp-includes/images/icon-library/time-to-read.svg b/src/wp-includes/images/icon-library/time.svg similarity index 100% rename from src/wp-includes/images/icon-library/time-to-read.svg rename to src/wp-includes/images/icon-library/time.svg From 5eecf169f45e0f75dfd38dfe843ca6f49241654d Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Tue, 30 Jun 2026 04:23:43 +0000 Subject: [PATCH 277/327] Editor: Always hide blocks with visibility set to false. After a block stopped supporting visibility, a block that had been set to hide everywhere would show up again on the front end. The check is now reordered, so a block set to hide everywhere stays hidden, whether or not the block still supports visibility. Props masteradhoc, ramonopoly, tusharaddweb wildworks. Fixes #65389. git-svn-id: https://develop.svn.wordpress.org/trunk@62586 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/block-visibility.php | 10 +++++++++- .../phpunit/tests/block-supports/block-visibility.php | 9 +++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/block-supports/block-visibility.php b/src/wp-includes/block-supports/block-visibility.php index 1ba208e30c92e..9ee726ee18a69 100644 --- a/src/wp-includes/block-supports/block-visibility.php +++ b/src/wp-includes/block-supports/block-visibility.php @@ -20,16 +20,24 @@ function wp_render_block_visibility_support( $block_content, $block ) { $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $block['blockName'] ); - if ( ! $block_type || ! block_has_support( $block_type, 'visibility', true ) ) { + if ( ! $block_type ) { return $block_content; } $block_visibility = $block['attrs']['metadata']['blockVisibility'] ?? null; + // Hide the block whenever the value is boolean false, regardless of the + // block's current visibility support. This prevents blocks that previously + // supported visibility from unintentionally appearing on the front end + // after their support was disabled. if ( false === $block_visibility ) { return ''; } + if ( ! block_has_support( $block_type, 'visibility', true ) ) { + return $block_content; + } + if ( is_array( $block_visibility ) && ! empty( $block_visibility ) ) { $viewport_config = $block_visibility['viewport'] ?? null; diff --git a/tests/phpunit/tests/block-supports/block-visibility.php b/tests/phpunit/tests/block-supports/block-visibility.php index 4f24b931744f8..f5299b32251b2 100644 --- a/tests/phpunit/tests/block-supports/block-visibility.php +++ b/tests/phpunit/tests/block-supports/block-visibility.php @@ -80,12 +80,13 @@ public function test_block_visibility_support_hides_block_when_visibility_false( } /** - * Tests that block visibility support renders block normally when visibility is false - * but blockVisibility support is not opted in. + * Tests that block visibility support hides the block when visibility is false + * even when blockVisibility support is not opted in. * * @ticket 64061 + * @ticket 65389 */ - public function test_block_visibility_support_shows_block_when_support_not_opted_in(): void { + public function test_block_visibility_support_hides_block_when_visibility_false_even_without_support(): void { $this->register_visibility_block_with_support( 'test/visibility-block', array( 'visibility' => false ) @@ -103,7 +104,7 @@ public function test_block_visibility_support_shows_block_when_support_not_opted $result = wp_render_block_visibility_support( $block_content, $block ); - $this->assertSame( $block_content, $result, 'Block content should remain unchanged when blockVisibility support is not opted in.' ); + $this->assertSame( '', $result, 'Block content should be empty when blockVisibility is false, even without visibility support.' ); } /** From 135599d76dec61750640ba647c83f899f550a6fd Mon Sep 17 00:00:00 2001 From: Aki Hamano <wildworks@git.wordpress.org> Date: Tue, 30 Jun 2026 05:58:37 +0000 Subject: [PATCH 278/327] Media: Use the default 40px button height in the media modal. Buttons in the media modal and attachment detail modal defaulted to a 32px height via CSS overrides, while form elements such as input and select use the default 40px. Remove these overrides so buttons fall back to the default 40px height, resolving the size inconsistencies. Props cbravobernal, huzaifaalmesbah, khokansardar, masteradhoc, muryam, noruzzaman, tusharaddweb, wildworks. Fixes #65428. git-svn-id: https://develop.svn.wordpress.org/trunk@62587 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/media.css | 8 +------- src/wp-includes/css/media-views.css | 31 +++++++++++------------------ 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/src/wp-admin/css/media.css b/src/wp-admin/css/media.css index 5a169cfde9e01..dbce2c705995c 100644 --- a/src/wp-admin/css/media.css +++ b/src/wp-admin/css/media.css @@ -781,7 +781,7 @@ border color while dragging a file over the uploader drop area */ margin: 0 auto 16px; max-width: 100%; max-height: 90%; - max-height: calc( 100% - 42px ); /* leave space for actions underneath */ + max-height: calc( 100% - 56px ); /* leave space for actions underneath */ background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); background-position: 0 0, 10px 10px; background-size: 20px 20px; @@ -795,12 +795,6 @@ border color while dragging a file over the uploader drop area */ text-align: center; } -.edit-attachment-frame .button { - min-height: 32px; - line-height: 2.30769231; /* 30px for 32px height with 13px font */ - padding: 0 12px; -} - .edit-attachment-frame .wp-media-wrapper { margin-bottom: 12px; } diff --git a/src/wp-includes/css/media-views.css b/src/wp-includes/css/media-views.css index 0062f45e7e84d..835b04a8bf6bf 100644 --- a/src/wp-includes/css/media-views.css +++ b/src/wp-includes/css/media-views.css @@ -25,7 +25,7 @@ .media-modal label { font-size: 13px; -} +} .media-modal .legend-inline { position: absolute; @@ -272,13 +272,6 @@ -webkit-font-smoothing: subpixel-antialiased; } -.media-modal-content .button, -.media-modal-content .button.button-large { - min-height: 32px; - line-height: 2.30769231; /* 30px for 32px height with 13px font */ - padding: 0 12px; -} - .media-toolbar input[type="text"], .media-toolbar input[type="search"], .media-toolbar select { @@ -327,8 +320,8 @@ .media-frame-toolbar .media-toolbar-primary > .media-button, .media-frame-toolbar .media-toolbar-primary > .media-button-group { - margin-top: 14px; - margin-bottom: 14px; + margin-top: 10px; + margin-bottom: 10px; } .media-toolbar-primary { @@ -349,21 +342,21 @@ align-items: end; } -label[for="media-attachment-filters"] { - grid-area: 1 / 1 / 2 / 2; +label[for="media-attachment-filters"] { + grid-area: 1 / 1 / 2 / 2; } -select#media-attachment-filters { - grid-area: 2 / 1 / 3 / 2; +select#media-attachment-filters { + grid-area: 2 / 1 / 3 / 2; } -label[for="media-attachment-date-filters"] { - grid-area: 1 / 2 / 2 / 3; +label[for="media-attachment-date-filters"] { + grid-area: 1 / 2 / 2 / 3; } -select#media-attachment-date-filters { - grid-area: 2 / 2 / 3 / 3; -} +select#media-attachment-date-filters { + grid-area: 2 / 2 / 3 / 3; +} .media-toolbar-secondary > .spinner { position: absolute; From d4086afa16288d8649ad4ff6201ab88a432587ac Mon Sep 17 00:00:00 2001 From: Nik Tsekouras <ntsekouras@git.wordpress.org> Date: Tue, 30 Jun 2026 06:55:13 +0000 Subject: [PATCH 279/327] Add default post type and pattern forms to view config. Apply a single default form to every post type in `wp_get_entity_view_config()` instead of registering an identical form per type, so `post`, `page`, and custom post types all receive a sensible default. Post types that need a different shape can still replace it entirely through their own `get_entity_view_config_postType_{$post_type}` filter callback. The default is intentionally not gated by `supports`: the registered fields are the single source of truth, and the editor drops any field whose definition is absent or whose `isVisible` returns false. Add a dedicated form for the `wp_block` (pattern) post type, covering excerpt, content info, sync status, and revisions. This ports the changes from the Gutenberg plugin. See https://github.com/WordPress/gutenberg/pull/79625 and https://github.com/WordPress/gutenberg/pull/79452. Follow-up to [62547]. Props jorgefilipecosta, ntsekouras, mcsf. Fixes #65552. git-svn-id: https://develop.svn.wordpress.org/trunk@62588 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/default-filters.php | 2 +- src/wp-includes/view-config.php | 249 ++++++++++++---------------- 2 files changed, 107 insertions(+), 144 deletions(-) diff --git a/src/wp-includes/default-filters.php b/src/wp-includes/default-filters.php index 3d00e5ae1ba22..4e0b74a8d22c2 100644 --- a/src/wp-includes/default-filters.php +++ b/src/wp-includes/default-filters.php @@ -819,7 +819,7 @@ add_filter( 'rest_pre_insert_wp_template_part', 'inject_ignored_hooked_blocks_metadata_attributes' ); // View Config API. -foreach ( array( 'page', 'post', 'wp_block', 'wp_template_part', 'wp_template' ) as $post_type ) { +foreach ( array( 'page', 'wp_block', 'wp_template_part', 'wp_template' ) as $post_type ) { add_filter( "get_entity_view_config_postType_{$post_type}", "_wp_get_entity_view_config_post_type_{$post_type}", diff --git a/src/wp-includes/view-config.php b/src/wp-includes/view-config.php index 810fafb840384..8b7e019e48b84 100644 --- a/src/wp-includes/view-config.php +++ b/src/wp-includes/view-config.php @@ -10,6 +10,89 @@ * @since 7.1.0 */ +/** + * Builds the default `form` configuration for post types that don't provide their own. + * + * It is a sensible default for `post`, `page`, and custom post types alike rather + * than being tailored per type. Post types that need a different shape can replace + * it entirely with a dedicated `form` through their own filter callback. + * + * It is intentionally NOT gated by `supports`. The registered fields are the + * single source of truth for what applies: each field is registered for a post + * type based on its `supports` (and related flags such as `theme_supports`), and + * the editor drops any form field whose definition is absent or whose `isVisible` + * returns `false`. + * + * @since 7.1.0 + * + * @return array The default form configuration. + */ +function _wp_get_default_post_type_form() { + return array( + 'layout' => array( 'type' => 'panel' ), + 'fields' => array( + array( + 'id' => 'featured_media', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + array( + 'id' => 'post-content-info', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + array( + 'id' => 'excerpt', + 'layout' => array( + 'type' => 'panel', + 'labelPosition' => 'top', + ), + ), + array( + 'id' => 'status', + 'label' => __( 'Status' ), + 'children' => array( + array( + 'id' => 'status', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'scheduled_date', + 'password', + 'sticky', + ), + ), + 'date', + 'slug', + 'author', + 'template', + array( + 'id' => 'discussion', + 'label' => __( 'Discussion' ), + 'children' => array( + array( + 'id' => 'comment_status', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'ping_status', + ), + ), + 'parent', + 'format', + 'revisions', + ), + ); +} + /** * Returns the view configuration for the given entity. * @@ -65,7 +148,7 @@ function wp_get_entity_view_config( $kind, $name ) { 'default_view' => $default_view, 'default_layouts' => $default_layouts, 'view_list' => $view_list, - 'form' => array(), + 'form' => 'postType' === $kind ? _wp_get_default_post_type_form() : array(), ); /** @@ -241,148 +324,6 @@ function _wp_get_entity_view_config_post_type_page( $config ) { ), ); - $config['form'] = array( - 'layout' => array( 'type' => 'panel' ), - 'fields' => array( - array( - 'id' => 'featured_media', - 'layout' => array( - 'type' => 'regular', - 'labelPosition' => 'none', - ), - ), - array( - 'id' => 'post-content-info', - 'layout' => array( - 'type' => 'regular', - 'labelPosition' => 'none', - ), - ), - array( - 'id' => 'excerpt', - 'layout' => array( - 'type' => 'panel', - 'labelPosition' => 'top', - ), - ), - array( - 'id' => 'status', - 'label' => __( 'Status' ), - 'children' => array( - array( - 'id' => 'status', - 'layout' => array( - 'type' => 'regular', - 'labelPosition' => 'none', - ), - ), - 'scheduled_date', - 'password', - 'sticky', - ), - ), - 'date', - 'slug', - 'author', - 'template', - array( - 'id' => 'discussion', - 'label' => __( 'Discussion' ), - 'children' => array( - array( - 'id' => 'comment_status', - 'layout' => array( - 'type' => 'regular', - 'labelPosition' => 'none', - ), - ), - 'ping_status', - ), - ), - 'parent', - 'format', - 'revisions', - ), - ); - - return $config; -} - -/** - * Provides the view configuration for the `post` post type. - * - * @since 7.1.0 - * - * @param array $config { - * The view configuration for the entity. - * } - * @return array The filtered view configuration. - */ -function _wp_get_entity_view_config_post_type_post( $config ) { - $config['form'] = array( - 'layout' => array( 'type' => 'panel' ), - 'fields' => array( - array( - 'id' => 'featured_media', - 'layout' => array( - 'type' => 'regular', - 'labelPosition' => 'none', - ), - ), - array( - 'id' => 'post-content-info', - 'layout' => array( - 'type' => 'regular', - 'labelPosition' => 'none', - ), - ), - array( - 'id' => 'excerpt', - 'layout' => array( - 'type' => 'panel', - 'labelPosition' => 'top', - ), - ), - array( - 'id' => 'status', - 'label' => __( 'Status' ), - 'children' => array( - array( - 'id' => 'status', - 'layout' => array( - 'type' => 'regular', - 'labelPosition' => 'none', - ), - ), - 'scheduled_date', - 'password', - 'sticky', - ), - ), - 'date', - 'slug', - 'author', - 'template', - array( - 'id' => 'discussion', - 'label' => __( 'Discussion' ), - 'children' => array( - array( - 'id' => 'comment_status', - 'layout' => array( - 'type' => 'regular', - 'labelPosition' => 'none', - ), - ), - 'ping_status', - ), - ), - 'parent', - 'format', - 'revisions', - ), - ); - return $config; } @@ -473,6 +414,28 @@ function _wp_get_entity_view_config_post_type_wp_block( $config ) { $config['view_list'] = $view_list; + $config['form'] = array( + 'layout' => array( 'type' => 'panel' ), + 'fields' => array( + array( + 'id' => 'excerpt', + 'layout' => array( + 'type' => 'panel', + 'labelPosition' => 'top', + ), + ), + array( + 'id' => 'post-content-info', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'sync-status', + 'revisions', + ), + ); + return $config; } From cd441a6444afbe194149b8c5e34bfc474d043d8b Mon Sep 17 00:00:00 2001 From: Carlos Bravo <cbravobernal@git.wordpress.org> Date: Tue, 30 Jun 2026 09:56:41 +0000 Subject: [PATCH 280/327] Notifications: Remove the username from the new user notification email. Removes the username from the "Login Details" email sent to a user when their account is created (`wp_new_user_notification()`). Props masteradhoc, cweiske. Fixes #63085. git-svn-id: https://develop.svn.wordpress.org/trunk@62590 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/pluggable.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/wp-includes/pluggable.php b/src/wp-includes/pluggable.php index fd659b600c379..f659186b9a70c 100644 --- a/src/wp-includes/pluggable.php +++ b/src/wp-includes/pluggable.php @@ -2372,9 +2372,7 @@ function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) $switched_locale = switch_to_user_locale( $user_id ); - /* translators: %s: User login. */ - $message = sprintf( __( 'Username: %s' ), $user->user_login ) . "\r\n\r\n"; - $message .= __( 'To set your password, visit the following address:' ) . "\r\n\r\n"; + $message = __( 'To set your password, visit the following address:' ) . "\r\n\r\n"; /* * Since some user login names end in a period, this could produce ambiguous URLs that From ffbc198bee5c842310a7acf46820f6f83b76d8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Zi=C3=B3=C5=82kowski?= <gziolo@git.wordpress.org> Date: Tue, 30 Jun 2026 10:05:53 +0000 Subject: [PATCH 281/327] Abilities API: Reuse JSON Schema client preparation Introduce `wp_prepare_json_schema_for_client()` to prepare JSON Schemas that are exposed to clients, and reuse it for Abilities REST responses and for the AI Client ability input schemas that become function declaration parameters. Ability schemas can include WordPress-internal schema conveniences that server-side REST validation accepts but that are not in portable JSON Schema draft-04 forms. Routing them through one shared helper keeps REST responses, frontend consumers, and and AI tool declarations aligned. Move the detailed schemae shared JSON Schema tests, and keep the REST and AI Client tests focused on integration wiring. Fixes #64955. git-svn-id: https://develop.svn.wordpress.org/trunk@62591 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-wp-ai-client-prompt-builder.php | 2 +- src/wp-includes/json-schema.php | 157 +++++- ...s-wp-rest-abilities-v1-list-controller.php | 164 +----- .../ai-client/wpAiClientPromptBuilder.php | 2 + tests/phpunit/tests/json-schema.php | 358 +++++++++++++ .../wpRestAbilitiesV1ListController.php | 476 ------------------ 6 files changed, 507 insertions(+), 652 deletions(-) diff --git a/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php b/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php index da7858dd76555..a64957fe73157 100644 --- a/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php +++ b/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php @@ -261,7 +261,7 @@ public function using_abilities( ...$abilities ): self { } $function_name = WP_AI_Client_Ability_Function_Resolver::ability_name_to_function_name( $ability->get_name() ); - $input_schema = $ability->get_input_schema(); + $input_schema = wp_prepare_json_schema_for_client( $ability->get_input_schema() ); $declarations[] = new FunctionDeclaration( $function_name, diff --git a/src/wp-includes/json-schema.php b/src/wp-includes/json-schema.php index 9832a479a7d3b..782ad9714fe36 100644 --- a/src/wp-includes/json-schema.php +++ b/src/wp-includes/json-schema.php @@ -10,20 +10,17 @@ /** * Gets the JSON Schema keywords allowed for a given schema profile. * - * Use the returned list to decide which keywords to keep when a schema is - * output as JSON. Both profiles describe JSON Schema draft-04 output, also - * called JSON Schema Version 4. They differ only in how much of the keyword - * vocabulary stays in the result. + * Use this when preparing a schema that will be consumed outside of + * WordPress's server-side validation, such as by REST clients, frontend code, + * or AI providers. * - * - 'rest-api' returns the subset of draft-04 that the WordPress REST API - * uses for route output. This is the default. - * - 'draft-04' returns the larger draft-04 set used when publishing a schema - * as a standalone document to clients, such as the Abilities API. It keeps - * documentation and passthrough keywords like '$ref', 'definitions', - * 'allOf', 'not', 'dependencies', and 'additionalItems'. + * The 'rest-api' profile returns the subset of JSON Schema draft-04 keywords + * that the REST API has historically exposed. The 'draft-04' profile preserves + * the larger draft-04 vocabulary used by clients that can consume standalone + * schemas. * - * The keywords are allowed to stay in the schema output. This does not mean - * WordPress validates or sanitizes values against them. + * Allowing a keyword to be exposed does not make WordPress validate or + * sanitize values against it. * * @since 7.1.0 * @@ -60,7 +57,7 @@ function wp_get_json_schema_allowed_keywords( string $schema_profile = 'rest-api /** * Filters the JSON Schema keywords allowed for a given schema profile. * - * Adding a keyword lets it stay in the schema output for that profile. + * Use this to decide which keywords may be exposed to clients for a profile. * It does not make WordPress validate or sanitize values against the keyword. * * @since 7.1.0 @@ -70,3 +67,137 @@ function wp_get_json_schema_allowed_keywords( string $schema_profile = 'rest-api */ return apply_filters( 'wp_json_schema_allowed_keywords', $allowed_keywords, $schema_profile ); } + +/** + * Prepares a JSON Schema for clients. + * + * Use this before exposing a schema outside of WordPress's server-side + * validation, for example in REST responses, Ability metadata, or AI provider + * requests. The prepared schema uses forms that JSON Schema draft-04 clients + * can understand. + * + * WordPress-internal schema conveniences are converted or removed only where + * needed to keep the exposed schema valid for the selected profile. + * + * @since 7.1.0 + * + * @param array<string, mixed> $schema The schema array. + * @param string $schema_profile Optional. Name of the schema profile + * whose keywords should be preserved. + * Default 'draft-04'. + * @return array<string, mixed> The prepared schema. + */ +function wp_prepare_json_schema_for_client( array $schema, string $schema_profile = 'draft-04' ): array { + $allowed_keywords = array_fill_keys( wp_get_json_schema_allowed_keywords( $schema_profile ), true ); + + return _wp_prepare_json_schema_for_client_with_allowed_keywords( $schema, $allowed_keywords ); +} + +/** + * Prepares a JSON Schema for clients using a given keyword lookup. + * + * @since 7.1.0 + * @access private + * + * @param array<string, mixed> $schema The schema array. + * @param array<string, true> $allowed_keywords Lookup map of allowed JSON Schema keywords. + * @return array<string, mixed> The prepared schema. + */ +function _wp_prepare_json_schema_for_client_with_allowed_keywords( array $schema, array $allowed_keywords ): array { + if ( isset( $schema['type'] ) && 'object' === $schema['type'] && isset( $schema['default'] ) ) { + $default = $schema['default']; + if ( is_array( $default ) && empty( $default ) ) { + $schema['default'] = (object) $default; + } + } + + $schema = array_intersect_key( $schema, $allowed_keywords ); + + /* + * Collect draft-03 per-property `required: true` flags into a draft-04 + * `required` array of property names on the parent object schema. + * + * This mirrors rest_validate_object_value_from_schema(), where a draft-04 + * `required` array takes precedence: when one is present, per-property + * booleans are ignored during validation. They are therefore left out of + * the array here as well (but still stripped from the output) so the + * published schema describes exactly what gets enforced. + */ + if ( isset( $schema['properties'] ) && is_array( $schema['properties'] ) ) { + $has_required_array = isset( $schema['required'] ) && is_array( $schema['required'] ); + $required = array(); + foreach ( $schema['properties'] as $property => &$property_schema ) { + if ( is_array( $property_schema ) && ! wp_is_numeric_array( $property_schema ) && isset( $property_schema['required'] ) && is_bool( $property_schema['required'] ) ) { + if ( ! $has_required_array && true === $property_schema['required'] ) { + $required[] = (string) $property; + } + unset( $property_schema['required'] ); + } + } + unset( $property_schema ); + + /* + * Property keys are unique, so the collected list needs no deduplication. + * When a draft-04 array is already present, leave it untouched. + */ + if ( ! $has_required_array && count( $required ) > 0 ) { + $schema['required'] = $required; + } + } + + /* + * A boolean `required` outside of an object's property list has no draft-04 + * equivalent, so drop it rather than emit an invalid keyword. + */ + if ( isset( $schema['required'] ) && is_bool( $schema['required'] ) ) { + unset( $schema['required'] ); + } + + /* + * Sub-schema maps: keys are user-defined, values are sub-schemas. + * Note: 'dependencies' values can also be property-dependency arrays + * (numeric arrays of strings) which are skipped via wp_is_numeric_array(). + */ + foreach ( array( 'properties', 'patternProperties', 'definitions', 'dependencies' ) as $keyword ) { + if ( isset( $schema[ $keyword ] ) && is_array( $schema[ $keyword ] ) ) { + foreach ( $schema[ $keyword ] as $key => $child_schema ) { + if ( is_array( $child_schema ) && ! wp_is_numeric_array( $child_schema ) ) { + $schema[ $keyword ][ $key ] = _wp_prepare_json_schema_for_client_with_allowed_keywords( $child_schema, $allowed_keywords ); + } + } + } + } + + // Single sub-schema keywords. + foreach ( array( 'not', 'additionalProperties', 'additionalItems' ) as $keyword ) { + if ( isset( $schema[ $keyword ] ) && is_array( $schema[ $keyword ] ) && ! wp_is_numeric_array( $schema[ $keyword ] ) ) { + $schema[ $keyword ] = _wp_prepare_json_schema_for_client_with_allowed_keywords( $schema[ $keyword ], $allowed_keywords ); + } + } + + // Items: single schema or tuple array of schemas. + if ( isset( $schema['items'] ) && is_array( $schema['items'] ) ) { + if ( ! wp_is_numeric_array( $schema['items'] ) ) { + $schema['items'] = _wp_prepare_json_schema_for_client_with_allowed_keywords( $schema['items'], $allowed_keywords ); + } else { + foreach ( $schema['items'] as $index => $item_schema ) { + if ( is_array( $item_schema ) && ! wp_is_numeric_array( $item_schema ) ) { + $schema['items'][ $index ] = _wp_prepare_json_schema_for_client_with_allowed_keywords( $item_schema, $allowed_keywords ); + } + } + } + } + + // Array-of-schemas keywords. + foreach ( array( 'anyOf', 'oneOf', 'allOf' ) as $keyword ) { + if ( isset( $schema[ $keyword ] ) && is_array( $schema[ $keyword ] ) ) { + foreach ( $schema[ $keyword ] as $index => $sub_schema ) { + if ( is_array( $sub_schema ) && ! wp_is_numeric_array( $sub_schema ) ) { + $schema[ $keyword ][ $index ] = _wp_prepare_json_schema_for_client_with_allowed_keywords( $sub_schema, $allowed_keywords ); + } + } + } + } + + return $schema; +} diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php index 36cd249c55d6f..01f69012348f5 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php @@ -34,18 +34,6 @@ class WP_REST_Abilities_V1_List_Controller extends WP_REST_Controller { */ protected $rest_base = 'abilities'; - /** - * Lookup map of allowed schema keywords for preparing ability schemas in REST responses. - * - * Keyword names are stored as keys so they can be matched with - * array_intersect_key(). Computed lazily on first use and reused while - * preparing nested schemas. - * - * @since 7.1.0 - * @var array<string, true> - */ - private array $allowed_schema_keyword_lookup; - /** * Registers the routes for abilities. * @@ -205,154 +193,6 @@ public function get_item_permissions_check( $request ) { return current_user_can( 'read' ); } - /** - * Determines whether the value is an associative array. - * - * @since 7.1.0 - * - * @param mixed $value Value. - * @return bool Whether it is associative array. - * - * @phpstan-assert-if-true array<string, mixed> $value - */ - private function is_associative_array( $value ): bool { - return is_array( $value ) && ! wp_is_numeric_array( $value ); - } - - /** - * Gets the allowed schema keywords for preparing ability schemas in REST responses. - * - * Uses the fuller draft-04 keyword set, not the smaller REST API subset. - * The published schema is consumed by clients that re-validate values - * against standard draft-04, so it keeps the keywords those validators - * expect. - * - * @since 7.1.0 - * - * @return array<string, true> Allowed schema keywords. - */ - private function get_allowed_schema_keywords_for_response(): array { - if ( ! isset( $this->allowed_schema_keyword_lookup ) ) { - $this->allowed_schema_keyword_lookup = array_fill_keys( wp_get_json_schema_allowed_keywords( 'draft-04' ), true ); - } - - return $this->allowed_schema_keyword_lookup; - } - - /** - * Transforms an ability schema for REST response output. - * - * The input and output schemas are a public contract: REST clients (such as - * the `@wordpress/abilities` JS client) consume them as standard JSON Schema - * and validate ability input and output against them. The response must - * therefore use JSON Schema draft-04 forms that standard validators - * understand, not the WordPress-internal conventions that - * `rest_validate_value_from_schema()` also accepts on the server. - * - * Ability schemas may include WordPress-internal properties or unsupported - * schema keywords that should not be exposed in REST responses. This method - * strips keys not recognized by the REST API schema handling. It also - * converts empty array defaults to objects when the schema type is 'object' - * to ensure proper JSON serialization as {} instead of [], and normalizes - * the `required` keyword from the draft-03 per-property boolean form into - * the draft-04 array of property names. - * - * @since 7.1.0 - * - * @param array<string, mixed> $schema The schema array. - * @return array<string, mixed> The transformed schema. - */ - private function prepare_schema_for_response( array $schema ): array { - if ( isset( $schema['type'] ) && 'object' === $schema['type'] && isset( $schema['default'] ) ) { - $default = $schema['default']; - if ( is_array( $default ) && empty( $default ) ) { - $schema['default'] = (object) $default; - } - } - - $schema = array_intersect_key( $schema, $this->get_allowed_schema_keywords_for_response() ); - - // Collect draft-03 per-property `required: true` flags into a draft-04 - // `required` array of property names on the parent object schema. - // - // This mirrors rest_validate_object_value_from_schema(), where a draft-04 - // `required` array takes precedence: when one is present, per-property - // booleans are ignored during validation. They are therefore left out of - // the array here as well (but still stripped from the output) so the - // published schema describes exactly what gets enforced. - if ( isset( $schema['properties'] ) && is_array( $schema['properties'] ) ) { - $has_required_array = isset( $schema['required'] ) && is_array( $schema['required'] ); - $required = array(); - foreach ( $schema['properties'] as $property => &$property_schema ) { - if ( $this->is_associative_array( $property_schema ) && isset( $property_schema['required'] ) && is_bool( $property_schema['required'] ) ) { - if ( ! $has_required_array && true === $property_schema['required'] ) { - $required[] = (string) $property; - } - unset( $property_schema['required'] ); - } - } - unset( $property_schema ); - - // Property keys are unique, so the collected list needs no deduplication. - // When a draft-04 array is already present, leave it untouched. - if ( ! $has_required_array && count( $required ) > 0 ) { - $schema['required'] = $required; - } - } - - // A boolean `required` outside of an object's property list has no draft-04 - // equivalent, so drop it rather than emit an invalid keyword. - if ( isset( $schema['required'] ) && is_bool( $schema['required'] ) ) { - unset( $schema['required'] ); - } - - // Sub-schema maps: keys are user-defined, values are sub-schemas. - // Note: 'dependencies' values can also be property-dependency arrays - // (numeric arrays of strings) which are skipped via wp_is_numeric_array(). - foreach ( array( 'properties', 'patternProperties', 'definitions', 'dependencies' ) as $keyword ) { - if ( isset( $schema[ $keyword ] ) && is_array( $schema[ $keyword ] ) ) { - foreach ( $schema[ $keyword ] as $key => $child_schema ) { - if ( $this->is_associative_array( $child_schema ) ) { - $schema[ $keyword ][ $key ] = $this->prepare_schema_for_response( $child_schema ); - } - } - } - } - - // Single sub-schema keywords. - foreach ( array( 'not', 'additionalProperties', 'additionalItems' ) as $keyword ) { - if ( isset( $schema[ $keyword ] ) && $this->is_associative_array( $schema[ $keyword ] ) ) { - $schema[ $keyword ] = $this->prepare_schema_for_response( $schema[ $keyword ] ); - } - } - - // Items: single schema or tuple array of schemas. - if ( isset( $schema['items'] ) && is_array( $schema['items'] ) ) { - if ( $this->is_associative_array( $schema['items'] ) ) { - $schema['items'] = $this->prepare_schema_for_response( $schema['items'] ); - } else { - foreach ( $schema['items'] as $index => $item_schema ) { - if ( $this->is_associative_array( $item_schema ) ) { - $schema['items'][ $index ] = $this->prepare_schema_for_response( $item_schema ); - } - } - } - } - - // Array-of-schemas keywords. - foreach ( array( 'anyOf', 'oneOf', 'allOf' ) as $keyword ) { - if ( isset( $schema[ $keyword ] ) && is_array( $schema[ $keyword ] ) ) { - foreach ( $schema[ $keyword ] as $index => $sub_schema ) { - if ( $this->is_associative_array( $sub_schema ) ) { - $schema[ $keyword ][ $index ] = $this->prepare_schema_for_response( $sub_schema ); - } - } - } - } - - return $schema; - } - /** * Prepares an ability for response. * @@ -368,8 +208,8 @@ public function prepare_item_for_response( $ability, $request ) { 'label' => $ability->get_label(), 'description' => $ability->get_description(), 'category' => $ability->get_category(), - 'input_schema' => $this->prepare_schema_for_response( $ability->get_input_schema() ), - 'output_schema' => $this->prepare_schema_for_response( $ability->get_output_schema() ), + 'input_schema' => wp_prepare_json_schema_for_client( $ability->get_input_schema() ), + 'output_schema' => wp_prepare_json_schema_for_client( $ability->get_output_schema() ), 'meta' => $ability->get_meta(), ); diff --git a/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php b/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php index 9e8fa8d8f2a86..0669be8cc7bb4 100644 --- a/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php +++ b/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php @@ -2380,6 +2380,8 @@ public function test_using_ability_with_wp_ability_object() { $this->assertNotNull( $params ); $this->assertArrayHasKey( 'properties', $params ); $this->assertArrayHasKey( 'title', $params['properties'] ); + $this->assertSame( array( 'title' ), $params['required'] ); + $this->assertArrayNotHasKey( 'required', $params['properties']['title'] ); } /** diff --git a/tests/phpunit/tests/json-schema.php b/tests/phpunit/tests/json-schema.php index 445a03a6c1cfa..88ef58fbfd335 100644 --- a/tests/phpunit/tests/json-schema.php +++ b/tests/phpunit/tests/json-schema.php @@ -50,8 +50,366 @@ public function test_wp_get_json_schema_allowed_keywords_filter_receives_schema_ add_filter( 'wp_json_schema_allowed_keywords', $filter, 10, 2 ); $keywords = wp_get_json_schema_allowed_keywords( 'draft-04' ); + remove_filter( 'wp_json_schema_allowed_keywords', $filter, 10 ); $this->assertContains( 'xCustomKeyword', $keywords ); $this->assertSame( array( 'draft-04' ), $schema_profiles ); } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_gets_allowed_keywords_once_per_run() { + $filter_count = 0; + $filter = static function ( $keywords ) use ( &$filter_count ) { + ++$filter_count; + + return $keywords; + }; + $schema = array( + 'type' => 'object', + 'properties' => array( + 'config' => array( + 'type' => 'object', + 'properties' => array( + 'name' => array( + 'type' => 'string', + ), + ), + ), + ), + 'anyOf' => array( + array( + 'type' => 'object', + ), + ), + ); + + add_filter( 'wp_json_schema_allowed_keywords', $filter ); + wp_prepare_json_schema_for_client( $schema ); + remove_filter( 'wp_json_schema_allowed_keywords', $filter ); + + $this->assertSame( 1, $filter_count ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_normalizes_schema_for_clients() { + $schema = array( + 'type' => 'object', + '$ref' => '#/definitions/example', + 'sanitize_callback' => 'sanitize_text_field', + 'properties' => array( + 'title' => array( + 'type' => 'string', + 'required' => true, + 'validate_callback' => 'is_string', + ), + 'settings' => array( + 'type' => 'object', + 'default' => array(), + ), + ), + 'dependencies' => array( + 'title' => array( 'settings' ), + 'settings' => array( + 'type' => 'object', + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'additionalProperties' => array( + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', + ), + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + + $this->assertSame( '#/definitions/example', $prepared['$ref'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared ); + $this->assertSame( array( 'title' ), $prepared['required'] ); + $this->assertArrayNotHasKey( 'required', $prepared['properties']['title'] ); + $this->assertArrayNotHasKey( 'validate_callback', $prepared['properties']['title'] ); + $this->assertEquals( new stdClass(), $prepared['properties']['settings']['default'] ); + $this->assertSame( array( 'settings' ), $prepared['dependencies']['title'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['dependencies']['settings'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['additionalProperties'] ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_strips_keywords_from_nested_sub_schemas() { + $schema = array( + 'type' => 'object', + '$ref' => '#/definitions/address', + 'anyOf' => array( + array( + 'type' => 'object', + 'sanitize_callback' => 'sanitize_text_field', + 'properties' => array( + 'value' => array( + 'type' => 'string', + 'validate_callback' => 'is_string', + ), + ), + ), + array( + 'type' => 'number', + 'arg_options' => array( 'sanitize_callback' => 'absint' ), + ), + ), + 'oneOf' => array( + array( + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'allOf' => array( + array( + 'type' => 'object', + 'validate_callback' => 'rest_validate_request_arg', + ), + ), + 'not' => array( + 'type' => 'null', + 'arg_options' => array( 'sanitize_callback' => 'absint' ), + ), + 'patternProperties' => array( + '^S_' => array( + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'definitions' => array( + 'address' => array( + 'type' => 'object', + 'validate_callback' => 'rest_validate_request_arg', + 'properties' => array( + 'street' => array( + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + ), + ), + 'dependencies' => array( + 'bar' => array( + 'type' => 'object', + 'validate_callback' => 'rest_validate_request_arg', + 'properties' => array( + 'baz' => array( + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + ), + 'qux' => array( 'bar' ), + ), + 'additionalProperties' => array( + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', + ), + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + + $this->assertSame( '#/definitions/address', $prepared['$ref'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['anyOf'][0] ); + $this->assertArrayNotHasKey( 'validate_callback', $prepared['anyOf'][0]['properties']['value'] ); + $this->assertArrayNotHasKey( 'arg_options', $prepared['anyOf'][1] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['oneOf'][0] ); + $this->assertArrayNotHasKey( 'validate_callback', $prepared['allOf'][0] ); + $this->assertArrayNotHasKey( 'arg_options', $prepared['not'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['patternProperties']['^S_'] ); + $this->assertArrayNotHasKey( 'validate_callback', $prepared['definitions']['address'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['definitions']['address']['properties']['street'] ); + $this->assertArrayNotHasKey( 'validate_callback', $prepared['dependencies']['bar'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['dependencies']['bar']['properties']['baz'] ); + $this->assertSame( array( 'bar' ), $prepared['dependencies']['qux'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['additionalProperties'] ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_strips_keywords_from_array_sub_schemas() { + $schema = array( + 'type' => 'array', + 'items' => array( + array( + 'type' => 'string', + 'validate_callback' => 'is_string', + ), + array( + 'type' => 'number', + 'arg_options' => array( 'sanitize_callback' => 'absint' ), + ), + ), + 'additionalItems' => array( + 'type' => 'boolean', + 'sanitize_callback' => 'rest_sanitize_boolean', + ), + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + + $this->assertArrayNotHasKey( 'validate_callback', $prepared['items'][0] ); + $this->assertSame( 'string', $prepared['items'][0]['type'] ); + $this->assertArrayNotHasKey( 'arg_options', $prepared['items'][1] ); + $this->assertSame( 'number', $prepared['items'][1]['type'] ); + $this->assertArrayNotHasKey( 'sanitize_callback', $prepared['additionalItems'] ); + $this->assertSame( 'boolean', $prepared['additionalItems']['type'] ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_converts_required_property_booleans_to_draft_04_array() { + $schema = array( + 'type' => 'object', + 'properties' => array( + 'title' => array( + 'type' => 'string', + 'required' => true, + ), + 'content' => array( + 'type' => 'string', + 'required' => true, + ), + 'optional' => array( + 'type' => 'string', + ), + ), + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + + $this->assertSameSets( array( 'title', 'content' ), $prepared['required'] ); + $this->assertArrayNotHasKey( 'required', $prepared['properties']['title'] ); + $this->assertArrayNotHasKey( 'required', $prepared['properties']['content'] ); + $this->assertArrayNotHasKey( 'required', $prepared['properties']['optional'] ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_converts_required_booleans_in_nested_object_schemas() { + $schema = array( + 'type' => 'object', + 'properties' => array( + 'address' => array( + 'type' => 'object', + 'required' => true, + 'properties' => array( + 'street' => array( + 'type' => 'string', + 'required' => true, + ), + 'city' => array( + 'type' => 'string', + ), + ), + ), + ), + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + $address = $prepared['properties']['address']; + + $this->assertSame( array( 'address' ), $prepared['required'] ); + $this->assertSame( array( 'street' ), $address['required'] ); + $this->assertArrayNotHasKey( 'required', $address['properties']['street'] ); + $this->assertArrayNotHasKey( 'required', $address['properties']['city'] ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_removes_required_false_booleans_without_required_array() { + $schema = array( + 'type' => 'object', + 'properties' => array( + 'maybe' => array( + 'type' => 'string', + 'required' => false, + ), + ), + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + + $this->assertArrayNotHasKey( 'required', $prepared ); + $this->assertArrayNotHasKey( 'required', $prepared['properties']['maybe'] ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_required_array_takes_precedence_over_booleans() { + $schema = array( + 'type' => 'object', + 'required' => array( 'title' ), + 'properties' => array( + 'title' => array( + 'type' => 'string', + 'required' => true, + ), + 'content' => array( + 'type' => 'string', + 'required' => true, + ), + ), + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + + $this->assertSame( array( 'title' ), $prepared['required'] ); + $this->assertArrayNotHasKey( 'required', $prepared['properties']['title'] ); + $this->assertArrayNotHasKey( 'required', $prepared['properties']['content'] ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_removes_boolean_required_on_scalar_schema() { + $schema = array( + 'type' => 'string', + 'description' => 'The text to analyze.', + 'required' => true, + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + + $this->assertArrayNotHasKey( 'required', $prepared ); + $this->assertSame( 'string', $prepared['type'] ); + } + + /** + * @ticket 64955 + */ + public function test_wp_prepare_json_schema_for_client_converts_required_booleans_in_array_items_object_schemas() { + $schema = array( + 'type' => 'array', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'type' => 'integer', + 'required' => true, + ), + 'label' => array( + 'type' => 'string', + ), + ), + ), + ); + + $prepared = wp_prepare_json_schema_for_client( $schema ); + + $this->assertSame( array( 'id' ), $prepared['items']['required'] ); + $this->assertArrayNotHasKey( 'required', $prepared['items']['properties']['id'] ); + $this->assertArrayNotHasKey( 'required', $prepared['items']['properties']['label'] ); + } } diff --git a/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php b/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php index 56987fa57e36b..c84ed90655f7a 100644 --- a/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php +++ b/tests/phpunit/tests/rest-api/wpRestAbilitiesV1ListController.php @@ -1129,242 +1129,6 @@ public function test_unsupported_schema_keywords_stripped_from_response(): void $this->assertSame( 'string', $data['output_schema']['type'] ); } - /** - * Test that nested empty object defaults are prepared as objects in REST response schemas. - * - * @ticket 64955 - */ - public function test_nested_empty_object_schema_defaults_prepared_for_response(): void { - $this->register_test_ability( - 'test/nested-object-defaults', - array( - 'label' => 'Test Nested Object Defaults', - 'description' => 'Tests preparing nested empty object defaults.', - 'category' => 'general', - 'input_schema' => array( - 'type' => 'object', - 'properties' => array( - 'settings' => array( - 'type' => 'object', - 'default' => array(), - 'properties' => array( - 'options' => array( - 'type' => 'object', - 'default' => array(), - ), - ), - ), - ), - ), - 'output_schema' => array( - 'type' => 'object', - 'properties' => array( - 'result' => array( - 'type' => 'object', - 'default' => array(), - ), - ), - ), - 'execute_callback' => static function (): array { - return array(); - }, - 'permission_callback' => '__return_true', - 'meta' => array( 'show_in_rest' => true ), - ) - ); - - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/nested-object-defaults' ); - $response = $this->server->dispatch( $request ); - - $this->assertSame( 200, $response->get_status() ); - - $data = $response->get_data(); - - $this->assertEquals( new stdClass(), $data['input_schema']['properties']['settings']['default'] ); - $this->assertEquals( new stdClass(), $data['input_schema']['properties']['settings']['properties']['options']['default'] ); - $this->assertEquals( new stdClass(), $data['output_schema']['properties']['result']['default'] ); - } - - /** - * Test that schema keywords outside the allow-list are stripped from nested sub-schema locations. - * - * @ticket 64098 - */ - public function test_unsupported_schema_keywords_stripped_from_nested_sub_schemas(): void { - $this->register_test_ability( - 'test/nested-unsupported-keywords', - array( - 'label' => 'Test Nested Unsupported Keywords', - 'description' => 'Tests stripping from all sub-schema locations', - 'category' => 'general', - 'input_schema' => array( - 'type' => 'object', - '$ref' => '#/definitions/address', - 'anyOf' => array( - array( - 'type' => 'object', - 'sanitize_callback' => 'sanitize_text_field', - 'properties' => array( - 'value' => array( - 'type' => 'string', - 'validate_callback' => 'is_string', - ), - ), - ), - array( - 'type' => 'number', - 'arg_options' => array( 'sanitize_callback' => 'absint' ), - ), - ), - 'oneOf' => array( - array( - 'type' => 'string', - 'sanitize_callback' => 'sanitize_text_field', - ), - ), - 'allOf' => array( - array( - 'type' => 'object', - 'validate_callback' => 'rest_validate_request_arg', - ), - ), - 'not' => array( - 'type' => 'null', - 'arg_options' => array( 'sanitize_callback' => 'absint' ), - ), - 'patternProperties' => array( - '^S_' => array( - 'type' => 'string', - 'sanitize_callback' => 'sanitize_text_field', - ), - ), - 'definitions' => array( - 'address' => array( - 'type' => 'object', - 'validate_callback' => 'rest_validate_request_arg', - 'properties' => array( - 'street' => array( - 'type' => 'string', - 'sanitize_callback' => 'sanitize_text_field', - ), - ), - ), - ), - 'dependencies' => array( - 'bar' => array( - 'type' => 'object', - 'validate_callback' => 'rest_validate_request_arg', - 'properties' => array( - 'baz' => array( - 'type' => 'string', - 'sanitize_callback' => 'sanitize_text_field', - ), - ), - ), - 'qux' => array( 'bar' ), - ), - 'additionalProperties' => array( - 'type' => 'string', - 'sanitize_callback' => 'sanitize_text_field', - ), - ), - 'output_schema' => array( - 'type' => 'array', - 'items' => array( - array( - 'type' => 'string', - 'validate_callback' => 'is_string', - ), - array( - 'type' => 'number', - 'arg_options' => array( 'sanitize_callback' => 'absint' ), - ), - ), - 'additionalItems' => array( - 'type' => 'boolean', - 'sanitize_callback' => 'rest_sanitize_boolean', - ), - ), - 'execute_callback' => static function ( $input ) { - return array(); - }, - 'permission_callback' => '__return_true', - 'meta' => array( 'show_in_rest' => true ), - ) - ); - - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/nested-unsupported-keywords' ); - $response = $this->server->dispatch( $request ); - - $this->assertSame( 200, $response->get_status() ); - - $data = $response->get_data(); - - // Verify internal keywords are stripped from anyOf sub-schemas. - $this->assertSame( '#/definitions/address', $data['input_schema']['$ref'] ); - $this->assertArrayHasKey( 'anyOf', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'sanitize_callback', $data['input_schema']['anyOf'][0] ); - $this->assertSame( 'object', $data['input_schema']['anyOf'][0]['type'] ); - $this->assertArrayNotHasKey( 'validate_callback', $data['input_schema']['anyOf'][0]['properties']['value'] ); - $this->assertSame( 'string', $data['input_schema']['anyOf'][0]['properties']['value']['type'] ); - $this->assertArrayNotHasKey( 'arg_options', $data['input_schema']['anyOf'][1] ); - $this->assertSame( 'number', $data['input_schema']['anyOf'][1]['type'] ); - - // Verify internal keywords are stripped from oneOf sub-schemas. - $this->assertArrayHasKey( 'oneOf', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'sanitize_callback', $data['input_schema']['oneOf'][0] ); - $this->assertSame( 'string', $data['input_schema']['oneOf'][0]['type'] ); - - // Verify internal keywords are stripped from allOf sub-schemas. - $this->assertArrayHasKey( 'allOf', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'validate_callback', $data['input_schema']['allOf'][0] ); - $this->assertSame( 'object', $data['input_schema']['allOf'][0]['type'] ); - - // Verify internal keywords are stripped from not sub-schema. - $this->assertArrayHasKey( 'not', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'arg_options', $data['input_schema']['not'] ); - $this->assertSame( 'null', $data['input_schema']['not']['type'] ); - - // Verify internal keywords are stripped from patternProperties sub-schemas. - $this->assertArrayHasKey( 'patternProperties', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'sanitize_callback', $data['input_schema']['patternProperties']['^S_'] ); - $this->assertSame( 'string', $data['input_schema']['patternProperties']['^S_']['type'] ); - - // Verify internal keywords are stripped from dependencies schema values. - $this->assertArrayHasKey( 'dependencies', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'validate_callback', $data['input_schema']['dependencies']['bar'] ); - $this->assertSame( 'object', $data['input_schema']['dependencies']['bar']['type'] ); - $this->assertArrayNotHasKey( 'sanitize_callback', $data['input_schema']['dependencies']['bar']['properties']['baz'] ); - $this->assertSame( 'string', $data['input_schema']['dependencies']['bar']['properties']['baz']['type'] ); - // Property dependencies (numeric arrays) should pass through unchanged. - $this->assertSame( array( 'bar' ), $data['input_schema']['dependencies']['qux'] ); - - // Verify internal keywords are stripped from definitions sub-schemas. - $this->assertArrayHasKey( 'definitions', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'validate_callback', $data['input_schema']['definitions']['address'] ); - $this->assertSame( 'object', $data['input_schema']['definitions']['address']['type'] ); - $this->assertArrayNotHasKey( 'sanitize_callback', $data['input_schema']['definitions']['address']['properties']['street'] ); - $this->assertSame( 'string', $data['input_schema']['definitions']['address']['properties']['street']['type'] ); - - // Verify internal keywords are stripped from additionalProperties sub-schema. - $this->assertArrayHasKey( 'additionalProperties', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'sanitize_callback', $data['input_schema']['additionalProperties'] ); - $this->assertSame( 'string', $data['input_schema']['additionalProperties']['type'] ); - - // Verify internal keywords are stripped from tuple-style items sub-schemas. - $this->assertArrayHasKey( 'items', $data['output_schema'] ); - $this->assertCount( 2, $data['output_schema']['items'] ); - $this->assertArrayNotHasKey( 'validate_callback', $data['output_schema']['items'][0] ); - $this->assertSame( 'string', $data['output_schema']['items'][0]['type'] ); - $this->assertArrayNotHasKey( 'arg_options', $data['output_schema']['items'][1] ); - $this->assertSame( 'number', $data['output_schema']['items'][1]['type'] ); - - // Verify internal keywords are stripped from additionalItems sub-schema. - $this->assertArrayHasKey( 'additionalItems', $data['output_schema'] ); - $this->assertArrayNotHasKey( 'sanitize_callback', $data['output_schema']['additionalItems'] ); - $this->assertSame( 'boolean', $data['output_schema']['additionalItems']['type'] ); - } - /** * Test that per-property `required` booleans become a draft-04 `required` array. * @@ -1430,244 +1194,4 @@ public function test_required_property_booleans_converted_to_draft_04_array(): v $this->assertSame( array( 'id' ), $data['output_schema']['required'] ); $this->assertArrayNotHasKey( 'required', $data['output_schema']['properties']['id'] ); } - - /** - * Test that per-property `required` booleans are converted in nested object schemas. - * - * @ticket 64955 - */ - public function test_required_booleans_converted_in_nested_object_schemas(): void { - $this->register_test_ability( - 'test/required-nested', - array( - 'label' => 'Required Nested', - 'description' => 'Tests conversion within nested object schemas.', - 'category' => 'general', - 'input_schema' => array( - 'type' => 'object', - 'properties' => array( - 'address' => array( - 'type' => 'object', - 'required' => true, - 'properties' => array( - 'street' => array( - 'type' => 'string', - 'required' => true, - ), - 'city' => array( - 'type' => 'string', - ), - ), - ), - ), - ), - 'execute_callback' => static function () { - return null; - }, - 'permission_callback' => '__return_true', - 'meta' => array( 'show_in_rest' => true ), - ) - ); - - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-nested' ); - $response = $this->server->dispatch( $request ); - - $this->assertSame( 200, $response->get_status() ); - - $data = $response->get_data(); - $address = $data['input_schema']['properties']['address']; - - // The outer object lists the nested object as a required property. - $this->assertSame( array( 'address' ), $data['input_schema']['required'] ); - - // The nested object's own boolean flag is replaced by a draft-04 array - // collecting its own required properties (proving the boolean was converted). - $this->assertSame( array( 'street' ), $address['required'] ); - $this->assertArrayNotHasKey( 'required', $address['properties']['street'] ); - $this->assertArrayNotHasKey( 'required', $address['properties']['city'] ); - } - - /** - * Test that `required: false` is removed without emitting an empty `required` array. - * - * @ticket 64955 - */ - public function test_required_false_booleans_removed_without_required_array(): void { - $this->register_test_ability( - 'test/required-false', - array( - 'label' => 'Required False', - 'description' => 'Tests that required:false is stripped.', - 'category' => 'general', - 'input_schema' => array( - 'type' => 'object', - 'properties' => array( - 'maybe' => array( - 'type' => 'string', - 'required' => false, - ), - ), - ), - 'execute_callback' => static function () { - return null; - }, - 'permission_callback' => '__return_true', - 'meta' => array( 'show_in_rest' => true ), - ) - ); - - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-false' ); - $response = $this->server->dispatch( $request ); - - $this->assertSame( 200, $response->get_status() ); - - $data = $response->get_data(); - - $this->assertArrayNotHasKey( 'required', $data['input_schema'] ); - $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['maybe'] ); - } - - /** - * Test that an existing draft-04 `required` array takes precedence over per-property booleans. - * - * This mirrors rest_validate_object_value_from_schema(), which ignores - * per-property `required` booleans when a draft-04 `required` array is - * present, so the published schema matches what is actually enforced. - * - * @ticket 64955 - */ - public function test_required_draft_04_array_takes_precedence_over_booleans(): void { - $this->register_test_ability( - 'test/required-mixed', - array( - 'label' => 'Required Mixed', - 'description' => 'Tests precedence of a draft-04 array over draft-03 booleans.', - 'category' => 'general', - 'input_schema' => array( - 'type' => 'object', - 'required' => array( 'title' ), - 'properties' => array( - 'title' => array( - 'type' => 'string', - 'required' => true, - ), - 'content' => array( - 'type' => 'string', - 'required' => true, - ), - ), - ), - 'execute_callback' => static function () { - return null; - }, - 'permission_callback' => '__return_true', - 'meta' => array( 'show_in_rest' => true ), - ) - ); - - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-mixed' ); - $response = $this->server->dispatch( $request ); - - $this->assertSame( 200, $response->get_status() ); - - $data = $response->get_data(); - - // The draft-04 array wins: the `content` boolean is ignored, not merged in. - $this->assertSame( array( 'title' ), $data['input_schema']['required'] ); - - // The per-property booleans are still stripped from the output. - $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['title'] ); - $this->assertArrayNotHasKey( 'required', $data['input_schema']['properties']['content'] ); - } - - /** - * Test that a boolean `required` with no draft-04 equivalent (e.g. on a scalar) is dropped. - * - * @ticket 64955 - */ - public function test_required_boolean_on_scalar_schema_removed(): void { - $this->register_test_ability( - 'test/required-scalar', - array( - 'label' => 'Required Scalar', - 'description' => 'Tests stripping of a boolean required on a scalar schema.', - 'category' => 'general', - 'input_schema' => array( - 'type' => 'string', - 'description' => 'The text to analyze.', - 'required' => true, - ), - 'output_schema' => array( - 'type' => 'string', - 'required' => true, - ), - 'execute_callback' => static function ( $input ) { - return $input; - }, - 'permission_callback' => '__return_true', - 'meta' => array( 'show_in_rest' => true ), - ) - ); - - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-scalar' ); - $response = $this->server->dispatch( $request ); - - $this->assertSame( 200, $response->get_status() ); - - $data = $response->get_data(); - - $this->assertArrayNotHasKey( 'required', $data['input_schema'] ); - $this->assertSame( 'string', $data['input_schema']['type'] ); - $this->assertArrayNotHasKey( 'required', $data['output_schema'] ); - } - - /** - * Test that per-property `required` booleans are converted in an array's `items` object. - * - * @ticket 64955 - */ - public function test_required_booleans_converted_in_array_items_object_schemas(): void { - $this->register_test_ability( - 'test/required-array-items', - array( - 'label' => 'Required Array Items', - 'description' => 'Tests conversion within array item object schemas.', - 'category' => 'general', - 'input_schema' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'object', - 'properties' => array( - 'id' => array( - 'type' => 'integer', - 'required' => true, - ), - 'label' => array( - 'type' => 'string', - ), - ), - ), - ), - 'execute_callback' => static function () { - return null; - }, - 'permission_callback' => '__return_true', - 'meta' => array( 'show_in_rest' => true ), - ) - ); - - $request = new WP_REST_Request( 'GET', '/wp-abilities/v1/abilities/test/required-array-items' ); - $response = $this->server->dispatch( $request ); - - $this->assertSame( 200, $response->get_status() ); - - $data = $response->get_data(); - $items = $data['input_schema']['items']; - - // The object schema inside `items` collects its own required properties - // into a draft-04 array, and the per-property boolean is removed. - $this->assertSame( array( 'id' ), $items['required'] ); - $this->assertArrayNotHasKey( 'required', $items['properties']['id'] ); - $this->assertArrayNotHasKey( 'required', $items['properties']['label'] ); - } } From 2303172b509f4dfd7e068a044d0aae88a1786f56 Mon Sep 17 00:00:00 2001 From: Ben Dwyer <scruffian@git.wordpress.org> Date: Tue, 30 Jun 2026 10:30:01 +0000 Subject: [PATCH 282/327] Toolbar: Make the user avatar image circular. Make the user avatar in the admin bar circular, both in the top-level toolbar item and the account dropdown. This aligns with the block editor, where avatars are already circular while site logos are square, and follows a common convention that helps distinguish an avatar from a site icon. The avatar is also enlarged slightly on both the desktop and mobile viewports to offset the area lost to the circular crop and to keep it balanced with the surrounding toolbar icons, as follows: - Desktop viewport: bump the size from 18px to 20px; add border-radius: 50% - Mobile viewport: bump the size from 26px to 28px; add border-radius: 50% Developed in https://github.com/WordPress/wordpress-develop/pull/11799. Props fushar, scruffian, joen, sabernhardt, jeryj. Fixes #64667. See #65083, #65088. git-svn-id: https://develop.svn.wordpress.org/trunk@62592 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/admin-bar.php | 2 +- src/wp-includes/css/admin-bar.css | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/wp-includes/admin-bar.php b/src/wp-includes/admin-bar.php index 50868b11a2870..2ab30a24c27ee 100644 --- a/src/wp-includes/admin-bar.php +++ b/src/wp-includes/admin-bar.php @@ -276,7 +276,7 @@ function wp_admin_bar_my_account_item( $wp_admin_bar ) { /* translators: %s: Current user's display name. */ $howdy = sprintf( __( 'Howdy, %s' ), '<span class="display-name">' . wp_get_current_user()->display_name . '</span>' ); - $avatar = get_avatar( $user_id, 26 ); + $avatar = get_avatar( $user_id, 28 ); $wp_admin_bar->add_node( array( 'id' => 'my-account', diff --git a/src/wp-includes/css/admin-bar.css b/src/wp-includes/css/admin-bar.css index 7601fd2ef9b83..7ab855fd919bb 100644 --- a/src/wp-includes/css/admin-bar.css +++ b/src/wp-includes/css/admin-bar.css @@ -455,6 +455,7 @@ html:lang(he-il) .rtl #wpadminbar * { top: 4px; width: 64px; height: 64px; + border-radius: 50%; } #wpadminbar #wp-admin-bar-user-info a { @@ -481,9 +482,10 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-my-account.with-avatar > .ab-empty-item img, #wpadminbar #wp-admin-bar-my-account.with-avatar > a img { width: auto; - height: 16px; + height: 20px; padding: 0; - border: 1px solid #8c8f94; + border: 1px solid #2c353b; + border-radius: 50%; background: #f0f0f1; line-height: 1.84615384; vertical-align: middle; @@ -977,10 +979,11 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { position: absolute; - top: 13px; + top: 12px; right: 10px; - width: 26px; - height: 26px; + width: 28px; + height: 28px; + border-radius: 50%; } #wpadminbar #wp-admin-bar-user-actions.ab-submenu { From 4b5efeec73161267f732b1fcb9b3d774958ecfca Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Tue, 30 Jun 2026 16:36:25 +0000 Subject: [PATCH 283/327] Tests: Move the HTTP response codes test for consistency. While the test was originally written to verify that the `WP_Http` class has all the HTTP response codes as constants, it ensures that the constants match the response codes stored in the `$wp_header_to_desc` global used by the `get_status_header_desc()` function, so the latter's unit test file appears to be the logical placement. Follow-up to [36749], [46107]. Props pbearne, khokansardar, SergeyBiryukov. Fixes #65527. git-svn-id: https://develop.svn.wordpress.org/trunk@62593 602fd350-edb4-49c9-b593-d223f7449a82 --- .../tests/functions/getStatusHeaderDesc.php | 18 ++++++++++++++++++ tests/phpunit/tests/http/http.php | 17 ----------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/tests/phpunit/tests/functions/getStatusHeaderDesc.php b/tests/phpunit/tests/functions/getStatusHeaderDesc.php index 1bcc6b4864669..5fc7f1e016e00 100644 --- a/tests/phpunit/tests/functions/getStatusHeaderDesc.php +++ b/tests/phpunit/tests/functions/getStatusHeaderDesc.php @@ -41,4 +41,22 @@ public function data_get_status_header_desc() { array( 'random', '' ), ); } + + /** + * Tests that the HTTP response codes stored in the `$wp_header_to_desc` global + * match the constants in the WP_Http class. + * + * @ticket 35426 + */ + public function test_http_response_code_constants() { + global $wp_header_to_desc; + + $ref = new ReflectionClass( 'WP_Http' ); + $constants = $ref->getConstants(); + + // This primes the `$wp_header_to_desc` global: + get_status_header_desc( 200 ); + + $this->assertSame( array_keys( $wp_header_to_desc ), array_values( $constants ) ); + } } diff --git a/tests/phpunit/tests/http/http.php b/tests/phpunit/tests/http/http.php index 651064dc5674c..caba0c2e8db73 100644 --- a/tests/phpunit/tests/http/http.php +++ b/tests/phpunit/tests/http/http.php @@ -277,23 +277,6 @@ public function data_wp_parse_url_with_component() { ); } - /** - * @ticket 35426 - * - * @covers ::get_status_header_desc - */ - public function test_http_response_code_constants() { - global $wp_header_to_desc; - - $ref = new ReflectionClass( 'WP_Http' ); - $constants = $ref->getConstants(); - - // This primes the `$wp_header_to_desc` global: - get_status_header_desc( 200 ); - - $this->assertSame( array_keys( $wp_header_to_desc ), array_values( $constants ) ); - } - /** * @ticket 37768 * From aa4e8ec2fe1dd7c95e376cc87ba60e856eb2b81a Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Tue, 30 Jun 2026 17:33:15 +0000 Subject: [PATCH 284/327] HTML API: Discourage public use of the `step()` method. The preferred way to iterate with `WP_HTML_Processor` is via `::next_tag()` or `::next_token()`. Developed in https://github.com/WordPress/wordpress-develop/pull/12269. Props jonsurrell, dmsnell. See #64896. git-svn-id: https://develop.svn.wordpress.org/trunk@62594 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/html-api/class-wp-html-processor.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/wp-includes/html-api/class-wp-html-processor.php b/src/wp-includes/html-api/class-wp-html-processor.php index 5f15da5383f34..6513db35c1243 100644 --- a/src/wp-includes/html-api/class-wp-html-processor.php +++ b/src/wp-includes/html-api/class-wp-html-processor.php @@ -999,8 +999,13 @@ public function expects_closer( ?WP_HTML_Token $node = null ): ?bool { /** * Steps through the HTML document and stop at the next tag, if any. * + * This is an internal method. The relevant public methods are + * {@see WP_HTML_Processor::next_tag()} and {@see WP_HTML_Processor::next_token()}. + * * @since 6.4.0 * + * @access private + * * @throws Exception When unable to allocate a bookmark for the next token in the input HTML document. * * @see self::PROCESS_NEXT_NODE From 94f3236cc2eb1a7c03505843dd53a566d8ab7a45 Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Tue, 30 Jun 2026 18:46:16 +0000 Subject: [PATCH 285/327] HTML API: Ensure slash in attribute value is not a self-closing flag. A trailing slash in an unquoted attribute value was incorrectly treated as a self-closing flag. For example, `<div id=test/>` is a tag with the `id` attribute value `test/`, not a self-closing tag. Developed in https://github.com/WordPress/wordpress-develop/pull/12319. Props jonsurrell, dmsnell. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62595 602fd350-edb4-49c9-b593-d223f7449a82 --- .../html-api/class-wp-html-tag-processor.php | 71 +++++++++++++------ .../tests/html-api/wpHtmlProcessor.php | 23 ++++++ .../tests/html-api/wpHtmlTagProcessor.php | 7 +- 3 files changed, 76 insertions(+), 25 deletions(-) diff --git a/src/wp-includes/html-api/class-wp-html-tag-processor.php b/src/wp-includes/html-api/class-wp-html-tag-processor.php index e41e1120550b5..3c849047a9a51 100644 --- a/src/wp-includes/html-api/class-wp-html-tag-processor.php +++ b/src/wp-includes/html-api/class-wp-html-tag-processor.php @@ -627,6 +627,15 @@ class WP_HTML_Tag_Processor { */ private $token_length; + /** + * Whether the current tag token has the self-closing flag. + * + * @since 7.1.0 + * + * @var bool + */ + private $has_self_closing_flag = false; + /** * Byte offset in input document where current tag name starts. * @@ -1074,11 +1083,12 @@ private function base_class_next_token(): bool { * the closing tag to point to the opening of the special atomic * tag sequence. */ - $tag_name_starts_at = $this->tag_name_starts_at; - $tag_name_length = $this->tag_name_length; - $tag_ends_at = $this->token_starts_at + $this->token_length; - $attributes = $this->attributes; - $duplicate_attributes = $this->duplicate_attributes; + $tag_name_starts_at = $this->tag_name_starts_at; + $tag_name_length = $this->tag_name_length; + $tag_ends_at = $this->token_starts_at + $this->token_length; + $has_self_closing_flag = $this->has_self_closing_flag; + $attributes = $this->attributes; + $duplicate_attributes = $this->duplicate_attributes; // Find the closing tag if necessary. switch ( $tag_name ) { @@ -1128,14 +1138,15 @@ private function base_class_next_token(): bool { * functions that skip the contents have moved all the internal cursors past * the inner content of the tag. */ - $this->token_starts_at = $was_at; - $this->token_length = $this->bytes_already_parsed - $this->token_starts_at; - $this->text_starts_at = $tag_ends_at; - $this->text_length = $this->tag_name_starts_at - $this->text_starts_at; - $this->tag_name_starts_at = $tag_name_starts_at; - $this->tag_name_length = $tag_name_length; - $this->attributes = $attributes; - $this->duplicate_attributes = $duplicate_attributes; + $this->token_starts_at = $was_at; + $this->token_length = $this->bytes_already_parsed - $this->token_starts_at; + $this->text_starts_at = $tag_ends_at; + $this->text_length = $this->tag_name_starts_at - $this->text_starts_at; + $this->tag_name_starts_at = $tag_name_starts_at; + $this->tag_name_length = $tag_name_length; + $this->has_self_closing_flag = $has_self_closing_flag; + $this->attributes = $attributes; + $this->duplicate_attributes = $duplicate_attributes; return true; } @@ -2140,13 +2151,34 @@ private function parse_next_attribute(): bool { $doc_length = strlen( $this->html ); // Skip whitespace and slashes. - $this->bytes_already_parsed += strspn( $this->html, " \t\f\r\n/", $this->bytes_already_parsed ); + $skipped_length = strspn( $this->html, " \t\f\r\n/", $this->bytes_already_parsed ); + $this->bytes_already_parsed += $skipped_length; if ( $this->bytes_already_parsed >= $doc_length ) { $this->parser_state = self::STATE_INCOMPLETE_INPUT; return false; } + /** + * This block serves two purposes: + * + * - A fast path for common tag-ending `>`. + * - A check for the self-closing flag which must appear as `/>`. + * + * In a tag like `<g attr=/>`, `/` is the attribute value, not a self-closing + * flag. When it appears in this form, the parser has already consumed the + * attribute value, `$skipped_length` is 0, and this checks below correctly + * identify whether there is a self-closing flag. + * + * Note: Both start and end tags may have the self-closing flag. + */ + if ( '>' === $this->html[ $this->bytes_already_parsed ] ) { + if ( $skipped_length > 0 && '/' === $this->html[ $this->bytes_already_parsed - 1 ] ) { + $this->has_self_closing_flag = true; + } + return false; + } + /* * Treat the equal sign as a part of the attribute * name if it is the first encountered byte. @@ -2324,6 +2356,7 @@ private function after_tag(): void { $this->token_starts_at = null; $this->token_length = null; + $this->has_self_closing_flag = false; $this->tag_name_starts_at = null; $this->tag_name_length = null; $this->text_starts_at = 0; @@ -3332,15 +3365,7 @@ public function has_self_closing_flag(): bool { return false; } - /* - * The self-closing flag is the solidus at the _end_ of the tag, not the beginning. - * - * Example: - * - * <figure /> - * ^ this appears one character before the end of the closing ">". - */ - return '/' === $this->html[ $this->token_starts_at + $this->token_length - 2 ]; + return $this->has_self_closing_flag; } /** diff --git a/tests/phpunit/tests/html-api/wpHtmlProcessor.php b/tests/phpunit/tests/html-api/wpHtmlProcessor.php index 1e1ca7f6f8c39..8cece32438bd3 100644 --- a/tests/phpunit/tests/html-api/wpHtmlProcessor.php +++ b/tests/phpunit/tests/html-api/wpHtmlProcessor.php @@ -583,6 +583,29 @@ public function test_expects_closer_foreign_content_self_closing() { $this->assertTrue( $processor->expects_closer() ); } + /** + * Ensures a slash-only unquoted attribute value does not close foreign content. + * + * @ticket 65372 + */ + public function test_unquoted_slash_attribute_does_not_self_close_foreign_content(): void { + $processor = WP_HTML_Processor::create_fragment( '<math><mi a=/>math:mi is not self-closing, it has [a="/"] attribute.' ); + + $this->assertTrue( $processor->next_tag( 'MI' ), 'Failed to find the MI tag: check test setup.' ); + $this->assertSame( '/', $processor->get_attribute( 'a' ), 'Failed to treat the slash as the unquoted attribute value.' ); + $this->assertFalse( + $processor->has_self_closing_flag(), + 'Failed to avoid interpreting the slash-only unquoted attribute value as a self-closing flag.' + ); + + $this->assertTrue( $processor->next_token(), 'Failed to find text following the MI tag: check test setup.' ); + $this->assertSame( + array( 'HTML', 'BODY', 'MATH', 'MI', '#text' ), + $processor->get_breadcrumbs(), + 'Failed to keep text following the MI tag inside the MI element.' + ); + } + /** * Ensures that expects_closer works for void-like elements in foreign content. * diff --git a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php index 185d93b7a652c..dfb9b16442045 100644 --- a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php +++ b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php @@ -111,10 +111,13 @@ public static function data_has_self_closing_flag() { 'No self-closing flag on a foreign element' => array( '<circle>', false ), // These involve syntax peculiarities. 'Self-closing flag after extra spaces' => array( '<div />', true ), - 'Self-closing flag after attribute' => array( '<div id=test/>', true ), + 'Self-closing flag after attribute' => array( '<div id=test />', true ), + 'Slash inside unquoted attribute value' => array( '<div id=test/>', false ), + 'Slash only unquoted attribute value' => array( '<div attr=/>', false ), + 'Attribute "=" with value ""' => array( '<div =/>', false ), 'Self-closing flag after quoted attribute' => array( '<div id="test"/>', true ), 'Self-closing flag after boolean attribute' => array( '<div enabled/>', true ), - 'Boolean attribute that looks like a self-closer' => array( '<div / >', false ), + 'Ignored "/" and whitespace' => array( '<div / >', false ), ); } From 9a51f9e777fb03be77c2788fdbc3be70ffdc3f9e Mon Sep 17 00:00:00 2001 From: Joe Dolson <joedolson@git.wordpress.org> Date: Tue, 30 Jun 2026 18:55:21 +0000 Subject: [PATCH 286/327] Login and Registration: Restore underline on links. Increase recognizability of links on the login and registration screens by removing the `text-decoration:none` attribute. Move text decoration position to 'under' for better visibility and relationship with arrows. Props dcavins, khushdoms, audrasjb, khokansandar, sabernhardt, afercia, joedolson. Fixes #65075. git-svn-id: https://develop.svn.wordpress.org/trunk@62597 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/login.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-admin/css/login.css b/src/wp-admin/css/login.css index fec7b6ff78387..34a9a5d522ae3 100644 --- a/src/wp-admin/css/login.css +++ b/src/wp-admin/css/login.css @@ -19,6 +19,7 @@ a { transition-property: border, background, color; transition-duration: .05s; transition-timing-function: ease-in-out; + text-underline-position: under; } a { @@ -326,7 +327,6 @@ p { .login #nav a, .login #backtoblog a { - text-decoration: none; color: #50575e; } From 8310defd2a1b44160effb6fcb608f2e3845e4b4c Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Tue, 30 Jun 2026 19:34:50 +0000 Subject: [PATCH 287/327] HTML API: Fix test assertion and add test case. [62595] introduced a test assertion for incorrect behavior. Correct the assertion and add another case. Developed in https://github.com/WordPress/wordpress-develop/pull/12367. Props dmsnell. See #65372. Follow-up to [62595]. git-svn-id: https://develop.svn.wordpress.org/trunk@62598 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/html-api/wpHtmlTagProcessor.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php index dfb9b16442045..88762ddbb60c4 100644 --- a/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php +++ b/tests/phpunit/tests/html-api/wpHtmlTagProcessor.php @@ -114,7 +114,8 @@ public static function data_has_self_closing_flag() { 'Self-closing flag after attribute' => array( '<div id=test />', true ), 'Slash inside unquoted attribute value' => array( '<div id=test/>', false ), 'Slash only unquoted attribute value' => array( '<div attr=/>', false ), - 'Attribute "=" with value ""' => array( '<div =/>', false ), + 'Attribute "=" with value ""' => array( '<div =/>', true ), + 'Attribute "=" with value "/"' => array( '<div ==/>', false ), 'Self-closing flag after quoted attribute' => array( '<div id="test"/>', true ), 'Self-closing flag after boolean attribute' => array( '<div enabled/>', true ), 'Ignored "/" and whitespace' => array( '<div / >', false ), From 980fa870b0b0ad60e292d95a7fd16283d39d1665 Mon Sep 17 00:00:00 2001 From: Joe Dolson <joedolson@git.wordpress.org> Date: Tue, 30 Jun 2026 21:55:23 +0000 Subject: [PATCH 288/327] Editor: Improve spacing and alignment of visibility controls. Adds vertical spacing for visibility sub-controls and aligns the element border to the text line to decrease visual complexity. Props poligilad, tuzla, fcoveram, joedolson. Fixes #65530. git-svn-id: https://develop.svn.wordpress.org/trunk@62605 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/edit.css | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/wp-admin/css/edit.css b/src/wp-admin/css/edit.css index f1dd76ac31474..677c60d4c598a 100644 --- a/src/wp-admin/css/edit.css +++ b/src/wp-admin/css/edit.css @@ -712,6 +712,45 @@ form#tags-filter { margin-top: 3px; } +#post-visibility-select { + --post-visibility-control-gap: 3px; + + margin-left: var(--post-visibility-control-gap); +} + +#post-visibility-select input#post_password { + box-sizing: border-box; + width: 100%; + margin-top: 3px; +} + +#post-visibility-select input[type="radio"], +#post-visibility-select input#sticky { + margin-top: 2px; + margin-right: var(--post-visibility-control-gap); + margin-bottom: 5px; + vertical-align: middle; +} + +#post-visibility-select #sticky-span, +#post-visibility-select #password-span { + display: block; + margin-left: calc(1rem + var(--post-visibility-control-gap) + 0.25em); + margin-top: 2px; +} + +#post-visibility-select #sticky-span { + margin-bottom: 2px; +} + +#post-visibility-select #password-span { + margin-bottom: 6px; +} + +#post-visibility-select p { + margin: 12px 0 0; +} + #linksubmitdiv .inside, /* Old Link Manager back-compat. */ #poststuff #submitdiv .inside { margin: 0; @@ -1894,6 +1933,10 @@ table.links-table { line-height: 280%; } + #post-visibility-select #password-span { + line-height: 1.5; + } + .wp-core-ui .save-post-visibility, .wp-core-ui .save-timestamp { vertical-align: middle; From 7d0ff7934a67d208969b5b4f5719806105cc518f Mon Sep 17 00:00:00 2001 From: Joe Dolson <joedolson@git.wordpress.org> Date: Tue, 30 Jun 2026 22:03:32 +0000 Subject: [PATCH 289/327] Editor: Improve spacing and alignment of post status controls. Switch status select dropdown to full width and move OK and cancel buttons below, for consistency with other controls. This change improves internationalization support by not restricting the space available for controls as severely. Props poligilad, tyxla, fcoveram, joedolson. Fixes #65532. git-svn-id: https://develop.svn.wordpress.org/trunk@62606 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/edit.css | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/wp-admin/css/edit.css b/src/wp-admin/css/edit.css index 677c60d4c598a..563151a3cdda6 100644 --- a/src/wp-admin/css/edit.css +++ b/src/wp-admin/css/edit.css @@ -751,6 +751,17 @@ form#tags-filter { margin: 12px 0 0; } +#post-status-select select { + display: block; + margin-bottom: 8px; + width: 100%; +} + +#post-status-select .save-post-status, +#post-status-select .cancel-post-status { + vertical-align: middle; +} + #linksubmitdiv .inside, /* Old Link Manager back-compat. */ #poststuff #submitdiv .inside { margin: 0; @@ -1937,12 +1948,17 @@ table.links-table { line-height: 1.5; } + .wp-core-ui #post-status-select .save-post-status.button, .wp-core-ui .save-post-visibility, .wp-core-ui .save-timestamp { vertical-align: middle; margin-right: 15px; } + .wp-core-ui #post-status-select .save-post-status.button { + margin-left: 0; + } + .timestamp-wrap select#mm { display: block; width: 100%; From f5ee2b28a08ace5d5cd8d7f03f8a149b83686d22 Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Wed, 1 Jul 2026 07:02:25 +0000 Subject: [PATCH 290/327] Editor: fix inconsistencies in global styles feature selectors. Corrects feature selector output for block style variations in global styles. Props isabel_brison, dmsnell, talldanwp, audrasjb, desrosj. Fixes #65265. git-svn-id: https://develop.svn.wordpress.org/trunk@62607 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-theme-json.php | 352 ++++++++++++++---- tests/phpunit/tests/theme/wpThemeJson.php | 17 +- .../tests/theme/wpThemeJsonSelectorList.php | 133 +++++++ 3 files changed, 421 insertions(+), 81 deletions(-) create mode 100644 tests/phpunit/tests/theme/wpThemeJsonSelectorList.php diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index 26faf057459ef..e8d51c4e0f569 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -757,10 +757,26 @@ protected static function schema_in_root_and_per_origin( $schema ) { * @param string $base_selector The base selector. * @param array $settings The theme settings. * @param string $block_name The block name. + * @param array|null $block_metadata Metadata about the block to get styles for. + * @param array|null $style_variation Style variation metadata. * @return array Array of pseudo-selector declarations. */ - private static function process_pseudo_selectors( $node, $base_selector, $settings, $block_name ) { + private function process_pseudo_selectors( $node, $base_selector, $settings, $block_name, $block_metadata = null, $style_variation = null ) { $pseudo_declarations = array(); + $add_declarations = static function ( $selector, $declarations ) use ( &$pseudo_declarations ) { + if ( empty( $declarations ) ) { + return; + } + + if ( isset( $pseudo_declarations[ $selector ] ) ) { + $pseudo_declarations[ $selector ] = array_merge( + $pseudo_declarations[ $selector ], + $declarations + ); + } else { + $pseudo_declarations[ $selector ] = $declarations; + } + }; if ( ! isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] ) ) { return $pseudo_declarations; @@ -768,9 +784,25 @@ private static function process_pseudo_selectors( $node, $base_selector, $settin foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] as $pseudo_selector ) { if ( isset( $node[ $pseudo_selector ] ) ) { - $combined_selector = static::append_to_selector( $base_selector, $pseudo_selector ); - $declarations = static::compute_style_properties( $node[ $pseudo_selector ], $settings, null, null ); - $pseudo_declarations[ $combined_selector ] = $declarations; + $pseudo_node = $node[ $pseudo_selector ]; + + if ( is_array( $block_metadata ) ) { + $feature_declarations = $this->get_feature_declarations_for_node( $block_metadata, $pseudo_node ); + $feature_declarations = static::update_paragraph_text_indent_selector( $feature_declarations, $settings, $block_name ); + + foreach ( $feature_declarations as $feature_selector => $declarations ) { + $target_selector = is_array( $style_variation ) + ? static::get_block_style_variation_feature_selector( $style_variation, $feature_selector ) + : $feature_selector; + $combined_selector = static::append_to_selector( $target_selector, $pseudo_selector ); + + $add_declarations( $combined_selector, $declarations ); + } + } + + $combined_selector = static::append_to_selector( $base_selector, $pseudo_selector ); + $declarations = static::compute_style_properties( $pseudo_node, $settings, null, null ); + $add_declarations( $combined_selector, $declarations ); } } @@ -1227,11 +1259,11 @@ protected static function append_to_selector( $selector, $to_append ) { return $selector . $to_append; } $new_selectors = array(); - $selectors = explode( ',', $selector ); + $selectors = static::split_selector_list( $selector ); foreach ( $selectors as $sel ) { $new_selectors[] = $sel . $to_append; } - return implode( ',', $new_selectors ); + return implode( ', ', $new_selectors ); } /** @@ -1252,11 +1284,170 @@ protected static function prepend_to_selector( $selector, $to_prepend ) { return $to_prepend . $selector; } $new_selectors = array(); - $selectors = explode( ',', $selector ); + $selectors = static::split_selector_list( $selector ); foreach ( $selectors as $sel ) { $new_selectors[] = $to_prepend . $sel; } - return implode( ',', $new_selectors ); + return implode( ', ', $new_selectors ); + } + + /** + * Splits a selector list into separate selectors. + * + * While selectors are joined by commas, not all commas separate top-level selectors. + * This method only separates top-level selectors, so some commas may appear inside + * strings, nested selectors, and comments. Leading and trailing CSS whitespace is + * trimmed from the returned list items. + * + * Non-selector content, such as comments, are retained in the list in the same item + * as the selector content they follow. + * + * Example: + * + * array( '.wp-block' ) === self::split_selector_list( '.wp-block' ); + * array( '.one', '.two' ) === self::split_selector_list( '.one, .two' ); + * + * // Nested selector lists are retained within their containing selector. + * array( ':is(.a, .b)', 'c' ) === self::split_selector_list( ':is(.a, .b), .c' ); + * + * // Commas within strings do not separate selectors. + * $selectors = self::split_selector_list( '[data-label="Save, continue"],.fallback' ); + * $selectors === array( '[data-label="Save, continue"]', '.fallback' ) + * + * array( 'lang(zh, "*-hant")', '.foo' ) === self::split_selector_list( 'lang(zh, "*-hant"), .foo' ); + * + * // Identifiers may contain escaped commas. + * array( '.foo\,bar', '.baz' ) === self::split_selector_list( '.foo\,bar,.baz' ); + * + * // Comments stay with the selector they follow. + * array( '.a /* a, the first *\/', '.b' ) === self::split_selector_list( '.a /* a, the first *\/,.b' ); + * + * @see https://www.w3.org/TR/selectors/#parse-selector + * @see https://www.w3.org/TR/css-syntax-3/ + * + * @since 7.1.0 + * + * @param string $selector CSS selector list as a string, e.g. '.wp-block .wp-block-paragraph'. + * @return string[] List of trimmed selectors parsed from input list. + */ + protected static function split_selector_list( $selector ): array { + if ( ! str_contains( $selector, ',' ) ) { + // See note on trimming CSS whitespace in main loop. + return array( trim( $selector, " \t\n" ) ); + } + + $selectors = array(); + $selector_length = strlen( $selector ); + $parentheses_depth = 0; + $at = 0; + $was_at = 0; + + while ( $at < $selector_length ) { + $next_at = $at + strcspn( $selector, '/,\'"()<-\\', $at ); + if ( $next_at >= $selector_length ) { + break; + } + + $next_cp = $selector[ $next_at ]; + + // Escaped syntax characters do not act as delimiters. + if ( '\\' === $next_cp ) { + $at = min( $next_at + 2, $selector_length ); + continue; + } + + /* + * Start of a parenthesized expression, which maintains a stack of parentheses. + * For the sake of this function, no selector list will be split inside parentheses. + * Therefore it’s possible to jump ahead until this list completes. + */ + if ( '(' === $next_cp || ')' === $next_cp ) { + $parentheses_depth += '(' === $next_cp ? 1 : -1; + $at = $next_at + 1; + continue; + } + + // Start of a string, which will be incorporated into the selector in which it’s found. + if ( "'" === $next_cp || '"' === $next_cp ) { + $end_of_string = $next_at + 1; + while ( $end_of_string < $selector_length ) { + $end_of_string += strcspn( $selector, "{$next_cp}\\", $end_of_string ); + if ( $end_of_string >= $selector_length ) { + break; + } + + $end_cp = $selector[ $end_of_string ]; + + // Skip escaped characters. + if ( '\\' === $end_cp ) { + $end_of_string = $end_of_string + 2; + continue; + } + + if ( $next_cp === $end_cp ) { + ++$end_of_string; + break; + } + + ++$end_of_string; + } + + $at = $end_of_string; + continue; + } + + // Start of a comment, which will be incorporated into the selector in which it’s found. + if ( '/' === $next_cp && ( $next_at + 1 ) < $selector_length && '*' === $selector[ $next_at + 1 ] ) { + $comment_end_at = strpos( $selector, '*/', $next_at + 1 ); + $is_terminated = false !== $comment_end_at; + $after_comment = $is_terminated ? $comment_end_at + 2 : strlen( $selector ); + $at = $after_comment; + continue; + } + + // Start of a CDO or CDC, which will be incorporated into the selector in which it’s found. + if ( + ( '<' === $next_cp && 0 === substr_compare( $selector, '<!--', $next_at, 4 ) ) || + ( '-' === $next_cp && 0 === substr_compare( $selector, '-->', $next_at, 3 ) ) + ) { + $at = $next_at + ( '<' === $next_cp ? 4 : 3 ); + continue; + } + + // Everything else is either a comma token or part of a selector. + if ( ',' === $next_cp && 0 === $parentheses_depth ) { + /** + * Trim each selector so that downstream code doesn’t see whitespace + * as the first character in a selector and get confused. + * + * There is inconsistency in this because comments and other syntax + * are included which are also not part of the selector itself, but + * a tradeoff is made between removing common syntax which carries + * no meaning and rarer syntax which leaves auxiliary information. + * + * > A newline, U+0009 CHARACTER TABULATION, or U+0020 SPACE. + * > Note that U+000D CARRIAGE RETURN and U+000C FORM FEED are + * > not included in this definition, as they are converted + * > to U+000A LINE FEED during preprocessing. + * + * @see https://www.w3.org/TR/css-syntax/#whitespace + * @see https://www.w3.org/TR/css-syntax/#newline + */ + $selectors[] = trim( substr( $selector, $was_at, $next_at - $was_at ), " \t\n" ); + $at = $next_at + 1; + $was_at = $at; + continue; + } + + $at = $next_at + 1; + } + + if ( $was_at < $selector_length ) { + // See note on trimming CSS whitespace in main loop. + $selectors[] = trim( substr( $selector, $was_at ), " \t\n" ); + } + + return $selectors; } /** @@ -2137,14 +2328,12 @@ public static function scope_selector( $scope, $selector ) { return $selector; } - $scopes = explode( ',', $scope ); - $selectors = explode( ',', $selector ); + $scopes = static::split_selector_list( $scope ); + $selectors = static::split_selector_list( $selector ); $selectors_scoped = array(); foreach ( $scopes as $outer ) { foreach ( $selectors as $inner ) { - $outer = trim( $outer ); - $inner = trim( $inner ); if ( ! empty( $outer ) && ! empty( $inner ) ) { $selectors_scoped[] = $outer . ' ' . $inner; } elseif ( empty( $outer ) ) { @@ -2927,6 +3116,7 @@ private static function get_block_nodes( $theme_json, $selectors = array(), $opt if ( $include_variations && isset( $node['variations'] ) ) { foreach ( $node['variations'] as $variation => $node ) { $variation_selectors[] = array( + 'name' => $variation, 'path' => array( 'styles', 'blocks', $name, 'variations', $variation ), 'selector' => $selectors[ $name ]['styleVariations'][ $variation ], ); @@ -3134,14 +3324,14 @@ public function get_styles_for_block( $block_metadata ) { $block_elements = $block_metadata['elements'] ?? array(); // If there are style variations, generate the declarations for them, including any feature selectors the block may have. - $style_variation_declarations = array(); - $style_variation_custom_css = array(); - $style_variation_responsive_css = array(); - $style_variation_layout_metadata = array(); + $style_variation_declarations = array(); + $style_variation_custom_css = array(); + $style_variation_responsive_css = array(); + $style_variation_responsive_pseudo_css = array(); + $style_variation_layout_metadata = array(); if ( ! $media_query && ! empty( $block_metadata['variations'] ) ) { foreach ( $block_metadata['variations'] as $style_variation ) { - $style_variation_node = _wp_array_get( $this->theme_json, $style_variation['path'], array() ); - $clean_style_variation_selector = trim( $style_variation['selector'] ); + $style_variation_node = _wp_array_get( $this->theme_json, $style_variation['path'], array() ); // Generate any feature/subfeature style declarations for the current style variation. $variation_declarations = static::get_feature_declarations_for_node( $block_metadata, $style_variation_node ); @@ -3151,24 +3341,7 @@ public function get_styles_for_block( $block_metadata ) { // Combine selectors with style variation's selector and add to overall style variation declarations. foreach ( $variation_declarations as $current_selector => $new_declarations ) { - /* - * Clean up any whitespace between comma separated selectors. - * This prevents these spaces breaking compound selectors such as: - * - `.wp-block-list:not(.wp-block-list .wp-block-list)` - * - `.wp-block-image img, .wp-block-image.my-class img` - */ - $clean_current_selector = preg_replace( '/,\s+/', ',', $current_selector ); - $shortened_selector = str_replace( $block_metadata['selector'], '', $clean_current_selector ); - - // Prepend the variation selector to the current selector. - $split_selectors = explode( ',', $shortened_selector ); - $updated_selectors = array_map( - static function ( $split_selector ) use ( $clean_style_variation_selector ) { - return $clean_style_variation_selector . $split_selector; - }, - $split_selectors - ); - $combined_selectors = implode( ',', $updated_selectors ); + $combined_selectors = static::get_block_style_variation_feature_selector( $style_variation, $current_selector ); // Add the new declarations to the overall results under the modified selector. $style_variation_declarations[ $combined_selectors ] = $new_declarations; @@ -3185,7 +3358,7 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { } else { $block_name = null; } - $variation_pseudo_declarations = static::process_pseudo_selectors( $style_variation_node, $style_variation['selector'], $settings, $block_name ); + $variation_pseudo_declarations = $this->process_pseudo_selectors( $style_variation_node, $style_variation['selector'], $settings, $block_name, $block_metadata, $style_variation ); $style_variation_declarations = array_merge( $style_variation_declarations, $variation_pseudo_declarations ); // Store custom CSS for the style variation. @@ -3207,7 +3380,8 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { // Store responsive breakpoint CSS for the style variation. // This includes both base properties and feature-level selectors. - $variation_responsive_css = ''; + $variation_responsive_css = ''; + $variation_responsive_pseudo_css = ''; foreach ( array_keys( static::RESPONSIVE_BREAKPOINTS ) as $breakpoint ) { if ( ! isset( $style_variation_node[ $breakpoint ] ) ) { @@ -3220,27 +3394,7 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { $breakpoint_feature_declarations = static::get_feature_declarations_for_node( $block_metadata, $breakpoint_node ); $breakpoint_feature_declarations = static::update_paragraph_text_indent_selector( $breakpoint_feature_declarations, $settings, $block_name ); foreach ( $breakpoint_feature_declarations as $feature_selector => $feature_decl ) { - $clean_feature_selector = preg_replace( '/,\s+/', ',', $feature_selector ); - $shortened_selector = str_replace( $block_metadata['selector'], '', $clean_feature_selector ); - - if ( $block_metadata['selector'] && ! str_contains( $clean_feature_selector, $block_metadata['selector'] ) ) { - /* - * Feature selector is block-level (e.g. `.wp-block-button` for - * dimensions/width) — apply the variation class directly to it. - */ - $feature_element_selector = str_replace( $shortened_selector, '', $clean_style_variation_selector ); - $combined_selectors = str_replace( $feature_element_selector, '', $clean_style_variation_selector ); - } else { - // Prepend the variation selector to the current selector. - $split_selectors = explode( ',', $shortened_selector ); - $updated_selectors = array_map( - static function ( $split_selector ) use ( $clean_style_variation_selector ) { - return $clean_style_variation_selector . $split_selector; - }, - $split_selectors - ); - $combined_selectors = implode( ',', $updated_selectors ); - } + $combined_selectors = static::get_block_style_variation_feature_selector( $style_variation, $feature_selector ); $feature_ruleset = static::to_ruleset( ':root :where(' . $combined_selectors . ')', $feature_decl ); $variation_responsive_css .= $breakpoint_media . '{' . $feature_ruleset . '}'; @@ -3253,13 +3407,13 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { $variation_responsive_css .= $breakpoint_media . '{' . $base_ruleset . '}'; } - $breakpoint_pseudo_declarations = static::process_pseudo_selectors( $breakpoint_node, $style_variation['selector'], $settings, $block_name ); + $breakpoint_pseudo_declarations = $this->process_pseudo_selectors( $breakpoint_node, $style_variation['selector'], $settings, $block_name, $block_metadata, $style_variation ); foreach ( $breakpoint_pseudo_declarations as $pseudo_selector => $pseudo_declarations ) { if ( empty( $pseudo_declarations ) ) { continue; } - $pseudo_ruleset = static::to_ruleset( ':root :where(' . $pseudo_selector . ')', $pseudo_declarations ); - $variation_responsive_css .= $breakpoint_media . '{' . $pseudo_ruleset . '}'; + $pseudo_ruleset = static::to_ruleset( ':root :where(' . $pseudo_selector . ')', $pseudo_declarations ); + $variation_responsive_pseudo_css .= $breakpoint_media . '{' . $pseudo_ruleset . '}'; } // Process custom CSS for this breakpoint. @@ -3288,16 +3442,7 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { continue; } - $clean_element_selector = preg_replace( '/,\s+/', ',', $block_elements[ $element_name ] ); - $shortened_selector = str_replace( $block_metadata['selector'], '', $clean_element_selector ); - $split_selectors = explode( ',', $shortened_selector ); - $updated_selectors = array_map( - static function ( $split_selector ) use ( $clean_style_variation_selector ) { - return $clean_style_variation_selector . $split_selector; - }, - $split_selectors - ); - $variation_element_selector = implode( ',', $updated_selectors ); + $variation_element_selector = static::get_block_style_variation_feature_selector( $style_variation, $block_elements[ $element_name ] ); $element_declarations = static::compute_style_properties( $element_node, $settings, null, $this->theme_json ); if ( ! empty( $element_declarations ) ) { @@ -3321,8 +3466,8 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { continue; } - $pseudo_selector_ruleset = static::to_ruleset( ':root :where(' . static::append_to_selector( $variation_element_selector, $pseudo_selector ) . ')', $pseudo_declarations ); - $variation_responsive_css .= $breakpoint_media . '{' . $pseudo_selector_ruleset . '}'; + $pseudo_selector_ruleset = static::to_ruleset( ':root :where(' . static::append_to_selector( $variation_element_selector, $pseudo_selector ) . ')', $pseudo_declarations ); + $variation_responsive_pseudo_css .= $breakpoint_media . '{' . $pseudo_selector_ruleset . '}'; } } } @@ -3332,6 +3477,9 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { if ( ! empty( $variation_responsive_css ) ) { $style_variation_responsive_css[ $style_variation['selector'] ] = $variation_responsive_css; } + if ( ! empty( $variation_responsive_pseudo_css ) ) { + $style_variation_responsive_pseudo_css[ $style_variation['selector'] ] = $variation_responsive_pseudo_css; + } } } /* @@ -3520,6 +3668,13 @@ static function ( $pseudo_selector ) use ( $selector ) { $block_rules .= $style_variation_responsive_css[ $style_variation_selector ]; } } + /* + * Responsive pseudo styles must be output after default pseudo styles + * so viewport state styles win in the cascade. + */ + foreach ( $style_variation_responsive_pseudo_css as $responsive_pseudo_css ) { + $block_rules .= $responsive_pseudo_css; + } // 7. Generate and append any custom CSS rules. if ( isset( $node['css'] ) && ! $is_root_selector ) { @@ -5197,7 +5352,7 @@ protected static function get_block_style_variation_selector( $variation_name, $ } $limit = 1; - $selector_parts = explode( ',', $block_selector ); + $selector_parts = static::split_selector_list( $block_selector ); $result = array(); foreach ( $selector_parts as $part ) { @@ -5211,7 +5366,52 @@ function ( $matches ) use ( $variation_class ) { ); } - return implode( ',', $result ); + return implode( ', ', $result ); + } + + /** + * Applies a block style variation class to a feature selector. + * + * Feature selectors can target a different element than the block's root + * selector. For example, the Button block's root selector targets the inner + * link, while its dimensions width selector targets the outer wrapper. Apply + * the variation class directly to the selector that will receive the + * declarations instead of deriving it by subtracting the root selector from + * the feature selector. + * + * @since 7.0.0 + * + * @param array $style_variation Style variation metadata. + * @param string $feature_selector CSS selector for the feature. + * @return string Feature selector with block style variation selector added. + */ + protected static function get_block_style_variation_feature_selector( $style_variation, $feature_selector ) { + $variation_path = $style_variation['path'] ?? array(); + $variation_name = $style_variation['name'] ?? ( is_array( $variation_path ) ? end( $variation_path ) : null ); + + if ( ! $variation_name ) { + return $style_variation['selector'] ?? $feature_selector; + } + + $variation_class = ".is-style-$variation_name"; + $selector_parts = static::split_selector_list( $feature_selector ); + $selector_parts = array_map( + static function ( $selector ) use ( $variation_class ) { + $prefix = $variation_class . ' '; + + if ( str_starts_with( $selector, $prefix ) ) { + return substr( $selector, strlen( $prefix ) ); + } + + return $selector; + }, + $selector_parts + ); + + return static::get_block_style_variation_selector( + $variation_name, + implode( ', ', $selector_parts ) + ); } /** diff --git a/tests/phpunit/tests/theme/wpThemeJson.php b/tests/phpunit/tests/theme/wpThemeJson.php index 4421e214a57e2..78e1c38f0a03a 100644 --- a/tests/phpunit/tests/theme/wpThemeJson.php +++ b/tests/phpunit/tests/theme/wpThemeJson.php @@ -5125,13 +5125,15 @@ public function data_get_styles_for_block_with_style_variations() { * @ticket 62471 */ public function test_get_styles_for_block_with_style_variations_and_custom_selectors() { + $color_selector = '.wp-block-test-milk .liquid, .wp-block-test-milk:is(.frothed, .steamed) .foam, .wp-block-test-milk:not(.spoiled), .wp-block-test-milk.in-bottle'; + register_block_type( 'test/milk', array( 'api_version' => 3, 'selectors' => array( 'root' => '.milk', - 'color' => '.wp-block-test-milk .liquid, .wp-block-test-milk:not(.spoiled), .wp-block-test-milk.in-bottle', + 'color' => $color_selector, ), ) ); @@ -5171,7 +5173,7 @@ public function test_get_styles_for_block_with_style_variations_and_custom_selec 'path' => array( 'styles', 'blocks', 'test/milk' ), 'selector' => '.wp-block-test-milk', 'selectors' => array( - 'color' => '.wp-block-test-milk .liquid, .wp-block-test-milk:not(.spoiled), .wp-block-test-milk.in-bottle', + 'color' => $color_selector, ), 'variations' => array( 'chocolate' => array( @@ -5182,8 +5184,8 @@ public function test_get_styles_for_block_with_style_variations_and_custom_selec ); $actual_styles = $theme_json->get_styles_for_block( $metadata ); - $default_styles = ':root :where(.wp-block-test-milk .liquid, .wp-block-test-milk:not(.spoiled), .wp-block-test-milk.in-bottle){background-color: white;}'; - $variation_styles = ':root :where(.is-style-chocolate.wp-block-test-milk .liquid,.is-style-chocolate.wp-block-test-milk:not(.spoiled),.is-style-chocolate.wp-block-test-milk.in-bottle){background-color: #35281E;}'; + $default_styles = ':root :where(.wp-block-test-milk .liquid, .wp-block-test-milk:is(.frothed, .steamed) .foam, .wp-block-test-milk:not(.spoiled), .wp-block-test-milk.in-bottle){background-color: white;}'; + $variation_styles = ':root :where(.wp-block-test-milk.is-style-chocolate .liquid, .wp-block-test-milk.is-style-chocolate:is(.frothed, .steamed) .foam, .wp-block-test-milk.is-style-chocolate:not(.spoiled), .wp-block-test-milk.in-bottle.is-style-chocolate){background-color: #35281E;}'; $expected = $default_styles . $variation_styles; unregister_block_style( 'test/milk', 'chocolate' ); @@ -6784,6 +6786,10 @@ public function data_get_block_style_variation_selector() { 'selector' => '.wp-block:is(.outer .inner:first-child)', 'expected' => '.wp-block.is-style-custom:is(.outer .inner:first-child)', ), + ':is with selector list' => array( + 'selector' => '.wp-block:is(.outer, .inner:first-child) .content, .wp-block-alternative', + 'expected' => '.wp-block.is-style-custom:is(.outer, .inner:first-child) .content, .wp-block-alternative.is-style-custom', + ), ':not selector' => array( 'selector' => '.wp-block:not(.outer .inner:first-child)', 'expected' => '.wp-block.is-style-custom:not(.outer .inner:first-child)', @@ -6933,6 +6939,7 @@ public function test_opt_in_to_block_style_variations() { $expected = array( array( + 'name' => 'outline', 'path' => array( 'styles', 'blocks', 'core/button', 'variations', 'outline' ), 'selector' => '.wp-block-button.is-style-outline .wp-block-button__link', ), @@ -7361,7 +7368,7 @@ public function test_block_pseudo_selectors_with_elements() { ) ); - $expected = ':root :where(.wp-block-button .wp-block-button__link){background-color: blue;color: white;}:root :where(.wp-block-button .wp-block-button__link:hover){background-color: white;color: blue;}:root :where(.wp-block-button .wp-block-button__link .wp-element-button,.wp-block-button .wp-block-button__link .wp-block-button__link){color: green;}:root :where(.wp-block-button .wp-block-button__link .wp-element-button:hover,.wp-block-button .wp-block-button__link .wp-block-button__link:hover){color: orange;}'; + $expected = ':root :where(.wp-block-button .wp-block-button__link){background-color: blue;color: white;}:root :where(.wp-block-button .wp-block-button__link:hover){background-color: white;color: blue;}:root :where(.wp-block-button .wp-block-button__link .wp-element-button, .wp-block-button .wp-block-button__link .wp-block-button__link){color: green;}:root :where(.wp-block-button .wp-block-button__link .wp-element-button:hover, .wp-block-button .wp-block-button__link .wp-block-button__link:hover){color: orange;}'; $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ), null, array( 'skip_root_layout_styles' => true ) ) ); } diff --git a/tests/phpunit/tests/theme/wpThemeJsonSelectorList.php b/tests/phpunit/tests/theme/wpThemeJsonSelectorList.php new file mode 100644 index 0000000000000..b59190b022715 --- /dev/null +++ b/tests/phpunit/tests/theme/wpThemeJsonSelectorList.php @@ -0,0 +1,133 @@ +<?php +/** + * Tests selector list helpers in WP_Theme_JSON. + * + * @package WordPress + * @subpackage theme + * + * @since 7.1.0 + * + * @covers WP_Theme_JSON + */ + +class Tests_Theme_wpThemeJsonSelectorList extends WP_UnitTestCase { + /** + * Invokes a protected static method on WP_Theme_JSON. + * + * @param string $method_name Method name. + * @param mixed ...$args Method arguments. + * @return mixed Method result. + */ + private static function invoke_theme_json_method( $method_name, ...$args ) { + $theme_json = new ReflectionClass( 'WP_Theme_JSON' ); + + $method = $theme_json->getMethod( $method_name ); + if ( PHP_VERSION_ID < 80100 ) { + $method->setAccessible( true ); + } + + return $method->invokeArgs( null, $args ); + } + + /** + * @dataProvider data_split_selector_list + * + * @param string $selector CSS selector list. + * @param string[] $expected Expected selectors. + */ + public function test_split_selector_list( $selector, $expected ) { + $this->assertSame( + $expected, + self::invoke_theme_json_method( 'split_selector_list', $selector ) + ); + } + + /** + * @return array<string, array{selector: string, expected: string[]}> + */ + public function data_split_selector_list() { + return array( + 'single selector' => array( + 'selector' => '.wp-block', + 'expected' => array( '.wp-block' ), + ), + 'single selector with whitespace' => array( + 'selector' => " \n.wp-block ", + 'expected' => array( '.wp-block' ), + ), + 'simple selector list' => array( + 'selector' => 'h1,h2', + 'expected' => array( 'h1', 'h2' ), + ), + 'trims whitespace around selectors' => array( + 'selector' => '.a , .b , .c', + 'expected' => array( '.a', '.b', '.c' ), + ), + 'selector function list argument' => array( + 'selector' => ':where(.a, .b),.c', + 'expected' => array( ':where(.a, .b)', '.c' ), + ), + 'nested selector functions' => array( + 'selector' => ':where(:not(.a, .b), .c),.d', + 'expected' => array( ':where(:not(.a, .b), .c)', '.d' ), + ), + 'attribute string containing comma' => array( + 'selector' => '[data-label="Save, continue"],.fallback', + 'expected' => array( '[data-label="Save, continue"]', '.fallback' ), + ), + 'escaped comma in identifier' => array( + 'selector' => '.foo\,bar,.baz', + 'expected' => array( '.foo\,bar', '.baz' ), + ), + 'escaped closing parenthesis in selector function' => array( + 'selector' => ':is(.a\), .b), .c', + 'expected' => array( ':is(.a\), .b)', '.c' ), + ), + 'quoted function argument before top-level comma' => array( + 'selector' => ':lang(zh, "*-hant"),.foo', + 'expected' => array( ':lang(zh, "*-hant")', '.foo' ), + ), + 'escaped quote and comma inside string' => array( + 'selector' => '[data-x="\",inside"],.b', + 'expected' => array( '[data-x="\",inside"]', '.b' ), + ), + 'comment containing comma' => array( + 'selector' => '.a/*,*/,.b', + 'expected' => array( '.a/*,*/', '.b' ), + ), + ); + } + + /** + * @dataProvider data_prepend_to_selector_uses_safe_splitting + * + * @param string $selector CSS selector list. + * @param string $expected Expected prepended selector. + */ + public function test_prepend_to_selector_uses_safe_splitting( $selector, $expected ) { + $this->assertSame( + $expected, + self::invoke_theme_json_method( 'prepend_to_selector', $selector, '.scope ' ) + ); + } + + /** + * @return array<string, array{selector: string, expected: string}> + */ + public function data_prepend_to_selector_uses_safe_splitting() { + return array( + 'fast path for simple selector list' => array( + 'selector' => 'h1,h2', + 'expected' => '.scope h1, .scope h2', + ), + 'escaped comma does not trigger fast-path breakage' => array( + 'selector' => '.foo\,bar,.baz', + 'expected' => '.scope .foo\,bar, .scope .baz', + ), + 'quoted selector function argument is preserved' => array( + 'selector' => ':lang(zh, "*-hant"),.foo', + 'expected' => '.scope :lang(zh, "*-hant"), .scope .foo', + ), + ); + } +} From f7a841388cfa9b445288dfaa4303796584f0a29c Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Wed, 1 Jul 2026 16:29:34 +0000 Subject: [PATCH 291/327] REST API: Support registering one sideloaded file under multiple image sizes. When multiple registered sizes resolve to identical dimensions (`width`, `height`, `crop`), the client can now group them, upload one file, and reference it from every matching size name instead of encoding, transferring, and storing duplicates. The sideload endpoint's `image_size` parameter and the finalize endpoint's `sub_sizes[].image_size` now accept either a string or an array of strings. See related Gutenberg work: https://github.com/WordPress/gutenberg/pull/77036. Props adamsilverstein, westonruter, swissspidy, sachinrajcp123, sanayasir. Fixes #65481. git-svn-id: https://develop.svn.wordpress.org/trunk@62609 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-wp-rest-attachments-controller.php | 222 +++++++++---- .../rest-api/rest-attachments-controller.php | 301 +++++++++++++++++- tests/qunit/fixtures/wp-api-generated.js | 63 +++- 3 files changed, 512 insertions(+), 74 deletions(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php index 21805778ba659..8f707acaba378 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -65,14 +65,6 @@ public function register_routes() { ); if ( wp_is_client_side_media_processing_enabled() ) { - $valid_image_sizes = array_keys( wp_get_registered_image_subsizes() ); - // Special case to set 'original_image' in attachment metadata. - $valid_image_sizes[] = 'original'; - // Used for PDF thumbnails. - $valid_image_sizes[] = 'full'; - // Client-side big image threshold: sideload the scaled version. - $valid_image_sizes[] = 'scaled'; - register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P<id>[\d]+)/sideload', @@ -87,10 +79,47 @@ public function register_routes() { 'type' => 'integer', ), 'image_size' => array( - 'description' => __( 'Image size.' ), - 'type' => 'string', - 'enum' => $valid_image_sizes, - 'required' => true, + 'description' => __( 'Image size. Can be a single size name or an array of size names to register the same file under multiple sizes.' ), + 'type' => array( 'string', 'array' ), + 'items' => array( + 'type' => 'string', + ), + 'required' => true, + /* + * A custom callback is used instead of the default enum validation + * because rest_is_array() treats scalar strings as single-element + * lists (via wp_parse_list()), so a [ 'string', 'array' ] type alone + * cannot enforce the enum. The callback validates each item against + * the current list of registered sizes, which reflects sizes added + * after route registration (e.g. via add_image_size()). + */ + 'validate_callback' => static function ( $value, $request, $param ) { + $valid_sizes = array_keys( wp_get_registered_image_subsizes() ); + $valid_sizes[] = 'original'; + $valid_sizes[] = 'scaled'; + $valid_sizes[] = 'full'; + + $items = is_string( $value ) ? array( $value ) : ( is_array( $value ) ? $value : null ); + if ( null === $items ) { + return new WP_Error( + 'rest_invalid_type', + /* translators: %s: Parameter name. */ + sprintf( __( '%s must be a string or an array of strings.' ), $param ) + ); + } + + foreach ( $items as $item ) { + if ( ! is_string( $item ) || ! in_array( $item, $valid_sizes, true ) ) { + return new WP_Error( + 'rest_not_in_enum', + /* translators: %s: Parameter name. */ + sprintf( __( '%s contains an invalid image size.' ), $param ) + ); + } + } + + return true; + }, ), 'convert_format' => array( 'type' => 'boolean', @@ -113,10 +142,50 @@ public function register_routes() { 'callback' => array( $this, 'finalize_item' ), 'permission_callback' => array( $this, 'edit_media_item_permissions_check' ), 'args' => array( - 'id' => array( + 'id' => array( 'description' => __( 'Unique identifier for the attachment.' ), 'type' => 'integer', ), + 'sub_sizes' => array( + 'description' => __( 'Array of sub-size metadata collected from sideload responses.' ), + 'type' => 'array', + 'default' => array(), + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'image_size' => array( + 'description' => __( 'Size name, or an array of size names when a single file is registered under multiple sizes with matching dimensions.' ), + 'type' => array( 'string', 'array' ), + 'items' => array( + 'type' => 'string', + ), + 'required' => true, + ), + 'width' => array( + 'type' => 'integer', + 'minimum' => 1, + ), + 'height' => array( + 'type' => 'integer', + 'minimum' => 1, + ), + 'file' => array( + 'type' => 'string', + ), + 'mime_type' => array( + 'type' => 'string', + 'pattern' => '^image/.*', + ), + 'filesize' => array( + 'type' => 'integer', + 'minimum' => 1, + ), + 'original_image' => array( + 'type' => 'string', + ), + ), + ), + ), ), ), 'allow_batch' => $this->allow_batch, @@ -2082,16 +2151,30 @@ public function sideload_item( WP_REST_Request $request ) { $image_size = $request['image_size']; - $metadata = wp_get_attachment_metadata( $attachment_id, true ); + // Build sub-size data to return to the client. + // The client accumulates these and sends them all to the finalize + // endpoint, which writes the metadata in a single operation. This + // avoids the read-modify-write race that concurrent sideloads for the + // same attachment would otherwise hit. + $sub_size_data = array( + 'image_size' => $image_size, + ); - if ( ! $metadata ) { - $metadata = array(); - } + if ( is_array( $image_size ) ) { + // Multiple registered sizes share these dimensions, so a single + // sideloaded file is reused for all of them. Arrays only carry + // regular sub-sizes; the special keys below are always scalar. + $size = wp_getimagesize( $path ); - if ( 'original' === $image_size ) { - $metadata['original_image'] = wp_basename( $path ); + $sub_size_data['width'] = $size ? $size[0] : 0; + $sub_size_data['height'] = $size ? $size[1] : 0; + $sub_size_data['file'] = wp_basename( $path ); + $sub_size_data['mime_type'] = $type; + $sub_size_data['filesize'] = wp_filesize( $path ); + } elseif ( 'original' === $image_size ) { + $sub_size_data['file'] = wp_basename( $path ); } elseif ( 'scaled' === $image_size ) { - // The current attached file is the original; record it as original_image. + // Record the current attached file as the original. $current_file = get_attached_file( $attachment_id, true ); if ( ! $current_file ) { @@ -2102,7 +2185,7 @@ public function sideload_item( WP_REST_Request $request ) { ); } - $metadata['original_image'] = wp_basename( $current_file ); + $sub_size_data['original_image'] = wp_basename( $current_file ); // Validate the scaled image before updating the attached file. $size = wp_getimagesize( $path ); @@ -2117,6 +2200,7 @@ public function sideload_item( WP_REST_Request $request ) { } // Update the attached file to point to the scaled version. + // This writes to _wp_attached_file meta, not _wp_attachment_metadata. if ( get_attached_file( $attachment_id, true ) !== $path && ! update_attached_file( $attachment_id, $path ) @@ -2128,42 +2212,21 @@ public function sideload_item( WP_REST_Request $request ) { ); } - $metadata['width'] = $size[0]; - $metadata['height'] = $size[1]; - $metadata['filesize'] = $filesize; - $metadata['file'] = _wp_relative_upload_path( $path ); + $sub_size_data['width'] = $size[0]; + $sub_size_data['height'] = $size[1]; + $sub_size_data['filesize'] = $filesize; + $sub_size_data['file'] = _wp_relative_upload_path( $path ); } else { - $metadata['sizes'] = $metadata['sizes'] ?? array(); - $size = wp_getimagesize( $path ); - $metadata['sizes'][ $image_size ] = array( - 'width' => $size ? $size[0] : 0, - 'height' => $size ? $size[1] : 0, - 'file' => wp_basename( $path ), - 'mime-type' => $type, - 'filesize' => wp_filesize( $path ), - ); - } - - wp_update_attachment_metadata( $attachment_id, $metadata ); - - $response_request = new WP_REST_Request( - WP_REST_Server::READABLE, - rest_get_route_for_post( $attachment_id ) - ); - - $response_request['context'] = 'edit'; - - if ( isset( $request['_fields'] ) ) { - $response_request['_fields'] = $request['_fields']; + $sub_size_data['width'] = $size ? $size[0] : 0; + $sub_size_data['height'] = $size ? $size[1] : 0; + $sub_size_data['file'] = wp_basename( $path ); + $sub_size_data['mime_type'] = $type; + $sub_size_data['filesize'] = wp_filesize( $path ); } - $response = $this->prepare_item_for_response( get_post( $attachment_id ), $response_request ); - - $response->header( 'Location', rest_url( rest_get_route_for_post( $attachment_id ) ) ); - - return $response; + return rest_ensure_response( $sub_size_data ); } /** @@ -2215,9 +2278,11 @@ private static function filter_wp_unique_filename( $filename, $dir, $number, $at /** * Finalizes an attachment after client-side media processing. * - * Triggers the 'wp_generate_attachment_metadata' filter so that - * server-side plugins can process the attachment after all client-side - * operations (upload, thumbnail generation, sideloads) are complete. + * Applies the sub-size metadata collected from sideload responses in a + * single metadata update, then triggers the 'wp_generate_attachment_metadata' + * filter so that server-side plugins can process the attachment after all + * client-side operations (upload, thumbnail generation, sideloads) are + * complete. * * @since 7.1.0 * @@ -2237,6 +2302,53 @@ public function finalize_item( WP_REST_Request $request ) { $metadata = array(); } + // Apply all sub-size metadata collected from sideload responses. + $sub_sizes = $request['sub_sizes'] ?? array(); + + foreach ( $sub_sizes as $sub_size ) { + $image_size = $sub_size['image_size']; + + // When multiple size names share identical dimensions the client + // sends a single sub-size entry with an array of names. Register the + // same file under each name. Arrays only contain regular sizes. + if ( is_array( $image_size ) ) { + $metadata['sizes'] = $metadata['sizes'] ?? array(); + + foreach ( $image_size as $name ) { + $metadata['sizes'][ $name ] = array( + 'width' => $sub_size['width'] ?? 0, + 'height' => $sub_size['height'] ?? 0, + 'file' => $sub_size['file'] ?? '', + 'mime-type' => $sub_size['mime_type'] ?? '', + 'filesize' => $sub_size['filesize'] ?? 0, + ); + } + continue; + } + + if ( 'original' === $image_size ) { + $metadata['original_image'] = $sub_size['file']; + } elseif ( 'scaled' === $image_size ) { + if ( ! empty( $sub_size['original_image'] ) ) { + $metadata['original_image'] = $sub_size['original_image']; + } + $metadata['width'] = $sub_size['width'] ?? 0; + $metadata['height'] = $sub_size['height'] ?? 0; + $metadata['filesize'] = $sub_size['filesize'] ?? 0; + $metadata['file'] = $sub_size['file'] ?? ''; + } else { + $metadata['sizes'] = $metadata['sizes'] ?? array(); + + $metadata['sizes'][ $image_size ] = array( + 'width' => $sub_size['width'] ?? 0, + 'height' => $sub_size['height'] ?? 0, + 'file' => $sub_size['file'] ?? '', + 'mime-type' => $sub_size['mime_type'] ?? '', + 'filesize' => $sub_size['filesize'] ?? 0, + ); + } + } + /** This filter is documented in wp-admin/includes/image.php */ $metadata = apply_filters( 'wp_generate_attachment_metadata', $metadata, $attachment_id, 'update' ); diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php index 79e9d23cf9dd3..ff9854994abf7 100644 --- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php @@ -3245,6 +3245,7 @@ static function ( $data ) use ( &$captured_data ) { * Tests sideloading a scaled image for an existing attachment. * * @ticket 64737 + * @ticket 65329 * @requires function imagejpeg */ public function test_sideload_scaled_image() { @@ -3275,16 +3276,32 @@ public function test_sideload_scaled_image() { $this->assertSame( 200, $response->get_status(), 'Sideloading scaled image should succeed.' ); + // The sideload endpoint returns lightweight sub-size data; the metadata + // is written later by the finalize endpoint. + $sub_size = $response->get_data(); + $this->assertSame( 'scaled', $sub_size['image_size'], 'Response should echo the image_size.' ); + $this->assertSame( wp_basename( $original_file ), $sub_size['original_image'], 'Response original_image should be the basename of the original attached file.' ); + $this->assertGreaterThan( 0, $sub_size['width'], 'Response width should be positive.' ); + $this->assertGreaterThan( 0, $sub_size['height'], 'Response height should be positive.' ); + $this->assertGreaterThan( 0, $sub_size['filesize'], 'Response filesize should be positive.' ); + $this->assertStringContainsString( 'scaled', $sub_size['file'], 'Response file should reference the scaled version.' ); + + // The attached file is still repointed to the scaled version during sideload. + $new_file = get_attached_file( $attachment_id, true ); + $this->assertStringContainsString( 'scaled', wp_basename( $new_file ), 'Attached file should now be the scaled version.' ); + + // Finalize with the collected sub-size, which writes the metadata. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $request->set_param( 'sub_sizes', array( $sub_size ) ); + $response = rest_get_server()->dispatch( $request ); + $this->assertSame( 200, $response->get_status(), 'Finalize should succeed.' ); + $metadata = wp_get_attachment_metadata( $attachment_id ); // The original file should now be recorded as original_image. $this->assertArrayHasKey( 'original_image', $metadata, 'Metadata should contain original_image.' ); $this->assertSame( wp_basename( $original_file ), $metadata['original_image'], 'original_image should be the basename of the original attached file.' ); - // The attached file should now point to the scaled version. - $new_file = get_attached_file( $attachment_id, true ); - $this->assertStringContainsString( 'scaled', wp_basename( $new_file ), 'Attached file should now be the scaled version.' ); - // Metadata should have width, height, filesize, and file updated. $this->assertArrayHasKey( 'width', $metadata, 'Metadata should contain width.' ); $this->assertArrayHasKey( 'height', $metadata, 'Metadata should contain height.' ); @@ -3329,11 +3346,14 @@ public function test_sideload_scaled_image_requires_auth() { } /** - * Tests that the sideload endpoint includes 'scaled' in the image_size enum. + * Tests that the sideload endpoint accepts 'scaled' as an image size. + * + * The image_size argument accepts either a single size name or an array of + * size names, so it validates via a custom callback rather than an enum. * * @ticket 64737 */ - public function test_sideload_route_includes_scaled_enum() { + public function test_sideload_route_accepts_scaled_image_size() { $this->enable_client_side_media_processing(); $server = rest_get_server(); @@ -3348,7 +3368,27 @@ public function test_sideload_route_includes_scaled_enum() { $param_name = 'image_size'; $this->assertArrayHasKey( $param_name, $args, 'Route should have image_size arg.' ); - $this->assertContains( 'scaled', $args[ $param_name ]['enum'], 'image_size enum should include scaled.' ); + $this->assertArrayHasKey( + 'validate_callback', + $args[ $param_name ], + 'image_size arg should validate via a callback.' + ); + + $validate = $args[ $param_name ]['validate_callback']; + $request = new WP_REST_Request( 'POST', '/wp/v2/media/1/sideload' ); + + $this->assertTrue( + $validate( 'scaled', $request, $param_name ), + 'image_size validation should accept the scaled size.' + ); + $this->assertTrue( + $validate( array( 'scaled' ), $request, $param_name ), + 'image_size validation should accept an array of size names.' + ); + $this->assertWPError( + $validate( 'not-a-real-size', $request, $param_name ), + 'image_size validation should reject an unknown size.' + ); } /** @@ -3541,4 +3581,251 @@ public function test_finalize_item_invalid_id(): void { $this->assertErrorResponse( 'rest_post_invalid_id', $response, 404 ); } + + /** + * Tests that the finalize endpoint writes regular sub-size metadata + * collected from sideload responses. + * + * @ticket 65329 + * @covers WP_REST_Attachments_Controller::finalize_item + * @requires function imagejpeg + */ + public function test_finalize_writes_regular_sub_sizes(): void { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment without generating sub-sizes server-side. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_param( 'generate_sub_sizes', false ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + $this->assertSame( 201, $response->get_status() ); + + // Sideload a thumbnail sub-size; the response carries its metadata. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-thumb.jpg' ); + $request->set_param( 'image_size', 'thumbnail' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Sideloading a thumbnail should succeed.' ); + + $sub_size = $response->get_data(); + $this->assertSame( 'thumbnail', $sub_size['image_size'], 'Response should echo the image_size.' ); + + // Finalize with the collected sub-size, which writes it into metadata. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $request->set_param( 'sub_sizes', array( $sub_size ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Finalize should succeed.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id ); + $this->assertArrayHasKey( 'sizes', $metadata, 'Metadata should contain sizes.' ); + $this->assertArrayHasKey( 'thumbnail', $metadata['sizes'], 'Metadata sizes should contain the sideloaded thumbnail.' ); + $this->assertSame( 'image/jpeg', $metadata['sizes']['thumbnail']['mime-type'], 'Thumbnail mime-type should be recorded.' ); + $this->assertGreaterThan( 0, $metadata['sizes']['thumbnail']['filesize'], 'Thumbnail filesize should be positive.' ); + } + + /** + * Tests that the finalize endpoint records original_image from an + * 'original' sub-size collected from a sideload response. + * + * @ticket 65329 + * @covers WP_REST_Attachments_Controller::finalize_item + * @requires function imagejpeg + */ + public function test_finalize_writes_original_metadata(): void { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment without generating sub-sizes server-side. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_param( 'generate_sub_sizes', false ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + $this->assertSame( 201, $response->get_status() ); + + // Sideload the 'original' version (simulating a rotated image), which + // returns the basename without writing metadata. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-original.jpg' ); + $request->set_param( 'image_size', 'original' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $original_data = $response->get_data(); + + $this->assertSame( 200, $response->get_status(), 'Sideloading the original should succeed.' ); + $this->assertSame( 'original', $original_data['image_size'], 'Response should echo the image_size.' ); + $this->assertSame( 'canola-original.jpg', $original_data['file'], 'Response should return the file basename.' ); + + // Sideload must not write metadata; that happens in finalize. + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertArrayNotHasKey( 'original_image', $metadata, 'Sideload should not write original_image metadata.' ); + + // Finalize with the collected original sub-size. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $request->set_param( 'sub_sizes', array( $original_data ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Finalize should succeed.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id ); + $this->assertSame( 'canola-original.jpg', $metadata['original_image'], 'Finalize should record original_image from the sub-size.' ); + } + + /** + * Tests that the finalize endpoint preserves existing image_meta (EXIF) + * when adding sub-sizes collected from sideload responses. + * + * @ticket 65329 + * @covers WP_REST_Attachments_Controller::finalize_item + * @requires function imagejpeg + * @requires extension exif + */ + public function test_finalize_preserves_image_meta(): void { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + $exif_file = DIR_TESTDATA . '/images/2004-07-22-DSC_0008.jpg'; + + // Create an attachment without generating sub-sizes server-side. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=2004-07-22-DSC_0008.jpg' ); + $request->set_param( 'generate_sub_sizes', false ); + $request->set_body( (string) file_get_contents( $exif_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + $this->assertSame( 201, $response->get_status() ); + + $original_image_meta = wp_get_attachment_metadata( $attachment_id, true )['image_meta']; + + // Finalize with a thumbnail sub-size. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $request->set_param( + 'sub_sizes', + array( + array( + 'image_size' => 'thumbnail', + 'width' => 150, + 'height' => 150, + 'file' => '2004-07-22-DSC_0008-150x150.jpg', + 'mime_type' => 'image/jpeg', + 'filesize' => 5000, + ), + ) + ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Finalize should succeed.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id ); + + // The sub-size should have been added. + $this->assertArrayHasKey( 'thumbnail', $metadata['sizes'], 'Finalize should add the thumbnail sub-size.' ); + + // The EXIF image_meta should be unchanged. + $this->assertSame( $original_image_meta['aperture'], $metadata['image_meta']['aperture'], 'Aperture should be preserved.' ); + $this->assertSame( $original_image_meta['camera'], $metadata['image_meta']['camera'], 'Camera should be preserved.' ); + $this->assertSame( $original_image_meta['focal_length'], $metadata['image_meta']['focal_length'], 'Focal length should be preserved.' ); + $this->assertSame( $original_image_meta['iso'], $metadata['image_meta']['iso'], 'ISO should be preserved.' ); + } + + /** + * Tests that sideloading with an array of image sizes registers the single + * file under each size name when finalized. + * + * @ticket 64737 + * @covers WP_REST_Attachments_Controller::sideload_item + * @covers WP_REST_Attachments_Controller::finalize_item + * @requires function imagejpeg + */ + public function test_sideload_image_size_array() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment without generating sub-sizes server-side. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_param( 'generate_sub_sizes', false ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + $this->assertSame( 201, $response->get_status() ); + + // Sideload a single file registered under multiple sizes. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-dup.jpg' ); + $request->set_param( 'image_size', array( 'thumbnail', 'medium' ) ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Sideloading with an array of sizes should succeed.' ); + + $sub_size = $response->get_data(); + $this->assertSame( array( 'thumbnail', 'medium' ), $sub_size['image_size'], 'Response should echo the array of sizes.' ); + + // Finalize with the collected sub-size. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $request->set_param( 'sub_sizes', array( $sub_size ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Finalize should succeed.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id ); + $this->assertArrayHasKey( 'thumbnail', $metadata['sizes'], 'Metadata should register the thumbnail size.' ); + $this->assertArrayHasKey( 'medium', $metadata['sizes'], 'Metadata should register the medium size.' ); + $this->assertSame( + $metadata['sizes']['thumbnail']['file'], + $metadata['sizes']['medium']['file'], + 'Both sizes should reference the same physical file.' + ); + } + + /** + * Tests that the sideload endpoint rejects an invalid image size name. + * + * @ticket 64737 + * @requires function imagejpeg + */ + public function test_sideload_image_size_invalid() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-x.jpg' ); + $request->set_param( 'image_size', array( 'thumbnail', 'not-a-real-size' ) ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 400, $response->get_status(), 'An unknown size name should be rejected.' ); + } } diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js index 644bd808b6897..cb8e547962800 100644 --- a/tests/qunit/fixtures/wp-api-generated.js +++ b/tests/qunit/fixtures/wp-api-generated.js @@ -3693,19 +3693,14 @@ mockedApiResponse.Schema = { "required": false }, "image_size": { - "description": "Image size.", - "type": "string", - "enum": [ - "thumbnail", - "medium", - "medium_large", - "large", - "1536x1536", - "2048x2048", - "original", - "full", - "scaled" + "description": "Image size. Can be a single size name or an array of size names to register the same file under multiple sizes.", + "type": [ + "string", + "array" ], + "items": { + "type": "string" + }, "required": true }, "convert_format": { @@ -3733,6 +3728,50 @@ mockedApiResponse.Schema = { "description": "Unique identifier for the attachment.", "type": "integer", "required": false + }, + "sub_sizes": { + "description": "Array of sub-size metadata collected from sideload responses.", + "type": "array", + "default": [], + "items": { + "type": "object", + "properties": { + "image_size": { + "description": "Size name, or an array of size names when a single file is registered under multiple sizes with matching dimensions.", + "type": [ + "string", + "array" + ], + "items": { + "type": "string" + }, + "required": true + }, + "width": { + "type": "integer", + "minimum": 1 + }, + "height": { + "type": "integer", + "minimum": 1 + }, + "file": { + "type": "string" + }, + "mime_type": { + "type": "string", + "pattern": "^image/.*" + }, + "filesize": { + "type": "integer", + "minimum": 1 + }, + "original_image": { + "type": "string" + } + } + }, + "required": false } } } From 6b4f9afbab534aad6d3e9dbbeec6ec13cb99e30d Mon Sep 17 00:00:00 2001 From: Ben Dwyer <scruffian@git.wordpress.org> Date: Wed, 1 Jul 2026 18:08:42 +0000 Subject: [PATCH 292/327] Toolbar: Show the site icon in the admin bar when one is set. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a site icon is configured, it is displayed in the WordPress admin bar in place of the home/odometer dashicon. The icon is shown at 20×20px with a border-radius of 2px. When no site icon is set, the existing dashicon behavior is preserved. Developed in https://github.com/WordPress/wordpress-develop/pull/11781. Props fushar, tyxla, joen, wildworks, scruffian, sergeybiryukov, lucasmdo, joedolson. Fixes #65088. See #46657, #64308. git-svn-id: https://develop.svn.wordpress.org/trunk@62614 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/admin-bar.php | 25 ++++++-- src/wp-includes/css/admin-bar.css | 48 ++++++++++++---- tests/phpunit/tests/adminbar.php | 94 +++++++++++++++++++++++++++++++ 3 files changed, 153 insertions(+), 14 deletions(-) diff --git a/src/wp-includes/admin-bar.php b/src/wp-includes/admin-bar.php index 2ab30a24c27ee..7975ec8cd85ca 100644 --- a/src/wp-includes/admin-bar.php +++ b/src/wp-includes/admin-bar.php @@ -276,7 +276,7 @@ function wp_admin_bar_my_account_item( $wp_admin_bar ) { /* translators: %s: Current user's display name. */ $howdy = sprintf( __( 'Howdy, %s' ), '<span class="display-name">' . wp_get_current_user()->display_name . '</span>' ); - $avatar = get_avatar( $user_id, 28 ); + $avatar = get_avatar( $user_id, 26 ); $wp_admin_bar->add_node( array( 'id' => 'my-account', @@ -385,15 +385,32 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) { } $title = wp_html_excerpt( $blogname, 40, '…' ); + $meta = array( + 'menu_title' => $title, + ); + + if ( ! is_network_admin() && ! is_user_admin() ) { + /** This filter is documented in wp-includes/admin-bar.php */ + $show_site_icons = apply_filters( 'wp_admin_bar_show_site_icons', true ); + + if ( true === $show_site_icons && has_site_icon() ) { + $site_icon = sprintf( + '<img class="site-icon" src="%s" srcset="%s 2x" alt="" width="20" height="20" />', + esc_url( get_site_icon_url( 32 ) ), + esc_url( get_site_icon_url( 64 ) ) + ); + + $title = $site_icon . $title; + $meta['class'] = 'has-site-icon'; + } + } $wp_admin_bar->add_node( array( 'id' => 'site-name', 'title' => $title, 'href' => ( is_admin() || ! current_user_can( 'read' ) ) ? home_url( '/' ) : admin_url(), - 'meta' => array( - 'menu_title' => $title, - ), + 'meta' => $meta, ) ); diff --git a/src/wp-includes/css/admin-bar.css b/src/wp-includes/css/admin-bar.css index 7ab855fd919bb..af89900ef1642 100644 --- a/src/wp-includes/css/admin-bar.css +++ b/src/wp-includes/css/admin-bar.css @@ -455,7 +455,6 @@ html:lang(he-il) .rtl #wpadminbar * { top: 4px; width: 64px; height: 64px; - border-radius: 50%; } #wpadminbar #wp-admin-bar-user-info a { @@ -482,10 +481,9 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-my-account.with-avatar > .ab-empty-item img, #wpadminbar #wp-admin-bar-my-account.with-avatar > a img { width: auto; - height: 20px; + height: 16px; padding: 0; - border: 1px solid #2c353b; - border-radius: 50%; + border: 1px solid #8c8f94; background: #f0f0f1; line-height: 1.84615384; vertical-align: middle; @@ -539,6 +537,10 @@ html:lang(he-il) .rtl #wpadminbar * { margin: 0 8px 2px -2px; } +#wpadminbar .quicklinks li img.blavatar { + border-radius: 2px; +} + #wpadminbar .quicklinks li div.blavatar:before { content: "\f120"; content: "\f120" / ''; @@ -584,6 +586,23 @@ html:lang(he-il) .rtl #wpadminbar * { content: "\f102" / ''; } +#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item { + display: flex; + align-items: center; + gap: 6px; +} + +#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item:before { + content: none; +} + +#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon { + width: 20px; + height: 20px; + background: #f0f0f1; /* matching my-account (user avatar) node's background */ + border-radius: 2px; +} + /** @@ -905,7 +924,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-edit > .ab-item:before, #wpadminbar #wp-admin-bar-my-sites > .ab-item:before, - #wpadminbar #wp-admin-bar-site-name > .ab-item:before, + #wpadminbar #wp-admin-bar-site-name:not(.has-site-icon) > .ab-item:before, #wpadminbar #wp-admin-bar-site-editor > .ab-item:before, #wpadminbar #wp-admin-bar-customize > .ab-item:before, #wpadminbar #wp-admin-bar-my-account > .ab-item:before, @@ -920,6 +939,16 @@ html:lang(he-il) .rtl #wpadminbar * { -moz-osx-font-smoothing: grayscale; } + #wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon { + position: absolute; + top: 9px; + left: 12px; + width: 28px; + height: 28px; + margin: 0; + border-radius: 4px; + } + #wpadminbar #wp-admin-bar-appearance { margin-top: 0; } @@ -971,7 +1000,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-my-account > a { position: relative; white-space: nowrap; - text-indent: 150%; /* More than 100% indentation is needed since this element has padding */ + text-indent: 150%; /* More than 100% indention is needed since this element has padding */ width: 28px; padding: 0 10px; overflow: hidden; /* Prevent link text from forcing horizontal scrolling on mobile */ @@ -979,11 +1008,10 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { position: absolute; - top: 12px; + top: 13px; right: 10px; - width: 28px; - height: 28px; - border-radius: 50%; + width: 26px; + height: 26px; } #wpadminbar #wp-admin-bar-user-actions.ab-submenu { diff --git a/tests/phpunit/tests/adminbar.php b/tests/phpunit/tests/adminbar.php index 27308bd82760e..fb29eaf39af42 100644 --- a/tests/phpunit/tests/adminbar.php +++ b/tests/phpunit/tests/adminbar.php @@ -810,6 +810,100 @@ public function data_my_sites_network_menu_items() { ); } + /** + * @covers ::wp_admin_bar_site_menu + */ + public function test_site_name_menu_has_no_site_icon_when_unset() { + wp_set_current_user( self::$editor_id ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); + $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); + } + + /** + * @covers ::wp_admin_bar_site_menu + * @requires function imagejpeg + */ + public function test_site_name_menu_includes_site_icon_when_set() { + wp_set_current_user( self::$editor_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); + update_option( 'site_icon', $attachment_id ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertStringContainsString( '<img class="site-icon"', $node_site_name->title ); + $this->assertStringContainsString( esc_url( get_site_icon_url( 32 ) ), $node_site_name->title ); + $this->assertSame( 'has-site-icon', $node_site_name->meta['class'] ); + } + + /** + * @covers ::wp_admin_bar_site_menu + * @requires function imagejpeg + */ + public function test_site_name_menu_respects_show_site_icons_filter() { + wp_set_current_user( self::$editor_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); + update_option( 'site_icon', $attachment_id ); + + add_filter( 'wp_admin_bar_show_site_icons', '__return_false' ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); + $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); + } + + /** + * @covers ::wp_admin_bar_site_menu + * @group multisite + * @group ms-required + * @requires function imagejpeg + */ + public function test_site_name_menu_has_no_site_icon_in_network_admin() { + wp_set_current_user( self::$admin_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); + update_option( 'site_icon', $attachment_id ); + + set_current_screen( 'dashboard-network' ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertTrue( is_network_admin() ); + $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); + $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); + } + + /** + * @covers ::wp_admin_bar_site_menu + * @group multisite + * @group ms-required + * @requires function imagejpeg + */ + public function test_site_name_menu_has_no_site_icon_in_user_admin() { + wp_set_current_user( self::$admin_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); + update_option( 'site_icon', $attachment_id ); + + set_current_screen( 'dashboard-user' ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertTrue( is_user_admin() ); + $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); + $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); + } + /** * This test ensures that WP_Admin_Bar::$proto is not defined (including magic methods). * From 711fa9cff7a01a058d19f17d42b2c44da6ea9d8b Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Wed, 1 Jul 2026 18:10:56 +0000 Subject: [PATCH 293/327] Editor: Skip Document-Isolation-Policy on the classic-theme site preview. The site editor renders the front end of a classic theme in a same-origin `?wp_site_preview=1` iframe and must reach the iframe's `contentDocument` to neutralize its interactive elements. Document-Isolation-Policy isolates the editor into its own agent cluster, which blocks that same-origin access. Skip cross-origin isolation in `wp_set_up_cross_origin_isolation()` for the classic-theme site editor home route so the preview keeps working. See related Gutenberg pull request: https://github.com/WordPress/gutenberg/pull/78404. Props manhar, wildworks. Fixes #65399. git-svn-id: https://develop.svn.wordpress.org/trunk@62615 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/media.php | 16 +++ .../tests/media/wpCrossOriginIsolation.php | 130 ++++++++++++++++++ 2 files changed, 146 insertions(+) diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index 4657b5872eb18..f8cf35c9ac771 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -6560,6 +6560,22 @@ function wp_set_up_cross_origin_isolation(): void { return; } + /* + * Skip when rendering the classic-theme home route, which shows the site + * preview in an iframe and must reach its `contentDocument` to neutralize + * interactive elements. DIP would block that same-origin access. + * + * Keyed off $pagenow rather than the current screen so the guard keeps + * working if the header set-up is ever moved to an earlier hook (such as + * admin_init) where the screen is not yet available. + */ + global $pagenow; + + // phpcs:ignore WordPress.Security.NonceVerification.Recommended + if ( 'site-editor.php' === $pagenow && ! wp_is_block_theme() && ( ! isset( $_GET['p'] ) || '/' === $_GET['p'] ) ) { + return; + } + /* * Skip when a third-party page builder overrides the block editor. * DIP isolates the document into its own agent cluster, diff --git a/tests/phpunit/tests/media/wpCrossOriginIsolation.php b/tests/phpunit/tests/media/wpCrossOriginIsolation.php index 3ec4231d5bede..ce6432aa8894c 100644 --- a/tests/phpunit/tests/media/wpCrossOriginIsolation.php +++ b/tests/phpunit/tests/media/wpCrossOriginIsolation.php @@ -30,12 +30,24 @@ class Tests_Media_wpCrossOriginIsolation extends WP_UnitTestCase { */ private ?string $original_get_action; + /** + * Original $_GET['p'] value. + */ + private ?string $original_get_p; + + /** + * Original $pagenow value. + */ + private ?string $original_pagenow; + public function set_up() { parent::set_up(); $this->original_user_agent = $_SERVER['HTTP_USER_AGENT'] ?? null; $this->original_http_host = $_SERVER['HTTP_HOST'] ?? null; $this->original_https = $_SERVER['HTTPS'] ?? null; $this->original_get_action = $_GET['action'] ?? null; + $this->original_get_p = $_GET['p'] ?? null; + $this->original_pagenow = $GLOBALS['pagenow'] ?? null; } public function tear_down() { @@ -63,11 +75,25 @@ public function tear_down() { $_GET['action'] = $this->original_get_action; } + if ( null === $this->original_get_p ) { + unset( $_GET['p'] ); + } else { + $_GET['p'] = $this->original_get_p; + } + // Clean up any output buffers started during tests. while ( ob_get_level() > 1 ) { ob_end_clean(); } + if ( null === $this->original_pagenow ) { + unset( $GLOBALS['pagenow'] ); + } else { + $GLOBALS['pagenow'] = $this->original_pagenow; + } + + $GLOBALS['current_screen'] = null; + remove_all_filters( 'wp_client_side_media_processing_enabled' ); parent::tear_down(); } @@ -159,6 +185,110 @@ public function test_does_not_start_output_buffer_for_safari() { $this->assertSame( $level_before, $level_after, 'Output buffer should not be started for Safari.' ); } + /** + * The site editor home route on a classic theme skips DIP, because the + * editor renders the front end in a same-origin iframe and must reach its + * `contentDocument` to neutralize interactive elements. DIP would block + * that access. + * + * @ticket 65399 + * + * @dataProvider data_classic_theme_site_editor_home_routes + * + * @param array $get The $_GET state representing the home route. + */ + public function test_skips_cross_origin_isolation_for_classic_theme_site_editor_home( array $get ) { + $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'; + $_SERVER['HTTP_HOST'] = 'localhost'; + + wp_set_current_user( self::factory()->user->create( array( 'role' => 'administrator' ) ) ); + switch_theme( 'twentytwentyone' ); + set_current_screen( 'site-editor' ); + $GLOBALS['pagenow'] = 'site-editor.php'; + + unset( $_GET['p'] ); + foreach ( $get as $key => $value ) { + $_GET[ $key ] = $value; + } + + $level_before = ob_get_level(); + wp_set_up_cross_origin_isolation(); + $level_after = ob_get_level(); + + $this->assertSame( $level_before, $level_after, 'DIP should be skipped on the classic-theme site editor home route.' ); + } + + /** + * Data provider for the classic-theme site editor home route. + * + * @return array[] + */ + public function data_classic_theme_site_editor_home_routes() { + return array( + 'no p query var' => array( array() ), + 'p query var is /' => array( array( 'p' => '/' ) ), + ); + } + + /** + * The site editor on a classic theme still sets up cross-origin isolation + * for routes other than the home route. + * + * @ticket 65399 + * + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function test_sets_up_cross_origin_isolation_for_classic_theme_site_editor_non_home_route() { + $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'; + $_SERVER['HTTP_HOST'] = 'localhost'; + + wp_set_current_user( self::factory()->user->create( array( 'role' => 'administrator' ) ) ); + switch_theme( 'twentytwentyone' ); + set_current_screen( 'site-editor' ); + $GLOBALS['pagenow'] = 'site-editor.php'; + + $_GET['p'] = '/page/about'; + + $level_before = ob_get_level(); + wp_set_up_cross_origin_isolation(); + $level_after = ob_get_level(); + + $this->assertSame( $level_before + 1, $level_after, 'DIP should be set up on a non-home site editor route.' ); + + ob_end_clean(); + } + + /** + * The site editor on a block theme always sets up cross-origin isolation, + * including on the home route, because block themes do not render the + * classic site preview iframe. + * + * @ticket 65399 + * + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function test_sets_up_cross_origin_isolation_for_block_theme_site_editor_home() { + $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'; + $_SERVER['HTTP_HOST'] = 'localhost'; + + wp_set_current_user( self::factory()->user->create( array( 'role' => 'administrator' ) ) ); + switch_theme( 'twentytwentyfour' ); + set_current_screen( 'site-editor' ); + $GLOBALS['pagenow'] = 'site-editor.php'; + + unset( $_GET['p'] ); + + $level_before = ob_get_level(); + wp_set_up_cross_origin_isolation(); + $level_after = ob_get_level(); + + $this->assertSame( $level_before + 1, $level_after, 'DIP should be set up on the block-theme site editor home route.' ); + + ob_end_clean(); + } + /** * @ticket 64803 */ From 80c5bd2f8867d58dafdfb5edd7795142892d58db Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Wed, 1 Jul 2026 19:05:12 +0000 Subject: [PATCH 294/327] Media: Allow HEIC/HEIF uploads when the server lacks editor support. Enable HEIC/HEIF image uploads to succeed even when the server's image editor cannot process them, so client-side media processing can decode the file in the browser and generate the required sub-sizes. Previously, `wp_prevent_unsupported_mime_type_uploads` rejected these uploads outright with a `rest_upload_image_type_not_supported` error. See related Gutenberg work: https://github.com/WordPress/gutenberg/pull/76731. Props westonruter, swissspidy, ramonopoly. Fixes #64915. git-svn-id: https://develop.svn.wordpress.org/trunk@62616 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/post.php | 23 ++ .../rest-api/class-wp-rest-server.php | 2 +- .../class-wp-rest-attachments-controller.php | 65 ++++- .../media/wpDeleteAttachmentSourceImage.php | 95 +++++++ .../rest-api/rest-attachments-controller.php | 239 ++++++++++++++++-- 5 files changed, 393 insertions(+), 31 deletions(-) create mode 100644 tests/phpunit/tests/media/wpDeleteAttachmentSourceImage.php diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 005ccadd62e34..67b14b8e35052 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -6846,6 +6846,29 @@ function wp_delete_attachment_files( $post_id, $meta, $backup_sizes, $file ) { } } + /* + * Delete the source-format companion file. The client-side media flow can + * sideload a source-format original (such as a HEIC file) alongside a + * web-viewable derivative, recording its filename under the 'source_image' + * key. This is kept separate from 'original_image', which continues to + * point at the derivative. + */ + if ( ! empty( $meta['source_image'] ) && is_string( $meta['source_image'] ) ) { + if ( empty( $intermediate_dir ) ) { + $intermediate_dir = path_join( $uploadpath['basedir'], dirname( $file ) ); + } + + $source_image = str_replace( wp_basename( $file ), $meta['source_image'], $file ); + + if ( ! empty( $source_image ) ) { + $source_image = path_join( $uploadpath['basedir'], $source_image ); + + if ( ! wp_delete_file_from_directory( $source_image, $intermediate_dir ) ) { + $deleted = false; + } + } + } + if ( is_array( $backup_sizes ) ) { $del_dir = path_join( $uploadpath['basedir'], dirname( $meta['file'] ) ); diff --git a/src/wp-includes/rest-api/class-wp-rest-server.php b/src/wp-includes/rest-api/class-wp-rest-server.php index 9655b59af3b95..4beec177b4187 100644 --- a/src/wp-includes/rest-api/class-wp-rest-server.php +++ b/src/wp-includes/rest-api/class-wp-rest-server.php @@ -1380,7 +1380,7 @@ public function get_index( $request ) { $available['image_size_threshold'] = (int) apply_filters( 'big_image_size_threshold', 2560, array( 0, 0 ), '', 0 ); // Image output formats. - $input_formats = array( 'image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/avif', 'image/heic' ); + $input_formats = array( 'image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/avif', 'image/heic', 'image/heif' ); $output_formats = array(); foreach ( $input_formats as $mime_type ) { /** This filter is documented in wp-includes/media.php */ diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php index 8f707acaba378..e0ee88052a9c2 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -24,6 +24,29 @@ class WP_REST_Attachments_Controller extends WP_REST_Posts_Controller { */ protected $allow_batch = false; + /** + * Image size token for the source-format original preserved alongside a + * client-generated derivative (e.g. the HEIC file kept next to its JPEG). + * + * Used both in the `/sideload` route schema and when dispatching the + * sideloaded file to its metadata key, so the two never drift apart. + * + * @since 7.1.0 + * @var string + */ + const IMAGE_SIZE_SOURCE_ORIGINAL = 'source_original'; + + /** + * Metadata key holding the basename of the source-format original. + * + * Deliberately specific so it never collides with the generic `original` + * or `original_image` keys other flows write to. + * + * @since 7.1.0 + * @var string + */ + const META_KEY_SOURCE_IMAGE = 'source_image'; + /** * Registers the routes for attachments. * @@ -98,6 +121,8 @@ public function register_routes() { $valid_sizes[] = 'original'; $valid_sizes[] = 'scaled'; $valid_sizes[] = 'full'; + // Source-format original (e.g. the HEIC kept alongside its JPEG derivative). + $valid_sizes[] = self::IMAGE_SIZE_SOURCE_ORIGINAL; $items = is_string( $value ) ? array( $value ) : ( is_array( $value ) ? $value : null ); if ( null === $items ) { @@ -327,6 +352,26 @@ public function create_item_permissions_check( $request ) { $prevent_unsupported_uploads = false; } + /* + * Always allow still HEIC/HEIF uploads through even if the server's + * image editor doesn't support them. The client-side canvas fallback + * handles processing using the browser's native HEVC decoder. + * + * The '-sequence' variants (multi-frame Live Photos) are deliberately + * excluded: neither the server nor the browser fallback can process + * them yet, so they should fall through to the standard unsupported + * mime-type error rather than be stored unprocessable. + */ + $still_heic_mime_types = array( 'image/heic', 'image/heif' ); + + if ( + $prevent_unsupported_uploads && + ! empty( $files['file']['type'] ) && + in_array( $files['file']['type'], $still_heic_mime_types, true ) + ) { + $prevent_unsupported_uploads = false; + } + // If the upload is an image, check if the server can handle the mime type. if ( $prevent_unsupported_uploads && @@ -1458,7 +1503,7 @@ public function get_item_schema() { * @param string $data Supplied file data. * @param array $headers HTTP headers from the request. * @param string|null $time Optional. Time formatted in 'yyyy/mm'. Default null. - * @return array|WP_Error Data from wp_handle_sideload(). + * @return array{ file: non-empty-string, url: non-empty-string, type: non-empty-string }|WP_Error Data from wp_handle_sideload(). */ protected function upload_from_data( $data, $headers, $time = null ) { if ( empty( $data ) ) { @@ -1678,7 +1723,7 @@ public function get_collection_params() { * @param array $files Data from the `$_FILES` superglobal. * @param array $headers HTTP headers from the request. * @param string|null $time Optional. Time formatted in 'yyyy/mm'. Default null. - * @return array|WP_Error Data from wp_handle_upload(). + * @return array{ file: non-empty-string, url: non-empty-string, type: non-empty-string }|WP_Error Data from wp_handle_upload(). */ protected function upload_from_file( $files, $headers, $time = null ) { if ( empty( $files ) ) { @@ -2173,6 +2218,13 @@ public function sideload_item( WP_REST_Request $request ) { $sub_size_data['filesize'] = wp_filesize( $path ); } elseif ( 'original' === $image_size ) { $sub_size_data['file'] = wp_basename( $path ); + } elseif ( self::IMAGE_SIZE_SOURCE_ORIGINAL === $image_size ) { + /* + * Source-format original (e.g. the HEIC kept next to its JPEG + * derivative). Record the filename so finalize_item can store it + * under the dedicated source-image meta key. + */ + $sub_size_data['file'] = wp_basename( $path ); } elseif ( 'scaled' === $image_size ) { // Record the current attached file as the original. $current_file = get_attached_file( $attachment_id, true ); @@ -2328,6 +2380,15 @@ public function finalize_item( WP_REST_Request $request ) { if ( 'original' === $image_size ) { $metadata['original_image'] = $sub_size['file']; + } elseif ( self::IMAGE_SIZE_SOURCE_ORIGINAL === $image_size ) { + /* + * Source-format original: stored under its own meta key so the + * scaled-sideload flow (which writes 'original_image') cannot + * clobber it. 'original_image' keeps pointing at the + * web-viewable JPEG derivative. Cleanup on attachment delete + * is handled by wp_delete_attachment_files(). + */ + $metadata[ self::META_KEY_SOURCE_IMAGE ] = $sub_size['file']; } elseif ( 'scaled' === $image_size ) { if ( ! empty( $sub_size['original_image'] ) ) { $metadata['original_image'] = $sub_size['original_image']; diff --git a/tests/phpunit/tests/media/wpDeleteAttachmentSourceImage.php b/tests/phpunit/tests/media/wpDeleteAttachmentSourceImage.php new file mode 100644 index 0000000000000..987ba5d44385c --- /dev/null +++ b/tests/phpunit/tests/media/wpDeleteAttachmentSourceImage.php @@ -0,0 +1,95 @@ +<?php + +/** + * Tests that wp_delete_attachment_files() removes the 'source_image' companion file. + * + * @group media + * @covers ::wp_delete_attachment_files + */ +class Tests_Media_wpDeleteAttachmentSourceImage extends WP_UnitTestCase { + + public function tear_down(): void { + $this->remove_added_uploads(); + + parent::tear_down(); + } + + /** + * @ticket 64915 + */ + public function test_deletes_companion_file_recorded_in_metadata_source_image(): void { + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + $this->assertIsInt( $attachment_id ); + + $attached_file = get_attached_file( $attachment_id, true ); + $this->assertIsString( $attached_file ); + $dir = dirname( $attached_file ); + $heic_name = 'companion-' . wp_generate_password( 6, false ) . '.heic'; + $heic_path = $dir . '/' . $heic_name; + + // Create a dummy companion file on disk. + file_put_contents( $heic_path, 'test' ); + $this->assertFileExists( $heic_path, 'Test fixture should be on disk.' ); + + // Record the companion under metadata['source_image'] as the sideload route does. + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertIsArray( $metadata ); + $metadata['source_image'] = $heic_name; + wp_update_attachment_metadata( $attachment_id, $metadata ); + + wp_delete_attachment( $attachment_id, true ); + + $this->assertNull( get_post( $attachment_id ) ); + $this->assertFileDoesNotExist( $heic_path, 'Companion file should be deleted alongside the attachment.' ); + } + + /** + * @ticket 64915 + */ + public function test_noop_when_metadata_source_image_is_missing(): void { + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + $this->assertIsInt( $attachment_id ); + + // Sanity: no 'source_image' key on freshly-created metadata. + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertIsArray( $metadata ); + $this->assertArrayNotHasKey( 'source_image', $metadata ); + + // Deletion should complete cleanly even though no companion file is recorded. + wp_delete_attachment( $attachment_id, true ); + + $this->assertNull( get_post( $attachment_id ) ); + } + + /** + * Guards against $metadata['source_image'] holding a non-string value (e.g. + * the array form some flows write). Regression coverage for GB #78128. + * + * @ticket 64915 + */ + public function test_noop_when_metadata_source_image_is_not_a_string(): void { + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + $this->assertIsInt( $attachment_id ); + $attached_file = get_attached_file( $attachment_id, true ); + $this->assertIsString( $attached_file ); + + /* + * Place a real file that a buggy, guard-less implementation could try to + * delete after running wp_basename() over the array value below. + */ + $bystander_path = dirname( $attached_file ) . '/should-not-delete.heic'; + file_put_contents( $bystander_path, 'test' ); + $this->assertFileExists( $bystander_path, 'Test fixture should be on disk.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertIsArray( $metadata ); + $metadata['source_image'] = array( 'file' => 'should-not-delete.heic' ); + wp_update_attachment_metadata( $attachment_id, $metadata ); + + // Deletion should not raise (no str_replace() / file deletion on an array). + wp_delete_attachment( $attachment_id, true ); + + $this->assertNull( get_post( $attachment_id ) ); + $this->assertFileExists( $bystander_path, 'The non-string guard must prevent any file deletion.' ); + } +} diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php index ff9854994abf7..43ad46881ca09 100644 --- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php @@ -9,53 +9,54 @@ */ class WP_Test_REST_Attachments_Controller extends WP_Test_REST_Post_Type_Controller_Testcase { - protected static $superadmin_id; - protected static $editor_id; - protected static $author_id; - protected static $contributor_id; - protected static $uploader_id; - protected static $rest_after_insert_attachment_count; - protected static $rest_insert_attachment_count; + protected static int $superadmin_id; + protected static int $editor_id; + protected static int $author_id; + protected static int $contributor_id; + protected static int $uploader_id; + protected static int $rest_after_insert_attachment_count; + protected static int $rest_insert_attachment_count; /** * @var string The path to a test file. */ - private static $test_file; + private static string $test_file; /** * @var string The path to a second test file. */ - private static $test_file2; + private static string $test_file2; /** * @var string The path to the AVIF test image. */ - private static $test_avif_file; + private static string $test_avif_file; /** * @var string The path to the SVG test image. */ - private static $test_svg_file; + private static string $test_svg_file; /** * @var string The path to the test video. */ - private static $test_video_file; + private static string $test_video_file; /** * @var string The path to the test audio. */ - private static $test_audio_file; + private static string $test_audio_file; /** * @var string The path to the test RTF file. */ - private static $test_rtf_file; + private static string $test_rtf_file; /** - * @var array The recorded posts query clauses. + * @var array[] The recorded posts query clauses. Each entry is the array of + * SQL clause fragments passed to the `posts_clauses` filter. */ - protected $posts_clauses; + protected array $posts_clauses; public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) { self::$superadmin_id = $factory->user->create( @@ -3015,6 +3016,106 @@ public function test_upload_unsupported_image_type_enforced_when_generating_sub_ $this->assertSame( 'rest_upload_image_type_not_supported', $result->get_error_code() ); } + /** + * Test that still HEIC/HEIF uploads bypass the image editor support check. + * + * The browser's canvas fallback can always decode still HEIC/HEIF, so the + * upload is allowed even when the server has no editor that supports it. + * + * @ticket 64915 + * + * @dataProvider data_still_heic_mime_types + * + * @param string $mime_type Still HEIC/HEIF mime type. + */ + public function test_upload_still_heic_bypasses_unsupported_image_type_check( $mime_type ) { + wp_set_current_user( self::$author_id ); + + add_filter( 'wp_image_editors', '__return_empty_array' ); + + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_file_params( + array( + 'file' => array( + 'name' => 'canola.heic', + 'type' => $mime_type, + 'tmp_name' => DIR_TESTDATA . '/images/test-image.heic', + 'error' => 0, + 'size' => filesize( DIR_TESTDATA . '/images/test-image.heic' ), + ), + ) + ); + + $controller = new WP_REST_Attachments_Controller( 'attachment' ); + $result = $controller->create_item_permissions_check( $request ); + + // Should pass because the browser can decode still HEIC/HEIF client-side. + $this->assertTrue( $result ); + } + + /** + * Data provider for still HEIC/HEIF mime types. + * + * @return array[] + */ + public function data_still_heic_mime_types() { + return array( + 'heic' => array( 'image/heic' ), + 'heif' => array( 'image/heif' ), + ); + } + + /** + * Test that HEIC/HEIF sequence uploads do not bypass the editor support check. + * + * The multi-frame '-sequence' variants (Live Photos) cannot be processed by + * the server or decoded by the browser fallback, so they should fall through + * to the standard unsupported mime-type error rather than be stored. + * + * @ticket 64915 + * + * @dataProvider data_heic_sequence_mime_types + * + * @param string $mime_type HEIC/HEIF sequence mime type. + */ + public function test_upload_heic_sequence_is_not_bypassed( $mime_type ) { + wp_set_current_user( self::$author_id ); + + add_filter( 'wp_image_editors', '__return_empty_array' ); + + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_file_params( + array( + 'file' => array( + 'name' => 'live-photo.heic', + 'type' => $mime_type, + 'tmp_name' => DIR_TESTDATA . '/images/test-image.heic', + 'error' => 0, + 'size' => filesize( DIR_TESTDATA . '/images/test-image.heic' ), + ), + ) + ); + + $controller = new WP_REST_Attachments_Controller( 'attachment' ); + $result = $controller->create_item_permissions_check( $request ); + + // Should fail: sequences are unsupported by both the server and the fallback. + $this->assertWPError( $result ); + $this->assertSame( 'rest_upload_image_type_not_supported', $result->get_error_code() ); + } + + /** + * Data provider for HEIC/HEIF sequence mime types. + * + * @return array[] + */ + public function data_heic_sequence_mime_types() { + return array( + 'heic-sequence' => array( 'image/heic-sequence' ), + 'heif-sequence' => array( 'image/heif-sequence' ), + ); + } + /** * Test that uploading an SVG image doesn't throw a `rest_upload_image_type_not_supported` error. * @@ -3346,28 +3447,37 @@ public function test_sideload_scaled_image_requires_auth() { } /** - * Tests that the sideload endpoint accepts 'scaled' as an image size. + * Tests that the sideload endpoint accepts the expected image sizes and does + * not expose a generate_sub_sizes arg. * * The image_size argument accepts either a single size name or an array of - * size names, so it validates via a custom callback rather than an enum. + * size names, so it validates via a custom callback rather than an enum. The + * callback must accept 'scaled' and the 'source_original' source-format size, + * and reject unknown sizes. + * + * sideload_item() never reads generate_sub_sizes, so advertising it on the + * route would silently mislead clients into expecting server-side sub-size + * generation. That arg only does real work on create_item() (POST /wp/v2/media). * * @ticket 64737 + * @ticket 64915 */ - public function test_sideload_route_accepts_scaled_image_size() { + public function test_sideload_route_accepts_expected_image_sizes() { $this->enable_client_side_media_processing(); - $server = rest_get_server(); - $routes = $server->get_routes(); - - $endpoint = '/wp/v2/media/(?P<id>[\d]+)/sideload'; - $this->assertArrayHasKey( $endpoint, $routes, 'Sideload route should exist.' ); - - $route = $routes[ $endpoint ]; - $endpoint = $route[0]; - $args = $endpoint['args']; + $routes = rest_get_server()->get_routes(); + $path = '/wp/v2/media/(?P<id>[\d]+)/sideload'; + $this->assertArrayHasKey( $path, $routes, 'Sideload route should exist.' ); + $this->assertIsArray( $routes[ $path ] ); + $endpoint = array_first( $routes[ $path ] ); + $this->assertIsArray( $endpoint ); + $this->assertArrayHasKey( 'args', $endpoint, 'Route endpoint should declare args.' ); + $args = $endpoint['args']; + $this->assertIsArray( $args ); $param_name = 'image_size'; $this->assertArrayHasKey( $param_name, $args, 'Route should have image_size arg.' ); + $this->assertIsArray( $args[ $param_name ] ); $this->assertArrayHasKey( 'validate_callback', $args[ $param_name ], @@ -3381,6 +3491,10 @@ public function test_sideload_route_accepts_scaled_image_size() { $validate( 'scaled', $request, $param_name ), 'image_size validation should accept the scaled size.' ); + $this->assertTrue( + $validate( WP_REST_Attachments_Controller::IMAGE_SIZE_SOURCE_ORIGINAL, $request, $param_name ), + 'image_size validation should accept the source_original source-format size.' + ); $this->assertTrue( $validate( array( 'scaled' ), $request, $param_name ), 'image_size validation should accept an array of size names.' @@ -3389,6 +3503,75 @@ public function test_sideload_route_accepts_scaled_image_size() { $validate( 'not-a-real-size', $request, $param_name ), 'image_size validation should reject an unknown size.' ); + + $this->assertArrayNotHasKey( 'generate_sub_sizes', $args, 'Sideload route should not advertise the unused generate_sub_sizes arg.' ); + } + + /** + * Tests sideloading a 'source_original' companion file alongside its JPEG + * derivative. The HEIC filename is recorded under $metadata['source_image'] + * so it does not collide with 'original_image', which the scaled-sideload + * flow owns. Metadata is written by the finalize endpoint, not the sideload. + * + * @ticket 64915 + * @requires function imagejpeg + */ + public function test_sideload_source_original_writes_metadata_source_image(): void { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create the JPEG attachment that the HEIC will be a companion to. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + $this->assertIsArray( $data ); + $this->assertArrayHasKey( 'id', $data ); + $attachment_id = $data['id']; + $this->assertIsInt( $attachment_id ); + + $this->assertSame( 201, $response->get_status() ); + + /* + * Sideload the HEIC companion using the real HEIC fixture. `convert_format` + * is disabled so the default HEIC -> JPEG output mapping does not rename + * the file or append an alt-extension suffix. The sideload returns + * lightweight sub-size data; metadata is written by finalize. + */ + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/heic' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.heic' ); + $request->set_param( 'image_size', WP_REST_Attachments_Controller::IMAGE_SIZE_SOURCE_ORIGINAL ); + $request->set_param( 'convert_format', false ); + $request->set_body( (string) file_get_contents( DIR_TESTDATA . '/images/test-image.heic' ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Sideloading source_original should succeed.' ); + + $sub_size = $response->get_data(); + $this->assertIsArray( $sub_size ); + $this->assertSame( WP_REST_Attachments_Controller::IMAGE_SIZE_SOURCE_ORIGINAL, $sub_size['image_size'], 'Response should echo the image_size.' ); + $this->assertMatchesRegularExpression( '/canola.*\.heic$/', $sub_size['file'], 'Response file should reference the HEIC filename.' ); + + // Sideload must not write metadata; that happens in finalize. + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertArrayNotHasKey( 'source_image', $metadata, 'Sideload should not write source_image metadata.' ); + + // Finalize with the collected sub-size, which writes the metadata. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $request->set_param( 'sub_sizes', array( $sub_size ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Finalize should succeed.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id ); + $this->assertIsArray( $metadata ); + $this->assertArrayHasKey( 'source_image', $metadata, "Metadata should contain 'source_image' for the HEIC companion." ); + $this->assertMatchesRegularExpression( '/canola.*\.heic$/', $metadata['source_image'], "Metadata 'source_image' should reference the HEIC filename." ); + $this->assertArrayNotHasKey( 'original_image', $metadata, "Metadata 'original_image' should be untouched by the HEIC sideload." ); } /** From 5231afc9a36ece00ca183d70510d4e3a903562d9 Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Wed, 1 Jul 2026 20:10:01 +0000 Subject: [PATCH 295/327] REST API: Expose output format and progressive flags on attachments. Add two readonly fields to `WP_REST_Attachments_Controller`, available in the `edit` context alongside the existing `exif_orientation` field, for image attachments only: - `image_output_format` returns the resolved output MIME type when the `image_editor_output_format` filter maps the source MIME to a different one (for example JPEG to WebP). - `image_save_progressive` returns the boolean result of the `image_save_progressive` filter for the attachment's MIME type. See related Gutenberg pull request: https://github.com/WordPress/gutenberg/pull/75793 and issue: https://github.com/WordPress/gutenberg/issues/75784. Props westonruter. Fixes #65367. git-svn-id: https://develop.svn.wordpress.org/trunk@62617 602fd350-edb4-49c9-b593-d223f7449a82 --- .../rest-api/class-wp-rest-server.php | 16 -- .../class-wp-rest-attachments-controller.php | 51 +++++- .../class-wp-rest-posts-controller.php | 7 + .../rest-api/rest-attachments-controller.php | 162 +++++++++++++++++- tests/qunit/fixtures/wp-api-generated.js | 4 - 5 files changed, 218 insertions(+), 22 deletions(-) diff --git a/src/wp-includes/rest-api/class-wp-rest-server.php b/src/wp-includes/rest-api/class-wp-rest-server.php index 4beec177b4187..af73b80103546 100644 --- a/src/wp-includes/rest-api/class-wp-rest-server.php +++ b/src/wp-includes/rest-api/class-wp-rest-server.php @@ -1378,22 +1378,6 @@ public function get_index( $request ) { /** This filter is documented in wp-admin/includes/image.php */ $available['image_size_threshold'] = (int) apply_filters( 'big_image_size_threshold', 2560, array( 0, 0 ), '', 0 ); - - // Image output formats. - $input_formats = array( 'image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/avif', 'image/heic', 'image/heif' ); - $output_formats = array(); - foreach ( $input_formats as $mime_type ) { - /** This filter is documented in wp-includes/media.php */ - $output_formats = apply_filters( 'image_editor_output_format', $output_formats, '', $mime_type ); - } - $available['image_output_formats'] = (object) $output_formats; - - /** This filter is documented in wp-includes/class-wp-image-editor-gd.php */ - $available['jpeg_interlaced'] = (bool) apply_filters( 'image_save_progressive', false, 'image/jpeg' ); - /** This filter is documented in wp-includes/class-wp-image-editor-gd.php */ - $available['png_interlaced'] = (bool) apply_filters( 'image_save_progressive', false, 'image/png' ); - /** This filter is documented in wp-includes/class-wp-image-editor-gd.php */ - $available['gif_interlaced'] = (bool) apply_filters( 'image_save_progressive', false, 'image/gif' ); } $response = new WP_REST_Response( $available ); diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php index e0ee88052a9c2..b3450ad76a921 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -1156,7 +1156,8 @@ public function prepare_item_for_response( $item, $request ) { $response = parent::prepare_item_for_response( $post, $request ); $fields = $this->get_fields_for_response( $request ); - $data = $response->get_data(); + /** @var array<string, mixed> $data */ + $data = $response->get_data(); if ( in_array( 'description', $fields, true ) ) { $data['description'] = array( @@ -1297,6 +1298,40 @@ public function prepare_item_for_response( $item, $request ) { $data['exif_orientation'] = $orientation; } + if ( wp_attachment_is_image( $post ) ) { + $mime_type = get_post_mime_type( $post ); + + /* + * Per-file output format for images, evaluated with the real filename + * and MIME type so plugins filtering image_editor_output_format can + * make per-attachment decisions (e.g. JPEG -> WebP). Resolved the same + * way WP_Image_Editor::set_quality() resolves the output format. + */ + if ( in_array( 'image_output_format', $fields, true ) ) { + $filename = get_attached_file( $post->ID ); + + /** This filter is documented in wp-includes/media.php */ + $output_formats = apply_filters( + 'image_editor_output_format', + array( $mime_type => $mime_type ), + $filename ? $filename : '', + $mime_type + ); + + $output_mime = $output_formats[ $mime_type ] ?? $mime_type; + $data['image_output_format'] = ( $output_mime !== $mime_type ) ? $output_mime : null; + } + + /* + * Per-file progressive/interlaced encoding flag for images, evaluated + * against the attachment's MIME type. + */ + if ( in_array( 'image_save_progressive', $fields, true ) ) { + /** This filter is documented in wp-includes/class-wp-image-editor-gd.php */ + $data['image_save_progressive'] = (bool) apply_filters( 'image_save_progressive', false, $mime_type ); + } + } + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->filter_response_by_context( $data, $context ); @@ -1487,6 +1522,20 @@ public function get_item_schema() { 'readonly' => true, ); + $schema['properties']['image_output_format'] = array( + 'description' => __( 'The output MIME type this image should be converted to, based on the image_editor_output_format filter. Null if no conversion is needed.' ), + 'type' => array( 'string', 'null' ), + 'context' => array( 'edit' ), + 'readonly' => true, + ); + + $schema['properties']['image_save_progressive'] = array( + 'description' => __( 'Whether to use progressive/interlaced encoding when saving this image.' ), + 'type' => 'boolean', + 'context' => array( 'edit' ), + 'readonly' => true, + ); + unset( $schema['properties']['password'] ); $this->schema = $schema; diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php index 59d507aebf453..ee3e6b4959869 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php @@ -2393,6 +2393,13 @@ protected function get_available_actions( $post, $request ) { * @since 4.7.0 * * @return array Item schema data. + * + * @phpstan-return array{ + * title: non-empty-string, + * type: non-empty-string, + * properties: array<string, array<string, mixed>>, + * ... + * } */ public function get_item_schema() { if ( $this->schema ) { diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php index 43ad46881ca09..cd9b4bdad556f 100644 --- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php @@ -1952,10 +1952,12 @@ public function test_get_item_schema() { $response = rest_get_server()->dispatch( $request ); $data = $response->get_data(); $properties = $data['schema']['properties']; - $this->assertCount( 32, $properties ); + $this->assertCount( 34, $properties ); $this->assertArrayHasKey( 'author', $properties ); $this->assertArrayHasKey( 'alt_text', $properties ); $this->assertArrayHasKey( 'exif_orientation', $properties ); + $this->assertArrayHasKey( 'image_output_format', $properties ); + $this->assertArrayHasKey( 'image_save_progressive', $properties ); $this->assertArrayHasKey( 'filename', $properties ); $this->assertArrayHasKey( 'filesize', $properties ); $this->assertArrayHasKey( 'caption', $properties ); @@ -1993,6 +1995,164 @@ public function test_get_item_schema() { $this->assertArrayHasKey( 'class_list', $properties ); } + /** + * Tests the image_output_format / image_save_progressive schema properties. + * + * @ticket 65367 + * + * @covers WP_REST_Attachments_Controller::get_item_schema + */ + public function test_image_output_format_and_progressive_schema(): void { + $request = new WP_REST_Request( 'OPTIONS', '/wp/v2/media' ); + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + $properties = $data['schema']['properties']; + + $this->assertArrayHasKey( 'image_output_format', $properties ); + $this->assertSame( array( 'string', 'null' ), $properties['image_output_format']['type'] ); + $this->assertSame( array( 'edit' ), $properties['image_output_format']['context'] ); + $this->assertTrue( $properties['image_output_format']['readonly'] ); + + $this->assertArrayHasKey( 'image_save_progressive', $properties ); + $this->assertSame( 'boolean', $properties['image_save_progressive']['type'] ); + $this->assertSame( array( 'edit' ), $properties['image_save_progressive']['context'] ); + $this->assertTrue( $properties['image_save_progressive']['readonly'] ); + } + + /** + * Verifies image_output_format is null by default (no conversion needed) and + * image_save_progressive defaults to false on a freshly uploaded JPEG. + * + * @ticket 65367 + * + * @covers WP_REST_Attachments_Controller::create_item + * @covers WP_REST_Attachments_Controller::prepare_item_for_response + */ + public function test_image_output_format_and_progressive_defaults_in_create_response(): void { + wp_set_current_user( self::$superadmin_id ); + + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_param( 'context', 'edit' ); + $request->set_param( 'generate_sub_sizes', false ); + $request->set_body( file_get_contents( DIR_TESTDATA . '/images/canola.jpg' ) ); + + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + + $this->assertSame( 201, $response->get_status() ); + $this->assertArrayHasKey( 'image_output_format', $data ); + $this->assertNull( $data['image_output_format'] ); + $this->assertArrayHasKey( 'image_save_progressive', $data ); + $this->assertFalse( $data['image_save_progressive'] ); + } + + /** + * Verifies image_output_format reflects an image_editor_output_format filter + * that remaps JPEG to WebP, and that the filter sees the real attached + * filename and MIME type. + * + * @ticket 65367 + * + * @covers WP_REST_Attachments_Controller::prepare_item_for_response + */ + public function test_image_output_format_with_custom_filter(): void { + wp_set_current_user( self::$superadmin_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + + $captured = array(); + add_filter( + 'image_editor_output_format', + static function ( $formats, $filename, $mime_type ) use ( &$captured ) { + $captured['filename'] = $filename; + $captured['mime_type'] = $mime_type; + $formats['image/jpeg'] = 'image/webp'; + return $formats; + }, + 10, + 3 + ); + + $request = new WP_REST_Request( 'GET', '/wp/v2/media/' . $attachment_id ); + $request->set_param( 'context', 'edit' ); + + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + + $this->assertSame( 200, $response->get_status() ); + $this->assertArrayHasKey( 'image_output_format', $data ); + $this->assertSame( 'image/webp', $data['image_output_format'] ); + + // The filter must be invoked with the real attached filename and MIME type. + $this->assertStringEndsWith( '.jpg', (string) $captured['filename'] ); + $this->assertSame( 'image/jpeg', $captured['mime_type'] ); + } + + /** + * Verifies image_save_progressive surfaces the filter result for the + * attachment's MIME type. + * + * @ticket 65367 + * + * @covers WP_REST_Attachments_Controller::prepare_item_for_response + */ + public function test_image_save_progressive_with_custom_filter(): void { + wp_set_current_user( self::$superadmin_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + + add_filter( + 'image_save_progressive', + static function ( $progressive, $mime_type ) { + return 'image/jpeg' === $mime_type; + }, + 10, + 2 + ); + + $request = new WP_REST_Request( 'GET', '/wp/v2/media/' . $attachment_id ); + $request->set_param( 'context', 'edit' ); + + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + + $this->assertSame( 200, $response->get_status() ); + $this->assertArrayHasKey( 'image_save_progressive', $data ); + $this->assertTrue( $data['image_save_progressive'] ); + } + + /** + * Non-image attachments must not surface the image_* fields. + * + * @ticket 65367 + * + * @covers WP_REST_Attachments_Controller::prepare_item_for_response + */ + public function test_image_output_format_skipped_for_non_image(): void { + wp_set_current_user( self::$superadmin_id ); + + $attachment_id = self::factory()->attachment->create_object( + DIR_TESTDATA . '/uploads/dashicons.woff', + 0, + array( + 'post_mime_type' => 'application/font-woff', + 'post_type' => 'attachment', + ) + ); + + $request = new WP_REST_Request( 'GET', '/wp/v2/media/' . $attachment_id ); + $request->set_param( 'context', 'edit' ); + + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + + $this->assertSame( 200, $response->get_status() ); + $this->assertArrayNotHasKey( 'image_output_format', $data ); + $this->assertArrayNotHasKey( 'image_save_progressive', $data ); + } + public function test_get_additional_field_registration() { $schema = array( diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js index cb8e547962800..3ad953b9222ff 100644 --- a/tests/qunit/fixtures/wp-api-generated.js +++ b/tests/qunit/fixtures/wp-api-generated.js @@ -12913,10 +12913,6 @@ mockedApiResponse.Schema = { } }, "image_size_threshold": 2560, - "image_output_formats": {}, - "jpeg_interlaced": false, - "png_interlaced": false, - "gif_interlaced": false, "site_logo": 0, "site_icon": 0, "site_icon_url": "" From a42f847914ce8b37eebf578080c34c9e7e2a59f8 Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Wed, 1 Jul 2026 20:48:41 +0000 Subject: [PATCH 296/327] Code Quality: Add PHPStan type coverage for media and upload functions. Add `@phpstan-return`/`@phpstan-param` annotations describing the array shapes returned and accepted by various media files. Also load the `phpstan/phpstan-phpunit` extension so PHPUnit assertions narrow types during analysis. These changes are documentation and tooling only, with no runtime effect, and let the affected functions pass a higher PHPStan rule level. Props westonruter. See #64915. git-svn-id: https://develop.svn.wordpress.org/trunk@62618 602fd350-edb4-49c9-b593-d223f7449a82 --- composer.json | 1 + phpstan.neon.dist | 6 ++++ src/wp-admin/includes/file.php | 9 +++++ src/wp-includes/functions.php | 16 +++++++++ src/wp-includes/post.php | 33 +++++++++++++++++++ .../rest-api/class-wp-rest-request.php | 18 ++++++++++ 6 files changed, 83 insertions(+) diff --git a/composer.json b/composer.json index 6500e7ccbf8af..a309ae762ac1a 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "wp-coding-standards/wpcs": "~3.3.0", "phpcompatibility/phpcompatibility-wp": "~2.1.3", "phpstan/phpstan": "2.2.2", + "phpstan/phpstan-phpunit": "2.0.16", "yoast/phpunit-polyfills": "^1.1.0" }, "config": { diff --git a/phpstan.neon.dist b/phpstan.neon.dist index e74e6ec1a441b..7ea25ab18e205 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -8,6 +8,12 @@ includes: # The base configuration file for using PHPStan with the WordPress core codebase. - tests/phpstan/base.neon + # Type-specifying extension so PHPUnit assertions (e.g. assertArrayHasKey(), + # assertInstanceOf(), assertNotNull()) narrow types in the analysis. Only the + # extension is included, not phpstan-phpunit's rules.neon, to avoid introducing + # new strict rules. + - vendor/phpstan/phpstan-phpunit/extension.neon + # The baseline file includes preexisting errors in the codebase that should be ignored. # https://phpstan.org/user-guide/baseline - tests/phpstan/baseline.php diff --git a/src/wp-admin/includes/file.php b/src/wp-admin/includes/file.php index 0c6d968ea02d3..d7c771444ac98 100644 --- a/src/wp-admin/includes/file.php +++ b/src/wp-admin/includes/file.php @@ -801,6 +801,9 @@ function validate_file_to_edit( $file, $allowed_files = array() ) { * @type string $url URL of the newly-uploaded file. * @type string $type Mime type of the newly-uploaded file. * } + * + * @phpstan-return array{ file: non-empty-string, url: non-empty-string, type: non-empty-string } + * |array{ error: non-empty-string } */ function _wp_handle_upload( &$file, $overrides, $time, $action ) { // The default error handler. @@ -1094,6 +1097,9 @@ function wp_handle_upload_error( &$file, $message ) { * See _wp_handle_upload() for accepted values. * @param string|null $time Optional. Time formatted in 'yyyy/mm'. Default null. * @return array See _wp_handle_upload() for return value. + * + * @phpstan-return array{ file: non-empty-string, url: non-empty-string, type: non-empty-string } + * |array{ error: non-empty-string } */ function wp_handle_upload( &$file, $overrides = false, $time = null ) { /* @@ -1121,6 +1127,9 @@ function wp_handle_upload( &$file, $overrides = false, $time = null ) { * See _wp_handle_upload() for accepted values. * @param string|null $time Optional. Time formatted in 'yyyy/mm'. Default null. * @return array See _wp_handle_upload() for return value. + * + * @phpstan-return array{ file: non-empty-string, url: non-empty-string, type: non-empty-string } + * |array{ error: non-empty-string } */ function wp_handle_sideload( &$file, $overrides = false, $time = null ) { /* diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index 64dce4a159755..b576896d9904b 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -2341,6 +2341,14 @@ function win_is_writable( $path ) { * @see wp_upload_dir() * * @return array See wp_upload_dir() for description. + * @phpstan-return array{ + * path: non-empty-string, + * url: non-empty-string, + * subdir: non-empty-string, + * basedir: non-empty-string, + * baseurl: non-empty-string, + * } + * |array{ error: non-empty-string } */ function wp_get_upload_dir() { return wp_upload_dir( null, false ); @@ -2382,6 +2390,14 @@ function wp_get_upload_dir() { * @type string $baseurl URL path without subdir. * @type string|false $error False or error message. * } + * @phpstan-return array{ + * path: non-empty-string, + * url: non-empty-string, + * subdir: non-empty-string, + * basedir: non-empty-string, + * baseurl: non-empty-string, + * } + * |array{ error: non-empty-string } */ function wp_upload_dir( $time = null, $create_dir = true, $refresh_cache = false ) { static $cache = array(), $tested_paths = array(); diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 67b14b8e35052..4f953df0eaeb0 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -6911,6 +6911,39 @@ function wp_delete_attachment_files( $post_id, $meta, $backup_sizes, $file ) { * @type array $image_meta Image metadata. * @type int $filesize File size of the attachment. * } + * + * @phpstan-return array{ + * width?: int<1, max>, + * height?: int<1, max>, + * file?: non-empty-string, + * filesize?: int<0, max>, + * original_image?: non-empty-string, + * source_image?: non-empty-string, + * sizes?: array<non-empty-string, array{ + * file: non-empty-string, + * width: int<1, max>, + * height: int<1, max>, + * 'mime-type': non-empty-string, + * filesize?: int<0, max>, + * ... + * }>, + * image_meta?: array{ + * aperture: numeric-string|int, + * credit: string, + * camera: string, + * caption: string, + * created_timestamp: numeric-string|int, + * copyright: string, + * focal_length: numeric-string|int, + * iso: numeric-string|int, + * shutter_speed: numeric-string|int, + * title: string, + * orientation: numeric-string|int, + * keywords: list<string>, + * alt: string, + * }, + * ... + * }|false */ function wp_get_attachment_metadata( $attachment_id = 0, $unfiltered = false ) { $attachment_id = (int) $attachment_id; diff --git a/src/wp-includes/rest-api/class-wp-rest-request.php b/src/wp-includes/rest-api/class-wp-rest-request.php index 7148d931f7149..a6169ada2c05b 100644 --- a/src/wp-includes/rest-api/class-wp-rest-request.php +++ b/src/wp-includes/rest-api/class-wp-rest-request.php @@ -588,6 +588,15 @@ public function set_body_params( $params ) { * @since 4.4.0 * * @return array Parameter map of key to value. + * + * @phpstan-return array<string, array{ + * name: non-empty-string, + * type: non-empty-string, + * size: non-negative-int, + * tmp_name: non-empty-string, + * error: int<0, 8>, + * full_path?: non-empty-string, + * }> */ public function get_file_params() { return $this->params['FILES']; @@ -601,6 +610,15 @@ public function get_file_params() { * @since 4.4.0 * * @param array $params Parameter map of key to value. + * + * @phpstan-param array<string, array{ + * name: non-empty-string, + * type: non-empty-string, + * size: non-negative-int, + * tmp_name: non-empty-string, + * error: int<0, 8>, + * full_path?: non-empty-string, + * }> $params */ public function set_file_params( $params ) { $this->params['FILES'] = $params; From 27deb596c302868a509abe8ab9392854d24b49bc Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Wed, 1 Jul 2026 21:32:34 +0000 Subject: [PATCH 297/327] REST API: Add dimension validation to sideload endpoint. Validate uploaded image dimensions in the `wp/v2/media/<id>/sideload` endpoint before metadata is written, ensuring sideloaded files match the requested `image_size`. A new private `validate_image_dimensions()` helper on `WP_REST_Attachments_Controller` enforces: - The `original` size must match the original attachment dimensions exactly. - The `full` and `scaled` sizes require positive dimensions only. - Regular registered sizes must not exceed the registered sub-size maximums, with a 1px tolerance for rounding differences. Follow-up to [62428]. Props apermo, westonruter. Fixes #64798. git-svn-id: https://develop.svn.wordpress.org/trunk@62619 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/media.php | 20 +- .../class-wp-rest-attachments-controller.php | 158 ++++++++++++++++ .../rest-api/rest-attachments-controller.php | 177 +++++++++++++++++- 3 files changed, 353 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index f8cf35c9ac771..b60a4dd72c371 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -16,9 +16,17 @@ * * @since 4.7.0 * + * @see add_image_size() + * * @global array $_wp_additional_image_sizes * * @return array Additional images size data. + * + * @phpstan-return array<string, array{ + * width: non-negative-int, + * height: non-negative-int, + * crop: array{ 'left'|'center'|'right', 'top'|'center'|'bottom' }|bool, + * }> */ function wp_get_additional_image_sizes() { global $_wp_additional_image_sizes; @@ -296,6 +304,10 @@ function image_downsize( $id, $size = 'medium' ) { * @type string $0 The x crop position. Accepts 'left', 'center', or 'right'. * @type string $1 The y crop position. Accepts 'top', 'center', or 'bottom'. * } + * + * @phpstan-param non-negative-int $width + * @phpstan-param non-negative-int $height + * @phpstan-param array{ 'left'|'center'|'right', 'top'|'center'|'bottom' }|bool $crop */ function add_image_size( $name, $width = 0, $height = 0, $crop = false ) { global $_wp_additional_image_sizes; @@ -908,8 +920,14 @@ function get_intermediate_image_sizes() { * * @return array[] Associative array of arrays of image sub-size information, * keyed by image size name. + * + * @phpstan-return array<string, array{ + * width: non-negative-int, + * height: non-negative-int, + * crop: array{ 'left'|'center'|'right', 'top'|'center'|'bottom' }|bool, + * }> */ -function wp_get_registered_image_subsizes() { +function wp_get_registered_image_subsizes(): array { $additional_sizes = wp_get_additional_image_sizes(); $all_sizes = array(); diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php index b3450ad76a921..9868d76b09965 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -2166,6 +2166,123 @@ public function sideload_item_permissions_check( $request ) { return $this->edit_media_item_permissions_check( $request ); } + /** + * Validates that uploaded image dimensions are appropriate for the specified image size. + * + * @since 7.1.0 + * + * @param int $width Uploaded image width. + * @param int $height Uploaded image height. + * @param string $image_size The target image size name. + * @param int $attachment_id The attachment ID. + * @return true|WP_Error True if valid, WP_Error if invalid. + */ + private function validate_image_dimensions( int $width, int $height, string $image_size, int $attachment_id ) { + // All image sizes require positive dimensions. + if ( $width <= 0 || $height <= 0 ) { + return new WP_Error( + 'rest_upload_invalid_dimensions', + __( 'Uploaded image must have positive dimensions.' ), + array( 'status' => 400 ) + ); + } + + // 'original' size: should match original attachment dimensions. + if ( 'original' === $image_size ) { + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + if ( is_array( $metadata ) && isset( $metadata['width'], $metadata['height'] ) ) { + $expected_width = (int) $metadata['width']; + $expected_height = (int) $metadata['height']; + + if ( $width !== $expected_width || $height !== $expected_height ) { + return new WP_Error( + 'rest_upload_dimension_mismatch', + sprintf( + /* translators: 1: Actual width, 2: actual height, 3: expected width, 4: expected height. */ + __( 'Uploaded image dimensions (%1$dx%2$d) do not match original image dimensions (%3$dx%4$d).' ), + $width, + $height, + $expected_width, + $expected_height + ), + array( 'status' => 400 ) + ); + } + } + return true; + } + + // 'full' size (PDF thumbnails) and 'scaled': no further constraints. + if ( in_array( $image_size, array( 'full', 'scaled' ), true ) ) { + return true; + } + + // Regular image sizes: validate against registered size constraints. + $registered_sizes = wp_get_registered_image_subsizes(); + + if ( ! isset( $registered_sizes[ $image_size ] ) ) { + return new WP_Error( + 'rest_upload_unknown_size', + __( 'Unknown image size.' ), + array( 'status' => 400 ) + ); + } + + $size_data = $registered_sizes[ $image_size ]; + $max_width = (int) $size_data['width']; + $max_height = (int) $size_data['height']; + + // Validate dimensions don't exceed the registered size maximums. + // Allow 1px tolerance for rounding differences. + $tolerance = 1; + + if ( $this->dimension_exceeds_max( $width, $max_width, $tolerance ) ) { + return new WP_Error( + 'rest_upload_dimension_mismatch', + sprintf( + /* translators: 1: Image size name, 2: maximum width, 3: actual width. */ + __( 'Uploaded image width (%3$d) exceeds maximum for "%1$s" size (%2$d).' ), + $image_size, + $max_width, + $width + ), + array( 'status' => 400 ) + ); + } + + if ( $this->dimension_exceeds_max( $height, $max_height, $tolerance ) ) { + return new WP_Error( + 'rest_upload_dimension_mismatch', + sprintf( + /* translators: 1: Image size name, 2: maximum height, 3: actual height. */ + __( 'Uploaded image height (%3$d) exceeds maximum for "%1$s" size (%2$d).' ), + $image_size, + $max_height, + $height + ), + array( 'status' => 400 ) + ); + } + + return true; + } + + /** + * Checks whether a dimension exceeds the maximum allowed value. + * + * A maximum of zero means the dimension is unconstrained. + * + * @since 7.1.0 + * + * @param int $value The actual dimension in pixels. + * @param int $max The maximum allowed dimension in pixels. Zero means no constraint. + * @param int $tolerance Pixel tolerance allowed for rounding differences. + * @return bool True if the value exceeds the maximum plus tolerance. + */ + private function dimension_exceeds_max( int $value, int $max, int $tolerance ): bool { + return $max > 0 && $value > $max + $tolerance; + } + /** * Side-loads a media file without creating a new attachment. * @@ -2243,8 +2360,49 @@ public function sideload_item( WP_REST_Request $request ) { $type = $file['type']; $path = $file['file']; + /** @var non-empty-string $image_size */ $image_size = $request['image_size']; + /* + * Validate raster sub-sizes before storing them. Source-format companion + * originals (e.g. a HEIC or JXL kept next to its JPEG derivative) are + * exempt: their dimensions are neither validated nor recorded, and the + * source format may not be readable by wp_getimagesize() at all. + */ + if ( self::IMAGE_SIZE_SOURCE_ORIGINAL !== $image_size ) { + /* + * Read the dimensions up front. A file whose dimensions cannot be + * read is corrupted or an unsupported format and must be rejected + * rather than silently stored with zero dimensions. + */ + $size = wp_getimagesize( $path ); + + if ( ! $size ) { + // Clean up the uploaded file. + wp_delete_file( $path ); + return new WP_Error( + 'rest_upload_invalid_image', + __( 'Could not read image dimensions. The file may be corrupted or an unsupported format.' ), + array( 'status' => 400 ) + ); + } + + /* + * Validate the dimensions match the expected size. An array + * $image_size represents multiple registered sizes sharing a single + * file; those are handled by the per-size branch below, so only + * scalar sizes are validated here. + */ + if ( ! is_array( $image_size ) ) { + $validation = $this->validate_image_dimensions( $size[0], $size[1], $image_size, $attachment_id ); + if ( is_wp_error( $validation ) ) { + // Clean up the uploaded file. + wp_delete_file( $path ); + return $validation; + } + } + } + // Build sub-size data to return to the client. // The client accumulates these and sends them all to the finalize // endpoint, which writes the metadata in a single operation. This diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php index cd9b4bdad556f..cd9c1ff92756d 100644 --- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php @@ -3823,6 +3823,179 @@ public function test_sideload_scaled_unique_filename_conflict() { $this->assertMatchesRegularExpression( '/canola-scaled-\d+\.jpg$/', $basename, 'Scaled filename should have numeric suffix when file conflicts with a different attachment.' ); } + /** + * Tests that sideloading rejects an image whose dimensions exceed the + * registered maximum for the target image size. + * + * @ticket 64798 + * @covers WP_REST_Attachments_Controller::sideload_item + * @covers WP_REST_Attachments_Controller::validate_image_dimensions + * @requires function imagejpeg + */ + public function test_sideload_item_rejects_oversized_dimensions() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment from canola.jpg (640x480). + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + // Sideload the 640x480 image claiming it is a thumbnail (150x150 max). + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-150x150.jpg' ); + $request->set_param( 'image_size', 'thumbnail' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 400, $response->get_status(), 'Oversized sideload should be rejected.' ); + $this->assertSame( 'rest_upload_dimension_mismatch', $response->get_data()['code'] ); + } + + /** + * Tests that sideloading accepts an image whose dimensions fit within the + * registered maximum for the target image size. + * + * @ticket 64798 + * @covers WP_REST_Attachments_Controller::sideload_item + * @covers WP_REST_Attachments_Controller::validate_image_dimensions + * @requires function imagejpeg + */ + public function test_sideload_item_accepts_valid_dimensions() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment from canola.jpg (640x480). + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + // test-image.jpg is 50x50, well within the thumbnail maximum (150x150). + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=test-thumbnail.jpg' ); + $request->set_param( 'image_size', 'thumbnail' ); + $request->set_body( file_get_contents( DIR_TESTDATA . '/images/test-image.jpg' ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Valid thumbnail sideload should succeed.' ); + } + + /** + * Tests that sideloading the 'original' size rejects an image whose + * dimensions do not match the original attachment dimensions. + * + * @ticket 64798 + * @covers WP_REST_Attachments_Controller::sideload_item + * @covers WP_REST_Attachments_Controller::validate_image_dimensions + * @requires function imagejpeg + */ + public function test_sideload_item_rejects_original_dimension_mismatch() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment from canola.jpg (640x480). + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + // Sideload a 50x50 image as the original; it does not match 640x480. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_param( 'image_size', 'original' ); + $request->set_body( file_get_contents( DIR_TESTDATA . '/images/test-image.jpg' ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 400, $response->get_status(), 'Mismatched original sideload should be rejected.' ); + $this->assertSame( 'rest_upload_dimension_mismatch', $response->get_data()['code'] ); + } + + /** + * Tests that sideloading the 'original' size accepts an image whose + * dimensions match the original attachment dimensions. + * + * @ticket 64798 + * @covers WP_REST_Attachments_Controller::sideload_item + * @covers WP_REST_Attachments_Controller::validate_image_dimensions + * @requires function imagejpeg + */ + public function test_sideload_item_accepts_matching_original_dimensions() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment from canola.jpg (640x480). + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + // Sideload the same 640x480 image as the original; dimensions match. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-original.jpg' ); + $request->set_param( 'image_size', 'original' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 200, $response->get_status(), 'Matching original sideload should succeed.' ); + } + + /** + * Tests that sideloading a file whose dimensions cannot be read is rejected + * rather than stored with zero dimensions. + * + * The body is a JFIF header with no frame data: its magic bytes identify it + * as a JPEG so the upload itself succeeds, but wp_getimagesize() cannot + * determine dimensions, which is the corrupted/unsupported-format case. + * + * @ticket 64798 + * @covers WP_REST_Attachments_Controller::sideload_item + */ + public function test_sideload_item_rejects_unreadable_image() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create an attachment from canola.jpg (640x480). + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + + // A JPEG SOI + JFIF APP0 marker followed immediately by EOI: valid magic + // bytes, but no SOF marker, so wp_getimagesize() returns false. + $unreadable = "\xFF\xD8\xFF\xE0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xFF\xD9"; + + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-thumbnail.jpg' ); + $request->set_param( 'image_size', 'thumbnail' ); + $request->set_body( $unreadable ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertSame( 400, $response->get_status(), 'Unreadable image sideload should be rejected.' ); + $this->assertSame( 'rest_upload_invalid_image', $response->get_data()['code'] ); + } + /** * Tests that the finalize endpoint triggers wp_generate_attachment_metadata. * @@ -3950,11 +4123,13 @@ public function test_finalize_writes_regular_sub_sizes(): void { $this->assertSame( 201, $response->get_status() ); // Sideload a thumbnail sub-size; the response carries its metadata. + // test-image.jpg is 50x50, within the registered thumbnail maximum + // (150x150), so it passes sideload dimension validation. $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); $request->set_header( 'Content-Type', 'image/jpeg' ); $request->set_header( 'Content-Disposition', 'attachment; filename=canola-thumb.jpg' ); $request->set_param( 'image_size', 'thumbnail' ); - $request->set_body( (string) file_get_contents( self::$test_file ) ); + $request->set_body( (string) file_get_contents( DIR_TESTDATA . '/images/test-image.jpg' ) ); $response = rest_get_server()->dispatch( $request ); $this->assertSame( 200, $response->get_status(), 'Sideloading a thumbnail should succeed.' ); From 1aff0216162754308b9254c64026ef147d0c9254 Mon Sep 17 00:00:00 2001 From: Ben Dwyer <scruffian@git.wordpress.org> Date: Wed, 1 Jul 2026 23:09:17 +0000 Subject: [PATCH 298/327] [REVERT] Toolbar: Show the site icon in the admin bar when one is set. Reverts #62614. The patch proposes accidentally undid changes from #62592 and #62543. See #62614. git-svn-id: https://develop.svn.wordpress.org/trunk@62620 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/admin-bar.php | 25 ++------ src/wp-includes/css/admin-bar.css | 48 ++++------------ tests/phpunit/tests/adminbar.php | 94 ------------------------------- 3 files changed, 14 insertions(+), 153 deletions(-) diff --git a/src/wp-includes/admin-bar.php b/src/wp-includes/admin-bar.php index 7975ec8cd85ca..2ab30a24c27ee 100644 --- a/src/wp-includes/admin-bar.php +++ b/src/wp-includes/admin-bar.php @@ -276,7 +276,7 @@ function wp_admin_bar_my_account_item( $wp_admin_bar ) { /* translators: %s: Current user's display name. */ $howdy = sprintf( __( 'Howdy, %s' ), '<span class="display-name">' . wp_get_current_user()->display_name . '</span>' ); - $avatar = get_avatar( $user_id, 26 ); + $avatar = get_avatar( $user_id, 28 ); $wp_admin_bar->add_node( array( 'id' => 'my-account', @@ -385,32 +385,15 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) { } $title = wp_html_excerpt( $blogname, 40, '…' ); - $meta = array( - 'menu_title' => $title, - ); - - if ( ! is_network_admin() && ! is_user_admin() ) { - /** This filter is documented in wp-includes/admin-bar.php */ - $show_site_icons = apply_filters( 'wp_admin_bar_show_site_icons', true ); - - if ( true === $show_site_icons && has_site_icon() ) { - $site_icon = sprintf( - '<img class="site-icon" src="%s" srcset="%s 2x" alt="" width="20" height="20" />', - esc_url( get_site_icon_url( 32 ) ), - esc_url( get_site_icon_url( 64 ) ) - ); - - $title = $site_icon . $title; - $meta['class'] = 'has-site-icon'; - } - } $wp_admin_bar->add_node( array( 'id' => 'site-name', 'title' => $title, 'href' => ( is_admin() || ! current_user_can( 'read' ) ) ? home_url( '/' ) : admin_url(), - 'meta' => $meta, + 'meta' => array( + 'menu_title' => $title, + ), ) ); diff --git a/src/wp-includes/css/admin-bar.css b/src/wp-includes/css/admin-bar.css index af89900ef1642..7ab855fd919bb 100644 --- a/src/wp-includes/css/admin-bar.css +++ b/src/wp-includes/css/admin-bar.css @@ -455,6 +455,7 @@ html:lang(he-il) .rtl #wpadminbar * { top: 4px; width: 64px; height: 64px; + border-radius: 50%; } #wpadminbar #wp-admin-bar-user-info a { @@ -481,9 +482,10 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-my-account.with-avatar > .ab-empty-item img, #wpadminbar #wp-admin-bar-my-account.with-avatar > a img { width: auto; - height: 16px; + height: 20px; padding: 0; - border: 1px solid #8c8f94; + border: 1px solid #2c353b; + border-radius: 50%; background: #f0f0f1; line-height: 1.84615384; vertical-align: middle; @@ -537,10 +539,6 @@ html:lang(he-il) .rtl #wpadminbar * { margin: 0 8px 2px -2px; } -#wpadminbar .quicklinks li img.blavatar { - border-radius: 2px; -} - #wpadminbar .quicklinks li div.blavatar:before { content: "\f120"; content: "\f120" / ''; @@ -586,23 +584,6 @@ html:lang(he-il) .rtl #wpadminbar * { content: "\f102" / ''; } -#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item { - display: flex; - align-items: center; - gap: 6px; -} - -#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item:before { - content: none; -} - -#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon { - width: 20px; - height: 20px; - background: #f0f0f1; /* matching my-account (user avatar) node's background */ - border-radius: 2px; -} - /** @@ -924,7 +905,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-edit > .ab-item:before, #wpadminbar #wp-admin-bar-my-sites > .ab-item:before, - #wpadminbar #wp-admin-bar-site-name:not(.has-site-icon) > .ab-item:before, + #wpadminbar #wp-admin-bar-site-name > .ab-item:before, #wpadminbar #wp-admin-bar-site-editor > .ab-item:before, #wpadminbar #wp-admin-bar-customize > .ab-item:before, #wpadminbar #wp-admin-bar-my-account > .ab-item:before, @@ -939,16 +920,6 @@ html:lang(he-il) .rtl #wpadminbar * { -moz-osx-font-smoothing: grayscale; } - #wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon { - position: absolute; - top: 9px; - left: 12px; - width: 28px; - height: 28px; - margin: 0; - border-radius: 4px; - } - #wpadminbar #wp-admin-bar-appearance { margin-top: 0; } @@ -1000,7 +971,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-my-account > a { position: relative; white-space: nowrap; - text-indent: 150%; /* More than 100% indention is needed since this element has padding */ + text-indent: 150%; /* More than 100% indentation is needed since this element has padding */ width: 28px; padding: 0 10px; overflow: hidden; /* Prevent link text from forcing horizontal scrolling on mobile */ @@ -1008,10 +979,11 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { position: absolute; - top: 13px; + top: 12px; right: 10px; - width: 26px; - height: 26px; + width: 28px; + height: 28px; + border-radius: 50%; } #wpadminbar #wp-admin-bar-user-actions.ab-submenu { diff --git a/tests/phpunit/tests/adminbar.php b/tests/phpunit/tests/adminbar.php index fb29eaf39af42..27308bd82760e 100644 --- a/tests/phpunit/tests/adminbar.php +++ b/tests/phpunit/tests/adminbar.php @@ -810,100 +810,6 @@ public function data_my_sites_network_menu_items() { ); } - /** - * @covers ::wp_admin_bar_site_menu - */ - public function test_site_name_menu_has_no_site_icon_when_unset() { - wp_set_current_user( self::$editor_id ); - - $wp_admin_bar = $this->get_standard_admin_bar(); - $node_site_name = $wp_admin_bar->get_node( 'site-name' ); - - $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); - $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); - } - - /** - * @covers ::wp_admin_bar_site_menu - * @requires function imagejpeg - */ - public function test_site_name_menu_includes_site_icon_when_set() { - wp_set_current_user( self::$editor_id ); - - $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); - update_option( 'site_icon', $attachment_id ); - - $wp_admin_bar = $this->get_standard_admin_bar(); - $node_site_name = $wp_admin_bar->get_node( 'site-name' ); - - $this->assertStringContainsString( '<img class="site-icon"', $node_site_name->title ); - $this->assertStringContainsString( esc_url( get_site_icon_url( 32 ) ), $node_site_name->title ); - $this->assertSame( 'has-site-icon', $node_site_name->meta['class'] ); - } - - /** - * @covers ::wp_admin_bar_site_menu - * @requires function imagejpeg - */ - public function test_site_name_menu_respects_show_site_icons_filter() { - wp_set_current_user( self::$editor_id ); - - $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); - update_option( 'site_icon', $attachment_id ); - - add_filter( 'wp_admin_bar_show_site_icons', '__return_false' ); - - $wp_admin_bar = $this->get_standard_admin_bar(); - $node_site_name = $wp_admin_bar->get_node( 'site-name' ); - - $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); - $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); - } - - /** - * @covers ::wp_admin_bar_site_menu - * @group multisite - * @group ms-required - * @requires function imagejpeg - */ - public function test_site_name_menu_has_no_site_icon_in_network_admin() { - wp_set_current_user( self::$admin_id ); - - $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); - update_option( 'site_icon', $attachment_id ); - - set_current_screen( 'dashboard-network' ); - - $wp_admin_bar = $this->get_standard_admin_bar(); - $node_site_name = $wp_admin_bar->get_node( 'site-name' ); - - $this->assertTrue( is_network_admin() ); - $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); - $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); - } - - /** - * @covers ::wp_admin_bar_site_menu - * @group multisite - * @group ms-required - * @requires function imagejpeg - */ - public function test_site_name_menu_has_no_site_icon_in_user_admin() { - wp_set_current_user( self::$admin_id ); - - $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); - update_option( 'site_icon', $attachment_id ); - - set_current_screen( 'dashboard-user' ); - - $wp_admin_bar = $this->get_standard_admin_bar(); - $node_site_name = $wp_admin_bar->get_node( 'site-name' ); - - $this->assertTrue( is_user_admin() ); - $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); - $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); - } - /** * This test ensures that WP_Admin_Bar::$proto is not defined (including magic methods). * From 3e635a039679f69a1c631a9b445bba974ff6c6e6 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Wed, 1 Jul 2026 23:56:34 +0000 Subject: [PATCH 299/327] Tests: Correct `@covers` tags for `test_get_cookie_host_only()`. Follow-up to [45135], [50344]. See #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62621 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/http/functions.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/tests/http/functions.php b/tests/phpunit/tests/http/functions.php index 96c6e4db2f496..196cad2058a71 100644 --- a/tests/phpunit/tests/http/functions.php +++ b/tests/phpunit/tests/http/functions.php @@ -206,9 +206,10 @@ public function test_get_response_cookies_with_name_value_array() { * @ticket 43231 * * @covers WP_HTTP_Requests_Response::__construct + * @covers WP_Http_Cookie::__construct + * @covers WP_Http::normalize_cookies * @covers ::wp_remote_retrieve_cookies * @covers ::wp_remote_retrieve_cookie - * @covers WP_Http */ public function test_get_cookie_host_only() { // Emulate WP_Http::request() internals. From d73908f420ec3d031f2b018d2ec3615a9a38b2a1 Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Thu, 2 Jul 2026 02:47:17 +0000 Subject: [PATCH 300/327] REST API: Add test coverage for the sideload `convert_format` boolean arg. The sideload route declares `convert_format` as a boolean (default true) and `sideload_item()` suppresses the `image_editor_output_format` filter when it is false, both added when client-side media processing was reintroduced in [61703]. This adds the regression coverage that was missing. See https://github.com/WordPress/gutenberg/pull/77565. Props jamesbregenzer, westonruter, andrewserong. Fixes #65329. git-svn-id: https://develop.svn.wordpress.org/trunk@62622 602fd350-edb4-49c9-b593-d223f7449a82 --- .../rest-api/rest-attachments-controller.php | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php index cd9c1ff92756d..6884345376a9f 100644 --- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php @@ -4264,6 +4264,107 @@ public function test_finalize_preserves_image_meta(): void { $this->assertSame( $original_image_meta['iso'], $metadata['image_meta']['iso'], 'ISO should be preserved.' ); } + /** + * Tests that the sideload route declares `convert_format` as a boolean arg. + * + * Without this declaration, multipart/form-data requests deliver the value as + * a string ("false") which evaluates truthy in PHP, so the sideload handler's + * `if ( ! $request['convert_format'] )` check never fires and the + * `image_editor_output_format` filter is never suppressed - meaning the + * server still performs the format conversion the client opted out of. + * + * @ticket 65329 + * @covers WP_REST_Attachments_Controller::register_routes + */ + public function test_sideload_route_declares_convert_format_boolean() { + $this->enable_client_side_media_processing(); + + $routes = rest_get_server()->get_routes(); + $endpoint = '/wp/v2/media/(?P<id>[\d]+)/sideload'; + $this->assertArrayHasKey( $endpoint, $routes, 'Sideload route should exist.' ); + + $args = $routes[ $endpoint ][0]['args']; + + $this->assertArrayHasKey( 'convert_format', $args, 'Route should declare convert_format.' ); + $this->assertSame( 'boolean', $args['convert_format']['type'], 'convert_format should be a boolean.' ); + $this->assertTrue( $args['convert_format']['default'], 'convert_format should default to true.' ); + } + + /** + * Tests that sideloading with `convert_format=false` (sent as the string + * "false", matching multipart/form-data semantics) suppresses the + * alt-extension collision check in `wp_unique_filename()`, so a companion + * file sharing the attachment basename does not get a numeric suffix. + * + * Mirrors the HEIC companion upload flow: a JPEG derivative is created via + * the media endpoint, then the original is sideloaded under the same stem. + * Without the arg declared as boolean, "false" coerces truthy, the filter + * is never added, and the companion is bumped to `-1` while the JPEG stays + * unsuffixed. PNG stands in for HEIC because core's default + * `image_editor_output_format` only maps HEIC/HEIF to JPEG; a local filter + * adds a PNG to JPEG mapping to trigger the same alt-ext check. + * + * @ticket 65329 + * @covers WP_REST_Attachments_Controller::sideload_item + * @covers WP_REST_Attachments_Controller::register_routes + * @requires function imagejpeg + */ + public function test_sideload_convert_format_false_suppresses_alt_ext_suffix() { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Upload a JPEG "parent" attachment the way client-side uploads do. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=heic-companion.jpg' ); + $request->set_param( 'generate_sub_sizes', false ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + $this->assertSame( 201, $response->get_status() ); + + /* + * Simulate an alt-ext conversion mapping so an alt-extension companion + * (PNG here, HEIC in production) would otherwise get a `-1` suffix. + */ + $add_png_mapping = static function ( $formats ) { + $formats['image/png'] = 'image/jpeg'; + return $formats; + }; + add_filter( 'image_editor_output_format', $add_png_mapping, 5 ); + + /* + * Sideload a companion sharing the same basename. Use the source-format + * original size: a source-format companion (HEIC in production, PNG + * here) kept beside its JPEG derivative is exactly what this size + * represents, and it is exempt from the sideload dimension validation + * that would otherwise reject a companion whose dimensions differ from + * the derivative. Pass convert_format as the string "false" to match + * multipart/form-data request semantics. + */ + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/png' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=heic-companion.png' ); + $request->set_param( 'image_size', WP_REST_Attachments_Controller::IMAGE_SIZE_SOURCE_ORIGINAL ); + $request->set_param( 'convert_format', 'false' ); + $request->set_body( (string) file_get_contents( DIR_TESTDATA . '/images/one-blue-pixel-100x100.png' ) ); + + $response = rest_get_server()->dispatch( $request ); + + remove_filter( 'image_editor_output_format', $add_png_mapping, 5 ); + + $this->assertSame( 200, $response->get_status() ); + + $data = $response->get_data(); + $this->assertSame( + 'heic-companion.png', + $data['file'], + 'Companion file should share the attachment basename without a numeric suffix.' + ); + } + /** * Tests that sideloading with an array of image sizes registers the single * file under each size name when finalized. From e9ee5958ca44ee4a08f8037220165c7f3f4b54d9 Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Thu, 2 Jul 2026 02:53:29 +0000 Subject: [PATCH 301/327] Media: Sideload and clean up animated GIF video companion files Add server-side support for storing a converted animated GIF's companion files. When client-side media processing is enabled, the editor transcodes an opaque animated GIF to a web-safe video and sideloads both the video and a static first-frame poster as companion files of the GIF attachment, which itself remains the attachment. This change enables those files to be sideloaded correctly. See https://github.com/WordPress/gutenberg/pull/78410. Props khokansardar, westonruter, andrewserong. Fixes #65549. git-svn-id: https://develop.svn.wordpress.org/trunk@62623 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/post.php | 27 ++++ .../class-wp-rest-attachments-controller.php | 20 +++ .../wpDeleteAttachmentAnimatedGifVideo.php | 129 ++++++++++++++++++ .../rest-api/rest-attachments-controller.php | 71 ++++++++++ 4 files changed, 247 insertions(+) create mode 100644 tests/phpunit/tests/media/wpDeleteAttachmentAnimatedGifVideo.php diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 4f953df0eaeb0..dce99ae46627c 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -6869,6 +6869,33 @@ function wp_delete_attachment_files( $post_id, $meta, $backup_sizes, $file ) { } } + /* + * Delete the animated-GIF video companions. When the client-side media flow + * converts an opaque animated GIF to a web-safe video, the converted MP4/WebM + * and a static first-frame JPEG poster are sideloaded alongside the GIF and + * recorded under the 'animated_video' and 'animated_video_poster' keys. These + * are kept separate from 'original_image', which continues to point at the GIF. + */ + foreach ( array( 'animated_video', 'animated_video_poster' ) as $companion_key ) { + if ( empty( $meta[ $companion_key ] ) || ! is_string( $meta[ $companion_key ] ) ) { + continue; + } + + if ( empty( $intermediate_dir ) ) { + $intermediate_dir = path_join( $uploadpath['basedir'], dirname( $file ) ); + } + + $companion_file = str_replace( wp_basename( $file ), $meta[ $companion_key ], $file ); + + if ( ! empty( $companion_file ) ) { + $companion_file = path_join( $uploadpath['basedir'], $companion_file ); + + if ( ! wp_delete_file_from_directory( $companion_file, $intermediate_dir ) ) { + $deleted = false; + } + } + } + if ( is_array( $backup_sizes ) ) { $del_dir = path_join( $uploadpath['basedir'], dirname( $meta['file'] ) ); diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php index 9868d76b09965..37e0199756aca 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -123,6 +123,9 @@ public function register_routes() { $valid_sizes[] = 'full'; // Source-format original (e.g. the HEIC kept alongside its JPEG derivative). $valid_sizes[] = self::IMAGE_SIZE_SOURCE_ORIGINAL; + // Converted-video companions for an animated GIF (the MP4/WebM and its poster). + $valid_sizes[] = 'animated_video'; + $valid_sizes[] = 'animated_video_poster'; $items = is_string( $value ) ? array( $value ) : ( is_array( $value ) ? $value : null ); if ( null === $items ) { @@ -2432,6 +2435,13 @@ public function sideload_item( WP_REST_Request $request ) { * under the dedicated source-image meta key. */ $sub_size_data['file'] = wp_basename( $path ); + } elseif ( 'animated_video' === $image_size || 'animated_video_poster' === $image_size ) { + /* + * Converted-video companion of an animated GIF (the MP4/WebM or + * its static first-frame poster). Record the filename so + * finalize_item can store it under its dedicated meta key. + */ + $sub_size_data['file'] = wp_basename( $path ); } elseif ( 'scaled' === $image_size ) { // Record the current attached file as the original. $current_file = get_attached_file( $attachment_id, true ); @@ -2596,6 +2606,16 @@ public function finalize_item( WP_REST_Request $request ) { * is handled by wp_delete_attachment_files(). */ $metadata[ self::META_KEY_SOURCE_IMAGE ] = $sub_size['file']; + } elseif ( 'animated_video' === $image_size ) { + /* + * Converted-video companion of an animated GIF. Stored under its + * own meta key; 'original_image' keeps pointing at the GIF. Cleanup + * on attachment delete is handled by wp_delete_attachment_files(). + */ + $metadata['animated_video'] = $sub_size['file']; + } elseif ( 'animated_video_poster' === $image_size ) { + // Static first-frame poster for the converted video. + $metadata['animated_video_poster'] = $sub_size['file']; } elseif ( 'scaled' === $image_size ) { if ( ! empty( $sub_size['original_image'] ) ) { $metadata['original_image'] = $sub_size['original_image']; diff --git a/tests/phpunit/tests/media/wpDeleteAttachmentAnimatedGifVideo.php b/tests/phpunit/tests/media/wpDeleteAttachmentAnimatedGifVideo.php new file mode 100644 index 0000000000000..9d0f8eddb446b --- /dev/null +++ b/tests/phpunit/tests/media/wpDeleteAttachmentAnimatedGifVideo.php @@ -0,0 +1,129 @@ +<?php + +/** + * Tests that wp_delete_attachment_files() removes the animated-GIF video companions. + * + * @group media + * @covers ::wp_delete_attachment_files + */ +class Tests_Media_wpDeleteAttachmentAnimatedGifVideo extends WP_UnitTestCase { + + public function tear_down(): void { + $this->remove_added_uploads(); + + parent::tear_down(); + } + + /** + * @ticket 65549 + */ + public function test_deletes_video_and_poster_companions(): void { + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + $this->assertIsInt( $attachment_id ); + + $attached_file = get_attached_file( $attachment_id, true ); + $this->assertIsString( $attached_file ); + $dir = dirname( $attached_file ); + $video_name = 'companion-' . wp_generate_password( 6, false ) . '.mp4'; + $poster_name = 'companion-' . wp_generate_password( 6, false ) . '.jpg'; + $video_path = $dir . '/' . $video_name; + $poster_path = $dir . '/' . $poster_name; + + // Create dummy companion files on disk. + file_put_contents( $video_path, 'test' ); + file_put_contents( $poster_path, 'test' ); + $this->assertFileExists( $video_path, 'Video fixture should be on disk.' ); + $this->assertFileExists( $poster_path, 'Poster fixture should be on disk.' ); + + // Record the companions as the sideload route does. + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertIsArray( $metadata ); + $metadata['animated_video'] = $video_name; + $metadata['animated_video_poster'] = $poster_name; + wp_update_attachment_metadata( $attachment_id, $metadata ); + + wp_delete_attachment( $attachment_id, true ); + + $this->assertNull( get_post( $attachment_id ) ); + $this->assertFileDoesNotExist( $video_path, 'Video companion should be deleted alongside the attachment.' ); + $this->assertFileDoesNotExist( $poster_path, 'Poster companion should be deleted alongside the attachment.' ); + } + + /** + * @ticket 65549 + */ + public function test_deletes_only_video_when_no_poster_recorded(): void { + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + $this->assertIsInt( $attachment_id ); + + $attached_file = get_attached_file( $attachment_id, true ); + $this->assertIsString( $attached_file ); + $dir = dirname( $attached_file ); + $video_name = 'companion-' . wp_generate_password( 6, false ) . '.mp4'; + $video_path = $dir . '/' . $video_name; + + file_put_contents( $video_path, 'test' ); + $this->assertFileExists( $video_path, 'Video fixture should be on disk.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertIsArray( $metadata ); + $metadata['animated_video'] = $video_name; + wp_update_attachment_metadata( $attachment_id, $metadata ); + + wp_delete_attachment( $attachment_id, true ); + + $this->assertNull( get_post( $attachment_id ) ); + $this->assertFileDoesNotExist( $video_path, 'Video companion should be deleted alongside the attachment.' ); + } + + /** + * @ticket 65549 + */ + public function test_noop_when_no_companion_metadata(): void { + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + $this->assertIsInt( $attachment_id ); + + // Sanity: no companion keys on freshly-created metadata. + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertIsArray( $metadata ); + $this->assertArrayNotHasKey( 'animated_video', $metadata ); + $this->assertArrayNotHasKey( 'animated_video_poster', $metadata ); + + // Deletion should complete cleanly even though no companion file is recorded. + wp_delete_attachment( $attachment_id, true ); + + $this->assertNull( get_post( $attachment_id ) ); + } + + /** + * Guards against a companion key holding a non-string value (e.g. the array + * form some metadata flows write). + * + * @ticket 65549 + */ + public function test_noop_when_companion_metadata_is_not_a_string(): void { + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/canola.jpg' ); + $this->assertIsInt( $attachment_id ); + $attached_file = get_attached_file( $attachment_id, true ); + $this->assertIsString( $attached_file ); + + /* + * Place a real file that a buggy, guard-less implementation could try to + * delete after running wp_basename() over the array value below. + */ + $bystander_path = dirname( $attached_file ) . '/should-not-delete.mp4'; + file_put_contents( $bystander_path, 'test' ); + $this->assertFileExists( $bystander_path, 'Test fixture should be on disk.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertIsArray( $metadata ); + $metadata['animated_video'] = array( 'file' => 'should-not-delete.mp4' ); + wp_update_attachment_metadata( $attachment_id, $metadata ); + + // Deletion should not raise (no str_replace() / file deletion on an array). + wp_delete_attachment( $attachment_id, true ); + + $this->assertNull( get_post( $attachment_id ) ); + $this->assertFileExists( $bystander_path, 'The non-string guard must prevent any file deletion.' ); + } +} diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php index 6884345376a9f..c03d52e944030 100644 --- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php @@ -3734,6 +3734,77 @@ public function test_sideload_source_original_writes_metadata_source_image(): vo $this->assertArrayNotHasKey( 'original_image', $metadata, "Metadata 'original_image' should be untouched by the HEIC sideload." ); } + /** + * Tests sideloading the animated-GIF video companions ('animated_video' and + * 'animated_video_poster'). Each filename is recorded under its own metadata + * key by the finalize endpoint and does not collide with 'original_image', + * which keeps pointing at the GIF. + * + * The uploaded bytes are a JPEG stand-in: the sideload branch only records + * wp_basename() of the stored file, so the metadata plumbing can be exercised + * without depending on video upload support in the test environment. + * + * @ticket 65549 + * @requires function imagejpeg + */ + public function test_sideload_animated_video_companions_write_metadata(): void { + $this->enable_client_side_media_processing(); + + wp_set_current_user( self::$author_id ); + + // Create the (GIF) attachment the companions belong to. + $request = new WP_REST_Request( 'POST', '/wp/v2/media' ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $response = rest_get_server()->dispatch( $request ); + $attachment_id = $response->get_data()['id']; + $this->assertSame( 201, $response->get_status() ); + + // Sideload the converted-video companion. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-video.jpg' ); + $request->set_param( 'image_size', 'animated_video' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $video_response = rest_get_server()->dispatch( $request ); + $this->assertSame( 200, $video_response->get_status(), 'Sideloading animated_video should succeed.' ); + $video_sub_size = $video_response->get_data(); + $this->assertIsArray( $video_sub_size ); + $this->assertSame( 'animated_video', $video_sub_size['image_size'], 'Response should echo the image_size.' ); + + // Sideload the poster companion. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/sideload" ); + $request->set_header( 'Content-Type', 'image/jpeg' ); + $request->set_header( 'Content-Disposition', 'attachment; filename=canola-poster.jpg' ); + $request->set_param( 'image_size', 'animated_video_poster' ); + $request->set_body( (string) file_get_contents( self::$test_file ) ); + $poster_response = rest_get_server()->dispatch( $request ); + $this->assertSame( 200, $poster_response->get_status(), 'Sideloading animated_video_poster should succeed.' ); + $poster_sub_size = $poster_response->get_data(); + $this->assertIsArray( $poster_sub_size ); + $this->assertSame( 'animated_video_poster', $poster_sub_size['image_size'], 'Response should echo the image_size.' ); + + // Sideload must not write metadata; that happens in finalize. + $metadata = wp_get_attachment_metadata( $attachment_id, true ); + $this->assertArrayNotHasKey( 'animated_video', $metadata, 'Sideload should not write animated_video metadata.' ); + $this->assertArrayNotHasKey( 'animated_video_poster', $metadata, 'Sideload should not write animated_video_poster metadata.' ); + + // Finalize with both collected sub-sizes, which writes the metadata. + $request = new WP_REST_Request( 'POST', "/wp/v2/media/{$attachment_id}/finalize" ); + $request->set_param( 'sub_sizes', array( $video_sub_size, $poster_sub_size ) ); + $response = rest_get_server()->dispatch( $request ); + $this->assertSame( 200, $response->get_status(), 'Finalize should succeed.' ); + + $metadata = wp_get_attachment_metadata( $attachment_id ); + $this->assertIsArray( $metadata ); + $this->assertArrayHasKey( 'animated_video', $metadata, "Metadata should contain 'animated_video'." ); + $this->assertMatchesRegularExpression( '/canola-video.*\.jpg$/', $metadata['animated_video'], "Metadata 'animated_video' should reference the video companion filename." ); + $this->assertArrayHasKey( 'animated_video_poster', $metadata, "Metadata should contain 'animated_video_poster'." ); + $this->assertMatchesRegularExpression( '/canola-poster.*\.jpg$/', $metadata['animated_video_poster'], "Metadata 'animated_video_poster' should reference the poster filename." ); + $this->assertArrayNotHasKey( 'original_image', $metadata, "Metadata 'original_image' should be untouched by the companion sideloads." ); + } + /** * Tests the filter_wp_unique_filename method handles the -scaled suffix. * From ca1d26398652a52b78873f31233c3e19a941513b Mon Sep 17 00:00:00 2001 From: Marin Atanasov <tyxla@git.wordpress.org> Date: Thu, 2 Jul 2026 10:06:52 +0000 Subject: [PATCH 302/327] Comments: Fix "Show more comments" button for custom comment types. The comments metabox assumed all comment `<tr>` elements carry the `comment` class, which is not the case for custom comment types such as WooCommerce reviews. Match rows by an id starting with `comment-` instead, so regular comments and custom comment types are both counted. Also correct the default number of comments requested in the AJAX call from 20 to 10, aligning the frontend with the backend, which falls back to 10. The mismatch made the frontend believe all comments were already loaded when they were not. Props Aljullu, PavloBorysenko, tyxla. Fixes #65392. git-svn-id: https://develop.svn.wordpress.org/trunk@62624 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/_enqueues/admin/post.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/js/_enqueues/admin/post.js b/src/js/_enqueues/admin/post.js index d50fe6007d33b..445e79d8a6f05 100644 --- a/src/js/_enqueues/admin/post.js +++ b/src/js/_enqueues/admin/post.js @@ -35,13 +35,13 @@ window.wp = window.wp || {}; * @memberof commentsBox * * @param {number} total Total number of comments for this post. - * @param {number} num Optional. Number of comments to fetch, defaults to 20. + * @param {number} num Optional. Number of comments to fetch, defaults to 10. * @return {boolean} Always returns false. */ get : function(total, num) { var st = this.st, data; if ( ! num ) - num = 20; + num = 10; this.st += num; this.total = total; @@ -97,7 +97,7 @@ window.wp = window.wp || {}; * @param {number} total Total number of comments to load. */ load: function(total){ - this.st = jQuery('#the-comment-list tr.comment:visible').length; + this.st = jQuery('#the-comment-list tr[id^="comment-"]:visible').length; this.get(total); } }; From 006522b4887e212d9cddba5832106c4d19e9f04e Mon Sep 17 00:00:00 2001 From: Ben Dwyer <scruffian@git.wordpress.org> Date: Thu, 2 Jul 2026 12:39:39 +0000 Subject: [PATCH 303/327] Toolbar: Show the site icon in the admin bar when one is set. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a site icon is configured, it is displayed in the WordPress admin bar in place of the home/odometer dashicon. The icon is shown at 20×20px with a border-radius of 2px. When no site icon is set, the existing dashicon behavior is preserved. This was originally committed in [62614] but accidentally undid other changes, so it was reverted in [62620]. Developed in https://github.com/WordPress/wordpress-develop/pull/11781. Props fushar, tyxla, joen, wildworks, scruffian, sergeybiryukov, lucasmdo, joedolson. Fixes #65088. See #46657, #64308. git-svn-id: https://develop.svn.wordpress.org/trunk@62625 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/admin-bar.php | 26 ++++++++- src/wp-includes/css/admin-bar.css | 31 +++++++++- tests/phpunit/tests/adminbar.php | 94 +++++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+), 4 deletions(-) diff --git a/src/wp-includes/admin-bar.php b/src/wp-includes/admin-bar.php index 2ab30a24c27ee..99bb122ec4c36 100644 --- a/src/wp-includes/admin-bar.php +++ b/src/wp-includes/admin-bar.php @@ -385,15 +385,35 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) { } $title = wp_html_excerpt( $blogname, 40, '…' ); + $meta = array( + 'menu_title' => $title, + ); + + if ( ! is_network_admin() && ! is_user_admin() ) { + /** This filter is documented in wp-includes/admin-bar.php */ + $show_site_icons = apply_filters( 'wp_admin_bar_show_site_icons', true ); + + if ( true === $show_site_icons && has_site_icon() ) { + $site_icon_url = get_site_icon_url( 32 ); + $site_icon_url_2x = get_site_icon_url( 64 ); + $srcset = ( $site_icon_url_2x && $site_icon_url !== $site_icon_url_2x ) ? sprintf( ' srcset="%s 2x"', esc_url( $site_icon_url_2x ) ) : ''; + $site_icon = sprintf( + '<img class="site-icon" src="%s"%s alt="" width="20" height="20" />', + esc_url( $site_icon_url ), + $srcset + ); + + $title = $site_icon . $title; + $meta['class'] = 'has-site-icon'; + } + } $wp_admin_bar->add_node( array( 'id' => 'site-name', 'title' => $title, 'href' => ( is_admin() || ! current_user_can( 'read' ) ) ? home_url( '/' ) : admin_url(), - 'meta' => array( - 'menu_title' => $title, - ), + 'meta' => $meta, ) ); diff --git a/src/wp-includes/css/admin-bar.css b/src/wp-includes/css/admin-bar.css index 7ab855fd919bb..77e196525657a 100644 --- a/src/wp-includes/css/admin-bar.css +++ b/src/wp-includes/css/admin-bar.css @@ -539,6 +539,10 @@ html:lang(he-il) .rtl #wpadminbar * { margin: 0 8px 2px -2px; } +#wpadminbar .quicklinks li img.blavatar { + border-radius: 2px; +} + #wpadminbar .quicklinks li div.blavatar:before { content: "\f120"; content: "\f120" / ''; @@ -584,7 +588,22 @@ html:lang(he-il) .rtl #wpadminbar * { content: "\f102" / ''; } +#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item { + display: flex; + align-items: center; + gap: 6px; +} +#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item:before { + content: none; +} + +#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon { + width: 20px; + height: 20px; + background: #f0f0f1; /* matching my-account (user avatar) node's background */ + border-radius: 2px; +} /** * Comments @@ -905,7 +924,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-edit > .ab-item:before, #wpadminbar #wp-admin-bar-my-sites > .ab-item:before, - #wpadminbar #wp-admin-bar-site-name > .ab-item:before, + #wpadminbar #wp-admin-bar-site-name:not(.has-site-icon) > .ab-item:before, #wpadminbar #wp-admin-bar-site-editor > .ab-item:before, #wpadminbar #wp-admin-bar-customize > .ab-item:before, #wpadminbar #wp-admin-bar-my-account > .ab-item:before, @@ -920,6 +939,16 @@ html:lang(he-il) .rtl #wpadminbar * { -moz-osx-font-smoothing: grayscale; } + #wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon { + position: absolute; + top: 9px; + left: 12px; + width: 28px; + height: 28px; + margin: 0; + border-radius: 4px; + } + #wpadminbar #wp-admin-bar-appearance { margin-top: 0; } diff --git a/tests/phpunit/tests/adminbar.php b/tests/phpunit/tests/adminbar.php index 27308bd82760e..fb29eaf39af42 100644 --- a/tests/phpunit/tests/adminbar.php +++ b/tests/phpunit/tests/adminbar.php @@ -810,6 +810,100 @@ public function data_my_sites_network_menu_items() { ); } + /** + * @covers ::wp_admin_bar_site_menu + */ + public function test_site_name_menu_has_no_site_icon_when_unset() { + wp_set_current_user( self::$editor_id ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); + $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); + } + + /** + * @covers ::wp_admin_bar_site_menu + * @requires function imagejpeg + */ + public function test_site_name_menu_includes_site_icon_when_set() { + wp_set_current_user( self::$editor_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); + update_option( 'site_icon', $attachment_id ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertStringContainsString( '<img class="site-icon"', $node_site_name->title ); + $this->assertStringContainsString( esc_url( get_site_icon_url( 32 ) ), $node_site_name->title ); + $this->assertSame( 'has-site-icon', $node_site_name->meta['class'] ); + } + + /** + * @covers ::wp_admin_bar_site_menu + * @requires function imagejpeg + */ + public function test_site_name_menu_respects_show_site_icons_filter() { + wp_set_current_user( self::$editor_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); + update_option( 'site_icon', $attachment_id ); + + add_filter( 'wp_admin_bar_show_site_icons', '__return_false' ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); + $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); + } + + /** + * @covers ::wp_admin_bar_site_menu + * @group multisite + * @group ms-required + * @requires function imagejpeg + */ + public function test_site_name_menu_has_no_site_icon_in_network_admin() { + wp_set_current_user( self::$admin_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); + update_option( 'site_icon', $attachment_id ); + + set_current_screen( 'dashboard-network' ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertTrue( is_network_admin() ); + $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); + $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); + } + + /** + * @covers ::wp_admin_bar_site_menu + * @group multisite + * @group ms-required + * @requires function imagejpeg + */ + public function test_site_name_menu_has_no_site_icon_in_user_admin() { + wp_set_current_user( self::$admin_id ); + + $attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' ); + update_option( 'site_icon', $attachment_id ); + + set_current_screen( 'dashboard-user' ); + + $wp_admin_bar = $this->get_standard_admin_bar(); + $node_site_name = $wp_admin_bar->get_node( 'site-name' ); + + $this->assertTrue( is_user_admin() ); + $this->assertStringNotContainsString( 'site-icon', $node_site_name->title ); + $this->assertArrayNotHasKey( 'class', $node_site_name->meta ); + } + /** * This test ensures that WP_Admin_Bar::$proto is not defined (including magic methods). * From 2161d9bc24ad9d85a2b5aeb30e32903721b8a670 Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Thu, 2 Jul 2026 15:08:35 +0000 Subject: [PATCH 304/327] HTML API: Preserve decoder match length on named-reference miss. The HTML decoder could report a match byte length when there was no match. Ensure the pass-by-reference match byte length is unmodified if there is no match. Developed in https://github.com/WordPress/wordpress-develop/pull/12379. Follow-up to [58281]. Props jonsurrell, dmsnell, mukesh27. See #65372. git-svn-id: https://develop.svn.wordpress.org/trunk@62626 602fd350-edb4-49c9-b593-d223f7449a82 --- .../html-api/class-wp-html-decoder.php | 2 +- .../phpunit/tests/html-api/wpHtmlDecoder.php | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/html-api/class-wp-html-decoder.php b/src/wp-includes/html-api/class-wp-html-decoder.php index e4634f8fa23ed..6c375b8512946 100644 --- a/src/wp-includes/html-api/class-wp-html-decoder.php +++ b/src/wp-includes/html-api/class-wp-html-decoder.php @@ -361,7 +361,7 @@ public static function read_character_reference( $context, $text, $at = 0, &$mat $name_length = 0; $replacement = $html5_named_character_references->read_token( $text, $name_at, $name_length ); - if ( false === $replacement ) { + if ( null === $replacement ) { return null; } diff --git a/tests/phpunit/tests/html-api/wpHtmlDecoder.php b/tests/phpunit/tests/html-api/wpHtmlDecoder.php index 158115cdfbf06..66b3381fec8b9 100644 --- a/tests/phpunit/tests/html-api/wpHtmlDecoder.php +++ b/tests/phpunit/tests/html-api/wpHtmlDecoder.php @@ -110,6 +110,39 @@ static function ( int $errno, string $errstr ) use ( &$errors ) { $this->assertSame( "&\x00b", $decoded, 'Should have decoded the text without changing it.' ); } + /** + * Ensures unmatched named character references leave the by-ref match length unchanged. + * + * @ticket 65372 + * + * @dataProvider data_unmatched_named_character_references + * + * @param string $context Decoder context. + * @param string $raw_text_node Raw text containing an unmatched named character reference. + */ + public function test_unmatched_named_character_reference_does_not_set_match_byte_length( $context, $raw_text_node ): void { + $match_byte_length = 'sentinel'; + $this->assertNull( + WP_HTML_Decoder::read_character_reference( $context, $raw_text_node, 0, $match_byte_length ), + 'Should not have matched an unmatched named character reference.' + ); + $this->assertSame( 'sentinel', $match_byte_length ); + } + + /** + * Data provider. + * + * @return array<string, array{string, string}>. + */ + public static function data_unmatched_named_character_references(): array { + return array( + 'text invalid name' => array( 'data', '&bogus;' ), + 'text invalid short-name candidate' => array( 'data', '&Fv=q' ), + 'attribute invalid name' => array( 'attribute', '&bogus;' ), + 'attribute invalid short-name candidate' => array( 'attribute', '&Fv=q' ), + ); + } + /** * Ensures semicolonless legacy references decode before non-ASCII UTF-8 bytes in attributes. * From 6d62dc4bedfc266bfa8113fab110ba00c9c798fb Mon Sep 17 00:00:00 2001 From: Jon Surrell <jonsurrell@git.wordpress.org> Date: Thu, 2 Jul 2026 15:29:51 +0000 Subject: [PATCH 305/327] Editor: Use HTML API `class_list()` for duotone wrapper classes. Update `WP_Duotone::restore_image_outer_container()` to iterate `WP_HTML_Tag_Processor::class_list()` instead of splitting the `class` attribute on spaces, matching Gutenberg PR 79531. Developed in https://github.com/WordPress/wordpress-develop/pull/12324. Follow-up to [58313]. Props jonsurrell, mukesh27, scruffian. Fixes #65576. git-svn-id: https://develop.svn.wordpress.org/trunk@62627 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-duotone.php | 3 +-- tests/phpunit/tests/block-supports/duotone.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/class-wp-duotone.php b/src/wp-includes/class-wp-duotone.php index d0b978eacef21..b75b01619fbee 100644 --- a/src/wp-includes/class-wp-duotone.php +++ b/src/wp-includes/class-wp-duotone.php @@ -1191,8 +1191,7 @@ public static function restore_image_outer_container( $block_content ) { $tags->set_bookmark( 'wrapper-div' ); $tags->next_tag(); - $inner_classnames = explode( ' ', $tags->get_attribute( 'class' ) ); - foreach ( $inner_classnames as $classname ) { + foreach ( $tags->class_list() as $classname ) { if ( str_starts_with( $classname, 'wp-duotone' ) ) { $tags->remove_class( $classname ); $tags->seek( 'wrapper-div' ); diff --git a/tests/phpunit/tests/block-supports/duotone.php b/tests/phpunit/tests/block-supports/duotone.php index 808903a072452..f4eaa63faec99 100644 --- a/tests/phpunit/tests/block-supports/duotone.php +++ b/tests/phpunit/tests/block-supports/duotone.php @@ -61,6 +61,20 @@ public function test_render_duotone_support_custom() { $this->assertMatchesRegularExpression( $expected, WP_Duotone::render_duotone_support( $block_content, $block, $wp_block ) ); } + /** + * @ticket 65576 + * + * @covers ::restore_image_outer_container + */ + public function test_restore_image_outer_container_moves_duotone_class_to_wrapper_in_classic_theme() { + switch_theme( 'default' ); + + $block_content = '<div class="wp-block-image"><figure class="alignright wp-duotone-blue-orange size-full"><img src="/my-image.jpg"></figure></div>'; + $expected = '<div class="wp-block-image wp-duotone-blue-orange"><figure class="alignright size-full"><img src="/my-image.jpg"></figure></div>'; + + $this->assertEqualHTML( $expected, WP_Duotone::restore_image_outer_container( $block_content ) ); + } + /** * Tests whether the slug is extracted from the attribute. * From 1763d350c8dac1f86a8263c4e782efcd12add8b4 Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Thu, 2 Jul 2026 16:14:52 +0000 Subject: [PATCH 306/327] Media: Fix sideload size validation for animated GIF video companion files. Update the dimension validation introduced in [62619] so sideloading the `animated_video` and `animated_video_poster` companion sizes added in [62623] work as expected. Follow-up to [62619], [62623]. Props mukesh27. See #65549, #64798. git-svn-id: https://develop.svn.wordpress.org/trunk@62628 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-wp-rest-attachments-controller.php | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php index 37e0199756aca..a8951db439d1c 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -2220,6 +2220,15 @@ private function validate_image_dimensions( int $width, int $height, string $ima return true; } + /* + * 'animated_video_poster' companion: a static poster image for the + * converted video. It is a real image (so it has positive dimensions) + * but is not a registered sub-size, so it has no dimension constraint. + */ + if ( 'animated_video_poster' === $image_size ) { + return true; + } + // Regular image sizes: validate against registered size constraints. $registered_sizes = wp_get_registered_image_subsizes(); @@ -2367,12 +2376,19 @@ public function sideload_item( WP_REST_Request $request ) { $image_size = $request['image_size']; /* - * Validate raster sub-sizes before storing them. Source-format companion - * originals (e.g. a HEIC or JXL kept next to its JPEG derivative) are - * exempt: their dimensions are neither validated nor recorded, and the - * source format may not be readable by wp_getimagesize() at all. + * Validate raster sub-sizes before storing them. Two companion sizes + * are exempt because wp_getimagesize() may not be able to read the + * file at all: the 'animated_video' companion of an animated GIF is a + * video (MP4/WebM), and a source-format original (e.g. a HEIC or JXL + * kept next to its JPEG derivative) may be an unreadable format. Their + * dimensions are neither validated nor recorded. The + * 'animated_video_poster' companion is a real image, so it is still + * read and rejected if unreadable; validate_image_dimensions() skips + * only the registered-size constraint for it. */ - if ( self::IMAGE_SIZE_SOURCE_ORIGINAL !== $image_size ) { + $skip_dimension_read = in_array( $image_size, array( self::IMAGE_SIZE_SOURCE_ORIGINAL, 'animated_video' ), true ); + + if ( ! $skip_dimension_read ) { /* * Read the dimensions up front. A file whose dimensions cannot be * read is corrupted or an unsupported format and must be rejected From ee37911c299cbe1a1c53cc336b894e30cfb44f7b Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Thu, 2 Jul 2026 18:03:43 +0000 Subject: [PATCH 307/327] Build/Test Tools: Disable welcome messages for pull requests. In [62486], the logic responsible for posting a welcome message to new contributors was changed to use the `actions/first-interaction` action. Since then, a welcome message has been posted on every new pull request. The behavior seems to be caused by the fact that issues are disabled for the `wordpress-develop` repository, which causes the action to consider every new PR from a new contributor. This removes the welcome message until the bug can be fixed upstream or a new solution can be created. Props westonruter, johnbillion, wildworks, desrosj. See #65432. git-svn-id: https://develop.svn.wordpress.org/trunk@62629 602fd350-edb4-49c9-b593-d223f7449a82 --- .github/workflows/pull-request-comments.yml | 61 --------------------- 1 file changed, 61 deletions(-) diff --git a/.github/workflows/pull-request-comments.yml b/.github/workflows/pull-request-comments.yml index 82526825ebb5e..e0fdbc664b149 100644 --- a/.github/workflows/pull-request-comments.yml +++ b/.github/workflows/pull-request-comments.yml @@ -20,67 +20,6 @@ concurrency: permissions: {} jobs: - # Comments on a pull request when the author is a first time contributor. - post-welcome-message: - runs-on: ubuntu-24.04 - permissions: - issues: write - pull-requests: write - timeout-minutes: 5 - if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name == 'pull_request_target' }} - steps: - - name: Post a welcome comment - uses: actions/first-interaction@1c4688942c71f71d4f5502a26ea67c331730fa4d # v3.1.0 - with: - # While issues are disabled for this repository and this will not post anywhere, this action configures both - # message inputs as required. - # See https://github.com/actions/first-interaction/issues/365. - issue_message: | - "Baseball is dull only to dull minds." - Red Barber - pr_message: > - Hi there! 👋 - - - Thank you for your contribution to WordPress! 💖 - - - It looks like this is your first pull request to `wordpress-develop`. Here are a few things to be aware of that may help you out! - - - **No one monitors this repository for new pull requests.** Pull requests **must** be attached to a Trac ticket to be considered for inclusion in WordPress Core. To attach a pull request to a Trac ticket, please include the ticket's full URL in your pull request description. - - - **Pull requests are never merged on GitHub.** The WordPress codebase continues to be managed through the SVN repository that this GitHub repository mirrors. Please feel free to open pull requests to work on any contribution you are making. - - - More information about how GitHub pull requests can be used to contribute to WordPress can be found in [the Core Handbook](https://make.wordpress.org/core/handbook/contribute/git/github-pull-requests-for-code-review/). - - - **Please include automated tests.** Including tests in your pull request is one way to help your patch be considered faster. To learn about WordPress' test suites, visit the [Automated Testing](https://make.wordpress.org/core/handbook/testing/automated-testing/) page in the handbook. - - - If you have not had a chance, please review the [Contribute with Code page](https://make.wordpress.org/core/handbook/contribute/) in the [WordPress Core Handbook](https://make.wordpress.org/core/handbook/). - - - The [Developer Hub](https://developer.wordpress.org/) also documents the various [coding standards](https://make.wordpress.org/core/handbook/best-practices/coding-standards/) that are followed: - - - [PHP Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/) - - - [CSS Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/css/) - - - [HTML Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/html/) - - - [JavaScript Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/javascript/) - - - [Accessibility Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/accessibility/) - - - [Inline Documentation Standards](https://developer.wordpress.org/coding-standards/inline-documentation-standards/) - - - Thank you, - - The WordPress Project - # Leaves a comment on a pull request with a link to test the changes in a WordPress Playground instance. playground-details: name: Comment on a pull request with Playground details From 4d6a707e0254329b68d9301a97f177940315b17b Mon Sep 17 00:00:00 2001 From: Adam Silverstein <adamsilverstein@git.wordpress.org> Date: Thu, 2 Jul 2026 23:14:18 +0000 Subject: [PATCH 308/327] REST API: Expose size-aware encode quality on attachment responses. Add an `image_quality` field to the media attachment REST response reporting the `wp_editor_set_quality` filter value, resolved against the output MIME type after `image_editor_output_format`. The `default` key carries the filtered quality (1-100) for the full-size image, while `sizes` lists per-registered-size overrides only where they diverge from `default`. See related Gutenberg pull request: https://github.com/WordPress/gutenberg/pull/78420. Props westonruter, timothyblynjacobs. Fixes #65262. git-svn-id: https://develop.svn.wordpress.org/trunk@62630 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/media.php | 63 ++++++++++ .../class-wp-rest-attachments-controller.php | 79 +++++++++++- tests/phpunit/tests/media.php | 75 ++++++++++++ .../rest-api/rest-attachments-controller.php | 112 +++++++++++++++++- 4 files changed, 327 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index b60a4dd72c371..17497edc0454b 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -973,6 +973,69 @@ function wp_get_registered_image_subsizes(): array { return $all_sizes; } +/** + * Determines the encode quality WordPress would use for an image. + * + * Resolves the quality the same way WP_Image_Editor::set_quality() does when no + * explicit quality is supplied: it starts from the per-format default, applies the + * 'wp_editor_set_quality' filter, then the 'jpeg_quality' filter for JPEG output, + * resets out-of-range values to the per-format default, and squashes 0 to 1. + * + * This lets code outside of an image editor instance - such as the REST API, which + * reports the quality client-side processing should use - resolve the same value the + * server would apply, without loading the image into an editor. + * + * @since 7.1.0 + * + * @param string $mime_type The output image MIME type, e.g. 'image/jpeg'. + * @param array $size { + * Optional. Dimensions of the image, passed to the 'wp_editor_set_quality' filter. + * + * @type int $width The image width in pixels. + * @type int $height The image height in pixels. + * } + * @param int|null $default_quality Optional. Starting quality before filters are applied. + * Defaults to the per-format default (86 for WebP, 82 otherwise). + * @return int Encode quality between 1 and 100. + * + * @phpstan-param non-empty-string $mime_type + * @phpstan-param array{ width?: non-negative-int, height?: non-negative-int } $size + * @phpstan-param int<0, 100>|null $default_quality + * @phpstan-return int<1, 100> + */ +function wp_get_image_encode_quality( string $mime_type, array $size = array(), ?int $default_quality = null ): int { + if ( null === $default_quality ) { + // Mirror WP_Image_Editor::get_default_quality(): WebP defaults to 86, everything else to 82. + $default_quality = ( 'image/webp' === $mime_type ) ? 86 : 82; + } + + /** This filter is documented in wp-includes/class-wp-image-editor.php */ + $quality = apply_filters( 'wp_editor_set_quality', $default_quality, $mime_type, $size ); + + if ( 'image/jpeg' === $mime_type ) { + /** This filter is documented in wp-includes/class-wp-image-editor.php */ + $quality = apply_filters( 'jpeg_quality', $quality, 'image_resize' ); + } + + if ( ! is_numeric( $quality ) ) { + $quality = $default_quality; + } else { + $quality = (int) $quality; + } + + // Reset out-of-range values to the default, matching WP_Image_Editor::set_quality(). + if ( $quality < 0 || $quality > 100 ) { + $quality = $default_quality; + } + + // Allow 0, but squash to 1, matching WP_Image_Editor::set_quality(). + if ( 0 === $quality ) { + $quality = 1; + } + + return $quality; +} + /** * Retrieves an image to represent an attachment. * diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php index a8951db439d1c..453c013acf846 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -1218,6 +1218,7 @@ public function prepare_item_for_response( $item, $request ) { $size_data['source_url'] = $image_src[0]; } + unset( $size_data ); $full_src = wp_get_attachment_image_src( $post->ID, 'full' ); @@ -1302,7 +1303,7 @@ public function prepare_item_for_response( $item, $request ) { } if ( wp_attachment_is_image( $post ) ) { - $mime_type = get_post_mime_type( $post ); + $mime_type = (string) get_post_mime_type( $post ); /* * Per-file output format for images, evaluated with the real filename @@ -1333,6 +1334,53 @@ public function prepare_item_for_response( $item, $request ) { /** This filter is documented in wp-includes/class-wp-image-editor-gd.php */ $data['image_save_progressive'] = (bool) apply_filters( 'image_save_progressive', false, $mime_type ); } + + if ( in_array( 'image_quality', $fields, true ) ) { + $filename = get_attached_file( $post->ID ); + + /** This filter is documented in wp-includes/media.php */ + $output_formats = apply_filters( + 'image_editor_output_format', + array( $mime_type => $mime_type ), + $filename ? $filename : '', + $mime_type + ); + $output_mime = $output_formats[ $mime_type ] ?? $mime_type; + + $metadata = wp_get_attachment_metadata( $post->ID, true ); + $full_width = max( 0, ( is_array( $metadata ) && isset( $metadata['width'] ) ) ? (int) $metadata['width'] : 0 ); + $full_height = max( 0, ( is_array( $metadata ) && isset( $metadata['height'] ) ) ? (int) $metadata['height'] : 0 ); + + $full_quality = wp_get_image_encode_quality( + $output_mime, + array( + 'width' => $full_width, + 'height' => $full_height, + ) + ); + + $size_quality = array(); + + foreach ( wp_get_registered_image_subsizes() as $size_name => $size_data ) { + $quality = wp_get_image_encode_quality( + $output_mime, + array( + 'width' => (int) $size_data['width'], + 'height' => (int) $size_data['height'], + ) + ); + + // Only report sizes whose quality diverges from the full-size value. + if ( $quality !== $full_quality ) { + $size_quality[ $size_name ] = $quality; + } + } + + $data['image_quality'] = array( + 'default' => $full_quality, + 'sizes' => $size_quality, + ); + } } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; @@ -1525,6 +1573,35 @@ public function get_item_schema() { 'readonly' => true, ); + // Enumerate the registered sub-sizes so the schema documents exactly which + // keys may appear under "sizes". + $size_quality_properties = array(); + foreach ( array_keys( wp_get_registered_image_subsizes() ) as $size_name ) { + $size_quality_properties[ $size_name ] = array( + 'type' => 'integer', + 'minimum' => 1, + 'maximum' => 100, + ); + } + + $schema['properties']['image_quality'] = array( + 'description' => __( 'Encode quality (1-100) from the wp_editor_set_quality filter, resolved against the output MIME type. The "default" value applies to the full-size image; "sizes" lists per-registered-size overrides where the filtered value differs from "default".' ), + 'type' => 'object', + 'context' => array( 'edit' ), + 'readonly' => true, + 'properties' => array( + 'default' => array( + 'type' => 'integer', + 'minimum' => 1, + 'maximum' => 100, + ), + 'sizes' => array( + 'type' => 'object', + 'properties' => $size_quality_properties, + ), + ), + ); + $schema['properties']['image_output_format'] = array( 'description' => __( 'The output MIME type this image should be converted to, based on the image_editor_output_format filter. Null if no conversion is needed.' ), 'type' => array( 'string', 'null' ), diff --git a/tests/phpunit/tests/media.php b/tests/phpunit/tests/media.php index c3e118ee718d5..808ded68b5b22 100644 --- a/tests/phpunit/tests/media.php +++ b/tests/phpunit/tests/media.php @@ -7283,6 +7283,81 @@ private function get_insufficient_width_height_for_high_priority(): array { 'height' => 100, ); } + + /** + * @ticket 65262 + * @covers ::wp_get_image_encode_quality + */ + public function test_wp_get_image_encode_quality_defaults() { + // JPEG (and any non-WebP) defaults to 82, WebP to 86. + $this->assertSame( 82, wp_get_image_encode_quality( 'image/jpeg' ) ); + $this->assertSame( 82, wp_get_image_encode_quality( 'image/png' ) ); + $this->assertSame( 86, wp_get_image_encode_quality( 'image/webp' ) ); + } + + /** + * @ticket 65262 + * @covers ::wp_get_image_encode_quality + */ + public function test_wp_get_image_encode_quality_applies_wp_editor_set_quality() { + $filter = static function ( $quality, $mime_type, $size ) { + return ( ! empty( $size['width'] ) && $size['width'] <= 300 ) ? 55 : $quality; + }; + add_filter( 'wp_editor_set_quality', $filter, 10, 3 ); + + $small = wp_get_image_encode_quality( 'image/webp', array( 'width' => 150 ) ); + $large = wp_get_image_encode_quality( 'image/webp', array( 'width' => 1200 ) ); + + remove_filter( 'wp_editor_set_quality', $filter, 10 ); + + $this->assertSame( 55, $small ); + $this->assertSame( 86, $large ); + } + + /** + * The legacy jpeg_quality filter must apply for JPEG output only, matching + * WP_Image_Editor::set_quality(). + * + * @ticket 65262 + * @covers ::wp_get_image_encode_quality + */ + public function test_wp_get_image_encode_quality_applies_jpeg_quality() { + $filter = static function () { + return 70; + }; + add_filter( 'jpeg_quality', $filter ); + + $jpeg = wp_get_image_encode_quality( 'image/jpeg' ); + $webp = wp_get_image_encode_quality( 'image/webp' ); + + remove_filter( 'jpeg_quality', $filter ); + + $this->assertSame( 70, $jpeg ); + // Non-JPEG output ignores jpeg_quality. + $this->assertSame( 86, $webp ); + } + + /** + * Out-of-range filtered values fall back to the default; 0 squashes to 1. + * + * @ticket 65262 + * @covers ::wp_get_image_encode_quality + */ + public function test_wp_get_image_encode_quality_clamps_out_of_range() { + $too_high = static function () { + return 150; + }; + add_filter( 'wp_editor_set_quality', $too_high ); + $this->assertSame( 82, wp_get_image_encode_quality( 'image/jpeg' ) ); + remove_filter( 'wp_editor_set_quality', $too_high ); + + $zero = static function () { + return 0; + }; + add_filter( 'wp_editor_set_quality', $zero ); + $this->assertSame( 1, wp_get_image_encode_quality( 'image/png' ) ); + remove_filter( 'wp_editor_set_quality', $zero ); + } } /** diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php index c03d52e944030..74528d727ed69 100644 --- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php +++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php @@ -1952,10 +1952,11 @@ public function test_get_item_schema() { $response = rest_get_server()->dispatch( $request ); $data = $response->get_data(); $properties = $data['schema']['properties']; - $this->assertCount( 34, $properties ); + $this->assertCount( 35, $properties ); $this->assertArrayHasKey( 'author', $properties ); $this->assertArrayHasKey( 'alt_text', $properties ); $this->assertArrayHasKey( 'exif_orientation', $properties ); + $this->assertArrayHasKey( 'image_quality', $properties ); $this->assertArrayHasKey( 'image_output_format', $properties ); $this->assertArrayHasKey( 'image_save_progressive', $properties ); $this->assertArrayHasKey( 'filename', $properties ); @@ -1995,6 +1996,115 @@ public function test_get_item_schema() { $this->assertArrayHasKey( 'class_list', $properties ); } + /** + * @ticket 65262 + */ + public function test_image_quality_schema() { + $request = new WP_REST_Request( 'OPTIONS', '/wp/v2/media' ); + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + $properties = $data['schema']['properties']; + + $this->assertArrayHasKey( 'image_quality', $properties ); + $this->assertSame( 'object', $properties['image_quality']['type'] ); + $this->assertContains( 'edit', $properties['image_quality']['context'] ); + $this->assertTrue( $properties['image_quality']['readonly'] ); + + $default = $properties['image_quality']['properties']['default']; + $this->assertSame( 'integer', $default['type'] ); + $this->assertSame( 1, $default['minimum'] ); + $this->assertSame( 100, $default['maximum'] ); + + $sizes = $properties['image_quality']['properties']['sizes']; + $this->assertSame( 'object', $sizes['type'] ); + // Sizes are enumerated from the registered sub-sizes, each bounded 1-100. + $this->assertArrayHasKey( 'thumbnail', $sizes['properties'] ); + $this->assertSame( 'integer', $sizes['properties']['thumbnail']['type'] ); + $this->assertSame( 1, $sizes['properties']['thumbnail']['minimum'] ); + $this->assertSame( 100, $sizes['properties']['thumbnail']['maximum'] ); + } + + /** + * @ticket 65262 + * @requires function imagejpeg + */ + public function test_image_quality_default_in_response() { + wp_set_current_user( self::$editor_id ); + $attachment = self::factory()->attachment->create_upload_object( self::$test_file ); + + $request = new WP_REST_Request( 'GET', "/wp/v2/media/{$attachment}" ); + $request->set_param( 'context', 'edit' ); + $response = rest_do_request( $request ); + $data = $response->get_data(); + + $this->assertSame( 200, $response->get_status() ); + $this->assertArrayHasKey( 'image_quality', $data ); + // JPEG default quality is 82; no filter, so no per-size overrides. + $this->assertSame( 82, $data['image_quality']['default'] ); + $this->assertSame( array(), $data['image_quality']['sizes'] ); + } + + /** + * @ticket 65262 + * @requires function imagejpeg + */ + public function test_image_quality_with_size_aware_filter() { + wp_set_current_user( self::$editor_id ); + $attachment = self::factory()->attachment->create_upload_object( self::$test_file ); + + // Lower the quality for small images (e.g. thumbnails) only. + $filter = static function ( $quality, $mime_type, $size ) { + if ( is_array( $size ) && ! empty( $size['width'] ) && $size['width'] <= 300 ) { + return 60; + } + return $quality; + }; + add_filter( 'wp_editor_set_quality', $filter, 10, 3 ); + + $request = new WP_REST_Request( 'GET', "/wp/v2/media/{$attachment}" ); + $request->set_param( 'context', 'edit' ); + $response = rest_do_request( $request ); + $data = $response->get_data(); + + remove_filter( 'wp_editor_set_quality', $filter, 10 ); + + $this->assertSame( 200, $response->get_status() ); + $this->assertArrayHasKey( 'image_quality', $data ); + // The full-size image (> 300px wide) keeps the default quality. + $this->assertSame( 82, $data['image_quality']['default'] ); + // The thumbnail size (150x150) is <= 300px and diverges to 60. + $this->assertArrayHasKey( 'thumbnail', $data['image_quality']['sizes'] ); + $this->assertSame( 60, $data['image_quality']['sizes']['thumbnail'] ); + } + + /** + * The reported quality must include the legacy jpeg_quality filter, the same + * way WP_Image_Editor::set_quality() applies it for JPEG output. + * + * @ticket 65262 + * @requires function imagejpeg + */ + public function test_image_quality_honors_jpeg_quality_filter() { + wp_set_current_user( self::$editor_id ); + $attachment = self::factory()->attachment->create_upload_object( self::$test_file ); + + $filter = static function () { + return 70; + }; + add_filter( 'jpeg_quality', $filter ); + + $request = new WP_REST_Request( 'GET', "/wp/v2/media/{$attachment}" ); + $request->set_param( 'context', 'edit' ); + $response = rest_do_request( $request ); + $data = $response->get_data(); + + remove_filter( 'jpeg_quality', $filter ); + + $this->assertSame( 200, $response->get_status() ); + // JPEG output, so the jpeg_quality filter overrides the 82 default. + $this->assertSame( 70, $data['image_quality']['default'] ); + } + /** * Tests the image_output_format / image_save_progressive schema properties. * From 712a6af535404862eb893376ee3f2a712411a9be Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Thu, 2 Jul 2026 23:44:39 +0000 Subject: [PATCH 309/327] Coding Standards: Simplify plugin name fallback in entity `view-config.php`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Simplifies the plugin name resolution in by replacing the nested `isset()` checks with a null coalescing chain. No functional change — the fallback order is preserved: plugin's registered `Name`, then the template's `plugin` attribute, then the `theme` attribute. Follow-up to [62547]. Props Soean. See #64897. git-svn-id: https://develop.svn.wordpress.org/trunk@62631 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/view-config.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/wp-includes/view-config.php b/src/wp-includes/view-config.php index 8b7e019e48b84..5676fcaec1e2b 100644 --- a/src/wp-includes/view-config.php +++ b/src/wp-includes/view-config.php @@ -660,11 +660,7 @@ function _wp_get_entity_view_config_post_type_wp_template( $config ) { if ( '' === $plugin_name ) { $plugins = get_plugins(); $plugin_basename = plugin_basename( sanitize_text_field( $template->theme . '.php' ) ); - if ( isset( $plugins[ $plugin_basename ] ) && isset( $plugins[ $plugin_basename ]['Name'] ) ) { - $plugin_name = $plugins[ $plugin_basename ]['Name']; - } else { - $plugin_name = $template->plugin ?? $template->theme; - } + $plugin_name = $plugins[ $plugin_basename ]['Name'] ?? $template->plugin ?? $template->theme; } $author_text = $plugin_name; break; From 97e8e28e6b7586971a47612ffeba70aa95630a51 Mon Sep 17 00:00:00 2001 From: Marin Atanasov <tyxla@git.wordpress.org> Date: Fri, 3 Jul 2026 15:36:02 +0000 Subject: [PATCH 310/327] Media: Enable Media Library infinite scrolling and add an opt-out user option. Infinite scrolling in the Media Library grid is now enabled by default. Users can now opt out via a new "Infinite Scrolling" user option on the profile screen, labeled "Disable infinite scrolling in the Media Library grid view". The option is only shown to users with the `upload_files` capability, since the attachment grid is unreachable without it. Precedence is resolved as follows: the `media_library_infinite_scrolling` filter takes precedence over everything, so a hooked filter always wins. Absent a filter, the user's opt-out preference applies. Absent both, infinite scrolling defaults to enabled. Include unit tests covering persistence of the new user option and the filter, preference, and default precedence. Props tyxla, youknowriad, joedolson, sachinrajcp123. Fixes #65564. git-svn-id: https://develop.svn.wordpress.org/trunk@62632 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/user.php | 1 + src/wp-admin/user-edit.php | 11 ++++++ src/wp-includes/media.php | 17 +++++++-- src/wp-includes/user.php | 5 ++- tests/phpunit/tests/media.php | 63 ++++++++++++++++++++++++++++++++++ tests/phpunit/tests/user.php | 1 + 6 files changed, 94 insertions(+), 4 deletions(-) diff --git a/src/wp-admin/includes/user.php b/src/wp-admin/includes/user.php index 477ee9b5af4b7..255358b48afaa 100644 --- a/src/wp-admin/includes/user.php +++ b/src/wp-admin/includes/user.php @@ -134,6 +134,7 @@ function edit_user( $user_id = 0 ) { if ( $update ) { $user->rich_editing = isset( $_POST['rich_editing'] ) && 'false' === $_POST['rich_editing'] ? 'false' : 'true'; $user->syntax_highlighting = isset( $_POST['syntax_highlighting'] ) && 'false' === $_POST['syntax_highlighting'] ? 'false' : 'true'; + $user->infinite_scrolling = isset( $_POST['infinite_scrolling'] ) && 'false' === $_POST['infinite_scrolling'] ? 'false' : 'true'; $user->admin_color = isset( $_POST['admin_color'] ) ? sanitize_text_field( $_POST['admin_color'] ) : 'modern'; $user->show_admin_bar_front = isset( $_POST['admin_bar_front'] ) ? 'true' : 'false'; } diff --git a/src/wp-admin/user-edit.php b/src/wp-admin/user-edit.php index c25380a93ee91..5d45c63801bfe 100644 --- a/src/wp-admin/user-edit.php +++ b/src/wp-admin/user-edit.php @@ -376,6 +376,17 @@ </td> </tr> + <?php if ( user_can( $profile_user, 'upload_files' ) ) : ?> + <tr class="user-infinite-scrolling-wrap"> + <th scope="row"><?php _e( 'Infinite Scrolling' ); ?></th> + <td> + <label for="infinite_scrolling"><input name="infinite_scrolling" type="checkbox" id="infinite_scrolling" value="false" <?php checked( 'false', $profile_user->infinite_scrolling ); ?> /> + <?php _e( 'Disable infinite scrolling in the Media Library grid view' ); ?> + </label> + </td> + </tr> + <?php endif; ?> + <?php $languages = get_available_languages(); $can_install_translations = current_user_can( 'install_languages' ) && wp_can_install_language_pack(); diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index 17497edc0454b..8d99dfa037e0c 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -5040,14 +5040,25 @@ function wp_enqueue_media( $args = array() ) { ); } + $infinite_scrolling = true; + + // A user can opt out of infinite scrolling via their profile's personal options. + if ( 'false' === get_user_option( 'infinite_scrolling' ) ) { + $infinite_scrolling = false; + } + /** - * Filters whether the Media Library grid has infinite scrolling. Default `false`. + * Filters whether the Media Library grid has infinite scrolling. Default `true`. + * + * This setting respects the current user's "Infinite Scrolling" personal + * option, but a filter callback takes precedence over that preference. * * @since 5.8.0 + * @since 7.1.0 Changed default to `true` and introduced per-user opt-out of infinite scrolling. * - * @param bool $infinite Whether the Media Library grid has infinite scrolling. + * @param bool $infinite_scrolling Whether the Media Library grid has infinite scrolling. */ - $infinite_scrolling = apply_filters( 'media_library_infinite_scrolling', false ); + $infinite_scrolling = apply_filters( 'media_library_infinite_scrolling', $infinite_scrolling ); $settings = array( 'tabs' => $tabs, diff --git a/src/wp-includes/user.php b/src/wp-includes/user.php index 7c856f0963634..5f22441f2c375 100644 --- a/src/wp-includes/user.php +++ b/src/wp-includes/user.php @@ -2245,6 +2245,7 @@ function wp_insert_user( $userdata ) { 'description', 'rich_editing', 'syntax_highlighting', + 'infinite_scrolling', 'comment_shortcuts', 'admin_color', 'use_ssl', @@ -2509,6 +2510,8 @@ function wp_insert_user( $userdata ) { $meta['syntax_highlighting'] = empty( $userdata['syntax_highlighting'] ) ? 'true' : $userdata['syntax_highlighting']; + $meta['infinite_scrolling'] = empty( $userdata['infinite_scrolling'] ) ? 'true' : $userdata['infinite_scrolling']; + $meta['comment_shortcuts'] = empty( $userdata['comment_shortcuts'] ) || 'false' === $userdata['comment_shortcuts'] ? 'false' : 'true'; $admin_color = empty( $userdata['admin_color'] ) ? 'modern' : $userdata['admin_color']; @@ -3019,7 +3022,7 @@ function wp_create_user( * @return string[] List of user keys to be populated in wp_update_user(). */ function _get_additional_user_keys( $user ) { - $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'syntax_highlighting', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'locale' ); + $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'syntax_highlighting', 'infinite_scrolling', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front', 'locale' ); return array_merge( $keys, array_keys( wp_get_user_contact_methods( $user ) ) ); } diff --git a/tests/phpunit/tests/media.php b/tests/phpunit/tests/media.php index 808ded68b5b22..e6ef098938a46 100644 --- a/tests/phpunit/tests/media.php +++ b/tests/phpunit/tests/media.php @@ -109,6 +109,69 @@ public function test_img_caption_shortcode_added() { $this->assertSame( 'img_caption_shortcode', $shortcode_tags['wp_caption'] ); } + /** + * Tests the precedence rules for the Media Library infinite scrolling setting. + * + * Infinite scrolling is enabled by default. A user can opt out via the + * `infinite_scrolling` personal option, and the + * `media_library_infinite_scrolling` filter takes precedence over both. + * + * @ticket 65564 + * + * @covers ::wp_enqueue_media + */ + public function test_wp_enqueue_media_infinite_scrolling_precedence() { + $user_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); + wp_set_current_user( $user_id ); + + // Default: no user preference and no filter, infinite scrolling is enabled. + $this->assertSame( + 1, + $this->get_media_infinite_scrolling_setting(), + 'Infinite scrolling should be enabled by default.' + ); + + // User preference: disabling it via the personal option turns it off. + update_user_meta( $user_id, 'infinite_scrolling', 'false' ); + $this->assertSame( + 0, + $this->get_media_infinite_scrolling_setting(), + 'The user preference should disable infinite scrolling.' + ); + + // Filter precedence: a filter overrides the user preference. + add_filter( 'media_library_infinite_scrolling', '__return_true' ); + $this->assertSame( + 1, + $this->get_media_infinite_scrolling_setting(), + 'The filter should take precedence over the user preference.' + ); + } + + /** + * Helper that runs wp_enqueue_media() and returns the computed + * `infiniteScrolling` media view setting. + * + * @return int The infiniteScrolling setting: 1 when enabled, 0 when disabled. + */ + private function get_media_infinite_scrolling_setting() { + // wp_enqueue_media() only runs once per request; reset the guard so it + // can be invoked again for each scenario. + unset( $GLOBALS['wp_actions']['wp_enqueue_media'] ); + + $infinite_scrolling = null; + $capture = static function ( $settings ) use ( &$infinite_scrolling ) { + $infinite_scrolling = $settings['infiniteScrolling']; + return $settings; + }; + + add_filter( 'media_view_settings', $capture ); + wp_enqueue_media(); + remove_filter( 'media_view_settings', $capture ); + + return $infinite_scrolling; + } + public function test_img_caption_shortcode_with_empty_params() { $result = img_caption_shortcode( array() ); $this->assertSame( '', $result ); diff --git a/tests/phpunit/tests/user.php b/tests/phpunit/tests/user.php index d4122b2924113..f600adbcb1164 100644 --- a/tests/phpunit/tests/user.php +++ b/tests/phpunit/tests/user.php @@ -438,6 +438,7 @@ public function test_update_user() { 'show_admin_bar_front' => 1, 'rich_editing' => 1, 'syntax_highlighting' => 1, + 'infinite_scrolling' => 'false', // See #65564. 'first_name' => 'first', 'last_name' => 'last', 'nickname' => 'nick', From 07bfe377d69ff4c842e94418390aeb86e988d466 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Sat, 4 Jul 2026 16:52:08 +0000 Subject: [PATCH 311/327] Robots: Use `admin_url()` for the `robots.txt` admin paths. Derive the `Disallow` and `Allow` directives in `do_robots()` from `admin_url()` and `admin_url( 'admin-ajax.php' )` rather than from a hardcoded `/wp-admin/` path built off `site_url()`. Only the URL path portion is emitted, as before, so installs that relocate or filter their admin URL now produce a correct default `robots.txt`. Also guard the `Content-Type` header with a `headers_sent()` check to avoid a warning when the headers have already been sent. Developed in https://github.com/WordPress/wordpress-develop/pull/11998. Follow-up to r34985. Props masteradhoc, yogeshbhutkar, hrohh, westonruter, mukeshpanchal27, 1ucay. Fixes #63467. git-svn-id: https://develop.svn.wordpress.org/trunk@62633 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/functions.php | 10 +++++----- tests/phpunit/tests/robots.php | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index b576896d9904b..d329b3463bb50 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -1711,7 +1711,9 @@ function do_feed_atom( $for_comments ) { * filter callback. */ function do_robots() { - header( 'Content-Type: text/plain; charset=utf-8' ); + if ( ! headers_sent() ) { + header( 'Content-Type: text/plain; charset=utf-8' ); + } /** * Fires when displaying the robots.txt file. @@ -1723,10 +1725,8 @@ function do_robots() { $output = "User-agent: *\n"; $public = (bool) get_option( 'blog_public' ); - $site_url = parse_url( site_url() ); - $path = ( ! empty( $site_url['path'] ) ) ? $site_url['path'] : ''; - $output .= "Disallow: $path/wp-admin/\n"; - $output .= "Allow: $path/wp-admin/admin-ajax.php\n"; + $output .= 'Disallow: ' . wp_parse_url( admin_url(), PHP_URL_PATH ) . "\n"; + $output .= 'Allow: ' . wp_parse_url( admin_url( 'admin-ajax.php' ), PHP_URL_PATH ) . "\n"; /** * Filters the robots.txt output. diff --git a/tests/phpunit/tests/robots.php b/tests/phpunit/tests/robots.php index 356224e79b51d..6baaecfd44244 100644 --- a/tests/phpunit/tests/robots.php +++ b/tests/phpunit/tests/robots.php @@ -144,6 +144,26 @@ public function test_wp_robots_non_search_page() { $this->assertStringNotContainsString( 'noindex', $output ); } + /** + * @ticket 63467 + */ + public function test_do_robots_uses_filtered_admin_url_paths(): void { + add_filter( + 'admin_url', + static function ( string $url, string $path, ?int $blog_id, string $scheme ): string { + return home_url( "/control/$path", $scheme ); + }, + 10, + 4 + ); + + $output = get_echo( 'do_robots' ); + + $this->assertStringNotContainsString( 'wp-admin', $output ); + $this->assertStringContainsString( "Disallow: /control/\n", $output ); + $this->assertStringContainsString( "Allow: /control/admin-ajax.php\n", $output ); + } + public function add_noindex_directive( array $robots ) { $robots['noindex'] = true; return $robots; From f5dc6f24c59f452da4233da95606d35cc0dbb7d4 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sat, 4 Jul 2026 23:32:48 +0000 Subject: [PATCH 312/327] Site Health: Remove redundant `function_exists( 'ini_get' )` checks. The `ini_get()` function is called unconditionally early in the bootstrap process, so there is no need for subsequent `function_exists( 'ini_get' )` checks. Follow-up to [44986], [45104]. Props siliconforks, shreyasikhar26, ankitkumarshah, westonruter, SergeyBiryukov. Fixes #65423. git-svn-id: https://develop.svn.wordpress.org/trunk@62634 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-debug-data.php | 151 +++++++----------- .../includes/class-wp-site-health.php | 10 -- src/wp-includes/functions.php | 7 +- 3 files changed, 63 insertions(+), 105 deletions(-) diff --git a/src/wp-admin/includes/class-wp-debug-data.php b/src/wp-admin/includes/class-wp-debug-data.php index f2399b30550c9..aada2f88dfaa6 100644 --- a/src/wp-admin/includes/class-wp-debug-data.php +++ b/src/wp-admin/includes/class-wp-debug-data.php @@ -387,57 +387,44 @@ private static function get_wp_server(): array { 'debug' => PHP_SAPI, ); - // Some servers disable `ini_set()` and `ini_get()`, we check this before trying to get configuration values. - if ( ! function_exists( 'ini_get' ) ) { - $fields['ini_get'] = array( - 'label' => __( 'Server settings' ), - 'value' => sprintf( - /* translators: %s: ini_get() */ - __( 'Unable to determine some settings, as the %s function has been disabled.' ), - 'ini_get()' - ), - 'debug' => 'ini_get() is disabled', - ); - } else { - $fields['max_input_variables'] = array( - 'label' => __( 'PHP max input variables' ), - 'value' => ini_get( 'max_input_vars' ), - ); - $fields['time_limit'] = array( - 'label' => __( 'PHP time limit' ), - 'value' => ini_get( 'max_execution_time' ), - ); - - if ( WP_Site_Health::get_instance()->php_memory_limit !== ini_get( 'memory_limit' ) ) { - $fields['memory_limit'] = array( - 'label' => __( 'PHP memory limit' ), - 'value' => WP_Site_Health::get_instance()->php_memory_limit, - ); - $fields['admin_memory_limit'] = array( - 'label' => __( 'PHP memory limit (only for admin screens)' ), - 'value' => ini_get( 'memory_limit' ), - ); - } else { - $fields['memory_limit'] = array( - 'label' => __( 'PHP memory limit' ), - 'value' => ini_get( 'memory_limit' ), - ); - } + $fields['max_input_variables'] = array( + 'label' => __( 'PHP max input variables' ), + 'value' => ini_get( 'max_input_vars' ), + ); + $fields['time_limit'] = array( + 'label' => __( 'PHP time limit' ), + 'value' => ini_get( 'max_execution_time' ), + ); - $fields['max_input_time'] = array( - 'label' => __( 'Max input time' ), - 'value' => ini_get( 'max_input_time' ), + if ( WP_Site_Health::get_instance()->php_memory_limit !== ini_get( 'memory_limit' ) ) { + $fields['memory_limit'] = array( + 'label' => __( 'PHP memory limit' ), + 'value' => WP_Site_Health::get_instance()->php_memory_limit, ); - $fields['upload_max_filesize'] = array( - 'label' => __( 'Upload max filesize' ), - 'value' => ini_get( 'upload_max_filesize' ), + $fields['admin_memory_limit'] = array( + 'label' => __( 'PHP memory limit (only for admin screens)' ), + 'value' => ini_get( 'memory_limit' ), ); - $fields['php_post_max_size'] = array( - 'label' => __( 'PHP post max size' ), - 'value' => ini_get( 'post_max_size' ), + } else { + $fields['memory_limit'] = array( + 'label' => __( 'PHP memory limit' ), + 'value' => ini_get( 'memory_limit' ), ); } + $fields['max_input_time'] = array( + 'label' => __( 'Max input time' ), + 'value' => ini_get( 'max_input_time' ), + ); + $fields['upload_max_filesize'] = array( + 'label' => __( 'Upload max filesize' ), + 'value' => ini_get( 'upload_max_filesize' ), + ); + $fields['php_post_max_size'] = array( + 'label' => __( 'PHP post max size' ), + 'value' => ini_get( 'post_max_size' ), + ); + if ( function_exists( 'curl_version' ) ) { $curl = curl_version(); @@ -676,47 +663,35 @@ private static function get_wp_media(): array { 'value' => ( $imagick_version ) ? $imagick_version : __( 'Not available' ), ); - if ( ! function_exists( 'ini_get' ) ) { - $fields['ini_get'] = array( - 'label' => __( 'File upload settings' ), - 'value' => sprintf( - /* translators: %s: ini_get() */ - __( 'Unable to determine some settings, as the %s function has been disabled.' ), - 'ini_get()' - ), - 'debug' => 'ini_get() is disabled', - ); - } else { - // Get the PHP ini directive values. - $file_uploads = ini_get( 'file_uploads' ); - $post_max_size = ini_get( 'post_max_size' ); - $upload_max_filesize = ini_get( 'upload_max_filesize' ); - $max_file_uploads = ini_get( 'max_file_uploads' ); - $effective = min( wp_convert_hr_to_bytes( $post_max_size ), wp_convert_hr_to_bytes( $upload_max_filesize ) ); - - // Add info in Media section. - $fields['file_uploads'] = array( - 'label' => __( 'File uploads' ), - 'value' => $file_uploads ? __( 'Enabled' ) : __( 'Disabled' ), - 'debug' => $file_uploads, - ); - $fields['post_max_size'] = array( - 'label' => __( 'Max size of post data allowed' ), - 'value' => $post_max_size, - ); - $fields['upload_max_filesize'] = array( - 'label' => __( 'Max size of an uploaded file' ), - 'value' => $upload_max_filesize, - ); - $fields['max_effective_size'] = array( - 'label' => __( 'Max effective file size' ), - 'value' => size_format( $effective ), - ); - $fields['max_file_uploads'] = array( - 'label' => __( 'Max simultaneous file uploads' ), - 'value' => $max_file_uploads, - ); - } + // Get the PHP ini directive values. + $file_uploads = ini_get( 'file_uploads' ); + $post_max_size = ini_get( 'post_max_size' ); + $upload_max_filesize = ini_get( 'upload_max_filesize' ); + $max_file_uploads = ini_get( 'max_file_uploads' ); + $effective = min( wp_convert_hr_to_bytes( $post_max_size ), wp_convert_hr_to_bytes( $upload_max_filesize ) ); + + // Add info in Media section. + $fields['file_uploads'] = array( + 'label' => __( 'File uploads' ), + 'value' => $file_uploads ? __( 'Enabled' ) : __( 'Disabled' ), + 'debug' => $file_uploads, + ); + $fields['post_max_size'] = array( + 'label' => __( 'Max size of post data allowed' ), + 'value' => $post_max_size, + ); + $fields['upload_max_filesize'] = array( + 'label' => __( 'Max size of an uploaded file' ), + 'value' => $upload_max_filesize, + ); + $fields['max_effective_size'] = array( + 'label' => __( 'Max effective file size' ), + 'value' => size_format( $effective ), + ); + $fields['max_file_uploads'] = array( + 'label' => __( 'Max simultaneous file uploads' ), + 'value' => $max_file_uploads, + ); // If Imagick is used as our editor, provide some more information about its limitations. if ( 'WP_Image_Editor_Imagick' === _wp_image_editor_choose() && isset( $imagick ) && $imagick instanceof Imagick ) { @@ -1977,9 +1952,7 @@ public static function get_sizes() { * from causing a timeout. The default value is 30 seconds, and some * hosts do not allow you to read configuration values. */ - if ( function_exists( 'ini_get' ) ) { - $max_execution_time = ini_get( 'max_execution_time' ); - } + $max_execution_time = ini_get( 'max_execution_time' ); /* * The max_execution_time defaults to 0 when PHP runs from cli. diff --git a/src/wp-admin/includes/class-wp-site-health.php b/src/wp-admin/includes/class-wp-site-health.php index 415004cff4845..1a7a35f63e126 100644 --- a/src/wp-admin/includes/class-wp-site-health.php +++ b/src/wp-admin/includes/class-wp-site-health.php @@ -2322,16 +2322,6 @@ public function get_test_file_uploads() { 'test' => 'file_uploads', ); - if ( ! function_exists( 'ini_get' ) ) { - $result['status'] = 'critical'; - $result['description'] .= sprintf( - /* translators: %s: ini_get() */ - __( 'The %s function has been disabled, some media settings are unavailable because of this.' ), - '<code>ini_get()</code>' - ); - return $result; - } - if ( empty( ini_get( 'file_uploads' ) ) ) { $result['status'] = 'critical'; $result['description'] .= sprintf( diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index d329b3463bb50..f4b60dfbd4e3a 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -8878,12 +8878,7 @@ function recurse_dirsize( $directory, $exclude = null, $max_execution_time = nul if ( null === $max_execution_time ) { // Keep the previous behavior but attempt to prevent fatal errors from timeout if possible. - if ( function_exists( 'ini_get' ) ) { - $max_execution_time = ini_get( 'max_execution_time' ); - } else { - // Disable... - $max_execution_time = 0; - } + $max_execution_time = ini_get( 'max_execution_time' ); // Leave 1 second "buffer" for other operations if $max_execution_time has reasonable value. if ( $max_execution_time > 10 ) { From a5c010ee8f6ec8c4648aebbcc99b3a2428b042e7 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Sun, 5 Jul 2026 00:27:24 +0000 Subject: [PATCH 313/327] Docs: Modernize and improve specificity of types in `WP_Error` class. This brings the `WP_Error` class to full PHPStan rule level 10 compliance. Also make use of null coalescing operator where appropriate, and simplify `has_errors()` method. Developed in https://github.com/WordPress/wordpress-develop/pull/12405. Follow-up to r42761, r49115, r49116. See #64898, #64897. git-svn-id: https://develop.svn.wordpress.org/trunk@62635 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-error.php | 31 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/wp-includes/class-wp-error.php b/src/wp-includes/class-wp-error.php index de721468fdf13..d5b3dc729a0c1 100644 --- a/src/wp-includes/class-wp-error.php +++ b/src/wp-includes/class-wp-error.php @@ -21,7 +21,7 @@ class WP_Error { * Stores the list of errors. * * @since 2.1.0 - * @var array + * @var array<int|string, string[]> */ public $errors = array(); @@ -29,7 +29,7 @@ class WP_Error { * Stores the most recently added data for each error code. * * @since 2.1.0 - * @var array + * @var array<int|string, mixed> */ public $error_data = array(); @@ -37,7 +37,7 @@ class WP_Error { * Stores previously added data added for error codes, oldest-to-newest by code. * * @since 5.6.0 - * @var array[] + * @var array<int|string, mixed[]> */ protected $additional_data = array(); @@ -71,7 +71,7 @@ public function __construct( $code = '', $message = '', $data = '' ) { * * @since 2.1.0 * - * @return array List of error codes, if available. + * @return list<int|string> List of error codes, if available. */ public function get_error_codes() { if ( ! $this->has_errors() ) { @@ -111,18 +111,14 @@ public function get_error_messages( $code = '' ) { // Return all messages if no code specified. if ( empty( $code ) ) { $all_messages = array(); - foreach ( (array) $this->errors as $code => $messages ) { + foreach ( (array) $this->errors as $messages ) { $all_messages = array_merge( $all_messages, $messages ); } return $all_messages; } - if ( isset( $this->errors[ $code ] ) ) { - return $this->errors[ $code ]; - } else { - return array(); - } + return $this->errors[ $code ] ?? array(); } /** @@ -161,9 +157,7 @@ public function get_error_data( $code = '' ) { $code = $this->get_error_code(); } - if ( isset( $this->error_data[ $code ] ) ) { - return $this->error_data[ $code ]; - } + return $this->error_data[ $code ] ?? null; } /** @@ -174,10 +168,7 @@ public function get_error_data( $code = '' ) { * @return bool If the instance contains errors. */ public function has_errors() { - if ( ! empty( $this->errors ) ) { - return true; - } - return false; + return (bool) $this->errors; } /** @@ -188,6 +179,7 @@ public function has_errors() { * @param string|int $code Error code. * @param string $message Error message. * @param mixed $data Optional. Error data. Default empty string. + * @return void */ public function add( $code, $message, $data = '' ) { $this->errors[ $code ][] = $message; @@ -217,6 +209,7 @@ public function add( $code, $message, $data = '' ) { * * @param mixed $data Error data. * @param string|int $code Error code. + * @return void */ public function add_data( $data, $code = '' ) { if ( empty( $code ) ) { @@ -265,6 +258,7 @@ public function get_all_error_data( $code = '' ) { * @since 4.1.0 * * @param string|int $code Error code. + * @return void */ public function remove( $code ) { unset( $this->errors[ $code ] ); @@ -278,6 +272,7 @@ public function remove( $code ) { * @since 5.6.0 * * @param WP_Error $error Error object to merge. + * @return void */ public function merge_from( WP_Error $error ) { static::copy_errors( $error, $this ); @@ -289,6 +284,7 @@ public function merge_from( WP_Error $error ) { * @since 5.6.0 * * @param WP_Error $error Error object to export into. + * @return void */ public function export_to( WP_Error $error ) { static::copy_errors( $this, $error ); @@ -301,6 +297,7 @@ public function export_to( WP_Error $error ) { * * @param WP_Error $from The WP_Error to copy from. * @param WP_Error $to The WP_Error to copy to. + * @return void */ protected static function copy_errors( WP_Error $from, WP_Error $to ) { foreach ( $from->get_error_codes() as $code ) { From b956786b05187622b5c491d051a37b4e65bf82b0 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Sun, 5 Jul 2026 00:46:16 +0000 Subject: [PATCH 314/327] Filesystem: Fix subdirectory recursion in `WP_Filesystem_Direct::chgrp()` and `::chown()`. This applies the equivalent fix which had previously been done to `::chmod()`. Tests are added for all three methods. Developed in subset of https://github.com/WordPress/wordpress-develop/pull/11593. Follow-up to r12997. Fixes #65584. See #65409, #11261. git-svn-id: https://develop.svn.wordpress.org/trunk@62636 602fd350-edb4-49c9-b593-d223f7449a82 --- .../includes/class-wp-filesystem-direct.php | 8 ++--- .../filesystem/wpFilesystemDirect/base.php | 2 +- .../filesystem/wpFilesystemDirect/chgrp.php | 32 +++++++++++++++++++ .../filesystem/wpFilesystemDirect/chmod.php | 27 ++++++++++++++++ .../filesystem/wpFilesystemDirect/chown.php | 32 +++++++++++++++++++ 5 files changed, 96 insertions(+), 5 deletions(-) diff --git a/src/wp-admin/includes/class-wp-filesystem-direct.php b/src/wp-admin/includes/class-wp-filesystem-direct.php index a4b197c15229f..c204951a49adb 100644 --- a/src/wp-admin/includes/class-wp-filesystem-direct.php +++ b/src/wp-admin/includes/class-wp-filesystem-direct.php @@ -139,8 +139,8 @@ public function chgrp( $file, $group, $recursive = false ) { $file = trailingslashit( $file ); $filelist = $this->dirlist( $file ); - foreach ( $filelist as $filename ) { - $this->chgrp( $file . $filename, $group, $recursive ); + foreach ( $filelist as $file_listing ) { + $this->chgrp( $file . $file_listing['name'], $group, $recursive ); } return true; @@ -227,8 +227,8 @@ public function chown( $file, $owner, $recursive = false ) { // Is a directory, and we want recursive. $filelist = $this->dirlist( $file ); - foreach ( $filelist as $filename ) { - $this->chown( $file . '/' . $filename, $owner, $recursive ); + foreach ( $filelist as $file_listing ) { + $this->chown( $file . '/' . $file_listing['name'], $owner, $recursive ); } return true; diff --git a/tests/phpunit/tests/filesystem/wpFilesystemDirect/base.php b/tests/phpunit/tests/filesystem/wpFilesystemDirect/base.php index 96b449dd0306a..4cdeeca73181e 100644 --- a/tests/phpunit/tests/filesystem/wpFilesystemDirect/base.php +++ b/tests/phpunit/tests/filesystem/wpFilesystemDirect/base.php @@ -17,7 +17,7 @@ abstract class WP_Filesystem_Direct_UnitTestCase extends WP_UnitTestCase { /** * The file structure for tests. * - * @var array + * @var array<string, array{type: string, path: string, contents?: string}> */ protected static $file_structure = array(); diff --git a/tests/phpunit/tests/filesystem/wpFilesystemDirect/chgrp.php b/tests/phpunit/tests/filesystem/wpFilesystemDirect/chgrp.php index a56e5c5ac2b41..ae232b6a56668 100644 --- a/tests/phpunit/tests/filesystem/wpFilesystemDirect/chgrp.php +++ b/tests/phpunit/tests/filesystem/wpFilesystemDirect/chgrp.php @@ -29,4 +29,36 @@ class Tests_Filesystem_WpFilesystemDirect_Chgrp extends WP_Filesystem_Direct_Uni public function test_should_fail_to_change_file_group( $path ) { $this->assertFalse( self::$filesystem->chgrp( self::$file_structure['test_dir']['path'] . $path, 0 ) ); } + + /** + * Tests that recursive {@see WP_Filesystem_Direct::chgrp()} descends into subdirectories. + * + * The resulting group cannot be asserted without elevated privileges, so recursion is + * verified by recording the paths passed to {@see WP_Filesystem_Direct::chgrp()}. Changing each item to its current + * group is a permitted no-op that avoids requiring root and its "Operation not permitted" warning. + * + * @ticket 65584 + */ + public function test_should_recurse_into_subdirectories(): void { + $directory = untrailingslashit( self::$file_structure['test_dir']['path'] ); + $nested_file = self::$file_structure['subfile']['path']; + + $spy = new class( null ) extends WP_Filesystem_Direct { + /** @var string[] */ + public array $visited = array(); + + public function chgrp( $file, $group, $recursive = false ) { + $this->visited[] = $file; + return parent::chgrp( $file, $group, $recursive ); + } + }; + + $spy->chgrp( $directory, (int) filegroup( $directory ), true ); + + $this->assertContains( + $nested_file, + $spy->visited, + 'chgrp() did not recurse into the nested subdirectory.' + ); + } } diff --git a/tests/phpunit/tests/filesystem/wpFilesystemDirect/chmod.php b/tests/phpunit/tests/filesystem/wpFilesystemDirect/chmod.php index 4deb47c4f09fb..fef30631730e0 100644 --- a/tests/phpunit/tests/filesystem/wpFilesystemDirect/chmod.php +++ b/tests/phpunit/tests/filesystem/wpFilesystemDirect/chmod.php @@ -74,4 +74,31 @@ public function data_should_set_mode_when_not_passed() { ), ); } + + /** + * Tests that recursive {@see WP_Filesystem_Direct::chmod()} applies the mode to files in subdirectories. + * + * @ticket 65584 + */ + public function test_should_change_mode_recursively(): void { + if ( self::is_windows() ) { + $this->markTestSkipped( 'chmod() does not support octal modes on Windows.' ); + } + + $directory = untrailingslashit( self::$file_structure['test_dir']['path'] ); + $nested_file = self::$file_structure['subfile']['path']; + + $this->assertTrue( + self::$filesystem->chmod( $directory, 0640, true ), + 'chmod() did not report success.' + ); + + clearstatcache(); + + $this->assertSame( + '640', + self::$filesystem->getchmod( $nested_file ), + 'The mode was not applied to a file in a nested subdirectory.' + ); + } } diff --git a/tests/phpunit/tests/filesystem/wpFilesystemDirect/chown.php b/tests/phpunit/tests/filesystem/wpFilesystemDirect/chown.php index 040693b03c54c..709959a7fab43 100644 --- a/tests/phpunit/tests/filesystem/wpFilesystemDirect/chown.php +++ b/tests/phpunit/tests/filesystem/wpFilesystemDirect/chown.php @@ -29,4 +29,36 @@ class Tests_Filesystem_WpFilesystemDirect_Chown extends WP_Filesystem_Direct_Uni public function test_should_return_false( $path ) { $this->assertFalse( self::$filesystem->chown( $path, fileowner( __FILE__ ) ) ); } + + /** + * Tests that recursive {@see WP_Filesystem_Direct::chown()} descends into subdirectories. + * + * The resulting owner cannot be asserted without elevated privileges, so recursion is + * verified by recording the paths passed to {@see WP_Filesystem_Direct::chown()}. Changing each item to its current + * owner is a permitted no-op that avoids requiring root and its "Operation not permitted" warning. + * + * @ticket 65584 + */ + public function test_should_recurse_into_subdirectories(): void { + $directory = untrailingslashit( self::$file_structure['test_dir']['path'] ); + $nested_file = self::$file_structure['subfile']['path']; + + $spy = new class( null ) extends WP_Filesystem_Direct { + /** @var string[] */ + public array $visited = array(); + + public function chown( $file, $owner, $recursive = false ) { + $this->visited[] = $file; + return parent::chown( $file, $owner, $recursive ); + } + }; + + $spy->chown( $directory, (int) fileowner( $directory ), true ); + + $this->assertContains( + $nested_file, + $spy->visited, + 'chown() did not recurse into the nested subdirectory.' + ); + } } From a13c8a2e2e41f8f5d3c539da5b4037026532c989 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Sun, 5 Jul 2026 01:15:23 +0000 Subject: [PATCH 315/327] Filesystem API: Improve type safety across the transport classes. Change the optional constructor argument of `WP_Filesystem_FTPext`, `WP_Filesystem_ftpsockets`, and `WP_Filesystem_SSH2` from an empty string default to an empty `array`, matching how the argument is actually consumed, and improve the associated DocBlocks. These classes were also brought to adherence with PHPStan rule level 10: * Add `FileListing` and `Options` array shapes, and initialize each transport's `$options` to a complete default array before any early return. * Correct several inaccurate `@return` descriptions, including the `group()` methods that had been describing the owner. * Allow `WP_Filesystem_SSH2::connect()` to be retried after a failed connection attempt. * Stop `WP_Filesystem_FTPext::parselisting()` from leaking its intermediate date-parsing keys into the returned listing. * Add `ext-ftp` and `ext-ssh2` to the suggested extensions in `composer.json`. Developed in https://github.com/WordPress/wordpress-develop/pull/11593. Follow-up to r62635, r62636. Props soean, westonruter, mukesh27. See #65584, #64898. Fixes #65409. git-svn-id: https://develop.svn.wordpress.org/trunk@62637 602fd350-edb4-49c9-b593-d223f7449a82 --- composer.json | 4 +- .../includes/class-wp-filesystem-base.php | 62 +++++--- .../includes/class-wp-filesystem-direct.php | 20 ++- .../includes/class-wp-filesystem-ftpext.php | 142 ++++++++++++----- .../class-wp-filesystem-ftpsockets.php | 116 +++++++++++--- .../includes/class-wp-filesystem-ssh2.php | 145 +++++++++++++----- 6 files changed, 363 insertions(+), 126 deletions(-) diff --git a/composer.json b/composer.json index a309ae762ac1a..b847ec2b61b55 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,9 @@ }, "suggest": { "ext-dom": "*", - "ext-mysqli": "*" + "ext-ftp": "*", + "ext-mysqli": "*", + "ext-ssh2": "*" }, "require-dev": { "composer/ca-bundle": "1.5.12", diff --git a/src/wp-admin/includes/class-wp-filesystem-base.php b/src/wp-admin/includes/class-wp-filesystem-base.php index 125c2d3b9a8b0..4972c8421cf11 100644 --- a/src/wp-admin/includes/class-wp-filesystem-base.php +++ b/src/wp-admin/includes/class-wp-filesystem-base.php @@ -10,6 +10,23 @@ * Base WordPress Filesystem class which Filesystem implementations extend. * * @since 2.5.0 + * + * @phpstan-type FileListing array{ + * name: string, + * perms?: string, + * permsn?: string, + * number?: int|string|false, + * owner?: string|int<1, max>|false, + * group?: string|int<1, max>|false, + * size: int|string|false, + * lastmodunix?: int|string|false, + * lastmod?: string|false, + * time: int|string|false, + * type: 'd'|'f'|'l', + * islink?: bool, + * isdir?: bool, + * files?: mixed[]|false, // The mixed[] is actually FileListing[] but PHPStan does not support recursive or self-referencing array shapes. + * } */ #[AllowDynamicProperties] class WP_Filesystem_Base { @@ -26,7 +43,7 @@ class WP_Filesystem_Base { * Cached list of local filepaths to mapped remote filepaths. * * @since 2.7.0 - * @var array + * @var array<string, string> */ public $cache = array(); @@ -44,6 +61,7 @@ class WP_Filesystem_Base { public $errors = null; /** + * @var array<string, mixed> */ public $options = array(); @@ -52,7 +70,7 @@ class WP_Filesystem_Base { * * @since 2.7.0 * - * @return string The location of the remote path. + * @return string|false The location of the remote path, or false on failure. */ public function abspath() { $folder = $this->find_folder( ABSPATH ); @@ -73,7 +91,7 @@ public function abspath() { * * @since 2.7.0 * - * @return string The location of the remote path. + * @return string|false The location of the remote path, or false on failure. */ public function wp_content_dir() { return $this->find_folder( WP_CONTENT_DIR ); @@ -84,7 +102,7 @@ public function wp_content_dir() { * * @since 2.7.0 * - * @return string The location of the remote path. + * @return string|false The location of the remote path, or false on failure. */ public function wp_plugins_dir() { return $this->find_folder( WP_PLUGIN_DIR ); @@ -97,10 +115,10 @@ public function wp_plugins_dir() { * * @param string|false $theme Optional. The theme stylesheet or template for the directory. * Default false. - * @return string The location of the remote path. + * @return string|false The location of the remote path, or false on failure. */ public function wp_themes_dir( $theme = false ) { - $theme_root = get_theme_root( $theme ); + $theme_root = get_theme_root( is_string( $theme ) ? $theme : '' ); // Account for relative theme roots. if ( '/themes' === $theme_root || ! is_dir( $theme_root ) ) { @@ -115,7 +133,7 @@ public function wp_themes_dir( $theme = false ) { * * @since 3.2.0 * - * @return string The location of the remote path. + * @return string|false The location of the remote path, or false on failure. */ public function wp_lang_dir() { return $this->find_folder( WP_LANG_DIR ); @@ -134,7 +152,7 @@ public function wp_lang_dir() { * * @param string $base Optional. The folder to start searching from. Default '.'. * @param bool $verbose Optional. True to display debug information. Default false. - * @return string The location of the remote path. + * @return string|false The location of the remote path, or false on failure. */ public function find_base_dir( $base = '.', $verbose = false ) { _deprecated_function( __FUNCTION__, '2.7.0', 'WP_Filesystem_Base::abspath() or WP_Filesystem_Base::wp_*_dir()' ); @@ -155,7 +173,7 @@ public function find_base_dir( $base = '.', $verbose = false ) { * * @param string $base Optional. The folder to start searching from. Default '.'. * @param bool $verbose Optional. True to display debug information. Default false. - * @return string The location of the remote path. + * @return string|false The location of the remote path, or false on failure. */ public function get_base_dir( $base = '.', $verbose = false ) { _deprecated_function( __FUNCTION__, '2.7.0', 'WP_Filesystem_Base::abspath() or WP_Filesystem_Base::wp_*_dir()' ); @@ -194,7 +212,9 @@ public function find_folder( $folder ) { } if ( $folder === $dir ) { - return trailingslashit( constant( $constant ) ); + /** @var string $constant_value */ + $constant_value = constant( $constant ); + return trailingslashit( $constant_value ); } } @@ -205,7 +225,9 @@ public function find_folder( $folder ) { } if ( 0 === stripos( $folder, $dir ) ) { // $folder starts with $dir. - $potential_folder = preg_replace( '#^' . preg_quote( $dir, '#' ) . '/#i', trailingslashit( constant( $constant ) ), $folder ); + /** @var string $constant_value */ + $constant_value = constant( $constant ); + $potential_folder = (string) preg_replace( '#^' . preg_quote( $dir, '#' ) . '/#i', trailingslashit( $constant_value ), $folder ); $potential_folder = trailingslashit( $potential_folder ); if ( $this->is_dir( $potential_folder ) ) { @@ -221,7 +243,7 @@ public function find_folder( $folder ) { return trailingslashit( $folder ); } - $folder = preg_replace( '|^([a-z]{1}):|i', '', $folder ); // Strip out Windows drive letter if it's there. + $folder = (string) preg_replace( '|^([a-z]{1}):|i', '', $folder ); // Strip out Windows drive letter if it's there. $folder = str_replace( '\\', '/', $folder ); // Windows path sanitization. if ( isset( $this->cache[ $folder ] ) ) { @@ -258,7 +280,8 @@ public function find_folder( $folder ) { */ public function search_for_folder( $folder, $base = '.', $loop = false ) { if ( empty( $base ) || '.' === $base ) { - $base = trailingslashit( $this->cwd() ); + $cwd = $this->cwd(); + $base = is_string( $cwd ) ? trailingslashit( $cwd ) : '/'; } $folder = untrailingslashit( $folder ); @@ -420,7 +443,7 @@ public function getchmod( $file ) { public function getnumchmodfromh( $mode ) { $realmode = ''; $legal = array( '', 'w', 'r', 'x', '-' ); - $attarray = preg_split( '//', $mode ); + $attarray = (array) preg_split( '//', $mode ); for ( $i = 0, $c = count( $attarray ); $i < $c; $i++ ) { $key = array_search( $attarray[ $i ], $legal, true ); @@ -440,9 +463,9 @@ public function getnumchmodfromh( $mode ) { $mode = strtr( $mode, $trans ); $newmode = $mode[0]; - $newmode .= $mode[1] + $mode[2] + $mode[3]; - $newmode .= $mode[4] + $mode[5] + $mode[6]; - $newmode .= $mode[7] + $mode[8] + $mode[9]; + $newmode .= (int) $mode[1] + (int) $mode[2] + (int) $mode[3]; + $newmode .= (int) $mode[4] + (int) $mode[5] + (int) $mode[6]; + $newmode .= (int) $mode[7] + (int) $mode[8] + (int) $mode[9]; return $newmode; } @@ -508,7 +531,7 @@ public function get_contents( $file ) { * @abstract * * @param string $file Path to the file. - * @return array|false File contents in an array on success, false on failure. + * @return string[]|false File contents in an array on success, false on failure. */ public function get_contents_array( $file ) { return false; @@ -851,12 +874,13 @@ public function rmdir( $path, $recursive = false ) { * False if not available. * @type string|false $lastmod Last modified month (3 letters) and day (without leading 0), or * false if not available. - * @type string|false $time Last modified time, or false if not available. + * @type int|string|false $time Last modified time. A Unix timestamp on FTP transports, or false if not available. * @type string $type Type of resource. 'f' for file, 'd' for directory, 'l' for link. * @type array|false $files If a directory and `$recursive` is true, contains another array of * files. False if unable to list directory contents. * } * } + * @phpstan-return array<string, FileListing>|false */ public function dirlist( $path, $include_hidden = true, $recursive = false ) { return false; diff --git a/src/wp-admin/includes/class-wp-filesystem-direct.php b/src/wp-admin/includes/class-wp-filesystem-direct.php index c204951a49adb..dad8e329b2421 100644 --- a/src/wp-admin/includes/class-wp-filesystem-direct.php +++ b/src/wp-admin/includes/class-wp-filesystem-direct.php @@ -12,6 +12,7 @@ * @since 2.5.0 * * @see WP_Filesystem_Base + * @phpstan-import-type FileListing from WP_Filesystem_Base */ class WP_Filesystem_Direct extends WP_Filesystem_Base { @@ -23,6 +24,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base { * @param mixed $arg Not used. */ public function __construct( $arg ) { + // The $arg parameter is required for signature parity with the other transports, but is unused here. + unset( $arg ); $this->method = 'direct'; $this->errors = new WP_Error(); } @@ -45,7 +48,7 @@ public function get_contents( $file ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return array|false File contents in an array on success, false on failure. + * @return string[]|false File contents in an array on success, false on failure. */ public function get_contents_array( $file ) { return @file( $file ); @@ -138,6 +141,9 @@ public function chgrp( $file, $group, $recursive = false ) { // Is a directory, and we want recursive. $file = trailingslashit( $file ); $filelist = $this->dirlist( $file ); + if ( false === $filelist ) { + return false; + } foreach ( $filelist as $file_listing ) { $this->chgrp( $file . $file_listing['name'], $group, $recursive ); @@ -226,6 +232,9 @@ public function chown( $file, $owner, $recursive = false ) { // Is a directory, and we want recursive. $filelist = $this->dirlist( $file ); + if ( false === $filelist ) { + return false; + } foreach ( $filelist as $file_listing ) { $this->chown( $file . '/' . $file_listing['name'], $owner, $recursive ); @@ -240,7 +249,7 @@ public function chown( $file, $owner, $recursive = false ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return string|false Username of the owner on success, false on failure. + * @return string|int<1, max>|false Username of the owner on success, or UID of file owner if not available; false on failure. */ public function owner( $file ) { $owneruid = @fileowner( $file ); @@ -285,7 +294,7 @@ public function getchmod( $file ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return string|false The group on success, false on failure. + * @return string|int<1, max>|false Group name on success, or GID of the file's group if not available; false on failure. */ public function group( $file ) { $gid = @filegroup( $file ); @@ -639,6 +648,7 @@ public function rmdir( $path, $recursive = false ) { * files. False if unable to list directory contents. * } * } + * @phpstan-return array<string, FileListing>|false */ public function dirlist( $path, $include_hidden = true, $recursive = false ) { if ( $this->is_file( $path ) ) { @@ -684,8 +694,8 @@ public function dirlist( $path, $include_hidden = true, $recursive = false ) { $struc['group'] = $this->group( $path . $entry ); $struc['size'] = $this->size( $path . $entry ); $struc['lastmodunix'] = $this->mtime( $path . $entry ); - $struc['lastmod'] = gmdate( 'M j', $struc['lastmodunix'] ); - $struc['time'] = gmdate( 'h:i:s', $struc['lastmodunix'] ); + $struc['lastmod'] = is_int( $struc['lastmodunix'] ) ? gmdate( 'M j', $struc['lastmodunix'] ) : false; + $struc['time'] = is_int( $struc['lastmodunix'] ) ? gmdate( 'h:i:s', $struc['lastmodunix'] ) : false; $struc['type'] = $this->is_dir( $path . $entry ) ? 'd' : 'f'; if ( 'd' === $struc['type'] ) { diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpext.php b/src/wp-admin/includes/class-wp-filesystem-ftpext.php index 0ab4bc17c32a2..844c4e9c5b95b 100644 --- a/src/wp-admin/includes/class-wp-filesystem-ftpext.php +++ b/src/wp-admin/includes/class-wp-filesystem-ftpext.php @@ -12,6 +12,14 @@ * @since 2.5.0 * * @see WP_Filesystem_Base + * @phpstan-type Options array{ + * hostname: string, + * username: string, + * password: string, + * port: non-negative-int, + * ssl: bool, + * } + * @phpstan-import-type FileListing from WP_Filesystem_Base */ class WP_Filesystem_FTPext extends WP_Filesystem_Base { @@ -21,16 +29,45 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { */ public $link; + /** + * @since 7.1.0 + * @var array + * @phpstan-var Options + */ + public $options; + /** * Constructor. * * @since 2.5.0 * - * @param array $opt + * @param array $opt { + * Array of connection options. + * + * @type string $hostname Required. FTP server hostname. + * @type string $username Required. FTP username. + * @type string $password Required. FTP password. + * @type int $port Optional. FTP server port. Default 21. + * @type string $connection_type Optional. Connection type. Use 'ftps' to enable SSL. + * } + * @phpstan-param array{ + * hostname: non-empty-string, + * username: non-empty-string, + * password: string, + * port?: non-negative-int, + * connection_type?: 'ftps', + * }|null $opt */ - public function __construct( $opt = '' ) { - $this->method = 'ftpext'; - $this->errors = new WP_Error(); + public function __construct( $opt = null ) { + $this->method = 'ftpext'; + $this->errors = new WP_Error(); + $this->options = array( + 'port' => 21, + 'hostname' => '', + 'username' => '', + 'password' => '', + 'ssl' => false, + ); // Check if possible to use ftp functions. if ( ! extension_loaded( 'ftp' ) ) { @@ -43,9 +80,11 @@ public function __construct( $opt = '' ) { define( 'FS_TIMEOUT', 4 * MINUTE_IN_SECONDS ); } - if ( empty( $opt['port'] ) ) { - $this->options['port'] = 21; - } else { + if ( ! is_array( $opt ) ) { + $opt = array(); + } + + if ( ! empty( $opt['port'] ) ) { $this->options['port'] = $opt['port']; } @@ -68,8 +107,6 @@ public function __construct( $opt = '' ) { $this->options['password'] = $opt['password']; } - $this->options['ssl'] = false; - if ( isset( $opt['connection_type'] ) && 'ftps' === $opt['connection_type'] ) { $this->options['ssl'] = true; } @@ -83,6 +120,15 @@ public function __construct( $opt = '' ) { * @return bool True on success, false on failure. */ public function connect() { + /* + * Bail if the constructor recorded a configuration error. Connection and + * authentication errors are excluded so that a failed connection attempt + * can be retried on the same instance. + */ + if ( $this->errors->has_errors() && ! array_intersect( array( 'connect', 'auth' ), $this->errors->get_error_codes() ) ) { + return false; + } + if ( isset( $this->options['ssl'] ) && $this->options['ssl'] && function_exists( 'ftp_ssl_connect' ) ) { $this->link = @ftp_ssl_connect( $this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT ); } else { @@ -135,6 +181,10 @@ public function connect() { * or if the file couldn't be retrieved. */ public function get_contents( $file ) { + if ( ! $this->link ) { + return false; + } + $tempfile = wp_tempnam( $file ); $temphandle = fopen( $tempfile, 'w+' ); @@ -168,10 +218,14 @@ public function get_contents( $file ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return array|false File contents in an array on success, false on failure. + * @return string[]|false File contents in an array on success, false on failure. */ public function get_contents_array( $file ) { - return explode( "\n", $this->get_contents( $file ) ); + $contents = $this->get_contents( $file ); + if ( is_string( $contents ) ) { + return explode( "\n", $contents ); + } + return false; } /** @@ -294,7 +348,7 @@ public function chmod( $file, $mode = false, $recursive = false ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return string|false Username of the owner on success, false on failure. + * @return string|int<1, max>|false Username of the owner on success, false on failure. */ public function owner( $file ) { $dir = $this->dirlist( $file ); @@ -322,7 +376,7 @@ public function getchmod( $file ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return string|false The group on success, false on failure. + * @return string|int<1, max>|false The group on success, false on failure. */ public function group( $file ) { $dir = $this->dirlist( $file ); @@ -465,9 +519,17 @@ public function is_file( $file ) { * @return bool Whether $path is a directory. */ public function is_dir( $path ) { - $cwd = $this->cwd(); + $cwd = $this->cwd(); + if ( false === $cwd ) { + return false; + } + $result = @ftp_chdir( $this->link, trailingslashit( $path ) ); + if ( ! $this->link ) { + return false; + } + if ( $result && $path === $this->cwd() || $this->cwd() !== $cwd ) { @ftp_chdir( $this->link, $cwd ); return true; @@ -622,6 +684,7 @@ public function rmdir( $path, $recursive = false ) { * @type array|false $files If a directory and `$recursive` is true, contains another array of files. * False if unable to list directory contents. * } + * @phpstan-return FileListing|'' */ public function parselisting( $line ) { static $is_windows = null; @@ -647,15 +710,9 @@ public function parselisting( $line ) { $b['type'] = 'f'; } - $b['size'] = $lucifer[7]; - $b['month'] = $lucifer[1]; - $b['day'] = $lucifer[2]; - $b['year'] = $lucifer[3]; - $b['hour'] = $lucifer[4]; - $b['minute'] = $lucifer[5]; - $b['time'] = mktime( $lucifer[4] + ( strcasecmp( $lucifer[6], 'PM' ) === 0 ? 12 : 0 ), $lucifer[5], 0, $lucifer[1], $lucifer[2], $lucifer[3] ); - $b['am/pm'] = $lucifer[6]; - $b['name'] = $lucifer[8]; + $b['size'] = $lucifer[7]; + $b['time'] = mktime( (int) $lucifer[4] + ( strcasecmp( $lucifer[6], 'PM' ) === 0 ? 12 : 0 ), (int) $lucifer[5], 0, (int) $lucifer[1], (int) $lucifer[2], (int) $lucifer[3] ); + $b['name'] = $lucifer[8]; } elseif ( ! $is_windows ) { $lucifer = preg_split( '/[ ]/', $line, 9, PREG_SPLIT_NO_EMPTY ); @@ -686,26 +743,26 @@ public function parselisting( $line ) { $b['size'] = $lucifer[4]; if ( 8 === $lcount ) { - sscanf( $lucifer[5], '%d-%d-%d', $b['year'], $b['month'], $b['day'] ); - sscanf( $lucifer[6], '%d:%d', $b['hour'], $b['minute'] ); + sscanf( $lucifer[5], '%d-%d-%d', $year, $month, $day ); + sscanf( $lucifer[6], '%d:%d', $hour, $minute ); - $b['time'] = mktime( $b['hour'], $b['minute'], 0, $b['month'], $b['day'], $b['year'] ); + $b['time'] = mktime( (int) $hour, (int) $minute, 0, (int) $month, (int) $day, (int) $year ); $b['name'] = $lucifer[7]; } else { - $b['month'] = $lucifer[5]; - $b['day'] = $lucifer[6]; + $month = $lucifer[5]; + $day = $lucifer[6]; if ( preg_match( '/([0-9]{2}):([0-9]{2})/', $lucifer[7], $l2 ) ) { - $b['year'] = gmdate( 'Y' ); - $b['hour'] = $l2[1]; - $b['minute'] = $l2[2]; + $year = gmdate( 'Y' ); + $hour = $l2[1]; + $minute = $l2[2]; } else { - $b['year'] = $lucifer[7]; - $b['hour'] = 0; - $b['minute'] = 0; + $year = $lucifer[7]; + $hour = 0; + $minute = 0; } - $b['time'] = strtotime( sprintf( '%d %s %d %02d:%02d', $b['day'], $b['month'], $b['year'], $b['hour'], $b['minute'] ) ); + $b['time'] = strtotime( sprintf( '%d %s %d %02d:%02d', $day, $month, $year, $hour, $minute ) ); $b['name'] = $lucifer[8]; } } @@ -713,10 +770,10 @@ public function parselisting( $line ) { // Replace symlinks formatted as "source -> target" with just the source name. if ( isset( $b['islink'] ) && $b['islink'] ) { - $b['name'] = preg_replace( '/(\s*->\s*.*)$/', '', $b['name'] ); + $b['name'] = (string) preg_replace( '/(\s*->\s*.*)$/', '', $b['name'] ); } - return $b; + return $b ?? ''; } /** @@ -747,14 +804,19 @@ public function parselisting( $line ) { * False if not available. * @type string|false $lastmod Last modified month (3 letters) and day (without leading 0), or * false if not available. - * @type string|false $time Last modified time, or false if not available. + * @type int|string|false $time Last modified time as a Unix timestamp, or false if not available. * @type string $type Type of resource. 'f' for file, 'd' for directory, 'l' for link. * @type array|false $files If a directory and `$recursive` is true, contains another array of * files. False if unable to list directory contents. * } * } + * @phpstan-return array<string, FileListing>|false */ public function dirlist( $path = '.', $include_hidden = true, $recursive = false ) { + if ( ! $this->link ) { + return false; + } + if ( $this->is_file( $path ) ) { $limit_file = basename( $path ); $path = dirname( $path ) . '/'; @@ -763,11 +825,15 @@ public function dirlist( $path = '.', $include_hidden = true, $recursive = false } $pwd = ftp_pwd( $this->link ); + if ( ! is_string( $pwd ) ) { + return false; + } if ( ! @ftp_chdir( $this->link, $path ) ) { // Can't change to folder = folder doesn't exist. return false; } + /** @var string[]|false $list */ $list = ftp_rawlist( $this->link, '-a', false ); @ftp_chdir( $this->link, $pwd ); diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php index cc665ad9bf7b4..8d8d9ff02d884 100644 --- a/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php +++ b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php @@ -12,6 +12,13 @@ * @since 2.5.0 * * @see WP_Filesystem_Base + * @phpstan-type Options array{ + * hostname: string, + * username: string, + * password: string, + * port: non-negative-int, + * } + * @phpstan-import-type FileListing from WP_Filesystem_Base */ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { @@ -21,16 +28,42 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { */ public $ftp; + /** + * @since 7.1.0 + * @var array + * @phpstan-var Options + */ + public $options; + /** * Constructor. * * @since 2.5.0 * - * @param array $opt + * @param array $opt { + * Array of connection options. + * + * @type string $hostname Required. FTP server hostname. + * @type string $username Required. FTP username. + * @type string $password Required. FTP password. + * @type int $port Optional. FTP server port. Default 21. + * } + * @phpstan-param array{ + * hostname: non-empty-string, + * username: non-empty-string, + * password: string, + * port?: non-negative-int, + * }|null $opt */ - public function __construct( $opt = '' ) { - $this->method = 'ftpsockets'; - $this->errors = new WP_Error(); + public function __construct( $opt = null ) { + $this->method = 'ftpsockets'; + $this->errors = new WP_Error(); + $this->options = array( + 'port' => 21, + 'hostname' => '', + 'username' => '', + 'password' => '', + ); // Check if possible to use ftp functions. if ( ! require_once ABSPATH . 'wp-admin/includes/class-ftp.php' ) { @@ -39,9 +72,11 @@ public function __construct( $opt = '' ) { $this->ftp = new ftp(); - if ( empty( $opt['port'] ) ) { - $this->options['port'] = 21; - } else { + if ( ! is_array( $opt ) ) { + $opt = array(); + } + + if ( ! empty( $opt['port'] ) ) { $this->options['port'] = (int) $opt['port']; } @@ -73,6 +108,15 @@ public function __construct( $opt = '' ) { * @return bool True on success, false on failure. */ public function connect() { + /* + * Bail if the constructor recorded a configuration error. Connection and + * authentication errors are excluded so that a failed connection attempt + * can be retried on the same instance. + */ + if ( $this->errors->has_errors() && ! array_intersect( array( 'connect', 'auth' ), $this->errors->get_error_codes() ) ) { + return false; + } + if ( ! $this->ftp ) { return false; } @@ -179,10 +223,14 @@ public function get_contents( $file ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return array|false File contents in an array on success, false on failure. + * @return string[]|false File contents in an array on success, false on failure. */ public function get_contents_array( $file ) { - return explode( "\n", $this->get_contents( $file ) ); + $contents = $this->get_contents( $file ); + if ( is_string( $contents ) ) { + return explode( "\n", $contents ); + } + return false; } /** @@ -221,7 +269,7 @@ public function put_contents( $file, $contents, $mode = false ) { fseek( $temphandle, 0 ); // Skip back to the start of the file being written to. - $ret = $this->ftp->fput( $file, $temphandle ); + $ret = (bool) $this->ftp->fput( $file, $temphandle ); reset_mbstring_encoding(); @@ -242,6 +290,9 @@ public function put_contents( $file, $contents, $mode = false ) { */ public function cwd() { $cwd = $this->ftp->pwd(); + if ( ! is_string( $cwd ) ) { + return false; + } if ( $cwd ) { $cwd = trailingslashit( $cwd ); @@ -259,7 +310,7 @@ public function cwd() { * @return bool True on success, false on failure. */ public function chdir( $dir ) { - return $this->ftp->chdir( $dir ); + return (bool) $this->ftp->chdir( $dir ); } /** @@ -295,7 +346,7 @@ public function chmod( $file, $mode = false, $recursive = false ) { } // chmod the file or directory. - return $this->ftp->chmod( $file, $mode ); + return (bool) $this->ftp->chmod( $file, $mode ); } /** @@ -304,7 +355,7 @@ public function chmod( $file, $mode = false, $recursive = false ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return string|false Username of the owner on success, false on failure. + * @return string|int<1, max>|false Username of the owner on success, false on failure. */ public function owner( $file ) { $dir = $this->dirlist( $file ); @@ -332,7 +383,7 @@ public function getchmod( $file ) { * @since 2.5.0 * * @param string $file Path to the file. - * @return string|false The group on success, false on failure. + * @return string|int<1, max>|false The group on success, false on failure. */ public function group( $file ) { $dir = $this->dirlist( $file ); @@ -386,7 +437,7 @@ public function copy( $source, $destination, $overwrite = false, $mode = false ) * @return bool True on success, false on failure. */ public function move( $source, $destination, $overwrite = false ) { - return $this->ftp->rename( $source, $destination ); + return (bool) $this->ftp->rename( $source, $destination ); } /** @@ -407,14 +458,14 @@ public function delete( $file, $recursive = false, $type = false ) { } if ( 'f' === $type || $this->is_file( $file ) ) { - return $this->ftp->delete( $file ); + return (bool) $this->ftp->delete( $file ); } if ( ! $recursive ) { - return $this->ftp->rmdir( $file ); + return (bool) $this->ftp->rmdir( $file ); } - return $this->ftp->mdel( $file ); + return (bool) $this->ftp->mdel( $file ); } /** @@ -477,6 +528,9 @@ public function is_file( $file ) { */ public function is_dir( $path ) { $cwd = $this->cwd(); + if ( ! $cwd ) { + return false; + } if ( $this->chdir( $path ) ) { $this->chdir( $cwd ); @@ -531,7 +585,11 @@ public function atime( $file ) { * @return int|false Unix timestamp representing modification time, false on failure. */ public function mtime( $file ) { - return $this->ftp->mdtm( $file ); + $modified_time = $this->ftp->mdtm( $file ); + if ( false === $modified_time ) { + return false; + } + return (int) $modified_time; } /** @@ -543,7 +601,11 @@ public function mtime( $file ) { * @return int|false Size of the file in bytes on success, false on failure. */ public function size( $file ) { - return $this->ftp->filesize( $file ); + $size = $this->ftp->filesize( $file ); + if ( false === $size ) { + return false; + } + return (int) $size; } /** @@ -640,12 +702,13 @@ public function rmdir( $path, $recursive = false ) { * False if not available. * @type string|false $lastmod Last modified month (3 letters) and day (without leading 0), or * false if not available. - * @type string|false $time Last modified time, or false if not available. + * @type int|string|false $time Last modified time as a Unix timestamp, or false if not available. * @type string $type Type of resource. 'f' for file, 'd' for directory, 'l' for link. * @type array|false $files If a directory and `$recursive` is true, contains another array of * files. False if unable to list directory contents. * } * } + * @phpstan-return array<string, FileListing>|false */ public function dirlist( $path = '.', $include_hidden = true, $recursive = false ) { if ( $this->is_file( $path ) ) { @@ -657,9 +720,10 @@ public function dirlist( $path = '.', $include_hidden = true, $recursive = false mbstring_binary_safe_encoding(); + /** @var array<string, FileListing>|false $list */ $list = $this->ftp->dirlist( $path ); - if ( empty( $list ) && ! $this->exists( $path ) ) { + if ( ! is_array( $list ) || ( empty( $list ) && ! $this->exists( $path ) ) ) { reset_mbstring_encoding(); @@ -692,12 +756,14 @@ public function dirlist( $path = '.', $include_hidden = true, $recursive = false } // Replace symlinks formatted as "source -> target" with just the source name. - if ( $struc['islink'] ) { - $struc['name'] = preg_replace( '/(\s*->\s*.*)$/', '', $struc['name'] ); + if ( $struc['islink'] ?? false ) { + $struc['name'] = (string) preg_replace( '/(\s*->\s*.*)$/', '', $struc['name'] ); } // Add the octal representation of the file permissions. - $struc['permsn'] = $this->getnumchmodfromh( $struc['perms'] ); + if ( isset( $struc['perms'] ) ) { + $struc['permsn'] = $this->getnumchmodfromh( $struc['perms'] ); + } $ret[ $struc['name'] ] = $struc; } diff --git a/src/wp-admin/includes/class-wp-filesystem-ssh2.php b/src/wp-admin/includes/class-wp-filesystem-ssh2.php index 9146045025942..f86b06ce0c4ce 100644 --- a/src/wp-admin/includes/class-wp-filesystem-ssh2.php +++ b/src/wp-admin/includes/class-wp-filesystem-ssh2.php @@ -32,18 +32,29 @@ * * @package WordPress * @subpackage Filesystem + * + * @phpstan-type Options array{ + * hostname: string, + * username: string, + * password: string|null, + * port: non-negative-int, + * public_key?: non-empty-string, + * private_key?: non-empty-string, + * hostkey?: array{ hostkey: non-empty-string }, + * } + * @phpstan-import-type FileListing from WP_Filesystem_Base */ class WP_Filesystem_SSH2 extends WP_Filesystem_Base { /** * @since 2.7.0 - * @var resource + * @var resource|false */ public $link = false; /** * @since 2.7.0 - * @var resource + * @var resource|false */ public $sftp_link; @@ -53,16 +64,46 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base { */ public $keys = false; + /** + * @since 7.1.0 + * @var array + * @phpstan-var Options + */ + public $options; + /** * Constructor. * * @since 2.7.0 * - * @param array $opt - */ - public function __construct( $opt = '' ) { - $this->method = 'ssh2'; - $this->errors = new WP_Error(); + * @param array $opt { + * Array of connection options. + * + * @type string $hostname Required. SSH server hostname. + * @type string $username Required. SSH username. + * @type int $port Optional. SSH server port. Default 22. + * @type string $password Optional. SSH password. May be empty when using keys. + * @type string $public_key Optional. Path to public key file for publickey authentication. + * @type string $private_key Optional. Path to private key file for publickey authentication. + * } + * @phpstan-param array{ + * hostname: non-empty-string, + * username: non-empty-string, + * port?: non-negative-int, + * password?: string, + * public_key?: non-empty-string, + * private_key?: non-empty-string, + * }|null $opt + */ + public function __construct( $opt = null ) { + $this->method = 'ssh2'; + $this->errors = new WP_Error(); + $this->options = array( + 'port' => 22, + 'hostname' => '', + 'username' => '', + 'password' => null, + ); // Check if possible to use ssh2 functions. if ( ! extension_loaded( 'ssh2' ) ) { @@ -70,10 +111,12 @@ public function __construct( $opt = '' ) { return; } + if ( ! is_array( $opt ) ) { + $opt = array(); + } + // Set defaults: - if ( empty( $opt['port'] ) ) { - $this->options['port'] = 22; - } else { + if ( ! empty( $opt['port'] ) ) { $this->options['port'] = $opt['port']; } @@ -91,23 +134,20 @@ public function __construct( $opt = '' ) { $this->options['hostkey'] = array( 'hostkey' => 'ssh-rsa,ssh-ed25519' ); $this->keys = true; - } elseif ( empty( $opt['username'] ) ) { - $this->errors->add( 'empty_username', __( 'SSH2 username is required' ) ); } - if ( ! empty( $opt['username'] ) ) { + // A username is always required, whether authenticating with a password or with keys. + if ( empty( $opt['username'] ) ) { + $this->errors->add( 'empty_username', __( 'SSH2 username is required' ) ); + } else { $this->options['username'] = $opt['username']; } - if ( empty( $opt['password'] ) ) { - // Password can be blank if we are using keys. - if ( ! $this->keys ) { - $this->errors->add( 'empty_password', __( 'SSH2 password is required' ) ); - } else { - $this->options['password'] = null; - } - } else { + if ( ! empty( $opt['password'] ) ) { $this->options['password'] = $opt['password']; + } elseif ( ! $this->keys ) { + // Password can be blank if we are using keys. + $this->errors->add( 'empty_password', __( 'SSH2 password is required' ) ); } } @@ -119,7 +159,16 @@ public function __construct( $opt = '' ) { * @return bool True on success, false on failure. */ public function connect() { - if ( ! $this->keys ) { + /* + * Bail if the constructor recorded a configuration error. Connection and + * authentication errors are excluded so that a failed connection attempt + * can be retried on the same instance. + */ + if ( $this->errors->has_errors() && ! array_intersect( array( 'connect', 'auth' ), $this->errors->get_error_codes() ) ) { + return false; + } + + if ( ! isset( $this->options['hostkey'] ) ) { $this->link = @ssh2_connect( $this->options['hostname'], $this->options['port'] ); } else { $this->link = @ssh2_connect( $this->options['hostname'], $this->options['port'], $this->options['hostkey'] ); @@ -139,7 +188,7 @@ public function connect() { } if ( ! $this->keys ) { - if ( ! @ssh2_auth_password( $this->link, $this->options['username'], $this->options['password'] ) ) { + if ( ! @ssh2_auth_password( $this->link, $this->options['username'], $this->options['password'] ?? '' ) ) { $this->errors->add( 'auth', sprintf( @@ -152,7 +201,7 @@ public function connect() { return false; } } else { - if ( ! @ssh2_auth_pubkey_file( $this->link, $this->options['username'], $this->options['public_key'], $this->options['private_key'], $this->options['password'] ) ) { + if ( ! @ssh2_auth_pubkey_file( $this->link, $this->options['username'], $this->options['public_key'] ?? '', $this->options['private_key'] ?? '', $this->options['password'] ?? '' ) ) { $this->errors->add( 'auth', sprintf( @@ -212,6 +261,8 @@ public function sftp_path( $path ) { * @param bool $returnbool * @return bool|string True on success, false on failure. String if the command was executed, `$returnbool` * is false (default), and data from the resulting stream was retrieved. + * + * @phpstan-return ( $returnbool is true ? bool : string ) */ public function run_command( $command, $returnbool = false ) { if ( ! $this->link ) { @@ -264,7 +315,7 @@ public function get_contents( $file ) { * @since 2.7.0 * * @param string $file Path to the file. - * @return array|false File contents in an array on success, false on failure. + * @return string[]|false File contents in an array on success, false on failure. */ public function get_contents_array( $file ) { return file( $this->sftp_path( $file ) ); @@ -301,13 +352,17 @@ public function put_contents( $file, $contents, $mode = false ) { * @return string|false The current working directory on success, false on failure. */ public function cwd() { + if ( ! $this->sftp_link ) { + return false; + } + $cwd = ssh2_sftp_realpath( $this->sftp_link, '.' ); - if ( $cwd ) { - $cwd = trailingslashit( trim( $cwd ) ); + if ( ! is_string( $cwd ) ) { + return false; } - return $cwd; + return trailingslashit( trim( $cwd ) ); } /** @@ -339,10 +394,10 @@ public function chgrp( $file, $group, $recursive = false ) { } if ( ! $recursive || ! $this->is_dir( $file ) ) { - return $this->run_command( sprintf( 'chgrp %s %s', escapeshellarg( $group ), escapeshellarg( $file ) ), true ); + return $this->run_command( sprintf( 'chgrp %s %s', escapeshellarg( (string) $group ), escapeshellarg( $file ) ), true ); } - return $this->run_command( sprintf( 'chgrp -R %s %s', escapeshellarg( $group ), escapeshellarg( $file ) ), true ); + return $this->run_command( sprintf( 'chgrp -R %s %s', escapeshellarg( (string) $group ), escapeshellarg( $file ) ), true ); } /** @@ -396,10 +451,10 @@ public function chown( $file, $owner, $recursive = false ) { } if ( ! $recursive || ! $this->is_dir( $file ) ) { - return $this->run_command( sprintf( 'chown %s %s', escapeshellarg( $owner ), escapeshellarg( $file ) ), true ); + return $this->run_command( sprintf( 'chown %s %s', escapeshellarg( (string) $owner ), escapeshellarg( $file ) ), true ); } - return $this->run_command( sprintf( 'chown -R %s %s', escapeshellarg( $owner ), escapeshellarg( $file ) ), true ); + return $this->run_command( sprintf( 'chown -R %s %s', escapeshellarg( (string) $owner ), escapeshellarg( $file ) ), true ); } /** @@ -408,7 +463,7 @@ public function chown( $file, $owner, $recursive = false ) { * @since 2.7.0 * * @param string $file Path to the file. - * @return string|false Username of the owner on success, false on failure. + * @return string|int<1, max>|false Username of the owner on success, or UID of file owner if not available; false on failure. */ public function owner( $file ) { $owneruid = @fileowner( $this->sftp_path( $file ) ); @@ -436,10 +491,14 @@ public function owner( $file ) { * @since 2.7.0 * * @param string $file Path to the file. - * @return string Mode of the file (the last 3 digits). + * @return string Mode of the file (the last 3 digits). Empty string on failure. */ public function getchmod( $file ) { - return substr( decoct( @fileperms( $this->sftp_path( $file ) ) ), -3 ); + $file_perms = @fileperms( $this->sftp_path( $file ) ); + if ( ! is_int( $file_perms ) ) { + return ''; + } + return substr( decoct( $file_perms ), -3 ); } /** @@ -448,7 +507,7 @@ public function getchmod( $file ) { * @since 2.7.0 * * @param string $file Path to the file. - * @return string|false The group on success, false on failure. + * @return string|int<1, max>|false Group name on success, or GID of the file's group if not available; false on failure. */ public function group( $file ) { $gid = @filegroup( $this->sftp_path( $file ) ); @@ -526,6 +585,9 @@ public function move( $source, $destination, $overwrite = false ) { } } + if ( ! $this->sftp_link ) { + return false; + } return ssh2_sftp_rename( $this->sftp_link, $source, $destination ); } @@ -542,6 +604,9 @@ public function move( $source, $destination, $overwrite = false ) { * @return bool True on success, false on failure. */ public function delete( $file, $recursive = false, $type = false ) { + if ( ! $this->sftp_link ) { + return false; + } if ( 'f' === $type || $this->is_file( $file ) ) { return ssh2_sftp_unlink( $this->sftp_link, $file ); } @@ -692,6 +757,9 @@ public function touch( $file, $time = 0, $atime = 0 ) { * @return bool True on success, false on failure. */ public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) { + if ( ! $this->sftp_link ) { + return false; + } $path = untrailingslashit( $path ); if ( empty( $path ) ) { @@ -768,6 +836,7 @@ public function rmdir( $path, $recursive = false ) { * files. False if unable to list directory contents. * } * } + * @phpstan-return array<string, FileListing>|false */ public function dirlist( $path, $include_hidden = true, $recursive = false ) { if ( $this->is_file( $path ) ) { @@ -813,8 +882,8 @@ public function dirlist( $path, $include_hidden = true, $recursive = false ) { $struc['group'] = $this->group( $path . $entry ); $struc['size'] = $this->size( $path . $entry ); $struc['lastmodunix'] = $this->mtime( $path . $entry ); - $struc['lastmod'] = gmdate( 'M j', $struc['lastmodunix'] ); - $struc['time'] = gmdate( 'h:i:s', $struc['lastmodunix'] ); + $struc['lastmod'] = is_int( $struc['lastmodunix'] ) ? gmdate( 'M j', $struc['lastmodunix'] ) : false; + $struc['time'] = is_int( $struc['lastmodunix'] ) ? gmdate( 'h:i:s', $struc['lastmodunix'] ) : false; $struc['type'] = $this->is_dir( $path . $entry ) ? 'd' : 'f'; if ( 'd' === $struc['type'] ) { From 448f857ba9752932b7102be56fd54cd93dca0d00 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Sun, 5 Jul 2026 15:07:41 +0000 Subject: [PATCH 316/327] Tests: Correct duplicate data set key in `sanitize_key()` tests. Follow-up to [52292]. Props Soean. See #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62638 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/formatting/sanitizeKey.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/tests/formatting/sanitizeKey.php b/tests/phpunit/tests/formatting/sanitizeKey.php index e39dd328db569..bdf1c881d7611 100644 --- a/tests/phpunit/tests/formatting/sanitizeKey.php +++ b/tests/phpunit/tests/formatting/sanitizeKey.php @@ -33,7 +33,7 @@ public function data_sanitize_key() { 'key' => 'howdy,admin', 'expected' => 'howdyadmin', ), - 'a lowercase key with commas' => array( + 'an uppercase key with commas' => array( 'key' => 'HOWDY,ADMIN', 'expected' => 'howdyadmin', ), From 64ede28c5d781d55cf017ca3f6f744da00e52bc8 Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Mon, 6 Jul 2026 03:09:22 +0000 Subject: [PATCH 317/327] Editor: ensure no incorrect selector output for pseudo-states. The output for combined feature selectors and pseudo-states was fixed in [62444] and this removes an extra loop that was outputting an incorrect selector and adds a test. Props onemaggie, isabel_brison, wildworks. Fixes #64838. git-svn-id: https://develop.svn.wordpress.org/trunk@62639 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-theme-json.php | 30 ++++------------------ tests/phpunit/tests/theme/wpThemeJson.php | 31 +++++++++++++++++++++++ 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index e8d51c4e0f569..455aeeb1214c3 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -3498,23 +3498,6 @@ public function get_styles_for_block( $block_metadata ) { $element_pseudo_allowed = static::VALID_ELEMENT_PSEUDO_SELECTORS[ $current_element ]; } - /* - * Check if we're processing a block pseudo-selector. - * $block_metadata['path'] = array( 'styles', 'blocks', 'core/button', ':hover' ); - */ - $is_processing_block_pseudo = false; - $block_pseudo_selector = null; - if ( in_array( 'blocks', $block_metadata['path'], true ) && count( $block_metadata['path'] ) >= 4 ) { - $block_name = static::get_block_name_from_metadata_path( $block_metadata ); // 'core/button' - $last_path_element = $block_metadata['path'][ count( $block_metadata['path'] ) - 1 ]; // ':hover' - - if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ] ) && - in_array( $last_path_element, static::VALID_BLOCK_PSEUDO_SELECTORS[ $block_name ], true ) ) { - $is_processing_block_pseudo = true; - $block_pseudo_selector = $last_path_element; - } - } - /* * Check for allowed pseudo classes (e.g. ":hover") from the $selector ("a:hover"). * This also resets the array keys. @@ -3544,15 +3527,12 @@ static function ( $pseudo_selector ) use ( $selector ) { && in_array( $pseudo_selector, static::VALID_ELEMENT_PSEUDO_SELECTORS[ $current_element ], true ) ) { $declarations = static::compute_style_properties( $node[ $pseudo_selector ], $settings, null, $this->theme_json, $selector, $use_root_padding ); - } elseif ( $is_processing_block_pseudo ) { - // Process block pseudo-selector styles - // For block pseudo-selectors, we need to get the block data first, then access the pseudo-selector - $block_name = static::get_block_name_from_metadata_path( $block_metadata ); // 'core/button' - $block_data = _wp_array_get( $this->theme_json, array( 'styles', 'blocks', $block_name ), array() ); - $pseudo_data = $block_data[ $block_pseudo_selector ] ?? array(); - - $declarations = static::compute_style_properties( $pseudo_data, $settings, null, $this->theme_json, $selector, $use_root_padding ); } else { + /* + * For block pseudo-selector nodes (e.g. ':hover'), $node has already had any + * feature-selector properties (e.g. writingMode) removed by get_feature_declarations_for_node, + * so those properties are not output twice. + */ $declarations = static::compute_style_properties( $node, $settings, null, $this->theme_json, $selector, $use_root_padding ); } diff --git a/tests/phpunit/tests/theme/wpThemeJson.php b/tests/phpunit/tests/theme/wpThemeJson.php index 78e1c38f0a03a..dfc09200ec2b4 100644 --- a/tests/phpunit/tests/theme/wpThemeJson.php +++ b/tests/phpunit/tests/theme/wpThemeJson.php @@ -7160,6 +7160,37 @@ public function test_merge_incoming_data_unique_slugs_always_preserved() { $this->assertEqualSetsWithIndex( $expected, $actual ); } + /** + * Tests that when a block with a custom feature selector (e.g. core/button's writingMode + * uses '.wp-block-button' rather than the root '.wp-block-button .wp-block-button__link') + * has pseudo-state styles, the feature selector CSS is scoped to the pseudo-state and not + * output under the block's default-state selector. + */ + public function test_get_stylesheet_pseudo_selector_scopes_feature_selector_css() { + $theme_json = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/button' => array( + ':hover' => array( + 'typography' => array( + 'writingMode' => 'vertical-rl', + ), + ), + ), + ), + ), + ), + 'default' + ); + + $css = $theme_json->get_stylesheet( array( 'styles' ), null, array( 'skip_root_layout_styles' => true ) ); + + // writing-mode should be scoped to :hover, not the root block selector. + $this->assertSame( ':root :where(.wp-block-button:hover){writing-mode: vertical-rl;}', $css ); + } + /** * Test that block pseudo selectors are processed correctly. */ From 0ee8e286283abc90207eae5319eceff4493d61e1 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 6 Jul 2026 04:12:52 +0000 Subject: [PATCH 318/327] Docs: Add `numeric-string` types to DB-backed class properties. Add `@phpstan-var numeric-string` annotations to string properties which hold integer database values: * `WP_Comment::$comment_ID` * `WP_Comment::$comment_post_ID` * `WP_Comment::$comment_karma` * `WP_Comment::$comment_parent` * `WP_Comment::$user_id` * the eight `WP_Site` properties backed by integer columns of the `wp_blogs` table * the private `WP_Network::$blog_id` property Previously the `numeric-string` nature of such properties was only indicated in the property description: > A numeric string, for compatibility reasons. Additionally, document the magic `WP_Network::$blog_id` property, which is exposed via `__get()` as a numeric string but was missing from the class-level `@property` tags. Finally, correct the documented types of three magic properties: * `WP_Site::$post_count` is lazy-loaded via `get_option()`, so it is a numeric string once read back from the database and `false` when the option is not set (new sites with no published posts); it holds an integer only when served from the options cache in the same request that updated it. * `WP_User::$user_status` always holds a numeric string coming raw off the users table row. * `WP_User::$user_level` resolves through user metadata as a numeric string (or an empty string when the metadata is absent), holding an integer only after `WP_User::update_user_level_from_caps()` has assigned one to the instance in the same request. Developed in https://github.com/WordPress/wordpress-develop/pull/12408. Follow-up to r37657, r37870, r38630, r48941, r62437. See #44723, #64896, #64898. git-svn-id: https://develop.svn.wordpress.org/trunk@62640 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-comment.php | 5 +++ src/wp-includes/class-wp-network.php | 8 +++-- src/wp-includes/class-wp-site.php | 22 +++++++++---- src/wp-includes/class-wp-user.php | 49 +++++++++++++++------------- 4 files changed, 53 insertions(+), 31 deletions(-) diff --git a/src/wp-includes/class-wp-comment.php b/src/wp-includes/class-wp-comment.php index 40e8f1a8009e2..b1beea1e34883 100644 --- a/src/wp-includes/class-wp-comment.php +++ b/src/wp-includes/class-wp-comment.php @@ -22,6 +22,7 @@ final class WP_Comment { * * @since 4.4.0 * @var string + * @phpstan-var numeric-string */ public $comment_ID; @@ -32,6 +33,7 @@ final class WP_Comment { * * @since 4.4.0 * @var string + * @phpstan-var numeric-string */ public $comment_post_ID = '0'; @@ -98,6 +100,7 @@ final class WP_Comment { * * @since 4.4.0 * @var string + * @phpstan-var numeric-string */ public $comment_karma = '0'; @@ -133,6 +136,7 @@ final class WP_Comment { * * @since 4.4.0 * @var string + * @phpstan-var numeric-string */ public $comment_parent = '0'; @@ -143,6 +147,7 @@ final class WP_Comment { * * @since 4.4.0 * @var string + * @phpstan-var numeric-string */ public $user_id = '0'; diff --git a/src/wp-includes/class-wp-network.php b/src/wp-includes/class-wp-network.php index 5bb745d79633b..23056cd5a80f5 100644 --- a/src/wp-includes/class-wp-network.php +++ b/src/wp-includes/class-wp-network.php @@ -18,8 +18,11 @@ * * @since 4.4.0 * - * @property int $id - * @property int $site_id + * @property int $id + * @property string $blog_id + * @property int $site_id + * + * @phpstan-property numeric-string $blog_id */ #[AllowDynamicProperties] class WP_Network { @@ -61,6 +64,7 @@ class WP_Network { * * @since 4.4.0 * @var string + * @phpstan-var numeric-string */ private $blog_id = '0'; diff --git a/src/wp-includes/class-wp-site.php b/src/wp-includes/class-wp-site.php index 0d1276a4ae32e..ce7bc411518e1 100644 --- a/src/wp-includes/class-wp-site.php +++ b/src/wp-includes/class-wp-site.php @@ -15,12 +15,14 @@ * * @since 4.5.0 * - * @property int $id - * @property int $network_id - * @property string $blogname - * @property string $siteurl - * @property int $post_count - * @property string $home + * @property int $id + * @property int $network_id + * @property string $blogname + * @property string $siteurl + * @property int|string|false $post_count + * @property string $home + * + * @phpstan-property int|numeric-string|false $post_count */ #[AllowDynamicProperties] final class WP_Site { @@ -34,6 +36,7 @@ final class WP_Site { * * @since 4.5.0 * @var string + * @phpstan-var numeric-string */ public $blog_id; @@ -63,6 +66,7 @@ final class WP_Site { * * @since 4.5.0 * @var string + * @phpstan-var numeric-string */ public $site_id = '0'; @@ -89,6 +93,7 @@ final class WP_Site { * * @since 4.5.0 * @var string + * @phpstan-var numeric-string */ public $public = '1'; @@ -99,6 +104,7 @@ final class WP_Site { * * @since 4.5.0 * @var string + * @phpstan-var numeric-string */ public $archived = '0'; @@ -112,6 +118,7 @@ final class WP_Site { * * @since 4.5.0 * @var string + * @phpstan-var numeric-string */ public $mature = '0'; @@ -122,6 +129,7 @@ final class WP_Site { * * @since 4.5.0 * @var string + * @phpstan-var numeric-string */ public $spam = '0'; @@ -132,6 +140,7 @@ final class WP_Site { * * @since 4.5.0 * @var string + * @phpstan-var numeric-string */ public $deleted = '0'; @@ -142,6 +151,7 @@ final class WP_Site { * * @since 4.5.0 * @var string + * @phpstan-var numeric-string */ public $lang_id = '0'; diff --git a/src/wp-includes/class-wp-user.php b/src/wp-includes/class-wp-user.php index 980c435d92bc6..d921a83de7f1f 100644 --- a/src/wp-includes/class-wp-user.php +++ b/src/wp-includes/class-wp-user.php @@ -14,29 +14,32 @@ * @since 6.8.0 The `user_pass` property is now hashed using bcrypt by default instead of phpass. * Existing passwords may still be hashed using phpass. * - * @property string $nickname - * @property string $description - * @property string $user_description - * @property string $first_name - * @property string $user_firstname - * @property string $last_name - * @property string $user_lastname - * @property string $user_login - * @property string $user_pass - * @property string $user_nicename - * @property string $user_email - * @property string $user_url - * @property string $user_registered - * @property string $user_activation_key - * @property string $user_status - * @property int $user_level - * @property string $display_name - * @property string $spam - * @property string $deleted - * @property string $locale - * @property string $rich_editing - * @property string $syntax_highlighting - * @property string $use_ssl + * @property string $nickname + * @property string $description + * @property string $user_description + * @property string $first_name + * @property string $user_firstname + * @property string $last_name + * @property string $user_lastname + * @property string $user_login + * @property string $user_pass + * @property string $user_nicename + * @property string $user_email + * @property string $user_url + * @property string $user_registered + * @property string $user_activation_key + * @property string $user_status + * @property int|string $user_level + * @property string $display_name + * @property string $spam + * @property string $deleted + * @property string $locale + * @property string $rich_editing + * @property string $syntax_highlighting + * @property string $use_ssl + * + * @phpstan-property numeric-string $user_status + * @phpstan-property int|numeric-string|'' $user_level */ #[AllowDynamicProperties] class WP_User { From 1a1ac109a221332df5f861ead90744a1fd258fa4 Mon Sep 17 00:00:00 2001 From: Isabel Brison <isabel_brison@git.wordpress.org> Date: Mon, 6 Jul 2026 04:23:49 +0000 Subject: [PATCH 319/327] Editor: add support to style current menu item via theme.json. Adds processing of custom states from theme.json and a new -current custom state type that is enabled for navigation link block. Props onemaggie, isabel_brison. Fixes #64806. git-svn-id: https://develop.svn.wordpress.org/trunk@62641 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-theme-json.php | 88 +++++++++++- tests/phpunit/tests/theme/wpThemeJson.php | 161 ++++++++++++++++++++++ 2 files changed, 248 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index 455aeeb1214c3..3c11927d6787b 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -641,7 +641,30 @@ class WP_Theme_JSON { * @var array */ const VALID_BLOCK_PSEUDO_SELECTORS = array( - 'core/button' => array( ':hover', ':focus', ':focus-visible', ':active' ), + 'core/button' => array( ':hover', ':focus', ':focus-visible', ':active' ), + 'core/navigation-link' => array( ':hover', ':focus', ':focus-visible', ':active' ), + ); + + /** + * Custom states for blocks that map to CSS class selectors rather than + * CSS pseudo-selectors. Values use the '-' prefix (e.g. '-current') to + * distinguish them from real CSS pseudo-selectors and breakpoint states. + * + * The CSS selector for each state is defined in the block's block.json + * under `selectors.states`, e.g.: + * + * "selectors": { "states": { "-current": ".some-css-selector" } } + * + * This constant controls which states are valid in theme.json for a given + * block. Blocks listed here also inherit their VALID_BLOCK_PSEUDO_SELECTORS + * as valid sub-states, producing compound selectors such as + * `.wp-block-navigation-item.current-menu-item:hover`. + * + * @since 7.1.0 + * @var array + */ + const VALID_BLOCK_CUSTOM_STATES = array( + 'core/navigation-link' => array( '-current' ), ); /** @@ -1157,6 +1180,23 @@ protected static function sanitize( $input, $valid_block_names, $valid_element_n $schema_styles_blocks[ $block ][ $pseudo_selector ] = $styles_non_top_level; } } + + // Add custom states for blocks that support them (e.g. '-current' for navigation). + if ( isset( static::VALID_BLOCK_CUSTOM_STATES[ $block ] ) ) { + foreach ( static::VALID_BLOCK_CUSTOM_STATES[ $block ] as $custom_state ) { + $custom_state_schema = $styles_non_top_level; + /* + * The same pseudo-selectors valid for the block at the top level + * are also valid within each custom state. + */ + if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] ) ) { + foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] as $pseudo ) { + $custom_state_schema[ $pseudo ] = $styles_non_top_level; + } + } + $schema_styles_blocks[ $block ][ $custom_state ] = $custom_state_schema; + } + } } $block_style_variation_styles = static::VALID_STYLES; @@ -1556,6 +1596,11 @@ protected static function get_blocks_metadata() { if ( ! empty( $style_selectors ) ) { static::$blocks_metadata[ $block_name ]['styleVariations'] = $style_selectors; } + + // If the block has custom states defined in block.json, store their selectors. + if ( ! empty( $block_type->selectors['states'] ) && is_array( $block_type->selectors['states'] ) ) { + static::$blocks_metadata[ $block_name ]['states'] = $block_type->selectors['states']; + } } return static::$blocks_metadata; @@ -3218,6 +3263,47 @@ private static function get_block_nodes( $theme_json, $selectors = array(), $opt } } } + + // Handle custom states (e.g. '-current' for navigation). + if ( isset( static::VALID_BLOCK_CUSTOM_STATES[ $name ] ) ) { + foreach ( static::VALID_BLOCK_CUSTOM_STATES[ $name ] as $custom_state ) { + if ( + isset( $theme_json['styles']['blocks'][ $name ][ $custom_state ] ) && + isset( $selectors[ $name ]['states'][ $custom_state ] ) + ) { + $custom_css_selector = $selectors[ $name ]['states'][ $custom_state ]; + $nodes[] = array( + 'name' => $name, + 'path' => array( 'styles', 'blocks', $name, $custom_state ), + 'selector' => $custom_css_selector, + 'selectors' => $feature_selectors, + 'elements' => $selectors[ $name ]['elements'] ?? array(), + 'duotone' => $duotone_selector, + 'variations' => $variation_selectors, + 'css' => $custom_css_selector, + ); + + // Sub-pseudo-selectors within the custom state. + if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $name ] ) ) { + foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $name ] as $pseudo ) { + if ( isset( $theme_json['styles']['blocks'][ $name ][ $custom_state ][ $pseudo ] ) ) { + $compound_css_selector = static::append_to_selector( $custom_css_selector, $pseudo ); + $nodes[] = array( + 'name' => $name, + 'path' => array( 'styles', 'blocks', $name, $custom_state, $pseudo ), + 'selector' => $compound_css_selector, + 'selectors' => $feature_selectors, + 'elements' => $selectors[ $name ]['elements'] ?? array(), + 'duotone' => $duotone_selector, + 'variations' => $variation_selectors, + 'css' => $compound_css_selector, + ); + } + } + } + } + } + } } if ( isset( $theme_json['styles']['blocks'][ $name ]['elements'] ) ) { foreach ( $theme_json['styles']['blocks'][ $name ]['elements'] as $element => $node ) { diff --git a/tests/phpunit/tests/theme/wpThemeJson.php b/tests/phpunit/tests/theme/wpThemeJson.php index dfc09200ec2b4..724c5ff997abb 100644 --- a/tests/phpunit/tests/theme/wpThemeJson.php +++ b/tests/phpunit/tests/theme/wpThemeJson.php @@ -7570,4 +7570,165 @@ public function test_to_ruleset_skips_non_scalar_values_and_casts_numerics() { $this->assertStringNotContainsString( 'padding', $result, 'Boolean value should be skipped' ); $this->assertStringNotContainsString( 'gap', $result, 'Array value should be skipped' ); } + + /** + * Test that block custom states (e.g. -current) are processed correctly. + * + * @covers WP_Theme_JSON::get_styles_for_block + * + * @ticket 64806 + */ + public function test_block_custom_states_are_processed() { + // Only -current styles, no base block styles, so we can assert the + // output uses the current-menu-item selector and not the block selector. + $theme_json = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/navigation-link' => array( + '-current' => array( + 'color' => array( + 'text' => 'red', + 'background' => 'blue', + ), + ), + ), + ), + ), + ) + ); + + $current_node = array( + 'path' => array( 'styles', 'blocks', 'core/navigation-link', '-current' ), + 'selector' => '.wp-block-navigation .current-menu-item', + ); + $expected = ':root :where(.wp-block-navigation .current-menu-item){background-color: blue;color: red;}'; + + $this->assertSame( $expected, $theme_json->get_styles_for_block( $current_node ) ); + } + + /** + * Test that block custom states compound correctly with pseudo-selectors (e.g. -current + :hover). + * + * @covers WP_Theme_JSON::get_styles_for_block + * + * @ticket 64806 + */ + public function test_block_custom_states_compound_with_pseudo_selectors() { + $theme_json = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/navigation-link' => array( + '-current' => array( + 'color' => array( + 'text' => 'red', + 'background' => 'blue', + ), + ':hover' => array( + 'color' => array( + 'text' => 'blue', + 'background' => 'white', + ), + ), + ':focus' => array( + 'color' => array( + 'text' => 'green', + 'background' => 'yellow', + ), + ), + ), + ), + ), + ), + ) + ); + + $current_node = array( + 'path' => array( 'styles', 'blocks', 'core/navigation-link', '-current' ), + 'selector' => '.wp-block-navigation .current-menu-item', + ); + $hover_node = array( + 'path' => array( 'styles', 'blocks', 'core/navigation-link', '-current', ':hover' ), + 'selector' => '.wp-block-navigation .current-menu-item:hover', + ); + $focus_node = array( + 'path' => array( 'styles', 'blocks', 'core/navigation-link', '-current', ':focus' ), + 'selector' => '.wp-block-navigation .current-menu-item:focus', + ); + + $expected = ':root :where(.wp-block-navigation .current-menu-item){background-color: blue;color: red;}'; + $expected .= ':root :where(.wp-block-navigation .current-menu-item:hover){background-color: white;color: blue;}'; + $expected .= ':root :where(.wp-block-navigation .current-menu-item:focus){background-color: yellow;color: green;}'; + + $actual = $theme_json->get_styles_for_block( $current_node ); + $actual .= $theme_json->get_styles_for_block( $hover_node ); + $actual .= $theme_json->get_styles_for_block( $focus_node ); + + $this->assertSame( $expected, $actual ); + } + + /** + * Test that non-whitelisted custom states are ignored, and that custom states + * are ignored on blocks that do not declare support for them. + * + * @covers WP_Theme_JSON::get_stylesheet + * + * @ticket 64806 + */ + public function test_block_custom_states_ignores_non_whitelisted() { + // A non-whitelisted state key on a block that supports custom states. + $theme_json_bogus_state = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/navigation-link' => array( + 'color' => array( + 'text' => 'black', + ), + '-bogus' => array( + 'color' => array( + 'text' => 'yellow', + ), + ), + ), + ), + ), + ) + ); + + $stylesheet_bogus = $theme_json_bogus_state->get_stylesheet( array( 'styles' ), null, array( 'skip_root_layout_styles' => true ) ); + $this->assertStringNotContainsString( '-bogus', $stylesheet_bogus ); + $this->assertStringNotContainsString( 'yellow', $stylesheet_bogus ); + + // A valid custom state key on a block that does not support custom states. + $theme_json_unsupported_block = new WP_Theme_JSON( + array( + 'version' => WP_Theme_JSON::LATEST_SCHEMA, + 'styles' => array( + 'blocks' => array( + 'core/paragraph' => array( + 'color' => array( + 'text' => 'black', + ), + '-current' => array( + 'color' => array( + 'text' => 'red', + ), + ), + ), + ), + ), + ) + ); + + $stylesheet_unsupported = $theme_json_unsupported_block->get_stylesheet( array( 'styles' ), null, array( 'skip_root_layout_styles' => true ) ); + $expected = ':root :where(p){color: black;}'; + $this->assertSame( $expected, $stylesheet_unsupported ); + $this->assertStringNotContainsString( '-current', $stylesheet_unsupported ); + $this->assertStringNotContainsString( 'current-menu-item', $stylesheet_unsupported ); + } } From f062fd6fd29335a193da73cf6ffafcc71ce9e154 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 6 Jul 2026 15:47:16 +0000 Subject: [PATCH 320/327] Build/Test Tools: Honor statement-level `@global` tags in PHPStan. The `GlobalDocBlockVisitor` PHPStan extension introduced in [62292] only read `@global` tags from the enclosing function's docblock and skipped `global` statements outside any function/method. This meant that file-scope `global` statements (e.g. in admin templates included into another scope) required a redundant inline `@var` tag in addition to the `@global` tag for PHPStan to resolve the variable's type. Now `@global` tags in a docblock attached directly to a `global` statement are honored as well. Statement-level tags take precedence over the enclosing function's tags for the same variable, and handwritten `@var` annotations continue to take precedence over synthetic ones. At higher PHPStan rule levels this resolves several hundred pre-existing errors, primarily in admin screen templates. Developed in https://github.com/WordPress/wordpress-develop/pull/12407. Follow-up to r62292. See #64898. git-svn-id: https://develop.svn.wordpress.org/trunk@62642 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpstan/GlobalDocBlockVisitor.php | 28 ++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/tests/phpstan/GlobalDocBlockVisitor.php b/tests/phpstan/GlobalDocBlockVisitor.php index c5fbabfd336ee..119cbcc34f613 100644 --- a/tests/phpstan/GlobalDocBlockVisitor.php +++ b/tests/phpstan/GlobalDocBlockVisitor.php @@ -26,6 +26,12 @@ * visitor closes the gap so PHPStan can use the existing core annotations * without each `global` statement needing its own redundant `@var`. * + * `@global` tags in a docblock attached directly to a `global` statement are + * honored as well, and take precedence over the enclosing function's tags. + * This makes `@global` sufficient for file-scope `global` statements (e.g. in + * templates included into another scope), which have no enclosing function + * docblock at all. + * * Functions that do not document a global, or that import a global the * function docblock does not list, are left untouched and continue to * resolve as `mixed` — preserving PHPStan's safety guarantees. @@ -73,11 +79,25 @@ public function enterNode( Node $node ): ?Node { return null; } - if ( ! ( $node instanceof Node\Stmt\Global_ ) || $this->stack === array() ) { + if ( ! ( $node instanceof Node\Stmt\Global_ ) ) { return null; } - $map = $this->stack[ count( $this->stack ) - 1 ]; + $map = $this->stack !== array() ? $this->stack[ count( $this->stack ) - 1 ] : array(); + + $existing = $node->getDocComment(); + $existing_text = $existing !== null ? $existing->getText() : ''; + + /* + * Also honor `@global` tags on the docblock attached directly to the + * `global` statement itself. This covers file-scope statements (which + * have no enclosing function docblock) and takes precedence over the + * enclosing function's tags for the same variable. + */ + if ( $existing_text !== '' ) { + $map = array_merge( $map, $this->parse_global_tags( $existing_text ) ); + } + if ( $map === array() ) { return null; } @@ -87,9 +107,7 @@ public function enterNode( Node $node ): ?Node { * statement so we can leave them alone but still inject `@var` lines for * the remaining variables in a multi-variable `global $a, $b;` statement. */ - $existing = $node->getDocComment(); - $existing_text = $existing !== null ? $existing->getText() : ''; - $already_typed = array(); + $already_typed = array(); if ( $existing_text !== '' && preg_match_all( '/@(?:phpstan-)?var\s+[^\n]*?\$(\w+)/', $existing_text, $existing_matches ) > 0 ) { $already_typed = array_flip( $existing_matches[1] ); } From 9b437ef00077a57e4aea46370775f4a0d0739d53 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov@git.wordpress.org> Date: Mon, 6 Jul 2026 15:58:04 +0000 Subject: [PATCH 321/327] Tests: Remove unnecessary `sprintf()` call in `wp_after_insert_post()` tests. Follow-up to [49731]. Props Soean. See #64894. git-svn-id: https://develop.svn.wordpress.org/trunk@62643 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/post/wpAfterInsertPost.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/tests/post/wpAfterInsertPost.php b/tests/phpunit/tests/post/wpAfterInsertPost.php index 621b93151e9c1..c312096245af5 100644 --- a/tests/phpunit/tests/post/wpAfterInsertPost.php +++ b/tests/phpunit/tests/post/wpAfterInsertPost.php @@ -187,7 +187,7 @@ public function test_update_via_rest_controller() { public function test_new_post_via_rest_controller() { wp_set_current_user( self::$admin_id ); - $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/posts' ) ); + $request = new WP_REST_Request( 'POST', '/wp/v2/posts' ); $request->add_header( 'Content-Type', 'application/x-www-form-urlencoded' ); $request->set_body_params( array( From 0970efafda47460a14b599f6a66106715b124f55 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Mon, 6 Jul 2026 16:38:53 +0000 Subject: [PATCH 322/327] Build/Test Tools: Revert [62525]. This temporarily reverts [62525] to see files deleted in develop.svn.wordpress.org that persist core.svn.wordpress.org are modified. Props johnbillion. See #65565, #65325, #65418. git-svn-id: https://develop.svn.wordpress.org/trunk@62644 602fd350-edb4-49c9-b593-d223f7449a82 --- Gruntfile.js | 128 ++++------- package.json | 2 +- tools/gutenberg/copy.js | 458 ++++++++++++++++----------------------- tools/gutenberg/utils.js | 4 +- tsconfig.json | 1 - 5 files changed, 222 insertions(+), 371 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index ab56358b8f60d..314aa93d0cbef 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -41,43 +41,18 @@ module.exports = function(grunt) { 'wp-admin/css/colors/**/*.css', ], - // Built JavaScript files that do not belong to a more specific group. + // Built js files, in /src or /build. jsFiles = [ 'wp-admin/js/', - 'wp-includes/js/*', - /* - * This directory has shared responsibility and is managed through - * gutenbergUnversionedFiles, webpackFiles, and copy:vendor-js. - */ - '!wp-includes/js/dist', - 'wp-includes/js/dist/vendor/*.js', - // Managed by the Gutenberg-related tasks. - '!wp-includes/js/dist/vendor/react-jsx-runtime*', - ], - - // Files sourced from the Gutenberg repository built asset that are ignored by version control. - gutenbergUnversionedFiles = [ - SOURCE_DIR + 'wp-includes/blocks/*/*.css', - SOURCE_DIR + 'wp-includes/css/dist', - SOURCE_DIR + 'wp-includes/js/dist/*.js', - SOURCE_DIR + 'wp-includes/js/dist/script-modules', - SOURCE_DIR + 'wp-includes/js/dist/vendor/react-jsx-runtime*', + 'wp-includes/js/', ], - // Files sourced from the Gutenberg repository built asset that are managed through version control. - gutenbergVersionedFiles = [ - // Block assets (block.json, top-level PHP, nested PHP helpers). - SOURCE_DIR + 'wp-includes/blocks/*', - '!' + SOURCE_DIR + 'wp-includes/blocks/index.php', - SOURCE_DIR + 'wp-includes/images/icon-library', - SOURCE_DIR + 'wp-includes/theme.json', - SOURCE_DIR + 'wp-includes/theme-i18n.json', - // Routes and pages. - SOURCE_DIR + 'wp-includes/build', - // PHP manifests generated by gutenberg:copy. - SOURCE_DIR + 'wp-includes/assets/icon-library-manifest.php', - SOURCE_DIR + 'wp-includes/assets/script-loader-packages.php', - SOURCE_DIR + 'wp-includes/assets/script-modules-packages.php', + // All files copied from the Gutenberg repository excluded from version control. + gutenbergFiles = [ + 'wp-includes/js/dist', + 'wp-includes/css/dist', + // Old location kept temporarily to ensure they are cleaned up. + 'wp-includes/icons', ], // All files built by Webpack, in /src or /build. @@ -266,32 +241,10 @@ module.exports = function(grunt) { return setFilePath( WORKING_DIR, file ); } ), - /* - * Clean files sourced from the downloaded zip file built by the Gutenberg repository. - * - * All files originating from the Gutenberg repository's built assets (both tracked and untracked by version - * control) are deleted when `clean:gutenberg` is explicitly called. This ensures that versioned files that - * have been deleted upstream are also removed from version control in this repository. - * - * When `clean:gutenberg` is not explicitly called and run through `grunt clean`, only ignored files are - * cleaned. - */ - gutenberg: { - get src() { - const cli = grunt.cli.tasks; - // Preserve versioned files only when running bare `grunt clean`. - const isBareCleanSweep = - cli.includes( 'clean' ) && - ! cli.includes( 'clean:gutenberg' ); - - if ( isBareCleanSweep ) { - return gutenbergUnversionedFiles; - } else { - return gutenbergUnversionedFiles.concat( gutenbergVersionedFiles ); - } - }, - }, - + // Clean files built by the tools/gutenberg scripts. + gutenberg: gutenbergFiles.map( function( file ) { + return setFilePath( WORKING_DIR, file ); + }), dynamic: { dot: true, expand: true, @@ -336,6 +289,7 @@ module.exports = function(grunt) { expand: true, cwd: SOURCE_DIR, src: buildFiles.concat( [ + '!wp-includes/assets/**', // Assets is extracted into separate copy tasks. '!js/**', // JavaScript is extracted into separate copy tasks. '!.{svn,git}', // Exclude version control folders. '!wp-includes/version.php', // Exclude version.php. @@ -712,18 +666,24 @@ module.exports = function(grunt) { 'constants.php', 'pages/**/*.php', ], - dest: SOURCE_DIR + 'wp-includes/build/', + dest: WORKING_DIR + 'wp-includes/build/', } ], }, /* - * The list of route source files is populated from the contents of the registry.php file at task runtime by - * `routes:setup`. + * Only copy files relevant to the routes specified in the registry file. + * + * While the registry file does not contain any experimental routes, the `gutenberg/build/routes` directory + * includes the files for all registered routes. Only the files related to the routes specified in the + * registry should be included in the WordPress build. + * + * The `src` list is populated at task runtime by `routes:setup`, which reads the registry after + * `gutenberg:download` has run. See the `routes:setup` task registration for implementation details. */ routes: { expand: true, cwd: 'gutenberg/build', src: [], - dest: SOURCE_DIR + 'wp-includes/build/', + dest: WORKING_DIR + 'wp-includes/build/', }, 'gutenberg-js': { files: [ { @@ -732,7 +692,7 @@ module.exports = function(grunt) { src: [ 'pages/**/*.js', ], - dest: SOURCE_DIR + 'wp-includes/build/', + dest: WORKING_DIR + 'wp-includes/build/', } ], }, 'gutenberg-modules': { @@ -746,7 +706,7 @@ module.exports = function(grunt) { // with no debugging value over the minified versions. '!vips/!(*.min).js', ], - dest: SOURCE_DIR + 'wp-includes/js/dist/script-modules/', + dest: WORKING_DIR + 'wp-includes/js/dist/script-modules/', } ], }, 'gutenberg-styles': { @@ -759,7 +719,7 @@ module.exports = function(grunt) { // Per-block CSS is copied to wp-includes/blocks/ by tools/gutenberg/copy.js. '!block-library/*/**', ], - dest: SOURCE_DIR + 'wp-includes/css/dist/', + dest: WORKING_DIR + 'wp-includes/css/dist/', } ], }, 'gutenberg-theme-json': { @@ -778,11 +738,11 @@ module.exports = function(grunt) { files: [ { src: 'gutenberg/lib/theme.json', - dest: SOURCE_DIR + 'wp-includes/theme.json', + dest: WORKING_DIR + 'wp-includes/theme.json', }, { src: 'gutenberg/lib/theme-i18n.json', - dest: SOURCE_DIR + 'wp-includes/theme-i18n.json', + dest: WORKING_DIR + 'wp-includes/theme-i18n.json', }, ], }, @@ -790,8 +750,8 @@ module.exports = function(grunt) { files: [ { expand: true, cwd: 'gutenberg/packages/icons/src/library', - src: [ '*.svg' ], - dest: SOURCE_DIR + 'wp-includes/images/icon-library', + src: '*.svg', + dest: WORKING_DIR + 'wp-includes/images/icon-library', } ], }, 'icon-library-manifest': { @@ -813,7 +773,7 @@ module.exports = function(grunt) { }, files: [ { src: 'gutenberg/packages/icons/src/manifest.php', - dest: SOURCE_DIR + 'wp-includes/assets/icon-library-manifest.php', + dest: WORKING_DIR + 'wp-includes/assets/icon-library-manifest.php', } ], }, }, @@ -1707,7 +1667,7 @@ module.exports = function(grunt) { */ grunt.util.spawn( { grunt: true, - args: [ 'build:gutenberg' ], + args: [ 'build:gutenberg', '--dev' ], opts: { stdio: 'inherit' } }, function( buildError ) { done( ! buildError ); @@ -1717,9 +1677,10 @@ module.exports = function(grunt) { grunt.registerTask( 'gutenberg:copy', 'Copies Gutenberg JS packages and block assets to WordPress Core.', function() { const done = this.async(); + const buildDir = grunt.option( 'dev' ) ? 'src' : 'build'; grunt.util.spawn( { cmd: 'node', - args: [ 'tools/gutenberg/copy.js' ], + args: [ 'tools/gutenberg/copy.js', `--build-dir=${ buildDir }` ], opts: { stdio: 'inherit' } }, function( error ) { done( ! error ); @@ -2203,23 +2164,10 @@ module.exports = function(grunt) { } ); } ); - // Detects and copies stable routes. - grunt.registerTask( 'build:routes', [ - 'routes:setup', - 'copy:routes', - ] ); - - /* - * Refresh the Gutenberg-sourced content in src/. - * - * clean:gutenberg must run first to ensure files removed upstream are purged. - * - * Because all of these tasks write to src/, the outcome is identical for build and build:dev. - */ grunt.registerTask( 'build:gutenberg', [ - 'clean:gutenberg', 'copy:gutenberg-php', - 'build:routes', + 'routes:setup', + 'copy:routes', 'copy:gutenberg-js', 'gutenberg:copy', 'copy:gutenberg-modules', @@ -2233,21 +2181,21 @@ module.exports = function(grunt) { if ( grunt.option( 'dev' ) ) { grunt.task.run( [ 'gutenberg:verify', - 'build:gutenberg', 'build:js', 'build:css', 'build:codemirror', + 'build:gutenberg', 'build:certificates' ] ); } else { grunt.task.run( [ 'gutenberg:verify', - 'build:gutenberg', 'build:certificates', 'build:files', 'build:js', 'build:css', 'build:codemirror', + 'build:gutenberg', 'replace:source-maps', 'verify:build' ] ); diff --git a/package.json b/package.json index 3c93ef37f8c27..bebc4b42a3248 100644 --- a/package.json +++ b/package.json @@ -141,6 +141,6 @@ "typecheck:php": "node ./tools/local-env/scripts/docker.js run --rm php composer phpstan", "gutenberg:copy": "node tools/gutenberg/copy.js", "gutenberg:verify": "node tools/gutenberg/utils.js", - "gutenberg:download": "node tools/gutenberg/download.js && grunt build:gutenberg" + "gutenberg:download": "node tools/gutenberg/download.js && grunt build:gutenberg --dev" } } diff --git a/tools/gutenberg/copy.js b/tools/gutenberg/copy.js index 3da78e4b14611..8589c9581bed1 100644 --- a/tools/gutenberg/copy.js +++ b/tools/gutenberg/copy.js @@ -6,59 +6,32 @@ * This script copies and transforms Gutenberg's build output to WordPress Core. * It handles path transformations from plugin structure to Core structure. * - * Since a number of files sourced from the downloaded zip file are subject to - * version control, the `src/` directory is used as the destination for all - * outputs of this file (both versioned and unversioned). - * - * Grunt will copy the files appropriately when running `build` instead of - * `build:dev`, and the repository's configured ignore rules will manage what - * can be committed. - * * @package WordPress */ const fs = require( 'fs' ); const path = require( 'path' ); -const json2php = /** @type {typeof import('json2php').default} */ ( - /** @type {unknown} */ ( require( 'json2php' ) ) -); +const json2php = require( 'json2php' ); const { fromString } = require( 'php-array-reader' ); +// Paths. const rootDir = path.resolve( __dirname, '../..' ); const gutenbergDir = path.join( rootDir, 'gutenberg' ); const gutenbergBuildDir = path.join( gutenbergDir, 'build' ); -const wpIncludesDir = path.join( rootDir, 'src', 'wp-includes' ); - -/** - * JS package copy configuration. - * - * @typedef ScriptsConfig - * @type {object} - * @property {string} source - Gutenberg-relative source directory (e.g. `'scripts'`). - * @property {string} destination - Subpath under `wp-includes/` where packages land (e.g. `'js/dist'`). - * @property {boolean} copyDirectories - Whether to copy whole directories (with optional renames) as-is. - * @property {Record<string, string>} directoryRenames - Map of source directory name → destination directory name. - */ -/** - * One block family entry — block library, widget blocks, etc. - * - * @typedef BlockConfigSource - * @type {object} - * @property {string} name - Human-readable label (e.g. `'block-library'`, `'widgets'`). - * @property {string} scripts - Gutenberg-relative path to the block scripts directory. - * @property {string} styles - Gutenberg-relative path to the block styles directory. - * @property {string} php - Gutenberg-relative path to the block PHP directory. +/* + * Determine build target from command line argument (--dev or --build-dir). + * Default to 'src' for development. */ +const args = process.argv.slice( 2 ); +const buildDirArg = args.find( ( arg ) => arg.startsWith( '--build-dir=' ) ); +const buildTarget = buildDirArg + ? buildDirArg.split( '=' )[ 1 ] + : args.includes( '--dev' ) + ? 'src' + : 'build'; -/** - * Block copy configuration. - * - * @typedef BlockConfig - * @type {object} - * @property {string} destination - Subpath under `wp-includes/` where blocks land (e.g. `'blocks'`). - * @property {BlockConfigSource[]} sources - One entry per block family. - */ +const wpIncludesDir = path.join( rootDir, buildTarget, 'wp-includes' ); /** * Copy configuration. @@ -108,7 +81,7 @@ const COPY_CONFIG = { * @throws Error when PHP source file unable to be read or parsed. * * @param {string} phpFilepath Absolute path of PHP file returning a single value. - * @return {any} JavaScript representation of value from input file. + * @return {Object|Array} JavaScript representation of value from input file. */ function readReturnedValueFromPHPFile( phpFilepath ) { const content = fs.readFileSync( phpFilepath, 'utf8' ); @@ -136,244 +109,104 @@ function isExperimentalBlock( blockJsonPath ) { } /** - * Generate a list of stable blocks. - * - * Blocks marked as `"__experimental": true` in a `block.json` file are excluded. - * - * @param {string} scriptsSrc - Path to the Gutenberg scripts source (e.g. `scripts/block-library`). - * @return {string[]} Stable block directory names. - */ -function getStableBlocks( scriptsSrc ) { - if ( ! fs.existsSync( scriptsSrc ) ) { - return []; - } - return fs - .readdirSync( scriptsSrc, { withFileTypes: true } ) - .filter( ( entry ) => entry.isDirectory() ) - .map( ( entry ) => entry.name ) - .filter( ( blockName ) => ! isExperimentalBlock( - path.join( scriptsSrc, blockName, 'block.json' ) - ) ); -} - -/** - * Copy JavaScript files. - * - * @param {ScriptsConfig} config - Scripts configuration from `COPY_CONFIG.scripts`. - */ -function copyScripts( config ) { - const scriptsSrc = path.join( gutenbergBuildDir, config.source ); - const scriptsDest = path.join( wpIncludesDir, config.destination ); - - if ( ! fs.existsSync( scriptsSrc ) ) { - return; - } - - const entries = fs.readdirSync( scriptsSrc, { withFileTypes: true } ); - - for ( const entry of entries ) { - const src = path.join( scriptsSrc, entry.name ); - - if ( entry.isDirectory() ) { - // Check if this should be copied as a directory (like vendors/). - if ( - config.copyDirectories && - config.directoryRenames && - config.directoryRenames[ entry.name ] - ) { - /* - * Copy special directories with rename (vendors/ → vendor/). - * Only copy react-jsx-runtime from vendors (react and react-dom come from Core's node_modules). - */ - const destName = config.directoryRenames[ entry.name ]; - const dest = path.join( scriptsDest, destName ); - - if ( entry.name === 'vendors' ) { - // Only copy react-jsx-runtime files, skip react and react-dom. - const vendorFiles = fs.readdirSync( src ); - let copiedCount = 0; - fs.mkdirSync( dest, { recursive: true } ); - for ( const file of vendorFiles ) { - if ( - file.startsWith( 'react-jsx-runtime' ) && - file.endsWith( '.js' ) - ) { - const srcFile = path.join( src, file ); - const destFile = path.join( dest, file ); - - fs.copyFileSync( srcFile, destFile ); - copiedCount++; - } - } - console.log( - ` ✅ ${ entry.name }/ → ${ destName }/ (react-jsx-runtime only, ${ copiedCount } files)` - ); - } - } else { - /* - * Flatten package structure: package-name/index.js → package-name.js. - * This matches Core's expected file structure. - */ - const packageFiles = fs.readdirSync( src ); - - for ( const file of packageFiles ) { - if ( /^index\.(js|min\.js)$/.test( file ) ) { - const srcFile = path.join( src, file ); - // Replace 'index.' with 'package-name.'. - const destFile = file.replace( - /^index\./, - `${ entry.name }.` - ); - const destPath = path.join( scriptsDest, destFile ); - - fs.mkdirSync( path.dirname( destPath ), { - recursive: true, - } ); - - fs.copyFileSync( srcFile, destPath ); - } - } - } - } else if ( entry.isFile() && entry.name.endsWith( '.js' ) ) { - // Copy root-level JS files. - const dest = path.join( scriptsDest, entry.name ); - fs.mkdirSync( path.dirname( dest ), { recursive: true } ); - fs.copyFileSync( src, dest ); - } - } - - console.log( ' ✅ JavaScript packages copied' ); -} - -/** - * Copy `block.json` files for every stable block. + * Copy all assets for blocks from Gutenberg to Core. + * Handles scripts, styles, PHP, and JSON for all block types in a unified way. * - * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. + * @param {Object} config - Block configuration from COPY_CONFIG.blocks */ -function copyBlockJson( config ) { +function copyBlockAssets( config ) { const blocksDest = path.join( wpIncludesDir, config.destination ); for ( const source of config.sources ) { const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); - const blocks = getStableBlocks( scriptsSrc ); + const stylesSrc = path.join( gutenbergBuildDir, source.styles ); + const phpSrc = path.join( gutenbergBuildDir, source.php ); + + if ( ! fs.existsSync( scriptsSrc ) ) { + continue; + } + + // Get all block directories from the scripts source. + const blockDirs = fs + .readdirSync( scriptsSrc, { withFileTypes: true } ) + .filter( ( entry ) => entry.isDirectory() ) + .map( ( entry ) => entry.name ); + + for ( const blockName of blockDirs ) { + // Skip experimental blocks. + const blockJsonPath = path.join( + scriptsSrc, + blockName, + 'block.json' + ); + if ( isExperimentalBlock( blockJsonPath ) ) { + continue; + } - for ( const blockName of blocks ) { - const blockSrc = path.join( scriptsSrc, blockName ); const blockDest = path.join( blocksDest, blockName ); fs.mkdirSync( blockDest, { recursive: true } ); - const blockJsonSrc = path.join( blockSrc, 'block.json' ); - if ( fs.existsSync( blockJsonSrc ) ) { - fs.copyFileSync( - blockJsonSrc, - path.join( blockDest, 'block.json' ) + // 1. Copy scripts/JSON (everything except PHP) + const blockScriptsSrc = path.join( scriptsSrc, blockName ); + if ( fs.existsSync( blockScriptsSrc ) ) { + fs.cpSync( + blockScriptsSrc, + blockDest, + { + recursive: true, + // Skip PHP, copied from build in steps 3 & 4. + filter: f => ! f.endsWith( '.php' ), + } ); } - } - - console.log( - ` ✅ ${ source.name } block.json copied (${ blocks.length } blocks)` - ); - } -} -/** - * Copy block PHP files for every stable block. - * - * Handles both the top-level `<block>.php` dynamic block files and any nested - * `*.php` helpers under `<block>/` (e.g. `navigation-link/shared/render-submenu-icon.php`). - * - * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. - */ -function copyBlockPhp( config ) { - const blocksDest = path.join( wpIncludesDir, config.destination ); + // 2. Copy styles (if they exist in per-block directory) + const blockStylesSrc = path.join( stylesSrc, blockName ); + if ( fs.existsSync( blockStylesSrc ) ) { + const cssFiles = fs + .readdirSync( blockStylesSrc ) + .filter( ( file ) => file.endsWith( '.css' ) ); + for ( const cssFile of cssFiles ) { + fs.copyFileSync( + path.join( blockStylesSrc, cssFile ), + path.join( blockDest, cssFile ) + ); + } + } - for ( const source of config.sources ) { - const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); - const phpSrc = path.join( gutenbergBuildDir, source.php ); - const blocks = getStableBlocks( scriptsSrc ); - - for ( const blockName of blocks ) { - // Top-level <block>.php (dynamic block file). - const topLevelPhpSrc = path.join( phpSrc, `${ blockName }.php` ); - const topLevelPhpDest = path.join( blocksDest, `${ blockName }.php` ); - if ( fs.existsSync( topLevelPhpSrc ) ) { - fs.mkdirSync( blocksDest, { recursive: true } ); - fs.copyFileSync( topLevelPhpSrc, topLevelPhpDest ); + // 3. Copy PHP from build + const blockPhpSrc = path.join( phpSrc, `${ blockName }.php` ); + const phpDest = path.join( + wpIncludesDir, + config.destination, + `${ blockName }.php` + ); + if ( fs.existsSync( blockPhpSrc ) ) { + fs.copyFileSync( blockPhpSrc, phpDest ); } - // Nested PHP helpers under <block>/, excluding the block's own index.php. + // 4. Copy PHP subdirectories from build (e.g., navigation-link/shared/*.php) const blockPhpDir = path.join( phpSrc, blockName ); if ( fs.existsSync( blockPhpDir ) ) { - const blockDest = path.join( blocksDest, blockName ); const rootIndex = path.join( blockPhpDir, 'index.php' ); - - /** - * @param {string} src - * @return {boolean} - */ - function hasPhpFiles( src ) { - const stat = fs.statSync( src ); - if ( stat.isDirectory() ) { - return fs.readdirSync( src, { withFileTypes: true } ).some( - ( entry ) => hasPhpFiles( path.join( src, entry.name ) ) - ); - } - return src.endsWith( '.php' ) && src !== rootIndex; - } - fs.cpSync( blockPhpDir, blockDest, { recursive: true, - filter: hasPhpFiles, + filter: function hasPhpFiles( src ) { + const stat = fs.statSync( src ); + if ( stat.isDirectory() ) { + return fs.readdirSync( src, { withFileTypes: true } ).some( + ( entry ) => hasPhpFiles( path.join( src, entry.name ) ) + ); + } + // Copy PHP files, but skip root index.php (handled by step 3). + return src.endsWith( '.php' ) && src !== rootIndex; + }, } ); } } console.log( - ` ✅ ${ source.name } block PHP copied (${ blocks.length } blocks)` - ); - } -} - -/** - * Copy per-block CSS files for every stable block. - * - * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. - */ -function copyBlockStyles( config ) { - const blocksDest = path.join( wpIncludesDir, config.destination ); - - for ( const source of config.sources ) { - const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); - const stylesSrc = path.join( gutenbergBuildDir, source.styles ); - const blocks = getStableBlocks( scriptsSrc ); - - let stylesCopied = 0; - for ( const blockName of blocks ) { - const blockStylesSrc = path.join( stylesSrc, blockName ); - if ( ! fs.existsSync( blockStylesSrc ) ) { - continue; - } - - const blockDest = path.join( blocksDest, blockName ); - fs.mkdirSync( blockDest, { recursive: true } ); - - const cssFiles = fs - .readdirSync( blockStylesSrc ) - .filter( ( file ) => file.endsWith( '.css' ) ); - for ( const cssFile of cssFiles ) { - fs.copyFileSync( - path.join( blockStylesSrc, cssFile ), - path.join( blockDest, cssFile ) - ); - } - if ( cssFiles.length > 0 ) { - stylesCopied++; - } - } - - console.log( - ` ✅ ${ source.name } block CSS copied (${ stylesCopied } blocks)` + ` ✅ ${ source.name } blocks copied (${ blockDirs.length } blocks)` ); } } @@ -385,7 +218,6 @@ function copyBlockStyles( config ) { */ function generateScriptModulesPackages() { const modulesDir = path.join( gutenbergBuildDir, 'modules' ); - /** @type {Record<string, any>} */ const assets = {}; /** @@ -422,7 +254,7 @@ function generateScriptModulesPackages() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ relativePath }:`, - error instanceof Error ? error.message : String( error ) + error.message ); } } @@ -459,7 +291,6 @@ function generateScriptModulesPackages() { */ function generateScriptLoaderPackages() { const scriptsDir = path.join( gutenbergBuildDir, 'scripts' ); - /** @type {Record<string, any>} */ const assets = {}; if ( ! fs.existsSync( scriptsDir ) ) { @@ -495,7 +326,7 @@ function generateScriptLoaderPackages() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ entry.name }/index.min.asset.php:`, - error instanceof Error ? error.message : String( error ) + error.message ); } } @@ -523,10 +354,9 @@ function generateScriptLoaderPackages() { } /** - * Generate `require-*-blocks.php` files. - * - * Reads all `block.json` files from the block-library (widgets are ignored) and - * creates `require-dynamic-blocks.php` and `require-static-blocks.php` files. + * Generate require-dynamic-blocks.php and require-static-blocks.php. + * Reads all block.json files from wp-includes/blocks and categorizes them. + * Only includes blocks from block-library, not widgets. */ function generateBlockRegistrationFiles() { const blocksDir = path.join( wpIncludesDir, 'blocks' ); @@ -617,15 +447,12 @@ ${ staticBlocks.map( ( name ) => `\t'${ name }',` ).join( '\n' ) } } /** - * Generate a `blocks-json.php` file. - * - * Reads all `block.json` files and combines them into a single PHP array. - * - * This must run after `copyBlockJson` has populated `wp-includes/blocks/`. + * Generate blocks-json.php from all block.json files. + * Reads all block.json files and combines them into a single PHP array. + * Uses json2php to maintain consistency with Core's formatting. */ function generateBlocksJson() { const blocksDir = path.join( wpIncludesDir, 'blocks' ); - /** @type {Record<string, any>} */ const blocks = {}; if ( ! fs.existsSync( blocksDir ) ) { @@ -651,7 +478,7 @@ function generateBlocksJson() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ entry.name }/block.json:`, - error instanceof Error ? error.message : String( error ) + error.message ); } } @@ -681,7 +508,7 @@ function generateBlocksJson() { * Main execution function. */ async function main() { - console.log( '📦 Copying Gutenberg build to src/...' ); + console.log( `📦 Copying Gutenberg build to ${ buildTarget }/...` ); if ( ! fs.existsSync( gutenbergBuildDir ) ) { console.error( '❌ Gutenberg build directory not found' ); @@ -691,18 +518,95 @@ async function main() { // 1. Copy JavaScript packages. console.log( '\n📦 Copying JavaScript packages...' ); - copyScripts( COPY_CONFIG.scripts ); + const scriptsConfig = COPY_CONFIG.scripts; + const scriptsSrc = path.join( gutenbergBuildDir, scriptsConfig.source ); + const scriptsDest = path.join( wpIncludesDir, scriptsConfig.destination ); - console.log( '\n📦 Copying block.json files...' ); - copyBlockJson( COPY_CONFIG.blocks ); + if ( fs.existsSync( scriptsSrc ) ) { + const entries = fs.readdirSync( scriptsSrc, { withFileTypes: true } ); - console.log( '\n📦 Copying block PHP files...' ); - copyBlockPhp( COPY_CONFIG.blocks ); + for ( const entry of entries ) { + const src = path.join( scriptsSrc, entry.name ); + + if ( entry.isDirectory() ) { + // Check if this should be copied as a directory (like vendors/). + if ( + scriptsConfig.copyDirectories && + scriptsConfig.directoryRenames && + scriptsConfig.directoryRenames[ entry.name ] + ) { + /* + * Copy special directories with rename (vendors/ → vendor/). + * Only copy react-jsx-runtime from vendors (react and react-dom come from Core's node_modules). + */ + const destName = + scriptsConfig.directoryRenames[ entry.name ]; + const dest = path.join( scriptsDest, destName ); + + if ( entry.name === 'vendors' ) { + // Only copy react-jsx-runtime files, skip react and react-dom. + const vendorFiles = fs.readdirSync( src ); + let copiedCount = 0; + fs.mkdirSync( dest, { recursive: true } ); + for ( const file of vendorFiles ) { + if ( + file.startsWith( 'react-jsx-runtime' ) && + file.endsWith( '.js' ) + ) { + const srcFile = path.join( src, file ); + const destFile = path.join( dest, file ); + + fs.copyFileSync( srcFile, destFile ); + copiedCount++; + } + } + console.log( + ` ✅ ${ entry.name }/ → ${ destName }/ (react-jsx-runtime only, ${ copiedCount } files)` + ); + } + } else { + /* + * Flatten package structure: package-name/index.js → package-name.js. + * This matches Core's expected file structure. + */ + const packageFiles = fs.readdirSync( src ); + + for ( const file of packageFiles ) { + if ( + /^index\.(js|min\.js)$/.test( file ) + ) { + const srcFile = path.join( src, file ); + // Replace 'index.' with 'package-name.'. + const destFile = file.replace( + /^index\./, + `${ entry.name }.` + ); + const destPath = path.join( scriptsDest, destFile ); + + fs.mkdirSync( path.dirname( destPath ), { + recursive: true, + } ); + + fs.copyFileSync( srcFile, destPath ); + } + } + } + } else if ( entry.isFile() && entry.name.endsWith( '.js' ) ) { + // Copy root-level JS files. + const dest = path.join( scriptsDest, entry.name ); + fs.mkdirSync( path.dirname( dest ), { recursive: true } ); + fs.copyFileSync( src, dest ); + } + } + + console.log( ' ✅ JavaScript packages copied' ); + } - console.log( '\n📦 Copying block CSS files...' ); - copyBlockStyles( COPY_CONFIG.blocks ); + // 2. Copy blocks (unified: scripts, styles, PHP, JSON). + console.log( '\n📦 Copying blocks...' ); + copyBlockAssets( COPY_CONFIG.blocks ); - // 3. Generate script-modules-packages.php. + // 3. Generate script-modules-packages.php from individual asset files. console.log( '\n📦 Generating script-modules-packages.php...' ); generateScriptModulesPackages(); diff --git a/tools/gutenberg/utils.js b/tools/gutenberg/utils.js index 3ba95199578b4..43047b5ee5dd7 100644 --- a/tools/gutenberg/utils.js +++ b/tools/gutenberg/utils.js @@ -139,7 +139,7 @@ async function resolveExpectedSha( { ref, ghcrRepo, isMutable } ) { /** * Trigger a fresh download of the Gutenberg artifact by spawning download.js, - * then run `grunt build:gutenberg` to copy the build into src/. + * then run `grunt build:gutenberg --dev` to copy the build to src/. * Exits the process if either step fails. */ function downloadGutenberg() { @@ -148,7 +148,7 @@ function downloadGutenberg() { process.exit( downloadResult.status ?? 1 ); } - const buildResult = spawnSync( 'grunt', [ 'build:gutenberg' ], { stdio: 'inherit', shell: true } ); + const buildResult = spawnSync( 'grunt', [ 'build:gutenberg', '--dev' ], { stdio: 'inherit', shell: true } ); if ( buildResult.status !== 0 ) { process.exit( buildResult.status ?? 1 ); } diff --git a/tsconfig.json b/tsconfig.json index e9f36c374ac89..87abe9fb7a42b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,7 +30,6 @@ "src/js/_enqueues/wp/code-editor.js", "src/js/_enqueues/lib/codemirror/javascript-lint.js", "src/js/_enqueues/lib/codemirror/htmlhint-kses.js", - "tools/gutenberg/copy.js", "tools/gutenberg/download.js", "tools/gutenberg/utils.js" ] From 5fadb73882b6e530d08eeb29ea8329bb7b1930b7 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers <desrosj@git.wordpress.org> Date: Mon, 6 Jul 2026 16:45:18 +0000 Subject: [PATCH 323/327] Build/Test Tools: Ensure all built files are deleted as expected. Block editor-related files can currently become stale or are not always deleted from `src` through the relevant `grunt clean` commands reliably. In the past, this primarily caused issues locally when a CSS file was copied from the `@wordpress/block-library` npm package into `src` and later removed from the package entirely. The result was a failing `grunt verify:old-files` task until the `grunt clean` command was run with the `--dev` flag. After [61438] this issue presented in new ways. Mainly, files would remain in the core.svn.wordpress.org build repository indefinitely unless explicitly deleted. [62051] brought the `grunt clean` tasks up to date, but there are still paths where files remain unexpectedly or have outdated contents after rebuilding. This can cause incomplete or inaccurate commits where built files subject to version control are not updated correctly, especially when changing the `gutenberg.sha` value in `package.json`. This change improves the build script to ensure that all files sourced from the zip file with assets built by the Gutenberg repository are always fresh and up to date, and any files that are deleted from the built zip file are also deleted from version control appropriately (in both the `develop` and `core` repositories). A handful of changes were required to accomplish this: - All Gutenberg-sourced outputs are written to `src/` regardless of `--dev`. In production builds, `build:gutenberg` runs before `build:files`, and `copy:files` propagates the tree to `build/`. - `gutenbergFiles` has been split into two different arrays: `gutenbergUnversionedFiles` and `gutenbergVersionedFiles`. The `src` argument for the `clean:gutenberg` task is dynamically populated at run time with a bare `grunt clean` cleaning only the unversioned subset (so version-controlled files are not unexpectedly deleted), and explicit `clean:gutenberg` (or any chain through `build:gutenberg`) cleans both, removing files deleted upstream from version control. - `clean:gutenberg` no longer wipes non-Gutenberg sourced files from `wp-includes/js/`. All file/path lists have been updated to only match files the related tasks are directly responsible for managing. - `tools/gutenberg/copy.js` has been added to `tsconfig.json` and brought under `tsc --build` strict-mode checking. The large `copyBlockAssets()` function was broken into one named function per asset type, each typed against the relevant `COPY_CONFIG` slice. The split is a code-clarity improvement, not a bug fix. This recommits [62525] to `trunk`. Props desrosj, westonruter, jorbin, adamsilverstein. Fixes #65452. git-svn-id: https://develop.svn.wordpress.org/trunk@62645 602fd350-edb4-49c9-b593-d223f7449a82 --- Gruntfile.js | 128 +++++++---- package.json | 2 +- tools/gutenberg/copy.js | 458 +++++++++++++++++++++++---------------- tools/gutenberg/utils.js | 4 +- tsconfig.json | 1 + 5 files changed, 371 insertions(+), 222 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 314aa93d0cbef..ab56358b8f60d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -41,18 +41,43 @@ module.exports = function(grunt) { 'wp-admin/css/colors/**/*.css', ], - // Built js files, in /src or /build. + // Built JavaScript files that do not belong to a more specific group. jsFiles = [ 'wp-admin/js/', - 'wp-includes/js/', + 'wp-includes/js/*', + /* + * This directory has shared responsibility and is managed through + * gutenbergUnversionedFiles, webpackFiles, and copy:vendor-js. + */ + '!wp-includes/js/dist', + 'wp-includes/js/dist/vendor/*.js', + // Managed by the Gutenberg-related tasks. + '!wp-includes/js/dist/vendor/react-jsx-runtime*', + ], + + // Files sourced from the Gutenberg repository built asset that are ignored by version control. + gutenbergUnversionedFiles = [ + SOURCE_DIR + 'wp-includes/blocks/*/*.css', + SOURCE_DIR + 'wp-includes/css/dist', + SOURCE_DIR + 'wp-includes/js/dist/*.js', + SOURCE_DIR + 'wp-includes/js/dist/script-modules', + SOURCE_DIR + 'wp-includes/js/dist/vendor/react-jsx-runtime*', ], - // All files copied from the Gutenberg repository excluded from version control. - gutenbergFiles = [ - 'wp-includes/js/dist', - 'wp-includes/css/dist', - // Old location kept temporarily to ensure they are cleaned up. - 'wp-includes/icons', + // Files sourced from the Gutenberg repository built asset that are managed through version control. + gutenbergVersionedFiles = [ + // Block assets (block.json, top-level PHP, nested PHP helpers). + SOURCE_DIR + 'wp-includes/blocks/*', + '!' + SOURCE_DIR + 'wp-includes/blocks/index.php', + SOURCE_DIR + 'wp-includes/images/icon-library', + SOURCE_DIR + 'wp-includes/theme.json', + SOURCE_DIR + 'wp-includes/theme-i18n.json', + // Routes and pages. + SOURCE_DIR + 'wp-includes/build', + // PHP manifests generated by gutenberg:copy. + SOURCE_DIR + 'wp-includes/assets/icon-library-manifest.php', + SOURCE_DIR + 'wp-includes/assets/script-loader-packages.php', + SOURCE_DIR + 'wp-includes/assets/script-modules-packages.php', ], // All files built by Webpack, in /src or /build. @@ -241,10 +266,32 @@ module.exports = function(grunt) { return setFilePath( WORKING_DIR, file ); } ), - // Clean files built by the tools/gutenberg scripts. - gutenberg: gutenbergFiles.map( function( file ) { - return setFilePath( WORKING_DIR, file ); - }), + /* + * Clean files sourced from the downloaded zip file built by the Gutenberg repository. + * + * All files originating from the Gutenberg repository's built assets (both tracked and untracked by version + * control) are deleted when `clean:gutenberg` is explicitly called. This ensures that versioned files that + * have been deleted upstream are also removed from version control in this repository. + * + * When `clean:gutenberg` is not explicitly called and run through `grunt clean`, only ignored files are + * cleaned. + */ + gutenberg: { + get src() { + const cli = grunt.cli.tasks; + // Preserve versioned files only when running bare `grunt clean`. + const isBareCleanSweep = + cli.includes( 'clean' ) && + ! cli.includes( 'clean:gutenberg' ); + + if ( isBareCleanSweep ) { + return gutenbergUnversionedFiles; + } else { + return gutenbergUnversionedFiles.concat( gutenbergVersionedFiles ); + } + }, + }, + dynamic: { dot: true, expand: true, @@ -289,7 +336,6 @@ module.exports = function(grunt) { expand: true, cwd: SOURCE_DIR, src: buildFiles.concat( [ - '!wp-includes/assets/**', // Assets is extracted into separate copy tasks. '!js/**', // JavaScript is extracted into separate copy tasks. '!.{svn,git}', // Exclude version control folders. '!wp-includes/version.php', // Exclude version.php. @@ -666,24 +712,18 @@ module.exports = function(grunt) { 'constants.php', 'pages/**/*.php', ], - dest: WORKING_DIR + 'wp-includes/build/', + dest: SOURCE_DIR + 'wp-includes/build/', } ], }, /* - * Only copy files relevant to the routes specified in the registry file. - * - * While the registry file does not contain any experimental routes, the `gutenberg/build/routes` directory - * includes the files for all registered routes. Only the files related to the routes specified in the - * registry should be included in the WordPress build. - * - * The `src` list is populated at task runtime by `routes:setup`, which reads the registry after - * `gutenberg:download` has run. See the `routes:setup` task registration for implementation details. + * The list of route source files is populated from the contents of the registry.php file at task runtime by + * `routes:setup`. */ routes: { expand: true, cwd: 'gutenberg/build', src: [], - dest: WORKING_DIR + 'wp-includes/build/', + dest: SOURCE_DIR + 'wp-includes/build/', }, 'gutenberg-js': { files: [ { @@ -692,7 +732,7 @@ module.exports = function(grunt) { src: [ 'pages/**/*.js', ], - dest: WORKING_DIR + 'wp-includes/build/', + dest: SOURCE_DIR + 'wp-includes/build/', } ], }, 'gutenberg-modules': { @@ -706,7 +746,7 @@ module.exports = function(grunt) { // with no debugging value over the minified versions. '!vips/!(*.min).js', ], - dest: WORKING_DIR + 'wp-includes/js/dist/script-modules/', + dest: SOURCE_DIR + 'wp-includes/js/dist/script-modules/', } ], }, 'gutenberg-styles': { @@ -719,7 +759,7 @@ module.exports = function(grunt) { // Per-block CSS is copied to wp-includes/blocks/ by tools/gutenberg/copy.js. '!block-library/*/**', ], - dest: WORKING_DIR + 'wp-includes/css/dist/', + dest: SOURCE_DIR + 'wp-includes/css/dist/', } ], }, 'gutenberg-theme-json': { @@ -738,11 +778,11 @@ module.exports = function(grunt) { files: [ { src: 'gutenberg/lib/theme.json', - dest: WORKING_DIR + 'wp-includes/theme.json', + dest: SOURCE_DIR + 'wp-includes/theme.json', }, { src: 'gutenberg/lib/theme-i18n.json', - dest: WORKING_DIR + 'wp-includes/theme-i18n.json', + dest: SOURCE_DIR + 'wp-includes/theme-i18n.json', }, ], }, @@ -750,8 +790,8 @@ module.exports = function(grunt) { files: [ { expand: true, cwd: 'gutenberg/packages/icons/src/library', - src: '*.svg', - dest: WORKING_DIR + 'wp-includes/images/icon-library', + src: [ '*.svg' ], + dest: SOURCE_DIR + 'wp-includes/images/icon-library', } ], }, 'icon-library-manifest': { @@ -773,7 +813,7 @@ module.exports = function(grunt) { }, files: [ { src: 'gutenberg/packages/icons/src/manifest.php', - dest: WORKING_DIR + 'wp-includes/assets/icon-library-manifest.php', + dest: SOURCE_DIR + 'wp-includes/assets/icon-library-manifest.php', } ], }, }, @@ -1667,7 +1707,7 @@ module.exports = function(grunt) { */ grunt.util.spawn( { grunt: true, - args: [ 'build:gutenberg', '--dev' ], + args: [ 'build:gutenberg' ], opts: { stdio: 'inherit' } }, function( buildError ) { done( ! buildError ); @@ -1677,10 +1717,9 @@ module.exports = function(grunt) { grunt.registerTask( 'gutenberg:copy', 'Copies Gutenberg JS packages and block assets to WordPress Core.', function() { const done = this.async(); - const buildDir = grunt.option( 'dev' ) ? 'src' : 'build'; grunt.util.spawn( { cmd: 'node', - args: [ 'tools/gutenberg/copy.js', `--build-dir=${ buildDir }` ], + args: [ 'tools/gutenberg/copy.js' ], opts: { stdio: 'inherit' } }, function( error ) { done( ! error ); @@ -2164,10 +2203,23 @@ module.exports = function(grunt) { } ); } ); - grunt.registerTask( 'build:gutenberg', [ - 'copy:gutenberg-php', + // Detects and copies stable routes. + grunt.registerTask( 'build:routes', [ 'routes:setup', 'copy:routes', + ] ); + + /* + * Refresh the Gutenberg-sourced content in src/. + * + * clean:gutenberg must run first to ensure files removed upstream are purged. + * + * Because all of these tasks write to src/, the outcome is identical for build and build:dev. + */ + grunt.registerTask( 'build:gutenberg', [ + 'clean:gutenberg', + 'copy:gutenberg-php', + 'build:routes', 'copy:gutenberg-js', 'gutenberg:copy', 'copy:gutenberg-modules', @@ -2181,21 +2233,21 @@ module.exports = function(grunt) { if ( grunt.option( 'dev' ) ) { grunt.task.run( [ 'gutenberg:verify', + 'build:gutenberg', 'build:js', 'build:css', 'build:codemirror', - 'build:gutenberg', 'build:certificates' ] ); } else { grunt.task.run( [ 'gutenberg:verify', + 'build:gutenberg', 'build:certificates', 'build:files', 'build:js', 'build:css', 'build:codemirror', - 'build:gutenberg', 'replace:source-maps', 'verify:build' ] ); diff --git a/package.json b/package.json index bebc4b42a3248..3c93ef37f8c27 100644 --- a/package.json +++ b/package.json @@ -141,6 +141,6 @@ "typecheck:php": "node ./tools/local-env/scripts/docker.js run --rm php composer phpstan", "gutenberg:copy": "node tools/gutenberg/copy.js", "gutenberg:verify": "node tools/gutenberg/utils.js", - "gutenberg:download": "node tools/gutenberg/download.js && grunt build:gutenberg --dev" + "gutenberg:download": "node tools/gutenberg/download.js && grunt build:gutenberg" } } diff --git a/tools/gutenberg/copy.js b/tools/gutenberg/copy.js index 8589c9581bed1..3da78e4b14611 100644 --- a/tools/gutenberg/copy.js +++ b/tools/gutenberg/copy.js @@ -6,32 +6,59 @@ * This script copies and transforms Gutenberg's build output to WordPress Core. * It handles path transformations from plugin structure to Core structure. * + * Since a number of files sourced from the downloaded zip file are subject to + * version control, the `src/` directory is used as the destination for all + * outputs of this file (both versioned and unversioned). + * + * Grunt will copy the files appropriately when running `build` instead of + * `build:dev`, and the repository's configured ignore rules will manage what + * can be committed. + * * @package WordPress */ const fs = require( 'fs' ); const path = require( 'path' ); -const json2php = require( 'json2php' ); +const json2php = /** @type {typeof import('json2php').default} */ ( + /** @type {unknown} */ ( require( 'json2php' ) ) +); const { fromString } = require( 'php-array-reader' ); -// Paths. const rootDir = path.resolve( __dirname, '../..' ); const gutenbergDir = path.join( rootDir, 'gutenberg' ); const gutenbergBuildDir = path.join( gutenbergDir, 'build' ); +const wpIncludesDir = path.join( rootDir, 'src', 'wp-includes' ); + +/** + * JS package copy configuration. + * + * @typedef ScriptsConfig + * @type {object} + * @property {string} source - Gutenberg-relative source directory (e.g. `'scripts'`). + * @property {string} destination - Subpath under `wp-includes/` where packages land (e.g. `'js/dist'`). + * @property {boolean} copyDirectories - Whether to copy whole directories (with optional renames) as-is. + * @property {Record<string, string>} directoryRenames - Map of source directory name → destination directory name. + */ -/* - * Determine build target from command line argument (--dev or --build-dir). - * Default to 'src' for development. +/** + * One block family entry — block library, widget blocks, etc. + * + * @typedef BlockConfigSource + * @type {object} + * @property {string} name - Human-readable label (e.g. `'block-library'`, `'widgets'`). + * @property {string} scripts - Gutenberg-relative path to the block scripts directory. + * @property {string} styles - Gutenberg-relative path to the block styles directory. + * @property {string} php - Gutenberg-relative path to the block PHP directory. */ -const args = process.argv.slice( 2 ); -const buildDirArg = args.find( ( arg ) => arg.startsWith( '--build-dir=' ) ); -const buildTarget = buildDirArg - ? buildDirArg.split( '=' )[ 1 ] - : args.includes( '--dev' ) - ? 'src' - : 'build'; -const wpIncludesDir = path.join( rootDir, buildTarget, 'wp-includes' ); +/** + * Block copy configuration. + * + * @typedef BlockConfig + * @type {object} + * @property {string} destination - Subpath under `wp-includes/` where blocks land (e.g. `'blocks'`). + * @property {BlockConfigSource[]} sources - One entry per block family. + */ /** * Copy configuration. @@ -81,7 +108,7 @@ const COPY_CONFIG = { * @throws Error when PHP source file unable to be read or parsed. * * @param {string} phpFilepath Absolute path of PHP file returning a single value. - * @return {Object|Array} JavaScript representation of value from input file. + * @return {any} JavaScript representation of value from input file. */ function readReturnedValueFromPHPFile( phpFilepath ) { const content = fs.readFileSync( phpFilepath, 'utf8' ); @@ -109,104 +136,244 @@ function isExperimentalBlock( blockJsonPath ) { } /** - * Copy all assets for blocks from Gutenberg to Core. - * Handles scripts, styles, PHP, and JSON for all block types in a unified way. + * Generate a list of stable blocks. * - * @param {Object} config - Block configuration from COPY_CONFIG.blocks + * Blocks marked as `"__experimental": true` in a `block.json` file are excluded. + * + * @param {string} scriptsSrc - Path to the Gutenberg scripts source (e.g. `scripts/block-library`). + * @return {string[]} Stable block directory names. */ -function copyBlockAssets( config ) { - const blocksDest = path.join( wpIncludesDir, config.destination ); +function getStableBlocks( scriptsSrc ) { + if ( ! fs.existsSync( scriptsSrc ) ) { + return []; + } + return fs + .readdirSync( scriptsSrc, { withFileTypes: true } ) + .filter( ( entry ) => entry.isDirectory() ) + .map( ( entry ) => entry.name ) + .filter( ( blockName ) => ! isExperimentalBlock( + path.join( scriptsSrc, blockName, 'block.json' ) + ) ); +} - for ( const source of config.sources ) { - const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); - const stylesSrc = path.join( gutenbergBuildDir, source.styles ); - const phpSrc = path.join( gutenbergBuildDir, source.php ); +/** + * Copy JavaScript files. + * + * @param {ScriptsConfig} config - Scripts configuration from `COPY_CONFIG.scripts`. + */ +function copyScripts( config ) { + const scriptsSrc = path.join( gutenbergBuildDir, config.source ); + const scriptsDest = path.join( wpIncludesDir, config.destination ); - if ( ! fs.existsSync( scriptsSrc ) ) { - continue; - } + if ( ! fs.existsSync( scriptsSrc ) ) { + return; + } - // Get all block directories from the scripts source. - const blockDirs = fs - .readdirSync( scriptsSrc, { withFileTypes: true } ) - .filter( ( entry ) => entry.isDirectory() ) - .map( ( entry ) => entry.name ); - - for ( const blockName of blockDirs ) { - // Skip experimental blocks. - const blockJsonPath = path.join( - scriptsSrc, - blockName, - 'block.json' - ); - if ( isExperimentalBlock( blockJsonPath ) ) { - continue; + const entries = fs.readdirSync( scriptsSrc, { withFileTypes: true } ); + + for ( const entry of entries ) { + const src = path.join( scriptsSrc, entry.name ); + + if ( entry.isDirectory() ) { + // Check if this should be copied as a directory (like vendors/). + if ( + config.copyDirectories && + config.directoryRenames && + config.directoryRenames[ entry.name ] + ) { + /* + * Copy special directories with rename (vendors/ → vendor/). + * Only copy react-jsx-runtime from vendors (react and react-dom come from Core's node_modules). + */ + const destName = config.directoryRenames[ entry.name ]; + const dest = path.join( scriptsDest, destName ); + + if ( entry.name === 'vendors' ) { + // Only copy react-jsx-runtime files, skip react and react-dom. + const vendorFiles = fs.readdirSync( src ); + let copiedCount = 0; + fs.mkdirSync( dest, { recursive: true } ); + for ( const file of vendorFiles ) { + if ( + file.startsWith( 'react-jsx-runtime' ) && + file.endsWith( '.js' ) + ) { + const srcFile = path.join( src, file ); + const destFile = path.join( dest, file ); + + fs.copyFileSync( srcFile, destFile ); + copiedCount++; + } + } + console.log( + ` ✅ ${ entry.name }/ → ${ destName }/ (react-jsx-runtime only, ${ copiedCount } files)` + ); + } + } else { + /* + * Flatten package structure: package-name/index.js → package-name.js. + * This matches Core's expected file structure. + */ + const packageFiles = fs.readdirSync( src ); + + for ( const file of packageFiles ) { + if ( /^index\.(js|min\.js)$/.test( file ) ) { + const srcFile = path.join( src, file ); + // Replace 'index.' with 'package-name.'. + const destFile = file.replace( + /^index\./, + `${ entry.name }.` + ); + const destPath = path.join( scriptsDest, destFile ); + + fs.mkdirSync( path.dirname( destPath ), { + recursive: true, + } ); + + fs.copyFileSync( srcFile, destPath ); + } + } } + } else if ( entry.isFile() && entry.name.endsWith( '.js' ) ) { + // Copy root-level JS files. + const dest = path.join( scriptsDest, entry.name ); + fs.mkdirSync( path.dirname( dest ), { recursive: true } ); + fs.copyFileSync( src, dest ); + } + } + + console.log( ' ✅ JavaScript packages copied' ); +} +/** + * Copy `block.json` files for every stable block. + * + * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. + */ +function copyBlockJson( config ) { + const blocksDest = path.join( wpIncludesDir, config.destination ); + + for ( const source of config.sources ) { + const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); + const blocks = getStableBlocks( scriptsSrc ); + + for ( const blockName of blocks ) { + const blockSrc = path.join( scriptsSrc, blockName ); const blockDest = path.join( blocksDest, blockName ); fs.mkdirSync( blockDest, { recursive: true } ); - // 1. Copy scripts/JSON (everything except PHP) - const blockScriptsSrc = path.join( scriptsSrc, blockName ); - if ( fs.existsSync( blockScriptsSrc ) ) { - fs.cpSync( - blockScriptsSrc, - blockDest, - { - recursive: true, - // Skip PHP, copied from build in steps 3 & 4. - filter: f => ! f.endsWith( '.php' ), - } + const blockJsonSrc = path.join( blockSrc, 'block.json' ); + if ( fs.existsSync( blockJsonSrc ) ) { + fs.copyFileSync( + blockJsonSrc, + path.join( blockDest, 'block.json' ) ); } + } - // 2. Copy styles (if they exist in per-block directory) - const blockStylesSrc = path.join( stylesSrc, blockName ); - if ( fs.existsSync( blockStylesSrc ) ) { - const cssFiles = fs - .readdirSync( blockStylesSrc ) - .filter( ( file ) => file.endsWith( '.css' ) ); - for ( const cssFile of cssFiles ) { - fs.copyFileSync( - path.join( blockStylesSrc, cssFile ), - path.join( blockDest, cssFile ) - ); - } - } + console.log( + ` ✅ ${ source.name } block.json copied (${ blocks.length } blocks)` + ); + } +} - // 3. Copy PHP from build - const blockPhpSrc = path.join( phpSrc, `${ blockName }.php` ); - const phpDest = path.join( - wpIncludesDir, - config.destination, - `${ blockName }.php` - ); - if ( fs.existsSync( blockPhpSrc ) ) { - fs.copyFileSync( blockPhpSrc, phpDest ); +/** + * Copy block PHP files for every stable block. + * + * Handles both the top-level `<block>.php` dynamic block files and any nested + * `*.php` helpers under `<block>/` (e.g. `navigation-link/shared/render-submenu-icon.php`). + * + * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. + */ +function copyBlockPhp( config ) { + const blocksDest = path.join( wpIncludesDir, config.destination ); + + for ( const source of config.sources ) { + const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); + const phpSrc = path.join( gutenbergBuildDir, source.php ); + const blocks = getStableBlocks( scriptsSrc ); + + for ( const blockName of blocks ) { + // Top-level <block>.php (dynamic block file). + const topLevelPhpSrc = path.join( phpSrc, `${ blockName }.php` ); + const topLevelPhpDest = path.join( blocksDest, `${ blockName }.php` ); + if ( fs.existsSync( topLevelPhpSrc ) ) { + fs.mkdirSync( blocksDest, { recursive: true } ); + fs.copyFileSync( topLevelPhpSrc, topLevelPhpDest ); } - // 4. Copy PHP subdirectories from build (e.g., navigation-link/shared/*.php) + // Nested PHP helpers under <block>/, excluding the block's own index.php. const blockPhpDir = path.join( phpSrc, blockName ); if ( fs.existsSync( blockPhpDir ) ) { + const blockDest = path.join( blocksDest, blockName ); const rootIndex = path.join( blockPhpDir, 'index.php' ); + + /** + * @param {string} src + * @return {boolean} + */ + function hasPhpFiles( src ) { + const stat = fs.statSync( src ); + if ( stat.isDirectory() ) { + return fs.readdirSync( src, { withFileTypes: true } ).some( + ( entry ) => hasPhpFiles( path.join( src, entry.name ) ) + ); + } + return src.endsWith( '.php' ) && src !== rootIndex; + } + fs.cpSync( blockPhpDir, blockDest, { recursive: true, - filter: function hasPhpFiles( src ) { - const stat = fs.statSync( src ); - if ( stat.isDirectory() ) { - return fs.readdirSync( src, { withFileTypes: true } ).some( - ( entry ) => hasPhpFiles( path.join( src, entry.name ) ) - ); - } - // Copy PHP files, but skip root index.php (handled by step 3). - return src.endsWith( '.php' ) && src !== rootIndex; - }, + filter: hasPhpFiles, } ); } } console.log( - ` ✅ ${ source.name } blocks copied (${ blockDirs.length } blocks)` + ` ✅ ${ source.name } block PHP copied (${ blocks.length } blocks)` + ); + } +} + +/** + * Copy per-block CSS files for every stable block. + * + * @param {BlockConfig} config - Block configuration from `COPY_CONFIG.blocks`. + */ +function copyBlockStyles( config ) { + const blocksDest = path.join( wpIncludesDir, config.destination ); + + for ( const source of config.sources ) { + const scriptsSrc = path.join( gutenbergBuildDir, source.scripts ); + const stylesSrc = path.join( gutenbergBuildDir, source.styles ); + const blocks = getStableBlocks( scriptsSrc ); + + let stylesCopied = 0; + for ( const blockName of blocks ) { + const blockStylesSrc = path.join( stylesSrc, blockName ); + if ( ! fs.existsSync( blockStylesSrc ) ) { + continue; + } + + const blockDest = path.join( blocksDest, blockName ); + fs.mkdirSync( blockDest, { recursive: true } ); + + const cssFiles = fs + .readdirSync( blockStylesSrc ) + .filter( ( file ) => file.endsWith( '.css' ) ); + for ( const cssFile of cssFiles ) { + fs.copyFileSync( + path.join( blockStylesSrc, cssFile ), + path.join( blockDest, cssFile ) + ); + } + if ( cssFiles.length > 0 ) { + stylesCopied++; + } + } + + console.log( + ` ✅ ${ source.name } block CSS copied (${ stylesCopied } blocks)` ); } } @@ -218,6 +385,7 @@ function copyBlockAssets( config ) { */ function generateScriptModulesPackages() { const modulesDir = path.join( gutenbergBuildDir, 'modules' ); + /** @type {Record<string, any>} */ const assets = {}; /** @@ -254,7 +422,7 @@ function generateScriptModulesPackages() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ relativePath }:`, - error.message + error instanceof Error ? error.message : String( error ) ); } } @@ -291,6 +459,7 @@ function generateScriptModulesPackages() { */ function generateScriptLoaderPackages() { const scriptsDir = path.join( gutenbergBuildDir, 'scripts' ); + /** @type {Record<string, any>} */ const assets = {}; if ( ! fs.existsSync( scriptsDir ) ) { @@ -326,7 +495,7 @@ function generateScriptLoaderPackages() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ entry.name }/index.min.asset.php:`, - error.message + error instanceof Error ? error.message : String( error ) ); } } @@ -354,9 +523,10 @@ function generateScriptLoaderPackages() { } /** - * Generate require-dynamic-blocks.php and require-static-blocks.php. - * Reads all block.json files from wp-includes/blocks and categorizes them. - * Only includes blocks from block-library, not widgets. + * Generate `require-*-blocks.php` files. + * + * Reads all `block.json` files from the block-library (widgets are ignored) and + * creates `require-dynamic-blocks.php` and `require-static-blocks.php` files. */ function generateBlockRegistrationFiles() { const blocksDir = path.join( wpIncludesDir, 'blocks' ); @@ -447,12 +617,15 @@ ${ staticBlocks.map( ( name ) => `\t'${ name }',` ).join( '\n' ) } } /** - * Generate blocks-json.php from all block.json files. - * Reads all block.json files and combines them into a single PHP array. - * Uses json2php to maintain consistency with Core's formatting. + * Generate a `blocks-json.php` file. + * + * Reads all `block.json` files and combines them into a single PHP array. + * + * This must run after `copyBlockJson` has populated `wp-includes/blocks/`. */ function generateBlocksJson() { const blocksDir = path.join( wpIncludesDir, 'blocks' ); + /** @type {Record<string, any>} */ const blocks = {}; if ( ! fs.existsSync( blocksDir ) ) { @@ -478,7 +651,7 @@ function generateBlocksJson() { } catch ( error ) { console.error( ` ⚠️ Error reading ${ entry.name }/block.json:`, - error.message + error instanceof Error ? error.message : String( error ) ); } } @@ -508,7 +681,7 @@ function generateBlocksJson() { * Main execution function. */ async function main() { - console.log( `📦 Copying Gutenberg build to ${ buildTarget }/...` ); + console.log( '📦 Copying Gutenberg build to src/...' ); if ( ! fs.existsSync( gutenbergBuildDir ) ) { console.error( '❌ Gutenberg build directory not found' ); @@ -518,95 +691,18 @@ async function main() { // 1. Copy JavaScript packages. console.log( '\n📦 Copying JavaScript packages...' ); - const scriptsConfig = COPY_CONFIG.scripts; - const scriptsSrc = path.join( gutenbergBuildDir, scriptsConfig.source ); - const scriptsDest = path.join( wpIncludesDir, scriptsConfig.destination ); + copyScripts( COPY_CONFIG.scripts ); - if ( fs.existsSync( scriptsSrc ) ) { - const entries = fs.readdirSync( scriptsSrc, { withFileTypes: true } ); + console.log( '\n📦 Copying block.json files...' ); + copyBlockJson( COPY_CONFIG.blocks ); - for ( const entry of entries ) { - const src = path.join( scriptsSrc, entry.name ); - - if ( entry.isDirectory() ) { - // Check if this should be copied as a directory (like vendors/). - if ( - scriptsConfig.copyDirectories && - scriptsConfig.directoryRenames && - scriptsConfig.directoryRenames[ entry.name ] - ) { - /* - * Copy special directories with rename (vendors/ → vendor/). - * Only copy react-jsx-runtime from vendors (react and react-dom come from Core's node_modules). - */ - const destName = - scriptsConfig.directoryRenames[ entry.name ]; - const dest = path.join( scriptsDest, destName ); - - if ( entry.name === 'vendors' ) { - // Only copy react-jsx-runtime files, skip react and react-dom. - const vendorFiles = fs.readdirSync( src ); - let copiedCount = 0; - fs.mkdirSync( dest, { recursive: true } ); - for ( const file of vendorFiles ) { - if ( - file.startsWith( 'react-jsx-runtime' ) && - file.endsWith( '.js' ) - ) { - const srcFile = path.join( src, file ); - const destFile = path.join( dest, file ); - - fs.copyFileSync( srcFile, destFile ); - copiedCount++; - } - } - console.log( - ` ✅ ${ entry.name }/ → ${ destName }/ (react-jsx-runtime only, ${ copiedCount } files)` - ); - } - } else { - /* - * Flatten package structure: package-name/index.js → package-name.js. - * This matches Core's expected file structure. - */ - const packageFiles = fs.readdirSync( src ); - - for ( const file of packageFiles ) { - if ( - /^index\.(js|min\.js)$/.test( file ) - ) { - const srcFile = path.join( src, file ); - // Replace 'index.' with 'package-name.'. - const destFile = file.replace( - /^index\./, - `${ entry.name }.` - ); - const destPath = path.join( scriptsDest, destFile ); - - fs.mkdirSync( path.dirname( destPath ), { - recursive: true, - } ); - - fs.copyFileSync( srcFile, destPath ); - } - } - } - } else if ( entry.isFile() && entry.name.endsWith( '.js' ) ) { - // Copy root-level JS files. - const dest = path.join( scriptsDest, entry.name ); - fs.mkdirSync( path.dirname( dest ), { recursive: true } ); - fs.copyFileSync( src, dest ); - } - } - - console.log( ' ✅ JavaScript packages copied' ); - } + console.log( '\n📦 Copying block PHP files...' ); + copyBlockPhp( COPY_CONFIG.blocks ); - // 2. Copy blocks (unified: scripts, styles, PHP, JSON). - console.log( '\n📦 Copying blocks...' ); - copyBlockAssets( COPY_CONFIG.blocks ); + console.log( '\n📦 Copying block CSS files...' ); + copyBlockStyles( COPY_CONFIG.blocks ); - // 3. Generate script-modules-packages.php from individual asset files. + // 3. Generate script-modules-packages.php. console.log( '\n📦 Generating script-modules-packages.php...' ); generateScriptModulesPackages(); diff --git a/tools/gutenberg/utils.js b/tools/gutenberg/utils.js index 43047b5ee5dd7..3ba95199578b4 100644 --- a/tools/gutenberg/utils.js +++ b/tools/gutenberg/utils.js @@ -139,7 +139,7 @@ async function resolveExpectedSha( { ref, ghcrRepo, isMutable } ) { /** * Trigger a fresh download of the Gutenberg artifact by spawning download.js, - * then run `grunt build:gutenberg --dev` to copy the build to src/. + * then run `grunt build:gutenberg` to copy the build into src/. * Exits the process if either step fails. */ function downloadGutenberg() { @@ -148,7 +148,7 @@ function downloadGutenberg() { process.exit( downloadResult.status ?? 1 ); } - const buildResult = spawnSync( 'grunt', [ 'build:gutenberg', '--dev' ], { stdio: 'inherit', shell: true } ); + const buildResult = spawnSync( 'grunt', [ 'build:gutenberg' ], { stdio: 'inherit', shell: true } ); if ( buildResult.status !== 0 ) { process.exit( buildResult.status ?? 1 ); } diff --git a/tsconfig.json b/tsconfig.json index 87abe9fb7a42b..e9f36c374ac89 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,6 +30,7 @@ "src/js/_enqueues/wp/code-editor.js", "src/js/_enqueues/lib/codemirror/javascript-lint.js", "src/js/_enqueues/lib/codemirror/htmlhint-kses.js", + "tools/gutenberg/copy.js", "tools/gutenberg/download.js", "tools/gutenberg/utils.js" ] From baa3d15520f2fb068b762b97903d085facae2553 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 6 Jul 2026 16:50:10 +0000 Subject: [PATCH 324/327] Site Health: Bump the recommended version of MariaDB to `10.11`. MariaDB 10.6 will reach end of life on 6 July 2026. MariaDB 10.11 is the next oldest LTS version still receiving support upstream and is now the recommended minimum version, updated both in `readme.html` and in `WP_Site_Health`. Developed in https://github.com/WordPress/wordpress-develop/pull/12409. Follow-up to r55665, r58432, r60319. Props mukesh27, peterwilsoncc. Fixes #65585. git-svn-id: https://develop.svn.wordpress.org/trunk@62646 602fd350-edb4-49c9-b593-d223f7449a82 --- src/readme.html | 2 +- src/wp-admin/includes/class-wp-site-health.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/readme.html b/src/readme.html index c8dd83cdbd9a4..190c9aedfa348 100644 --- a/src/readme.html +++ b/src/readme.html @@ -59,7 +59,7 @@ <h2>System Requirements</h2> <h3>Recommendations</h3> <ul> <li><a href="https://www.php.net/">PHP</a> version <strong>8.3</strong> or greater.</li> - <li><a href="https://www.mysql.com/">MySQL</a> version <strong>8.0</strong> or greater OR <a href="https://mariadb.org/">MariaDB</a> version <strong>10.6</strong> or greater.</li> + <li><a href="https://www.mysql.com/">MySQL</a> version <strong>8.0</strong> or greater OR <a href="https://mariadb.org/">MariaDB</a> version <strong>10.11</strong> or greater.</li> <li>The <a href="https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a> Apache module.</li> <li><a href="https://wordpress.org/news/2016/12/moving-toward-ssl/">HTTPS</a> support.</li> <li>A link to <a href="https://wordpress.org/">wordpress.org</a> on your site.</li> diff --git a/src/wp-admin/includes/class-wp-site-health.php b/src/wp-admin/includes/class-wp-site-health.php index 1a7a35f63e126..9eb4c8525a942 100644 --- a/src/wp-admin/includes/class-wp-site-health.php +++ b/src/wp-admin/includes/class-wp-site-health.php @@ -18,7 +18,7 @@ class WP_Site_Health { private $mysql_server_version = ''; private $mysql_required_version = '5.5'; private $mysql_recommended_version = '8.0'; - private $mariadb_recommended_version = '10.6'; + private $mariadb_recommended_version = '10.11'; public $php_memory_limit; From 395dd7422b1b569936bb8c0f9b90bf44d2044095 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 6 Jul 2026 17:57:14 +0000 Subject: [PATCH 325/327] Docs: Indicate `absint()` returns `non-negative-int` for static analysis. Follow-up to r6222, r29011. See #64898. git-svn-id: https://develop.svn.wordpress.org/trunk@62647 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/load.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/load.php b/src/wp-includes/load.php index 27c58b57dd671..ff68c084104f1 100644 --- a/src/wp-includes/load.php +++ b/src/wp-includes/load.php @@ -1464,8 +1464,9 @@ function is_multisite() { * * @param mixed $maybeint Data you wish to have converted to a non-negative integer. * @return int A non-negative integer. + * @phpstan-return non-negative-int */ -function absint( $maybeint ) { +function absint( $maybeint ): int { return abs( (int) $maybeint ); } From 578d09b822e3a581df6963888534fe654995d555 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 6 Jul 2026 20:53:46 +0000 Subject: [PATCH 326/327] Code Quality: Add conditional return types to post functions. Annotate the core post retrieval, sanitization, and insertion APIs with PHPStan conditional return types keyed on their mode arguments, so static analysis can resolve the concrete result at each call site: * `get_post()`, `get_page()`, `get_page_by_path()`, `get_children()`, and `get_post_types()` narrow on `$output`. * `get_posts()` and `WP_Query::query()` narrow on the `fields` argument. * `get_post_field()` and `sanitize_post_field()` narrow on `$field`. * `wp_insert_post()`, `wp_update_post()`, and `wp_insert_attachment()` narrow on `$wp_error`. Matching `@phpstan-param` tags are added where the analyzed return depends on a narrowed input. Separately, several previously generic or underspecified types are filled in where the precise type is known: * `WP_Post::to_array()` is typed `array<string, mixed>` rather than a bare `array`. * `WP_Post::$filter` is annotated with its recognized context values rather than a bare `string`. * `WP_Post::filter()` is corrected to return `WP_Post|false` (previously `WP_Post`), and its missing summary is documented. * `sanitize_post()`'s `$post` parameter is narrowed from `object` to `stdClass|WP_Post`. Because these functions were previously typed as returning `mixed` or a bare `object`, the sharper types let analysis see through to hundreds of downstream call sites, for a net reduction of roughly 280 PHPStan errors across the tree. A few supporting runtime changes make the types hold: * `get_post()` now guards against the `false` that `WP_Post::filter( 'raw' )` can return for a since-deleted post. * `WP_Post::get_instance()` tightens its cache-hit check. * post IDs are cast to `int` where passed on. Developed in https://github.com/WordPress/wordpress-develop/pull/12426. Follow-up to r61789. See #64898, #64896. git-svn-id: https://develop.svn.wordpress.org/trunk@62648 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-post.php | 28 +++++-- src/wp-includes/class-wp-query.php | 4 + src/wp-includes/post.php | 113 ++++++++++++++++++++++++++--- 3 files changed, 129 insertions(+), 16 deletions(-) diff --git a/src/wp-includes/class-wp-post.php b/src/wp-includes/class-wp-post.php index 7874948871896..d420c93fdce94 100644 --- a/src/wp-includes/class-wp-post.php +++ b/src/wp-includes/class-wp-post.php @@ -218,6 +218,7 @@ final class WP_Post { * * @since 3.5.0 * @var string + * @phpstan-var 'raw'|'edit'|'db'|'display'|'attribute'|'js' */ public $filter; @@ -230,6 +231,8 @@ final class WP_Post { * * @param int $post_id Post ID. * @return WP_Post|false Post object, false otherwise. + * + * @phpstan-param int|numeric-string $post_id */ public static function get_instance( $post_id ) { global $wpdb; @@ -241,7 +244,7 @@ public static function get_instance( $post_id ) { $_post = wp_cache_get( $post_id, 'posts' ); - if ( ! $_post ) { + if ( ! ( $_post instanceof stdClass ) && ! ( $_post instanceof WP_Post ) ) { $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id ) ); if ( ! $_post ) { @@ -249,7 +252,7 @@ public static function get_instance( $post_id ) { } $_post = sanitize_post( $_post, 'raw' ); - wp_cache_add( $_post->ID, $_post, 'posts' ); + wp_cache_add( (int) $_post->ID, $_post, 'posts' ); } elseif ( empty( $_post->filter ) || 'raw' !== $_post->filter ) { $_post = sanitize_post( $_post, 'raw' ); } @@ -316,7 +319,7 @@ public function __get( $key ) { $terms = get_the_terms( $this, 'category' ); } - if ( empty( $terms ) ) { + if ( empty( $terms ) || $terms instanceof WP_Error ) { return array(); } @@ -328,7 +331,7 @@ public function __get( $key ) { $terms = get_the_terms( $this, 'post_tag' ); } - if ( empty( $terms ) ) { + if ( empty( $terms ) || $terms instanceof WP_Error ) { return array(); } @@ -350,12 +353,22 @@ public function __get( $key ) { } /** - * {@Missing Summary} + * Applies the provided context filter for the current post. + * + * If the requested filter was already applied, then it returns without any changes. + * + * If the 'raw' filter is supplied, then a new instance of the post is obtained and this method _may_ return false + * in case the underlying post was deleted. * * @since 3.5.0 * * @param string $filter Filter. - * @return WP_Post + * @return WP_Post|false + * + * @phpstan-param 'raw'|'edit'|'db'|'display'|'attribute'|'js' $filter + * @phpstan-return ( + * $filter is 'raw' ? WP_Post|false : WP_Post + * ) */ public function filter( $filter ) { if ( $this->filter === $filter ) { @@ -374,9 +387,10 @@ public function filter( $filter ) { * * @since 3.5.0 * - * @return array Object as array. + * @return array<string, mixed> Object as array. */ public function to_array() { + /** @var array<string, mixed> $post */ $post = get_object_vars( $this ); foreach ( array( 'ancestors', 'page_template', 'post_category', 'tags_input' ) as $key ) { diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php index 437c82f1dd7f1..fcf464f0a506b 100644 --- a/src/wp-includes/class-wp-query.php +++ b/src/wp-includes/class-wp-query.php @@ -3946,6 +3946,10 @@ public function rewind_comments() { * * @param string|array $query URL query string or array of query arguments. * @return WP_Post[]|int[] Array of post objects or post IDs. + * + * @phpstan-return ( + * $query is array{ fields: 'ids', ... } ? int[] : WP_Post[] + * ) */ public function query( $query ) { $this->init(); diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index dce99ae46627c..a1d887b45381f 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -986,6 +986,15 @@ function _wp_relative_upload_path( $path ) { * correspond to a WP_Post object, an associative array, or a numeric array, * respectively. Default OBJECT. * @return WP_Post[]|array[]|int[] Array of post objects, arrays, or IDs, depending on `$output`. + * + * @phpstan-param 'OBJECT'|'ARRAY_A'|'ARRAY_N' $output + * @phpstan-return ( + * $args is array{ fields: 'ids', ... } ? int[] : ( + * $output is 'ARRAY_A' ? array<int, array<string, mixed>> : ( + * $output is 'ARRAY_N' ? array<int, array<int, mixed>> : WP_Post[] + * ) + * ) + * ) */ function get_children( $args = '', $output = OBJECT ) { $kids = array(); @@ -1110,6 +1119,17 @@ function get_extended( $post ) { * or 'display'. Default 'raw'. * @return WP_Post|array|null Type corresponding to $output on success or null on failure. * When $output is OBJECT, a `WP_Post` instance is returned. + * + * @phpstan-param int|numeric-string|WP_Post|null $post + * @phpstan-param 'OBJECT'|'ARRAY_A'|'ARRAY_N' $output + * @phpstan-param 'raw'|'edit'|'db'|'display' $filter + * @phpstan-return ( + * $output is 'ARRAY_A' ? array<string, mixed>|null : ( + * $output is 'ARRAY_N' ? array<int, mixed>|null : ( + * WP_Post|null + * ) + * ) + * ) */ function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) { if ( empty( $post ) && isset( $GLOBALS['post'] ) ) { @@ -1119,18 +1139,21 @@ function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) { if ( $post instanceof WP_Post ) { $_post = $post; } elseif ( is_object( $post ) ) { + /** @var stdClass $post */ if ( empty( $post->filter ) ) { $_post = sanitize_post( $post, 'raw' ); $_post = new WP_Post( $_post ); } elseif ( 'raw' === $post->filter ) { $_post = new WP_Post( $post ); } elseif ( isset( $post->ID ) ) { - $_post = WP_Post::get_instance( $post->ID ); + $_post = WP_Post::get_instance( (int) $post->ID ); } else { $_post = null; } + } elseif ( is_numeric( $post ) ) { + $_post = WP_Post::get_instance( (int) $post ); } else { - $_post = WP_Post::get_instance( $post ); + $_post = null; } if ( ! $_post ) { @@ -1138,6 +1161,9 @@ function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) { } $_post = $_post->filter( $filter ); + if ( ! $_post ) { + return null; + } if ( ARRAY_A === $output ) { return $_post->to_array(); @@ -1202,6 +1228,13 @@ function get_post_ancestors( $post ) { * @param string $context Optional. How to filter the field. Accepts 'raw', 'edit', 'db', * or 'display'. Default 'display'. * @return int|string|int[] The value of the post field on success, empty string on failure. + * + * @phpstan-param 'raw'|'edit'|'db'|'display' $context + * @phpstan-return ( + * $field is 'ID'|'post_parent'|'menu_order' ? int|'' : ( + * $field is 'ancestors' ? non-negative-int[]|'' : string + * ) + * ) */ function get_post_field( $field, $post = null, $context = 'display' ) { $post = get_post( $post ); @@ -1642,6 +1675,7 @@ function get_post_type_object( $post_type ) { * element from the array needs to match; 'and' means all elements * must match; 'not' means no elements may match. Default 'and'. * @return string[]|WP_Post_Type[] An array of post type names or objects. + * @phpstan-return ( $output is 'names' ? string[] : WP_Post_Type[] ) */ function get_post_types( $args = array(), $output = 'names', $operator = 'and' ) { global $wp_post_types; @@ -2578,6 +2612,10 @@ function is_post_embeddable( $post = null ) { * @type bool $suppress_filters Whether to suppress filters. Default true. * } * @return WP_Post[]|int[] Array of post objects or post IDs. + * + * @phpstan-return ( + * $args is array{ fields: 'ids', ... } ? int[] : WP_Post[] + * ) */ function get_posts( $args = null ) { $defaults = array( @@ -2916,6 +2954,14 @@ function is_sticky( $post_id = 0 ) { * 'attribute', or 'js'. Default 'display'. * @return object|WP_Post|array The now sanitized post object or array (will be the * same type as `$post`). + * + * @phpstan-param stdClass|WP_Post|array<string, mixed> $post + * @phpstan-param 'raw'|'edit'|'db'|'display'|'attribute'|'js' $context + * @phpstan-return ( + * $post is WP_Post ? WP_Post : ( + * $post is stdClass ? stdClass : array<string, mixed> + * ) + * ) */ function sanitize_post( $post, $context = 'display' ) { if ( is_object( $post ) ) { @@ -2927,7 +2973,7 @@ function sanitize_post( $post, $context = 'display' ) { $post->ID = 0; } foreach ( array_keys( get_object_vars( $post ) ) as $field ) { - $post->$field = sanitize_post_field( $field, $post->$field, $post->ID, $context ); + $post->$field = sanitize_post_field( $field, $post->$field, (int) $post->ID, $context ); } $post->filter = $context; } elseif ( is_array( $post ) ) { @@ -2939,7 +2985,7 @@ function sanitize_post( $post, $context = 'display' ) { $post['ID'] = 0; } foreach ( array_keys( $post ) as $field ) { - $post[ $field ] = sanitize_post_field( $field, $post[ $field ], $post['ID'], $context ); + $post[ $field ] = sanitize_post_field( $field, $post[ $field ], (int) $post['ID'], $context ); } $post['filter'] = $context; } @@ -2962,6 +3008,13 @@ function sanitize_post( $post, $context = 'display' ) { * @param string $context Optional. How to sanitize the field. Possible values are 'raw', 'edit', * 'db', 'display', 'attribute' and 'js'. Default 'display'. * @return mixed Sanitized value. + * + * @phpstan-param 'raw'|'edit'|'db'|'display'|'attribute'|'js' $context + * @phpstan-return ( + * $field is 'ID'|'post_parent'|'menu_order' ? int : ( + * $field is 'ancestors' ? non-negative-int[] : string + * ) + * ) */ function sanitize_post_field( $field, $value, $post_id, $context = 'display' ) { $int_fields = array( 'ID', 'post_parent', 'menu_order' ); @@ -2972,7 +3025,7 @@ function sanitize_post_field( $field, $value, $post_id, $context = 'display' ) { // Fields which contain arrays of integers. $array_int_fields = array( 'ancestors' ); if ( in_array( $field, $array_int_fields, true ) ) { - $value = array_map( 'absint', $value ); + $value = array_map( 'absint', (array) $value ); return $value; } @@ -4396,6 +4449,11 @@ function wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array( * Default ARRAY_A. * @return array|false Array of recent posts, where the type of each element is determined * by the `$output` parameter. Empty array on failure. + * + * @phpstan-param 'OBJECT'|'ARRAY_A' $output + * @phpstan-return ( + * $output is 'ARRAY_A' ? array<int, array<string, mixed>> : WP_Post[]|false + * ) */ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) { @@ -4420,6 +4478,7 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) { 'suppress_filters' => true, ); + /** @var array{ fields: null, ... } $parsed_args */ $parsed_args = wp_parse_args( $args, $defaults ); $results = get_posts( $parsed_args ); @@ -4427,7 +4486,9 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) { // Backward compatibility. Prior to 3.1 expected posts to be returned in array. if ( ARRAY_A === $output ) { foreach ( $results as $key => $result ) { - $results[ $key ] = get_object_vars( $result ); + /** @var array<string, mixed> $object_vars */ + $object_vars = get_object_vars( $result ); + $results[ $key ] = $object_vars; } return $results ? $results : array(); } @@ -4504,6 +4565,10 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) { * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @param bool $fire_after_hooks Optional. Whether to fire the after insert hooks. Default true. * @return int|WP_Error The post ID on success. The value 0 or WP_Error on failure. + * + * @phpstan-return ( + * $wp_error is false ? int : int|WP_Error + * ) */ function wp_insert_post( $postarr, $wp_error = false, $fire_after_hooks = true ) { global $wpdb; @@ -5229,6 +5294,10 @@ function wp_insert_post( $postarr, $wp_error = false, $fire_after_hooks = true ) * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @param bool $fire_after_hooks Optional. Whether to fire the after insert hooks. Default true. * @return int|WP_Error The post ID on success. The value 0 or WP_Error on failure. + * + * @phpstan-return ( + * $wp_error is false ? int : int|WP_Error + * ) */ function wp_update_post( $postarr = array(), $wp_error = false, $fire_after_hooks = true ) { if ( is_object( $postarr ) ) { @@ -6132,6 +6201,17 @@ function get_all_page_ids() { * @param string $filter Optional. How the return value should be filtered. Accepts 'raw', * 'edit', 'db', 'display'. Default 'raw'. * @return WP_Post|array|null WP_Post or array on success, null on failure. + * + * @phpstan-param int|numeric-string|WP_Post|null $page + * @phpstan-param 'OBJECT'|'ARRAY_A'|'ARRAY_N' $output + * @phpstan-param 'raw'|'edit'|'db'|'display' $filter + * @phpstan-return ( + * $output is 'ARRAY_A' ? array<string, mixed>|null : ( + * $output is 'ARRAY_N' ? array<int, mixed>|null : ( + * WP_Post|null + * ) + * ) + * ) */ function get_page( $page, $output = OBJECT, $filter = 'raw' ) { return get_post( $page, $output, $filter ); @@ -6150,6 +6230,16 @@ function get_page( $page, $output = OBJECT, $filter = 'raw' ) { * respectively. Default OBJECT. * @param string|array $post_type Optional. Post type or array of post types. Default 'page'. * @return WP_Post|array|null WP_Post (or array) on success, or null on failure. + * + * @phpstan-param 'OBJECT'|'ARRAY_A'|'ARRAY_N' $output + * @phpstan-param string|string[] $post_type + * @phpstan-return ( + * $output is 'ARRAY_A' ? array<string, mixed>|null : ( + * $output is 'ARRAY_N' ? array<int, mixed>|null : ( + * WP_Post|null + * ) + * ) + * ) */ function get_page_by_path( $page_path, $output = OBJECT, $post_type = 'page' ) { global $wpdb; @@ -6164,7 +6254,7 @@ function get_page_by_path( $page_path, $output = OBJECT, $post_type = 'page' ) { if ( '0' === $cached || 0 === $cached ) { return null; } else { - return get_post( $cached, $output ); + return get_post( (int) $cached, $output ); } } @@ -6192,7 +6282,8 @@ function get_page_by_path( $page_path, $output = OBJECT, $post_type = 'page' ) { AND post_type IN ($post_type_in_string) "; - $pages = $wpdb->get_results( $sql, OBJECT_K ); + /** @var array<object{ ID: string, post_name: string, post_parent: string, post_type: string }> $pages */ + $pages = $wpdb->get_results( $sql, OBJECT_K ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- The escaping has been applied above via esc_sql(). $revparts = array_reverse( $parts ); @@ -6231,7 +6322,7 @@ function get_page_by_path( $page_path, $output = OBJECT, $post_type = 'page' ) { wp_cache_set_salted( $cache_key, $found_id, 'post-queries', $last_changed ); if ( $found_id ) { - return get_post( $found_id, $output ); + return get_post( (int) $found_id, $output ); } return null; @@ -6650,6 +6741,10 @@ function is_local_attachment( $url ) { * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @param bool $fire_after_hooks Optional. Whether to fire the after insert hooks. Default true. * @return int|WP_Error The attachment ID on success. The value 0 or WP_Error on failure. + * + * @phpstan-return ( + * $wp_error is false ? int : int|WP_Error + * ) */ function wp_insert_attachment( $args, $file = false, $parent_post_id = 0, $wp_error = false, $fire_after_hooks = true ) { $defaults = array( From 142e7ee5273a8aaadb473755807f8c37f3417ba1 Mon Sep 17 00:00:00 2001 From: Weston Ruter <westonruter@git.wordpress.org> Date: Mon, 6 Jul 2026 21:08:27 +0000 Subject: [PATCH 327/327] General: Unify direct file-access guards to use `exit`. Previously, files used three different patterns to block direct access: `die( '-1' )`, `die()`, and `exit()`. They also lacked the explanatory comment or had inconsistent wording. This normalizes all 40 affected files under `src/` to the canonical `exit;` form recommended by the Plugin Developer Handbook. Each is preceded by a consistent `// Don't load directly.` comment. The `-1` return value carried no meaning in a direct file-access context, where no JavaScript AJAX handler exists to interpret it; it was only ever relevant inside `admin-ajax.php` responses, which are left untouched. Developed in https://github.com/WordPress/wordpress-develop/pull/12340. Follow-up to r11768, r59678, r59688. Props masteradhoc, presskopp, rajinsharwar, mukeshpanchal27, westonruter. Fixes #58987. git-svn-id: https://develop.svn.wordpress.org/trunk@62649 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/admin-footer.php | 2 +- src/wp-admin/admin-functions.php | 2 +- src/wp-admin/admin-header.php | 2 +- src/wp-admin/custom-background.php | 2 +- src/wp-admin/custom-header.php | 2 +- src/wp-admin/edit-form-advanced.php | 2 +- src/wp-admin/edit-form-blocks.php | 2 +- src/wp-admin/edit-form-comment.php | 2 +- src/wp-admin/edit-link-form.php | 2 +- src/wp-admin/edit-tag-form.php | 2 +- src/wp-admin/link-parse-opml.php | 3 ++- src/wp-admin/menu-header.php | 2 +- src/wp-admin/menu.php | 2 +- src/wp-admin/network/menu.php | 2 +- src/wp-admin/options-head.php | 2 +- src/wp-admin/site-health-info.php | 3 ++- src/wp-admin/user/menu.php | 2 +- src/wp-admin/widgets-form-blocks.php | 2 +- src/wp-admin/widgets-form.php | 2 +- src/wp-content/plugins/hello.php | 4 ++-- src/wp-includes/blocks/index.php | 2 +- src/wp-includes/class-IXR.php | 2 +- src/wp-includes/class-wp-customize-control.php | 2 +- src/wp-includes/class-wp-customize-panel.php | 2 +- src/wp-includes/class-wp-customize-setting.php | 2 +- src/wp-includes/class-wp-http.php | 2 +- src/wp-includes/class-wp-simplepie-sanitize-kses.php | 2 +- src/wp-includes/class-wp-text-diff-renderer-table.php | 2 +- src/wp-includes/default-filters.php | 2 +- src/wp-includes/default-widgets.php | 2 +- src/wp-includes/feed-atom.php | 2 +- src/wp-includes/functions.php | 2 +- src/wp-includes/media.php | 2 +- src/wp-includes/ms-blogs.php | 2 +- src/wp-includes/ms-settings.php | 2 +- src/wp-includes/nav-menu-template.php | 2 +- src/wp-includes/rss-functions.php | 3 ++- src/wp-includes/update.php | 2 +- src/wp-includes/vars.php | 2 +- src/wp-includes/wp-diff.php | 2 +- 40 files changed, 44 insertions(+), 41 deletions(-) diff --git a/src/wp-admin/admin-footer.php b/src/wp-admin/admin-footer.php index abb020e046459..fef0c06bbf725 100644 --- a/src/wp-admin/admin-footer.php +++ b/src/wp-admin/admin-footer.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-admin/admin-functions.php b/src/wp-admin/admin-functions.php index 6ce4e06c47007..0ba925dae38cf 100644 --- a/src/wp-admin/admin-functions.php +++ b/src/wp-admin/admin-functions.php @@ -11,7 +11,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } _deprecated_file( basename( __FILE__ ), '2.5.0', 'wp-admin/includes/admin.php' ); diff --git a/src/wp-admin/admin-header.php b/src/wp-admin/admin-header.php index e1e9ba0f6562b..92fbd3a4a2f79 100644 --- a/src/wp-admin/admin-header.php +++ b/src/wp-admin/admin-header.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); diff --git a/src/wp-admin/custom-background.php b/src/wp-admin/custom-background.php index bbd56bdb6cee2..10f13f772bac3 100644 --- a/src/wp-admin/custom-background.php +++ b/src/wp-admin/custom-background.php @@ -11,7 +11,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } _deprecated_file( basename( __FILE__ ), '5.3.0', 'wp-admin/includes/class-custom-background.php' ); diff --git a/src/wp-admin/custom-header.php b/src/wp-admin/custom-header.php index 31c78dcb5b372..c5884688197ae 100644 --- a/src/wp-admin/custom-header.php +++ b/src/wp-admin/custom-header.php @@ -11,7 +11,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } _deprecated_file( basename( __FILE__ ), '5.3.0', 'wp-admin/includes/class-custom-image-header.php' ); diff --git a/src/wp-admin/edit-form-advanced.php b/src/wp-admin/edit-form-advanced.php index c5092029543db..da4ec6f6499e9 100644 --- a/src/wp-admin/edit-form-advanced.php +++ b/src/wp-admin/edit-form-advanced.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-admin/edit-form-blocks.php b/src/wp-admin/edit-form-blocks.php index 2237fc69ce293..10d96f2b2d9f5 100644 --- a/src/wp-admin/edit-form-blocks.php +++ b/src/wp-admin/edit-form-blocks.php @@ -10,7 +10,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-admin/edit-form-comment.php b/src/wp-admin/edit-form-comment.php index e0bbc9f657a73..8d1a7619f1223 100644 --- a/src/wp-admin/edit-form-comment.php +++ b/src/wp-admin/edit-form-comment.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-admin/edit-link-form.php b/src/wp-admin/edit-link-form.php index a6c919a8c01a4..33e14da3fda4f 100644 --- a/src/wp-admin/edit-link-form.php +++ b/src/wp-admin/edit-link-form.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } if ( ! empty( $link_id ) ) { diff --git a/src/wp-admin/edit-tag-form.php b/src/wp-admin/edit-tag-form.php index 4373c0a67f8b3..a9829d533d16b 100644 --- a/src/wp-admin/edit-tag-form.php +++ b/src/wp-admin/edit-tag-form.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } // Back compat hooks. diff --git a/src/wp-admin/link-parse-opml.php b/src/wp-admin/link-parse-opml.php index ba31fbef83430..6e35780b37957 100644 --- a/src/wp-admin/link-parse-opml.php +++ b/src/wp-admin/link-parse-opml.php @@ -6,8 +6,9 @@ * @subpackage Administration */ +// Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die(); + exit; } /** diff --git a/src/wp-admin/menu-header.php b/src/wp-admin/menu-header.php index dcdf58d6391ce..5cced0ceaed96 100644 --- a/src/wp-admin/menu-header.php +++ b/src/wp-admin/menu-header.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-admin/menu.php b/src/wp-admin/menu.php index 57d94c75e26f2..2a3430ebc3df8 100644 --- a/src/wp-admin/menu.php +++ b/src/wp-admin/menu.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-admin/network/menu.php b/src/wp-admin/network/menu.php index ee987c83c64ed..e74dc93452a2a 100644 --- a/src/wp-admin/network/menu.php +++ b/src/wp-admin/network/menu.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /* translators: Network menu item. */ diff --git a/src/wp-admin/options-head.php b/src/wp-admin/options-head.php index c951b77419505..4f350f1247288 100644 --- a/src/wp-admin/options-head.php +++ b/src/wp-admin/options-head.php @@ -10,7 +10,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } $action = ! empty( $_REQUEST['action'] ) ? sanitize_text_field( $_REQUEST['action'] ) : ''; diff --git a/src/wp-admin/site-health-info.php b/src/wp-admin/site-health-info.php index faffb21636827..71d2f9e0099ce 100644 --- a/src/wp-admin/site-health-info.php +++ b/src/wp-admin/site-health-info.php @@ -6,8 +6,9 @@ * @subpackage Administration */ +// Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die(); + exit; } if ( ! class_exists( 'WP_Debug_Data' ) ) { diff --git a/src/wp-admin/user/menu.php b/src/wp-admin/user/menu.php index 587d0ec1762dc..081d9cc9de5f4 100644 --- a/src/wp-admin/user/menu.php +++ b/src/wp-admin/user/menu.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } $menu[2] = array( __( 'Dashboard' ), 'exist', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'dashicons-dashboard' ); diff --git a/src/wp-admin/widgets-form-blocks.php b/src/wp-admin/widgets-form-blocks.php index c8cf44d8190f1..f854891cb8815 100644 --- a/src/wp-admin/widgets-form-blocks.php +++ b/src/wp-admin/widgets-form-blocks.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } // Flag that we're loading the block editor. diff --git a/src/wp-admin/widgets-form.php b/src/wp-admin/widgets-form.php index 85ace96796555..e47905c5d0099 100644 --- a/src/wp-admin/widgets-form.php +++ b/src/wp-admin/widgets-form.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } $widgets_access = get_user_setting( 'widgets_access' ); diff --git a/src/wp-content/plugins/hello.php b/src/wp-content/plugins/hello.php index f820405da93e4..41ecf6e7dca85 100644 --- a/src/wp-content/plugins/hello.php +++ b/src/wp-content/plugins/hello.php @@ -13,9 +13,9 @@ Text Domain: hello-dolly */ -// Do not load directly. +// Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die(); + exit; } function hello_dolly_get_lyric() { diff --git a/src/wp-includes/blocks/index.php b/src/wp-includes/blocks/index.php index 98615ea1ba766..8f2da50bb1da7 100644 --- a/src/wp-includes/blocks/index.php +++ b/src/wp-includes/blocks/index.php @@ -7,7 +7,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } define( 'BLOCKS_PATH', ABSPATH . WPINC . '/blocks/' ); diff --git a/src/wp-includes/class-IXR.php b/src/wp-includes/class-IXR.php index 35657c7c7378f..18cc9cb22550c 100644 --- a/src/wp-includes/class-IXR.php +++ b/src/wp-includes/class-IXR.php @@ -41,7 +41,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } require_once ABSPATH . WPINC . '/IXR/class-IXR-server.php'; diff --git a/src/wp-includes/class-wp-customize-control.php b/src/wp-includes/class-wp-customize-control.php index 43f0ac6d4ca64..859958a2f6838 100644 --- a/src/wp-includes/class-wp-customize-control.php +++ b/src/wp-includes/class-wp-customize-control.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-includes/class-wp-customize-panel.php b/src/wp-includes/class-wp-customize-panel.php index 4f2cb05b3c362..9607358bd220b 100644 --- a/src/wp-includes/class-wp-customize-panel.php +++ b/src/wp-includes/class-wp-customize-panel.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-includes/class-wp-customize-setting.php b/src/wp-includes/class-wp-customize-setting.php index 19732b18ba73a..2586646f7f2e1 100644 --- a/src/wp-includes/class-wp-customize-setting.php +++ b/src/wp-includes/class-wp-customize-setting.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-includes/class-wp-http.php b/src/wp-includes/class-wp-http.php index 2a663e11e97e3..323ec83aeca43 100644 --- a/src/wp-includes/class-wp-http.php +++ b/src/wp-includes/class-wp-http.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } if ( ! class_exists( 'WpOrg\Requests\Autoload' ) ) { diff --git a/src/wp-includes/class-wp-simplepie-sanitize-kses.php b/src/wp-includes/class-wp-simplepie-sanitize-kses.php index 9f0a2279f9647..09f7cfbd5dd1d 100644 --- a/src/wp-includes/class-wp-simplepie-sanitize-kses.php +++ b/src/wp-includes/class-wp-simplepie-sanitize-kses.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-includes/class-wp-text-diff-renderer-table.php b/src/wp-includes/class-wp-text-diff-renderer-table.php index e02578da48163..9eca479b617b7 100644 --- a/src/wp-includes/class-wp-text-diff-renderer-table.php +++ b/src/wp-includes/class-wp-text-diff-renderer-table.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-includes/default-filters.php b/src/wp-includes/default-filters.php index 4e0b74a8d22c2..3c19befb8b414 100644 --- a/src/wp-includes/default-filters.php +++ b/src/wp-includes/default-filters.php @@ -25,7 +25,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } // Strip, trim, kses, special chars for string saves. diff --git a/src/wp-includes/default-widgets.php b/src/wp-includes/default-widgets.php index cbb25de8f0a4e..d9f6e73dc7ac1 100644 --- a/src/wp-includes/default-widgets.php +++ b/src/wp-includes/default-widgets.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** WP_Widget_Pages class */ diff --git a/src/wp-includes/feed-atom.php b/src/wp-includes/feed-atom.php index 9ee70f895a4c9..7dec79c840d3d 100644 --- a/src/wp-includes/feed-atom.php +++ b/src/wp-includes/feed-atom.php @@ -7,7 +7,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } header( 'Content-Type: ' . feed_content_type( 'atom' ) . '; charset=' . get_option( 'blog_charset' ), true ); diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index f4b60dfbd4e3a..0a383370b7051 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -7,7 +7,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } require ABSPATH . WPINC . '/option.php'; diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index 8d99dfa037e0c..ac7ca887ee1db 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-includes/ms-blogs.php b/src/wp-includes/ms-blogs.php index 19fc6c1a7613e..c54563fbbd2b8 100644 --- a/src/wp-includes/ms-blogs.php +++ b/src/wp-includes/ms-blogs.php @@ -10,7 +10,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } require_once ABSPATH . WPINC . '/ms-site.php'; diff --git a/src/wp-includes/ms-settings.php b/src/wp-includes/ms-settings.php index 4f9d9e35792b3..2e3c3dcfa739a 100644 --- a/src/wp-includes/ms-settings.php +++ b/src/wp-includes/ms-settings.php @@ -12,7 +12,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-includes/nav-menu-template.php b/src/wp-includes/nav-menu-template.php index d90fdfa8061ab..fc07e6fd2c79a 100644 --- a/src/wp-includes/nav-menu-template.php +++ b/src/wp-includes/nav-menu-template.php @@ -9,7 +9,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** Walker_Nav_Menu class */ diff --git a/src/wp-includes/rss-functions.php b/src/wp-includes/rss-functions.php index 370960cecba5b..9d0628563fe28 100644 --- a/src/wp-includes/rss-functions.php +++ b/src/wp-includes/rss-functions.php @@ -6,8 +6,9 @@ * @deprecated 2.1.0 */ +// Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - exit(); + exit; } _deprecated_file( basename( __FILE__ ), '2.1.0', WPINC . '/rss.php' ); diff --git a/src/wp-includes/update.php b/src/wp-includes/update.php index b7bf5a03780e7..9f4257ab03da6 100644 --- a/src/wp-includes/update.php +++ b/src/wp-includes/update.php @@ -8,7 +8,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } /** diff --git a/src/wp-includes/vars.php b/src/wp-includes/vars.php index 38e75781e17ec..05c4baab2d651 100644 --- a/src/wp-includes/vars.php +++ b/src/wp-includes/vars.php @@ -17,7 +17,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } global $pagenow, diff --git a/src/wp-includes/wp-diff.php b/src/wp-includes/wp-diff.php index e99a001ecb233..de09ff0469895 100644 --- a/src/wp-includes/wp-diff.php +++ b/src/wp-includes/wp-diff.php @@ -10,7 +10,7 @@ // Don't load directly. if ( ! defined( 'ABSPATH' ) ) { - die( '-1' ); + exit; } if ( ! class_exists( 'Text_Diff', false ) ) {